webgui/www/extras/yui-webgui/build/friendManager/friendManager.js

129 lines
4.8 KiB
JavaScript

/*** The WebGUI Friend Manager
* Requires: YAHOO, Dom, Event
*/
//Container for functions used by many datatables.
if ( typeof WebGUI == "undefined" ) {
WebGUI = {};
}
if ( typeof WebGUI.FriendManager == "undefined" ) {
WebGUI.FriendManager = {};
}
if ( typeof WebGUI.FriendManager.tables == "undefined" ) {
WebGUI.FriendManager.tables = {};
}
/*---------------------------------------------------------------------------
WebGUI.FriendManager.initManager ( )
Initialize the i18n interface, and then call the function to build
the DataTables.
*/
WebGUI.FriendManager.initI18N = function (o) {
WebGUI.FriendManager.i18n
= new WebGUI.i18n( {
namespaces : {
"WebGUI" : [
"50",
"89",
],
"Account_Friends" : [
"title",
],
"Account_FriendManager" : [
"friends count",
]
},
onpreload : {
fn : WebGUI.FriendManager.initTables
}
} );
};
/*---------------------------------------------------------------------------
Initialize objects that are shared across many datatables.
*/
WebGUI.FriendManager.responseSchema
= {
resultsList: 'records',
fields: [
{ key: 'userId', parser: 'string' },
{ key: 'username', parser: 'string' },
{ key: 'friendsCount', parser: 'number' },
{ key: 'friends', parser: 'string' },
{ key: 'groups', parser: 'string' },
],
metaFields: {
totalRecords: "recordsReturned" // Access to value in the server response
}
};
WebGUI.FriendManager.formatUsername = function ( el, oRecord, oColumn, oData ) {
var userId = oRecord.getData('userId');
el.innerHTML = '<a href="?op=account;module=inbox;uid=' + userId + '">' + oData + '</a>';
}
WebGUI.FriendManager.formatGroups = function ( el, oRecord, oColumn, oData ) {
var userId = oRecord.getData('userId');
el.innerHTML = '';
var groups = oData.split("\n");
for (var idx=0; idx < groups.length; idx++) {
var group = groups[idx];
var groupUri = encodeURI(group);
if (el.innerHTML) {
el.innerHTML += ' ';
}
el.innerHTML += '<a href="?op=account;module=friendManager;do=editFriends;userId=' + userId + ';groupName='+groupUri+'">'+group+'</a>';
}
}
//Per object code
WebGUI.FriendManager.MakeTable = function (groupId, containerId) {
var that = this;
if (typeof WebGUI.FriendManager.ColumnDefs == "undefined" ) {
WebGUI.FriendManager.ColumnDefs = [ // sortable:true enables sorting
{ key:"groups", sortable: false, formatter: WebGUI.FriendManager.formatGroups,
label:WebGUI.FriendManager.i18n.get('WebGUI', '89' ), },
{ key:"username", sortable: true, formatter: WebGUI.FriendManager.formatUsername,
label:WebGUI.FriendManager.i18n.get('WebGUI', '50' ), },
{ key:"friendsCount", sortable: true,
label:WebGUI.FriendManager.i18n.get('Account_FriendManager', 'friends count' ), },
{ key:"friends", sortable: false,
label:WebGUI.FriendManager.i18n.get('Account_Friends', 'title' ), },
{ key:"userId", label:"userId", sortable: true},
];
}
// Initialize the data table
var myPaginator = new YAHOO.widget.Paginator({
containers : [containerId+'_pagination'],
pageLinks : 7,
rowsPerPage : 15,
template : "<strong>{CurrentPageReport}</strong> {PreviousPageLink} {PageLinks} {NextPageLink}"
});
that.DataSource
= new YAHOO.util.DataSource(encodeURI(location.pathname) + '?op=account;module=friendManager;do=getFriendsAsJson;groupId='+groupId+';',{connTimeout:30000} );
that.DataSource.responseType = YAHOO.util.DataSource.TYPE_JSON;
that.DataSource.responseSchema = WebGUI.FriendManager.responseSchema;
that.DataTable = new YAHOO.widget.DataTable(
containerId,
WebGUI.FriendManager.ColumnDefs,
that.DataSource,
{
initialRequest : '',
paginator : myPaginator,
sortedBy : { "key" : "username", "dir" : YAHOO.widget.DataTable.CLASS_ASC },
}
);
that.DataTable.handleDataReturnPayload = function(oRequest, oResponse, oPayload) {
oPayload.totalRecords = oResponse.meta.totalRecords;
return oPayload;
}
return that;
};