From 1ed47309018f7d01df4a210bd8855c16b0434216 Mon Sep 17 00:00:00 2001 From: David Mudrak Date: Mon, 8 Feb 2010 16:03:37 +0000 Subject: [PATCH] MDL-21558 adding local plugins management page into the admin tree The new admin external page admin/localplugins.php provides a list of installed local plugins with a possibility to remove it. --- admin/localplugins.php | 103 +++++++++++++++++++++++++++++++++++++ admin/settings/plugins.php | 5 ++ lang/en_utf8/moodle.php | 7 ++- 3 files changed, 114 insertions(+), 1 deletion(-) create mode 100644 admin/localplugins.php diff --git a/admin/localplugins.php b/admin/localplugins.php new file mode 100644 index 00000000000..988e96b593d --- /dev/null +++ b/admin/localplugins.php @@ -0,0 +1,103 @@ +. + +/** + * Provides an overview of installed local plugins + * + * Displays the list of found local plugins, their version (if found) and + * a link to delete the local plugin. + * + * @see http://docs.moodle.org/en/Development:Local_customisation + * @package admin + * @copyright 2010 David Mudrak + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +require_once(dirname(dirname(__FILE__)) . '/config.php'); +require_once($CFG->libdir.'/adminlib.php'); +require_once($CFG->libdir.'/tablelib.php'); + +admin_externalpage_setup('managelocalplugins'); + +$delete = optional_param('delete', '', PARAM_SAFEDIR); +$confirm = optional_param('confirm', '', PARAM_BOOL); + +/// If data submitted, then process and store. + +if (!empty($delete) and confirm_sesskey()) { + admin_externalpage_print_header(); + echo $OUTPUT->heading(get_string('localplugins')); + + if (!$confirm) { + echo $OUTPUT->confirm(get_string('localplugindeleteconfirm', '', get_string('pluginname', 'local_' . $delete)), + new moodle_url($PAGE->url, array('delete' => $delete, 'confirm' => 1)), + $PAGE->url); + echo $OUTPUT->footer(); + die(); + + } else { + uninstall_plugin('local', $delete); + $a = new stdclass(); + $a->name = $delete; + $pluginlocation = get_plugin_types(); + $a->directory = $pluginlocation['local'] . '/' . $delete; + echo $OUTPUT->notification(get_string('plugindeletefiles', '', $a), 'notifysuccess'); + echo $OUTPUT->continue_button($PAGE->url); + echo $OUTPUT->footer(); + die(); + } +} + +admin_externalpage_print_header(); +echo $OUTPUT->heading(get_string('localplugins')); + +/// Print the table of all installed local plugins + +$table = new flexible_table('localplugins_administration_table'); +$table->define_columns(array('name', 'version', 'delete')); +$table->define_headers(array(get_string('plugin'), get_string('version'), get_string('delete'))); +$table->define_baseurl($PAGE->url); +$table->set_attribute('id', 'localplugins'); +$table->set_attribute('class', 'generaltable generalbox boxaligncenter boxwidthwide'); +$table->setup(); + +foreach (get_plugin_list('local') as $plugin => $plugindir) { + $strpluginname = get_string('pluginname', 'local_' . $plugin); + if ($strpluginname == '[[pluginname]]') { + $strpluginname = $plugin; + } + $plugins[$plugin] = $strpluginname; +} +sort($plugins, SORT_LOCALE_STRING); + +foreach ($plugins as $plugin => $name) { + $delete = new moodle_url($PAGE->url, array('delete' => $plugin, 'sesskey' => sesskey())); + $delete = $OUTPUT->link($delete, get_string('delete')); + + $version = get_config('local_' . $plugin); + if (!empty($version->version)) { + $version = $version->version; + } else { + $version = '?'; + } + + $table->add_data(array($name, $version, $delete)); +} + +$table->print_html(); + +echo $OUTPUT->footer(); diff --git a/admin/settings/plugins.php b/admin/settings/plugins.php index f4aa118770f..9b0d056187d 100644 --- a/admin/settings/plugins.php +++ b/admin/settings/plugins.php @@ -325,6 +325,11 @@ foreach (get_plugin_list('report') as $plugin => $plugindir) { /// Add all local plugins - must be always last! +if ($hassiteconfig) { + $ADMIN->add('modules', new admin_category('localplugins', get_string('localplugins'))); + $ADMIN->add('localplugins', new admin_externalpage('managelocalplugins', get_string('localpluginsmanage'), + $CFG->wwwroot . '/' . $CFG->admin . '/localplugins.php')); +} foreach (get_plugin_list('local') as $plugin => $plugindir) { $settings_path = "$plugindir/settings.php"; diff --git a/lang/en_utf8/moodle.php b/lang/en_utf8/moodle.php index 879697f834f..a956d2fc733 100644 --- a/lang/en_utf8/moodle.php +++ b/lang/en_utf8/moodle.php @@ -932,6 +932,9 @@ $string['listofallpeople'] = 'List of all people'; $string['livelogs'] = 'Live logs from the past hour'; $string['local'] = 'Local'; $string['locale'] = 'en_AU.UTF-8'; +$string['localplugindeleteconfirm'] = 'You are about to completely delete the local plugin \'{$a}\'. This will completely delete everything in the database associated with this plugin. Are you SURE you want to continue?'; +$string['localplugins'] = 'Local plugins'; +$string['localpluginsmanage'] = 'Manage local plugins'; $string['location'] = 'Location'; $string['log_excel_date_format'] = 'yyyy mmmm d h:mm'; $string['loggedinas'] = 'You are logged in as $a'; @@ -1281,10 +1284,12 @@ $string['phpinfo'] = 'PHP info'; $string['pleaseclose'] = 'Please close this window now.'; $string['pleasesearchmore'] = 'Please search some more'; $string['pleaseusesearch'] = 'Please use the search'; +$string['plugin'] = 'Plugin'; $string['plugincheck'] = 'Plugins check'; $string['pluginchecknotice'] = 'The following tables show the modules, blocks and filters that have been detected in your current Moodle installation; They indicate which plugins are standard, and which are not. All non-standard plugins should be checked and upgraded to their most recent versions before continuing with this Moodle upgrade.'; +$string['plugindeletefiles'] = 'All data associated with the plugin \'{$a->name}\' has been deleted from the database. To prevent the plugin re-installing itself, you should now delete this directory from your server: {$a->directory}'; $string['pluginsetup'] = 'Setting up plugin tables'; $string['policyaccept'] = 'I understand and agree'; $string['policyagree'] = 'You must agree to this policy to continue using this site. Do you agree?'; @@ -1825,4 +1830,4 @@ $string['nocourses'] = 'No courses'; $string['requestedcourses'] = 'Requested courses'; $string['addcountertousername'] = 'Create user by adding number to username'; $string['uploadfilecontentsnovaliddata'] = 'The uploaded file contains no valid data.'; -?> \ No newline at end of file +?>