diff options
author | brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544> | 2011-01-05 04:36:07 +0000 |
---|---|---|
committer | brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544> | 2011-01-05 04:36:07 +0000 |
commit | f2123cdc42c8da21a297158fbb655f72bc92edce (patch) | |
tree | 6eb8c0a4492e5dddd29a87ad68a4ecadc7f01230 /views/default/admin/components | |
parent | 252c054437ac1d3ad43aca1e71ebb936b55d60d2 (diff) | |
download | elgg-f2123cdc42c8da21a297158fbb655f72bc92edce.tar.gz elgg-f2123cdc42c8da21a297158fbb655f72bc92edce.tar.bz2 |
Fixes #2760. Refs #2759. Updated plugin admin actions to use the new system. Added plugin dependency views in admin. ElggPluginPackage->checkDependencies() now returns the detected value.
git-svn-id: http://code.elgg.org/elgg/trunk@7838 36083f99-b078-4883-b0ff-0f9b5a30f544
Diffstat (limited to 'views/default/admin/components')
-rw-r--r-- | views/default/admin/components/plugin.php | 246 | ||||
-rw-r--r-- | views/default/admin/components/plugin_dependencies.php | 45 |
2 files changed, 201 insertions, 90 deletions
diff --git a/views/default/admin/components/plugin.php b/views/default/admin/components/plugin.php index ae611af07..d190e94a5 100644 --- a/views/default/admin/components/plugin.php +++ b/views/default/admin/components/plugin.php @@ -2,152 +2,218 @@ /** * Elgg plugin manifest class * - * This file renders a plugin for the admin screen, including active/deactive, manifest details & display plugin - * settings. + * This file renders a plugin for the admin screen, including active/deactive, + * manifest details & display plugin settings. * - * @package Elgg - * @subpackage Core + * @package Elgg.Core + * @subpackage Plugins */ $plugin = $vars['plugin']; -$details = $vars['details']; - -$active = $details['active']; -$manifest = $details['manifest']; - -$plugin_pretty_name = (isset($manifest['name'])) ? $manifest['name'] : $plugin; - -// Check elgg version if available -$version_check_valid = false; -if ($manifest['elgg_version']) { - $version_check_valid = check_plugin_compatibility($manifest['elgg_version']); -} +$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) ? 'active' : 'not_active'; - -$top_url = $up_url = $down_url = $bottom_url = ''; -if ($vars['order'] > 10) { - $top_url = elgg_get_site_url()."action/admin/plugins/reorder?plugin={$plugin}&order=1&__elgg_token=$token&__elgg_ts=$ts"; - $top_link = '<a href="' . elgg_format_url($top_url) . '">' . elgg_echo('top') . '</a>'; - - $order = $vars['order'] - 11; - - $up_url = elgg_get_site_url()."action/admin/plugins/reorder?plugin={$plugin}&order=$order&__elgg_token=$token&__elgg_ts=$ts"; - $up_link = '<a href="' . elgg_format_url($up_url) . '">' . elgg_echo('up') . '</a>'; +$active_class = ($active && $can_activate) ? 'active' : 'not_active'; + +// 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 .= elgg_view('output/url', array( + 'href' => $top_url, + 'text' => elgg_echo('top'), + 'is_action' => true + )); + + $up_url = elgg_http_add_url_query_elements($actions_base . 'set_priority', array( + 'plugin_guid' => $plugin->guid, + 'priority' => '-1', + 'is_action' => true + )); + + $links .= elgg_view('output/url', array( + 'href' => $up_url, + 'text' => elgg_echo('up'), + 'is_action' => true + )); } -if ($vars['order'] < $vars['maxorder']) { - $order = $vars['order'] + 11; - $down_url = elgg_get_site_url()."action/admin/plugins/reorder?plugin={$plugin}&order=$order&__elgg_token=$token&__elgg_ts=$ts"; - $down_link = '<a href="' . elgg_format_url($down_url) . '">' . elgg_echo('down') . '</a>'; - - $order = $vars['maxorder'] + 11; - $bottom_url = elgg_get_site_url()."action/admin/plugins/reorder?plugin={$plugin}&order=$order&__elgg_token=$token&__elgg_ts=$ts"; - $bottom_link = '<a href="' . elgg_format_url($bottom_url) . '">' . elgg_echo('bottom') . '</a>'; +// 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 .= elgg_view('output/url', array( + 'href' => $down_url, + 'text' => elgg_echo('down'), + 'is_action' => true + )); + + $bottom_url = elgg_http_add_url_query_elements($actions_base . 'set_priority', array( + 'plugin_guid' => $plugin->guid, + 'priority' => 'last', + 'is_action' => true + )); + + $links .= elgg_view('output/url', array( + 'href' => $bottom_url, + 'text' => elgg_echo('bottom'), + 'is_action' => true + )); } -if ($active) { - $url = elgg_get_site_url()."action/admin/plugins/disable?plugin=$plugin&__elgg_token=$token&__elgg_ts=$ts"; - $enable_disable = '<a class="elgg-button elgg-cancel-button" href="' . elgg_format_url($url) . '">' . elgg_echo('disable') . '</a>'; +// activate / deactivate links +if ($can_activate) { + if ($active) { + $action = 'deactivate'; + $class = 'elgg-cancel-button'; + } else { + $action = 'activate'; + $class = 'elgg-submit-button'; + } + + $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 { - $url = elgg_get_site_url()."action/admin/plugins/enable?plugin=$plugin&__elgg_token=$token&__elgg_ts=$ts"; - $enable_disable = '<a class="elgg-button elgg-submit-button" href="' . elgg_format_url($url) . '">' . elgg_echo('enable') . '</a>'; + $action_button = elgg_view('output/url', array( + 'text' => elgg_echo('admin:plugins:cannot_activate'), + 'disabled' => 'disabled', + 'class' => "elgg-action-button disabled" + )); } - -$categories_list = ''; -if ($manifest['category']) { +// Display categories +$categories = $plugin->manifest->getCategories(); +$categories_html = ''; +if ($categories) { $categories_arr = array(); - $base_url = elgg_get_site_url()."pg/admin/plugins?category="; + $base_url = elgg_get_site_url() . "pg/admin/plugins?category="; - foreach($manifest['category'] as $category) { + foreach ($categories as $category) { $url = $base_url . urlencode($category); $categories_arr[] = "<a href=\"$url\">" . htmlspecialchars($category) . '</a>'; } - $categories_list = implode(', ', $categories_arr); + $categories_html = implode(', ', $categories_arr); } -$screenshots = ''; -if ($manifest['screenshot']) { - $base_url = elgg_get_site_url()."mod/"; - +// @todo We need to make a page handler to read these files in. +// this is broken. +$screenshot_html = ''; +$screenshots = $plugin->manifest->getScreenshots(); +if ($screenshots) { + $base_url = elgg_get_plugin_path() . $plugin->getID() . '/'; $limit = 4; - foreach ($manifest['screenshot'] as $screenshot) { + foreach ($screenshots as $screenshot) { if ($limit <= 0) { break; } - $screenshot_src = $base_url . $plugin . "/$screenshot"; - $screenshots .= "<li class=\"plugin_screenshot\"><a href=\"$screenshot_src\"><img src=\"$screenshot_src\"></a></li>"; + $screenshot_src = $plugin->getPath() . $screenshot['path']; + $screenshots .= "<li class=\"plugin-screenshot\"><a href=\"$screenshot_src\"><img src=\"$screenshot_src\"></a></li>"; $limit--; } } +// 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="plugin_details <?php echo $active_class ?>"> <div class="admin_plugin_reorder"> - <?php echo "$top_link $up_link $down_link $bottom_link"; ?> + <?php echo "$links"; ?> </div><div class="clearfloat"></div> - <div class="admin_plugin_enable_disable"><?php echo $enable_disable; ?></div> + <div class="admin_plugin_enable_disable"><?php echo $action_button; ?></div> - <?php - if (elgg_view_exists("settings/{$plugin}/edit")) { - $link = elgg_get_site_url()."pg/admin/plugin_settings/$plugin"; - $settings_link = "<a class='plugin_settings small link' href='$link'>[". elgg_echo('settings') ."]</a>"; - } - ?> - <h3><?php echo "$plugin_pretty_name $settings_link"; ?></h3> - <?php - echo $settings_panel; +<?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>"; +} +?> + <h3><?php echo $plugin->manifest->getName() . " $version $settings_link"; ?></h3> + <div class="plugin_description"><?php echo $description; ?></div> + <p class="plugin_author"><?php echo $author . ' - ' . $website; ?></p> + + <?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=\"plugin-cannot-activate\">$message</p>"; + } + } - if ($manifest) { + if (!$can_activate) { + $message = elgg_echo('admin:plugins:warning:unmet_dependencies'); + echo "<p class=\"plugin-cannot-activate\">$message</p>"; + } ?> - <div class="plugin_description"><?php echo elgg_view('output/longtext',array('value' => $manifest['description'])); ?></div> - <p class="plugin_author"><span><?php echo elgg_echo('admin:plugins:label:author') . "</span>: ". htmlspecialchars($manifest['author']) ?></p> - <p class="plugin_version"><span><?php echo elgg_echo('admin:plugins:label:version') . "</span>: ". htmlspecialchars($manifest['version']) ?></p> <p><a class="manifest_details small link"><?php echo elgg_echo("admin:plugins:label:moreinfo"); ?></a></p> <div class="manifest_file hidden"> + <div><?php echo elgg_echo('admin:plugins:label:location') . ": " . htmlspecialchars($plugin->getPath()) ?></div> <?php - if ((!$version_check_valid) || (!isset($manifest['elgg_version']))) { + if ($categories_html) { ?> - <div id="version_check"> - <?php - if (!isset($manifest['elgg_version'])) { - echo elgg_echo('admin:plugins:warning:elggversionunknown'); - } else { - echo elgg_echo('admin:plugins:warning:elggtoolow'); - } - ?> - </div> + <div><?php echo elgg_echo('admin:plugins:label:categories') . ": " . $categories_html; ?></div> <?php } - ?> - <div><?php echo elgg_echo('admin:plugins:label:directory') . ": ". htmlspecialchars($plugin) ?></div> - <?php - if ($categories_list) { - ?> - <div><?php echo elgg_echo('admin:plugins:label:categories') . ": ". $categories_list ?></div> - <?php - } if ($screenshots) { ?> <div><ul><?php echo $screenshots; ?></ul></div> <?php } ?> - <div><?php echo elgg_echo('admin:plugins:label:copyright') . ": ". htmlspecialchars($manifest['copyright']) ?></div> - <div><?php echo elgg_echo('admin:plugins:label:licence') . ": ". htmlspecialchars($manifest['licence'] . $manifest['license']) ?></div> - <div><?php echo elgg_echo('admin:plugins:label:website') . ": "; ?><a href="<?php echo $manifest['website']; ?>"><?php echo $manifest['website']; ?></a></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: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/admin/components/plugin_dependencies.php b/views/default/admin/components/plugin_dependencies.php new file mode 100644 index 000000000..9e0e284f1 --- /dev/null +++ b/views/default/admin/components/plugin_dependencies.php @@ -0,0 +1,45 @@ +<?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_get_array_value('plugin', $vars, false); +$deps = $plugin->package->checkDependencies(true); + +$columns = array('type', 'name', '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>$column</th>"; +} + +echo '<tr/>'; + +foreach ($deps as $dep) { + $fields = elgg_get_plugin_dependency_strings($dep); + + if ($dep['status']) { + $class = 'elgg-satisfied-dependency'; + } else { + $class = 'elgg-unsatisfied-dependency'; + } + + echo "<tr class=\"$class\">"; + + foreach ($columns as $column) { + echo "<td class=\"pam \">{$fields[$column]}</td>"; + } + + echo '</tr>'; +} + +echo '</table>';
\ No newline at end of file |