mirror of
https://github.com/Sarjuuk/aowow.git
synced 2025-11-29 15:58:16 +08:00
600 lines
20 KiB
JavaScript
600 lines
20 KiB
JavaScript
/*
|
|
JS code for "user" pages
|
|
*/
|
|
|
|
function us_isOwnProfile()
|
|
{
|
|
return (typeof g_pageInfo == 'object' && g_user.name == g_pageInfo.username);
|
|
}
|
|
|
|
function us_addDescription()
|
|
{
|
|
var _ = $WH.ge('description');
|
|
var ownProfile = us_isOwnProfile();
|
|
var emptyDesc = (_.childNodes.length == 0);
|
|
|
|
if (emptyDesc)
|
|
{
|
|
if (ownProfile)
|
|
$WH.ae(_, $WH.ct(LANG.user_nodescription2));
|
|
else
|
|
$WH.ae(_, $WH.ct(LANG.user_nodescription));
|
|
}
|
|
|
|
if (ownProfile)
|
|
{
|
|
var
|
|
b = $WH.ce('button'),
|
|
d = $WH.ce('div');
|
|
|
|
d.className = 'pad';
|
|
b.onclick = function() { location.href = '?account#community' };
|
|
if (emptyDesc)
|
|
$WH.ae(b, $WH.ct(LANG.user_composeone));
|
|
else
|
|
$WH.ae(b, $WH.ct(LANG.user_editdescription));
|
|
|
|
$WH.ae(_, d);
|
|
$WH.ae(_, b);
|
|
}
|
|
}
|
|
|
|
function us_addCharactersTab(data)
|
|
{
|
|
var ownProfile = (us_isOwnProfile() || g_user.roles & U_GROUP_MODERATOR);
|
|
|
|
if (!ownProfile)
|
|
{
|
|
var temp = [];
|
|
for (var i = 0, len = data.length; i < len; ++i)
|
|
{
|
|
data[i].pinned = false;
|
|
if (data[i].published && !data[i].deleted)
|
|
temp.push(data[i]);
|
|
}
|
|
data = temp;
|
|
}
|
|
|
|
if (data.length)
|
|
new Listview({
|
|
template: 'profile',
|
|
id: 'characters',
|
|
name: LANG.tab_characters,
|
|
tabs: tabsRelated,
|
|
parent: 'lv-generic',
|
|
onBeforeCreate: Listview.funcBox.beforeUserCharacters,
|
|
sort: [-11],
|
|
visibleCols: ['race', 'classs', 'level', 'talents', 'gearscore', 'achievementpoints'],
|
|
data: data
|
|
});
|
|
}
|
|
|
|
function us_addProfilesTab(data)
|
|
{
|
|
var ownProfile = (us_isOwnProfile() || g_user.roles & U_GROUP_MODERATOR);
|
|
|
|
if (!ownProfile)
|
|
{
|
|
var temp = [];
|
|
for (var i = 0, len = data.length; i < len; ++i)
|
|
{
|
|
if (data[i].published && !data[i].deleted)
|
|
temp.push(data[i]);
|
|
}
|
|
data = temp;
|
|
}
|
|
|
|
if (data.length)
|
|
new Listview({
|
|
template: 'profile',
|
|
id: 'profiles',
|
|
name: LANG.tab_profiles,
|
|
tabs: tabsRelated,
|
|
parent: 'lv-generic',
|
|
onBeforeCreate: Listview.funcBox.beforeUserProfiles,
|
|
sort: [-11],
|
|
visibleCols: ['race', 'classs', 'level', 'talents', 'gearscore'],
|
|
hiddenCols: ['location', 'guild'],
|
|
data: data
|
|
});
|
|
}
|
|
|
|
Listview.funcBox.beforeUserComments = function()
|
|
{
|
|
if (g_user.roles & U_GROUP_COMMENTS_MODERATOR) // Admin, Bureau, Mod
|
|
{
|
|
this.mode = 1;
|
|
this.createCbControls = function(d)
|
|
{
|
|
var i = $WH.ce('input');
|
|
i.type = 'button';
|
|
i.value = 'Delete';
|
|
i.onclick = (function()
|
|
{
|
|
var rows = this.getCheckedRows();
|
|
if (!rows.length)
|
|
alert('No comments selected.');
|
|
else if (confirm('Are you sure that you want to delete ' + (rows.length == 1 ? 'this comment' : 'these ' + rows.length + ' comments') + '?'))
|
|
{
|
|
var ids = "";
|
|
$WH.array_walk(rows, function(x)
|
|
{
|
|
if (!x.deleted)
|
|
{
|
|
x.deleted = 1;
|
|
if (x.__tr != null)
|
|
x.__tr.__status.innerHTML = LANG.lvcomment_deleted;
|
|
ids += x.id + ','
|
|
}
|
|
});
|
|
ids = $WH.rtrim(ids, ',');
|
|
if (ids != '')
|
|
$.post('?comment=delete', { id: ids, username: g_pageInfo.username });
|
|
(Listview.cbSelect.bind(this, false))();
|
|
}
|
|
}).bind(this);
|
|
$WH.ae(d, i);
|
|
|
|
var i = $WH.ce('input');
|
|
i.type = 'button';
|
|
i.value = 'Undelete';
|
|
i.onclick = (function()
|
|
{
|
|
var rows = this.getCheckedRows();
|
|
if (!rows.length)
|
|
alert('No comments selected.');
|
|
else
|
|
{
|
|
var ids = '';
|
|
|
|
$WH.array_walk(rows, function(x)
|
|
{
|
|
if (x.deleted)
|
|
{
|
|
x.deleted = 0;
|
|
if (x.__tr != null)
|
|
x.__tr.__status.innerHTML = '';
|
|
ids += x.id + ','
|
|
}
|
|
});
|
|
ids = $WH.rtrim(ids, ',');
|
|
if (ids != '')
|
|
$.post('?comment=undelete', { id: ids, username: g_pageInfo.username });
|
|
(Listview.cbSelect.bind(this, false))();
|
|
}
|
|
}).bind(this);
|
|
$WH.ae(d, i);
|
|
}
|
|
};
|
|
|
|
this.customFilter = function (comment, i)
|
|
{
|
|
// return (us_isOwnProfile() || (g_user.roles & U_GROUP_COMMENTS_MODERATOR) ? 1 : !(comment.deleted || comment.purged || comment.removed))
|
|
return (g_user.roles & U_GROUP_COMMENTS_MODERATOR ? i < 250 : !(comment.deleted || comment.removed))
|
|
};
|
|
|
|
this.onAfterCreate = function()
|
|
{
|
|
if (this.nRowsVisible == 0)
|
|
{
|
|
if (this.tabs.tabs.length == 1) // Delete related section
|
|
$("#related, #tabs-related, #lv-generic").remove()
|
|
else if (!this.tabs.tabs[this.tabIndex].hidden)
|
|
this.tabs.hide(this.tabIndex, 0);
|
|
}
|
|
else
|
|
this.updateTabName()
|
|
};
|
|
};
|
|
|
|
Listview.funcBox.beforeUserCharacters = function()
|
|
{
|
|
var ownProfile = (us_isOwnProfile() || (g_user.roles & (U_GROUP_ADMIN|U_GROUP_BUREAU)));
|
|
|
|
if (ownProfile)
|
|
{
|
|
this.mode = 1;
|
|
this.createCbControls = function(d, topBar)
|
|
{
|
|
if (!topBar && this.data.length < 15)
|
|
return;
|
|
|
|
var i = $WH.ce('input');
|
|
i.type = 'button';
|
|
i.value = LANG.button_remove;
|
|
i.onclick = (function()
|
|
{
|
|
var rows = this.getCheckedRows();
|
|
if (!rows.length)
|
|
alert(LANG.message_nocharacterselected);
|
|
else if (confirm(LANG.confirm_unlinkcharacter))
|
|
{
|
|
var ids = '';
|
|
|
|
$WH.array_walk(rows, function(x)
|
|
{
|
|
ids += x.id + ',';
|
|
});
|
|
ids = $WH.rtrim(ids, ',');
|
|
if (ids != '')
|
|
new Ajax('?profile=unlink&id=' + ids + '&user=' + g_pageInfo.username);
|
|
this.deleteRows(rows);
|
|
}
|
|
}).bind(this);
|
|
$WH.ae(d, i);
|
|
|
|
var i = $WH.ce('input');
|
|
i.type = 'button';
|
|
i.value = LANG.button_makepub;
|
|
i.onclick = (function()
|
|
{
|
|
var rows = this.getCheckedRows();
|
|
if (!rows.length)
|
|
alert(LANG.message_noprofileselected);
|
|
else if (confirm(LANG.confirm_publicprofile))
|
|
{
|
|
var ids = '';
|
|
|
|
$WH.array_walk(rows, function(x)
|
|
{
|
|
if (!x.published)
|
|
{
|
|
x.published = 1;
|
|
if (x.__tr != null)
|
|
x.__tr.__status.innerHTML = '';
|
|
ids += x.id + ','
|
|
}
|
|
});
|
|
ids = $WH.rtrim(ids, ',');
|
|
if (ids != '')
|
|
new Ajax('?profile=public&id=' + ids + '&user=' + g_pageInfo.username + '&bookmarked');
|
|
(Listview.cbSelect.bind(this, false))();
|
|
}
|
|
}).bind(this);
|
|
$WH.ae(d, i);
|
|
|
|
var i = $WH.ce('input');
|
|
i.type = 'button';
|
|
i.value = LANG.button_makepriv;
|
|
i.onclick = (function()
|
|
{
|
|
var rows = this.getCheckedRows();
|
|
if (!rows.length)
|
|
alert(LANG.message_noprofileselected);
|
|
else if (confirm(LANG.confirm_privateprofile))
|
|
{
|
|
var ids = '';
|
|
|
|
$WH.array_walk(rows, function(x)
|
|
{
|
|
if (x.published)
|
|
{
|
|
x.published = 0;
|
|
if (x.__tr != null)
|
|
x.__tr.__status.innerHTML = LANG.privateprofile;
|
|
ids += x.id + ','
|
|
}
|
|
});
|
|
ids = $WH.rtrim(ids, ',');
|
|
if (ids != '')
|
|
new Ajax('?profile=private&id=' + ids + '&user=' + g_pageInfo.username + '&bookmarked');
|
|
(Listview.cbSelect.bind(this, false))();
|
|
}
|
|
}).bind(this);
|
|
$WH.ae(d, i);
|
|
|
|
var i = $WH.ce('input');
|
|
i.type = 'button';
|
|
i.value = LANG.button_pin;
|
|
i.onclick = (function()
|
|
{
|
|
var rows = this.getCheckedRows();
|
|
if (!rows.length)
|
|
alert(LANG.message_nocharacterselected);
|
|
else if (rows.length > 1)
|
|
alert(LANG.message_toomanycharacters);
|
|
else if (confirm(LANG.confirm_pincharacter))
|
|
{
|
|
var ids = [];
|
|
$WH.array_walk(rows, function(x) { ids.push(x.id) });
|
|
$WH.array_walk(this.data, function(x)
|
|
{
|
|
x.pinned = ($WH.in_array(ids, x.id) != -1);
|
|
if (x.__tr != null)
|
|
{
|
|
var a = $WH.gE(x.__tr, 'a')[1];
|
|
a.className = (x.pinned ? 'icon-star-right' : '');
|
|
}
|
|
});
|
|
ids = ids.join(',');
|
|
if (ids != '')
|
|
new Ajax('?profile=pin&id=' + ids + '&user=' + g_pageInfo.username);
|
|
(Listview.cbSelect.bind(this, false))();
|
|
}
|
|
}).bind(this);
|
|
$WH.ae(d, i);
|
|
|
|
var i = $WH.ce('input');
|
|
i.type = 'button';
|
|
i.value = LANG.button_unpin;
|
|
i.onclick = (function()
|
|
{
|
|
var rows = this.getCheckedRows();
|
|
if (!rows.length)
|
|
alert(LANG.message_nocharacterselected);
|
|
else if (confirm(LANG.confirm_unpincharacter))
|
|
{
|
|
var ids = [];
|
|
$WH.array_walk(rows, function(x) { ids.push(x.id) });
|
|
$WH.array_walk(this.data, function(x)
|
|
{
|
|
x.pinned = ($WH.in_array(ids, x.id) == -1);
|
|
if (x.__tr != null)
|
|
{
|
|
var a = $WH.gE(x.__tr, 'a')[1];
|
|
a.className = (x.pinned ? 'icon-star-right' : '');
|
|
}
|
|
});
|
|
ids = ids.join(',');
|
|
if (ids != '')
|
|
new Ajax('?profile=unpin&id=' + ids + '&user=' + g_pageInfo.username);
|
|
(Listview.cbSelect.bind(this, false))();
|
|
}
|
|
}).bind(this);
|
|
$WH.ae(d, i);
|
|
|
|
if (g_user.roles & (U_GROUP_ADMIN|U_GROUP_BUREAU))
|
|
{
|
|
var i = $WH.ce('input');
|
|
i.type = 'button';
|
|
i.value = LANG.button_resync;
|
|
i.onclick = (function()
|
|
{
|
|
var rows = this.getCheckedRows();
|
|
if (!rows.length)
|
|
alert(LANG.message_nocharacterselected);
|
|
else
|
|
{
|
|
var ids = '';
|
|
|
|
$WH.array_walk(rows, function(x)
|
|
{
|
|
ids += x.id + ','
|
|
});
|
|
ids = $WH.rtrim(ids, ',');
|
|
if (ids != '')
|
|
{
|
|
var div = $WH.ge('roster-status');
|
|
div.innerHTML = LANG.pr_queue_addqueue;
|
|
div.style.display = '';
|
|
|
|
new Ajax(
|
|
'?profile=resync&id=' + ids,
|
|
{
|
|
method: 'POST',
|
|
onSuccess: function(xhr, opt)
|
|
{
|
|
var result = parseInt(xhr.responseText);
|
|
|
|
if (isNaN(result))
|
|
alert(LANG.message_resyncerror + result);
|
|
else if (result < 0 && result != -102)
|
|
alert(LANG.message_resyncerror + '#' + result);
|
|
|
|
pr_updateStatus('profile', div, ids, true);
|
|
}
|
|
}
|
|
);
|
|
}
|
|
(Listview.cbSelect.bind(this, false))();
|
|
}
|
|
}).bind(this);
|
|
$WH.ae(d, i);
|
|
}
|
|
}
|
|
}
|
|
};
|
|
|
|
Listview.funcBox.beforeUserProfiles = function()
|
|
{
|
|
if (us_isOwnProfile())
|
|
{
|
|
this.mode = 1;
|
|
this.createCbControls = function(d, topBar)
|
|
{
|
|
if (!topBar && this.data.length < 15)
|
|
return;
|
|
|
|
var i = $WH.ce('input');
|
|
i.type = 'button';
|
|
i.value = LANG.button_new;
|
|
i.onclick = function() { document.location.href = '?profile&new' };
|
|
$WH.ae(d, i);
|
|
|
|
var i = $WH.ce('input');
|
|
i.type = 'button';
|
|
i.value = LANG.button_delete;
|
|
i.onclick = (function()
|
|
{
|
|
var rows = this.getCheckedRows();
|
|
if (!rows.length)
|
|
alert(LANG.message_noprofileselected);
|
|
else if (confirm(LANG.confirm_deleteprofile))
|
|
{
|
|
var ids = '';
|
|
|
|
$WH.array_walk(rows, function(x)
|
|
{
|
|
ids += x.id + ',';
|
|
});
|
|
ids = $WH.rtrim(ids, ',');
|
|
if (ids != '')
|
|
new Ajax('?profile=delete&id=' + ids);
|
|
this.deleteRows(rows);
|
|
}
|
|
}).bind(this);
|
|
$WH.ae(d, i);
|
|
|
|
var i = $WH.ce('input');
|
|
i.type = 'button';
|
|
i.value = LANG.button_makepub;
|
|
i.onclick = (function()
|
|
{
|
|
var rows = this.getCheckedRows();
|
|
if (!rows.length)
|
|
alert(LANG.message_noprofileselected);
|
|
else if (confirm(LANG.confirm_publicprofile))
|
|
{
|
|
var ids = '';
|
|
|
|
$WH.array_walk(rows, function(x)
|
|
{
|
|
if (!x.published)
|
|
{
|
|
x.published = 1;
|
|
if (x.__tr != null)
|
|
x.__tr.__status.innerHTML = '';
|
|
ids += x.id + ','
|
|
}
|
|
});
|
|
ids = $WH.rtrim(ids, ',');
|
|
if (ids != '')
|
|
new Ajax('?profile=public&id=' + ids);
|
|
(Listview.cbSelect.bind(this, false))();
|
|
}
|
|
}).bind(this);
|
|
$WH.ae(d, i);
|
|
|
|
var i = $WH.ce('input');
|
|
i.type = 'button';
|
|
i.value = LANG.button_makepriv;
|
|
i.onclick = (function()
|
|
{
|
|
var rows = this.getCheckedRows();
|
|
if (!rows.length)
|
|
alert(LANG.message_noprofileselected);
|
|
else if (confirm(LANG.confirm_privateprofile))
|
|
{
|
|
var ids = '';
|
|
|
|
$WH.array_walk(rows, function(x)
|
|
{
|
|
if (x.published)
|
|
{
|
|
x.published = 0;
|
|
if (x.__tr != null)
|
|
x.__tr.__status.innerHTML = LANG.privateprofile;
|
|
ids += x.id + ','
|
|
}
|
|
});
|
|
ids = $WH.rtrim(ids, ',');
|
|
if (ids != '')
|
|
new Ajax('?profile=private&id=' + ids);
|
|
(Listview.cbSelect.bind(this, false))();
|
|
}
|
|
}).bind(this);
|
|
$WH.ae(d, i);
|
|
}
|
|
}
|
|
};
|
|
|
|
Listview.funcBox.beforeUserSignatures = function()
|
|
{
|
|
if (us_isOwnProfile())
|
|
{
|
|
this.mode = 1;
|
|
this.createCbControls = function(d, topBar)
|
|
{
|
|
if (!topBar && this.data.length < 15)
|
|
return;
|
|
|
|
var i = $WH.ce('input');
|
|
i.type = 'button';
|
|
i.value = LANG.button_delete;
|
|
i.onclick = (function()
|
|
{
|
|
var rows = this.getCheckedRows();
|
|
if (!rows.length)
|
|
alert(LANG.message_nosignatureselected);
|
|
else if (confirm(LANG.confirm_deletesignature))
|
|
{
|
|
var ids = '';
|
|
|
|
$WH.array_walk(rows, function(x)
|
|
{
|
|
ids += x.id + ',';
|
|
});
|
|
ids = $WH.rtrim(ids, ',');
|
|
if (ids != '')
|
|
new Ajax('?signature=delete&id=' + ids);
|
|
this.deleteRows(rows);
|
|
this.resetCheckedRows();
|
|
this.refreshRows();
|
|
}
|
|
}).bind(this);
|
|
$WH.ae(d, i);
|
|
|
|
var i = $WH.ce('input');
|
|
i.type = 'button';
|
|
i.value = LANG.button_edit;
|
|
i.onclick = (function()
|
|
{
|
|
var rows = this.getCheckedRows();
|
|
if (!rows.length)
|
|
alert(LANG.message_nosignatureselected);
|
|
else if (rows.length > 1)
|
|
alert(LANG.message_toomanysignatures);
|
|
else
|
|
document.location.href = '?signature=' + rows[0].id;
|
|
}).bind(this);
|
|
$WH.ae(d, i);
|
|
|
|
var i = $WH.ce('input');
|
|
i.type = 'button';
|
|
i.value = LANG.button_markup;
|
|
i.onclick = (function()
|
|
{
|
|
var rows = this.getCheckedRows();
|
|
if (!rows.length)
|
|
alert(LANG.message_nosignatureselected);
|
|
else if (rows.length > 1)
|
|
alert(LANG.message_toomanysignatures);
|
|
else
|
|
prompt(LANG.prompt_signaturemarkup, '[url=' + this.getItemLink(rows[0]) + '][sig=' + rows[0].id + '][/url]');
|
|
}).bind(this);
|
|
$WH.ae(d, i);
|
|
|
|
var i = $WH.ce('input');
|
|
i.type = 'button';
|
|
i.value = LANG.button_link;
|
|
i.onclick = (function()
|
|
{
|
|
var rows = this.getCheckedRows();
|
|
if (!rows.length)
|
|
alert(LANG.message_nosignatureselected);
|
|
else if (rows.length > 1)
|
|
alert(LANG.message_toomanysignatures);
|
|
else
|
|
prompt(LANG.prompt_signaturedirect, 'http://' + location.host + '?signature=generate&id=' + rows[0].id + '.png');
|
|
}).bind(this);
|
|
$WH.ae(d, i);
|
|
}
|
|
}
|
|
};
|
|
|
|
Listview.extraCols.signature = {
|
|
id: 'signature',
|
|
name: LANG.signature,
|
|
before: 'name',
|
|
align: 'left',
|
|
compute: function(sig, td, tr)
|
|
{
|
|
var a = $WH.ce('a');
|
|
a.style.fontFamily = 'Verdana, sans-serif';
|
|
a.href = this.getItemLink(sig);
|
|
a.rel = 'np';
|
|
$WH.ae(a, $WH.ce('img', { src: '?signature=generate&id=' + sig.id + '.png', height: 60, width: 468 }));
|
|
$WH.ae(td, a);
|
|
}
|
|
};
|