1
+ − 1
// Comments
+ − 2
+ − 3
var comment_template = false;
85
7c68a18a27be
AJAX comments are now paginated; plugin manager can now show system plugins; typo in installer corrected; links in oxygen/stpatty/admin footers changed to "About Enano" page; 1.0.1 release candidate
Dan
diff
changeset
+ − 4
var comment_render_track = 0;
1
+ − 5
85
7c68a18a27be
AJAX comments are now paginated; plugin manager can now show system plugins; typo in installer corrected; links in oxygen/stpatty/admin footers changed to "About Enano" page; 1.0.1 release candidate
Dan
diff
changeset
+ − 6
function ajaxComments(parms)
7c68a18a27be
AJAX comments are now paginated; plugin manager can now show system plugins; typo in installer corrected; links in oxygen/stpatty/admin footers changed to "About Enano" page; 1.0.1 release candidate
Dan
diff
changeset
+ − 7
{
1
+ − 8
setAjaxLoading();
+ − 9
var pid = strToPageID(title);
+ − 10
if(!parms)
+ − 11
{
+ − 12
var parms = {
+ − 13
'mode' : 'fetch'
+ − 14
};
+ − 15
}
+ − 16
parms.page_id = pid[0];
+ − 17
parms.namespace = pid[1];
+ − 18
if(comment_template)
+ − 19
parms.have_template = true;
+ − 20
parms = ajaxEscape(toJSONString(parms));
+ − 21
ajaxPost(stdAjaxPrefix+'&_mode=comments', 'data=' + parms, function() {
407
+ − 22
if ( ajax.readyState == 4 && ajax.status == 200 ) {
1
+ − 23
unsetAjaxLoading();
+ − 24
selectButtonMajor('discussion');
+ − 25
unselectAllButtonsMinor();
+ − 26
// IE compatibility - doing ajax.responseText.substr() doesn't work
+ − 27
var rsptxt = ajax.responseText + '';
+ − 28
if ( rsptxt.substr(0, 1) != '{' )
+ − 29
{
+ − 30
document.getElementById('ajaxEditContainer').innerHTML = '<p>Comment system Javascript runtime: invalid JSON response from server, response text:</p><pre>' + ajax.responseText + '</pre>';
+ − 31
return false;
+ − 32
}
+ − 33
var response = parseJSON(ajax.responseText);
+ − 34
switch(response.mode)
+ − 35
{
+ − 36
case 'fetch':
86
c162ca39db8f
Finished pagination code (was incomplete in previous revision) and added a few hacks for an upcoming theme
Dan
diff
changeset
+ − 37
document.getElementById('ajaxEditContainer').innerHTML = '<div class="wait-box">Rendering '+response.count_total+' comments...</div>';
1
+ − 38
if(response.template)
+ − 39
comment_template = response.template;
+ − 40
setAjaxLoading();
+ − 41
renderComments(response);
+ − 42
unsetAjaxLoading();
+ − 43
break;
+ − 44
case 'redraw':
+ − 45
redrawComment(response);
+ − 46
break;
+ − 47
case 'annihilate':
+ − 48
annihiliateComment(response.id);
+ − 49
break;
+ − 50
case 'materialize':
212
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 51
alert($lang.get('comment_msg_comment_posted'));
1
+ − 52
hideCommentForm();
+ − 53
materializeComment(response);
+ − 54
break;
+ − 55
case 'error':
86
c162ca39db8f
Finished pagination code (was incomplete in previous revision) and added a few hacks for an upcoming theme
Dan
diff
changeset
+ − 56
new messagebox(MB_OK|MB_ICONSTOP, ( response.title ? response.title : 'Error fetching comment data' ), response.error);
1
+ − 57
break;
+ − 58
default:
+ − 59
alert(ajax.responseText);
+ − 60
break;
+ − 61
}
+ − 62
}
+ − 63
});
+ − 64
}
+ − 65
+ − 66
function renderComments(data)
+ − 67
{
+ − 68
+ − 69
var html = '';
+ − 70
+ − 71
// Header
+ − 72
212
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 73
html += '<h3>' + $lang.get('comment_heading') + '</h3>';
1
+ − 74
212
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 75
var ns = ENANO_PAGE_TYPE;
1
+ − 76
420
+ − 77
// Counters
1
+ − 78
if ( data.auth_mod_comments )
+ − 79
{
+ − 80
var cnt = ( data.auth_mod_comments ) ? data.count_total : data.count_appr;
212
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 81
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 82
var subst = {
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 83
num_comments: cnt,
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 84
page_type: ns
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 85
}
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 86
var count_msg = ( cnt == 0 ) ? $lang.get('comment_msg_count_zero', subst) : ( ( cnt == 1 ) ? $lang.get('comment_msg_count_one', subst) : $lang.get('comment_msg_count_plural', subst) );
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 87
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 88
html += "<p id=\"comment_status\"><span>" + count_msg + '</span>';
1
+ − 89
if ( data.count_unappr > 0 )
+ − 90
{
212
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 91
html += ' <span style="color: #D84308" id="comment_status_unapp">' + $lang.get('comment_msg_count_unapp_mod', { num_unapp: data.count_unappr }) + '</span>';
1
+ − 92
}
+ − 93
html += '</p>';
+ − 94
}
+ − 95
else
+ − 96
{
+ − 97
var cnt = data.count_appr;
212
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 98
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 99
var subst = {
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 100
num_comments: cnt,
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 101
page_type: ns
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 102
}
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 103
var count_msg = ( cnt == 0 ) ? $lang.get('comment_msg_count_zero', subst) : ( ( cnt == 1 ) ? $lang.get('comment_msg_count_one', subst) : $lang.get('comment_msg_count_plural', subst) );
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 104
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 105
html += "<p id=\"comment_status\">" + count_msg;
1
+ − 106
if ( data.count_unappr > 0 )
+ − 107
{
212
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 108
var unappr_msg = ( data.count_unappr == 1 ) ? $lang.get('comment_msg_count_unapp_one') : $lang.get('comment_msg_count_unapp_plural', { num_unapp: data.count_unappr });
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 109
html += ' ' + unappr_msg;
1
+ − 110
}
+ − 111
html += '</p>';
+ − 112
}
+ − 113
+ − 114
// Comment display
+ − 115
+ − 116
if ( data.count_total > 0 )
+ − 117
{
85
7c68a18a27be
AJAX comments are now paginated; plugin manager can now show system plugins; typo in installer corrected; links in oxygen/stpatty/admin footers changed to "About Enano" page; 1.0.1 release candidate
Dan
diff
changeset
+ − 118
comment_render_track = 0;
7c68a18a27be
AJAX comments are now paginated; plugin manager can now show system plugins; typo in installer corrected; links in oxygen/stpatty/admin footers changed to "About Enano" page; 1.0.1 release candidate
Dan
diff
changeset
+ − 119
var commentpages = new paginator(data.comments, _render_comment, 0, 10, data);
7c68a18a27be
AJAX comments are now paginated; plugin manager can now show system plugins; typo in installer corrected; links in oxygen/stpatty/admin footers changed to "About Enano" page; 1.0.1 release candidate
Dan
diff
changeset
+ − 120
html += commentpages.html;
1
+ − 121
}
+ − 122
74
68469a95658d
Various bugfixes and cleanups, too much to remember... see the diffs for what got changed :-)
Dan
diff
changeset
+ − 123
if ( data.auth_post_comments )
68469a95658d
Various bugfixes and cleanups, too much to remember... see the diffs for what got changed :-)
Dan
diff
changeset
+ − 124
{
68469a95658d
Various bugfixes and cleanups, too much to remember... see the diffs for what got changed :-)
Dan
diff
changeset
+ − 125
// Posting form
1
+ − 126
212
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 127
html += '<h3>' + $lang.get('comment_postform_title') + '</h3>';
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 128
html += '<p>' + $lang.get('comment_postform_blurb');
1
+ − 129
if ( data.approval_needed )
212
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 130
html+=' ' + $lang.get('comment_postform_blurb_unapp');
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 131
html += ' <a id="leave_comment_button" href="#" onclick="displayCommentForm(); return false;">' + $lang.get('comment_postform_blurb_link') + '</a></p>';
1
+ − 132
html += '<div id="comment_form" style="display: none;">';
+ − 133
html += ' <table border="0">';
212
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 134
html += ' <tr><td>' + $lang.get('comment_postform_field_name') + '</td><td>';
1
+ − 135
if ( data.user_id > 1 ) html += data.username + '<input id="commentform_name" type="hidden" value="'+data.username+'" size="40" />';
+ − 136
else html += '<input id="commentform_name" type="text" size="40" />';
+ − 137
html += ' </td></tr>';
212
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 138
html += ' <tr><td>' + $lang.get('comment_postform_field_subject') + '</td><td><input id="commentform_subject" type="text" size="40" /></td></tr>';
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 139
html += ' <tr><td>' + $lang.get('comment_postform_field_comment') + '</td><td><textarea id="commentform_message" rows="15" cols="50"></textarea></td></tr>';
1
+ − 140
if ( !data.logged_in && data.guest_posting == '1' )
+ − 141
{
212
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 142
html += ' <tr><td>' + $lang.get('comment_postform_field_captcha_title') + '<br /><small>' + $lang.get('comment_postform_field_captcha_blurb') + '</small></td><td>';
1
+ − 143
html += ' <img alt="CAPTCHA image" src="'+makeUrlNS('Special', 'Captcha/' + data.captcha)+'" onclick="this.src=\''+makeUrlNS('Special', 'Captcha/' + data.captcha)+'/\'+Math.floor(Math.random()*10000000);" style="cursor: pointer;" /><br />';
212
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 144
html += ' ' + $lang.get('comment_postform_field_captcha_label') + ' <input type="text" size="8" id="commentform_captcha" />';
1
+ − 145
html += ' <!-- This input is used to track the ID of the CAPTCHA image --> <input type="hidden" id="commentform_captcha_id" value="'+data.captcha+'" />';
+ − 146
html += ' </td></tr>';
+ − 147
}
212
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 148
html += ' <tr><td colspan="2" style="text-align: center;"><input type="button" onclick="submitComment();" value="' + $lang.get('comment_postform_btn_submit') + '" /></td></tr>';
1
+ − 149
html += ' </table>';
+ − 150
html += '</div>';
74
68469a95658d
Various bugfixes and cleanups, too much to remember... see the diffs for what got changed :-)
Dan
diff
changeset
+ − 151
}
68469a95658d
Various bugfixes and cleanups, too much to remember... see the diffs for what got changed :-)
Dan
diff
changeset
+ − 152
1
+ − 153
document.getElementById('ajaxEditContainer').innerHTML = html;
+ − 154
102
+ − 155
for ( i = 0; i < data.comments.length; i++ )
+ − 156
{
+ − 157
document.getElementById('comment_source_'+i).value = data.comments[i].comment_source;
+ − 158
}
85
7c68a18a27be
AJAX comments are now paginated; plugin manager can now show system plugins; typo in installer corrected; links in oxygen/stpatty/admin footers changed to "About Enano" page; 1.0.1 release candidate
Dan
diff
changeset
+ − 159
7c68a18a27be
AJAX comments are now paginated; plugin manager can now show system plugins; typo in installer corrected; links in oxygen/stpatty/admin footers changed to "About Enano" page; 1.0.1 release candidate
Dan
diff
changeset
+ − 160
}
7c68a18a27be
AJAX comments are now paginated; plugin manager can now show system plugins; typo in installer corrected; links in oxygen/stpatty/admin footers changed to "About Enano" page; 1.0.1 release candidate
Dan
diff
changeset
+ − 161
7c68a18a27be
AJAX comments are now paginated; plugin manager can now show system plugins; typo in installer corrected; links in oxygen/stpatty/admin footers changed to "About Enano" page; 1.0.1 release candidate
Dan
diff
changeset
+ − 162
var _render_comment = function(this_comment, data)
7c68a18a27be
AJAX comments are now paginated; plugin manager can now show system plugins; typo in installer corrected; links in oxygen/stpatty/admin footers changed to "About Enano" page; 1.0.1 release candidate
Dan
diff
changeset
+ − 163
{
7c68a18a27be
AJAX comments are now paginated; plugin manager can now show system plugins; typo in installer corrected; links in oxygen/stpatty/admin footers changed to "About Enano" page; 1.0.1 release candidate
Dan
diff
changeset
+ − 164
var i = comment_render_track;
7c68a18a27be
AJAX comments are now paginated; plugin manager can now show system plugins; typo in installer corrected; links in oxygen/stpatty/admin footers changed to "About Enano" page; 1.0.1 release candidate
Dan
diff
changeset
+ − 165
comment_render_track++;
7c68a18a27be
AJAX comments are now paginated; plugin manager can now show system plugins; typo in installer corrected; links in oxygen/stpatty/admin footers changed to "About Enano" page; 1.0.1 release candidate
Dan
diff
changeset
+ − 166
var parser = new templateParser(comment_template);
7c68a18a27be
AJAX comments are now paginated; plugin manager can now show system plugins; typo in installer corrected; links in oxygen/stpatty/admin footers changed to "About Enano" page; 1.0.1 release candidate
Dan
diff
changeset
+ − 167
var tplvars = new Object();
7c68a18a27be
AJAX comments are now paginated; plugin manager can now show system plugins; typo in installer corrected; links in oxygen/stpatty/admin footers changed to "About Enano" page; 1.0.1 release candidate
Dan
diff
changeset
+ − 168
7c68a18a27be
AJAX comments are now paginated; plugin manager can now show system plugins; typo in installer corrected; links in oxygen/stpatty/admin footers changed to "About Enano" page; 1.0.1 release candidate
Dan
diff
changeset
+ − 169
if ( this_comment.approved != '1' && !data.auth_mod_comments )
7c68a18a27be
AJAX comments are now paginated; plugin manager can now show system plugins; typo in installer corrected; links in oxygen/stpatty/admin footers changed to "About Enano" page; 1.0.1 release candidate
Dan
diff
changeset
+ − 170
return '';
7c68a18a27be
AJAX comments are now paginated; plugin manager can now show system plugins; typo in installer corrected; links in oxygen/stpatty/admin footers changed to "About Enano" page; 1.0.1 release candidate
Dan
diff
changeset
+ − 171
7c68a18a27be
AJAX comments are now paginated; plugin manager can now show system plugins; typo in installer corrected; links in oxygen/stpatty/admin footers changed to "About Enano" page; 1.0.1 release candidate
Dan
diff
changeset
+ − 172
tplvars.ID = i;
7c68a18a27be
AJAX comments are now paginated; plugin manager can now show system plugins; typo in installer corrected; links in oxygen/stpatty/admin footers changed to "About Enano" page; 1.0.1 release candidate
Dan
diff
changeset
+ − 173
tplvars.DATETIME = this_comment.time;
7c68a18a27be
AJAX comments are now paginated; plugin manager can now show system plugins; typo in installer corrected; links in oxygen/stpatty/admin footers changed to "About Enano" page; 1.0.1 release candidate
Dan
diff
changeset
+ − 174
tplvars.SUBJECT = this_comment.subject;
7c68a18a27be
AJAX comments are now paginated; plugin manager can now show system plugins; typo in installer corrected; links in oxygen/stpatty/admin footers changed to "About Enano" page; 1.0.1 release candidate
Dan
diff
changeset
+ − 175
tplvars.DATA = this_comment.comment_data;
7c68a18a27be
AJAX comments are now paginated; plugin manager can now show system plugins; typo in installer corrected; links in oxygen/stpatty/admin footers changed to "About Enano" page; 1.0.1 release candidate
Dan
diff
changeset
+ − 176
tplvars.SIGNATURE = this_comment.signature;
7c68a18a27be
AJAX comments are now paginated; plugin manager can now show system plugins; typo in installer corrected; links in oxygen/stpatty/admin footers changed to "About Enano" page; 1.0.1 release candidate
Dan
diff
changeset
+ − 177
7c68a18a27be
AJAX comments are now paginated; plugin manager can now show system plugins; typo in installer corrected; links in oxygen/stpatty/admin footers changed to "About Enano" page; 1.0.1 release candidate
Dan
diff
changeset
+ − 178
if ( this_comment.approved != '1' )
212
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 179
tplvars.SUBJECT += ' <span style="color: #D84308">' + $lang.get('comment_msg_note_unapp') + '</span>';
85
7c68a18a27be
AJAX comments are now paginated; plugin manager can now show system plugins; typo in installer corrected; links in oxygen/stpatty/admin footers changed to "About Enano" page; 1.0.1 release candidate
Dan
diff
changeset
+ − 180
7c68a18a27be
AJAX comments are now paginated; plugin manager can now show system plugins; typo in installer corrected; links in oxygen/stpatty/admin footers changed to "About Enano" page; 1.0.1 release candidate
Dan
diff
changeset
+ − 181
// Name
7c68a18a27be
AJAX comments are now paginated; plugin manager can now show system plugins; typo in installer corrected; links in oxygen/stpatty/admin footers changed to "About Enano" page; 1.0.1 release candidate
Dan
diff
changeset
+ − 182
tplvars.NAME = this_comment.name;
7c68a18a27be
AJAX comments are now paginated; plugin manager can now show system plugins; typo in installer corrected; links in oxygen/stpatty/admin footers changed to "About Enano" page; 1.0.1 release candidate
Dan
diff
changeset
+ − 183
if ( this_comment.user_id > 1 )
7c68a18a27be
AJAX comments are now paginated; plugin manager can now show system plugins; typo in installer corrected; links in oxygen/stpatty/admin footers changed to "About Enano" page; 1.0.1 release candidate
Dan
diff
changeset
+ − 184
tplvars.NAME = '<a href="' + makeUrlNS('User', this_comment.name) + '">' + this_comment.name + '</a>';
1
+ − 185
328
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
diff
changeset
+ − 186
// Avatar
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
diff
changeset
+ − 187
if ( this_comment.user_has_avatar == '1' )
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
diff
changeset
+ − 188
{
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
diff
changeset
+ − 189
tplvars.AVATAR_URL = scriptPath + '/' + data.avatar_directory + '/' + this_comment.user_id + '.' + this_comment.avatar_type;
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
diff
changeset
+ − 190
tplvars.USERPAGE_LINK = makeUrlNS('User', this_comment.name);
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
diff
changeset
+ − 191
tplvars.AVATAR_ALT = $lang.get('usercp_avatar_image_alt', { username: this_comment.name });
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
diff
changeset
+ − 192
}
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
diff
changeset
+ − 193
85
7c68a18a27be
AJAX comments are now paginated; plugin manager can now show system plugins; typo in installer corrected; links in oxygen/stpatty/admin footers changed to "About Enano" page; 1.0.1 release candidate
Dan
diff
changeset
+ − 194
// User level
212
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 195
tplvars.USER_LEVEL = $lang.get('user_type_guest');
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 196
if ( this_comment.user_level >= data.user_level.member ) tplvars.USER_LEVEL = $lang.get('user_type_member');
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 197
if ( this_comment.user_level >= data.user_level.mod ) tplvars.USER_LEVEL = $lang.get('user_type_mod');
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 198
if ( this_comment.user_level >= data.user_level.admin ) tplvars.USER_LEVEL = $lang.get('user_type_admin');
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 199
85
7c68a18a27be
AJAX comments are now paginated; plugin manager can now show system plugins; typo in installer corrected; links in oxygen/stpatty/admin footers changed to "About Enano" page; 1.0.1 release candidate
Dan
diff
changeset
+ − 200
// Send PM link
212
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 201
tplvars.SEND_PM_LINK=(this_comment.user_id>1)?'<a onclick="window.open(this.href); return false;" href="'+ makeUrlNS('Special', 'PrivateMessages/Compose/To/' + ( this_comment.name.replace(/ /g, '_') )) +'">' + $lang.get('comment_btn_send_privmsg') + '</a><br />':'';
85
7c68a18a27be
AJAX comments are now paginated; plugin manager can now show system plugins; typo in installer corrected; links in oxygen/stpatty/admin footers changed to "About Enano" page; 1.0.1 release candidate
Dan
diff
changeset
+ − 202
7c68a18a27be
AJAX comments are now paginated; plugin manager can now show system plugins; typo in installer corrected; links in oxygen/stpatty/admin footers changed to "About Enano" page; 1.0.1 release candidate
Dan
diff
changeset
+ − 203
// Add buddy link
212
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 204
tplvars.ADD_BUDDY_LINK=(this_comment.user_id>1)?'<a onclick="window.open(this.href); return false;" href="'+ makeUrlNS('Special', 'PrivateMessages/FriendList/Add/' + ( this_comment.name.replace(/ /g, '_') )) +'">' + $lang.get('comment_btn_add_buddy') + '</a><br />':'';
85
7c68a18a27be
AJAX comments are now paginated; plugin manager can now show system plugins; typo in installer corrected; links in oxygen/stpatty/admin footers changed to "About Enano" page; 1.0.1 release candidate
Dan
diff
changeset
+ − 205
7c68a18a27be
AJAX comments are now paginated; plugin manager can now show system plugins; typo in installer corrected; links in oxygen/stpatty/admin footers changed to "About Enano" page; 1.0.1 release candidate
Dan
diff
changeset
+ − 206
// Edit link
212
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 207
tplvars.EDIT_LINK='<a href="#edit_'+i+'" onclick="editComment(\''+i+'\', this); return false;" id="cmteditlink_'+i+'">' + $lang.get('comment_btn_edit') + '</a>';
85
7c68a18a27be
AJAX comments are now paginated; plugin manager can now show system plugins; typo in installer corrected; links in oxygen/stpatty/admin footers changed to "About Enano" page; 1.0.1 release candidate
Dan
diff
changeset
+ − 208
7c68a18a27be
AJAX comments are now paginated; plugin manager can now show system plugins; typo in installer corrected; links in oxygen/stpatty/admin footers changed to "About Enano" page; 1.0.1 release candidate
Dan
diff
changeset
+ − 209
// Delete link
212
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 210
tplvars.DELETE_LINK='<a href="#delete_'+i+'" onclick="deleteComment(\''+i+'\'); return false;">' + $lang.get('comment_btn_delete') + '</a>';
85
7c68a18a27be
AJAX comments are now paginated; plugin manager can now show system plugins; typo in installer corrected; links in oxygen/stpatty/admin footers changed to "About Enano" page; 1.0.1 release candidate
Dan
diff
changeset
+ − 211
7c68a18a27be
AJAX comments are now paginated; plugin manager can now show system plugins; typo in installer corrected; links in oxygen/stpatty/admin footers changed to "About Enano" page; 1.0.1 release candidate
Dan
diff
changeset
+ − 212
// Moderation: (Un)approve link
212
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 213
var appr = ( this_comment.approved == 1 ) ? $lang.get('comment_btn_mod_unapprove') : $lang.get('comment_btn_mod_approve');
85
7c68a18a27be
AJAX comments are now paginated; plugin manager can now show system plugins; typo in installer corrected; links in oxygen/stpatty/admin footers changed to "About Enano" page; 1.0.1 release candidate
Dan
diff
changeset
+ − 214
tplvars.MOD_APPROVE_LINK='<a href="#approve_'+i+'" id="comment_approve_'+i+'" onclick="approveComment(\''+i+'\'); return false;">'+appr+'</a>';
7c68a18a27be
AJAX comments are now paginated; plugin manager can now show system plugins; typo in installer corrected; links in oxygen/stpatty/admin footers changed to "About Enano" page; 1.0.1 release candidate
Dan
diff
changeset
+ − 215
7c68a18a27be
AJAX comments are now paginated; plugin manager can now show system plugins; typo in installer corrected; links in oxygen/stpatty/admin footers changed to "About Enano" page; 1.0.1 release candidate
Dan
diff
changeset
+ − 216
// Moderation: Delete post link
212
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 217
tplvars.MOD_DELETE_LINK='<a href="#mod_del_'+i+'" onclick="deleteComment(\''+i+'\'); return false;">' + $lang.get('comment_btn_mod_delete') + '</a>';
85
7c68a18a27be
AJAX comments are now paginated; plugin manager can now show system plugins; typo in installer corrected; links in oxygen/stpatty/admin footers changed to "About Enano" page; 1.0.1 release candidate
Dan
diff
changeset
+ − 218
359
+ − 219
// Moderation: IP address link
+ − 220
if ( this_comment.have_ip )
+ − 221
{
+ − 222
tplvars.MOD_IP_LINK = '<span id="comment_ip_' + i + '"><a href="#mod_ip_' + i + '" onclick="viewCommentIP(' + this_comment.comment_id + ', ' + i + '); return false;">' + $lang.get('comment_btn_mod_ip_logged') + '</a></span>';
+ − 223
}
+ − 224
else
+ − 225
{
+ − 226
tplvars.MOD_IP_LINK = $lang.get('comment_btn_mod_ip_missing');
+ − 227
}
+ − 228
85
7c68a18a27be
AJAX comments are now paginated; plugin manager can now show system plugins; typo in installer corrected; links in oxygen/stpatty/admin footers changed to "About Enano" page; 1.0.1 release candidate
Dan
diff
changeset
+ − 229
var tplbool = new Object();
7c68a18a27be
AJAX comments are now paginated; plugin manager can now show system plugins; typo in installer corrected; links in oxygen/stpatty/admin footers changed to "About Enano" page; 1.0.1 release candidate
Dan
diff
changeset
+ − 230
7c68a18a27be
AJAX comments are now paginated; plugin manager can now show system plugins; typo in installer corrected; links in oxygen/stpatty/admin footers changed to "About Enano" page; 1.0.1 release candidate
Dan
diff
changeset
+ − 231
tplbool.signature = ( this_comment.signature == '' ) ? false : true;
7c68a18a27be
AJAX comments are now paginated; plugin manager can now show system plugins; typo in installer corrected; links in oxygen/stpatty/admin footers changed to "About Enano" page; 1.0.1 release candidate
Dan
diff
changeset
+ − 232
tplbool.can_edit = ( data.auth_edit_comments && ( ( this_comment.user_id == data.user_id && data.logged_in ) || data.auth_mod_comments ) );
7c68a18a27be
AJAX comments are now paginated; plugin manager can now show system plugins; typo in installer corrected; links in oxygen/stpatty/admin footers changed to "About Enano" page; 1.0.1 release candidate
Dan
diff
changeset
+ − 233
tplbool.auth_mod = data.auth_mod_comments;
108
1c7f59df9474
Implemented some extra functionality for friends/foes in comments; fixed lack of table_prefix in stats.php line 63
Dan
diff
changeset
+ − 234
tplbool.is_friend = ( this_comment.is_buddy == 1 && this_comment.is_friend == 1 );
1c7f59df9474
Implemented some extra functionality for friends/foes in comments; fixed lack of table_prefix in stats.php line 63
Dan
diff
changeset
+ − 235
tplbool.is_foe = ( this_comment.is_buddy == 1 && this_comment.is_friend == 0 );
328
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
diff
changeset
+ − 236
tplbool.user_has_avatar = ( this_comment.user_has_avatar == '1' );
108
1c7f59df9474
Implemented some extra functionality for friends/foes in comments; fixed lack of table_prefix in stats.php line 63
Dan
diff
changeset
+ − 237
1c7f59df9474
Implemented some extra functionality for friends/foes in comments; fixed lack of table_prefix in stats.php line 63
Dan
diff
changeset
+ − 238
if ( tplbool.is_friend )
214
+ − 239
tplvars.USER_LEVEL += '<br /><b>' + $lang.get('comment_on_friend_list') + '</b>';
108
1c7f59df9474
Implemented some extra functionality for friends/foes in comments; fixed lack of table_prefix in stats.php line 63
Dan
diff
changeset
+ − 240
else if ( tplbool.is_foe )
214
+ − 241
tplvars.USER_LEVEL += '<br /><b>' + $lang.get('comment_on_foe_list') + '</b>';
85
7c68a18a27be
AJAX comments are now paginated; plugin manager can now show system plugins; typo in installer corrected; links in oxygen/stpatty/admin footers changed to "About Enano" page; 1.0.1 release candidate
Dan
diff
changeset
+ − 242
7c68a18a27be
AJAX comments are now paginated; plugin manager can now show system plugins; typo in installer corrected; links in oxygen/stpatty/admin footers changed to "About Enano" page; 1.0.1 release candidate
Dan
diff
changeset
+ − 243
parser.assign_vars(tplvars);
7c68a18a27be
AJAX comments are now paginated; plugin manager can now show system plugins; typo in installer corrected; links in oxygen/stpatty/admin footers changed to "About Enano" page; 1.0.1 release candidate
Dan
diff
changeset
+ − 244
parser.assign_bool(tplbool);
7c68a18a27be
AJAX comments are now paginated; plugin manager can now show system plugins; typo in installer corrected; links in oxygen/stpatty/admin footers changed to "About Enano" page; 1.0.1 release candidate
Dan
diff
changeset
+ − 245
420
+ − 246
var ret = '<div id="comment_holder_' + i + '">';
+ − 247
ret += '<input type="hidden" value="'+this_comment.comment_id+'" />';
+ − 248
ret += '<input type="hidden" id="comment_source_'+i+'" />';
+ − 249
ret += parser.run();
+ − 250
ret += '</div>';
+ − 251
return ret;
1
+ − 252
}
+ − 253
+ − 254
function displayCommentForm()
+ − 255
{
+ − 256
document.getElementById('leave_comment_button').style.display = 'none';
+ − 257
document.getElementById('comment_form').style.display = 'block';
+ − 258
}
+ − 259
+ − 260
function hideCommentForm()
+ − 261
{
+ − 262
document.getElementById('leave_comment_button').style.display = 'inline';
+ − 263
document.getElementById('comment_form').style.display = 'none';
+ − 264
}
+ − 265
+ − 266
function editComment(id, link)
+ − 267
{
+ − 268
var ctr = document.getElementById('subject_'+id);
102
+ − 269
var subj = ( ctr.firstChild ) ? trim(ctr.firstChild.nodeValue) : ''; // If there's a span in there that says 'unapproved', this eliminates it
1
+ − 270
ctr.innerHTML = '';
+ − 271
var ipt = document.createElement('input');
+ − 272
ipt.id = 'subject_edit_'+id;
+ − 273
ipt.value = subj;
+ − 274
ctr.appendChild(ipt);
+ − 275
+ − 276
var src = document.getElementById('comment_source_'+id).value;
+ − 277
var cmt = document.getElementById('comment_'+id);
+ − 278
cmt.innerHTML = '';
+ − 279
var ta = document.createElement('textarea');
+ − 280
ta.rows = '10';
+ − 281
ta.cols = '40';
+ − 282
ta.value = src;
+ − 283
ta.id = 'comment_edit_'+id;
+ − 284
cmt.appendChild(ta);
+ − 285
+ − 286
link.style.fontWeight = 'bold';
212
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 287
link.innerHTML = $lang.get('comment_btn_save');
1
+ − 288
link.onclick = function() { var id = this.id.substr(this.id.indexOf('_')+1); saveComment(id, this); return false; };
+ − 289
}
+ − 290
+ − 291
function saveComment(id, link)
+ − 292
{
+ − 293
var data = document.getElementById('comment_edit_'+id).value;
+ − 294
var subj = document.getElementById('subject_edit_'+id).value;
+ − 295
var div = document.getElementById('comment_holder_'+id);
+ − 296
var real_id = div.getElementsByTagName('input')[0]['value'];
+ − 297
var req = {
+ − 298
'mode' : 'edit',
+ − 299
'id' : real_id,
+ − 300
'local_id' : id,
+ − 301
'data' : data,
+ − 302
'subj' : subj
+ − 303
};
+ − 304
link.style.fontWeight = 'normal';
212
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 305
link.innerHTML = $lang.get('comment_btn_edit');
1
+ − 306
link.onclick = function() { var id = this.id.substr(this.id.indexOf('_')+1); editComment(id, this); return false; };
+ − 307
ajaxComments(req);
+ − 308
}
+ − 309
+ − 310
function deleteComment(id)
+ − 311
{
102
+ − 312
if ( !shift )
+ − 313
{
212
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 314
var c = confirm($lang.get('comment_msg_delete_confirm'));
102
+ − 315
if(!c)
+ − 316
return false;
+ − 317
}
1
+ − 318
var div = document.getElementById('comment_holder_'+id);
+ − 319
var real_id = div.getElementsByTagName('input')[0]['value'];
+ − 320
var req = {
+ − 321
'mode' : 'delete',
+ − 322
'id' : real_id,
+ − 323
'local_id' : id
+ − 324
};
+ − 325
ajaxComments(req);
+ − 326
}
+ − 327
+ − 328
function submitComment()
+ − 329
{
+ − 330
var name = document.getElementById('commentform_name').value;
+ − 331
var subj = document.getElementById('commentform_subject').value;
+ − 332
var text = document.getElementById('commentform_message').value;
+ − 333
if ( document.getElementById('commentform_captcha') )
+ − 334
{
+ − 335
var captcha_code = document.getElementById('commentform_captcha').value;
+ − 336
var captcha_id = document.getElementById('commentform_captcha_id').value;
+ − 337
}
+ − 338
else
+ − 339
{
+ − 340
var captcha_code = '';
+ − 341
var captcha_id = '';
+ − 342
}
102
+ − 343
if ( subj == '' )
+ − 344
{
+ − 345
new messagebox(MB_OK|MB_ICONSTOP, 'Input validation failed', 'Please enter a subject for your comment.');
+ − 346
return false;
+ − 347
}
+ − 348
if ( text == '' )
+ − 349
{
+ − 350
new messagebox(MB_OK|MB_ICONSTOP, 'Input validation failed', 'Please enter some text for the body of your comment .');
+ − 351
return false;
+ − 352
}
1
+ − 353
var req = {
+ − 354
'mode' : 'submit',
+ − 355
'name' : name,
+ − 356
'subj' : subj,
+ − 357
'text' : text,
+ − 358
'captcha_code' : captcha_code,
+ − 359
'captcha_id' : captcha_id
+ − 360
};
+ − 361
ajaxComments(req);
+ − 362
}
+ − 363
+ − 364
function redrawComment(data)
+ − 365
{
+ − 366
if ( data.subj )
+ − 367
{
+ − 368
document.getElementById('subject_' + data.id).innerHTML = data.subj;
+ − 369
}
+ − 370
if ( data.approved && data.approved != '1' )
+ − 371
{
212
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 372
document.getElementById('subject_' + data.id).innerHTML += ' <span style="color: #D84308">' + $lang.get('comment_msg_note_unapp') + '</span>';
1
+ − 373
}
29
e5484a9e0818
Rewrote change theme dialog; a few minor stability fixes here and there; fixed IE + St Patty background image
Dan
diff
changeset
+ − 374
if ( data.approved && ( typeof(data.approve_updated) == 'string' && data.approve_updated == 'yes' ) )
1
+ − 375
{
212
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 376
var appr = ( data.approved == '1' ) ? $lang.get('comment_btn_mod_unapprove') : $lang.get('comment_btn_mod_approve');
1
+ − 377
document.getElementById('comment_approve_'+data.id).innerHTML = appr;
29
e5484a9e0818
Rewrote change theme dialog; a few minor stability fixes here and there; fixed IE + St Patty background image
Dan
diff
changeset
+ − 378
212
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 379
if ( data.approved == '1' )
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 380
comment_decrement_unapproval();
1
+ − 381
else
212
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 382
comment_increment_unapproval();
1
+ − 383
}
+ − 384
if ( data.text )
+ − 385
{
+ − 386
document.getElementById('comment_' + data.id).innerHTML = data.text;
+ − 387
}
+ − 388
if ( data.src )
+ − 389
{
+ − 390
document.getElementById('comment_source_' + data.id).value = data.src;
+ − 391
}
359
+ − 392
if ( data.ip_addr )
+ − 393
{
420
+ − 394
var span = $dynano('comment_ip_' + data.local_id).object;
359
+ − 395
if ( !span )
+ − 396
return false;
+ − 397
span.innerHTML = $lang.get('comment_msg_ip_address') + ' <a href="#rdns" onclick="ajaxReverseDNS(this); return false;">' + data.ip_addr + '</a>';
+ − 398
}
1
+ − 399
}
+ − 400
+ − 401
function approveComment(id)
+ − 402
{
+ − 403
var div = document.getElementById('comment_holder_'+id);
+ − 404
var real_id = div.getElementsByTagName('input')[0]['value'];
+ − 405
var req = {
+ − 406
'mode' : 'approve',
+ − 407
'id' : real_id,
+ − 408
'local_id' : id
+ − 409
};
+ − 410
ajaxComments(req);
+ − 411
}
+ − 412
+ − 413
// Does the actual DOM object removal
+ − 414
function annihiliateComment(id) // Did I spell that right?
+ − 415
{
212
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 416
var approved = true;
1
+ − 417
if(document.getElementById('comment_approve_'+id))
+ − 418
{
+ − 419
var appr = document.getElementById('comment_approve_'+id).firstChild.nodeValue;
212
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 420
if ( appr == $lang.get('comment_btn_mod_approve') )
1
+ − 421
{
212
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 422
approved = false;
1
+ − 423
}
+ − 424
}
+ − 425
+ − 426
var div = document.getElementById('comment_holder_'+id);
+ − 427
div.parentNode.removeChild(div);
212
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 428
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 429
// update approval status
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 430
if ( document.getElementById('comment_count_unapp_inner') && !approved )
1
+ − 431
{
212
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 432
comment_decrement_unapproval();
1
+ − 433
}
+ − 434
}
+ − 435
+ − 436
function materializeComment(data)
+ − 437
{
+ − 438
// Intelligently get an ID
+ − 439
+ − 440
var i = 0;
+ − 441
var brother;
+ − 442
while ( true )
+ − 443
{
+ − 444
var x = document.getElementById('comment_holder_'+i);
+ − 445
if(!x)
+ − 446
break;
+ − 447
brother = x;
+ − 448
i++;
+ − 449
}
+ − 450
+ − 451
var parser = new templateParser(comment_template);
+ − 452
var tplvars = new Object();
+ − 453
+ − 454
if ( data.approved != '1' && !data.auth_mod_comments )
+ − 455
return false;
+ − 456
+ − 457
tplvars.ID = i;
+ − 458
tplvars.DATETIME = data.time;
+ − 459
tplvars.SUBJECT = data.subject;
+ − 460
tplvars.DATA = data.comment_data;
+ − 461
tplvars.SIGNATURE = data.signature;
+ − 462
+ − 463
tplvars.NAME = data.name;
+ − 464
if ( data.user_id > 1 )
+ − 465
tplvars.NAME = '<a href="' + makeUrlNS('User', data.name) + '">' + data.name + '</a>';
+ − 466
+ − 467
if ( data.approved != '1' )
212
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 468
tplvars.SUBJECT += ' <span style="color: #D84308">' + $lang.get('comment_msg_note_unapp') + '</span>';
1
+ − 469
+ − 470
// User level
212
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 471
tplvars.USER_LEVEL = $lang.get('user_type_guest');
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 472
if ( data.user_level >= data.user_level_list.member ) tplvars.USER_LEVEL = $lang.get('user_type_member');
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 473
if ( data.user_level >= data.user_level_list.mod ) tplvars.USER_LEVEL = $lang.get('user_type_mod');
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 474
if ( data.user_level >= data.user_level_list.admin ) tplvars.USER_LEVEL = $lang.get('user_type_admin');
1
+ − 475
328
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
diff
changeset
+ − 476
// Avatar
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
diff
changeset
+ − 477
if ( data.user_has_avatar == '1' )
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
diff
changeset
+ − 478
{
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
diff
changeset
+ − 479
tplvars.AVATAR_URL = scriptPath + '/' + data.avatar_directory + '/' + data.user_id + '.' + data.avatar_type;
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
diff
changeset
+ − 480
tplvars.USERPAGE_LINK = makeUrlNS('User', data.name);
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
diff
changeset
+ − 481
tplvars.AVATAR_ALT = $lang.get('usercp_avatar_image_alt', { username: data.name });
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
diff
changeset
+ − 482
}
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
diff
changeset
+ − 483
1
+ − 484
// Send PM link
212
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 485
tplvars.SEND_PM_LINK=(data.user_id>1)?'<a onclick="window.open(this.href); return false;" href="'+ makeUrlNS('Special', 'PrivateMessages/Compose/To/' + ( data.name.replace(/ /g, '_') )) +'">' + $lang.get('comment_btn_send_privmsg') + '</a><br />':'';
1
+ − 486
+ − 487
// Add buddy link
212
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 488
tplvars.ADD_BUDDY_LINK=(data.user_id>1)?'<a onclick="window.open(this.href); return false;" href="'+ makeUrlNS('Special', 'PrivateMessages/FriendList/Add/' + ( data.name.replace(/ /g, '_') )) +'">' + $lang.get('comment_btn_add_buddy') + '</a><br />':'';
1
+ − 489
+ − 490
// Edit link
212
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 491
tplvars.EDIT_LINK='<a href="#edit_'+i+'" onclick="editComment(\''+i+'\', this); return false;" id="cmteditlink_'+i+'">' + $lang.get('comment_btn_edit') + '</a>';
1
+ − 492
+ − 493
// Delete link
212
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 494
tplvars.DELETE_LINK='<a href="#delete_'+i+'" onclick="deleteComment(\''+i+'\'); return false;">' + $lang.get('comment_btn_delete') + '</a>';
1
+ − 495
+ − 496
// Moderation: (Un)approve link
212
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 497
var appr = ( data.approved == 1 ) ? $lang.get('comment_btn_mod_unapprove') : $lang.get('comment_btn_mod_approve');
1
+ − 498
tplvars.MOD_APPROVE_LINK='<a href="#approve_'+i+'" id="comment_approve_'+i+'" onclick="approveComment(\''+i+'\'); return false;">'+appr+'</a>';
+ − 499
+ − 500
// Moderation: Delete post link
212
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 501
tplvars.MOD_DELETE_LINK='<a href="#mod_del_'+i+'" onclick="deleteComment(\''+i+'\'); return false;">' + $lang.get('comment_btn_mod_delete') + '</a>';
1
+ − 502
359
+ − 503
// Moderation: IP address link
+ − 504
tplvars.MOD_IP_LINK = '<span id="comment_ip_' + i + '"><a href="#mod_ip_' + i + '" onclick="viewCommentIP(' + data.comment_id + ', ' + i + '); return false;">' + $lang.get('comment_btn_mod_ip_logged') + '</a></span>';
+ − 505
1
+ − 506
var tplbool = new Object();
+ − 507
+ − 508
tplbool.signature = ( data.signature == '' ) ? false : true;
+ − 509
tplbool.can_edit = ( data.auth_edit_comments && ( ( data.user_id == data.user_id && data.logged_in ) || data.auth_mod_comments ) );
+ − 510
tplbool.auth_mod = data.auth_mod_comments;
328
dc838fd61a06
Added initial avatar support. Currently rather feature complete except for admin controls for avatar.
Dan
diff
changeset
+ − 511
tplbool.user_has_avatar = ( data.user_has_avatar == '1' );
1
+ − 512
+ − 513
parser.assign_vars(tplvars);
+ − 514
parser.assign_bool(tplbool);
+ − 515
+ − 516
var div = document.createElement('div');
+ − 517
div.id = 'comment_holder_'+i;
+ − 518
+ − 519
div.innerHTML = '<input type="hidden" value="'+data.comment_id+'" /><input type="hidden" id="comment_source_'+i+'" />' + parser.run();
+ − 520
+ − 521
if ( brother )
+ − 522
{
+ − 523
brother.parentNode.insertBefore(div, brother.nextSibling);
+ − 524
}
+ − 525
else
+ − 526
{
+ − 527
// No comments in ajaxEditContainer, insert it after the header
+ − 528
var aec = document.getElementById("ajaxEditContainer");
+ − 529
aec.insertBefore(div, aec.firstChild.nextSibling.nextSibling);
+ − 530
}
+ − 531
+ − 532
document.getElementById('comment_source_'+i).value = data.comment_source;
+ − 533
212
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 534
var cnt = document.getElementById('comment_count_inner').innerHTML;
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 535
cnt = parseInt(cnt);
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 536
if ( isNaN(cnt) )
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 537
cnt = 0;
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 538
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 539
var subst = {
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 540
num_comments: cnt,
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 541
page_type: ENANO_PAGE_TYPE
1
+ − 542
}
212
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 543
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 544
var count_msg = ( cnt == 0 ) ? $lang.get('comment_msg_count_zero', subst) : ( ( cnt == 1 ) ? $lang.get('comment_msg_count_one', subst) : $lang.get('comment_msg_count_plural', subst) );
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 545
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 546
document.getElementById('comment_status').firstChild.innerHTML = count_msg;
1
+ − 547
+ − 548
if(document.getElementById('comment_approve_'+i))
+ − 549
{
212
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 550
var is_unappr = document.getElementById('comment_approve_'+i).firstChild.nodeValue;
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 551
is_unappr = ( is_unappr == $lang.get('comment_btn_mod_approve') );
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 552
if ( is_unappr )
1
+ − 553
{
212
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 554
comment_increment_unapproval();
1
+ − 555
}
+ − 556
}
+ − 557
+ − 558
}
+ − 559
212
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 560
function comment_decrement_unapproval()
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 561
{
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 562
if ( document.getElementById('comment_count_unapp_inner') )
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 563
{
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 564
var num_unapp = parseInt(document.getElementById('comment_count_unapp_inner').innerHTML);
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 565
if ( !isNaN(num_unapp) )
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 566
{
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 567
num_unapp = num_unapp - 1;
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 568
if ( num_unapp == 0 )
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 569
{
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 570
var p = document.getElementById('comment_status');
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 571
p.removeChild(p.childNodes[2]);
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 572
p.removeChild(p.childNodes[1]);
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 573
}
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 574
else
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 575
{
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 576
var count_msg = $lang.get('comment_msg_count_unapp_mod', { num_unapp: num_unapp });
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 577
document.getElementById('comment_count_unapp_inner').parentNode.innerHTML = count_msg;
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 578
}
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 579
}
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 580
}
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 581
}
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 582
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 583
function comment_increment_unapproval()
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 584
{
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 585
if ( document.getElementById('comment_count_unapp_inner') )
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 586
{
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 587
var num_unapp = parseInt(document.getElementById('comment_count_unapp_inner').innerHTML);
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 588
if ( isNaN(num_unapp) )
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 589
num_unapp = 0;
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 590
num_unapp = num_unapp + 1;
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 591
var count_msg = $lang.get('comment_msg_count_unapp_mod', { num_unapp: num_unapp });
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 592
document.getElementById('comment_count_unapp_inner').parentNode.innerHTML = count_msg;
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 593
}
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 594
else
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 595
{
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 596
var count_msg = $lang.get('comment_msg_count_unapp_mod', { num_unapp: 1 });
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 597
var status = document.getElementById('comment_status');
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 598
if ( !status.childNodes[1] )
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 599
status.appendChild(document.createTextNode(' '));
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 600
var span = document.createElement('span');
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 601
span.id = 'comment_status_unapp';
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 602
span.style.color = '#D84308';
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 603
span.innerHTML = count_msg;
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 604
status.appendChild(span);
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 605
}
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 606
}
30b857a6b811
Reworked comment system to not use HACKISH FIXES; AJAX comment framework is completely localized now
Dan
diff
changeset
+ − 607
359
+ − 608
function viewCommentIP(id, local_id)
+ − 609
{
+ − 610
// set "loading" indicator on IP button
420
+ − 611
var span = $dynano('comment_ip_' + local_id).object;
359
+ − 612
if ( !span )
+ − 613
return false;
+ − 614
span.innerHTML = '<img alt="..." src="' + ajax_load_icon + '" />';
+ − 615
+ − 616
var parms = {
+ − 617
mode: 'view_ip',
+ − 618
id: id,
+ − 619
local_id: local_id
+ − 620
}
+ − 621
ajaxComments(parms);
+ − 622
}
+ − 623
1
+ − 624
function htmlspecialchars(text)
+ − 625
{
+ − 626
text = text.replace(/</g, '<');
+ − 627
text = text.replace(/>/g, '>');
+ − 628
return text;
+ − 629
}
+ − 630
+ − 631
// Equivalent to PHP trim() function
+ − 632
function trim(text)
+ − 633
{
+ − 634
text = text.replace(/^([\s]+)/, '');
+ − 635
text = text.replace(/([\s]+)$/, '');
+ − 636
return text;
+ − 637
}
+ − 638
+ − 639
// Equivalent to PHP implode() function
+ − 640
function implode(chr, arr)
+ − 641
{
+ − 642
if ( typeof ( arr.toJSONString ) == 'function' )
+ − 643
delete(arr.toJSONString);
+ − 644
+ − 645
var ret = '';
+ − 646
var c = 0;
+ − 647
for ( var i in arr )
+ − 648
{
+ − 649
if(i=='toJSONString')continue;
+ − 650
if ( c > 0 )
+ − 651
ret += chr;
+ − 652
ret += arr[i];
+ − 653
c++;
+ − 654
}
+ − 655
return ret;
+ − 656
}
+ − 657
+ − 658
function nl2br(text)
+ − 659
{
+ − 660
var regex = new RegExp(unescape('%0A'), 'g');
+ − 661
return text.replace(regex, '<br />' + unescape('%0A'));
+ − 662
}
+ − 663