MDL-20353 adding missing data types of hidden form fields
[moodle.git] / mod / feedback / edit_item.php
1 <?php
3 /**
4  * prints the form to edit a dedicated item
5  *
6  * @author Andreas Grabs
7  * @license http://www.gnu.org/copyleft/gpl.html GNU Public License
8  * @package feedback
9  */
11 require_once("../../config.php");
12 require_once("lib.php");
14 feedback_init_feedback_session();
16 $id = optional_param('id', NULL, PARAM_INT);
17 $typ = optional_param('typ', false, PARAM_ALPHA);
18 $itemid = optional_param('itemid', false, PARAM_INT);
20 if(!$typ)redirect(htmlspecialchars('edit.php?id=' . $id));
22 $url = new moodle_url($CFG->wwwroot.'/mod/feedback/edit_item.php', array('id'=>$id));
23 if ($type !== false) {
24     $url->param('typ', $typ);
25 }
26 if ($itemid !== false) {
27     $url->param('itemid', $itemid);
28 }
29 $PAGE->set_url($url);
31 // set up some general variables
32 $usehtmleditor = can_use_html_editor();
35 if(($formdata = data_submitted()) AND !confirm_sesskey()) {
36     print_error('invalidsesskey');
37 }
39 if ($id) {
40     if (! $cm = get_coursemodule_from_id('feedback', $id)) {
41         print_error('invalidcoursemodule');
42     }
44     if (! $course = $DB->get_record("course", array("id"=>$cm->course))) {
45         print_error('coursemisconf');
46     }
48     if (! $feedback = $DB->get_record("feedback", array("id"=>$cm->instance))) {
49         print_error('invalidcoursemodule');
50     }
51 }
52 $capabilities = feedback_load_capabilities($cm->id);
54 require_login($course->id, true, $cm);
56 if(!$capabilities->edititems){
57     print_error('error');
58 }
60 //if the typ is pagebreak so the item will be saved directly
61 if($typ == 'pagebreak') {
62     feedback_create_pagebreak($feedback->id);
63     redirect(htmlspecialchars('edit.php?id='.$id));
64     exit;
65 }
67 //get the existing item or create it
68 // $formdata->itemid = isset($formdata->itemid) ? $formdata->itemid : NULL;
69 if($itemid and $item = $DB->get_record('feedback_item', array('id'=>$itemid))) {
70     $typ = $item->typ;
71     $position = $item->position;
72 }else {
73     $position = -1;
74     $item = new stdClass();
75     if ($position == '') {
76         $position = 0;
77     }
78     if (!$typ) {
79         print_error('typemissing', 'feedback', $CFG->wwwroot.'/mod/feedback/edit.php?id='.$id);
80     }
81 }
83 require_once($CFG->dirroot.'/mod/feedback/item/'.$typ.'/lib.php');
85 ////////////////////////////////////////////////////////////////////////////////////
86 ////////////////////////////////////////////////////////////////////////////////////
87 if(isset($formdata->cancel)){
88     redirect(htmlspecialchars('edit.php?id=' . $id));
89 }
91 // if(isset($formdata->editcancel) AND $formdata->editcancel == 1){
92     // redirect(htmlspecialchars('edit.php?id=' . $id));
93 // }
95 if(isset($formdata->saveitem) AND $formdata->saveitem == 1){
96     $newposition = $formdata->position;
97     $formdata->position = $newposition + 1;
99     if (!$newitemid = feedback_create_item($formdata)) {
100         $SESSION->feedback->errors[] = get_string('item_creation_failed', 'feedback');
101     }else {
102         $newitem = $DB->get_record('feedback_item', array('id'=>$newitemid));
103         if (!feedback_move_item($newitem, $newposition)){
104             $SESSION->feedback->errors[] = get_string('item_creation_failed', 'feedback');
105         }else {
106             redirect(htmlspecialchars('edit.php?id='.$id));
107         }
108     }
111 if(isset($formdata->updateitem) AND $formdata->updateitem == 1){
112     //update the item and go back
113     if (!feedback_update_item($item, $formdata)) {
114         $SESSION->feedback->errors[] = get_string('item_update_failed', 'feedback');
115     } else {
116         if (!feedback_move_item($item, $formdata->position)){
117             $SESSION->feedback->errors[] = get_string('item_update_failed', 'feedback');
118         }else {
119             redirect(htmlspecialchars('edit.php?id='.$id));
120         }
121     }
123 ////////////////////////////////////////////////////////////////////////////////////
124 ////////////////////////////////////////////////////////////////////////////////////
126 /// Print the page header
127 $strfeedbacks = get_string("modulenameplural", "feedback");
128 $strfeedback  = get_string("modulename", "feedback");
130 $PAGE->navbar->add($strfeedbacks, new moodle_url($CFG->wwwroot.'/mod/feedback/index.php', array('id'=>$course->id)));
131 $PAGE->navbar->add(format_string($feedback->name));
133 $PAGE->set_title(format_string($feedback->name));
134 $PAGE->set_button($OUTPUT->update_module_button($cm->id, 'feedback'));
135 echo $OUTPUT->header();
137 /// print the tabs
138 include('tabs.php');
140 /// Print the main part of the page
141 ///////////////////////////////////////////////////////////////////////////
142 ///////////////////////////////////////////////////////////////////////////
143 ///////////////////////////////////////////////////////////////////////////
144 echo $OUTPUT->heading(format_text($feedback->name));
147 //print errormsg
148 if(isset($error)){echo $error;}
150 feedback_print_errors();
152 //new formdefinition
153 $itemclass = 'feedback_item_'.$typ;
154 $itemobj = new $itemclass();
155 $item_form = &$itemobj->show_edit($item);
157 $i_form = &$item_form->get_item_form();
158 // $i_form->addElement('header', 'general', 'Titel');
159 $i_form->addElement('hidden', 'id', $id);
160 $mform->setType('id', PARAM_INT);
161 $i_form->addElement('hidden', 'itemid', isset($item->id)?$item->id:'');
162 $mform->setType('itemid', PARAM_INT);
163 $i_form->addElement('hidden', 'typ', $typ);
164 $mform->setType('typ', PARAM_ALPHA);
165 $i_form->addElement('hidden', 'feedbackid', $feedback->id);
166 $mform->setType('feedbackid', PARAM_INT);
169 $lastposition = $DB->count_records('feedback_item', array('feedback'=>$feedback->id));
170 if($position == -1){
171     $i_formselect_last = $lastposition + 1;
172     $i_formselect_value = $lastposition + 1;
173 }else {
174     $i_formselect_last = $lastposition;
175     $i_formselect_value = $item->position;
177 $i_formselect = $i_form->addElement('select',
178                                     'position',
179                                     get_string('position', 'feedback').'&nbsp;',
180                                     array_slice(range(0,$i_formselect_last),1,$i_formselect_last,true));
181 $i_formselect->setValue($i_formselect_value);
183 $buttonarray = array();
184 if(!empty($item->id)){
185     $i_form->addElement('hidden', 'updateitem', '1');
186     $mform->setType('updateitem', PARAM_INT);
187     // $i_form->addElement('submit', 'update_item', get_string('update_item', 'feedback'));
188     $buttonarray[] = &$i_form->createElement('submit', 'update_item', get_string('update_item', 'feedback'));
189 }else{
190     $i_form->addElement('hidden', 'saveitem', '1');
191     $mform->setType('saveitem', PARAM_INT);
192     // $i_form->addElement('submit', 'save_item', get_string('save_item', 'feedback'));
193     $buttonarray[] = &$i_form->createElement('submit', 'save_item', get_string('save_item', 'feedback'));
195 // $i_form->addElement('cancel');
196 $buttonarray[] = &$i_form->createElement('cancel');
197 $i_form->addGroup($buttonarray, 'buttonar', '', array(' '), false);
198 $item_form->display();
200 /*
201 echo $OUTPUT->box_start('generalbox boxwidthwide boxaligncenter');
202     echo '<form action="'.$ME.'" method="post">';
203     echo '<input type="hidden" name="sesskey" value="'.sesskey().'" />';
205 //this div makes the buttons stand side by side
206 echo '<div>';
207 $itemclass = 'feedback_item_'.$typ;
208 $itemobj = new $itemclass();
209 $itemobj->show_edit($item, $usehtmleditor);
210 echo '</div>';
211     echo '<input type="hidden" name="id" value="'.$id.'" />';
212     echo '<input type="hidden" name="itemid" value="'.(isset($item->id)?$item->id:'').'" />';
213     echo '<input type="hidden" name="typ" value="'.$typ.'" />';
214     echo '<input type="hidden" name="feedbackid" value="'.$feedback->id.'" />';
216 //choose the position
217 $lastposition = $DB->count_records('feedback_item', array('feedback'=>$feedback->id));
218 echo get_string('position', 'feedback').'&nbsp;';
219 echo '<select name="position">';
220     //Dropdown-Items for choosing the position
221     if($position == -1){
222         feedback_print_numeric_option_list(1, $lastposition + 1, $lastposition + 1);
223     }else {
224         feedback_print_numeric_option_list(1, $lastposition, $item->position);
225     }
226 echo '</select><hr />';
228 //////////////////////////////////////////////////////////////////////////////////////
229 //////////////////////////////////////////////////////////////////////////////////////
230 if(!empty($item->id)){
231     echo '<input type="hidden" id="updateitem" name="updateitem" value="1" />';
232     echo '<input type="submit" value ="'.get_string('update_item', 'feedback').'" />';
233 }else{
234     echo '<input type="hidden" id="saveitem" name="saveitem" value="1" />';
235     echo '<input type="submit" value="'.get_string('save_item', 'feedback').'" />';
237 echo '<input type="submit" name="cancel" value="'.get_string('cancel').'" />';
238 echo '</form>';
239 //////////////////////////////////////////////////////////////////////////////////////
240 //////////////////////////////////////////////////////////////////////////////////////
241 */
242 // echo $OUTPUT->box_end();
244 if ($typ!='label') {
245     $PAGE->requires->js('mod/feedback/feedback.js');
246     $PAGE->requires->js_function_call('set_item_focus', Array('id_itemname'));
249 /// Finish the page
250 ///////////////////////////////////////////////////////////////////////////
251 ///////////////////////////////////////////////////////////////////////////
252 ///////////////////////////////////////////////////////////////////////////
254 echo $OUTPUT->footer();
256 ?>