diff options
-rw-r--r-- | languages/en.php | 1 | ||||
-rw-r--r-- | views/default/admin/components/invalid_plugin.php | 23 | ||||
-rw-r--r-- | views/default/admin/components/plugin.php | 4 | ||||
-rw-r--r-- | views/default/admin/plugins/advanced.php | 10 |
4 files changed, 33 insertions, 5 deletions
diff --git a/languages/en.php b/languages/en.php index 10a99f9d3..1219a3de5 100644 --- a/languages/en.php +++ b/languages/en.php @@ -559,6 +559,7 @@ $english = array( 'admin:plugins:warning:elgg_version_unknown' => 'This plugin uses a legacy manifest file and does not specify a compatible Elgg version. It probably will not work!', 'admin:plugins:warning:unmet_dependencies' => 'This plugin has unmet dependencies and cannot be activated. Check dependencies under more info.', + 'admin:plugins:warning:invalid' => '%s is not a valid Elgg plugin. Check http://docs.elgg.org/Invalid_Plugin for more information.', 'admin:plugins:cannot_activate' => 'Cannot Activate', 'admin:plugins:set_priority:yes' => "Reordered %s.", diff --git a/views/default/admin/components/invalid_plugin.php b/views/default/admin/components/invalid_plugin.php new file mode 100644 index 000000000..91c073fac --- /dev/null +++ b/views/default/admin/components/invalid_plugin.php @@ -0,0 +1,23 @@ +<?php +/** + * Displays an invalid plugin on the admin screen. + * + * An invalid plugin is a plugin whose isValid() method returns false. + * This usually means there are required files missing, unreadable or in the + * wrong format. + * + * @package Elgg.Core + * @subpackage Plugins + */ + +$plugin = elgg_get_array_value('plugin', $vars); +$id = $plugin->getID(); +$path = htmlspecialchars($plugin->getPath()); +$message = elgg_echo('admin:plugins:warning:invalid', array($id)); + +?> + +<div class="plugin_details not_active"> + <p class="plugin-cannot-activate"><?php echo $message; ?></p> + <p><?php echo elgg_echo('admin:plugins:label:location') . ": " . $path; ?></p> +</div> diff --git a/views/default/admin/components/plugin.php b/views/default/admin/components/plugin.php index d190e94a5..a64fa7216 100644 --- a/views/default/admin/components/plugin.php +++ b/views/default/admin/components/plugin.php @@ -1,6 +1,6 @@ <?php /** - * Elgg plugin manifest class + * Displays a plugin on the admin screen. * * This file renders a plugin for the admin screen, including active/deactive, * manifest details & display plugin settings. @@ -12,6 +12,7 @@ $plugin = $vars['plugin']; $priority = $plugin->getPriority(); $active = $plugin->isActive(); + $name = $plugin->manifest->getName(); $can_activate = $plugin->canActivate(); $max_priority = elgg_get_max_plugin_priority(); @@ -108,7 +109,6 @@ if ($can_activate) { } // Display categories -$categories = $plugin->manifest->getCategories(); $categories_html = ''; if ($categories) { $categories_arr = array(); diff --git a/views/default/admin/plugins/advanced.php b/views/default/admin/plugins/advanced.php index 1138ace4f..1a308df73 100644 --- a/views/default/admin/plugins/advanced.php +++ b/views/default/admin/plugins/advanced.php @@ -18,6 +18,10 @@ $show_category = get_input('category', null); $categories = array(); foreach ($installed_plugins as $plugin) { + if (!$plugin->isValid()) { + continue; + } + $plugin_categories = $plugin->manifest->getCategories(); // handle plugins that don't declare categories @@ -82,9 +86,9 @@ $buttons .= $category_form; // Display list of plugins foreach ($installed_plugins as $plugin) { - echo elgg_view('admin/components/plugin', array( - 'plugin' => $plugin, - 'max_priority' => $max_priority + $view = ($plugin->isValid()) ? 'admin/components/plugin' : 'admin/components/invalid_plugin'; + echo elgg_view($view, array( + 'plugin' => $plugin )); } ?> |