mod-data MDL-19806 Added set_url calls, replaced deprecated functions, and added...
[moodle.git] / mod / feedback / edit.php
CommitLineData
c70ad9f7 1<?php // $Id$
2/**
3* prints the form to edit the feedback items such moving, deleting and so on
4*
5* @version $Id$
6* @author Andreas Grabs
7* @license http://www.gnu.org/copyleft/gpl.html GNU Public License
8* @package feedback
9*/
10
11 require_once("../../config.php");
12 require_once("lib.php");
13 require_once('edit_form.php');
14
f1b9e2df 15 feedback_init_feedback_session();
16
c70ad9f7 17 $id = required_param('id', PARAM_INT);
18
294ce987 19 if(($formdata = data_submitted()) AND !confirm_sesskey()) {
5d2edd1c 20 print_error('invalidsesskey');
c70ad9f7 21 }
d4b1d58c 22
c70ad9f7 23 $do_show = optional_param('do_show', 'edit', PARAM_ALPHA);
24 $moveupitem = optional_param('moveupitem', false, PARAM_INT);
25 $movedownitem = optional_param('movedownitem', false, PARAM_INT);
26 $moveitem = optional_param('moveitem', false, PARAM_INT);
27 $movehere = optional_param('movehere', false, PARAM_INT);
28 $switchitemrequired = optional_param('switchitemrequired', false, PARAM_INT);
b7a47958 29
30 $ME = strip_querystring($FULLME);//sometimes it is not correct set
d4b1d58c 31
c70ad9f7 32 // $SESSION->feedback->current_tab = $do_show;
33 $current_tab = $do_show;
d4b1d58c 34
c70ad9f7 35 if ($id) {
36 if (! $cm = get_coursemodule_from_id('feedback', $id)) {
5d2edd1c 37 print_error('invalidcoursemodule');
c70ad9f7 38 }
d4b1d58c 39
0085fff8 40 if (! $course = $DB->get_record("course", array("id"=>$cm->course))) {
5d2edd1c 41 print_error('coursemisconf');
c70ad9f7 42 }
d4b1d58c 43
0085fff8 44 if (! $feedback = $DB->get_record("feedback", array("id"=>$cm->instance))) {
5d2edd1c 45 print_error('invalidcoursemodule');
c70ad9f7 46 }
47 }
48 $capabilities = feedback_load_capabilities($cm->id);
49
6178c62a 50 require_login($course->id, true, $cm);
d4b1d58c 51
c70ad9f7 52 if(!$capabilities->edititems){
5d2edd1c 53 print_error('error');
c70ad9f7 54 }
55
56 //move up/down items
57 if($moveupitem){
0085fff8 58 $item = $DB->get_record('feedback_item', array('id'=>$moveupitem));
c70ad9f7 59 feedback_moveup_item($item);
60 }
61 if($movedownitem){
0085fff8 62 $item = $DB->get_record('feedback_item', array('id'=>$movedownitem));
c70ad9f7 63 feedback_movedown_item($item);
64 }
d4b1d58c 65
c70ad9f7 66 //moving of items
67 if($movehere && isset($SESSION->feedback->moving->movingitem)){
0085fff8 68 $item = $DB->get_record('feedback_item', array('id'=>$SESSION->feedback->moving->movingitem));
c70ad9f7 69 feedback_move_item($item, intval($movehere));
b7a47958 70 $moveitem = false;
c70ad9f7 71 }
72 if($moveitem){
0085fff8 73 $item = $DB->get_record('feedback_item', array('id'=>$moveitem));
c70ad9f7 74 $SESSION->feedback->moving->shouldmoving = 1;
75 $SESSION->feedback->moving->movingitem = $moveitem;
76 } else {
77 unset($SESSION->feedback->moving);
78 }
d4b1d58c 79
c70ad9f7 80 if($switchitemrequired) {
0085fff8 81 $item = $DB->get_record('feedback_item', array('id'=>$switchitemrequired));
c70ad9f7 82 @feedback_switch_item_required($item);
83 redirect($ME.'?'.feedback_edit_get_default_query($id, $do_show));
84 exit;
85 }
d4b1d58c 86
c70ad9f7 87 //the create_template-form
88 $create_template_form = new feedback_edit_create_template_form();
89 $create_template_form->set_feedbackdata(array('capabilities' => $capabilities));
90 $create_template_form->set_form_elements();
91 $create_template_form->set_data(array('id'=>$id, 'do_show'=>'templates'));
92 $create_template_formdata = $create_template_form->get_data();
93 if(isset($create_template_formdata->savetemplate) && $create_template_formdata->savetemplate == 1) {
94 //check the capabilities to create templates
95 if(!$capabilities->createprivatetemplate AND !$capabilities->createpublictemplate) {
5d2edd1c 96 print_error('cannotsavetempl', 'feedback');
c70ad9f7 97 }
98 if(trim($create_template_formdata->templatename) == '')
99 {
100 $savereturn = 'notsaved_name';
101 }else {
102 if($capabilities->createpublictemplate) {
103 $create_template_formdata->ispublic = isset($create_template_formdata->ispublic) ? 1 : 0;
104 }else {
105 $create_template_formdata->ispublic = 0;
106 }
107 if(!feedback_save_as_template($feedback, $create_template_formdata->templatename, $create_template_formdata->ispublic))
108 {
109 $savereturn = 'failed';
110 }else {
111 $savereturn = 'saved';
112 }
113 }
114 }
115
116 //get the feedbackitems
117 $lastposition = 0;
0085fff8 118 $feedbackitems = $DB->get_records('feedback_item', array('feedback'=>$feedback->id), 'position');
c70ad9f7 119 if(is_array($feedbackitems)){
120 $feedbackitems = array_values($feedbackitems);
b9fb72f7 121 if(count($feedbackitems) > 0) {
122 $lastitem = $feedbackitems[count($feedbackitems)-1];
123 $lastposition = $lastitem->position;
124 }else {
125 $lastposition = 0;
126 }
c70ad9f7 127 }
128 $lastposition++;
d4b1d58c 129
130
c70ad9f7 131 //the add_item-form
132 $add_item_form = new feedback_edit_add_question_form('edit_item.php');
133 $add_item_form->set_data(array('id'=>$id, 'position'=>$lastposition));
134
135 //the use_template-form
136 $use_template_form = new feedback_edit_use_template_form('use_templ.php');
137 $use_template_form->set_feedbackdata(array('course' => $course));
138 $use_template_form->set_form_elements();
139 $use_template_form->set_data(array('id'=>$id));
140
141 //the create_template-form
142 //$create_template_form = new feedback_edit_create_template_form('use_templ.php');
143
144 /// Print the page header
145 $strfeedbacks = get_string("modulenameplural", "feedback");
146 $strfeedback = get_string("modulename", "feedback");
147 $buttontext = update_module_button($cm->id, $course->id, $strfeedback);
d4b1d58c 148
ab5bd34d 149 if ($do_show == 'edit') {
150 $PAGE->navbar->add(get_string('edit_items', 'feedback'));
151 } else {
152 $PAGE->navbar->add(get_string($do_show, 'feedback'));
153 }
154 $PAGE->set_url(new moodle_url($CFG->wwwroot.'/mod/feedback/edit.php', array('id'=>$cm->id, 'do_show'=>$do_show)));
84f797db 155 $PAGE->set_title(format_string($feedback->name));
156 $PAGE->set_button($buttontext);
157 echo $OUTPUT->header();
c70ad9f7 158
159 /// print the tabs
160 include('tabs.php');
161
162 /// Print the main part of the page
163 ///////////////////////////////////////////////////////////////////////////
164 ///////////////////////////////////////////////////////////////////////////
165 ///////////////////////////////////////////////////////////////////////////
d4b1d58c 166
c70ad9f7 167 $savereturn=isset($savereturn)?$savereturn:'';
d4b1d58c 168
c70ad9f7 169 //print the messages
170 if($savereturn == 'notsaved_name') {
171 echo '<p align="center"><b><font color="red">'.get_string('name_required','feedback').'</font></b></p>';
172 }
173
174 if($savereturn == 'saved') {
175 echo '<p align="center"><b><font color="green">'.get_string('template_saved','feedback').'</font></b></p>';
176 }
d4b1d58c 177
c70ad9f7 178 if($savereturn == 'failed') {
179 echo '<p align="center"><b><font color="red">'.get_string('saving_failed','feedback').'</font></b></p>';
180 }
181
182 feedback_print_errors();
d4b1d58c 183
c70ad9f7 184 ///////////////////////////////////////////////////////////////////////////
185 ///print the template-section
186 ///////////////////////////////////////////////////////////////////////////
187 if($do_show == 'templates') {
d4b1d58c 188 echo $OUTPUT->box_start('generalbox boxaligncenter boxwidthwide');
c70ad9f7 189 $use_template_form->display();
d4b1d58c 190
c70ad9f7 191 if($capabilities->createprivatetemplate OR $capabilities->createpublictemplate) {
192 $create_template_form->display();
193 echo '<p><a href="'.htmlspecialchars('delete_template.php?id='.$id).'">'.get_string('delete_templates', 'feedback').'</a></p>';
194 }else {
195 echo '&nbsp;';
196 }
197
198 if($capabilities->edititems) {
199 echo '<p>
200 <a href="'.htmlspecialchars('export.php?action=exportfile&id='.$id).'">'.get_string('export_questions', 'feedback').'</a>/
201 <a href="'.htmlspecialchars('import.php?id='.$id).'">'.get_string('import_questions', 'feedback').'</a>
202 </p>';
203 }
d4b1d58c 204 echo $OUTPUT->box_end();
c70ad9f7 205 }
206 ///////////////////////////////////////////////////////////////////////////
207 ///print the Item-Edit-section
208 ///////////////////////////////////////////////////////////////////////////
209 if($do_show == 'edit') {
d4b1d58c 210
c70ad9f7 211 $add_item_form->display();
212
213 if(is_array($feedbackitems)){
214 $itemnr = 0;
d4b1d58c 215
9fad7b20 216 $helpbutton = $OUTPUT->help_icon(moodle_help_icon::make('preview', get_string('preview','feedback'), 'feedback',true));
d4b1d58c 217
53b1f5da 218 echo $OUTPUT->heading($helpbutton . get_string('preview', 'feedback'));
c70ad9f7 219 if(isset($SESSION->feedback->moving) AND $SESSION->feedback->moving->shouldmoving == 1) {
53b1f5da 220 echo $OUTPUT->heading('<a href="'.htmlspecialchars($ME.'?id='.$id).'">'.get_string('cancel_moving', 'feedback').'</a>');
c70ad9f7 221 }
d4b1d58c 222 echo $OUTPUT->box_start('generalbox boxaligncenter boxwidthwide');
223
c70ad9f7 224 //check, if there exists required-elements
7e29e800 225 $countreq = $DB->count_records('feedback_item', array('feedback'=>$feedback->id, 'required'=> 1));
c70ad9f7 226 if($countreq > 0) {
227 // echo '<font color="red">(*)' . get_string('items_are_required', 'feedback') . '</font>';
228 echo '<span class="feedback_required_mark">(*)' . get_string('items_are_required', 'feedback') . '</span>';
229 }
d4b1d58c 230
c70ad9f7 231 echo '<table>';
232 if(isset($SESSION->feedback->moving) AND $SESSION->feedback->moving->shouldmoving == 1) {
233 $moveposition = 1;
234 echo '<tr>'; //only shown if shouldmoving = 1
235 echo '<td>';
236 $buttonlink = $ME.'?'.htmlspecialchars(feedback_edit_get_default_query($id, $do_show).'&movehere='.$moveposition);
237 echo '<a title="'.get_string('move_here','feedback').'" href="'.$buttonlink.'">
e63f88c9 238 <img class="movetarget" alt="'.get_string('move_here','feedback').'" src="'.$OUTPUT->old_icon_url('movehere') . '" />
c70ad9f7 239 </a>';
240
241 // echo '<form action="'.$ME.'" method="post"><fieldset>';
e63f88c9 242 // echo '<input title="'.get_string('move_here','feedback').'" type="image" src="'.$OUTPUT->old_icon_url('movehere') . '" hspace="1" height="16" width="80" border="0" />';
c70ad9f7 243 // echo '<input type="hidden" name="movehere" value="'.$moveposition.'" />';
244 // feedback_edit_print_default_form_values($id, $do_show);
245 // echo '</fieldset></form>';
246 echo '</td>';
247 echo '</tr>';
248 }
249 //print the inserted items
250 $itempos = 0;
251 foreach($feedbackitems as $feedbackitem){
252 $itempos++;
253 if(isset($SESSION->feedback->moving) AND $SESSION->feedback->moving->movingitem == $feedbackitem->id){ //hiding the item to move
254 continue;
255 }
256 echo '<tr>';
257 //items without value only are labels
efc59167 258 if($feedbackitem->hasvalue == 1 AND $feedback->autonumbering) {
c70ad9f7 259 $itemnr++;
efc59167 260 echo '<td valign="top">' . $itemnr . '.&nbsp;</td>';
c70ad9f7 261 } else {
262 echo '<td>&nbsp;</td>';
263 }
264 if($feedbackitem->typ != 'pagebreak') {
265 feedback_print_item($feedbackitem, false, false, true);
266 }else {
267 echo '<td class="feedback_pagebreak"><b>'.get_string('pagebreak', 'feedback').'</b></td><td><hr width="100%" size="8px" noshade="noshade" /></td>';
268 }
269 echo '<td>('.get_string('position', 'feedback').':'.$itempos .')</td>';
270 echo '<td>';
271 if($feedbackitem->position > 1){
272 $buttonlink = $ME.'?'.htmlspecialchars(feedback_edit_get_default_query($id, $do_show).'&moveupitem='.$feedbackitem->id);
273 echo '<a class="icon up" title="'.get_string('moveup_item','feedback').'" href="'.$buttonlink.'">
f2a1963c 274 <img alt="'.get_string('moveup_item','feedback').'" src="'.$OUTPUT->old_icon_url('t/up') . '" />
c70ad9f7 275 </a>';
276 //print the button to move-up the item
277 // echo '<form action="'.$ME.'" method="post"><fieldset>';
f2a1963c 278 // ///////echo '<input title="'.get_string('moveup_item','feedback').'" type="image" src="'.$OUTPUT->old_icon_url('t/up') . '" hspace="1" height="11" width="11" border="0" />';
279 // echo '<input class="feedback_moveup_button" title="'.get_string('moveup_item','feedback').'" type="image" src="'.$OUTPUT->old_icon_url('t/up') . '" />';
c70ad9f7 280 // echo '<input type="hidden" name="moveupitem" value="'.$feedbackitem->id.'" />';
281 // feedback_edit_print_default_form_values($id, $do_show);
282 // echo '</fieldset></form>';
283 }else{
284 echo '&nbsp;';
285 }
286 echo '</td>';
287 echo '<td>';
288 if($feedbackitem->position < $lastposition - 1){
289 $buttonlink = $ME.'?'.htmlspecialchars(feedback_edit_get_default_query($id, $do_show).'&movedownitem='.$feedbackitem->id);
290 echo '<a class="icon down" title="'.get_string('movedown_item','feedback').'" href="'.$buttonlink.'">
f2a1963c 291 <img alt="'.get_string('movedown_item','feedback').'" src="'.$OUTPUT->old_icon_url('t/down') . '" />
c70ad9f7 292 </a>';
293 //print the button to move-down the item
294 // echo '<form action="'.$ME.'" method="post"><fieldset>';
f2a1963c 295 // echo '<input title="'.get_string('movedown_item','feedback').'" type="image" src="'.$OUTPUT->old_icon_url('t/down') . '" hspace="1" height="11" width="11" border="0" />';
296 // echo '<input class="feedback_movedown_button" title="'.get_string('movedown_item','feedback').'" type="image" src="'.$OUTPUT->old_icon_url('t/down') . '" />';
c70ad9f7 297 // echo '<input type="hidden" name="movedownitem" value="'.$feedbackitem->id.'" />';
298 // feedback_edit_print_default_form_values($id, $do_show);
299 // echo '</fieldset></form>';
300 }else{
301 echo '&nbsp;';
302 }
303 echo '</td>';
304 echo '<td>';
305 $buttonlink = $ME.'?'.htmlspecialchars(feedback_edit_get_default_query($id, $do_show).'&moveitem='.$feedbackitem->id);
306 echo '<a class="editing_move" title="'.get_string('move_item','feedback').'" href="'.$buttonlink.'">
f2a1963c 307 <img alt="'.get_string('move_item','feedback').'" src="'.$OUTPUT->old_icon_url('t/move') . '" />
c70ad9f7 308 </a>';
309 // echo '<form action="'.$ME.'" method="post"><fieldset>';
f2a1963c 310 // echo '<input title="'.get_string('move_item','feedback').'" type="image" src="'.$OUTPUT->old_icon_url('t/move') . '" hspace="1" height="11" width="11" border="0" />';
311 // echo '<input class="feedback_move_button" title="'.get_string('move_item','feedback').'" type="image" src="'.$OUTPUT->old_icon_url('t/move') . '" />';
c70ad9f7 312 // echo '<input type="hidden" name="moveitem" value="'.$feedbackitem->id.'" />';
313 // feedback_edit_print_default_form_values($id, $do_show);
314 // echo '</fieldset></form>';
315 echo '</td>';
316 echo '<td>';
317 //print the button to edit the item
318 if($feedbackitem->typ != 'pagebreak') {
319 $buttonlink = 'edit_item.php?'.htmlspecialchars(feedback_edit_get_default_query($id, $do_show).'&itemid='.$feedbackitem->id.'&typ='.$feedbackitem->typ);
320 echo '<a class="editing_update" title="'.get_string('edit_item','feedback').'" href="'.$buttonlink.'">
f2a1963c 321 <img alt="'.get_string('edit_item','feedback').'" src="'.$OUTPUT->old_icon_url('t/edit') . '" />
c70ad9f7 322 </a>';
323 // echo '<form action="edit_item.php" method="post"><fieldset>';
f2a1963c 324 // echo '<input title="'.get_string('edit_item','feedback').'" type="image" src="'.$OUTPUT->old_icon_url('t/edit') . '" hspace="1" height="11" width="11" border="0" />';
325 // echo '<input class="feedback_edit_button" title="'.get_string('edit_item','feedback').'" type="image" src="'.$OUTPUT->old_icon_url('t/edit') . '" />';
c70ad9f7 326 // echo '<input type="hidden" name="itemid" value="'.$feedbackitem->id.'" />';
327 // echo '<input type="hidden" name="typ" value="'.$feedbackitem->typ.'" />';
328 // feedback_edit_print_default_form_values($id, $do_show);
329 // echo '</fieldset></form>';
330 }else {
331 echo '&nbsp;';
332 }
333 echo '</td>';
334 echo '<td>';
d4b1d58c 335
c70ad9f7 336 //print the toggle-button to switch required yes/no
337 if($feedbackitem->hasvalue == 1) {
338 // echo '<form action="'.$ME.'" method="post"><fieldset>';
339 if($feedbackitem->required == 1) {
340 // echo '<input title="'.get_string('switch_item_to_not_required','feedback').'" type="image" src="pics/required.gif" hspace="1" height="11" width="11" border="0" />';
341 // echo '<input class="feedback_required_button" title="'.get_string('switch_item_to_not_required','feedback').'" type="image" src="pics/required.gif" />';
342 $buttontitle = get_string('switch_item_to_not_required','feedback');
343 $buttonimg = 'pics/required.gif';
344 } else {
345 // echo '<input title="'.get_string('switch_item_to_required','feedback').'" type="image" src="pics/notrequired.gif" hspace="1" height="11" width="11" border="0" />';
346 // echo '<input class="feedback_required_button" title="'.get_string('switch_item_to_required','feedback').'" type="image" src="pics/notrequired.gif" />';
347 $buttontitle = get_string('switch_item_to_required','feedback');
348 $buttonimg = 'pics/notrequired.gif';
349 }
350 $buttonlink = $ME.'?'.htmlspecialchars(feedback_edit_get_default_query($id, $do_show).'&switchitemrequired='.$feedbackitem->id);
351 echo '<a class="icon feedback_switchrequired" title="'.$buttontitle.'" href="'.$buttonlink.'">
352 <img alt="'.$buttontitle.'" src="'.$buttonimg.'" />
353 </a>';
354 // echo '<input type="hidden" name="switchitemrequired" value="'.$feedbackitem->id.'" />';
355 // feedback_edit_print_default_form_values($id, $do_show);
356 // echo '</fieldset></form>';
357 }else {
358 echo '&nbsp;';
359 }
360 echo '</td>';
361 echo '<td>';
362 $buttonlink = 'delete_item.php?'.htmlspecialchars(feedback_edit_get_default_query($id, $do_show).'&deleteitem='.$feedbackitem->id);
363 echo '<a class="icon delete" title="'.get_string('delete_item','feedback').'" href="'.$buttonlink.'">
f2a1963c 364 <img alt="'.get_string('delete_item','feedback').'" src="'.$OUTPUT->old_icon_url('t/delete') . '" />
c70ad9f7 365 </a>';
366 //print the button to drop the item
367 // echo '<form action="delete_item.php" method="post"><fieldset>';
f2a1963c 368 // echo '<input class="feedback_delete_button" title="'.get_string('delete_item','feedback').'" type="image" src="'.$OUTPUT->old_icon_url('t/delete') . '" />';
c70ad9f7 369 // echo '<input type="hidden" name="deleteitem" value="'.$feedbackitem->id.'" />';
370 // feedback_edit_print_default_form_values($id, $do_show);
371 // echo '</fieldset></form>';
372 echo '</td>';
373 echo '</tr>';
374 if(isset($SESSION->feedback->moving) AND $SESSION->feedback->moving->shouldmoving == 1) {
375 $moveposition++;
376 echo '<tr>'; //only shown if shouldmoving = 1
377 echo '<td>';
378 $buttonlink = $ME.'?'.htmlspecialchars(feedback_edit_get_default_query($id, $do_show).'&movehere='.$moveposition);
379 echo '<a title="'.get_string('move_here','feedback').'" href="'.$buttonlink.'">
e63f88c9 380 <img class="movetarget" alt="'.get_string('move_here','feedback').'" src="'.$OUTPUT->old_icon_url('movehere') . '" />
c70ad9f7 381 </a>';
382 // echo '<form action="'.$ME.'" method="post"><fieldset>';
e63f88c9 383 // echo '<input class="feedback_movehere_button" title="'.get_string('move_here','feedback').'" type="image" src="'.$OUTPUT->old_icon_url('movehere') . '" />';
c70ad9f7 384 // echo '<input type="hidden" name="movehere" value="'.$moveposition.'" />';
385 // feedback_edit_print_default_form_values($id, $do_show);
386 // echo '</fieldset></form>';
387 echo '</td>';
388 echo '</tr>';
389 }else {
390 echo '<tr><td>&nbsp;</td></tr>';
391 }
d4b1d58c 392
c70ad9f7 393 }
394 echo '</table>';
d4b1d58c 395 echo $OUTPUT->box_end();
c70ad9f7 396 }else{
d4b1d58c 397 echo $OUTPUT->box(get_string('no_items_available_yet','feedback'),'generalbox boxaligncenter');
c70ad9f7 398 }
399 }
400 /// Finish the page
401 ///////////////////////////////////////////////////////////////////////////
402 ///////////////////////////////////////////////////////////////////////////
403 ///////////////////////////////////////////////////////////////////////////
404
c6ea0876 405 echo $OUTPUT->footer();
c70ad9f7 406
407 function feedback_edit_get_default_query($id, $tab) {
408 global $USER;
d4b1d58c 409
c70ad9f7 410 $query = 'id='.$id;
411 $query .= '&do_show='.$tab;
973d2660 412 //$query .= '&sesskey='.sesskey();
d4b1d58c 413
c70ad9f7 414 return $query;
415 }
416
417 function feedback_edit_print_default_form_values($id, $tab) {
418 global $USER;
d4b1d58c 419
973d2660 420 echo '<input type="hidden" name="sesskey" value="'.sesskey().'" />';
c70ad9f7 421 echo '<input type="hidden" name="id" value="'.$id.'" />';
422 echo '<input type="hidden" name="do_show" value="'.$tab.'" />';
423 }
424?>