~azzar1/unity/add-show-desktop-key

« back to all changes in this revision

Viewing changes to www/php/phpBB3/adm/style/permissions.js

  • Committer: dcoles
  • Date: 2008-02-13 04:10:55 UTC
  • Revision ID: svn-v3-trunk0:2b9c9e99-6f39-0410-b283-7f802c844ae2:trunk:443
Added Forum application along with unmodifed version of phpBB3 "Olympus" 3.0.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/**
 
2
* Hide and show all checkboxes
 
3
* status = true (show boxes), false (hide boxes)
 
4
*/
 
5
function display_checkboxes(status) 
 
6
{
 
7
        var form = document.getElementById('set-permissions');
 
8
        var cb = document.getElementsByTagName('input');
 
9
        var display;
 
10
 
 
11
        //show
 
12
        if (status)
 
13
        {
 
14
                display = 'inline';
 
15
        }
 
16
        //hide
 
17
        else
 
18
        {
 
19
                display = 'none';
 
20
        }
 
21
        
 
22
        for (var i = 0; i < cb.length; i++ )
 
23
        {
 
24
                if (cb[i].className == 'permissions-checkbox')
 
25
                {
 
26
                        cb[i].style.display = display;
 
27
                }
 
28
                
 
29
        }       
 
30
        
 
31
}
 
32
 
 
33
 
 
34
/**
 
35
* Change opacity of element
 
36
* e = element
 
37
* value = 0 (hidden) till 10 (fully visible)
 
38
*/
 
39
function set_opacity(e, value) {
 
40
        e.style.opacity = value/10;
 
41
        
 
42
        //IE opacity currently turned off, because of its astronomical stupidity
 
43
        //e.style.filter = 'alpha(opacity=' + value*10 + ')';
 
44
}
 
45
 
 
46
/**
 
47
* Reset the opacity and checkboxes
 
48
* block_id = id of the element that needs to be toggled
 
49
*/
 
50
function toggle_opacity(block_id) {
 
51
        var cb = document.getElementById('checkbox' + block_id);
 
52
        var fs = document.getElementById('perm' + block_id);
 
53
        
 
54
        if (cb.checked) 
 
55
        {
 
56
                set_opacity(fs, 5);
 
57
        } 
 
58
        else 
 
59
        {
 
60
                set_opacity(fs, 10);
 
61
        }
 
62
}
 
63
 
 
64
/**
 
65
* Reset the opacity and checkboxes
 
66
* value = 0 (checked) and 1 (unchecked)
 
67
* except_id = id of the element not to hide
 
68
*/
 
69
function reset_opacity(status, except_id) {
 
70
        var perm = document.getElementById('set-permissions');
 
71
        var fs = perm.getElementsByTagName('fieldset');
 
72
        var opacity = 5;
 
73
 
 
74
        if (status)
 
75
        {
 
76
                opacity = 10;   
 
77
        }
 
78
        
 
79
        for (var i = 0; i < fs.length; i++ )
 
80
        {
 
81
                if (fs[i].className != 'quick')
 
82
                {
 
83
                        set_opacity(fs[i], opacity);
 
84
                }
 
85
        }
 
86
 
 
87
        if (typeof(except_id) != 'undefined')
 
88
        {
 
89
                set_opacity(document.getElementById('perm' + except_id), 10);
 
90
        }
 
91
 
 
92
        //reset checkboxes too
 
93
        marklist('set-permissions', 'inherit', !status);
 
94
}
 
95
 
 
96
 
 
97
/**
 
98
* Check whether we have a full radiobutton row of true
 
99
* index = offset for the row of inputs (0 == first row, 1 == second, 2 == third),
 
100
* rb = array of radiobuttons
 
101
*/
 
102
function get_radio_status(index, rb) 
 
103
{
 
104
        for (var i = index; i < rb.length; i = i + 3 )
 
105
        {
 
106
                if (rb[i].checked != true)
 
107
                {
 
108
                        if (i > index)
 
109
                        {
 
110
                                //at least one is true, but not all (custom)
 
111
                                return 2;
 
112
                        }
 
113
                        //first one is not true
 
114
                        return 0;
 
115
                }
 
116
        }
 
117
 
 
118
        // all radiobuttons true
 
119
        return 1;
 
120
}
 
121
 
 
122
/**
 
123
* Set tab colours
 
124
* id = panel the tab needs to be set for, 
 
125
* init = initialising on open, 
 
126
* quick = If no calculation needed, this contains the colour
 
127
*/
 
128
function set_colours(id, init, quick)
 
129
{
 
130
        var table = document.getElementById('table' + id);
 
131
        var tab = document.getElementById('tab' + id);
 
132
 
 
133
        if (typeof(quick) != 'undefined') 
 
134
        {
 
135
                tab.className = 'permissions-preset-' + quick + ' activetab';
 
136
                return;
 
137
        }
 
138
 
 
139
        var rb = table.getElementsByTagName('input');
 
140
        var colour = 'custom';
 
141
 
 
142
        var status = get_radio_status(0, rb);
 
143
 
 
144
        if (status == 1)
 
145
        {
 
146
                colour = 'yes';
 
147
        }
 
148
        else if (status == 0) 
 
149
        {
 
150
                // We move on to No
 
151
                status = get_radio_status(1, rb);
 
152
 
 
153
                if (status == 1)
 
154
                {
 
155
                        colour = 'no';
 
156
                }
 
157
                else if (status == 0) 
 
158
                {
 
159
                        // We move on to Never
 
160
                        status = get_radio_status(2, rb);
 
161
 
 
162
                        if (status == 1)
 
163
                        {
 
164
                                colour = 'never';
 
165
                        }
 
166
                }
 
167
        }
 
168
 
 
169
        if (init)
 
170
        {
 
171
                tab.className = 'permissions-preset-' + colour;
 
172
        }
 
173
        else
 
174
        {
 
175
                tab.className = 'permissions-preset-' + colour + ' activetab';
 
176
        }
 
177
}
 
178
 
 
179
/**
 
180
* Initialise advanced tab colours on first load
 
181
* block_id = block that is opened
 
182
*/
 
183
function init_colours(block_id)
 
184
{       
 
185
        var block = document.getElementById('advanced' + block_id);
 
186
        var panels = block.getElementsByTagName('div');
 
187
        var tab = document.getElementById('tab' + id);
 
188
 
 
189
        for (var i = 0; i < panels.length; i++)
 
190
        {
 
191
                if(panels[i].className == 'permissions-panel')
 
192
                {
 
193
                        set_colours(panels[i].id.replace(/options/, ''), true);
 
194
                }
 
195
        }
 
196
 
 
197
        tab.className = tab.className + ' activetab';
 
198
}
 
199
 
 
200
/**
 
201
* Show/hide option panels
 
202
* value = suffix for ID to show
 
203
* adv = we are opening advanced permissions
 
204
* view = called from view permissions
 
205
*/
 
206
function swap_options(pmask, fmask, cat, adv, view)
 
207
{
 
208
        id = pmask + fmask + cat;
 
209
        active_option = active_pmask + active_fmask + active_cat;
 
210
 
 
211
        var     old_tab = document.getElementById('tab' + active_option);       
 
212
        var new_tab = document.getElementById('tab' + id);
 
213
        var adv_block = document.getElementById('advanced' + pmask + fmask);
 
214
 
 
215
        if (adv_block.style.display == 'block' && adv == true)
 
216
        {
 
217
                dE('advanced' + pmask + fmask, -1);
 
218
                reset_opacity(1);
 
219
                display_checkboxes(false);
 
220
                return;
 
221
        }
 
222
 
 
223
        // no need to set anything if we are clicking on the same tab again
 
224
        if (new_tab == old_tab && !adv)
 
225
        {
 
226
                return;
 
227
        }
 
228
 
 
229
        // init colours
 
230
        if (adv && (pmask + fmask) != (active_pmask + active_fmask))
 
231
        {
 
232
                init_colours(pmask + fmask);
 
233
                display_checkboxes(true);
 
234
                reset_opacity(1);
 
235
        } 
 
236
        else if (adv) 
 
237
        {
 
238
                //Checkbox might have been clicked, but we need full visibility
 
239
                display_checkboxes(true);
 
240
                reset_opacity(1);
 
241
        }
 
242
 
 
243
        // set active tab
 
244
        old_tab.className = old_tab.className.replace(/\ activetab/g, '');
 
245
        new_tab.className = new_tab.className + ' activetab';
 
246
 
 
247
        if (id == active_option && adv != true)
 
248
        {
 
249
                return;
 
250
        }
 
251
 
 
252
        dE('options' + active_option, -1);
 
253
        
 
254
        //hiding and showing the checkbox
 
255
        if (document.getElementById('checkbox' + active_pmask + active_fmask))
 
256
        {
 
257
                dE('checkbox' + pmask + fmask, -1);     
 
258
                
 
259
                if ((pmask + fmask) != (active_pmask + active_fmask))
 
260
                {
 
261
                        document.getElementById('checkbox' + active_pmask + active_fmask).style.display = 'inline';
 
262
                }
 
263
        }
 
264
 
 
265
        if (!view)
 
266
        {
 
267
                dE('advanced' + active_pmask + active_fmask, -1);
 
268
        }
 
269
 
 
270
        if (!view)
 
271
        {
 
272
                dE('advanced' + pmask + fmask, 1);
 
273
        }
 
274
        dE('options' + id, 1);
 
275
 
 
276
        active_pmask = pmask;
 
277
        active_fmask = fmask;
 
278
        active_cat = cat;
 
279
}
 
280
 
 
281
/**
 
282
* Mark all radio buttons in one panel
 
283
* id = table ID container, s = status ['y'/'u'/'n']
 
284
*/
 
285
function mark_options(id, s)
 
286
{
 
287
        var t = document.getElementById(id);
 
288
 
 
289
        if (!t)
 
290
        {
 
291
                return;
 
292
        }
 
293
 
 
294
        var rb = t.getElementsByTagName('input');
 
295
 
 
296
        for (var r = 0; r < rb.length; r++)
 
297
        {
 
298
                if (rb[r].id.substr(rb[r].id.length-1) == s)
 
299
                {
 
300
                        rb[r].checked = true;
 
301
                }
 
302
        }
 
303
}
 
304
 
 
305
function mark_one_option(id, field_name, s)
 
306
{
 
307
        var t = document.getElementById(id);
 
308
 
 
309
        if (!t)
 
310
        {
 
311
                return;
 
312
        }
 
313
 
 
314
        var rb = t.getElementsByTagName('input');
 
315
 
 
316
        for (var r = 0; r < rb.length; r++)
 
317
        {
 
318
                if (rb[r].id.substr(rb[r].id.length-field_name.length-3, field_name.length) == field_name && rb[r].id.substr(rb[r].id.length-1) == s)
 
319
                {
 
320
                        rb[r].checked = true;
 
321
                }
 
322
        }
 
323
}
 
324
 
 
325
/**
 
326
* Reset role dropdown field to Select role... if an option gets changed
 
327
*/
 
328
function reset_role(id)
 
329
{
 
330
        var t = document.getElementById(id);
 
331
 
 
332
        if (!t)
 
333
        {
 
334
                return;
 
335
        }
 
336
 
 
337
        t.options[0].selected = true;
 
338
}
 
339
 
 
340
/**
 
341
* Load role and set options accordingly
 
342
*/
 
343
function set_role_settings(role_id, target_id)
 
344
{
 
345
        settings = role_options[role_id];
 
346
 
 
347
        if (!settings)
 
348
        {
 
349
                return;
 
350
        }
 
351
 
 
352
        // Mark all options to no (unset) first...
 
353
        mark_options(target_id, 'u');
 
354
 
 
355
        for (var r in settings)
 
356
        {
 
357
                mark_one_option(target_id, r, (settings[r] == 1) ? 'y' : 'n');
 
358
        }
 
359
}