258 lines
6.0 KiB
JavaScript
258 lines
6.0 KiB
JavaScript
/************************************************/
|
|
/* IPB3 Javascript */
|
|
/* -------------------------------------------- */
|
|
/* ips.like.js - Like class */
|
|
/* (c) IPS, Inc 2008 */
|
|
/* -------------------------------------------- */
|
|
/* Author: Matt Mecham */
|
|
/************************************************/
|
|
|
|
var _like = window.IPBoard;
|
|
|
|
_like.prototype.like = {
|
|
/* Set up some defaults */
|
|
relid : 0,
|
|
app : '',
|
|
aprea : '',
|
|
isfave : 0,
|
|
popped : undefined,
|
|
wrap: undefined,
|
|
uc: null,
|
|
|
|
/* ------------------------------ */
|
|
/**
|
|
* Constructor
|
|
*/
|
|
init: function()
|
|
{
|
|
/* Delegate */
|
|
document.observe("dom:loaded", function()
|
|
{
|
|
ipb.delegate.register('.ftoggle' , ipb.like.clicked );
|
|
ipb.delegate.register('._fsubmit', ipb.like.save );
|
|
ipb.delegate.register('._funset' , ipb.like.remove );
|
|
ipb.delegate.register('._fmore' , ipb.like.more );
|
|
|
|
/* Make sure hcards work */
|
|
ipb.like.resetEvents();
|
|
} );
|
|
},
|
|
|
|
/**
|
|
* Reset events
|
|
*/
|
|
resetEvents: function()
|
|
{
|
|
|
|
},
|
|
|
|
/**
|
|
* Hey, I clicked when we first met
|
|
*/
|
|
clicked: function( e, elem )
|
|
{
|
|
Event.stop(e);
|
|
relem = elem.up('.ips_like');
|
|
relem.identify();
|
|
|
|
ipb.like.wrap = relem;
|
|
|
|
try
|
|
{
|
|
ipb.like.relid = relem.readAttribute('data-relid');
|
|
ipb.like.app = relem.readAttribute('data-app');
|
|
ipb.like.area = relem.readAttribute('data-area');
|
|
ipb.like.isfave = relem.readAttribute('data-isfave');
|
|
}
|
|
catch( e )
|
|
{
|
|
Debug.error(e);
|
|
}
|
|
|
|
if ( ipb.like.relid && ipb.like.app && ipb.like.area )
|
|
{
|
|
/* GTG WING LEADER */
|
|
if ( parseInt( ipb.like.isfave ) == 1 )
|
|
{
|
|
ipb.like.dialogueUnset(e, elem);
|
|
}
|
|
else
|
|
{
|
|
ipb.like.dialogueSet(e, elem);
|
|
}
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Fetch 'more'pop-up
|
|
*/
|
|
more: function(e, elem)
|
|
{
|
|
Event.stop(e);
|
|
relem = elem.up('.ips_like');
|
|
relem.identify();
|
|
|
|
ipb.like.wrap = relem;
|
|
|
|
try
|
|
{
|
|
ipb.like.relid = relem.readAttribute('data-relid');
|
|
ipb.like.app = relem.readAttribute('data-app');
|
|
ipb.like.area = relem.readAttribute('data-area');
|
|
ipb.like.isfave = relem.readAttribute('data-isfave');
|
|
}
|
|
catch( e )
|
|
{
|
|
Debug.error(e);
|
|
}
|
|
|
|
if ( ! Object.isUndefined( ipb.like.popped ) )
|
|
{
|
|
ipb.like.popped.kill();
|
|
}
|
|
|
|
var popid = 'setfave_' + ipb.like.relid;
|
|
var _url = ipb.vars['base_url'] + '&app=core&module=ajax§ion=like&do=more&secure_key=' + ipb.vars['secure_hash'] + '&f_app=' + ipb.like.app + '&f_area=' + ipb.like.area + '&f_relid=' + ipb.like.relid;
|
|
Debug.write( _url );
|
|
|
|
/* easy one this... */
|
|
ipb.like.popped = new ipb.Popup( popid, { type: 'pane',
|
|
ajaxURL: _url,
|
|
stem: false,
|
|
hideAtStart: false,
|
|
h: '800px',
|
|
w: '450px' });
|
|
},
|
|
|
|
/**
|
|
* Unset as favorite
|
|
*/
|
|
dialogueUnset: function(e, elem)
|
|
{
|
|
Event.stop(e);
|
|
|
|
if ( ! Object.isUndefined( ipb.like.popped ) )
|
|
{
|
|
ipb.like.popped.kill();
|
|
}
|
|
|
|
var popid = 'setfave_' + ipb.like.relid;
|
|
var _content = FAVE_TEMPLATE.evaluate();
|
|
|
|
/* easy one this... */
|
|
ipb.like.popped = new ipb.Popup( popid, { type: 'balloon',
|
|
initial: _content,
|
|
stem: true,
|
|
hideAtStart: false,
|
|
attach: { target: elem, position: 'auto' },
|
|
w: '350px' });
|
|
},
|
|
|
|
/**
|
|
* Set as favorite
|
|
*/
|
|
dialogueSet: function(e, elem)
|
|
{
|
|
Event.stop(e);
|
|
|
|
if ( ! Object.isUndefined( ipb.like.popped ) )
|
|
{
|
|
ipb.like.popped.kill();
|
|
}
|
|
|
|
var popid = 'setfave_' + ipb.like.relid;
|
|
var _url = ipb.vars['base_url'] + '&app=core&module=ajax§ion=like&do=setDialogue&secure_key=' + ipb.vars['secure_hash'] + '&f_app=' + ipb.like.app + '&f_area=' + ipb.like.area + '&f_relid=' + ipb.like.relid;
|
|
Debug.write( _url );
|
|
|
|
/* easy one this... */
|
|
ipb.like.popped = new ipb.Popup( popid, { type: 'balloon',
|
|
ajaxURL: _url,
|
|
stem: true,
|
|
hideAtStart: false,
|
|
attach: { target: elem, position: 'auto' },
|
|
w: '350px' });
|
|
},
|
|
|
|
/**
|
|
* Save it for later
|
|
*/
|
|
save: function(e, elem)
|
|
{
|
|
Event.stop(e);
|
|
|
|
var like_notify = $('like_notify').checked ? 1 : 0;
|
|
var like_freq = $F('like_freq');
|
|
var like_anon = $('like_anon').checked ? 1 : 0;
|
|
|
|
ipb.like.popped.hide();
|
|
|
|
ipb.like.wrap.writeAttribute( 'data-isfave', 1 );
|
|
ipb.like.isfave = 1;
|
|
|
|
var _url = ipb.vars['base_url'] + '&app=core&module=ajax§ion=like&do=save&secure_key=' + ipb.vars['secure_hash'] + '&f_app=' + ipb.like.app + '&f_area=' + ipb.like.area + '&f_relid=' + ipb.like.relid;
|
|
Debug.write( _url );
|
|
|
|
new Ajax.Request( _url,
|
|
{
|
|
method: 'post',
|
|
parameters: { 'like_notify': like_notify,
|
|
'like_freq' : like_freq,
|
|
'like_anon' : like_anon },
|
|
onSuccess: function(t)
|
|
{
|
|
/* No Permission */
|
|
if( t.responseText == 'nopermission' )
|
|
{
|
|
alert( ipb.lang['no_permission'] );
|
|
}
|
|
else
|
|
{
|
|
ipb.like.wrap.update( t.responseText );
|
|
|
|
/* Make sure hcards work */
|
|
ipb.like.resetEvents();
|
|
}
|
|
}
|
|
}
|
|
);
|
|
},
|
|
|
|
/**
|
|
* Save it for later
|
|
*/
|
|
remove: function(e, elem)
|
|
{
|
|
Event.stop(e);
|
|
|
|
ipb.like.popped.hide();
|
|
|
|
ipb.like.wrap.writeAttribute( 'data-isfave', 0 );
|
|
ipb.like.isfave = 0;
|
|
|
|
var _url = ipb.vars['base_url'] + '&app=core&module=ajax§ion=like&do=unset&secure_key=' + ipb.vars['secure_hash'] + '&f_app=' + ipb.like.app + '&f_area=' + ipb.like.area + '&f_relid=' + ipb.like.relid;
|
|
Debug.write( _url );
|
|
|
|
new Ajax.Request( _url,
|
|
{
|
|
method: 'get',
|
|
onSuccess: function(t)
|
|
{
|
|
/* No Permission */
|
|
if( t.responseText == 'nopermission' )
|
|
{
|
|
alert( ipb.lang['no_permission'] );
|
|
}
|
|
else
|
|
{
|
|
ipb.like.wrap.update( t.responseText );
|
|
|
|
/* Make sure hcards work */
|
|
ipb.like.resetEvents();
|
|
}
|
|
}
|
|
}
|
|
);
|
|
}
|
|
};
|
|
|
|
ipb.like.init(); |