aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/adm
diff options
context:
space:
mode:
authorMeik Sievertsen <acydburn@phpbb.com>2006-02-22 21:42:26 +0000
committerMeik Sievertsen <acydburn@phpbb.com>2006-02-22 21:42:26 +0000
commit6b13f94be9fdd4054e08d593f5c871a11853344e (patch)
treea9394609b17fc472f2b9748d6e16130d18df22aa /phpBB/adm
parent19d5dddaebecd2ef85eee40690a69f272fafdb2d (diff)
downloadforums-6b13f94be9fdd4054e08d593f5c871a11853344e.tar
forums-6b13f94be9fdd4054e08d593f5c871a11853344e.tar.gz
forums-6b13f94be9fdd4054e08d593f5c871a11853344e.tar.bz2
forums-6b13f94be9fdd4054e08d593f5c871a11853344e.tar.xz
forums-6b13f94be9fdd4054e08d593f5c871a11853344e.zip
implementing permission roles
- copy permissions (adding groups) - copy permissions (adding forums) - checking proper groupadd/del settings - added intro page to permissions (to give an overview and quick links) - able to select forums + subforums, single forum, all groups, all users (permission screens) - able to reset permissions (only reset input field) - fix forum deletion bug git-svn-id: file:///svn/phpbb/trunk@5574 89ea8834-ac86-4346-8a33-228a782c2dd0
Diffstat (limited to 'phpBB/adm')
-rw-r--r--phpBB/adm/style/acp_forums.html6
-rw-r--r--phpBB/adm/style/acp_groups.html13
-rw-r--r--phpBB/adm/style/acp_permission_roles.html224
-rw-r--r--phpBB/adm/style/acp_permissions.html54
-rw-r--r--phpBB/adm/style/permission_mask.html90
-rw-r--r--phpBB/adm/style/permission_roles_mask.html38
6 files changed, 409 insertions, 16 deletions
diff --git a/phpBB/adm/style/acp_forums.html b/phpBB/adm/style/acp_forums.html
index 3d7d5bcc43..e1f2c69152 100644
--- a/phpBB/adm/style/acp_forums.html
+++ b/phpBB/adm/style/acp_forums.html
@@ -99,6 +99,12 @@
<dt><label for="forum_style">{L_FORUM_STYLE}:</label></dt>
<dd><select id="forum_style" name="forum_style"><option value="0">{L_DEFAULT_STYLE}</option>{S_STYLES_OPTIONS}</select></dd>
</dl>
+ <!-- IF S_ADD_ACTION -->
+ <dl>
+ <dt><label for="forum_perm_from">{L_COPY_PERMISSIONS}:</label><br /><span>{L_COPY_PERMISSIONS_EXPLAIN}</span></dt>
+ <dd><select id="forum_perm_from" name="forum_perm_from"><option value="0">{L_NO_PERMISSIONS}</option>{S_FORUM_OPTIONS}</select></dd>
+ </dl>
+ <!-- ENDIF -->
</fieldset>
<div id="forum_cat_options"<!-- IF not S_FORUM_CAT --> style="display: none;"<!-- ENDIF -->>
diff --git a/phpBB/adm/style/acp_groups.html b/phpBB/adm/style/acp_groups.html
index c55b51e98a..bf95ee1e9e 100644
--- a/phpBB/adm/style/acp_groups.html
+++ b/phpBB/adm/style/acp_groups.html
@@ -42,6 +42,13 @@
<!-- ELSE -->
<input name="group_type" type="hidden" value="{GROUP_TYPE_SPECIAL}" />
<!-- ENDIF -->
+
+ <!-- IF S_ADD_GROUP -->
+ <dl>
+ <dt><label for="group_perm_from">{L_COPY_PERMISSIONS}:</label><br /><span>{L_COPY_PERMISSIONS_EXPLAIN}</span></dt>
+ <dd><select id="group_perm_from" name="group_perm_from"><option value="0">{L_NO_PERMISSIONS}</option>{S_GROUP_OPTIONS}</select></dd>
+ </dl>
+ <!-- ENDIF -->
</fieldset>
<fieldset>
@@ -271,7 +278,9 @@
</table>
<fieldset class="quick">
- {L_CREATE_GROUP}: <input type="text" name="group_name" value="" /> <input class="button2" type="submit" name="add" value="{L_SUBMIT}" />
+ <!-- IF S_GROUP_ADD -->
+ {L_CREATE_GROUP}: <input type="text" name="group_name" value="" /> <input class="button2" type="submit" name="add" value="{L_SUBMIT}" />
+ <!-- ENDIF -->
</fieldset>
<h1>{L_SPECIAL_GROUPS}</h1>
@@ -294,7 +303,7 @@
<td style="text-align: center;">{groups.TOTAL_MEMBERS}</td>
<td style="text-align: center;"><a href="{groups.U_DEFAULT}">{L_GROUP_DEFAULT}</a></td>
<td style="text-align: center;"><a href="{groups.U_EDIT}">{L_EDIT}</a></td>
- <td style="text-align: center;"><!-- IF not groups.S_GROUP_SPECIAL --><a href="{groups.U_DELETE}">{L_DELETE}</a><!-- ELSE -->{L_DELETE}<!-- ENDIF --></td>
+ <td style="text-align: center;"><!-- IF not groups.S_GROUP_SPECIAL and groups.U_DELETE --><a href="{groups.U_DELETE}">{L_DELETE}</a><!-- ELSE -->{L_DELETE}<!-- ENDIF --></td>
</tr>
<!-- ENDIF -->
<!-- END groups -->
diff --git a/phpBB/adm/style/acp_permission_roles.html b/phpBB/adm/style/acp_permission_roles.html
new file mode 100644
index 0000000000..21aa9d911f
--- /dev/null
+++ b/phpBB/adm/style/acp_permission_roles.html
@@ -0,0 +1,224 @@
+<!-- INCLUDE overall_header.html -->
+
+<a name="maincontent"></a>
+
+<!-- IF S_EDIT -->
+
+ <script type="text/javascript">
+ <!--
+ var active_option = 'options0';
+
+ // Show/hide option panels
+ // value = suffix for ID to show
+ function swap_options(id)
+ {
+ if (id == active_option)
+ {
+ return;
+ }
+
+ // Hide active options and display container
+ dE(active_option, -1);
+ dE(id, 1);
+
+ active_option = id;
+ }
+
+ // 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;
+ }
+ }
+ }
+
+ //-->
+ </script>
+
+ <a href="{U_BACK}" style="float: right">&laquo; {L_BACK}</a>
+
+ <h1>{L_TITLE}</h1>
+
+ <p>{L_EXPLAIN}</p>
+
+ <form id="acp_roles" method="post" action="{U_ACTION}">
+
+ <br />
+ <a href="#acl">&raquo; {L_SET_ROLE_PERMISSIONS}</a>
+
+ <fieldset>
+ <legend>{L_ROLE_DETAILS}</legend>
+ <dl>
+ <dt><label for="role_name">{L_ROLE_NAME}:</label></dt>
+ <dd><input name="role_name" type="text" id="role_name" value="{ROLE_NAME}" /></dd>
+ </dl>
+ <dl>
+ <dt><label for="pre_select">{L_DISPLAY_FOR_GROUP}:</label><br /><span>{L_DISPLAY_FOR_GROUP_EXPLAIN}</span></dt>
+ <dd><select name="pre_select" id="pre_select" onchange="if(this.value=='custom'){dE('custom_group',1);}else{dE('custom_group',-1);}">{S_PRESELECT_OPTIONS}</select></dd>
+ <dd id="custom_group"<!-- IF not S_CUSTOM_GROUP_IDS --> style="display:none;"<!-- ENDIF -->>
+ <select name="role_group_ids[]" id="role_group_id" style="width: 100%;" multiple="multiple" size="10">{S_GROUP_OPTIONS}</select>
+ </dd>
+ </dl>
+ </fieldset>
+
+ <fieldset class="quick">
+ <input type="submit" class="button1" name="submit" value="{L_SUBMIT}" />
+ </fieldset>
+
+ <!-- IF S_DISPLAY_ROLE_MASK -->
+
+ <h1>{L_ROLE_ASSIGNED_TO}</h1>
+
+ <!-- INCLUDE permission_roles_mask.html -->
+
+ <!-- ENDIF -->
+
+ <a name="acl"></a>
+
+ <a href="#maincontent">&raquo; {L_BACK_TO_TOP}</a><br />
+ <br /><br />
+
+ <h1>{L_ACL_TYPE}</h1>
+
+ <fieldset class="quick">
+ <a href="javascript: mark_options('a_options', 'y');">{L_ALL_YES}</a> &bull; <a href="javascript: mark_options('a_options', 'n');">{L_ALL_NO}</a> &bull; <a href="javascript: mark_options('a_options', 'u');">{L_ALL_UNSET}</a>
+ </fieldset>
+
+ <fieldset class="permissions">
+
+ <table cellspacing="1" class="pmask">
+ <thead>
+ <tr>
+ <!-- BEGIN auth -->
+ <th>{auth.CAT_NAME}</th>
+ <!-- END auth -->
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <!-- BEGIN auth -->
+ <!-- IF auth.S_YES -->
+ <td class="preset_yes">
+ <!-- ELSEIF auth.S_NO -->
+ <td class="preset_no">
+ <!-- ELSEIF auth.S_UNSET -->
+ <td class="preset_unset">
+ <!-- ELSE -->
+ <td class="preset_custom">
+ <!-- ENDIF -->
+ <a href="javascript:swap_options('options{auth.S_ROW_COUNT}');"><span>&nbsp;</span></a></td>
+ <!-- END auth -->
+ </tr>
+ <tr class="row3">
+ <td colspan="{S_NUM_PERM_COLS}" id="a_options" style="vertical-align: top; text-align: left; width: 100%;">
+ <!-- BEGIN auth -->
+ <table cellspacing="1" id="options{auth.S_ROW_COUNT}" class="type3" style="width: 100%; text-align: left;<!-- IF auth.S_FIRST_ROW --><!-- ELSE --> display: none;<!-- ENDIF -->">
+ <thead>
+ <tr>
+ <th scope="col" style="text-align: left; padding-left: 0;"><strong>{L_ACL_SETTING} [{auth.CAT_NAME}]</strong></th>
+ <th scope="col"><a href="javascript: mark_options('options{auth.S_ROW_COUNT}', 'y');">{L_ACL_YES}</a></th>
+ <th scope="col"><a href="javascript: mark_options('options{auth.S_ROW_COUNT}', 'u');">{L_ACL_UNSET}</a></th>
+ <th scope="col"><a href="javascript: mark_options('options{auth.S_ROW_COUNT}', 'n');">{L_ACL_NO}</a></th>
+ </tr>
+ </thead>
+ <tbody>
+ <!-- BEGIN mask -->
+ <!-- IF auth.mask.S_ROW_COUNT is even --><tr class="row4"><!-- ELSE --><tr class="row3"><!-- ENDIF -->
+ <th>{auth.mask.PERMISSION}</th>
+ <td class="unset"><input id="setting[{auth.mask.FIELD_NAME}]_y" name="setting[{auth.mask.FIELD_NAME}]" type="radio"<!-- IF auth.mask.S_YES --> checked="checked"<!-- ENDIF --> value="1" /></td>
+ <td class="unset"><input id="setting[{auth.mask.FIELD_NAME}]_u" name="setting[{auth.mask.FIELD_NAME}]" type="radio"<!-- IF auth.mask.S_UNSET --> checked="checked"<!-- ENDIF --> value="-1" /></td>
+ <td class="unset"><input id="setting[{auth.mask.FIELD_NAME}]_n" name="setting[{auth.mask.FIELD_NAME}]" type="radio"<!-- IF auth.mask.S_NO --> checked="checked"<!-- ENDIF --> value="0" /></td>
+ </tr>
+ <!-- END mask -->
+ </tbody>
+ </table>
+ <!-- END auth -->
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ </fieldset>
+
+ <fieldset class="quick">
+ <input type="submit" class="button1" name="submit" value="{L_SUBMIT}" />
+ </fieldset>
+
+ </form>
+
+ <a href="#maincontent">&raquo; {L_BACK_TO_TOP}</a><br />
+ <br />
+
+<!-- ELSE -->
+
+ <h1>{L_TITLE}</h1>
+
+ <p>{L_EXPLAIN}</p>
+
+ <form id="acp_roles" method="post" action="{U_ACTION}">
+
+ <table cellspacing="1">
+ <col class="col1" /><col class="col1" /><col class="col2" /><col class="col2" /><col class="col2" />
+ <thead>
+ <tr>
+ <th style="width: 50%">{L_ROLE_NAME}</th>
+ <th>{L_DISPLAY_FOR_GROUP}</th>
+ <th colspan="3">{L_OPTIONS}</th>
+ </tr>
+ </thead>
+ <tbody>
+ <!-- BEGIN roles -->
+ <tr>
+ <td style="vertical-align: top;"><b>{roles.NAME}</b></td>
+ <td style="vertical-align: top;">
+ <!-- IF roles.S_GROUP -->
+ <!-- BEGIN groups -->
+ <a href="{roles.groups.U_GROUP}">{roles.groups.GROUP_NAME}</a><br />
+ <!-- END groups -->
+ <!-- ELSE -->
+ {L_EVERY_USER_GROUP}
+ <!-- ENDIF -->
+ </td>
+ <td style="vertical-align: top; white-space: nowrap;"><a href="{roles.U_EDIT}">{L_EDIT_ROLE}</a></td>
+ <td style="vertical-align: top; white-space: nowrap;"><a href="{roles.U_DISPLAY_ITEMS}">{L_VIEW_ASSIGNED_ITEMS}</a></td>
+ <td style="vertical-align: top; white-space: nowrap;"><a href="{roles.U_REMOVE}">{L_REMOVE_ROLE}</a></td>
+ </tr>
+ <!-- END roles -->
+ </tbody>
+ </table>
+
+ <fieldset class="quick">
+ {L_CREATE_ROLE}: <input type="text" name="role_name" value="" /><!-- IF S_ROLE_OPTIONS --> <select name="options_from"><option value="0" selected="selected">{L_CREATE_ROLE_FROM}</option>{S_ROLE_OPTIONS}</select><!-- ENDIF --> <input class="button2" type="submit" name="add" value="{L_SUBMIT}" /><br />
+ </fieldset>
+
+ </form>
+
+ <!-- IF S_DISPLAY_ROLE_MASK -->
+
+ <a name="assigned_to"></a>
+
+ <h1>{L_ROLE_ASSIGNED_TO}</h1>
+
+ <!-- INCLUDE permission_roles_mask.html -->
+
+ <!-- ENDIF -->
+
+
+<!-- ENDIF -->
+
+
+<!-- INCLUDE overall_footer.html --> \ No newline at end of file
diff --git a/phpBB/adm/style/acp_permissions.html b/phpBB/adm/style/acp_permissions.html
index a3fe26426f..a9c09479a4 100644
--- a/phpBB/adm/style/acp_permissions.html
+++ b/phpBB/adm/style/acp_permissions.html
@@ -2,6 +2,16 @@
<a name="maincontent"></a>
+<!-- IF S_INTRO -->
+
+ <h1>{L_ACP_PERMISSIONS}</h1>
+
+ <p>{L_ACP_PERMISSIONS_EXPLAIN}</p>
+
+ Here, an introductionary text will be placed, explaining permissions and the several menu items. Also adding quick links to this page.
+
+<!-- ENDIF -->
+
<!-- IF S_SELECT_VICTIM -->
<h1>{L_TITLE}</h1>
@@ -33,6 +43,45 @@
</form>
+ <!-- IF S_FORUM_MULTIPLE -->
+
+ <form id="select_subforum" method="post" action="{U_ACTION}">
+
+ <fieldset>
+ <legend>{L_LOOK_UP_FORUM}</legend>
+ <p>{L_SELECT_FORUM_SUBFORUM_EXPLAIN}</p>
+ <dl>
+ <dt><label for="sforum">{L_LOOK_UP_FORUM}:</label></dt>
+ <dd><select id="sforum" name="subforum_id">{S_SUBFORUM_OPTIONS}</select></dd>
+ </dl>
+ </fieldset>
+
+ <fieldset class="quick">
+ {S_HIDDEN_FIELDS}
+ <input type="submit" name="submit" value="{L_SUBMIT}" class="button1" />
+ </fieldset>
+
+ </form>
+
+ <form id="select_single_forum" method="post" action="{U_ACTION}">
+
+ <fieldset>
+ <legend>{L_LOOK_UP_FORUM}</legend>
+ <dl>
+ <dt><label for="forum">{L_LOOK_UP_FORUM}:</label></dt>
+ <dd><select id="forum" name="forum_id[]">{S_FORUM_OPTIONS}</select></dd>
+ </dl>
+ </fieldset>
+
+ <fieldset class="quick">
+ {S_HIDDEN_FIELDS}
+ <input type="submit" name="submit" value="{L_SUBMIT}" class="button1" />
+ </fieldset>
+
+ </form>
+
+ <!-- ENDIF -->
+
<!-- ELSEIF S_SELECT_USER and S_CAN_SELECT_USER -->
<form id="select_victim" method="post" action="{U_ACTION}">
@@ -87,6 +136,7 @@
<legend>{L_MANAGE_USERS}</legend>
<dl>
<dd class="full"><select style="width: 100%;" name="user_id[]" multiple="multiple" size="5">{S_DEFINED_USER_OPTIONS}</select></dd>
+ <dd class="full" style="text-align: right;"><input type="checkbox" name="all_users" value="1" />&nbsp; {L_ALL_USERS}</dd>
</dl>
</fieldset>
@@ -133,6 +183,7 @@
<legend>{L_MANAGE_GROUPS}</legend>
<dl>
<dd class="full"><select style="width: 100%;" name="group_id[]" multiple="multiple" size="5">{S_DEFINED_GROUP_OPTIONS}</select></dd>
+ <dd class="full" style="text-align: right;"><input type="checkbox" name="all_groups" value="1" />&nbsp; {L_ALL_GROUPS}</dd>
</dl>
</fieldset>
@@ -301,12 +352,13 @@
<br /><br />
<fieldset class="quick" style="float: left;">
- {L_PERM_PRESET_APPLIED_TO_ALL}<br />
+ {L_PERMISSION_APPLIED_TO_ALL}<br />
<a href="javascript:marklist('set_permissions', 'inherit', true);">{L_MARK_ALL}</a> &bull; <a href="javascript:marklist('set_permissions', 'inherit', false);">{L_UNMARK_ALL}</a>
</fieldset>
<fieldset class="quick" style="float: right;">
<input class="button1" type="submit" name="action[apply_all_permissions]" value="{L_APPLY_ALL_PERMISSIONS}" />
+ <input class="button2" type="reset" name="cancel" value="{L_RESET}" />
</fieldset>
<br /><br />
diff --git a/phpBB/adm/style/permission_mask.html b/phpBB/adm/style/permission_mask.html
index 263ff3fffa..6fcc44da1c 100644
--- a/phpBB/adm/style/permission_mask.html
+++ b/phpBB/adm/style/permission_mask.html
@@ -5,6 +5,12 @@
var active_fmask = '0';
var active_cat = '0';
+ var role_options = new Array();
+
+ <!-- IF S_ROLE_JS_ARRAY -->
+ {S_ROLE_JS_ARRAY}
+ <!-- ENDIF -->
+
// Show/hide option panels
// value = suffix for ID to show
function swap_options(pmask, fmask, cat)
@@ -33,7 +39,7 @@
}
// Mark all radio buttons in one panel
- // id = table ID container, s = status [1/-1/0]
+ // id = table ID container, s = status ['y'/'u'/'n']
function mark_options(id, s)
{
var t = document.getElementById(id);
@@ -54,6 +60,60 @@
}
}
+ // Mark one radio button in one panel
+ // id = table ID container, field_name = the auth option, s = status ['y'/'u'/'n']
+ 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 unset first...
+ mark_options(target_id, 'u');
+
+ for (var r in settings)
+ {
+ mark_one_option(target_id, r, (settings[r] == 1) ? 'y' : 'n');
+ }
+ }
+
//-->
</script>
@@ -93,11 +153,11 @@
<!-- IF p_mask.S_VIEW -->
&nbsp;
<!-- ELSE -->
- <!-- <b>{L_PRESET}:</b>&nbsp; &nbsp;<select name="preset[{p_mask.f_mask.UG_ID}][{p_mask.f_mask.FORUM_ID}]">
- <option value="">Select preset...</option>
- <option value="2">Valued Members</option>
- <option value="3">Restricted Access</option>
- </select> -->
+ <!-- IF p_mask.f_mask.S_ROLE_OPTIONS -->
+ <b>{L_ROLE}:</b>&nbsp; &nbsp;<select id="role{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}" name="role[{p_mask.f_mask.UG_ID}][{p_mask.f_mask.FORUM_ID}]" onchange="set_role_settings(this.options[selectedIndex].value, 'a_options{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}')">{p_mask.f_mask.S_ROLE_OPTIONS}</select>
+ <!-- ELSE -->
+ <b>{L_ROLE}:</b> {L_NO_ROLE_AVAILABLE}
+ <!-- ENDIF -->
<!-- ENDIF -->
</td>
</tr>
@@ -126,7 +186,11 @@
<input class="button1" type="submit" name="psubmit[{p_mask.f_mask.UG_ID}][{p_mask.f_mask.FORUM_ID}]" value="{L_APPLY_PERMISSIONS}" />
</div>
<div style="float: right; text-align: right; width: 35%;">
- <p class="small"><a href="javascript: mark_options('a_options{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}', 'y')">{L_ALL_YES}</a> &bull; <a href="javascript: mark_options('a_options{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}', 'n')">{L_ALL_NO}</a> &bull; <a href="javascript: mark_options('a_options{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}', 'u')">{L_ALL_UNSET}</a></p>
+ <p class="small">
+ [<a href="javascript: mark_options('a_options{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}', 'y'); reset_role('role{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}');">{L_ALL_YES}</a>]<br />
+ [<a href="javascript: mark_options('a_options{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}', 'n'); reset_role('role{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}');">{L_ALL_NO}</a>]<br />
+ [<a href="javascript: mark_options('a_options{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}', 'u'); reset_role('role{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}');">{L_ALL_UNSET}</a>]
+ </p>
</div>
<!-- ELSE -->
&nbsp;
@@ -144,9 +208,9 @@
<th scope="col">{L_ACL_YES}</th>
<th scope="col">{L_ACL_NO}</th>
<!-- ELSE -->
- <th scope="col"><a href="javascript: mark_options('options{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}{p_mask.f_mask.category.S_ROW_COUNT}', 'y')">{L_ACL_YES}</a></th>
- <th scope="col"><a href="javascript: mark_options('options{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}{p_mask.f_mask.category.S_ROW_COUNT}', 'u')">{L_ACL_UNSET}</a></th>
- <th scope="col"><a href="javascript: mark_options('options{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}{p_mask.f_mask.category.S_ROW_COUNT}', 'n')">{L_ACL_NO}</a></th>
+ <th scope="col"><a href="javascript: mark_options('options{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}{p_mask.f_mask.category.S_ROW_COUNT}', 'y'); reset_role('role{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}');">{L_ACL_YES}</a></th>
+ <th scope="col"><a href="javascript: mark_options('options{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}{p_mask.f_mask.category.S_ROW_COUNT}', 'u'); reset_role('role{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}');">{L_ACL_UNSET}</a></th>
+ <th scope="col"><a href="javascript: mark_options('options{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}{p_mask.f_mask.category.S_ROW_COUNT}', 'n'); reset_role('role{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}');">{L_ACL_NO}</a></th>
<!-- ENDIF -->
</tr>
</thead>
@@ -158,9 +222,9 @@
<td<!-- IF p_mask.f_mask.category.mask.S_YES --> class="yes"<!-- ELSE --> class="unset"<!-- ENDIF -->>&nbsp;</td>
<td<!-- IF p_mask.f_mask.category.mask.S_NO --> class="no"<!-- ELSE --> class="unset"<!-- ENDIF -->>&nbsp;</td>
<!-- ELSE -->
- <td class="unset"><input id="{p_mask.f_mask.category.mask.S_FIELD_NAME}_y" name="{p_mask.f_mask.category.mask.S_FIELD_NAME}" type="radio"<!-- IF p_mask.f_mask.category.mask.S_YES --> checked="checked"<!-- ENDIF --> value="1" /></td>
- <td class="unset"><input id="{p_mask.f_mask.category.mask.S_FIELD_NAME}_u" name="{p_mask.f_mask.category.mask.S_FIELD_NAME}" type="radio"<!-- IF p_mask.f_mask.category.mask.S_UNSET --> checked="checked"<!-- ENDIF --> value="-1" /></td>
- <td class="unset"><input id="{p_mask.f_mask.category.mask.S_FIELD_NAME}_n" name="{p_mask.f_mask.category.mask.S_FIELD_NAME}" type="radio"<!-- IF p_mask.f_mask.category.mask.S_NO --> checked="checked"<!-- ENDIF --> value="0" /></td>
+ <td class="unset"><input onchange="reset_role('role{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}')" id="{p_mask.f_mask.category.mask.S_FIELD_NAME}_y" name="{p_mask.f_mask.category.mask.S_FIELD_NAME}" type="radio"<!-- IF p_mask.f_mask.category.mask.S_YES --> checked="checked"<!-- ENDIF --> value="1" /></td>
+ <td class="unset"><input onchange="reset_role('role{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}')" id="{p_mask.f_mask.category.mask.S_FIELD_NAME}_u" name="{p_mask.f_mask.category.mask.S_FIELD_NAME}" type="radio"<!-- IF p_mask.f_mask.category.mask.S_UNSET --> checked="checked"<!-- ENDIF --> value="-1" /></td>
+ <td class="unset"><input onchange="reset_role('role{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}')" id="{p_mask.f_mask.category.mask.S_FIELD_NAME}_n" name="{p_mask.f_mask.category.mask.S_FIELD_NAME}" type="radio"<!-- IF p_mask.f_mask.category.mask.S_NO --> checked="checked"<!-- ENDIF --> value="0" /></td>
<!-- ENDIF -->
</tr>
<!-- END mask -->
diff --git a/phpBB/adm/style/permission_roles_mask.html b/phpBB/adm/style/permission_roles_mask.html
new file mode 100644
index 0000000000..e88c5fd2ba
--- /dev/null
+++ b/phpBB/adm/style/permission_roles_mask.html
@@ -0,0 +1,38 @@
+
+<!-- BEGIN role_mask -->
+
+ <table cellspacing="1">
+ <caption><!-- IF role_mask.FORUM_ID -->{L_FORUM}: <!-- ENDIF -->{role_mask.NAME}</caption>
+ <tbody>
+ <tr>
+ <th>{L_USERS}</th>
+ </tr>
+ <tr>
+ <td class="row1">
+ <!-- BEGIN users -->
+ <a href="{role_mask.users.U_PROFILE}">{role_mask.users.USERNAME}</a><!-- IF not role_mask.users.S_LAST_ROW --> :: <!-- ENDIF -->
+ <!-- BEGINELSE -->
+ {L_USERS_NOT_ASSIGNED}
+ <!-- END users -->
+ </td>
+ </tr>
+ <tr>
+ <th>{L_GROUPS}</th>
+ </tr>
+ <tr>
+ <td class="row2">
+ <!-- BEGIN groups -->
+ <a href="{role_mask.groups.U_PROFILE}">{role_mask.groups.GROUP_NAME}</a><!-- IF not role_mask.groups.S_LAST_ROW --> :: <!-- ENDIF -->
+ <!-- BEGINELSE -->
+ {L_GROUPS_NOT_ASSIGNED}
+ <!-- END users -->
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+<!-- BEGINELSE -->
+
+ <p>{L_ROLE_NOT_ASSIGNED}</p>
+
+<!-- END role_mask --> \ No newline at end of file