diff options
author | ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544> | 2011-02-22 00:12:17 +0000 |
---|---|---|
committer | ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544> | 2011-02-22 00:12:17 +0000 |
commit | 00ea6e1ddd446c61c6ccd956989b4b9a1cd60119 (patch) | |
tree | 4d3d546d88326fd976a8f75c0b4d4dac9b54ef1b /views/default/object | |
parent | 8439fcf13d794780c89925896b8aaca521c14e30 (diff) | |
download | elgg-00ea6e1ddd446c61c6ccd956989b4b9a1cd60119.tar.gz elgg-00ea6e1ddd446c61c6ccd956989b4b9a1cd60119.tar.bz2 |
Refs #2950: Cleanup of plugin-related view structure
git-svn-id: http://code.elgg.org/elgg/trunk@8394 36083f99-b078-4883-b0ff-0f9b5a30f544
Diffstat (limited to 'views/default/object')
-rw-r--r-- | views/default/object/plugin.php | 18 | ||||
-rw-r--r-- | views/default/object/plugin/advanced.php | 223 | ||||
-rw-r--r-- | views/default/object/plugin/elements/dependencies.php | 49 | ||||
-rw-r--r-- | views/default/object/plugin/invalid.php | 24 | ||||
-rw-r--r-- | views/default/object/plugin/simple.php | 63 |
5 files changed, 366 insertions, 11 deletions
diff --git a/views/default/object/plugin.php b/views/default/object/plugin.php index e9cacca35..af1ccd677 100644 --- a/views/default/object/plugin.php +++ b/views/default/object/plugin.php @@ -5,18 +5,14 @@ * @package Elgg.Core * @subpackage Plugins * - * @todo This view really should be used to display visualization on the admin panel, \ - * rather than emitting the settings forms */ -// Do we want to show admin settings or user settings -$type = elgg_extract('type', $vars, ''); +$plugin = $vars['entity']; -if ($type != 'user') { - $type = ''; +if (!$plugin->isValid()) { + echo elgg_view('object/plugin/invalid', $vars); +} elseif ($vars['full']) { + echo elgg_view('object/plugin/advanced', $vars); +} else { + echo elgg_view('object/plugin/simple', $vars); } - -?> -<div> - <?php echo elgg_view_form("plugins/{$type}settings/save", array(), $vars); ?> -</div>
\ No newline at end of file diff --git a/views/default/object/plugin/advanced.php b/views/default/object/plugin/advanced.php new file mode 100644 index 000000000..f6a760af4 --- /dev/null +++ b/views/default/object/plugin/advanced.php @@ -0,0 +1,223 @@ +<?php +/** + * Displays a plugin on the admin screen. + * + * This file renders a plugin for the admin screen, including active/deactive, + * manifest details & display plugin settings. + * + * @package Elgg.Core + * @subpackage Plugins + */ + +$plugin = $vars['entity']; +$priority = $plugin->getPriority(); +$active = $plugin->isActive(); + +$name = $plugin->manifest->getName(); +$can_activate = $plugin->canActivate(); +$max_priority = elgg_get_max_plugin_priority(); +$actions_base = '/action/admin/plugins/'; + +$ts = time(); +$token = generate_action_token($ts); +$active_class = ($active && $can_activate) ? 'elgg-state-active' : 'elgg-state-inactive'; + +// build reordering links +$links = ''; + +// top and up link only if not at top +if ($priority > 1) { + $top_url = elgg_http_add_url_query_elements($actions_base . 'set_priority', array( + 'plugin_guid' => $plugin->guid, + 'priority' => 'first', + 'is_action' => true + )); + + $links .= "<li>" . elgg_view('output/url', array( + 'href' => $top_url, + 'text' => elgg_echo('top'), + 'is_action' => true + )) . "</li>"; + + $up_url = elgg_http_add_url_query_elements($actions_base . 'set_priority', array( + 'plugin_guid' => $plugin->guid, + 'priority' => '-1', + 'is_action' => true + )); + + $links .= "<li>" . elgg_view('output/url', array( + 'href' => $up_url, + 'text' => elgg_echo('up'), + 'is_action' => true + )) . "</li>"; +} + +// down and bottom links only if not at bottom +if ($priority < $max_priority) { + $down_url = elgg_http_add_url_query_elements($actions_base . 'set_priority', array( + 'plugin_guid' => $plugin->guid, + 'priority' => '+1', + 'is_action' => true + )); + + $links .= "<li>" . elgg_view('output/url', array( + 'href' => $down_url, + 'text' => elgg_echo('down'), + 'is_action' => true + )) . "</li>"; + + $bottom_url = elgg_http_add_url_query_elements($actions_base . 'set_priority', array( + 'plugin_guid' => $plugin->guid, + 'priority' => 'last', + 'is_action' => true + )); + + $links .= "<li>" . elgg_view('output/url', array( + 'href' => $bottom_url, + 'text' => elgg_echo('bottom'), + 'is_action' => true + )) . "</li>"; +} + +// activate / deactivate links +if ($can_activate) { + if ($active) { + $action = 'deactivate'; + $class = 'elgg-button-cancel'; + } else { + $action = 'activate'; + $class = 'elgg-button-submit'; + } + + $url = elgg_http_add_url_query_elements($actions_base . $action, array( + 'plugin_guids[]' => $plugin->guid, + 'is_action' => true + )); + + $action_button = elgg_view('output/url', array( + 'href' => $url, + 'text' => elgg_echo($action), + 'is_action' => true, + 'class' => "elgg-button $class" + )); +} else { + $action_button = elgg_view('output/url', array( + 'text' => elgg_echo('admin:plugins:cannot_activate'), + 'disabled' => 'disabled', + 'class' => "elgg-button-action elgg-state-disabled" + )); +} + +// Display categories +$categories_html = ''; +if ($categories) { + $categories_arr = array(); + $base_url = elgg_get_site_url() . "pg/admin/plugins?category="; + + foreach ($categories as $category) { + $url = $base_url . urlencode($category); + $categories_arr[] = "<a href=\"$url\">" . htmlspecialchars($category) . '</a>'; + } + + $categories_html = implode(', ', $categories_arr); +} + +$screenshots_html = ''; +$screenshots = $plugin->manifest->getScreenshots(); +if ($screenshots) { + $base_url = elgg_get_plugins_path() . $plugin->getID() . '/'; + foreach ($screenshots as $screenshot) { + $desc = elgg_echo($screenshot['description']); + $alt = htmlentities($desc, ENT_QUOTES, 'UTF-8'); + $screenshot_full = "{$vars['url']}pg/admin_plugin_screenshot/{$plugin->getID()}/full/{$screenshot['path']}"; + $screenshot_src = "{$vars['url']}pg/admin_plugin_screenshot/{$plugin->getID()}/thumbnail/{$screenshot['path']}"; + + $screenshots_html .= "<li class=\"elgg-plugin-screenshot prm ptm\"><a href=\"$screenshot_full\">" + . "<img src=\"$screenshot_src\" alt=\"$alt\"></a></li>"; + } +} + +// metadata +$description = elgg_view('output/longtext', array('value' => $plugin->manifest->getDescription())); +$author = '<span>' . elgg_echo('admin:plugins:label:author') . '</span>: ' + . elgg_view('output/text', array('value' => $plugin->manifest->getAuthor())); +$version = htmlspecialchars($plugin->manifest->getVersion()); +$website = elgg_view('output/url', array( + 'href' => $plugin->manifest->getWebsite(), + 'text' => $plugin->manifest->getWebsite() +)); + +$copyright = elgg_view('output/text', array('value' => $plugin->manifest->getCopyright())); +$license = elgg_view('output/text', array('value' => $plugin->manifest->getLicense())); + +?> + +<div class="elgg-state-draggable elgg-plugin <?php echo $active_class ?>" id="elgg-plugin-<?php echo $plugin->guid; ?>"> + <div class="elgg-image-block"> + <div class="elgg-image-alt"> + <ul class="elgg-list-metadata"> + <?php echo "$links"; ?> + </ul> + <div class="clearfloat right mtm"> + <?php echo $action_button; ?> + </div> + </div> + <div class="elgg-body"> +<?php +$settings_view = 'settings/' . $plugin->getID() . '/edit'; +if (elgg_view_exists($settings_view)) { + $link = elgg_get_site_url() . "pg/admin/plugin_settings/" . $plugin->getID(); + $settings_link = "<a class='plugin_settings small link' href='$link'>[" . elgg_echo('settings') . "]</a>"; +} +?> + <div class="elgg-head"> + <h3><?php echo $plugin->manifest->getName(). " $version $settings_link"; ?></h3> + </div> + <?php + if ($plugin->manifest->getApiVersion() < 1.8) { + $reqs = $plugin->manifest->getRequires(); + if (!$reqs) { + $message = elgg_echo('admin:plugins:warning:elgg_version_unknown'); + echo "<p class=\"elgg-state-error\">$message</p>"; + } + } + + if (!$can_activate) { + $message = elgg_echo('admin:plugins:warning:unmet_dependencies'); + echo "<p class=\"elgg-state-error\">$message</p>"; + } + ?> + + <div class="plugin_description"><?php echo $description; ?></div> + <p class="plugin_author"><?php echo $author . ' - ' . $website; ?></p> + + <div class="pts"><a class="elgg-toggler elgg-toggles-elgg-plugin-manifest-<?php echo $plugin->getID(); ?>"><?php echo elgg_echo("admin:plugins:label:moreinfo"); ?></a></div> + </div> + </div> + <div class="hidden manifest_file" id="elgg-plugin-manifest-<?php echo $plugin->getID(); ?>"> + + <?php + if ($screenshots_html) { + ?> + <div><ul><?php echo $screenshots_html; ?></ul></div> + <?php + } + + if ($categories_html) { + ?> + <div><?php echo elgg_echo('admin:plugins:label:categories') . ": " . $categories_html; ?></div> + <?php + } + + ?> + <div><?php echo elgg_echo('admin:plugins:label:copyright') . ": " . $copyright; ?></div> + <div><?php echo elgg_echo('admin:plugins:label:licence') . ": " . $license; ?></div> + <div><?php echo elgg_echo('admin:plugins:label:location') . ": " . htmlspecialchars($plugin->getPath()) ?></div> + + <div><?php echo elgg_echo('admin:plugins:label:dependencies'); ?>: + <?php + echo elgg_view('admin/components/plugin_dependencies', array('plugin' => $plugin)); + ?> + </div> + </div> +</div>
\ No newline at end of file diff --git a/views/default/object/plugin/elements/dependencies.php b/views/default/object/plugin/elements/dependencies.php new file mode 100644 index 000000000..ea2b3a188 --- /dev/null +++ b/views/default/object/plugin/elements/dependencies.php @@ -0,0 +1,49 @@ +<?php +/** + * Shows a table of plugin dependecies for ElggPlugin in $vars['plugin']. + * + * This uses a table because it's a table of data. + * + * @package Elgg.Core + * @subpackage Admin.Plugins + */ + +$plugin = elgg_extract('plugin', $vars, false); +$deps = $plugin->package->checkDependencies(true); + +$columns = array('type', 'name', 'expected_value', 'local_value', 'comment'); + +echo '<table class="elgg-plugins-dependencies styled"> + <tr> +'; + +foreach ($columns as $column) { + $column = elgg_echo("admin:plugins:dependencies:$column"); + echo "<th class=\"pas\">$column</th>"; +} + +echo '<tr/>'; + +$row = 'odd'; +foreach ($deps as $dep) { + $fields = elgg_get_plugin_dependency_strings($dep); + $type = $dep['type']; + + if ($dep['status']) { + $class = "elgg-state-success elgg-dependency-$type"; + } else { + $class = "elgg-state-error elgg-dependency-$type"; + } + + echo "<tr class=\"$row\">"; + + foreach ($columns as $column) { + echo "<td class=\"pas $class\">{$fields[$column]}</td>"; + } + + echo '</tr>'; + + $row = ($row == 'odd') ? 'even' : 'odd'; +} + +echo '</table>';
\ No newline at end of file diff --git a/views/default/object/plugin/invalid.php b/views/default/object/plugin/invalid.php new file mode 100644 index 000000000..7fd5d6f5e --- /dev/null +++ b/views/default/object/plugin/invalid.php @@ -0,0 +1,24 @@ +<?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 = $vars['entity']; + +$id = $plugin->getID(); +$path = htmlspecialchars($plugin->getPath()); +$message = elgg_echo('admin:plugins:warning:invalid', array($id)); + +?> + +<div class="elgg-plugin elgg-state-inactive elgg-state-error"> + <p><?php echo $message; ?></p> + <p><?php echo elgg_echo('admin:plugins:label:location') . ": " . $path; ?></p> +</div> diff --git a/views/default/object/plugin/simple.php b/views/default/object/plugin/simple.php new file mode 100644 index 000000000..49ef58313 --- /dev/null +++ b/views/default/object/plugin/simple.php @@ -0,0 +1,63 @@ +<?php +$plugin = $vars['entity']; + +$plugin_guid = $plugin->guid; +$plugin_id = $plugin->getID(); +$active = $plugin->isActive(); +$can_activate = $plugin->canActivate(); +$name = $plugin->manifest->getName(); +$author = $plugin->manifest->getAuthor(); +$version = $plugin->manifest->getVersion(); +$website = $plugin->manifest->getWebsite(); +$description = $plugin->manifest->getDescription(); + +if ($active) { + $active_class = 'elgg-state-active'; + $checked = 'checked="checked"'; +} else { + $active_class = 'elgg-state-inactive'; + $checked = ''; +} + +if ($can_activate) { + $disabled = ''; +} else { + $disabled = 'disabled="disabled"'; + $description .= '<p>' . elgg_echo('admin:plugins:simple:cannot_activate') . '</p>'; +} + +$description = elgg_view('output/longtext', array('value' => $description)); + +$plugin_footer = '<ul class="elgg-menu elgg-menu-footer">'; + +if ($author) { + $plugin_footer .= '<li>' . elgg_echo('admin:plugins:author', array($author)) . '</li>'; +} + +if ($version) { + $plugin_footer .= '<li>' . elgg_echo('admin:plugins:version', array($version)) . '</li>'; +} + +if ($website) { + $plugin_footer .= "<li><a href=\"$website\">" . elgg_echo('admin:plugins:plugin_website') . '</a></li>'; +} + +if (elgg_view_exists("settings/$plugin_id/edit")) { + $settings_href = elgg_get_site_url() . "pg/admin/plugin_settings/$plugin_id"; + $plugin_footer .= "<li><a class='plugin_settings link' href='$settings_href'>" . elgg_echo('settings') . "</a></li>"; +} + +$plugin_footer .= "</ul>"; + +echo <<<___END + <div class="elgg-plugin $active_class elgg-grid"> + <div class="elgg-col elgg-col-1of5"> + <input type="checkbox" id="$plugin_guid" $checked $disabled name="active_plugin_guids[]" value="$plugin_guid"/> + <label for="$plugin_guid">$name</label> + </div> + <div class="elgg-col elgg-col-4of5"> + $description + $plugin_footer + </div> + </div> +___END; |