diff --git a/admin/plagiarism.php b/admin/plagiarism.php new file mode 100644 index 00000000000..40ed3aec0f0 --- /dev/null +++ b/admin/plagiarism.php @@ -0,0 +1,114 @@ +. + +/** + * Provides an overview of installed plagiarism plugins + * + * Displays the list of found plagiarism plugins, their version (if found) and + * a link to delete the plagiarism plugin. + * + * @see http://docs.moodle.org/dev/Plagiarism_API + * @package admin + * @copyright 2012 Dan Marsden + * @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('manageplagiarismplugins'); + +$delete = optional_param('delete', '', PARAM_PLUGIN); +$confirm = optional_param('confirm', false, PARAM_BOOL); + +if (!empty($delete) and confirm_sesskey()) { // If data submitted, then process and store. + echo $OUTPUT->header(); + echo $OUTPUT->heading(get_string('manageplagiarism', 'plagiarism')); + + if (!$confirm) { + if (get_string_manager()->string_exists('pluginname', 'plagiarism_' . $delete)) { + $strpluginname = get_string('pluginname', 'plagiarism_' . $delete); + } else { + $strpluginname = $delete; + } + echo $OUTPUT->confirm(get_string('plagiarismplugindeleteconfirm', 'plagiarism', $strpluginname), + new moodle_url($PAGE->url, array('delete' => $delete, 'confirm' => 1)), + $PAGE->url); + echo $OUTPUT->footer(); + die(); + + } else { + uninstall_plugin('plagiarism', $delete); + $a = new stdclass(); + $a->name = $delete; + $pluginlocation = get_plugin_types(); + $a->directory = $pluginlocation['plagiarism'] . '/' . $delete; + echo $OUTPUT->notification(get_string('plugindeletefiles', '', $a), 'notifysuccess'); + echo $OUTPUT->continue_button($PAGE->url); + echo $OUTPUT->footer(); + die(); + } +} + +echo $OUTPUT->header(); + +// Print the table of all installed plagiarism plugins. + +$txt = get_strings(array('settings', 'name', 'version', 'delete')); + +$plagiarismplugins = get_plugin_list('plagiarism'); +if (empty($plagiarismplugins)) { + echo $OUTPUT->notification(get_string('nopluginsinstalled', 'plagiarism')); + echo $OUTPUT->footer(); + exit; +} + +echo $OUTPUT->heading(get_string('availableplugins', 'plagiarism'), 3, 'main'); +echo $OUTPUT->box_start('generalbox authsui'); + +$table = new html_table(); +$table->head = array($txt->name, $txt->version, $txt->delete, $txt->settings); +$table->colclasses = array('mdl-left', 'mdl-align', 'mdl-align', 'mdl-align'); +$table->data = array(); +$table->attributes['class'] = 'manageplagiarismtable generaltable'; + +// Iterate through auth plugins and add to the display table. +$authcount = count($plagiarismplugins); +foreach ($plagiarismplugins as $plugin => $dir) { + if (file_exists($dir.'/settings.php')) { + $displayname = "".get_string($plugin, 'plagiarism_'.$plugin).""; + // Settings link. + $url = new moodle_url("/plagiarism/$plugin/settings.php"); + $settings = html_writer::link($url, $txt->settings); + // Get version. + $version = get_config('plagiarism_' . $plugin); + if (!empty($version->version)) { + $version = $version->version; + } else { + $version = '?'; + } + // Delete link. + $delete = new moodle_url($PAGE->url, array('delete' => $plugin, 'sesskey' => sesskey())); + $delete = html_writer::link($delete, get_string('delete')); + $table->data[] = array($displayname, $version, $delete, $settings); + } +} +echo html_writer::table($table); +echo get_string('configplagiarismplugins', 'plagiarism'); +echo $OUTPUT->box_end(); + +echo $OUTPUT->footer(); diff --git a/admin/settings/plugins.php b/admin/settings/plugins.php index ec274335398..4f22f08f702 100644 --- a/admin/settings/plugins.php +++ b/admin/settings/plugins.php @@ -422,9 +422,9 @@ if ($hassiteconfig || has_capability('moodle/question:config', $systemcontext)) // Plagiarism plugin settings if ($hassiteconfig && !empty($CFG->enableplagiarism)) { $ADMIN->add('modules', new admin_category('plagiarism', new lang_string('plagiarism', 'plagiarism'))); - $temp = new admin_settingpage('plagiarismsettings', new lang_string('plagiarismsettings', 'plagiarism')); - $temp->add(new admin_setting_manageplagiarism()); - $ADMIN->add('plagiarism', $temp); + $ADMIN->add('plagiarism', new admin_externalpage('manageplagiarismplugins', new lang_string('manageplagiarism', 'plagiarism'), + $CFG->wwwroot . '/' . $CFG->admin . '/plagiarism.php')); + foreach (get_plugin_list('plagiarism') as $plugin => $plugindir) { if (file_exists($plugindir.'/settings.php')) { $ADMIN->add('plagiarism', new admin_externalpage('plagiarism'.$plugin, new lang_string($plugin, 'plagiarism_'.$plugin), "$CFG->wwwroot/plagiarism/$plugin/settings.php", 'moodle/site:config')); diff --git a/lang/en/plagiarism.php b/lang/en/plagiarism.php index 1acc76962d6..23f89c4102d 100644 --- a/lang/en/plagiarism.php +++ b/lang/en/plagiarism.php @@ -6,4 +6,4 @@ $string['configenableplagiarism'] = 'This will allow administrators to configure $string['manageplagiarism'] = 'Manage plagiarism plugins'; $string['nopluginsinstalled'] = 'No plagiarism plugins are installed.'; $string['plagiarism'] = 'Plagiarism prevention'; -$string['plagiarismsettings'] = 'Plagiarism settings'; +$string['plagiarismplugindeleteconfirm'] = 'You are about to completely delete the plagiarism plugin \'{$a}\'. This will completely delete everything in the database associated with this plugin. Are you SURE you want to continue?'; diff --git a/lib/adminlib.php b/lib/adminlib.php index 1d9fb8e9857..50c66f39a6f 100644 --- a/lib/adminlib.php +++ b/lib/adminlib.php @@ -6925,95 +6925,6 @@ class admin_setting_manageexternalservices extends admin_setting { } } - -/** - * Special class for plagiarism administration. - * - * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later - */ -class admin_setting_manageplagiarism extends admin_setting { - /** - * Calls parent::__construct with specific arguments - */ - public function __construct() { - $this->nosave = true; - parent::__construct('plagiarismui', get_string('plagiarismsettings', 'plagiarism'), '', ''); - } - - /** - * Always returns true - * - * @return true - */ - public function get_setting() { - return true; - } - - /** - * Always returns true - * - * @return true - */ - public function get_defaultsetting() { - return true; - } - - /** - * Always returns '' and doesn't write anything - * - * @return string Always returns '' - */ - public function write_setting($data) { - // do not write any setting - return ''; - } - - /** - * Return XHTML to display control - * - * @param mixed $data Unused - * @param string $query - * @return string highlight - */ - public function output_html($data, $query='') { - global $CFG, $OUTPUT; - - // display strings - $txt = get_strings(array('settings', 'name')); - - $plagiarismplugins = get_plugin_list('plagiarism'); - if (empty($plagiarismplugins)) { - return get_string('nopluginsinstalled', 'plagiarism'); - } - - $return = $OUTPUT->heading(get_string('availableplugins', 'plagiarism'), 3, 'main'); - $return .= $OUTPUT->box_start('generalbox authsui'); - - $table = new html_table(); - $table->head = array($txt->name, $txt->settings); - $table->align = array('left', 'center'); - $table->data = array(); - $table->attributes['class'] = 'manageplagiarismtable generaltable'; - - // iterate through auth plugins and add to the display table - $authcount = count($plagiarismplugins); - foreach ($plagiarismplugins as $plugin => $dir) { - if (file_exists($dir.'/settings.php')) { - $displayname = "".get_string($plugin, 'plagiarism_'.$plugin).""; - // settings link - $settings = "wwwroot/plagiarism/$plugin/settings.php\">{$txt->settings}"; - // add a row to the table - $table->data[] =array($displayname, $settings); - } - } - $return .= html_writer::table($table); - $return .= get_string('configplagiarismplugins', 'plagiarism'); - $return .= $OUTPUT->box_end(); - return highlight($query, $return); - } -} - - /** * Special class for overview of external services *