1
+ − 1
// Javascript routines for the ACL editor
+ − 2
+ − 3
var aclManagerID = 'enano_aclmanager_' + Math.floor(Math.random() * 1000000);
+ − 4
var aclPermList = false;
+ − 5
var aclDataCache = false;
+ − 6
151
824821224153
Added a new Javascript variable, aclDisableTransitionFX, that will switch off effects on message boxes and the ACL editor when set to true
Dan
diff
changeset
+ − 7
// Can be set to true by slow themes (St. Patty)
824821224153
Added a new Javascript variable, aclDisableTransitionFX, that will switch off effects on message boxes and the ACL editor when set to true
Dan
diff
changeset
+ − 8
var aclDisableTransitionFX = false;
824821224153
Added a new Javascript variable, aclDisableTransitionFX, that will switch off effects on message boxes and the ACL editor when set to true
Dan
diff
changeset
+ − 9
1
+ − 10
function ajaxOpenACLManager(page_id, namespace)
+ − 11
{
+ − 12
if(IE)
+ − 13
return true;
+ − 14
if(!page_id || !namespace)
+ − 15
{
+ − 16
var data = strToPageID(title);
+ − 17
var page_id = data[0];
+ − 18
var namespace = data[1];
+ − 19
}
+ − 20
var params = {
+ − 21
'mode' : 'listgroups',
+ − 22
'page_id' : page_id,
+ − 23
'namespace' : namespace
+ − 24
};
+ − 25
params = toJSONString(params);
+ − 26
params = ajaxEscape(params);
+ − 27
ajaxPost(stdAjaxPrefix+'&_mode=acljson', 'acl_params='+params, function() {
407
+ − 28
if ( ajax.readyState == 4 && ajax.status == 200 )
1
+ − 29
{
327
+ − 30
var response = String(ajax.responseText + '');
+ − 31
if ( response.substr(0, 1) != '{' )
+ − 32
{
+ − 33
handle_invalid_json(ajax.responseText);
+ − 34
return false;
+ − 35
}
+ − 36
try {
+ − 37
data = parseJSON(ajax.responseText);
+ − 38
} catch(e) {
+ − 39
handle_invalid_json(ajax.responseText);
+ − 40
}
1
+ − 41
__aclBuildWizardWindow();
+ − 42
groups = parseJSON(ajax.responseText);
40
+ − 43
if ( groups.mode == 'error' )
+ − 44
{
+ − 45
alert(groups.error);
+ − 46
killACLManager();
+ − 47
return false;
+ − 48
}
1
+ − 49
aclDataCache = groups;
+ − 50
__aclBuildSelector(groups);
+ − 51
}
335
67bd3121a12e
Replaced TinyMCE 2.x with 3.0 beta 3. Supports everything but IE. Also rewrote the editor interface completely from the ground up.
Dan
diff
changeset
+ − 52
}, true);
1
+ − 53
return false;
+ − 54
}
+ − 55
+ − 56
function ajaxACLSwitchToSelector()
+ − 57
{
+ − 58
params = {
+ − 59
'mode' : 'listgroups'
+ − 60
};
+ − 61
if ( aclDataCache.page_id && aclDataCache.namespace )
+ − 62
{
+ − 63
params.page_id = aclDataCache.page_id;
+ − 64
params.namespace = aclDataCache.namespace;
+ − 65
}
+ − 66
params = toJSONString(params);
+ − 67
params = ajaxEscape(params);
+ − 68
ajaxPost(stdAjaxPrefix+'&_mode=acljson', 'acl_params='+params, function() {
407
+ − 69
if ( ajax.readyState == 4 && ajax.status == 200 )
1
+ − 70
{
+ − 71
document.getElementById(aclManagerID+'_main').innerHTML = '';
+ − 72
document.getElementById(aclManagerID + '_back').style.display = 'none';
218
+ − 73
document.getElementById(aclManagerID + '_next').value = $lang.get('etc_wizard_next');
1
+ − 74
groups = parseJSON(ajax.responseText);
40
+ − 75
if ( groups.mode == 'error' )
+ − 76
{
+ − 77
alert(groups.error);
+ − 78
killACLManager();
+ − 79
return false;
+ − 80
}
1
+ − 81
aclDataCache = groups;
+ − 82
thispage = strToPageID(title);
+ − 83
groups.page_id = thispage[0];
+ − 84
groups.namespace = thispage[1];
+ − 85
__aclBuildSelector(groups);
+ − 86
}
335
67bd3121a12e
Replaced TinyMCE 2.x with 3.0 beta 3. Supports everything but IE. Also rewrote the editor interface completely from the ground up.
Dan
diff
changeset
+ − 87
}, true);
1
+ − 88
}
+ − 89
+ − 90
function __aclBuildSelector(groups)
+ − 91
{
+ − 92
thispage = strToPageID(title);
+ − 93
do_scopesel = ( thispage[0] == groups.page_id && thispage[1] == groups.namespace );
+ − 94
+ − 95
seed = Math.floor(Math.random() * 1000000);
+ − 96
+ − 97
main = document.getElementById(aclManagerID + '_main');
+ − 98
main.style.padding = '10px';
+ − 99
+ − 100
selector = document.createElement('div');
+ − 101
+ − 102
grpsel = __aclBuildGroupsHTML(groups);
+ − 103
grpsel.name = 'group_id';
+ − 104
+ − 105
span = document.createElement('div');
+ − 106
span.id = "enACL_grpbox_"+seed+"";
+ − 107
+ − 108
// Build the selector
+ − 109
grpb = document.createElement('input');
+ − 110
grpb.type = 'radio';
+ − 111
grpb.name = 'target_type';
40
+ − 112
grpb.value = '1'; // ACL_TYPE_GROUP
1
+ − 113
grpb.checked = 'checked';
+ − 114
grpb.className = seed;
+ − 115
grpb.onclick = function() { seed = this.className; document.getElementById('enACL_grpbox_'+seed).style.display = 'block'; document.getElementById('enACL_usrbox_'+seed).style.display = 'none'; };
+ − 116
lbl = document.createElement('label');
+ − 117
lbl.appendChild(grpb);
218
+ − 118
lbl.appendChild(document.createTextNode($lang.get('acl_radio_usergroup')));
1
+ − 119
lbl.style.display = 'block';
+ − 120
span.appendChild(grpsel);
+ − 121
42
45ebe475ff75
I dunno how many times I'm gonna have to fix the "problem seems to be the hex conversion" bug, but this is at least the fourth try.
Dan
diff
changeset
+ − 122
anoninfo = document.createElement('div');
45ebe475ff75
I dunno how many times I'm gonna have to fix the "problem seems to be the hex conversion" bug, but this is at least the fourth try.
Dan
diff
changeset
+ − 123
anoninfo.className = 'info-box-mini';
218
+ − 124
anoninfo.appendChild(document.createTextNode($lang.get('acl_msg_guest_howto')));
42
45ebe475ff75
I dunno how many times I'm gonna have to fix the "problem seems to be the hex conversion" bug, but this is at least the fourth try.
Dan
diff
changeset
+ − 125
span.appendChild(document.createElement('br'));
45ebe475ff75
I dunno how many times I'm gonna have to fix the "problem seems to be the hex conversion" bug, but this is at least the fourth try.
Dan
diff
changeset
+ − 126
span.appendChild(anoninfo);
45ebe475ff75
I dunno how many times I'm gonna have to fix the "problem seems to be the hex conversion" bug, but this is at least the fourth try.
Dan
diff
changeset
+ − 127
1
+ − 128
usrb = document.createElement('input');
+ − 129
usrb.type = 'radio';
+ − 130
usrb.name = 'target_type';
40
+ − 131
usrb.value = '2'; // ACL_TYPE_USER
1
+ − 132
usrb.className = seed;
+ − 133
usrb.onclick = function() { seed = this.className; document.getElementById('enACL_grpbox_'+seed).style.display = 'none'; document.getElementById('enACL_usrbox_'+seed).style.display = 'block'; };
+ − 134
lbl2 = document.createElement('label');
+ − 135
lbl2.appendChild(usrb);
218
+ − 136
lbl2.appendChild(document.createTextNode($lang.get('acl_radio_user')));
1
+ − 137
lbl2.style.display = 'block';
+ − 138
+ − 139
usrsel = document.createElement('input');
+ − 140
usrsel.type = 'text';
+ − 141
usrsel.name = 'username';
184
+ − 142
usrsel.onkeyup = function() { new AutofillUsername(this, undefined, true); };
1
+ − 143
usrsel.id = 'userfield_' + aclManagerID;
+ − 144
try {
+ − 145
usrsel.setAttribute("autocomplete","off");
+ − 146
} catch(e) {};
+ − 147
+ − 148
span2 = document.createElement('div');
+ − 149
span2.id = "enACL_usrbox_"+seed+"";
+ − 150
span2.style.display = 'none';
+ − 151
span2.appendChild(usrsel);
+ − 152
+ − 153
// Scope selector
+ − 154
if(do_scopesel)
+ − 155
{
+ − 156
scopediv1 = document.createElement('div');
+ − 157
scopediv2 = document.createElement('div');
73
0a74676a2f2f
Made the move to Loch Ness, and got some basic page grouping functionality working. TODO: fix some UI issues in Javascript ACL editor and change non-JS ACL editor to work with page groups too
Dan
diff
changeset
+ − 158
scopediv3 = document.createElement('div');
1
+ − 159
scopeRadioPage = document.createElement('input');
+ − 160
scopeRadioPage.type = 'radio';
+ − 161
scopeRadioPage.name = 'scope';
+ − 162
scopeRadioPage.value = 'page';
+ − 163
scopeRadioPage.checked = 'checked';
73
0a74676a2f2f
Made the move to Loch Ness, and got some basic page grouping functionality working. TODO: fix some UI issues in Javascript ACL editor and change non-JS ACL editor to work with page groups too
Dan
diff
changeset
+ − 164
scopeRadioPage.className = '1048576';
76
+ − 165
if ( groups.page_groups.length > 0 ) scopeRadioPage.onclick = function() { var id = 'enACL_pgsel_' + this.className; document.getElementById(id).style.display = 'none'; };
1
+ − 166
scopeRadioGlobal = document.createElement('input');
+ − 167
scopeRadioGlobal.type = 'radio';
+ − 168
scopeRadioGlobal.name = 'scope';
+ − 169
scopeRadioGlobal.value = 'global';
73
0a74676a2f2f
Made the move to Loch Ness, and got some basic page grouping functionality working. TODO: fix some UI issues in Javascript ACL editor and change non-JS ACL editor to work with page groups too
Dan
diff
changeset
+ − 170
scopeRadioGlobal.className = '1048576';
76
+ − 171
if ( groups.page_groups.length > 0 ) scopeRadioGlobal.onclick = function() { var id = 'enACL_pgsel_' + this.className; document.getElementById(id).style.display = 'none'; };
73
0a74676a2f2f
Made the move to Loch Ness, and got some basic page grouping functionality working. TODO: fix some UI issues in Javascript ACL editor and change non-JS ACL editor to work with page groups too
Dan
diff
changeset
+ − 172
scopeRadioGroup = document.createElement('input');
0a74676a2f2f
Made the move to Loch Ness, and got some basic page grouping functionality working. TODO: fix some UI issues in Javascript ACL editor and change non-JS ACL editor to work with page groups too
Dan
diff
changeset
+ − 173
scopeRadioGroup.type = 'radio';
0a74676a2f2f
Made the move to Loch Ness, and got some basic page grouping functionality working. TODO: fix some UI issues in Javascript ACL editor and change non-JS ACL editor to work with page groups too
Dan
diff
changeset
+ − 174
scopeRadioGroup.name = 'scope';
0a74676a2f2f
Made the move to Loch Ness, and got some basic page grouping functionality working. TODO: fix some UI issues in Javascript ACL editor and change non-JS ACL editor to work with page groups too
Dan
diff
changeset
+ − 175
scopeRadioGroup.value = 'group';
0a74676a2f2f
Made the move to Loch Ness, and got some basic page grouping functionality working. TODO: fix some UI issues in Javascript ACL editor and change non-JS ACL editor to work with page groups too
Dan
diff
changeset
+ − 176
scopeRadioGroup.className = '1048576';
76
+ − 177
if ( groups.page_groups.length > 0 ) scopeRadioGroup.onclick = function() { var id = 'enACL_pgsel_' + this.className; document.getElementById(id).style.display = 'block'; };
1
+ − 178
lblPage = document.createElement('label');
+ − 179
lblPage.style.display = 'block';
+ − 180
lblPage.appendChild(scopeRadioPage);
218
+ − 181
lblPage.appendChild(document.createTextNode($lang.get('acl_radio_scope_thispage')));
1
+ − 182
lblGlobal = document.createElement('label');
+ − 183
lblGlobal.style.display = 'block';
+ − 184
lblGlobal.appendChild(scopeRadioGlobal);
218
+ − 185
lblGlobal.appendChild(document.createTextNode($lang.get('acl_radio_scope_wholesite')));
73
0a74676a2f2f
Made the move to Loch Ness, and got some basic page grouping functionality working. TODO: fix some UI issues in Javascript ACL editor and change non-JS ACL editor to work with page groups too
Dan
diff
changeset
+ − 186
lblGroup = document.createElement('label');
0a74676a2f2f
Made the move to Loch Ness, and got some basic page grouping functionality working. TODO: fix some UI issues in Javascript ACL editor and change non-JS ACL editor to work with page groups too
Dan
diff
changeset
+ − 187
lblGroup.style.display = 'block';
0a74676a2f2f
Made the move to Loch Ness, and got some basic page grouping functionality working. TODO: fix some UI issues in Javascript ACL editor and change non-JS ACL editor to work with page groups too
Dan
diff
changeset
+ − 188
lblGroup.appendChild(scopeRadioGroup);
218
+ − 189
lblGroup.appendChild(document.createTextNode($lang.get('acl_radio_scope_pagegroup')));
1
+ − 190
scopediv1.appendChild(lblPage);
73
0a74676a2f2f
Made the move to Loch Ness, and got some basic page grouping functionality working. TODO: fix some UI issues in Javascript ACL editor and change non-JS ACL editor to work with page groups too
Dan
diff
changeset
+ − 191
scopediv2.appendChild(lblGroup);
0a74676a2f2f
Made the move to Loch Ness, and got some basic page grouping functionality working. TODO: fix some UI issues in Javascript ACL editor and change non-JS ACL editor to work with page groups too
Dan
diff
changeset
+ − 192
scopediv3.appendChild(lblGlobal);
1
+ − 193
+ − 194
scopedesc = document.createElement('p');
218
+ − 195
scopedesc.appendChild(document.createTextNode($lang.get('acl_lbl_scope')));
73
0a74676a2f2f
Made the move to Loch Ness, and got some basic page grouping functionality working. TODO: fix some UI issues in Javascript ACL editor and change non-JS ACL editor to work with page groups too
Dan
diff
changeset
+ − 196
0a74676a2f2f
Made the move to Loch Ness, and got some basic page grouping functionality working. TODO: fix some UI issues in Javascript ACL editor and change non-JS ACL editor to work with page groups too
Dan
diff
changeset
+ − 197
scopePGrp = document.createElement('select');
0a74676a2f2f
Made the move to Loch Ness, and got some basic page grouping functionality working. TODO: fix some UI issues in Javascript ACL editor and change non-JS ACL editor to work with page groups too
Dan
diff
changeset
+ − 198
scopePGrp.style.marginLeft = '13px';
0a74676a2f2f
Made the move to Loch Ness, and got some basic page grouping functionality working. TODO: fix some UI issues in Javascript ACL editor and change non-JS ACL editor to work with page groups too
Dan
diff
changeset
+ − 199
scopePGrp.style.display = 'none';
0a74676a2f2f
Made the move to Loch Ness, and got some basic page grouping functionality working. TODO: fix some UI issues in Javascript ACL editor and change non-JS ACL editor to work with page groups too
Dan
diff
changeset
+ − 200
scopePGrp.id = "enACL_pgsel_1048576";
0a74676a2f2f
Made the move to Loch Ness, and got some basic page grouping functionality working. TODO: fix some UI issues in Javascript ACL editor and change non-JS ACL editor to work with page groups too
Dan
diff
changeset
+ − 201
0a74676a2f2f
Made the move to Loch Ness, and got some basic page grouping functionality working. TODO: fix some UI issues in Javascript ACL editor and change non-JS ACL editor to work with page groups too
Dan
diff
changeset
+ − 202
var opt;
0a74676a2f2f
Made the move to Loch Ness, and got some basic page grouping functionality working. TODO: fix some UI issues in Javascript ACL editor and change non-JS ACL editor to work with page groups too
Dan
diff
changeset
+ − 203
for ( var i = 0; i < groups.page_groups.length; i++ )
0a74676a2f2f
Made the move to Loch Ness, and got some basic page grouping functionality working. TODO: fix some UI issues in Javascript ACL editor and change non-JS ACL editor to work with page groups too
Dan
diff
changeset
+ − 204
{
0a74676a2f2f
Made the move to Loch Ness, and got some basic page grouping functionality working. TODO: fix some UI issues in Javascript ACL editor and change non-JS ACL editor to work with page groups too
Dan
diff
changeset
+ − 205
opt = document.createElement('option');
0a74676a2f2f
Made the move to Loch Ness, and got some basic page grouping functionality working. TODO: fix some UI issues in Javascript ACL editor and change non-JS ACL editor to work with page groups too
Dan
diff
changeset
+ − 206
opt.value = groups.page_groups[i].id;
0a74676a2f2f
Made the move to Loch Ness, and got some basic page grouping functionality working. TODO: fix some UI issues in Javascript ACL editor and change non-JS ACL editor to work with page groups too
Dan
diff
changeset
+ − 207
opt.appendChild(document.createTextNode(groups.page_groups[i].name));
0a74676a2f2f
Made the move to Loch Ness, and got some basic page grouping functionality working. TODO: fix some UI issues in Javascript ACL editor and change non-JS ACL editor to work with page groups too
Dan
diff
changeset
+ − 208
scopePGrp.appendChild(opt);
0a74676a2f2f
Made the move to Loch Ness, and got some basic page grouping functionality working. TODO: fix some UI issues in Javascript ACL editor and change non-JS ACL editor to work with page groups too
Dan
diff
changeset
+ − 209
}
0a74676a2f2f
Made the move to Loch Ness, and got some basic page grouping functionality working. TODO: fix some UI issues in Javascript ACL editor and change non-JS ACL editor to work with page groups too
Dan
diff
changeset
+ − 210
0a74676a2f2f
Made the move to Loch Ness, and got some basic page grouping functionality working. TODO: fix some UI issues in Javascript ACL editor and change non-JS ACL editor to work with page groups too
Dan
diff
changeset
+ − 211
scopediv2.appendChild(scopePGrp);
0a74676a2f2f
Made the move to Loch Ness, and got some basic page grouping functionality working. TODO: fix some UI issues in Javascript ACL editor and change non-JS ACL editor to work with page groups too
Dan
diff
changeset
+ − 212
1
+ − 213
}
+ − 214
+ − 215
// Styles
+ − 216
span.style.marginLeft = '13px';
+ − 217
span.style.padding = '5px 0';
+ − 218
span2.style.marginLeft = '13px';
+ − 219
span2.style.padding = '5px 0';
+ − 220
+ − 221
selector.appendChild(lbl);
+ − 222
selector.appendChild(span);
+ − 223
+ − 224
selector.appendChild(lbl2);
+ − 225
selector.appendChild(span2);
+ − 226
+ − 227
container = document.createElement('div');
+ − 228
container.style.margin = 'auto';
+ − 229
container.style.width = '360px';
73
0a74676a2f2f
Made the move to Loch Ness, and got some basic page grouping functionality working. TODO: fix some UI issues in Javascript ACL editor and change non-JS ACL editor to work with page groups too
Dan
diff
changeset
+ − 230
container.style.paddingTop = '50px';
1
+ − 231
+ − 232
head = document.createElement('h2');
218
+ − 233
head.appendChild(document.createTextNode($lang.get('acl_lbl_welcome_title')));
1
+ − 234
+ − 235
desc = document.createElement('p');
218
+ − 236
desc.appendChild(document.createTextNode($lang.get('acl_lbl_welcome_body')));
1
+ − 237
+ − 238
container.appendChild(head);
+ − 239
container.appendChild(desc);
+ − 240
container.appendChild(selector);
+ − 241
+ − 242
if(do_scopesel)
+ − 243
{
+ − 244
container.appendChild(scopedesc);
+ − 245
container.appendChild(scopediv1);
76
+ − 246
if ( groups.page_groups.length > 0 )
+ − 247
{
+ − 248
container.appendChild(scopediv2);
+ − 249
}
73
0a74676a2f2f
Made the move to Loch Ness, and got some basic page grouping functionality working. TODO: fix some UI issues in Javascript ACL editor and change non-JS ACL editor to work with page groups too
Dan
diff
changeset
+ − 250
container.appendChild(scopediv3);
1
+ − 251
}
+ − 252
+ − 253
main.appendChild(container);
+ − 254
+ − 255
var mode = document.createElement('input');
+ − 256
mode.name = 'mode';
+ − 257
mode.type = 'hidden';
+ − 258
mode.id = aclManagerID + '_mode';
+ − 259
mode.value = 'seltarget';
+ − 260
+ − 261
var theform = document.getElementById(aclManagerID + '_formobj_id');
+ − 262
if ( !theform.mode )
+ − 263
{
+ − 264
theform.appendChild(mode);
+ − 265
}
+ − 266
else
+ − 267
{
+ − 268
theform.removeChild(theform.mode);
+ − 269
theform.appendChild(mode);
+ − 270
}
+ − 271
}
+ − 272
+ − 273
var aclDebugWin = false;
+ − 274
+ − 275
function aclDebug(text)
+ − 276
{
+ − 277
if(!aclDebugWin)
+ − 278
aclDebugWin = pseudoWindowOpen("data:text/html;plain,<html><head><title>debug win</title></head><body><h1>Debug window</h1></body></html>", "aclDebugWin");
+ − 279
setTimeout(function() {
+ − 280
aclDebugWin.pre = aclDebugWin.document.createElement('pre');
+ − 281
aclDebugWin.pre.appendChild(aclDebugWin.document.createTextNode(text));
+ − 282
aclDebugWin.b = aclDebugWin.document.getElementsByTagName('body')[0];
+ − 283
aclDebugWin.b.appendChild(aclDebugWin.pre);}, 1000);
+ − 284
}
+ − 285
+ − 286
var pseudoWindows = new Object();
+ − 287
+ − 288
function pseudoWindowOpen(url, id)
+ − 289
{
+ − 290
if(pseudoWindows[id])
+ − 291
{
+ − 292
document.getElementById('pseudowin_ifr_'+id).src = url;
+ − 293
}
+ − 294
else
+ − 295
{
+ − 296
win = document.createElement('iframe');
+ − 297
win.style.position='fixed';
+ − 298
win.style.width = '640px';
+ − 299
win.style.height = '480px';
+ − 300
win.style.top = '0px';
+ − 301
win.style.left = '0px';
+ − 302
win.style.zIndex = getHighestZ() + 1;
+ − 303
win.style.backgroundColor = '#FFFFFF';
+ − 304
win.name = 'pseudo_ifr_'+id;
+ − 305
win.id = 'pseudowindow_ifr_'+id;
+ − 306
win.src = url;
+ − 307
body = document.getElementsByTagName('body')[0];
+ − 308
body.appendChild(win);
+ − 309
}
+ − 310
win_obj = eval("( pseudo_ifr_"+id+" )");
+ − 311
return win_obj;
+ − 312
}
+ − 313
+ − 314
function __aclJSONSubmitAjaxHandler(params)
+ − 315
{
+ − 316
params = toJSONString(params);
+ − 317
params = ajaxEscape(params);
+ − 318
ajaxPost(stdAjaxPrefix+'&_mode=acljson', 'acl_params='+params, function() {
407
+ − 319
if ( ajax.readyState == 4 && ajax.status == 200 )
1
+ − 320
{
327
+ − 321
var response = String(ajax.responseText + '');
+ − 322
if ( response.substr(0, 1) != '{' )
+ − 323
{
+ − 324
handle_invalid_json(ajax.responseText);
+ − 325
return false;
+ − 326
}
1
+ − 327
try {
+ − 328
data = parseJSON(ajax.responseText);
+ − 329
} catch(e) {
327
+ − 330
handle_invalid_json(ajax.responseText);
1
+ − 331
}
+ − 332
aclDataCache = data;
+ − 333
switch(data.mode)
+ − 334
{
+ − 335
case 'seltarget':
+ − 336
+ − 337
// Build the ACL edit form
+ − 338
// try {
218
+ − 339
+ − 340
var act_desc = ( data.type == 'new' ) ? $lang.get('acl_lbl_editwin_title_create') : $lang.get('acl_lbl_editwin_title_edit');
+ − 341
var target_type_t = ( data.target_type == 1 ) ? $lang.get('acl_target_type_group') : $lang.get('acl_target_type_user');
+ − 342
var target_name_t = data.target_name;
+ − 343
var scope_type = ( data.page_id == false && data.namespace == false ) ? $lang.get('acl_scope_type_wholesite') : ( data.namespace == '__PageGroup' ) ? $lang.get('acl_scope_type_pagegroup') : $lang.get('acl_scope_type_thispage');
+ − 344
+ − 345
html = '<h2>'+act_desc+'</h2>';
+ − 346
html += '<p>' + $lang.get('acl_lbl_editwin_body', { target_type: target_type_t, target: target_name_t, scope_type: scope_type }) + '</p>';
1
+ − 347
parser = new templateParser(data.template.acl_field_begin);
+ − 348
html += parser.run();
+ − 349
+ − 350
cls = 'row2';
+ − 351
for(var i in data.acl_types)
+ − 352
{
+ − 353
if(typeof(data.acl_types[i]) == 'number')
+ − 354
{
+ − 355
cls = ( cls == 'row1' ) ? 'row2' : 'row1';
+ − 356
p = new templateParser(data.template.acl_field_item);
+ − 357
vars = new Object();
218
+ − 358
if ( data.acl_descs[i].match(/^([a-z0-9_]+)$/) )
+ − 359
{
+ − 360
vars['FIELD_DESC'] = $lang.get(data.acl_descs[i]);
+ − 361
}
+ − 362
else
+ − 363
{
+ − 364
vars['FIELD_DESC'] = data.acl_descs[i];
+ − 365
}
345
4ccdfeee9a11
WiP commit for admin panel localization. All modules up to Admin:UserManager (working down the list) are localized except Admin:ThemeManager, which is due for a rewrite
Dan
diff
changeset
+ − 366
vars['FIELD_INHERIT_CHECKED'] = '';
1
+ − 367
vars['FIELD_DENY_CHECKED'] = '';
+ − 368
vars['FIELD_DISALLOW_CHECKED'] = '';
+ − 369
vars['FIELD_WIKIMODE_CHECKED'] = '';
+ − 370
vars['FIELD_ALLOW_CHECKED'] = '';
+ − 371
vars['FIELD_NAME'] = i;
345
4ccdfeee9a11
WiP commit for admin panel localization. All modules up to Admin:UserManager (working down the list) are localized except Admin:ThemeManager, which is due for a rewrite
Dan
diff
changeset
+ − 372
if ( !data.current_perms[i] )
4ccdfeee9a11
WiP commit for admin panel localization. All modules up to Admin:UserManager (working down the list) are localized except Admin:ThemeManager, which is due for a rewrite
Dan
diff
changeset
+ − 373
{
4ccdfeee9a11
WiP commit for admin panel localization. All modules up to Admin:UserManager (working down the list) are localized except Admin:ThemeManager, which is due for a rewrite
Dan
diff
changeset
+ − 374
data.current_perms[i] = 'i';
4ccdfeee9a11
WiP commit for admin panel localization. All modules up to Admin:UserManager (working down the list) are localized except Admin:ThemeManager, which is due for a rewrite
Dan
diff
changeset
+ − 375
}
1
+ − 376
switch(data.current_perms[i])
+ − 377
{
345
4ccdfeee9a11
WiP commit for admin panel localization. All modules up to Admin:UserManager (working down the list) are localized except Admin:ThemeManager, which is due for a rewrite
Dan
diff
changeset
+ − 378
case 'i':
4ccdfeee9a11
WiP commit for admin panel localization. All modules up to Admin:UserManager (working down the list) are localized except Admin:ThemeManager, which is due for a rewrite
Dan
diff
changeset
+ − 379
default:
4ccdfeee9a11
WiP commit for admin panel localization. All modules up to Admin:UserManager (working down the list) are localized except Admin:ThemeManager, which is due for a rewrite
Dan
diff
changeset
+ − 380
vars['FIELD_INHERIT_CHECKED'] = 'checked="checked"';
4ccdfeee9a11
WiP commit for admin panel localization. All modules up to Admin:UserManager (working down the list) are localized except Admin:ThemeManager, which is due for a rewrite
Dan
diff
changeset
+ − 381
break;
1
+ − 382
case 1:
+ − 383
vars['FIELD_DENY_CHECKED'] = 'checked="checked"';
+ − 384
break;
+ − 385
case 2:
+ − 386
vars['FIELD_DISALLOW_CHECKED'] = 'checked="checked"';
+ − 387
break;
+ − 388
case 3:
+ − 389
vars['FIELD_WIKIMODE_CHECKED'] = 'checked="checked"';
+ − 390
break;
+ − 391
case 4:
+ − 392
vars['FIELD_ALLOW_CHECKED'] = 'checked="checked"';
+ − 393
break;
+ − 394
}
+ − 395
vars['ROW_CLASS'] = cls;
+ − 396
p.assign_vars(vars);
+ − 397
html += p.run();
+ − 398
}
+ − 399
}
+ − 400
+ − 401
var parser = new templateParser(data.template.acl_field_end);
+ − 402
html += parser.run();
+ − 403
+ − 404
if(data.type == 'edit')
218
+ − 405
html += '<p id="'+aclManagerID+'_deletelnk" style="text-align: right;"><a href="#delete_acl_rule" onclick="if(confirm(\'' + $lang.get('acl_msg_deleterule_confirm') + '\')) __aclDeleteRule(); return false;" style="color: red;">' + $lang.get('acl_lbl_deleterule') + '</a></p>';
1
+ − 406
+ − 407
var main = document.getElementById(aclManagerID + '_main');
+ − 408
main.innerHTML = html;
+ − 409
+ − 410
var form = document.getElementById(aclManagerID + '_formobj_id');
+ − 411
+ − 412
var modeobj = form_fetch_field(form, 'mode');
+ − 413
if ( modeobj )
+ − 414
modeobj.value = 'save_' + data.type;
+ − 415
else
+ − 416
alert('modeobj is invalid: '+modeobj);
+ − 417
+ − 418
aclPermList = array_keys(data.acl_types);
+ − 419
+ − 420
document.getElementById(aclManagerID + '_back').style.display = 'inline';
218
+ − 421
document.getElementById(aclManagerID + '_next').value = $lang.get('etc_save_changes');
1
+ − 422
+ − 423
// } catch(e) { alert(e); aclDebug(ajax.responseText); }
+ − 424
+ − 425
break;
+ − 426
case 'success':
+ − 427
var note = document.createElement('div');
+ − 428
note.className = 'info-box';
+ − 429
note.style.marginLeft = '0';
+ − 430
var b = document.createElement('b');
218
+ − 431
b.appendChild(document.createTextNode($lang.get('acl_lbl_save_success_title')));
1
+ − 432
note.appendChild(b);
+ − 433
note.appendChild(document.createElement('br'));
218
+ − 434
note.appendChild(document.createTextNode($lang.get('acl_lbl_save_success_body', { target_name: data.target_name })));
1
+ − 435
note.appendChild(document.createElement('br'));
472
bc4b58034f4d
Implemented password reset (albeit hackishly) into the new login API; added dummy window.console object to hopefully reduce errors when Firebug isn't around; fixed the longstanding ACL dismiss/close button bug; fixed a couple undefined variables in mailer; fixed PHP error on attempted opening of /dev/(u)random in rijndael.php; clarified documentation for PageProcessor::update_page(); fixed some logic problems in theme ACL code; disabled CAPTCHA debug
Dan
diff
changeset
+ − 436
bc4b58034f4d
Implemented password reset (albeit hackishly) into the new login API; added dummy window.console object to hopefully reduce errors when Firebug isn't around; fixed the longstanding ACL dismiss/close button bug; fixed a couple undefined variables in mailer; fixed PHP error on attempted opening of /dev/(u)random in rijndael.php; clarified documentation for PageProcessor::update_page(); fixed some logic problems in theme ACL code; disabled CAPTCHA debug
Dan
diff
changeset
+ − 437
/*
1
+ − 438
var a = document.createElement('a');
335
67bd3121a12e
Replaced TinyMCE 2.x with 3.0 beta 3. Supports everything but IE. Also rewrote the editor interface completely from the ground up.
Dan
diff
changeset
+ − 439
a.href = '#';
419
b8b4e38825db
Unsuccessful attempt at fixing "dismiss"/"close manager" buttons in ACL editor; non-breaking change to template API to allow plugins to add "normal" sidebar widgets in addition to the special "raw" block type, specified as the third parameter to $template->sidebar_widget(). Defaults to false, which is old behavior; new behavior (enabled by passing TRUE as the 3rd param) means that the content of the block is primarily block-level links.
Dan
diff
changeset
+ − 440
a.id = aclManagerID + '_btn_dismiss';
218
+ − 441
a.appendChild(document.createTextNode('[ ' + $lang.get('acl_btn_success_dismiss') + ' :'));
1
+ − 442
note.appendChild(a);
+ − 443
var a2 = document.createElement('a');
335
67bd3121a12e
Replaced TinyMCE 2.x with 3.0 beta 3. Supports everything but IE. Also rewrote the editor interface completely from the ground up.
Dan
diff
changeset
+ − 444
a2.href = '#';
419
b8b4e38825db
Unsuccessful attempt at fixing "dismiss"/"close manager" buttons in ACL editor; non-breaking change to template API to allow plugins to add "normal" sidebar widgets in addition to the special "raw" block type, specified as the third parameter to $template->sidebar_widget(). Defaults to false, which is old behavior; new behavior (enabled by passing TRUE as the 3rd param) means that the content of the block is primarily block-level links.
Dan
diff
changeset
+ − 445
a.id = aclManagerID + '_btn_close';
218
+ − 446
a2.appendChild(document.createTextNode(': ' + $lang.get('acl_btn_success_close') + ' ]'));
1
+ − 447
note.appendChild(a2);
472
bc4b58034f4d
Implemented password reset (albeit hackishly) into the new login API; added dummy window.console object to hopefully reduce errors when Firebug isn't around; fixed the longstanding ACL dismiss/close button bug; fixed a couple undefined variables in mailer; fixed PHP error on attempted opening of /dev/(u)random in rijndael.php; clarified documentation for PageProcessor::update_page(); fixed some logic problems in theme ACL code; disabled CAPTCHA debug
Dan
diff
changeset
+ − 448
*/
bc4b58034f4d
Implemented password reset (albeit hackishly) into the new login API; added dummy window.console object to hopefully reduce errors when Firebug isn't around; fixed the longstanding ACL dismiss/close button bug; fixed a couple undefined variables in mailer; fixed PHP error on attempted opening of /dev/(u)random in rijndael.php; clarified documentation for PageProcessor::update_page(); fixed some logic problems in theme ACL code; disabled CAPTCHA debug
Dan
diff
changeset
+ − 449
bc4b58034f4d
Implemented password reset (albeit hackishly) into the new login API; added dummy window.console object to hopefully reduce errors when Firebug isn't around; fixed the longstanding ACL dismiss/close button bug; fixed a couple undefined variables in mailer; fixed PHP error on attempted opening of /dev/(u)random in rijndael.php; clarified documentation for PageProcessor::update_page(); fixed some logic problems in theme ACL code; disabled CAPTCHA debug
Dan
diff
changeset
+ − 450
var a_dismiss = document.createElement('a');
bc4b58034f4d
Implemented password reset (albeit hackishly) into the new login API; added dummy window.console object to hopefully reduce errors when Firebug isn't around; fixed the longstanding ACL dismiss/close button bug; fixed a couple undefined variables in mailer; fixed PHP error on attempted opening of /dev/(u)random in rijndael.php; clarified documentation for PageProcessor::update_page(); fixed some logic problems in theme ACL code; disabled CAPTCHA debug
Dan
diff
changeset
+ − 451
a_dismiss.href = '#';
bc4b58034f4d
Implemented password reset (albeit hackishly) into the new login API; added dummy window.console object to hopefully reduce errors when Firebug isn't around; fixed the longstanding ACL dismiss/close button bug; fixed a couple undefined variables in mailer; fixed PHP error on attempted opening of /dev/(u)random in rijndael.php; clarified documentation for PageProcessor::update_page(); fixed some logic problems in theme ACL code; disabled CAPTCHA debug
Dan
diff
changeset
+ − 452
a_dismiss.appendChild(document.createTextNode('[ ' + $lang.get('acl_btn_success_dismiss') + ' :'));
bc4b58034f4d
Implemented password reset (albeit hackishly) into the new login API; added dummy window.console object to hopefully reduce errors when Firebug isn't around; fixed the longstanding ACL dismiss/close button bug; fixed a couple undefined variables in mailer; fixed PHP error on attempted opening of /dev/(u)random in rijndael.php; clarified documentation for PageProcessor::update_page(); fixed some logic problems in theme ACL code; disabled CAPTCHA debug
Dan
diff
changeset
+ − 453
note.appendChild(a_dismiss);
42
45ebe475ff75
I dunno how many times I'm gonna have to fix the "problem seems to be the hex conversion" bug, but this is at least the fourth try.
Dan
diff
changeset
+ − 454
472
bc4b58034f4d
Implemented password reset (albeit hackishly) into the new login API; added dummy window.console object to hopefully reduce errors when Firebug isn't around; fixed the longstanding ACL dismiss/close button bug; fixed a couple undefined variables in mailer; fixed PHP error on attempted opening of /dev/(u)random in rijndael.php; clarified documentation for PageProcessor::update_page(); fixed some logic problems in theme ACL code; disabled CAPTCHA debug
Dan
diff
changeset
+ − 455
var a_close = document.createElement('a');
bc4b58034f4d
Implemented password reset (albeit hackishly) into the new login API; added dummy window.console object to hopefully reduce errors when Firebug isn't around; fixed the longstanding ACL dismiss/close button bug; fixed a couple undefined variables in mailer; fixed PHP error on attempted opening of /dev/(u)random in rijndael.php; clarified documentation for PageProcessor::update_page(); fixed some logic problems in theme ACL code; disabled CAPTCHA debug
Dan
diff
changeset
+ − 456
a_close.href = '#';
bc4b58034f4d
Implemented password reset (albeit hackishly) into the new login API; added dummy window.console object to hopefully reduce errors when Firebug isn't around; fixed the longstanding ACL dismiss/close button bug; fixed a couple undefined variables in mailer; fixed PHP error on attempted opening of /dev/(u)random in rijndael.php; clarified documentation for PageProcessor::update_page(); fixed some logic problems in theme ACL code; disabled CAPTCHA debug
Dan
diff
changeset
+ − 457
a_close.appendChild(document.createTextNode(': ' + $lang.get('acl_btn_success_close') + ' ]'));
bc4b58034f4d
Implemented password reset (albeit hackishly) into the new login API; added dummy window.console object to hopefully reduce errors when Firebug isn't around; fixed the longstanding ACL dismiss/close button bug; fixed a couple undefined variables in mailer; fixed PHP error on attempted opening of /dev/(u)random in rijndael.php; clarified documentation for PageProcessor::update_page(); fixed some logic problems in theme ACL code; disabled CAPTCHA debug
Dan
diff
changeset
+ − 458
note.appendChild(a_close);
bc4b58034f4d
Implemented password reset (albeit hackishly) into the new login API; added dummy window.console object to hopefully reduce errors when Firebug isn't around; fixed the longstanding ACL dismiss/close button bug; fixed a couple undefined variables in mailer; fixed PHP error on attempted opening of /dev/(u)random in rijndael.php; clarified documentation for PageProcessor::update_page(); fixed some logic problems in theme ACL code; disabled CAPTCHA debug
Dan
diff
changeset
+ − 459
bc4b58034f4d
Implemented password reset (albeit hackishly) into the new login API; added dummy window.console object to hopefully reduce errors when Firebug isn't around; fixed the longstanding ACL dismiss/close button bug; fixed a couple undefined variables in mailer; fixed PHP error on attempted opening of /dev/(u)random in rijndael.php; clarified documentation for PageProcessor::update_page(); fixed some logic problems in theme ACL code; disabled CAPTCHA debug
Dan
diff
changeset
+ − 460
document.getElementById(aclManagerID + '_main').insertBefore(note, document.getElementById(aclManagerID + '_main').firstChild);
419
b8b4e38825db
Unsuccessful attempt at fixing "dismiss"/"close manager" buttons in ACL editor; non-breaking change to template API to allow plugins to add "normal" sidebar widgets in addition to the special "raw" block type, specified as the third parameter to $template->sidebar_widget(). Defaults to false, which is old behavior; new behavior (enabled by passing TRUE as the 3rd param) means that the content of the block is primarily block-level links.
Dan
diff
changeset
+ − 461
472
bc4b58034f4d
Implemented password reset (albeit hackishly) into the new login API; added dummy window.console object to hopefully reduce errors when Firebug isn't around; fixed the longstanding ACL dismiss/close button bug; fixed a couple undefined variables in mailer; fixed PHP error on attempted opening of /dev/(u)random in rijndael.php; clarified documentation for PageProcessor::update_page(); fixed some logic problems in theme ACL code; disabled CAPTCHA debug
Dan
diff
changeset
+ − 462
a_dismiss.setAttribute('onclick', 'var parent = this.parentNode.parentNode; parent.removeChild(this.parentNode); return false;');
bc4b58034f4d
Implemented password reset (albeit hackishly) into the new login API; added dummy window.console object to hopefully reduce errors when Firebug isn't around; fixed the longstanding ACL dismiss/close button bug; fixed a couple undefined variables in mailer; fixed PHP error on attempted opening of /dev/(u)random in rijndael.php; clarified documentation for PageProcessor::update_page(); fixed some logic problems in theme ACL code; disabled CAPTCHA debug
Dan
diff
changeset
+ − 463
a_close.setAttribute('onclick', 'killACLManager(); return false;');
419
b8b4e38825db
Unsuccessful attempt at fixing "dismiss"/"close manager" buttons in ACL editor; non-breaking change to template API to allow plugins to add "normal" sidebar widgets in addition to the special "raw" block type, specified as the third parameter to $template->sidebar_widget(). Defaults to false, which is old behavior; new behavior (enabled by passing TRUE as the 3rd param) means that the content of the block is primarily block-level links.
Dan
diff
changeset
+ − 464
472
bc4b58034f4d
Implemented password reset (albeit hackishly) into the new login API; added dummy window.console object to hopefully reduce errors when Firebug isn't around; fixed the longstanding ACL dismiss/close button bug; fixed a couple undefined variables in mailer; fixed PHP error on attempted opening of /dev/(u)random in rijndael.php; clarified documentation for PageProcessor::update_page(); fixed some logic problems in theme ACL code; disabled CAPTCHA debug
Dan
diff
changeset
+ − 465
if ( !document.getElementById(aclManagerID+'_deletelnk') )
bc4b58034f4d
Implemented password reset (albeit hackishly) into the new login API; added dummy window.console object to hopefully reduce errors when Firebug isn't around; fixed the longstanding ACL dismiss/close button bug; fixed a couple undefined variables in mailer; fixed PHP error on attempted opening of /dev/(u)random in rijndael.php; clarified documentation for PageProcessor::update_page(); fixed some logic problems in theme ACL code; disabled CAPTCHA debug
Dan
diff
changeset
+ − 466
document.getElementById(aclManagerID + '_main').innerHTML += '<p id="'+aclManagerID+'_deletelnk" style="text-align: right;"><a href="#delete_acl_rule" onclick="if(confirm(\'' + $lang.get('acl_msg_deleterule_confirm') + '\')) __aclDeleteRule(); return false;" style="color: red;">' + $lang.get('acl_lbl_deleterule') + '</a></p>';
bc4b58034f4d
Implemented password reset (albeit hackishly) into the new login API; added dummy window.console object to hopefully reduce errors when Firebug isn't around; fixed the longstanding ACL dismiss/close button bug; fixed a couple undefined variables in mailer; fixed PHP error on attempted opening of /dev/(u)random in rijndael.php; clarified documentation for PageProcessor::update_page(); fixed some logic problems in theme ACL code; disabled CAPTCHA debug
Dan
diff
changeset
+ − 467
bc4b58034f4d
Implemented password reset (albeit hackishly) into the new login API; added dummy window.console object to hopefully reduce errors when Firebug isn't around; fixed the longstanding ACL dismiss/close button bug; fixed a couple undefined variables in mailer; fixed PHP error on attempted opening of /dev/(u)random in rijndael.php; clarified documentation for PageProcessor::update_page(); fixed some logic problems in theme ACL code; disabled CAPTCHA debug
Dan
diff
changeset
+ − 468
document.getElementById(aclManagerID+'_main').scrollTop = 0;
bc4b58034f4d
Implemented password reset (albeit hackishly) into the new login API; added dummy window.console object to hopefully reduce errors when Firebug isn't around; fixed the longstanding ACL dismiss/close button bug; fixed a couple undefined variables in mailer; fixed PHP error on attempted opening of /dev/(u)random in rijndael.php; clarified documentation for PageProcessor::update_page(); fixed some logic problems in theme ACL code; disabled CAPTCHA debug
Dan
diff
changeset
+ − 469
42
45ebe475ff75
I dunno how many times I'm gonna have to fix the "problem seems to be the hex conversion" bug, but this is at least the fourth try.
Dan
diff
changeset
+ − 470
aclDataCache.mode = 'save_edit';
1
+ − 471
break;
+ − 472
case 'delete':
+ − 473
+ − 474
params = {
+ − 475
'mode' : 'listgroups'
+ − 476
};
+ − 477
params = toJSONString(params);
+ − 478
params = ajaxEscape(params);
+ − 479
ajaxPost(stdAjaxPrefix+'&_mode=acljson', 'acl_params='+params, function() {
407
+ − 480
if ( ajax.readyState == 4 && ajax.status == 200 )
1
+ − 481
{
+ − 482
document.getElementById(aclManagerID+'_main').innerHTML = '';
+ − 483
document.getElementById(aclManagerID + '_back').style.display = 'none';
218
+ − 484
document.getElementById(aclManagerID + '_next').value = $lang.get('etc_wizard_next');
1
+ − 485
var thispage = strToPageID(title);
+ − 486
groups.page_id = thispage[0];
+ − 487
groups.namespace = thispage[1];
+ − 488
__aclBuildSelector(groups);
+ − 489
+ − 490
note = document.createElement('div');
+ − 491
note.className = 'info-box';
+ − 492
note.style.marginLeft = '0';
42
45ebe475ff75
I dunno how many times I'm gonna have to fix the "problem seems to be the hex conversion" bug, but this is at least the fourth try.
Dan
diff
changeset
+ − 493
note.style.position = 'absolute';
45ebe475ff75
I dunno how many times I'm gonna have to fix the "problem seems to be the hex conversion" bug, but this is at least the fourth try.
Dan
diff
changeset
+ − 494
note.style.width = '558px';
45ebe475ff75
I dunno how many times I'm gonna have to fix the "problem seems to be the hex conversion" bug, but this is at least the fourth try.
Dan
diff
changeset
+ − 495
note.id = 'aclSuccessNotice_' + Math.floor(Math.random() * 100000);
1
+ − 496
b = document.createElement('b');
218
+ − 497
b.appendChild(document.createTextNode($lang.get('acl_lbl_delete_success_title')));
1
+ − 498
note.appendChild(b);
+ − 499
note.appendChild(document.createElement('br'));
336
+ − 500
note.appendChild(document.createTextNode($lang.get('acl_lbl_delete_success_body', { target_name: aclDataCache.target_name })));
1
+ − 501
note.appendChild(document.createElement('br'));
+ − 502
a = document.createElement('a');
+ − 503
a.href = '#';
42
45ebe475ff75
I dunno how many times I'm gonna have to fix the "problem seems to be the hex conversion" bug, but this is at least the fourth try.
Dan
diff
changeset
+ − 504
a.onclick = function() { opacity(this.parentNode.id, 100, 0, 1000); setTimeout('var div = document.getElementById("' + this.parentNode.id + '"); div.parentNode.removeChild(div);', 1100); return false; };
218
+ − 505
a.appendChild(document.createTextNode('[ ' + $lang.get('acl_btn_success_dismiss') + ' :'));
1
+ − 506
note.appendChild(a);
+ − 507
a = document.createElement('a');
+ − 508
a.href = '#';
+ − 509
a.onclick = function() { killACLManager(); return false; };
218
+ − 510
a.appendChild(document.createTextNode(': ' + $lang.get('acl_btn_success_close') + ' ]'));
1
+ − 511
note.appendChild(a);
+ − 512
document.getElementById(aclManagerID + '_main').insertBefore(note, document.getElementById(aclManagerID + '_main').firstChild);
+ − 513
//fadeInfoBoxes();
+ − 514
+ − 515
}
335
67bd3121a12e
Replaced TinyMCE 2.x with 3.0 beta 3. Supports everything but IE. Also rewrote the editor interface completely from the ground up.
Dan
diff
changeset
+ − 516
}, true);
1
+ − 517
+ − 518
break;
+ − 519
case 'error':
+ − 520
alert("Server side processing error:\n"+data.error);
+ − 521
break;
+ − 522
case 'debug':
+ − 523
aclDebug(data.text);
+ − 524
break;
+ − 525
default:
327
+ − 526
handle_invalid_json(ajax.responseText);
1
+ − 527
break;
+ − 528
}
+ − 529
}
335
67bd3121a12e
Replaced TinyMCE 2.x with 3.0 beta 3. Supports everything but IE. Also rewrote the editor interface completely from the ground up.
Dan
diff
changeset
+ − 530
}, true);
1
+ − 531
}
+ − 532
+ − 533
function __aclBuildGroupsHTML(groups)
+ − 534
{
+ − 535
groups = groups.groups;
+ − 536
select = document.createElement('select');
+ − 537
for(var i in groups)
+ − 538
{
+ − 539
if(typeof(groups[i]['name']) == 'string' && i != 'toJSONString')
+ − 540
{
+ − 541
o = document.createElement('option');
+ − 542
o.value = groups[i]['id'];
+ − 543
t = document.createTextNode(groups[i]['name']);
+ − 544
o.appendChild(t);
+ − 545
select.appendChild(o);
+ − 546
}
+ − 547
}
+ − 548
return select;
+ − 549
}
+ − 550
+ − 551
function __aclBuildWizardWindow()
+ − 552
{
151
824821224153
Added a new Javascript variable, aclDisableTransitionFX, that will switch off effects on message boxes and the ACL editor when set to true
Dan
diff
changeset
+ − 553
darken(aclDisableTransitionFX);
1
+ − 554
box = document.createElement('div');
+ − 555
box.style.width = '640px'
+ − 556
box.style.height = '440px';
+ − 557
box.style.position = 'fixed';
+ − 558
width = getWidth();
+ − 559
height = getHeight();
+ − 560
box.style.left = ( width / 2 - 320 ) + 'px';
+ − 561
box.style.top = ( height / 2 - 250 ) + 'px';
+ − 562
box.style.backgroundColor = 'white';
+ − 563
box.style.zIndex = getHighestZ() + 1;
+ − 564
box.id = aclManagerID;
+ − 565
box.style.opacity = '0';
+ − 566
box.style.filter = 'alpha(opacity=0)';
+ − 567
box.style.display = 'none';
+ − 568
+ − 569
mainwin = document.createElement('div');
+ − 570
mainwin.id = aclManagerID + '_main';
+ − 571
mainwin.style.clip = 'rect(0px,640px,440px,0px)';
+ − 572
mainwin.style.overflow = 'auto';
+ − 573
mainwin.style.width = '620px';
+ − 574
mainwin.style.height = '420px';
+ − 575
+ − 576
panel = document.createElement('div');
+ − 577
panel.style.width = '620px';
+ − 578
panel.style.padding = '10px';
+ − 579
panel.style.lineHeight = '40px';
+ − 580
panel.style.textAlign = 'right';
+ − 581
panel.style.position = 'fixed';
+ − 582
panel.style.left = ( width / 2 - 320 ) + 'px';
+ − 583
panel.style.top = ( height / 2 + 190 ) + 'px';
+ − 584
panel.style.backgroundColor = '#D0D0D0';
+ − 585
panel.style.opacity = '0';
+ − 586
panel.style.filter = 'alpha(opacity=0)';
+ − 587
panel.id = aclManagerID + '_panel';
+ − 588
+ − 589
form = document.createElement('form');
+ − 590
form.method = 'post';
+ − 591
form.action = 'javascript:void(0)';
+ − 592
form.onsubmit = function() { if(this.username && !submitAuthorized) return false; __aclSubmitManager(this); return false; };
+ − 593
form.name = aclManagerID + '_formobj';
+ − 594
form.id = aclManagerID + '_formobj_id';
+ − 595
+ − 596
back = document.createElement('input');
+ − 597
back.type = 'button';
218
+ − 598
back.value = $lang.get('etc_wizard_back');
1
+ − 599
back.style.fontWeight = 'normal';
+ − 600
back.onclick = function() { ajaxACLSwitchToSelector(); return false; };
+ − 601
back.style.display = 'none';
+ − 602
back.id = aclManagerID + '_back';
+ − 603
+ − 604
saver = document.createElement('input');
+ − 605
saver.type = 'submit';
218
+ − 606
saver.value = $lang.get('etc_wizard_next');
1
+ − 607
saver.style.fontWeight = 'bold';
+ − 608
saver.id = aclManagerID + '_next';
+ − 609
+ − 610
closer = document.createElement('input');
+ − 611
closer.type = 'button';
218
+ − 612
closer.value = $lang.get('etc_cancel_changes');
+ − 613
closer.onclick = function() { if(!confirm($lang.get('acl_msg_closeacl_confirm'))) return false; killACLManager(); return false; }
1
+ − 614
+ − 615
spacer1 = document.createTextNode(' ');
+ − 616
spacer2 = document.createTextNode(' ');
+ − 617
+ − 618
panel.appendChild(back);
+ − 619
panel.appendChild(spacer1);
+ − 620
panel.appendChild(saver);
+ − 621
panel.appendChild(spacer2);
+ − 622
panel.appendChild(closer);
+ − 623
form.appendChild(mainwin);
+ − 624
form.appendChild(panel);
+ − 625
box.appendChild(form);
+ − 626
+ − 627
body = document.getElementsByTagName('body')[0];
+ − 628
body.appendChild(box);
151
824821224153
Added a new Javascript variable, aclDisableTransitionFX, that will switch off effects on message boxes and the ACL editor when set to true
Dan
diff
changeset
+ − 629
if ( aclDisableTransitionFX )
824821224153
Added a new Javascript variable, aclDisableTransitionFX, that will switch off effects on message boxes and the ACL editor when set to true
Dan
diff
changeset
+ − 630
{
824821224153
Added a new Javascript variable, aclDisableTransitionFX, that will switch off effects on message boxes and the ACL editor when set to true
Dan
diff
changeset
+ − 631
document.getElementById(aclManagerID).style.display = 'block';
824821224153
Added a new Javascript variable, aclDisableTransitionFX, that will switch off effects on message boxes and the ACL editor when set to true
Dan
diff
changeset
+ − 632
changeOpac(100, aclManagerID);
824821224153
Added a new Javascript variable, aclDisableTransitionFX, that will switch off effects on message boxes and the ACL editor when set to true
Dan
diff
changeset
+ − 633
changeOpac(100, aclManagerID + '_panel');
824821224153
Added a new Javascript variable, aclDisableTransitionFX, that will switch off effects on message boxes and the ACL editor when set to true
Dan
diff
changeset
+ − 634
}
824821224153
Added a new Javascript variable, aclDisableTransitionFX, that will switch off effects on message boxes and the ACL editor when set to true
Dan
diff
changeset
+ − 635
else
824821224153
Added a new Javascript variable, aclDisableTransitionFX, that will switch off effects on message boxes and the ACL editor when set to true
Dan
diff
changeset
+ − 636
{
824821224153
Added a new Javascript variable, aclDisableTransitionFX, that will switch off effects on message boxes and the ACL editor when set to true
Dan
diff
changeset
+ − 637
setTimeout("document.getElementById('"+aclManagerID+"').style.display = 'block'; opacity('"+aclManagerID+"', 0, 100, 500); opacity('"+aclManagerID + '_panel'+"', 0, 100, 500);", 1000);
824821224153
Added a new Javascript variable, aclDisableTransitionFX, that will switch off effects on message boxes and the ACL editor when set to true
Dan
diff
changeset
+ − 638
}
1
+ − 639
}
+ − 640
+ − 641
function killACLManager()
+ − 642
{
+ − 643
el = document.getElementById(aclManagerID);
+ − 644
if(el)
+ − 645
{
151
824821224153
Added a new Javascript variable, aclDisableTransitionFX, that will switch off effects on message boxes and the ACL editor when set to true
Dan
diff
changeset
+ − 646
if ( aclDisableTransitionFX )
824821224153
Added a new Javascript variable, aclDisableTransitionFX, that will switch off effects on message boxes and the ACL editor when set to true
Dan
diff
changeset
+ − 647
{
824821224153
Added a new Javascript variable, aclDisableTransitionFX, that will switch off effects on message boxes and the ACL editor when set to true
Dan
diff
changeset
+ − 648
enlighten(true);
824821224153
Added a new Javascript variable, aclDisableTransitionFX, that will switch off effects on message boxes and the ACL editor when set to true
Dan
diff
changeset
+ − 649
el.parentNode.removeChild(el);
824821224153
Added a new Javascript variable, aclDisableTransitionFX, that will switch off effects on message boxes and the ACL editor when set to true
Dan
diff
changeset
+ − 650
}
824821224153
Added a new Javascript variable, aclDisableTransitionFX, that will switch off effects on message boxes and the ACL editor when set to true
Dan
diff
changeset
+ − 651
else
824821224153
Added a new Javascript variable, aclDisableTransitionFX, that will switch off effects on message boxes and the ACL editor when set to true
Dan
diff
changeset
+ − 652
{
824821224153
Added a new Javascript variable, aclDisableTransitionFX, that will switch off effects on message boxes and the ACL editor when set to true
Dan
diff
changeset
+ − 653
opacity(aclManagerID, 100, 0, 500);
824821224153
Added a new Javascript variable, aclDisableTransitionFX, that will switch off effects on message boxes and the ACL editor when set to true
Dan
diff
changeset
+ − 654
setTimeout('var el = document.getElementById(aclManagerID); el.parentNode.removeChild(el); enlighten();', 750);
824821224153
Added a new Javascript variable, aclDisableTransitionFX, that will switch off effects on message boxes and the ACL editor when set to true
Dan
diff
changeset
+ − 655
}
1
+ − 656
}
+ − 657
}
+ − 658
+ − 659
function __aclSubmitManager(form)
+ − 660
{
+ − 661
var thefrm = document.forms[form.name];
+ − 662
var modeobj = form_fetch_field(thefrm, 'mode');
+ − 663
if ( typeof(modeobj) == 'object' )
+ − 664
{
+ − 665
var mode = (thefrm.mode.value) ? thefrm.mode.value : 'cant_get';
+ − 666
}
+ − 667
else
+ − 668
{
+ − 669
var mode = '';
+ − 670
}
+ − 671
switch(mode)
+ − 672
{
+ − 673
case 'cant_get':
+ − 674
alert('BUG: can\'t get the state value from the form field.');
+ − 675
break;
+ − 676
case 'seltarget':
40
+ − 677
var target_type = parseInt(getRadioState(thefrm, 'target_type', ['1', '2']));
1
+ − 678
if(isNaN(target_type))
+ − 679
{
218
+ − 680
alert($lang.get('acl_err_pleaseselect_targettype'));
1
+ − 681
return false;
+ − 682
}
+ − 683
target_id = ( target_type == 1 ) ? parseInt(thefrm.group_id.value) : thefrm.username.value;
+ − 684
+ − 685
obj = { 'mode' : mode, 'target_type' : target_type, 'target_id' : target_id };
+ − 686
+ − 687
thispage = strToPageID(title);
+ − 688
do_scopesel = ( thispage[0] == aclDataCache.page_id && thispage[1] == aclDataCache.namespace );
+ − 689
+ − 690
if(do_scopesel)
+ − 691
{
40
+ − 692
scope = getRadioState(thefrm, 'scope', ['page', 'global']);
1
+ − 693
if(scope == 'page')
+ − 694
{
+ − 695
pageid = strToPageID(title);
+ − 696
obj['page_id'] = pageid[0];
+ − 697
obj['namespace'] = pageid[1];
+ − 698
}
+ − 699
else if(scope == 'global')
+ − 700
{
+ − 701
obj['page_id'] = false;
+ − 702
obj['namespace'] = false;
+ − 703
}
73
0a74676a2f2f
Made the move to Loch Ness, and got some basic page grouping functionality working. TODO: fix some UI issues in Javascript ACL editor and change non-JS ACL editor to work with page groups too
Dan
diff
changeset
+ − 704
else if(scope == 'group')
0a74676a2f2f
Made the move to Loch Ness, and got some basic page grouping functionality working. TODO: fix some UI issues in Javascript ACL editor and change non-JS ACL editor to work with page groups too
Dan
diff
changeset
+ − 705
{
0a74676a2f2f
Made the move to Loch Ness, and got some basic page grouping functionality working. TODO: fix some UI issues in Javascript ACL editor and change non-JS ACL editor to work with page groups too
Dan
diff
changeset
+ − 706
obj['page_id'] = document.getElementById('enACL_pgsel_1048576').value;
0a74676a2f2f
Made the move to Loch Ness, and got some basic page grouping functionality working. TODO: fix some UI issues in Javascript ACL editor and change non-JS ACL editor to work with page groups too
Dan
diff
changeset
+ − 707
obj['namespace'] = '__PageGroup';
0a74676a2f2f
Made the move to Loch Ness, and got some basic page grouping functionality working. TODO: fix some UI issues in Javascript ACL editor and change non-JS ACL editor to work with page groups too
Dan
diff
changeset
+ − 708
}
1
+ − 709
else
+ − 710
{
+ − 711
alert('Invalid scope');
+ − 712
return false;
+ − 713
}
+ − 714
}
+ − 715
else
+ − 716
{
+ − 717
obj['page_id'] = aclDataCache.page_id;
+ − 718
obj['namespace'] = aclDataCache.namespace;
+ − 719
}
+ − 720
if(target_id == '')
+ − 721
{
218
+ − 722
alert($lang.get('acl_err_pleaseselect_username'));
1
+ − 723
return false;
+ − 724
}
+ − 725
__aclJSONSubmitAjaxHandler(obj);
+ − 726
break;
+ − 727
case 'save_edit':
+ − 728
case 'save_new':
+ − 729
var form = document.forms[aclManagerID + '_formobj'];
+ − 730
selections = new Object();
40
+ − 731
var dbg = '';
1
+ − 732
for(var i in aclPermList)
+ − 733
{
40
+ − 734
selections[aclPermList[i]] = getRadioState(form, aclPermList[i], [1, 2, 3, 4]);
+ − 735
dbg += aclPermList[i] + ': ' + selections[aclPermList[i]] + "\n";
+ − 736
if(!selections[aclPermList[i]])
1
+ − 737
{
40
+ − 738
alert("Invalid return from getRadioState: "+i+": "+selections[i]+" ("+typeof(selections[i])+")");
+ − 739
return false;
1
+ − 740
}
+ − 741
}
+ − 742
obj = new Object();
+ − 743
obj['perms'] = selections;
+ − 744
obj['mode'] = mode;
+ − 745
obj['target_type'] = aclDataCache.target_type;
+ − 746
obj['target_id'] = aclDataCache.target_id;
+ − 747
obj['target_name'] = aclDataCache.target_name;
+ − 748
obj['page_id'] = aclDataCache.page_id;
+ − 749
obj['namespace'] = aclDataCache.namespace;
+ − 750
__aclJSONSubmitAjaxHandler(obj);
+ − 751
break;
+ − 752
default:
+ − 753
alert("JSON form submit: invalid mode string "+mode+", stopping execution");
+ − 754
return false;
+ − 755
break;
+ − 756
}
+ − 757
}
+ − 758
40
+ − 759
function getRadioState(form, name, valArray)
1
+ − 760
{
40
+ − 761
// Konqueror/Safari fix
+ − 762
if ( form[name] )
+ − 763
{
+ − 764
var formitem = form[name];
+ − 765
if ( String(formitem) == '[object DOMNamedNodesCollection]' || is_Safari )
+ − 766
{
+ − 767
var i = 0;
+ − 768
var radios = new Array();
+ − 769
var radioids = new Array();
+ − 770
while(true)
+ − 771
{
+ − 772
var elem = formitem[i];
+ − 773
if ( !elem )
+ − 774
break;
+ − 775
radios.push(elem);
+ − 776
if ( !elem.id )
+ − 777
{
+ − 778
elem.id = 'autoRadioBtn_' + Math.floor(Math.random() * 1000000);
+ − 779
}
+ − 780
radioids.push(elem.id);
+ − 781
i++;
+ − 782
}
+ − 783
var cr;
+ − 784
for ( var i = 0; i < radios.length; i++ )
+ − 785
{
+ − 786
cr = document.getElementById(radioids[i]);
+ − 787
if ( cr.value == 'on' || cr.checked == true )
+ − 788
{
+ − 789
try {
+ − 790
return ( typeof ( valArray[i] ) != 'undefined' ) ? valArray[i] : false;
+ − 791
} catch(e) {
+ − 792
// alert('Didn\'t get value for index: ' + i);
+ − 793
return false;
+ − 794
}
+ − 795
}
+ − 796
}
+ − 797
return false;
+ − 798
}
+ − 799
}
1
+ − 800
inputs = form.getElementsByTagName('input');
+ − 801
radios = new Array();
+ − 802
for(var i in inputs)
+ − 803
{
+ − 804
if(inputs[i]) if(inputs[i].type == 'radio')
+ − 805
radios.push(inputs[i]);
+ − 806
}
+ − 807
for(var i in radios)
+ − 808
{
+ − 809
if(radios[i].checked && radios[i].name == name)
+ − 810
return radios[i].value;
+ − 811
}
+ − 812
return false;
+ − 813
}
+ − 814
40
+ − 815
function __aclSetAllRadios(val, valArray)
1
+ − 816
{
40
+ − 817
val = String(val);
+ − 818
var form = document.forms[aclManagerID + '_formobj'];
1
+ − 819
if (!form)
40
+ − 820
{
1
+ − 821
return false;
40
+ − 822
}
+ − 823
var inputs = form.getElementsByTagName('input');
+ − 824
var radios = new Array();
+ − 825
var dbg = '';
+ − 826
for(var i = 0; i < inputs.length; i++)
1
+ − 827
{
40
+ − 828
dbg += String(inputs[i]) + "\n";
1
+ − 829
if(inputs[i].type == 'radio')
+ − 830
radios.push(inputs[i]);
+ − 831
}
+ − 832
for(var i in radios)
+ − 833
{
+ − 834
if(radios[i].value == val)
+ − 835
radios[i].checked = true;
+ − 836
else
+ − 837
radios[i].checked = false;
+ − 838
}
+ − 839
}
+ − 840
+ − 841
function __aclDeleteRule()
+ − 842
{
42
45ebe475ff75
I dunno how many times I'm gonna have to fix the "problem seems to be the hex conversion" bug, but this is at least the fourth try.
Dan
diff
changeset
+ − 843
if(!aclDataCache)
45ebe475ff75
I dunno how many times I'm gonna have to fix the "problem seems to be the hex conversion" bug, but this is at least the fourth try.
Dan
diff
changeset
+ − 844
{
45ebe475ff75
I dunno how many times I'm gonna have to fix the "problem seems to be the hex conversion" bug, but this is at least the fourth try.
Dan
diff
changeset
+ − 845
if ( window.console )
45ebe475ff75
I dunno how many times I'm gonna have to fix the "problem seems to be the hex conversion" bug, but this is at least the fourth try.
Dan
diff
changeset
+ − 846
{
45ebe475ff75
I dunno how many times I'm gonna have to fix the "problem seems to be the hex conversion" bug, but this is at least the fourth try.
Dan
diff
changeset
+ − 847
try{ console.error('ACL editor: can\'t load data cache on delete'); } catch(e) {};
45ebe475ff75
I dunno how many times I'm gonna have to fix the "problem seems to be the hex conversion" bug, but this is at least the fourth try.
Dan
diff
changeset
+ − 848
}
45ebe475ff75
I dunno how many times I'm gonna have to fix the "problem seems to be the hex conversion" bug, but this is at least the fourth try.
Dan
diff
changeset
+ − 849
return false;
45ebe475ff75
I dunno how many times I'm gonna have to fix the "problem seems to be the hex conversion" bug, but this is at least the fourth try.
Dan
diff
changeset
+ − 850
}
45ebe475ff75
I dunno how many times I'm gonna have to fix the "problem seems to be the hex conversion" bug, but this is at least the fourth try.
Dan
diff
changeset
+ − 851
if(aclDataCache.mode != 'seltarget' && aclDataCache.mode != 'save_new' && aclDataCache.mode != 'save_edit')
45ebe475ff75
I dunno how many times I'm gonna have to fix the "problem seems to be the hex conversion" bug, but this is at least the fourth try.
Dan
diff
changeset
+ − 852
{
45ebe475ff75
I dunno how many times I'm gonna have to fix the "problem seems to be the hex conversion" bug, but this is at least the fourth try.
Dan
diff
changeset
+ − 853
if ( window.console )
45ebe475ff75
I dunno how many times I'm gonna have to fix the "problem seems to be the hex conversion" bug, but this is at least the fourth try.
Dan
diff
changeset
+ − 854
{
45ebe475ff75
I dunno how many times I'm gonna have to fix the "problem seems to be the hex conversion" bug, but this is at least the fourth try.
Dan
diff
changeset
+ − 855
try{ console.error('ACL editor: wrong mode on aclDataCache: ' + aclDataCache.mode); } catch(e) {};
45ebe475ff75
I dunno how many times I'm gonna have to fix the "problem seems to be the hex conversion" bug, but this is at least the fourth try.
Dan
diff
changeset
+ − 856
}
45ebe475ff75
I dunno how many times I'm gonna have to fix the "problem seems to be the hex conversion" bug, but this is at least the fourth try.
Dan
diff
changeset
+ − 857
return false;
45ebe475ff75
I dunno how many times I'm gonna have to fix the "problem seems to be the hex conversion" bug, but this is at least the fourth try.
Dan
diff
changeset
+ − 858
}
1
+ − 859
parms = {
+ − 860
'target_type' : aclDataCache.target_type,
+ − 861
'target_id' : aclDataCache.target_id,
+ − 862
'target_name' : aclDataCache.target_name,
+ − 863
'page_id' : aclDataCache.page_id,
+ − 864
'namespace' : aclDataCache.namespace,
+ − 865
'mode' : 'delete'
+ − 866
};
+ − 867
__aclJSONSubmitAjaxHandler(parms);
+ − 868
}
+ − 869
+ − 870
function array_keys(obj)
+ − 871
{
+ − 872
keys = new Array();
+ − 873
for(var i in obj)
+ − 874
keys.push(i);
+ − 875
return keys;
+ − 876
}
+ − 877
+ − 878
function form_fetch_field(form, name)
+ − 879
{
+ − 880
var fields = form.getElementsByTagName('input');
+ − 881
if ( fields.length < 1 )
+ − 882
return false;
+ − 883
for ( var i = 0; i < fields.length; i++ )
+ − 884
{
+ − 885
var field = fields[i];
+ − 886
if ( field.name == name )
+ − 887
return field;
+ − 888
}
+ − 889
return false;
+ − 890
}
+ − 891