[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
1 <?php 2 3 // This file is part of Moodle - http://moodle.org/ 4 // 5 // Moodle is free software: you can redistribute it and/or modify 6 // it under the terms of the GNU General Public License as published by 7 // the Free Software Foundation, either version 3 of the License, or 8 // (at your option) any later version. 9 // 10 // Moodle is distributed in the hope that it will be useful, 11 // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 // GNU General Public License for more details. 14 // 15 // You should have received a copy of the GNU General Public License 16 // along with Moodle. If not, see <http://www.gnu.org/licenses/>. 17 18 /** 19 * Action for adding a question page. Prints an HTML form. 20 * 21 * @package mod_lesson 22 * @copyright 2009 Sam Hemelryk 23 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 24 **/ 25 26 require_once("../../config.php"); 27 require_once($CFG->dirroot.'/mod/lesson/locallib.php'); 28 require_once ('editpage_form.php'); 29 30 // first get the preceeding page 31 $pageid = required_param('pageid', PARAM_INT); 32 $id = required_param('id', PARAM_INT); // Course Module ID 33 $qtype = optional_param('qtype', 0, PARAM_INT); 34 $edit = optional_param('edit', false, PARAM_BOOL); 35 $returnto = optional_param('returnto', null, PARAM_URL); 36 if (empty($returnto)) { 37 $returnto = new moodle_url('/mod/lesson/edit.php', array('id' => $id)); 38 $returnto->set_anchor('lesson-' . $pageid); 39 } 40 41 $cm = get_coursemodule_from_id('lesson', $id, 0, false, MUST_EXIST); 42 $course = $DB->get_record('course', array('id' => $cm->course), '*', MUST_EXIST); 43 $lesson = new lesson($DB->get_record('lesson', array('id' => $cm->instance), '*', MUST_EXIST)); 44 45 require_login($course, false, $cm); 46 47 $context = context_module::instance($cm->id); 48 require_capability('mod/lesson:edit', $context); 49 50 $PAGE->set_url('/mod/lesson/editpage.php', array('pageid'=>$pageid, 'id'=>$id, 'qtype'=>$qtype)); 51 $PAGE->set_pagelayout('admin'); 52 53 if ($edit) { 54 $editpage = lesson_page::load($pageid, $lesson); 55 $qtype = $editpage->qtype; 56 $edit = true; 57 } else { 58 $edit = false; 59 } 60 61 $jumpto = lesson_page::get_jumptooptions($pageid, $lesson); 62 $manager = lesson_page_type_manager::get($lesson); 63 $editoroptions = array('noclean'=>true, 'maxfiles'=>EDITOR_UNLIMITED_FILES, 'maxbytes'=>$CFG->maxbytes); 64 65 // If the previous page was the Question type selection form, this form 66 // will have a different name (e.g. _qf__lesson_add_page_form_selection 67 // versus _qf__lesson_add_page_form_multichoice). This causes confusion 68 // in moodleform::_process_submission because the array key check doesn't 69 // tie up with the current form name, which in turn means the "submitted" 70 // check ends up evaluating as false, thus it's not possible to check whether 71 // the Question type selection was cancelled. For this reason, a dummy form 72 // is created here solely to check whether the selection was cancelled. 73 if ($qtype) { 74 $mformdummy = $manager->get_page_form(0, array( 75 'editoroptions' => $editoroptions, 76 'jumpto' => $jumpto, 77 'lesson' => $lesson, 78 'edit' => $edit, 79 'maxbytes' => $PAGE->course->maxbytes, 80 'returnto' => $returnto 81 )); 82 if ($mformdummy->is_cancelled()) { 83 redirect($returnto); 84 exit; 85 } 86 } 87 88 $mform = $manager->get_page_form($qtype, array( 89 'editoroptions' => $editoroptions, 90 'jumpto' => $jumpto, 91 'lesson' => $lesson, 92 'edit' => $edit, 93 'maxbytes' => $PAGE->course->maxbytes, 94 'returnto' => $returnto 95 )); 96 97 if ($mform->is_cancelled()) { 98 redirect($returnto); 99 exit; 100 } 101 102 if ($edit) { 103 $data = $editpage->properties(); 104 $data->pageid = $editpage->id; 105 $data->id = $cm->id; 106 $editoroptions['context'] = $context; 107 $data = file_prepare_standard_editor($data, 'contents', $editoroptions, $context, 'mod_lesson', 'page_contents', $editpage->id); 108 109 $answerscount = 0; 110 $answers = $editpage->get_answers(); 111 foreach ($answers as $answer) { 112 $answereditor = 'answer_editor['.$answerscount.']'; 113 if (is_array($data->$answereditor)) { 114 $answerdata = $data->$answereditor; 115 if ($mform->get_answer_format() === LESSON_ANSWER_HTML) { 116 $answerdraftid = file_get_submitted_draft_itemid($answereditor); 117 $answertext = file_prepare_draft_area($answerdraftid, $PAGE->cm->context->id, 118 'mod_lesson', 'page_answers', $answer->id, $editoroptions, $answerdata['text']); 119 $data->$answereditor = array('text' => $answertext, 'format' => $answerdata['format'], 'itemid' => $answerdraftid); 120 } else { 121 $data->$answereditor = $answerdata['text']; 122 } 123 } 124 125 $responseeditor = 'response_editor['.$answerscount.']'; 126 if (is_array($data->$responseeditor)) { 127 $responsedata = $data->$responseeditor; 128 if ($mform->get_response_format() === LESSON_ANSWER_HTML) { 129 $responsedraftid = file_get_submitted_draft_itemid($responseeditor); 130 $responsetext = file_prepare_draft_area($responsedraftid, $PAGE->cm->context->id, 131 'mod_lesson', 'page_responses', $answer->id, $editoroptions, $responsedata['text']); 132 $data->$responseeditor = array('text' => $responsetext, 'format' => $responsedata['format'], 133 'itemid' => $responsedraftid); 134 } else { 135 $data->$responseeditor = $responsedata['text']; 136 } 137 } 138 $answerscount++; 139 } 140 141 $mform->set_data($data); 142 $PAGE->navbar->add(get_string('edit'), new moodle_url('/mod/lesson/edit.php', array('id'=>$id))); 143 $PAGE->navbar->add(get_string('editingquestionpage', 'lesson', get_string($mform->qtypestring, 'lesson'))); 144 } else { 145 // Give the page type being created a chance to override the creation process 146 // this is used by endofbranch, cluster, and endofcluster to skip the creation form. 147 // IT SHOULD ALWAYS CALL require_sesskey(); 148 $mform->construction_override($pageid, $lesson); 149 150 $data = new stdClass; 151 $data->id = $cm->id; 152 $data->pageid = $pageid; 153 if ($qtype) { 154 //TODO: the handling of form for the selection of question type is a bloody hack! (skodak) 155 $data->qtype = $qtype; 156 } 157 $data = file_prepare_standard_editor($data, 'contents', $editoroptions, null); 158 $mform->set_data($data); 159 $PAGE->navbar->add(get_string('addanewpage', 'lesson'), $PAGE->url); 160 if ($qtype !== 'unknown') { 161 $PAGE->navbar->add(get_string($mform->qtypestring, 'lesson')); 162 } 163 } 164 165 if ($data = $mform->get_data()) { 166 require_sesskey(); 167 if ($edit) { 168 $data->lessonid = $data->id; 169 $data->id = $data->pageid; 170 unset($data->pageid); 171 unset($data->edit); 172 $editpage->update($data, $context, $PAGE->course->maxbytes); 173 } else { 174 $editpage = lesson_page::create($data, $lesson, $context, $PAGE->course->maxbytes); 175 } 176 redirect($returnto); 177 } 178 179 $lessonoutput = $PAGE->get_renderer('mod_lesson'); 180 echo $lessonoutput->header($lesson, $cm, '', false, null, get_string('edit', 'lesson')); 181 $mform->display(); 182 echo $lessonoutput->footer();
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Thu Aug 11 10:00:09 2016 | Cross-referenced by PHPXref 0.7.1 |