Skip to content

Commit

Permalink
MDL-29474 display the dependancy information on the upgrade screen.
Browse files Browse the repository at this point in the history
  • Loading branch information
timhunt committed Oct 20, 2011
1 parent e61aaec commit 36ca62c
Show file tree
Hide file tree
Showing 6 changed files with 85 additions and 17 deletions.
6 changes: 2 additions & 4 deletions admin/index.php
Original file line number Diff line number Diff line change
Expand Up @@ -267,12 +267,11 @@
$PAGE->set_heading($strplugincheck);
$PAGE->set_cacheable(false);
$output = $PAGE->get_renderer('core', 'admin');
$pluginman = plugin_manager::instance();

echo $output->header();
echo $output->box_start('generalbox');
echo $output->container(get_string('pluginchecknotice', 'core_plugin'), 'generalbox', 'notice');
echo $output->plugins_check($pluginman->get_plugins(), array('full' => $showallplugins));
echo $output->plugins_check(plugin_manager::instance(), array('full' => $showallplugins));
echo $output->box_end();
print_upgrade_reload('index.php?confirmupgrade=1&confirmrelease=1');
$button = new single_button(new moodle_url('index.php', array('confirmupgrade'=>1, 'confirmrelease'=>1, 'confirmplugincheck'=>1)), get_string('upgradestart', 'admin'), 'get');
Expand Down Expand Up @@ -307,12 +306,11 @@
$PAGE->set_heading($strplugincheck);
$PAGE->set_cacheable(false);
$output = $PAGE->get_renderer('core', 'admin');
$pluginman = plugin_manager::instance();

echo $output->header();
echo $output->box_start('generalbox');
echo $output->container(get_string('pluginchecknotice', 'core_plugin'), 'generalbox', 'notice');
echo $output->plugins_check($pluginman->get_plugins(), array('full' => $showallplugins));
echo $output->plugins_check(plugin_manager::instance(), array('full' => $showallplugins));
echo $output->box_end();
print_upgrade_reload('index.php');
$button = new single_button(new moodle_url('index.php', array('confirmplugincheck'=>1)), get_string('upgradestart', 'admin'), 'get');
Expand Down
3 changes: 1 addition & 2 deletions admin/plugins.php
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,10 @@
require_capability('moodle/site:config', get_context_instance(CONTEXT_SYSTEM));
admin_externalpage_setup('pluginsoverview');
$output = $PAGE->get_renderer('core', 'admin');
$pluginman = plugin_manager::instance();

echo $output->header();
echo $output->heading(get_string('pluginsoverview', 'core_admin'));
echo $output->box_start('generalbox');
echo $output->plugins_control_panel($pluginman->get_plugins());
echo $output->plugins_control_panel(plugin_manager::instance());
echo $output->box_end();
echo $output->footer();
83 changes: 72 additions & 11 deletions admin/renderer.php
Original file line number Diff line number Diff line change
Expand Up @@ -39,11 +39,13 @@ class core_admin_renderer extends plugin_renderer_base {
* options support:
* (bool)full = false: whether to display up-to-date plugins, too
*
* @param array $plugininfo as returned by {@see plugin_manager::get_plugins()}
* @param plugin_manager $pluginman provides information about the plugins.
* @param array $options rendering options
* @return string HTML code
*/
public function plugins_check(array $plugininfo, array $options = null) {
public function plugins_check(plugin_manager $pluginman, array $options = null) {
global $CFG;
$plugininfo = $pluginman->get_plugins();

if (empty($plugininfo)) {
return '';
Expand All @@ -55,8 +57,6 @@ public function plugins_check(array $plugininfo, array $options = null) {
);
}

$pluginman = plugin_manager::instance();

$table = new html_table();
$table->id = 'plugins-check';
$table->head = array(
Expand All @@ -65,10 +65,11 @@ public function plugins_check(array $plugininfo, array $options = null) {
get_string('source', 'core_plugin'),
get_string('versiondb', 'core_plugin'),
get_string('versiondisk', 'core_plugin'),
get_string('requires', 'core_plugin'),
get_string('status', 'core_plugin'),
);
$table->colclasses = array(
'displayname', 'rootdir', 'source', 'versiondb', 'versiondisk', 'status',
'displayname', 'rootdir', 'source', 'versiondb', 'versiondisk', 'requires', 'status',
);
$table->data = array();

Expand Down Expand Up @@ -126,15 +127,22 @@ public function plugins_check(array $plugininfo, array $options = null) {

$status = new html_table_cell(get_string('status_' . $statuscode, 'core_plugin'));

if ($isstandard and in_array($statuscode, array(plugin_manager::PLUGIN_STATUS_NODB, plugin_manager::PLUGIN_STATUS_UPTODATE))) {
$requires = new html_table_cell($this->required_column($plugin, $pluginman));

$statusisboring = in_array($statuscode, array(
plugin_manager::PLUGIN_STATUS_NODB, plugin_manager::PLUGIN_STATUS_UPTODATE));
$dependanciesok = $pluginman->are_dependancies_satisfied(
$plugin->get_other_required_plugins());
if ($isstandard and $statusisboring and $dependanciesok) {
if (empty($options['full'])) {
continue;
}
} else {
$numofhighlighted[$type]++;
}

$row->cells = array($displayname, $rootdir, $source, $versiondb, $versiondisk, $status);
$row->cells = array($displayname, $rootdir, $source,
$versiondb, $versiondisk, $requires, $status);
$plugintyperows[] = $row;
}

Expand Down Expand Up @@ -176,22 +184,75 @@ public function plugins_check(array $plugininfo, array $options = null) {
return $out;
}

/**
* Formats the information that needs to go in the 'Requires' column.
* @param plugin_information $plugin the plugin we are rendering the row for.
* @param plugin_manager $pluginman provides data on all the plugins.
*/
protected function required_column($plugin, $pluginman) {
global $CFG;
$requires = array();

if (!empty($plugin->versionrequires)) {
if ($plugin->versionrequires <= $CFG->version) {
$class = 'requires-ok';
} else {
$class = 'requires-failed';
}
$requires[] = html_writer::tag('li',
get_string('moodleversion', 'core_plugin', $plugin->versionrequires),
array('class' => $class));
}

foreach ($plugin->get_other_required_plugins() as $component => $requiredversion) {
$ok = true;
$otherplugin = $pluginman->get_plugin_info($component);

if (is_null($otherplugin)) {
$ok = false;
}
if ($requiredversion != ANY_VERSION and $otherplugin->versiondb < $requiredversion) {
$ok = false;
}

if ($ok) {
$class = 'requires-ok';
} else {
$class = 'requires-failed';
}

if ($requiredversion != ANY_VERSION) {
$str = 'otherpluginversion';
} else {
$str = 'otherplugin';
}
$requires[] = html_writer::tag('li',
get_string($str, 'core_plugin',
array('component' => $component, 'version' => $requiredversion)),
array('class' => $class));
}

if (!$requires) {
return '';
}
return html_writer::tag('ul', implode("\n", $requires));
}

/**
* Displays all known plugins and links to manage them
*
* This default implementation renders all plugins into one big table.
*
* @param array $plugininfo as returned by {@see plugin_manager::get_plugins()}
* @param plugin_manager $pluginman provides information about the plugins.
* @return string HTML code
*/
public function plugins_control_panel(array $plugininfo) {
public function plugins_control_panel(plugin_manager $pluginman) {
$plugininfo = $pluginman->get_plugins();

if (empty($plugininfo)) {
return '';
}

$pluginman = plugin_manager::instance();

$table = new html_table();
$table->id = 'plugins-control-panel';
$table->head = array(
Expand Down
4 changes: 4 additions & 0 deletions lang/en/plugin.php
Original file line number Diff line number Diff line change
Expand Up @@ -27,16 +27,20 @@

$string['availability'] = 'Availability';
$string['displayname'] = 'Plugin name';
$string['moodleversion'] = 'Moodle {$a}';
$string['nonehighlighted'] = 'No plugins require your attention during this upgrade';
$string['nonehighlightedinfo'] = 'Display the list of all installed plugins anyway';
$string['noneinstalled'] = 'No plugins of this type are installed';
$string['otherplugin'] = '{$a->component}';
$string['otherpluginversion'] = '{$a->component} ({$a->version})';
$string['showall'] = 'Reload and show all plugins';
$string['pluginchecknotice'] = 'This page displays plugins that may require your attention during the upgrade. Highlighted items include new plugins that are about to be installed, updated plugins that are about to be upgraded and any missing plugins. Contributed plugins are also highlighted.
It is recommended that you check whether there are more recent versions of contributed plugins available and update their source code before continuing with this Moodle upgrade.';
$string['plugindisable'] = 'Disable';
$string['plugindisabled'] = 'Disabled';
$string['pluginenable'] = 'Enable';
$string['pluginenabled'] = 'Enabled';
$string['requires'] = 'Requires';
$string['rootdir'] = 'Directory';
$string['settings'] = 'Settings';
$string['somehighlighted'] = 'Number of plugins requiring attention during this upgrade: {$a}';
Expand Down
1 change: 1 addition & 0 deletions question/engine/lib.php
Original file line number Diff line number Diff line change
Expand Up @@ -334,6 +334,7 @@ public static function get_behaviour_name($behaviour) {
* @return string name from the current language pack.
*/
public static function get_behaviour_required_behaviours($behaviour) {
self::load_behaviour_class($behaviour);
$class = 'qbehaviour_' . $behaviour;
return $class::get_required_behaviours();
}
Expand Down
5 changes: 5 additions & 0 deletions theme/base/style/admin.css
Original file line number Diff line number Diff line change
Expand Up @@ -192,6 +192,11 @@
#page-admin-index #plugins-check .status-nodb .status {color:#999;}
#page-admin-index #plugins-check .status-upgrade .status {background-color:#d2ebff;}
#page-admin-index #plugins-check .status-uptodate .status {color:#999;}
#page-admin-index #plugins-check .requires ul {font-size:0.7em;margin:0;}
#page-admin-index #plugins-check .requires li {display:block;;}
#page-admin-index #plugins-check .requires-ok {color:#999;}
#page-admin-index #plugins-check .requires-failed {background-color:#ffd3d9;}


/** Plugins management */
#page-admin-plugins #plugins-control-panel {margin-left:auto; margin-right:auto;}
Expand Down

0 comments on commit 36ca62c

Please sign in to comment.