From: mjollnir_ Date: Tue, 29 Jul 2008 10:51:18 +0000 (+0000) Subject: MDL-15865 - admin portfolio settings are now a settingspage rather than an admin... X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=a50ef3d34facb25d8bd606b92a95d75757505d26;p=moodle.git MDL-15865 - admin portfolio settings are now a settingspage rather than an admin page. --- diff --git a/admin/portfolio.php b/admin/portfolio.php index 54a3ee1f7e..b08771dd7e 100644 --- a/admin/portfolio.php +++ b/admin/portfolio.php @@ -4,7 +4,6 @@ require_once(dirname(dirname(__FILE__)) . '/config.php'); require_once($CFG->libdir . '/portfoliolib.php'); require_once($CFG->libdir . '/adminlib.php'); -admin_externalpage_setup('portfoliosettingsall'); $CFG->pagepath = 'admin/manageportfolio'; @@ -16,13 +15,25 @@ $sure = optional_param('sure', '', PARAM_ALPHA); $display = true; // fall through to normal display +$pagename = 'portfoliocontroller'; + +if ($edit) { + $pagename = 'portfoliosettings' . $edit; +} else if ($delete) { + $pagename = 'portfoliodelete'; +} else if ($new) { + $pagename = 'portfolionew'; +} +admin_externalpage_setup($pagename); require_login(SITEID, false); require_capability('moodle/site:config', get_context_instance(CONTEXT_SYSTEM)); -$baseurl = $CFG->wwwroot . '/' . $CFG->admin . '/portfolio.php'; +$baseurl = $CFG->wwwroot . '/admin/settings.php?section=manageportfolios'; $sesskeyurl = $CFG->wwwroot . '/' . $CFG->admin . '/portfolio.php?sesskey=' . sesskey(); $configstr = get_string('manageportfolios', 'portfolio'); +$return = true; // direct back to the main page + if (!empty($edit) || !empty($new)) { if (!empty($edit)) { $instance = portfolio_instance($edit); @@ -52,6 +63,7 @@ if (!empty($edit) || !empty($new)) { } if ($success) { $savedstr = get_string('instancesaved', 'portfolio'); + admin_externalpage_print_header(); print_heading($savedstr); redirect($baseurl, $savedstr, 3); } else { @@ -64,7 +76,7 @@ if (!empty($edit) || !empty($new)) { print_simple_box_start(); $mform->display(); print_simple_box_end(); - $display = false; + $return = false; } } else if (!empty($hide)) { if (!confirm_sesskey()) { @@ -77,6 +89,7 @@ if (!empty($edit) || !empty($new)) { } $instance->set('visible', !$instance->get('visible')); $instance->save(); + $return = true; } else if (!empty($delete)) { admin_externalpage_print_header(); $instance = portfolio_instance($delete); @@ -94,66 +107,13 @@ if (!empty($edit) || !empty($new)) { exit; } notice_yesno(get_string('sure', 'portfolio', $instance->get('name')), $sesskeyurl . '&delete=' . $delete . '&sure=yes', $baseurl); - $display = false; + $return = false; } -// normal display. fall through to here (don't call exit) if you want this to run -if ($display) { - admin_externalpage_print_header(); - print_heading($configstr); - print_simple_box_start(); - - $namestr = get_string('name'); - $pluginstr = get_string('plugin', 'portfolio'); - - $plugins = get_list_of_plugins('portfolio/type'); - $instances = portfolio_instances(false, false); - $alreadyplugins = array(); - - $insane = portfolio_plugin_sanity_check($plugins); - $insaneinstances = portfolio_instance_sanity_check($instances); - - portfolio_report_insane($insane); - portfolio_report_insane($insaneinstances, $instances); - - $table = new StdClass; - $table->head = array($namestr, $pluginstr, ''); - $table->data = array(); - - foreach ($instances as $i) { - $row = '' . get_string('edit') . ' - ' . get_string('delete') . ''; - if (array_key_exists($i->get('plugin'), $insane) || array_key_exists($i->get('id'), $insaneinstances)) { - $row .= '' . get_string('hidden', 'portfolio') . '
'; - } else { - $row .= ' ' . get_string($i->get('visible') ? 'hide' : 'show') . '
'; - } - $table->data[] = array($i->get('name'), $i->get('plugin'), $row); - if (!in_array($i->get('plugin'), $alreadyplugins)) { - $alreadyplugins[] = $i->get('plugin'); - } - } - - print_table($table); - $instancehtml = '
' . get_string('addnewportfolio', 'portfolio') . ':
'; - echo $instancehtml; - } - print_simple_box_end(); +if (!empty($return)) { + // normal display. fall through to here (don't call exit) if you want this to run + redirect($baseurl); } -print_footer(); +admin_externalpage_print_footer(); ?> diff --git a/admin/settings/plugins.php b/admin/settings/plugins.php index d95876b417..1a487a7ac7 100644 --- a/admin/settings/plugins.php +++ b/admin/settings/plugins.php @@ -145,30 +145,33 @@ if ($hassiteconfig) { } } + require_once($CFG->libdir. '/portfoliolib.php'); + $catname =get_string('portfolios', 'portfolio'); $manage = get_string('manageportfolios', 'portfolio'); $url = "$CFG->wwwroot/$CFG->admin/portfolio.php"; $ADMIN->add('modules', new admin_category('portfoliosettings', $catname)); - $ADMIN->add( - 'portfoliosettings', - new admin_externalpage('portfoliosettingsall', $manage, $url), - $manage, - $url - ); - require_once($CFG->libdir. '/portfoliolib.php'); + // jump through hoops to do what we want + $temp = new admin_settingpage('manageportfolios', get_string('manageportfolios', 'portfolio')); + $temp->add(new admin_setting_configcheckbox('portfolioenabled', get_string('enabled', 'portfolio'), get_string('enableddesc', 'portfolio'), true)); + $temp->add(new admin_setting_manageportfolio()); + + $ADMIN->add('portfoliosettings', $temp); + $ADMIN->add('portfoliosettings', new admin_externalpage('portfolionew', get_string('addnewportfolio', 'portfolio'), $url, 'moodle/site:config', true), '', $url); + $ADMIN->add('portfoliosettings', new admin_externalpage('portfoliodelete', get_string('deleteportfolio', 'portfolio'), $url, 'moodle/site:config', true), '', $url); + $ADMIN->add('portfoliosettings', new admin_externalpage('portfoliocontroller', get_string('manageportfolios', 'portfolio'), $url, 'moodle/site:config', true), '', $url); + foreach (portfolio_instances() as $portfolio) { require_once($CFG->dirroot . '/portfolio/type/' . $portfolio->get('plugin') . '/lib.php'); $classname = 'portfolio_plugin_' . $portfolio->get('plugin'); - if (call_user_func(array($classname, 'has_admin_config'))) { - $ADMIN->add( - 'portfoliosettings', - new admin_externalpage('portfoliosettings' . $portfolio->get('id'), get_string('configure', 'portfolio') . ' ' . $portfolio->get('name'), $url . '?edit=' . $portfolio->get('id')), - $portfolio->get('name'), - $url . ' ?edit=' . $portfolio->get('id') - ); - } + $ADMIN->add( + 'portfoliosettings', + new admin_externalpage('portfoliosettings' . $portfolio->get('id'), get_string('configure', 'portfolio') . ' ' . $portfolio->get('name'), $url . '?edit=' . $portfolio->get('id')), + $portfolio->get('name'), + $url . ' ?edit=' . $portfolio->get('id') + ); } } ?> diff --git a/lang/en_utf8/portfolio.php b/lang/en_utf8/portfolio.php index f4210cba63..ca086c5570 100644 --- a/lang/en_utf8/portfolio.php +++ b/lang/en_utf8/portfolio.php @@ -12,8 +12,11 @@ $string['confirmexport'] = 'Please confirm the following export'; $string['confirmsummary'] = 'Summary of your export'; $string['configure'] = 'Configure'; $string['continuetoportfolio'] = 'Continue to your portfolio'; +$string['deleteportfolio'] = 'Delete portfolio instance'; $string['dontwait'] = 'Don\'t wait'; $string['err_uniquename'] = 'Portfolio name must be unique (per plugin)'; +$string['enabled'] = 'Enable portfolios'; +$string['enableddesc'] = 'This will allow administrators to configure remote systems for users to export content to'; $string['exporting'] = 'Exporting to portfolio'; $string['exportcomplete'] = 'Portfolio export complete!'; $string['failedtosendpackage'] = 'Failed to send your data to the selected portfolio system!'; diff --git a/lib/adminlib.php b/lib/adminlib.php index 21eaeed7a1..a3724cb396 100644 --- a/lib/adminlib.php +++ b/lib/adminlib.php @@ -4163,6 +4163,118 @@ class admin_setting_managefilters extends admin_setting { } } +class admin_setting_manageportfolio extends admin_setting { + private $baseurl; + function admin_setting_manageportfolio() { + global $CFG; + parent::admin_setting('manageportfolio', get_string('manageportfolio', 'portfolio'), '', ''); + $this->baseurl = $CFG->wwwroot . '/' . $CFG->admin . '/portfolio.php?sesskey=' . sesskey(); + } + + function get_setting() { + return true; + } + + function get_defaultsetting() { + return true; + } + + function get_full_name() { + return 's_manageportfolio'; + } + + function write_setting($data) { + $url = $this->baseurl . '&new=' . $data; + redirect($url); + exit; + } + + function is_related($query) { + if (parent::is_related($query)) { + return true; + } + + $textlib = textlib_get_instance(); + $portfolios= get_list_of_plugins('portfolio'); + foreach ($portfolios as $p) { + if (strpos($p, $query) !== false) { + return true; + } + } + foreach (portfolio_instances(false, false) as $instance) { + $title = $instance->get('name'); + if (strpos($textlib->strtolower($title), $query) !== false) { + return true; + } + } + return false; + } + + function output_html($data, $query='') { + global $CFG; + + $output = print_simple_box_start(true); + + $namestr = get_string('name'); + $pluginstr = get_string('plugin', 'portfolio'); + + $plugins = get_list_of_plugins('portfolio/type'); + $instances = portfolio_instances(false, false); + $alreadyplugins = array(); + + $insane = portfolio_plugin_sanity_check($plugins); + $insaneinstances = portfolio_instance_sanity_check($instances); + + $output .= portfolio_report_insane($insane, null, true); + $output .= portfolio_report_insane($insaneinstances, $instances, true); + + $table = new StdClass; + $table->head = array($namestr, $pluginstr, ''); + $table->data = array(); + + foreach ($instances as $i) { + $row = ''; + $row .= '' . get_string('edit') . '' . "\n"; + $row .= '' . get_string('delete') . '' . "\n"; + if (array_key_exists($i->get('plugin'), $insane) || array_key_exists($i->get('id'), $insaneinstances)) { + $row .= '' . get_string('hidden', 'portfolio') . '' . "\n"; + } else { + $row .= ' ' . get_string($i->get('visible') ? 'hide' : 'show') . '' . "\n"; + } + $table->data[] = array($i->get('name'), $i->get('plugin'), $row); + if (!in_array($i->get('plugin'), $alreadyplugins)) { + $alreadyplugins[] = $i->get('plugin'); + } + } + + $output .= print_table($table, true); + + //$instancehtml = '
' + $instancehtml = get_string('addnewportfolio', 'portfolio') . ':
'; + $output .= $instancehtml; + } + $output .= print_simple_box_end(true); + + return highlight($query, $output); + } + +} + /** * Initialise admin page - this function does require login and permission * checks specified in page definition. diff --git a/lib/portfoliolib.php b/lib/portfoliolib.php index 4e4798c000..87ecce917e 100644 --- a/lib/portfoliolib.php +++ b/lib/portfoliolib.php @@ -283,7 +283,7 @@ function portfolio_instances($visibleonly=true, $useronly=true) { $instances = array(); foreach ($DB->get_records_sql($sql, $values) as $instance) { - $instances[] = portfolio_instance($instance->id, $instance); + $instances[$instance->id] = portfolio_instance($instance->id, $instance); } // @todo check capabilities here - see MDL-15768 return $instances; @@ -438,7 +438,7 @@ function portfolio_instance_sanity_check($instances=null) { * @param array $instances if reporting instances rather than whole plugins, pass the array (key = id, value = object) here * */ -function portfolio_report_insane($insane, $instances=false) { +function portfolio_report_insane($insane, $instances=false, $return=false) { if (empty($insane)) { return; } @@ -453,7 +453,7 @@ function portfolio_report_insane($insane, $instances=false) { $headerstr = get_string('somepluginsdisabled', 'portfolio'); } - notify($headerstr); + $output = notify($headerstr, 'notifyproblem', 'center', true); $table = new StdClass; $table->head = array($pluginstr, ''); $table->data = array(); @@ -471,8 +471,13 @@ function portfolio_report_insane($insane, $instances=false) { } $table->data[] = array($name, get_string($reason, 'portfolio_' . $plugin)); } - print_table($table); - echo '


'; + $output .= print_table($table, true); + $output .= '


'; + + if ($return) { + return $output; + } + echo $output; } /**