Файл: public/js/ips.like.js
Строк: 114
<?php
/************************************************/
/* 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()
{
if( ipb.like.wrap ){
ipb.like.wrap.select("[data-tooltip]").invoke("tooltip");
}
},
/**
* Hey, I clicked when we first met
*/
clicked: function( e, elem )
{
Event.stop(e);
relem = elem.up('.__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('.__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: 'balloon',
ajaxURL: _url,
stem: true,
hideAtStart: false,
hideClose: true,
attach: { target: elem, position: 'auto' },
h: 200,
w: '250px' });
},
/**
* 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',
hideLoader: true,
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();
?>