123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327 |
- <?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.
- *
- * @uses $vars['entity']
- * @uses $vars['display_reordering'] Do we display the priority reordering links?
- *
- * @package Elgg.Core
- * @subpackage Plugins
- */
- /* @var ElggPlugin $plugin */
- $plugin = $vars['entity'];
- $reordering = elgg_extract('display_reordering', $vars, false);
- $priority = $plugin->getPriority();
- $active = $plugin->isActive();
- $can_activate = $plugin->canActivate();
- $max_priority = _elgg_get_max_plugin_priority();
- $actions_base = '/action/admin/plugins/';
- $css_id = preg_replace('/[^a-z0-9-]/i', '-', $plugin->getID());
- // build reordering links
- $links = '';
- $classes = array('elgg-plugin');
- if ($reordering) {
- $classes[] = 'elgg-state-draggable';
- // 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,
- 'is_trusted' => 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,
- 'is_trusted' => 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,
- 'is_trusted' => 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,
- 'is_trusted' => true,
- )) . "</li>";
- }
- } else {
- $classes[] = 'elgg-state-undraggable';
- }
- // activate / deactivate links
- // always let them deactivate
- $options = array(
- 'is_action' => true,
- 'is_trusted' => true,
- );
- if ($active) {
- $classes[] = 'elgg-state-active';
- $action = 'deactivate';
- $options['text'] = elgg_echo('admin:plugins:deactivate');
- $options['class'] = "elgg-button elgg-button-cancel";
- if (!$can_activate) {
- $classes[] = 'elgg-state-active';
- $options['class'] = 'elgg-button elgg-state-warning';
- }
- } else if ($can_activate) {
- $classes[] = 'elgg-state-inactive';
- $action = 'activate';
- $options['text'] = elgg_echo('admin:plugins:activate');
- $options['class'] = "elgg-button elgg-button-submit";
- } else {
- $classes[] = 'elgg-state-inactive';
- $action = '';
- $options['text'] = elgg_echo('admin:plugins:cannot_activate');
- $options['class'] = "elgg-button elgg-button-disabled";
- $options['disabled'] = 'disabled';
- }
- if ($action) {
- $url = elgg_http_add_url_query_elements($actions_base . $action, array(
- 'plugin_guids[]' => $plugin->guid
- ));
- $options['href'] = $url;
- }
- $action_button = elgg_view('output/url', $options);
- // Display categories and make category classes
- $categories = $plugin->getManifest()->getCategories();
- $categories_html = '';
- if ($categories) {
- $base_url = elgg_get_site_url() . "admin/plugins?category=";
- foreach ($categories as $category) {
- $css_class = preg_replace('/[^a-z0-9-]/i', '-', $category);
- $classes[] = "elgg-plugin-category-$css_class";
- $url = $base_url . urlencode($category);
- $friendly_category = htmlspecialchars(ElggPluginManifest::getFriendlyCategory($category));
- $categories_html .= "<li class=\"elgg-plugin-category prm\"><a href=\"$url\">$friendly_category</a></li>";
- }
- }
- $screenshots_html = '';
- $screenshots = $plugin->getManifest()->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_img = elgg_view('output/img', array(
- 'src' => "admin_plugin_screenshot/{$plugin->getID()}/thumbnail/{$screenshot['path']}",
- 'alt' => $alt,
- ));
- $screenshot_link = elgg_view('output/url', array(
- 'href' => "admin_plugin_screenshot/{$plugin->getID()}/full/{$screenshot['path']}",
- 'text' => $screenshot_img,
- 'class' => 'elgg-lightbox',
- ));
- $screenshots_html .= "<li class=\"elgg-plugin-screenshot prm ptm\">$screenshot_link</li>";
- }
- }
- // metadata
- $description = elgg_view('output/longtext', array('value' => $plugin->getManifest()->getDescription()));
- $author = '<span>' . elgg_echo('admin:plugins:label:author') . '</span>: '
- . elgg_view('output/text', array('value' => $plugin->getManifest()->getAuthor()));
- $version = htmlspecialchars($plugin->getManifest()->getVersion());
- $website = elgg_view('output/url', array(
- 'href' => $plugin->getManifest()->getWebsite(),
- 'text' => $plugin->getManifest()->getWebsite(),
- 'is_trusted' => true,
- ));
- $resources = array(
- 'repository' => $plugin->getManifest()->getRepositoryURL(),
- 'bugtracker' => $plugin->getManifest()->getBugTrackerURL(),
- 'donate' => $plugin->getManifest()->getDonationsPageURL(),
- );
- $resources_html = "<ul class=\"elgg-plugin-resources\">";
- foreach ($resources as $id => $href) {
- if ($href) {
- $resources_html .= "<li class=\"prm\">";
- $resources_html .= elgg_view('output/url', array(
- 'href' => $href,
- 'text' => elgg_echo("admin:plugins:label:$id"),
- 'is_trusted' => true,
- ));
- $resources_html .= "</li>";
- }
- }
- $resources_html .= "</ul>";
- $copyright = elgg_view('output/text', array('value' => $plugin->getManifest()->getCopyright()));
- $license = elgg_view('output/text', array('value' => $plugin->getManifest()->getLicense()));
- // show links to text files
- $files = $plugin->getAvailableTextFiles();
- $docs = '';
- if ($files) {
- $docs = '<ul class="elgg-menu elgg-menu-hz">';
- foreach ($files as $file => $path) {
- $url = 'admin_plugin_text_file/' . $plugin->getID() . "/$file";
- $link = elgg_view('output/url', array(
- 'text' => $file,
- 'href' => $url,
- 'is_trusted' => true,
- ));
- $docs .= "<li>$link</li>";
- }
- $docs .= '</ul>';
- }
- ?>
- <div class="<?php echo implode(' ', $classes); ?>" id="<?php echo $css_id; ?>">
- <div class="elgg-image-block">
- <div class="elgg-image-alt">
- <?php if ($links) : ?>
- <ul class="elgg-menu elgg-menu-metadata">
- <?php echo $links; ?>
- </ul>
- <?php endif; ?>
- <div class="clearfloat float-alt mtm">
- <?php echo $action_button; ?>
- </div>
- </div>
- <div class="elgg-body">
- <?php
- $settings_view_old = 'settings/' . $plugin->getID() . '/edit';
- $settings_view_new = 'plugins/' . $plugin->getID() . '/settings';
- if (elgg_view_exists($settings_view_old) || elgg_view_exists($settings_view_new)) {
- $link = elgg_get_site_url() . "admin/plugin_settings/" . $plugin->getID();
- $settings_link = "<a class='elgg-plugin-settings' href='$link'>[" . elgg_echo('settings') . "]</a>";
- } else {
- $settings_link = '';
- }
- ?>
- <div class="elgg-head">
- <h3><?php echo $plugin->getManifest()->getName() . " $version $settings_link"; ?></h3>
- </div>
- <?php
- if ($plugin->getManifest()->getApiVersion() < 1.8) {
- $reqs = $plugin->getManifest()->getRequires();
- if (!$reqs) {
- $message = elgg_echo('admin:plugins:warning:elgg_version_unknown');
- echo "<p class=\"elgg-state-error\">$message</p>";
- }
- }
-
- if (!$can_activate) {
- if ($active) {
- $message = elgg_echo('admin:plugins:warning:unmet_dependencies_active');
- echo "<p class=\"elgg-state-warning\">$message</p>";
- } else {
- $message = elgg_echo('admin:plugins:warning:unmet_dependencies');
- echo "<p class=\"elgg-state-error\">$message</p>";
- }
- }
- ?>
-
- <div><?php echo $description; ?></div>
- <p><?php echo $author . ' - ' . $website; ?></p>
-
- <?php
- echo $resources_html;
- echo $docs;
- ?>
-
- <div class="pts">
- <?php
- echo elgg_view('output/url', array(
- 'href' => "#elgg-plugin-manifest-$css_id",
- 'text' => elgg_echo("admin:plugins:label:moreinfo"),
- 'rel' => 'toggle',
- ));
- ?>
- </div>
- </div>
- </div>
- <div class="elgg-plugin-more hidden" id="elgg-plugin-manifest-<?php echo $css_id; ?>">
- <?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') . ": <ul class=\"elgg-plugin-categories\">$categories_html</ul>"; ?></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>
- <?php
- $contributors = elgg_view('object/plugin/elements/contributors', array('plugin' => $plugin));
- if (!empty($contributors)) {
- echo '<div>' . elgg_echo('admin:plugins:label:contributors') . ':';
- echo $contributors;
- echo '</div>';
- }
- ?>
- <div><?php echo elgg_echo('admin:plugins:label:dependencies'); ?>:
- <?php
- echo elgg_view('object/plugin/elements/dependencies', array('plugin' => $plugin));
- ?>
- </div>
- </div>
- </div>
|