1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-02-15 05:24:41 +01:00

This could help to make it work I guess ... :)

git-svn-id: file:///svn/phpbb/trunk@6902 89ea8834-ac86-4346-8a33-228a782c2dd0
This commit is contained in:
Dominik Dröscher 2007-01-18 13:08:36 +00:00
parent a034d24431
commit 2af1a4ca6a

View File

@ -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');
}
}