]> gitweb.fluxo.info Git - lorea/elgg.git/commitdiff
Refs #2782: Fixed WSOD for invalid plugins on admin screen. Needs better CSS, but...
authorbrettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
Fri, 7 Jan 2011 21:17:59 +0000 (21:17 +0000)
committerbrettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
Fri, 7 Jan 2011 21:17:59 +0000 (21:17 +0000)
git-svn-id: http://code.elgg.org/elgg/trunk@7857 36083f99-b078-4883-b0ff-0f9b5a30f544

languages/en.php
views/default/admin/components/invalid_plugin.php [new file with mode: 0644]
views/default/admin/components/plugin.php
views/default/admin/plugins/advanced.php

index 10a99f9d35837c32f4e3e6e76e81411342eef588..1219a3de51c974ed7fe0e1df06aa0a2bf632f61a 100644 (file)
@@ -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 (file)
index 0000000..91c073f
--- /dev/null
@@ -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>
index d190e94a5aac151652cea80fead040ac9cf3e84c..a64fa72163650c69213215433f7026e8fa2da7a6 100644 (file)
@@ -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();
index 1138ace4f1e65390f7b5c5527943f2e6b9e5f4a9..1a308df73f9d43013a106f63a801477d92f86765 100644 (file)
@@ -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
        ));
 }
 ?>