Blame Identity/Models/Html/phpBB/3.0.4/adm/style/permissions.js

d6e8d8
/**
d6e8d8
* Hide and show all checkboxes
d6e8d8
* status = true (show boxes), false (hide boxes)
d6e8d8
*/
d6e8d8
function display_checkboxes(status) 
d6e8d8
{
d6e8d8
	var form = document.getElementById('set-permissions');
d6e8d8
	var cb = document.getElementsByTagName('input');
d6e8d8
	var display;
d6e8d8
d6e8d8
	//show
d6e8d8
	if (status)
d6e8d8
	{
d6e8d8
		display = 'inline';
d6e8d8
	}
d6e8d8
	//hide
d6e8d8
	else
d6e8d8
	{
d6e8d8
		display = 'none';
d6e8d8
	}
d6e8d8
	
d6e8d8
	for (var i = 0; i < cb.length; i++ )
d6e8d8
	{
d6e8d8
		if (cb[i].className == 'permissions-checkbox')
d6e8d8
		{
d6e8d8
			cb[i].style.display = display;
d6e8d8
		}
d6e8d8
		
d6e8d8
	}	
d6e8d8
	
d6e8d8
}
d6e8d8
d6e8d8
d6e8d8
/**
d6e8d8
* Change opacity of element
d6e8d8
* e = element
d6e8d8
* value = 0 (hidden) till 10 (fully visible)
d6e8d8
*/
d6e8d8
function set_opacity(e, value) {
d6e8d8
	e.style.opacity = value/10;
d6e8d8
	
d6e8d8
	//IE opacity currently turned off, because of its astronomical stupidity
d6e8d8
	//e.style.filter = 'alpha(opacity=' + value*10 + ')';
d6e8d8
}
d6e8d8
d6e8d8
/**
d6e8d8
* Reset the opacity and checkboxes
d6e8d8
* block_id = id of the element that needs to be toggled
d6e8d8
*/
d6e8d8
function toggle_opacity(block_id) {
d6e8d8
	var cb = document.getElementById('checkbox' + block_id);
d6e8d8
	var fs = document.getElementById('perm' + block_id);
d6e8d8
	
d6e8d8
	if (cb.checked) 
d6e8d8
	{
d6e8d8
		set_opacity(fs, 5);
d6e8d8
	} 
d6e8d8
	else 
d6e8d8
	{
d6e8d8
		set_opacity(fs, 10);
d6e8d8
	}
d6e8d8
}
d6e8d8
d6e8d8
/**
d6e8d8
* Reset the opacity and checkboxes
d6e8d8
* value = 0 (checked) and 1 (unchecked)
d6e8d8
* except_id = id of the element not to hide
d6e8d8
*/
d6e8d8
function reset_opacity(status, except_id) {
d6e8d8
	var perm = document.getElementById('set-permissions');
d6e8d8
	var fs = perm.getElementsByTagName('fieldset');
d6e8d8
	var opacity = 5;
d6e8d8
d6e8d8
	if (status)
d6e8d8
	{
d6e8d8
		opacity = 10;	
d6e8d8
	}
d6e8d8
	
d6e8d8
	for (var i = 0; i < fs.length; i++ )
d6e8d8
	{
d6e8d8
		if (fs[i].className != 'quick')
d6e8d8
		{
d6e8d8
			set_opacity(fs[i], opacity);
d6e8d8
		}
d6e8d8
	}
d6e8d8
d6e8d8
	if (typeof(except_id) != 'undefined')
d6e8d8
	{
d6e8d8
		set_opacity(document.getElementById('perm' + except_id), 10);
d6e8d8
	}
d6e8d8
d6e8d8
	//reset checkboxes too
d6e8d8
	marklist('set-permissions', 'inherit', !status);
d6e8d8
}
d6e8d8
d6e8d8
d6e8d8
/**
d6e8d8
* Check whether we have a full radiobutton row of true
d6e8d8
* index = offset for the row of inputs (0 == first row, 1 == second, 2 == third),
d6e8d8
* rb = array of radiobuttons
d6e8d8
*/
d6e8d8
function get_radio_status(index, rb) 
d6e8d8
{
d6e8d8
	for (var i = index; i < rb.length; i = i + 3 )
d6e8d8
	{
d6e8d8
		if (rb[i].checked != true)
d6e8d8
		{
d6e8d8
			if (i > index)
d6e8d8
			{
d6e8d8
				//at least one is true, but not all (custom)
d6e8d8
				return 2;
d6e8d8
			}
d6e8d8
			//first one is not true
d6e8d8
			return 0;
d6e8d8
		}
d6e8d8
	}
d6e8d8
d6e8d8
	// all radiobuttons true
d6e8d8
	return 1;
d6e8d8
}
d6e8d8
d6e8d8
/**
d6e8d8
* Set tab colours
d6e8d8
* id = panel the tab needs to be set for, 
d6e8d8
* init = initialising on open, 
d6e8d8
* quick = If no calculation needed, this contains the colour
d6e8d8
*/
d6e8d8
function set_colours(id, init, quick)
d6e8d8
{
d6e8d8
	var table = document.getElementById('table' + id);
d6e8d8
	var tab = document.getElementById('tab' + id);
d6e8d8
d6e8d8
	if (typeof(quick) != 'undefined') 
d6e8d8
	{
d6e8d8
		tab.className = 'permissions-preset-' + quick + ' activetab';
d6e8d8
		return;
d6e8d8
	}
d6e8d8
d6e8d8
	var rb = table.getElementsByTagName('input');
d6e8d8
	var colour = 'custom';
d6e8d8
d6e8d8
	var status = get_radio_status(0, rb);
d6e8d8
d6e8d8
	if (status == 1)
d6e8d8
	{
d6e8d8
		colour = 'yes';
d6e8d8
	}
d6e8d8
	else if (status == 0) 
d6e8d8
	{
d6e8d8
		// We move on to No
d6e8d8
		status = get_radio_status(1, rb);
d6e8d8
d6e8d8
		if (status == 1)
d6e8d8
		{
d6e8d8
			colour = 'no';
d6e8d8
		}
d6e8d8
		else if (status == 0) 
d6e8d8
		{
d6e8d8
			// We move on to Never
d6e8d8
			status = get_radio_status(2, rb);
d6e8d8
d6e8d8
			if (status == 1)
d6e8d8
			{
d6e8d8
				colour = 'never';
d6e8d8
			}
d6e8d8
		}
d6e8d8
	}
d6e8d8
d6e8d8
	if (init)
d6e8d8
	{
d6e8d8
		tab.className = 'permissions-preset-' + colour;
d6e8d8
	}
d6e8d8
	else
d6e8d8
	{
d6e8d8
		tab.className = 'permissions-preset-' + colour + ' activetab';
d6e8d8
	}
d6e8d8
}
d6e8d8
d6e8d8
/**
d6e8d8
* Initialise advanced tab colours on first load
d6e8d8
* block_id = block that is opened
d6e8d8
*/
d6e8d8
function init_colours(block_id)
d6e8d8
{	
d6e8d8
	var block = document.getElementById('advanced' + block_id);
d6e8d8
	var panels = block.getElementsByTagName('div');
d6e8d8
	var tab = document.getElementById('tab' + id);
d6e8d8
d6e8d8
	for (var i = 0; i < panels.length; i++)
d6e8d8
	{
d6e8d8
		if(panels[i].className == 'permissions-panel')
d6e8d8
		{
d6e8d8
			set_colours(panels[i].id.replace(/options/, ''), true);
d6e8d8
		}
d6e8d8
	}
d6e8d8
d6e8d8
	tab.className = tab.className + ' activetab';
d6e8d8
}
d6e8d8
d6e8d8
/**
d6e8d8
* Show/hide option panels
d6e8d8
* value = suffix for ID to show
d6e8d8
* adv = we are opening advanced permissions
d6e8d8
* view = called from view permissions
d6e8d8
*/
d6e8d8
function swap_options(pmask, fmask, cat, adv, view)
d6e8d8
{
d6e8d8
	id = pmask + fmask + cat;
d6e8d8
	active_option = active_pmask + active_fmask + active_cat;
d6e8d8
d6e8d8
	var	old_tab = document.getElementById('tab' + active_option);	
d6e8d8
	var new_tab = document.getElementById('tab' + id);
d6e8d8
	var adv_block = document.getElementById('advanced' + pmask + fmask);
d6e8d8
d6e8d8
	if (adv_block.style.display == 'block' && adv == true)
d6e8d8
	{
d6e8d8
		dE('advanced' + pmask + fmask, -1);
d6e8d8
		reset_opacity(1);
d6e8d8
		display_checkboxes(false);
d6e8d8
		return;
d6e8d8
	}
d6e8d8
d6e8d8
	// no need to set anything if we are clicking on the same tab again
d6e8d8
	if (new_tab == old_tab && !adv)
d6e8d8
	{
d6e8d8
		return;
d6e8d8
	}
d6e8d8
d6e8d8
	// init colours
d6e8d8
	if (adv && (pmask + fmask) != (active_pmask + active_fmask))
d6e8d8
	{
d6e8d8
		init_colours(pmask + fmask);
d6e8d8
		display_checkboxes(true);
d6e8d8
		reset_opacity(1);
d6e8d8
	} 
d6e8d8
	else if (adv) 
d6e8d8
	{
d6e8d8
		//Checkbox might have been clicked, but we need full visibility
d6e8d8
		display_checkboxes(true);
d6e8d8
		reset_opacity(1);
d6e8d8
	}
d6e8d8
d6e8d8
	// set active tab
d6e8d8
	old_tab.className = old_tab.className.replace(/\ activetab/g, '');
d6e8d8
	new_tab.className = new_tab.className + ' activetab';
d6e8d8
d6e8d8
	if (id == active_option && adv != true)
d6e8d8
	{
d6e8d8
		return;
d6e8d8
	}
d6e8d8
d6e8d8
	dE('options' + active_option, -1);
d6e8d8
	
d6e8d8
	//hiding and showing the checkbox
d6e8d8
	if (document.getElementById('checkbox' + active_pmask + active_fmask))
d6e8d8
	{
d6e8d8
		dE('checkbox' + pmask + fmask, -1);	
d6e8d8
		
d6e8d8
		if ((pmask + fmask) != (active_pmask + active_fmask))
d6e8d8
		{
d6e8d8
			document.getElementById('checkbox' + active_pmask + active_fmask).style.display = 'inline';
d6e8d8
		}
d6e8d8
	}
d6e8d8
d6e8d8
	if (!view)
d6e8d8
	{
d6e8d8
		dE('advanced' + active_pmask + active_fmask, -1);
d6e8d8
	}
d6e8d8
d6e8d8
	if (!view)
d6e8d8
	{
d6e8d8
		dE('advanced' + pmask + fmask, 1);
d6e8d8
	}
d6e8d8
	dE('options' + id, 1);
d6e8d8
d6e8d8
	active_pmask = pmask;
d6e8d8
	active_fmask = fmask;
d6e8d8
	active_cat = cat;
d6e8d8
}
d6e8d8
d6e8d8
/**
d6e8d8
* Mark all radio buttons in one panel
d6e8d8
* id = table ID container, s = status ['y'/'u'/'n']
d6e8d8
*/
d6e8d8
function mark_options(id, s)
d6e8d8
{
d6e8d8
	var t = document.getElementById(id);
d6e8d8
d6e8d8
	if (!t)
d6e8d8
	{
d6e8d8
		return;
d6e8d8
	}
d6e8d8
d6e8d8
	var rb = t.getElementsByTagName('input');
d6e8d8
d6e8d8
	for (var r = 0; r < rb.length; r++)
d6e8d8
	{
d6e8d8
		if (rb[r].id.substr(rb[r].id.length-1) == s)
d6e8d8
		{
d6e8d8
			rb[r].checked = true;
d6e8d8
		}
d6e8d8
	}
d6e8d8
}
d6e8d8
d6e8d8
function mark_one_option(id, field_name, s)
d6e8d8
{
d6e8d8
	var t = document.getElementById(id);
d6e8d8
d6e8d8
	if (!t)
d6e8d8
	{
d6e8d8
		return;
d6e8d8
	}
d6e8d8
d6e8d8
	var rb = t.getElementsByTagName('input');
d6e8d8
d6e8d8
	for (var r = 0; r < rb.length; r++)
d6e8d8
	{
d6e8d8
		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)
d6e8d8
		{
d6e8d8
			rb[r].checked = true;
d6e8d8
		}
d6e8d8
	}
d6e8d8
}
d6e8d8
d6e8d8
/**
d6e8d8
* Reset role dropdown field to Select role... if an option gets changed
d6e8d8
*/
d6e8d8
function reset_role(id)
d6e8d8
{
d6e8d8
	var t = document.getElementById(id);
d6e8d8
d6e8d8
	if (!t)
d6e8d8
	{
d6e8d8
		return;
d6e8d8
	}
d6e8d8
d6e8d8
	t.options[0].selected = true;
d6e8d8
}
d6e8d8
d6e8d8
/**
d6e8d8
* Load role and set options accordingly
d6e8d8
*/
d6e8d8
function set_role_settings(role_id, target_id)
d6e8d8
{
d6e8d8
	settings = role_options[role_id];
d6e8d8
d6e8d8
	if (!settings)
d6e8d8
	{
d6e8d8
		return;
d6e8d8
	}
d6e8d8
d6e8d8
	// Mark all options to no (unset) first...
d6e8d8
	mark_options(target_id, 'u');
d6e8d8
d6e8d8
	for (var r in settings)
d6e8d8
	{
d6e8d8
		mark_one_option(target_id, r, (settings[r] == 1) ? 'y' : 'n');
d6e8d8
	}
d6e8d8
}