Fix plugin region in admin page - refs BT#13469

pull/2487/head
Angel Fernando Quiroz Campos 8 years ago
parent 8f802933a3
commit e99dd4b6c1
  1. 48
      main/admin/index.php
  2. 25
      main/inc/lib/plugin.class.php

@ -484,13 +484,7 @@ if (api_is_platform_admin()) {
if (isset($_plugins['menu_administrator']) &&
count($_plugins['menu_administrator']) > 0
) {
$menuAdministratorItems = [];
$plugin_obj = new AppPlugin();
$items = array();
foreach ($_plugins['menu_administrator'] as $pluginName) {
$menuAdministratorItems[] = $pluginName;
}
$menuAdministratorItems = $_plugins['menu_administrator'];
if ($menuAdministratorItems) {
$blocks['plugins']['icon'] = Display::return_icon(
@ -500,45 +494,27 @@ if (api_is_platform_admin()) {
ICON_SIZE_MEDIUM,
false
);
$blocks['plugins']['label'] = api_ucfirst(get_lang('Plugins'));
$blocks['plugins']['label'] = get_lang('Plugins');
$blocks['plugins']['class'] = 'block-admin-platform';
$blocks['plugins']['editable'] = true;
$plugin_obj = new AppPlugin();
$items = array();
foreach ($menuAdministratorItems as $plugin_name) {
$plugin_info = $plugin_obj->getPluginInfo($plugin_name);
foreach ($menuAdministratorItems as $pluginName) {
$pluginInfo = $plugin_obj->getPluginInfo($pluginName);
/** @var \Plugin $plugin */
$plugin = $pluginInfo['obj'];
$pluginUrl = $plugin->getAdminUrl();
if ($plugin_info['is_admin_plugin'] === false) {
if (!$pluginUrl) {
continue;
}
if ($plugin_info['is_admin_plugin']) {
$itemUrl = '/admin.php';
} elseif ($plugin_info['is_admin_plugin']) {
$itemUrl = '/start.php';
}
$itemUrl = $pluginName.'/start.php';
if (file_exists(api_get_path(SYS_PLUGIN_PATH).$itemUrl)) {
$items[] = array(
'url' => api_get_path(WEB_PLUGIN_PATH).$itemUrl,
'label' => $plugin_info['title']
);
continue;
}
$itemUrl = $pluginName.'/admin.php';
if (file_exists(api_get_path(SYS_PLUGIN_PATH).$itemUrl)) {
$items[] = array(
'url' => api_get_path(WEB_PLUGIN_PATH).$itemUrl,
'label' => $plugin_info['title']
);
}
$items[] = array(
'url' => $pluginUrl,
'label' => $pluginInfo['title']
);
}
$blocks['plugins']['items'] = $items;

@ -894,4 +894,29 @@ class Plugin
{
return $this;
}
/**
* Get the admin URL for the plugin if Plugin::isAdminPlugin is true
* @return null|string
*/
public function getAdminUrl()
{
if (!$this->isAdminPlugin) {
return null;
}
$name = $this->get_name();
$sysPath = api_get_path(SYS_PLUGIN_PATH).$name;
$webPath = api_get_path(WEB_PLUGIN_PATH).$name;
if (file_exists("$sysPath/admin.php")) {
return "$webPath/admin.php";
}
if (file_exists("$sysPath/start.php")) {
return "$webPath/start.php";
}
return null;
}
}

Loading…
Cancel
Save