From ab162b2fa6a453037f5deb29f107250690826a44 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Fri, 7 Apr 2017 20:00:06 +0200 Subject: [PATCH] [ticket/11150] Do not generate actions links in templates PHPBB3-11150 --- phpBB/adm/style/acp_ext_list.html | 10 +-- phpBB/includes/acp/acp_extensions.php | 92 +++++++++++++++++++++++++-- phpBB/language/en/acp/extensions.php | 3 +- 3 files changed, 91 insertions(+), 14 deletions(-) diff --git a/phpBB/adm/style/acp_ext_list.html b/phpBB/adm/style/acp_ext_list.html index eb2e75cff5..797cdc09bd 100644 --- a/phpBB/adm/style/acp_ext_list.html +++ b/phpBB/adm/style/acp_ext_list.html @@ -59,7 +59,7 @@ {L_DETAILS} - title="{enabled.actions.L_ACTION_EXPLAIN}">{enabled.actions.L_ACTION} + title="{enabled.actions.L_ACTION_EXPLAIN}" style="color: {enabled.actions.COLOR};">{enabled.actions.L_ACTION}  |  @@ -86,15 +86,9 @@ - title="{disabled.actions.L_ACTION_EXPLAIN}">{disabled.actions.L_ACTION} + title="{disabled.actions.L_ACTION_EXPLAIN}" style="color: {disabled.actions.COLOR};">{disabled.actions.L_ACTION}  |  - - -  |  - {L_UPDATE} -  | {L_REMOVE} - diff --git a/phpBB/includes/acp/acp_extensions.php b/phpBB/includes/acp/acp_extensions.php index 9225ae9f27..9a8357a733 100644 --- a/phpBB/includes/acp/acp_extensions.php +++ b/phpBB/includes/acp/acp_extensions.php @@ -41,7 +41,13 @@ class acp_extensions private $phpbb_dispatcher; private $ext_manager; +<<<<<<< 6c9f0a1c6fa9cfe406242bbf5f3204221003a00a function main() +======= + private $u_catalog_action; + + function main($id, $mode) +>>>>>>> [ticket/11150] Do not generate actions links in templates { // Start the page global $config, $user, $template, $request, $phpbb_extension_manager, $db, $phpbb_root_path, $phpbb_log, $phpbb_dispatcher; @@ -132,6 +138,8 @@ class acp_extensions } } + $this->u_catalog_action = append_sid("{$phpbb_admin_path}index.$phpEx", "i=$id&mode=catalog"); + // What are we doing? switch ($action) { @@ -165,10 +173,13 @@ class acp_extensions trigger_error($this->user->lang['CONFIG_UPDATED'] . adm_back_link($this->u_action)); } +<<<<<<< 6c9f0a1c6fa9cfe406242bbf5f3204221003a00a $this->list_enabled_exts(); $this->list_disabled_exts(); $this->list_available_exts(); +======= +>>>>>>> [ticket/11150] Do not generate actions links in templates /** @var \phpbb\composer\manager $composer_manager */ $composer_manager = $phpbb_container->get('ext.composer.manager'); @@ -176,15 +187,20 @@ class acp_extensions $managed_packages = []; if ($composer_manager->check_requirements()) { - $managed_packages = array_keys($composer_manager->get_managed_packages()); + $managed_packages = $composer_manager->get_managed_packages(); } + $this->request->disable_super_globals(); + + $this->list_enabled_exts($phpbb_extension_manager, $managed_packages); + $this->list_disabled_exts($phpbb_extension_manager, $managed_packages); + $this->list_available_exts($phpbb_extension_manager, $managed_packages); $this->template->assign_vars(array( 'U_VERSIONCHECK_FORCE' => $this->u_action . '&action=list&versioncheck_force=1', 'FORCE_UNSTABLE' => $this->config['extension_force_unstable'], 'U_ACTION' => $this->u_action, 'MANAGED_EXTENSIONS' => $managed_packages, - 'U_CATALOG_ACTION' => append_sid("{$phpbb_admin_path}index.$phpEx", "i=$id&mode=catalog"), + 'U_CATALOG_ACTION' => $this->u_catalog_action, )); $this->request->disable_super_globals(); @@ -753,11 +769,21 @@ class acp_extensions } /** +<<<<<<< 6c9f0a1c6fa9cfe406242bbf5f3204221003a00a * Lists all the enabled extensions and dumps to the template * * @return null */ public function list_enabled_exts() +======= + * Lists all the enabled extensions and dumps to the template + * + * @param \phpbb\extension\manager $phpbb_extension_manager An instance of the extension manager + * @param array $managed_packages List of managed packages + * @return null + */ + public function list_enabled_exts(\phpbb\extension\manager $phpbb_extension_manager, array $managed_packages) +>>>>>>> [ticket/11150] Do not generate actions links in templates { $enabled_extension_meta_data = array(); @@ -821,15 +847,37 @@ class acp_extensions $this->output_actions('enabled', array( 'DISABLE' => $this->u_action . '&action=disable_pre&ext_name=' . urlencode($name), )); + + if (isset($managed_packages[$block_vars['META_NAME']])) + { + $this->output_actions('disabled', [ + 'UPDATE' => $this->u_catalog_action . '&action=update&extension=' . urlencode($block_vars['META_NAME']), + 'REMOVE' => [ + 'url' => $this->u_catalog_action . '&action=remove&extension=' . urlencode($block_vars['META_NAME']), + 'color' => '#BC2A4D;', + ] + ]); + } } } /** +<<<<<<< 6c9f0a1c6fa9cfe406242bbf5f3204221003a00a * Lists all the disabled extensions and dumps to the template * * @return null */ public function list_disabled_exts() +======= + * Lists all the disabled extensions and dumps to the template + * + * @param \phpbb\extension\manager $phpbb_extension_manager An instance of the extension manager + * @param array $managed_packages List of managed packages + * + * @return null + */ + public function list_disabled_exts(\phpbb\extension\manager $phpbb_extension_manager, array $managed_packages) +>>>>>>> [ticket/11150] Do not generate actions links in templates { $disabled_extension_meta_data = array(); @@ -891,15 +939,36 @@ class acp_extensions 'ENABLE' => $this->u_action . '&action=enable_pre&ext_name=' . urlencode($name), 'DELETE_DATA' => $this->u_action . '&action=delete_data_pre&ext_name=' . urlencode($name), )); + + if (isset($managed_packages[$block_vars['META_NAME']])) + { + $this->output_actions('disabled', [ + 'UPDATE' => $this->u_catalog_action . '&action=update&extension=' . urlencode($block_vars['META_NAME']), + 'REMOVE' => [ + 'url' => $this->u_catalog_action . '&action=remove&extension=' . urlencode($block_vars['META_NAME']), + 'color' => '#BC2A4D;', + ] + ]); + } } } /** * Lists all the available extensions and dumps to the template +<<<<<<< 6c9f0a1c6fa9cfe406242bbf5f3204221003a00a * * @return null */ public function list_available_exts() +======= + * + * @param \phpbb\extension\manager $phpbb_extension_manager An instance of the extension manager + * @param array $managed_packages List of managed packages + * + * @return null + */ + public function list_available_exts(\phpbb\extension\manager $phpbb_extension_manager, array $managed_packages) +>>>>>>> [ticket/11150] Do not generate actions links in templates { $uninstalled = array_diff_key($this->ext_manager->all_available(), $this->ext_manager->all_configured()); @@ -969,13 +1038,26 @@ class acp_extensions */ private function output_actions($block, $actions) { - foreach ($actions as $lang => $url) + foreach ($actions as $lang => $options) { - $this->template->assign_block_vars($block . '.actions', array( + $url = $options; + if (is_array($options)) + { + $url = $options['url']; + } + + $vars = array( 'L_ACTION' => $this->user->lang('EXTENSION_' . $lang), 'L_ACTION_EXPLAIN' => (isset($this->user->lang['EXTENSION_' . $lang . '_EXPLAIN'])) ? $this->user->lang('EXTENSION_' . $lang . '_EXPLAIN') : '', 'U_ACTION' => $url, - )); + ); + + if (isset($options['color'])) + { + $vars['COLOR'] = $options['color']; + } + + $this->template->assign_block_vars($block . '.actions', $vars); } } diff --git a/phpBB/language/en/acp/extensions.php b/phpBB/language/en/acp/extensions.php index cb1c9c35e4..66bb5ca8ac 100644 --- a/phpBB/language/en/acp/extensions.php +++ b/phpBB/language/en/acp/extensions.php @@ -59,7 +59,6 @@ $lang = array_merge($lang, array( 'EXTENSION_NOT_AVAILABLE' => 'The selected extension is not available for this board, please verify your phpBB and PHP versions are allowed (see the details page).', 'EXTENSION_DIR_INVALID' => 'The selected extension has an invalid directory structure and cannot be enabled.', 'EXTENSION_NOT_ENABLEABLE' => 'The selected extension cannot be enabled, please verify the extension’s requirements.', - 'EXTENSION_NOT_INSTALLED' => 'The extension %s is not available. Please check that you have installed it correctly.', 'DETAILS' => 'Details', @@ -69,6 +68,8 @@ $lang = array_merge($lang, array( 'EXTENSION_DELETE_DATA' => 'Delete data', 'EXTENSION_DISABLE' => 'Disable', 'EXTENSION_ENABLE' => 'Enable', + 'EXTENSION_UPDATE' => 'Update', + 'EXTENSION_REMOVE' => 'Remove', 'EXTENSION_DELETE_DATA_EXPLAIN' => 'Deleting an extension’s data removes all of its data and settings. The extension files are retained so it can be enabled again.', 'EXTENSION_DISABLE_EXPLAIN' => 'Disabling an extension retains its files, data and settings but removes any functionality added by the extension.',