From 49736322887029b409ff177eafca9581c6622e83 Mon Sep 17 00:00:00 2001 From: Marc Alexander Date: Fri, 5 Feb 2016 23:48:57 +0100 Subject: [PATCH 01/12] [ticket/14315] Only add role options specified for each group PHPBB3-14315 --- phpBB/adm/style/permission_mask.html | 2 ++ phpBB/includes/acp/auth.php | 1 + 2 files changed, 3 insertions(+) diff --git a/phpBB/adm/style/permission_mask.html b/phpBB/adm/style/permission_mask.html index 347da3181e..75e76b157d 100644 --- a/phpBB/adm/style/permission_mask.html +++ b/phpBB/adm/style/permission_mask.html @@ -46,7 +46,9 @@ diff --git a/phpBB/includes/acp/auth.php b/phpBB/includes/acp/auth.php index 11478842d7..a3972158a2 100644 --- a/phpBB/includes/acp/auth.php +++ b/phpBB/includes/acp/auth.php @@ -477,6 +477,7 @@ class auth_admin extends \phpbb\auth\auth $template->assign_block_vars('role_options', array( 'ID' => $role_id, + 'UG_ID' => $ug_id, 'ROLE_NAME' => $role_name, 'TITLE' => $role_description, 'SELECTED' => $role_id == $current_role_id, From eab1b1ad11ae2e42cf4f6c3af9f7171d6dd0837b Mon Sep 17 00:00:00 2001 From: Marc Alexander Date: Fri, 5 Feb 2016 23:59:19 +0100 Subject: [PATCH 02/12] [ticket/14315] Correctly set default values and reset values The permissions tooltip javascript failed at correctly passing the default values to the page. The same applied to the display_mask() method in includes/acp/auth.php. PHPBB3-14315 --- phpBB/adm/style/permission_mask.html | 2 +- phpBB/adm/style/tooltip.js | 32 ++++++++++++++-------------- phpBB/includes/acp/auth.php | 8 +++---- 3 files changed, 20 insertions(+), 22 deletions(-) diff --git a/phpBB/adm/style/permission_mask.html b/phpBB/adm/style/permission_mask.html index 75e76b157d..aa18a40cb7 100644 --- a/phpBB/adm/style/permission_mask.html +++ b/phpBB/adm/style/permission_mask.html @@ -52,7 +52,7 @@ {% endfor %} - + {% else %} diff --git a/phpBB/adm/style/tooltip.js b/phpBB/adm/style/tooltip.js index 68964034f0..3abeefbffe 100644 --- a/phpBB/adm/style/tooltip.js +++ b/phpBB/adm/style/tooltip.js @@ -141,20 +141,32 @@ phpbb.positionTooltip = function ($element) { */ phpbb.prepareRolesDropdown = function () { var $options = $('.roles-options li'); - var $rolesOptions = $options.closest('.roles-options'); - var $span = $rolesOptions.children('span'); // 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 +175,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 +191,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 a3972158a2..755923ff8c 100644 --- a/phpBB/includes/acp/auth.php +++ b/phpBB/includes/acp/auth.php @@ -466,9 +466,6 @@ 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); - @reset($roles); while (list($role_id, $role_row) = each($roles)) { @@ -506,8 +503,9 @@ class auth_admin extends \phpbb\auth\auth 'NAME' => $ug_names_ary[$ug_id], 'UG_ID' => $ug_id, 'S_CUSTOM' => $s_custom_permissions, - 'FORUM_ID' => $forum_id) - ); + 'FORUM_ID' => $forum_id, + 'S_ROLE_ID' => $current_role_id, + )); $this->assign_cat_array($ug_array, $tpl_pmask . '.' . $tpl_fmask . '.' . $tpl_category, $tpl_mask, $ug_id, $forum_id, ($mode == 'view'), $show_trace); From 4cfba8f3a40c424d831b6034bdf1dc4975822406 Mon Sep 17 00:00:00 2001 From: Marc Alexander Date: Sat, 6 Feb 2016 09:33:33 +0100 Subject: [PATCH 03/12] [ticket/14315] Build role options for each permission group Previously all role options were put into one array. This required filtering the options. Instead, these are now passed to the template via template loops. PHPBB3-14315 --- phpBB/adm/style/permission_mask.html | 6 ++---- phpBB/includes/acp/auth.php | 9 ++++++--- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/phpBB/adm/style/permission_mask.html b/phpBB/adm/style/permission_mask.html index aa18a40cb7..721fc42473 100644 --- a/phpBB/adm/style/permission_mask.html +++ b/phpBB/adm/style/permission_mask.html @@ -39,16 +39,14 @@
- {% if role_options %} + {% if p_mask.f_mask.role_options %}