aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/adm/style/permissions.js
diff options
context:
space:
mode:
authorDominik Dröscher <dhn2@users.sourceforge.net>2007-01-18 13:08:36 +0000
committerDominik Dröscher <dhn2@users.sourceforge.net>2007-01-18 13:08:36 +0000
commit2af1a4ca6a2883c0cddfac1330240f1a215e29c1 (patch)
treee72c37ed12e919503ff357c485f84ef0597487e7 /phpBB/adm/style/permissions.js
parenta034d244313ad59f829cf5b2ddb9cc62415d1d4e (diff)
downloadforums-2af1a4ca6a2883c0cddfac1330240f1a215e29c1.tar
forums-2af1a4ca6a2883c0cddfac1330240f1a215e29c1.tar.gz
forums-2af1a4ca6a2883c0cddfac1330240f1a215e29c1.tar.bz2
forums-2af1a4ca6a2883c0cddfac1330240f1a215e29c1.tar.xz
forums-2af1a4ca6a2883c0cddfac1330240f1a215e29c1.zip
This could help to make it work I guess ... :)
git-svn-id: file:///svn/phpbb/trunk@6902 89ea8834-ac86-4346-8a33-228a782c2dd0
Diffstat (limited to 'phpBB/adm/style/permissions.js')
-rw-r--r--phpBB/adm/style/permissions.js243
1 files changed, 243 insertions, 0 deletions
diff --git a/phpBB/adm/style/permissions.js b/phpBB/adm/style/permissions.js
new file mode 100644
index 0000000000..36f2a49e4d
--- /dev/null
+++ b/phpBB/adm/style/permissions.js
@@ -0,0 +1,243 @@
+
+/**
+* Check whether we have a full radiobutton row of true
+* index = offset for the row of inputs (0 == first row, 1 == second, 2 == third),
+* rb = array of radiobuttons
+*/
+function get_radio_status(index, rb)
+{
+ for (var i = index; i < rb.length; i = i + 3 )
+ {
+ if (rb[i].checked != true)
+ {
+ if (i > index)
+ {
+ //at least one is true, but not all (custom)
+ return 2;
+ }
+ //first one is not true
+ return 0;
+ }
+ }
+
+ // all radiobuttons true
+ return 1;
+}
+
+/**
+* Set tab colours
+* id = panel the tab needs to be set for,
+* init = initialising on open,
+* quick = If no calculation needed, this contains the colour
+*/
+function set_colours(id, init, quick)
+{
+ var table = document.getElementById('options' + id);
+ var tab = document.getElementById('tab' + id);
+
+ if (typeof(quick) != 'undefined')
+ {
+ tab.className = 'perm_preset_' + quick + ' activetab';
+ return;
+ }
+
+ var rb = table.getElementsByTagName('input');
+ var colour = 'custom';
+
+ var status = get_radio_status(0, rb);
+
+ if (status == 1)
+ {
+ colour = 'yes';
+ }
+ else if (status == 0)
+ {
+ // We move on to No
+ status = get_radio_status(1, rb);
+
+ if (status == 1)
+ {
+ colour = 'no';
+ }
+ else if (status == 0)
+ {
+ // We move on to Mever
+ status = get_radio_status(2, rb);
+
+ if (status == 1)
+ {
+ colour = 'never';
+ }
+ }
+ }
+
+ if (init)
+ {
+ tab.className = 'perm_preset_' + colour;
+ }
+ else
+ {
+ tab.className = 'perm_preset_' + colour + ' activetab';
+ }
+}
+
+/**
+* Initialise advanced tab colours on first load
+* block_id = block that is opened
+*/
+function init_colours(block_id)
+{
+ var block = document.getElementById('advanced' + block_id);
+ var panels = block.getElementsByTagName('div');
+ var tab = document.getElementById('tab' + id);
+
+ for (var i = 0; i < panels.length; i++)
+ {
+ if(panels[i].className == 'perm_panel')
+ {
+ set_colours(panels[i].id.replace(/options/, ''), true);
+ }
+ }
+
+ tab.className = tab.className + ' activetab';
+}
+
+/**
+* Show/hide option panels
+* value = suffix for ID to show
+* adv = we are opening advanced permissions
+* view = called from view permissions
+*/
+function swap_options(pmask, fmask, cat, adv, view)
+{
+ id = pmask + fmask + cat;
+ active_option = active_pmask + active_fmask + active_cat;
+
+ var old_tab = document.getElementById('tab' + active_option);
+ var new_tab = document.getElementById('tab' + id);
+ var adv_block = document.getElementById('advanced' + pmask + fmask);
+
+ if (adv_block.style.display == 'block' && adv == true)
+ {
+ dE('advanced' + pmask + fmask, -1);
+ return;
+ }
+
+ // init colours
+ if (adv)
+ {
+ init_colours(pmask + fmask);
+ }
+
+ // no need to set anything if we are clicking on the same tab again
+ if (new_tab == old_tab && !adv)
+ {
+ return;
+ }
+
+ // set active tab
+ old_tab.className = old_tab.className.replace(/\ activetab/g, '');
+ new_tab.className = new_tab.className + ' activetab';
+
+ if (id == active_option && adv != true)
+ {
+ return;
+ }
+
+ dE('options' + active_option, -1);
+
+ if (!view)
+ {
+ dE('advanced' + active_pmask + active_fmask, -1);
+ }
+
+ if (!view)
+ {
+ dE('advanced' + pmask + fmask, 1);
+ }
+ dE('options' + id, 1);
+
+ active_pmask = pmask;
+ active_fmask = fmask;
+ active_cat = cat;
+}
+
+/**
+* Mark all radio buttons in one panel
+* id = table ID container, s = status ['y'/'u'/'n']
+*/
+function mark_options(id, s)
+{
+ var t = document.getElementById(id);
+
+ if (!t)
+ {
+ return;
+ }
+
+ var rb = t.getElementsByTagName('input');
+
+ for (var r = 0; r < rb.length; r++)
+ {
+ if (rb[r].id.substr(rb[r].id.length-1) == s)
+ {
+ rb[r].checked = true;
+ }
+ }
+}
+
+function mark_one_option(id, field_name, s)
+{
+ var t = document.getElementById(id);
+
+ if (!t)
+ {
+ return;
+ }
+
+ var rb = t.getElementsByTagName('input');
+
+ for (var r = 0; r < rb.length; r++)
+ {
+ 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)
+ {
+ rb[r].checked = true;
+ }
+ }
+}
+
+/**
+* Reset role dropdown field to Select role... if an option gets changed
+*/
+function reset_role(id)
+{
+ var t = document.getElementById(id);
+
+ if (!t)
+ {
+ return;
+ }
+
+ t.options[0].selected = true;
+}
+
+/**
+* Load role and set options accordingly
+*/
+function set_role_settings(role_id, target_id)
+{
+ settings = role_options[role_id];
+
+ if (!settings)
+ {
+ return;
+ }
+
+ // Mark all options to no (unset) first...
+ mark_options(target_id, 'u');
+
+ for (var r in settings)
+ {
+ mark_one_option(target_id, r, (settings[r] == 1) ? 'y' : 'n');
+ }
+}