aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB
diff options
context:
space:
mode:
Diffstat (limited to 'phpBB')
-rw-r--r--phpBB/adm/style/admin.css4
-rw-r--r--phpBB/adm/style/permission_mask.html7
-rw-r--r--phpBB/adm/style/tooltip.js43
-rw-r--r--phpBB/includes/acp/auth.php47
4 files changed, 70 insertions, 31 deletions
diff --git a/phpBB/adm/style/admin.css b/phpBB/adm/style/admin.css
index 4bb9922d56..e1668bf70b 100644
--- a/phpBB/adm/style/admin.css
+++ b/phpBB/adm/style/admin.css
@@ -2471,7 +2471,7 @@ fieldset.permissions .padding {
.roles-options > .dropdown {
left: auto;
- top: 3em;
+ top: 3.2em;
width: 250px;
}
@@ -2489,7 +2489,7 @@ fieldset.permissions .padding {
border-radius: 3px;
padding: 4px;
width: 250px;
- display: block;
+ display: none;
background: url('../images/arrow_down.gif') no-repeat 245px .7em;
}
diff --git a/phpBB/adm/style/permission_mask.html b/phpBB/adm/style/permission_mask.html
index 347da3181e..017d29d832 100644
--- a/phpBB/adm/style/permission_mask.html
+++ b/phpBB/adm/style/permission_mask.html
@@ -39,18 +39,19 @@
</div>
<dl class="permissions-simple">
<dt style="width: 20%"><label for="role{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}">{L_ROLE}{L_COLON}</label></dt>
- {% if role_options %}
+ {% if p_mask.f_mask.role_options %}
<dd style="margin-{S_CONTENT_FLOW_BEGIN}{L_COLON} 20%">
<div class="dropdown-container dropdown-button-control roles-options" data-alt-text="{LA_ROLE_DESCRIPTION}">
+ <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}]">{p_mask.f_mask.S_ROLE_OPTIONS}</select>
<span title="Roles" class="button icon-button tools-icon dropdown-trigger dropdown-select">{L_NO_ROLE_ASSIGNED}</span>
<div class="dropdown hidden">
<ul class="dropdown-contents" id="role{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}" >
- {% for role in loops.role_options %}
+ {% for role in p_mask.f_mask.role_options %}
<li data-id="{{ role.ID }}" data-target-id="advanced{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}" data-title="{{ role.TITLE }}"{% if role.SELECTED == true %} data-selected="{{ role.SELECTED }}"{% endif %}>{{ role.ROLE_NAME }}</li>
{% endfor %}
</ul>
</div>
- <input type="hidden" name="role[{p_mask.f_mask.UG_ID}][{p_mask.f_mask.FORUM_ID}]"{% if S_ROLE_ID %}value="{{ S_ROLE_ID }}"{% endif %} />
+ <input type="hidden" data-name="role[{p_mask.f_mask.UG_ID}][{p_mask.f_mask.FORUM_ID}]"{% if p_mask.f_mask.S_ROLE_ID %}value="{{ p_mask.f_mask.S_ROLE_ID }}"{% endif %} />
</div>
</dd>
{% else %}
diff --git a/phpBB/adm/style/tooltip.js b/phpBB/adm/style/tooltip.js
index 68964034f0..65773ae14f 100644
--- a/phpBB/adm/style/tooltip.js
+++ b/phpBB/adm/style/tooltip.js
@@ -141,20 +141,43 @@ phpbb.positionTooltip = function ($element) {
*/
phpbb.prepareRolesDropdown = function () {
var $options = $('.roles-options li');
- var $rolesOptions = $options.closest('.roles-options');
- var $span = $rolesOptions.children('span');
+
+ // Display span and hide select
+ $('.roles-options > span').css('display', 'block');
+ $('.roles-options > select').hide();
+ $('.roles-options > input[type=hidden]').each(function () {
+ var $this = $(this);
+
+ if ($this.attr('data-name') && !$this.attr('name')) {
+ $this.attr('name', $this.attr('data-name'));
+ }
+ });
// Prepare highlighting of select options and settings update
$options.each(function () {
var $this = $(this);
+ var $rolesOptions = $this.closest('.roles-options');
+ var $span = $rolesOptions.children('span');
// Correctly show selected option
if (typeof $this.attr('data-selected') !== 'undefined') {
- $rolesOptions.closest('.roles-options')
+ $rolesOptions
.children('span')
.text($this.text())
.attr('data-default', $this.text())
.attr('data-default-val', $this.attr('data-id'));
+
+ // Save default text of drop down if there is no default set yet
+ if (typeof $span.attr('data-default') === 'undefined') {
+ $span.attr('data-default', $span.text());
+ }
+
+ // Prepare resetting drop down on form reset
+ $this.closest('form').on('reset', function () {
+ $span.text($span.attr('data-default'));
+ $rolesOptions.children('input[type=hidden]')
+ .val($span.attr('data-default-val'));
+ });
}
$this.on('mouseover', function () {
@@ -163,6 +186,7 @@ phpbb.prepareRolesDropdown = function () {
$this.addClass('roles-highlight');
}).on('click', function () {
var $this = $(this);
+ var $rolesOptions = $this.closest('.roles-options');
// Update settings
set_role_settings($this.attr('data-id'), $this.attr('data-target-id'));
@@ -178,19 +202,6 @@ phpbb.prepareRolesDropdown = function () {
$('body').trigger('click');
});
});
-
- // Save default text of drop down if there is no default set yet
- if (typeof $span.attr('data-default') === 'undefined') {
- $span.attr('data-default', $span.text());
- }
-
- // Prepare resetting drop down on form reset
- $options.closest('form').on('reset', function () {
- $span.text($span.attr('data-default'));
- $rolesOptions.children('input[type=hidden]')
- .val($span.attr('data-id'));
- });
-
};
// Run onload functions for RolesDropdown and tooltips
diff --git a/phpBB/includes/acp/auth.php b/phpBB/includes/acp/auth.php
index 11478842d7..b36b900396 100644
--- a/phpBB/includes/acp/auth.php
+++ b/phpBB/includes/acp/auth.php
@@ -466,8 +466,10 @@ class auth_admin extends \phpbb\auth\auth
// Build role dropdown options
$current_role_id = (isset($cur_roles[$ug_id][$forum_id])) ? $cur_roles[$ug_id][$forum_id] : 0;
- // Output current role id to template
- $template->assign_var('S_ROLE_ID', $current_role_id);
+ $role_options = array();
+
+ $s_role_options = '';
+ $current_role_id = (isset($cur_roles[$ug_id][$forum_id])) ? $cur_roles[$ug_id][$forum_id] : 0;
@reset($roles);
while (list($role_id, $role_row) = each($roles))
@@ -475,12 +477,20 @@ class auth_admin extends \phpbb\auth\auth
$role_description = (!empty($user->lang[$role_row['role_description']])) ? $user->lang[$role_row['role_description']] : nl2br($role_row['role_description']);
$role_name = (!empty($user->lang[$role_row['role_name']])) ? $user->lang[$role_row['role_name']] : $role_row['role_name'];
- $template->assign_block_vars('role_options', array(
+ $title = ($role_description) ? ' title="' . $role_description . '"' : '';
+ $s_role_options .= '<option value="' . $role_id . '"' . (($role_id == $current_role_id) ? ' selected="selected"' : '') . $title . '>' . $role_name . '</option>';
+
+ $role_options[] = array(
'ID' => $role_id,
'ROLE_NAME' => $role_name,
'TITLE' => $role_description,
'SELECTED' => $role_id == $current_role_id,
- ));
+ );
+ }
+
+ if ($s_role_options)
+ {
+ $s_role_options = '<option value="0"' . ((!$current_role_id) ? ' selected="selected"' : '') . ' title="' . htmlspecialchars($user->lang['NO_ROLE_ASSIGNED_EXPLAIN']) . '">' . $user->lang['NO_ROLE_ASSIGNED'] . '</option>' . $s_role_options;
}
if (!$current_role_id && $mode != 'view')
@@ -504,9 +514,13 @@ class auth_admin extends \phpbb\auth\auth
$template->assign_block_vars($tpl_pmask . '.' . $tpl_fmask, array(
'NAME' => $ug_names_ary[$ug_id],
'UG_ID' => $ug_id,
+ 'S_ROLE_OPTIONS' => $s_role_options,
'S_CUSTOM' => $s_custom_permissions,
- 'FORUM_ID' => $forum_id)
- );
+ 'FORUM_ID' => $forum_id,
+ 'S_ROLE_ID' => $current_role_id,
+ ));
+
+ $template->assign_block_vars_array($tpl_pmask . '.' . $tpl_fmask . '.role_options', $role_options);
$this->assign_cat_array($ug_array, $tpl_pmask . '.' . $tpl_fmask . '.' . $tpl_category, $tpl_mask, $ug_id, $forum_id, ($mode == 'view'), $show_trace);
@@ -551,8 +565,10 @@ class auth_admin extends \phpbb\auth\auth
// Build role dropdown options
$current_role_id = (isset($cur_roles[$ug_id][$forum_id])) ? $cur_roles[$ug_id][$forum_id] : 0;
- // Output current role id to template
- $template->assign_var('S_ROLE_ID', $current_role_id);
+ $role_options = array();
+
+ $current_role_id = (isset($cur_roles[$ug_id][$forum_id])) ? $cur_roles[$ug_id][$forum_id] : 0;
+ $s_role_options = '';
@reset($roles);
while (list($role_id, $role_row) = each($roles))
@@ -560,12 +576,20 @@ class auth_admin extends \phpbb\auth\auth
$role_description = (!empty($user->lang[$role_row['role_description']])) ? $user->lang[$role_row['role_description']] : nl2br($role_row['role_description']);
$role_name = (!empty($user->lang[$role_row['role_name']])) ? $user->lang[$role_row['role_name']] : $role_row['role_name'];
- $template->assign_block_vars('role_options', array(
+ $title = ($role_description) ? ' title="' . $role_description . '"' : '';
+ $s_role_options .= '<option value="' . $role_id . '"' . (($role_id == $current_role_id) ? ' selected="selected"' : '') . $title . '>' . $role_name . '</option>';
+
+ $role_options[] = array(
'ID' => $role_id,
'ROLE_NAME' => $role_name,
'TITLE' => $role_description,
'SELECTED' => $role_id == $current_role_id,
- ));
+ );
+ }
+
+ if ($s_role_options)
+ {
+ $s_role_options = '<option value="0"' . ((!$current_role_id) ? ' selected="selected"' : '') . ' title="' . htmlspecialchars($user->lang['NO_ROLE_ASSIGNED_EXPLAIN']) . '">' . $user->lang['NO_ROLE_ASSIGNED'] . '</option>' . $s_role_options;
}
if (!$current_role_id && $mode != 'view')
@@ -591,9 +615,12 @@ class auth_admin extends \phpbb\auth\auth
'PADDING' => ($forum_id == 0) ? '' : $forum_names_ary[$forum_id]['padding'],
'S_CUSTOM' => $s_custom_permissions,
'UG_ID' => $ug_id,
+ 'S_ROLE_OPTIONS' => $s_role_options,
'FORUM_ID' => $forum_id)
);
+ $template->assign_block_vars_array($tpl_pmask . '.' . $tpl_fmask . '.role_options', $role_options);
+
$this->assign_cat_array($forum_array, $tpl_pmask . '.' . $tpl_fmask . '.' . $tpl_category, $tpl_mask, $ug_id, $forum_id, ($mode == 'view'), $show_trace);
}