/** * Handles the page link item hide/show * * @return void **/ public function handle_action() { $showhide = required_param('showhide', PARAM_ALPHA); $pageid = required_param('pageid', PARAM_INT); $linkid = required_param('linkid', PARAM_INT); if ($showhide == 'hide') { $this->save_data($linkid, 'exclude', $pageid, true); pagemenu_set_message(get_string('pagelinkhidden', 'pagemenu'), 'notifysuccess'); } else { if ($showhide == 'show') { delete_records('pagemenu_link_data', 'linkid', $linkid, 'name', 'exclude', 'value', $pageid); pagemenu_set_message(get_string('pagelinkvisible', 'pagemenu'), 'notifysuccess'); } else { error('Invalide showhid param'); } } }
/** * Helper function to handle edit actions * * @param object $pagemenu Page menu instance * @param string $action Action that is being performed * @return boolean If return true, then a redirect will occure (in edit.php at least) **/ function pagemenu_handle_edit_action($pagemenu, $action = NULL) { global $CFG; if (!confirm_sesskey()) { error(get_string('confirmsesskeybad', 'error')); } $linkid = required_param('linkid', PARAM_INT); if ($action === NULL) { $action = required_param('action', PARAM_ALPHA); } switch ($action) { case 'edit': case 'move': return false; break; case 'movehere': $after = required_param('after', PARAM_INT); pagemenu_move_link($pagemenu, $linkid, $after); pagemenu_set_message(get_string('linkmoved', 'pagemenu'), 'notifysuccess'); break; case 'delete': pagemenu_delete_link($linkid); pagemenu_set_message(get_string('linkdeleted', 'pagemenu'), 'notifysuccess'); break; default: error('Inavlid action: ' . $action); break; } return true; }
$link = mod_pagemenu_link::factory($linktype, $linkid); $formdata = array_merge($formdata, (array) $link->config); } } // Create the editing form which has dual purpose - add new // links of any type or edit a single link of any type $mform = new mod_pagemenu_edit_form(NULL, $link); if ($mform->is_cancelled()) { redirect("{$CFG->wwwroot}/mod/pagemenu/edit.php?id={$cm->id}"); } else { if ($data = $mform->get_data()) { // Save form data foreach (pagemenu_get_link_classes() as $link) { $link->save($data); } pagemenu_set_message(get_string('menuupdated', 'pagemenu'), 'notifysuccess'); redirect("{$CFG->wwwroot}/mod/pagemenu/edit.php?id={$cm->id}"); } else { if (!empty($linkaction)) { // These are special link actions that can be invoked by // a link class. EG: hide show page menu items if (!confirm_sesskey()) { error(get_string('confirmsesskeybad', 'error')); } if (!in_array($linkaction, pagemenu_get_links())) { error('Invalide link type'); } $link = mod_pagemenu_link::factory($linkaction); $link->handle_action(); redirect("{$CFG->wwwroot}/mod/pagemenu/edit.php?id={$cm->id}"); }