diff --git a/admin/portfolio.php b/admin/portfolio.php index b08771dd7e1..fd36268b3de 100644 --- a/admin/portfolio.php +++ b/admin/portfolio.php @@ -50,25 +50,21 @@ if (!empty($edit) || !empty($new)) { redirect($baseurl); exit; } else if ($fromform = $mform->get_data()){ - if (!confirm_sesskey()) { - print_error('confirmsesskeybad', '', $baseurl); + // unset whatever doesn't belong in fromform + foreach (array('edit', 'new', 'plugin', 'sesskey', 'submitbutton') as $key) { + unset($fromform->{$key}); } //this branch is where you process validated data. if ($edit) { - $success = $instance->set_config($fromform); - $success = $success && $instance->save(); - } - else { - $success = portfolio_static_function($plugin, 'create_instance', $plugin, $fromform->name, $fromform); - } - if ($success) { - $savedstr = get_string('instancesaved', 'portfolio'); - admin_externalpage_print_header(); - print_heading($savedstr); - redirect($baseurl, $savedstr, 3); + $instance->set_config($fromform); + $instance->save(); } else { - print_error('instancenotsaved', 'portfolio', $baseurl); + portfolio_static_function($plugin, 'create_instance', $plugin, $fromform->name, $fromform); } + $savedstr = get_string('instancesaved', 'portfolio'); + admin_externalpage_print_header(); + print_heading($savedstr); + redirect($baseurl, $savedstr, 3); exit; } else { admin_externalpage_print_header(); diff --git a/lib/portfoliolib.php b/lib/portfoliolib.php index deada132c5b..e6e12134388 100644 --- a/lib/portfoliolib.php +++ b/lib/portfoliolib.php @@ -176,8 +176,10 @@ define('PORTFOLIO_ADD_TEXT_LINK', 4); * @param str $addstr string to use for the button or icon alt text or link text. * this is whole string, not key. optional, defaults to 'Add to portfolio'; * @param boolean $return whether to echo or return content (optional defaults to false (echo) +* @param array $callersupports if the calling code knows better than the static method on the calling class (supported_formats) +* eg, if there's a file that might be an image, you can pass it here instead */ -function portfolio_add_button($callbackclass, $callbackargs, $callbackfile=null, $format=PORTFOLIO_ADD_FULL_FORM, $addstr=null, $return=false) { +function portfolio_add_button($callbackclass, $callbackargs, $callbackfile=null, $format=PORTFOLIO_ADD_FULL_FORM, $addstr=null, $return=false, $callersupports=null) { global $SESSION, $CFG, $COURSE, $USER; @@ -219,7 +221,9 @@ function portfolio_add_button($callbackclass, $callbackargs, $callbackfile=null, require_once($CFG->dirroot . $callbackfile); - $callersupports = call_user_func(array($callbackclass, 'supported_formats')); + if (empty($callersupports)) { + $callersupports = call_user_func(array($callbackclass, 'supported_formats')); + } $formoutput = '