From a716100dd669c130bf3a31426c3bb3cc1cad7092 Mon Sep 17 00:00:00 2001 From: Angel Fernando Quiroz Campos Date: Wed, 5 Oct 2016 15:36:14 -0500 Subject: [PATCH] Adding is_admin_plugin property to plugin class - refs BT#11636 --- main/admin/index.php | 14 +++++++++++++- main/admin/settings.lib.php | 16 +++++++++++++--- main/inc/lib/plugin.class.php | 2 ++ 3 files changed, 28 insertions(+), 4 deletions(-) diff --git a/main/admin/index.php b/main/admin/index.php index 112b2e20bc..90367ec3eb 100644 --- a/main/admin/index.php +++ b/main/admin/index.php @@ -411,9 +411,21 @@ if (api_is_platform_admin()) { $plugin_obj = new AppPlugin(); $items = array(); foreach ($_plugins['menu_administrator'] as $plugin_name) { + $itemUrl = ''; $plugin_info = $plugin_obj->getPluginInfo($plugin_name); + + if ($plugin_info['is_admin_plugin']) { + $itemUrl = '/admin.php'; + } elseif ($plugin_info['is_admin_plugin']) { + $itemUrl = '/start.php'; + } + + if (!file_exists(api_get_path(SYS_PLUGIN_PATH) . $plugin_name . $itemUrl)) { + continue; + } + $items[] = array( - 'url' => api_get_path(WEB_CODE_PATH) . '../plugin/'.$plugin_name.'/start.php', + 'url' => api_get_path(WEB_PLUGIN_PATH) . $plugin_name . $itemUrl, 'label' => $plugin_info['title'] ); } diff --git a/main/admin/settings.lib.php b/main/admin/settings.lib.php index 3d61f63e0a..55eeed8a8a 100755 --- a/main/admin/settings.lib.php +++ b/main/admin/settings.lib.php @@ -79,10 +79,20 @@ function handle_regions() echo ''; $selected_plugins = $plugin_obj->get_areas_by_plugin($plugin); - if (isset($plugin_info['is_course_plugin']) && $plugin_info['is_course_plugin']) { - $region_list = array('course_tool_plugin' => 'course_tool_plugin'); - } else { + $region_list = []; + + $isAdminPlugin = isset($plugin_info['is_admin_plugin']) && $plugin_info['is_admin_plugin']; + $isCoursePlugin = isset($plugin_info['is_course_plugin']) && $plugin_info['is_course_plugin']; + + if (!$isAdminPlugin && !$isCoursePlugin) { $region_list = $plugin_region_list; + } else { + if ($isAdminPlugin) { + $region_list['menu_administrator'] = 'menu_administrator'; + } + if ($isCoursePlugin) { + $region_list['course_tool_plugin'] = 'course_tool_plugin'; + } } echo Display::select('plugin_' . $plugin . '[]', $region_list, $selected_plugins, array('multiple' => 'multiple', 'style' => 'width:500px'), true, get_lang('None')); diff --git a/main/inc/lib/plugin.class.php b/main/inc/lib/plugin.class.php index 8f1c856013..4534247368 100755 --- a/main/inc/lib/plugin.class.php +++ b/main/inc/lib/plugin.class.php @@ -24,6 +24,7 @@ class Plugin // Translation strings. private $strings = null; public $isCoursePlugin = false; + public $isAdminPlugin = false; public $isMailPlugin = false; /** @@ -76,6 +77,7 @@ class Plugin $result['author'] = $this->get_author(); $result['plugin_class'] = get_class($this); $result['is_course_plugin'] = $this->isCoursePlugin; + $result['is_admin_plugin'] = $this->isAdminPlugin; $result['is_mail_plugin'] = $this->isMailPlugin; if ($form = $this->get_settings_form()) {