2 // This file is part of Moodle - http://moodle.org/
4 // Moodle is free software: you can redistribute it and/or modify
5 // it under the terms of the GNU General Public License as published by
6 // the Free Software Foundation, either version 3 of the License, or
7 // (at your option) any later version.
9 // Moodle is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 // GNU General Public License for more details.
14 // You should have received a copy of the GNU General Public License
15 // along with Moodle. If not, see <http://www.gnu.org/licenses/>.
18 * prints the form to edit the feedback items such moving, deleting and so on
20 * @author Andreas Grabs
21 * @license http://www.gnu.org/copyleft/gpl.html GNU Public License
25 require_once("../../config.php");
26 require_once("lib.php");
27 require_once('edit_form.php');
29 feedback_init_feedback_session();
31 $id = required_param('id', PARAM_INT
);
33 if (($formdata = data_submitted()) AND !confirm_sesskey()) {
34 print_error('invalidsesskey');
37 $do_show = optional_param('do_show', 'edit', PARAM_ALPHA
);
38 $moveupitem = optional_param('moveupitem', false, PARAM_INT
);
39 $movedownitem = optional_param('movedownitem', false, PARAM_INT
);
40 $moveitem = optional_param('moveitem', false, PARAM_INT
);
41 $movehere = optional_param('movehere', false, PARAM_INT
);
42 $switchitemrequired = optional_param('switchitemrequired', false, PARAM_INT
);
44 $current_tab = $do_show;
46 $url = new moodle_url('/mod/feedback/edit.php', array('id'=>$id, 'do_show'=>$do_show));
48 if (! $cm = get_coursemodule_from_id('feedback', $id)) {
49 print_error('invalidcoursemodule');
52 if (! $course = $DB->get_record("course", array("id"=>$cm->course
))) {
53 print_error('coursemisconf');
56 if (! $feedback = $DB->get_record("feedback", array("id"=>$cm->instance
))) {
57 print_error('invalidcoursemodule');
60 if (!$context = get_context_instance(CONTEXT_MODULE
, $cm->id
)) {
61 print_error('badcontext');
64 require_login($course, true, $cm);
66 require_capability('mod/feedback:edititems', $context);
70 $item = $DB->get_record('feedback_item', array('id'=>$moveupitem));
71 feedback_moveup_item($item);
74 $item = $DB->get_record('feedback_item', array('id'=>$movedownitem));
75 feedback_movedown_item($item);
79 if ($movehere && isset($SESSION->feedback
->moving
->movingitem
)) {
80 $item = $DB->get_record('feedback_item', array('id'=>$SESSION->feedback
->moving
->movingitem
));
81 feedback_move_item($item, intval($movehere));
85 $item = $DB->get_record('feedback_item', array('id'=>$moveitem));
86 $SESSION->feedback
->moving
->shouldmoving
= 1;
87 $SESSION->feedback
->moving
->movingitem
= $moveitem;
89 unset($SESSION->feedback
->moving
);
92 if ($switchitemrequired) {
93 $item = $DB->get_record('feedback_item', array('id'=>$switchitemrequired));
94 @feedback_switch_item_required
($item);
95 redirect($url->out(false));
99 //the create_template-form
100 $create_template_form = new feedback_edit_create_template_form();
101 $create_template_form->set_feedbackdata(array('context'=>$context, 'course'=>$course));
102 $create_template_form->set_form_elements();
103 $create_template_form->set_data(array('id'=>$id, 'do_show'=>'templates'));
104 $create_template_formdata = $create_template_form->get_data();
105 if (isset($create_template_formdata->savetemplate
) && $create_template_formdata->savetemplate
== 1) {
106 //check the capabilities to create templates
107 if (!has_capability('mod/feedback:createprivatetemplate', $context) AND
108 !has_capability('mod/feedback:createpublictemplate', $context)) {
109 print_error('cannotsavetempl', 'feedback');
111 if (trim($create_template_formdata->templatename
) == '') {
112 $savereturn = 'notsaved_name';
114 //if the feedback is located on the frontpage then templates can be public
115 if (has_capability('mod/feedback:createpublictemplate', get_system_context())) {
116 $create_template_formdata->ispublic
= isset($create_template_formdata->ispublic
) ?
1 : 0;
118 $create_template_formdata->ispublic
= 0;
120 if (!feedback_save_as_template($feedback,
121 $create_template_formdata->templatename
,
122 $create_template_formdata->ispublic
)) {
123 $savereturn = 'failed';
125 $savereturn = 'saved';
130 //get the feedbackitems
132 $feedbackitems = $DB->get_records('feedback_item', array('feedback'=>$feedback->id
), 'position');
133 if (is_array($feedbackitems)) {
134 $feedbackitems = array_values($feedbackitems);
135 if (count($feedbackitems) > 0) {
136 $lastitem = $feedbackitems[count($feedbackitems)-1];
137 $lastposition = $lastitem->position
;
146 $add_item_form = new feedback_edit_add_question_form('edit_item.php');
147 $add_item_form->set_data(array('cmid'=>$id, 'position'=>$lastposition));
149 //the use_template-form
150 $use_template_form = new feedback_edit_use_template_form('use_templ.php');
151 $use_template_form->set_feedbackdata(array('course' => $course));
152 $use_template_form->set_form_elements();
153 $use_template_form->set_data(array('id'=>$id));
155 /// Print the page header
156 $strfeedbacks = get_string("modulenameplural", "feedback");
157 $strfeedback = get_string("modulename", "feedback");
159 $PAGE->set_url('/mod/feedback/edit.php', array('id'=>$cm->id
, 'do_show'=>$do_show));
160 $PAGE->set_heading(format_string($course->fullname
));
161 $PAGE->set_title(format_string($feedback->name
));
162 echo $OUTPUT->header();
167 /// Print the main part of the page
168 ///////////////////////////////////////////////////////////////////////////
169 ///////////////////////////////////////////////////////////////////////////
170 ///////////////////////////////////////////////////////////////////////////
172 $savereturn=isset($savereturn)?
$savereturn:'';
175 if ($savereturn == 'notsaved_name') {
176 echo '<p align="center"><b><font color="red">'.
177 get_string('name_required', 'feedback').
181 if ($savereturn == 'saved') {
182 echo '<p align="center"><b><font color="green">'.
183 get_string('template_saved', 'feedback').
187 if ($savereturn == 'failed') {
188 echo '<p align="center"><b><font color="red">'.
189 get_string('saving_failed', 'feedback').
193 ///////////////////////////////////////////////////////////////////////////
194 ///print the template-section
195 ///////////////////////////////////////////////////////////////////////////
196 if ($do_show == 'templates') {
197 echo $OUTPUT->box_start('generalbox boxaligncenter boxwidthwide');
198 $use_template_form->display();
200 if (has_capability('mod/feedback:createprivatetemplate', $context) OR
201 has_capability('mod/feedback:createpublictemplate', $context)) {
202 $deleteurl = new moodle_url('/mod/feedback/delete_template.php', array('id' => $id));
203 $create_template_form->display();
204 echo '<p><a href="'.$deleteurl->out().'">'.
205 get_string('delete_templates', 'feedback').
211 if (has_capability('mod/feedback:edititems', $context)) {
212 $urlparams = array('action'=>'exportfile', 'id'=>$id);
213 $exporturl = new moodle_url('/mod/feedback/export.php', $urlparams);
214 $importurl = new moodle_url('/mod/feedback/import.php', array('id'=>$id));
216 <a href="'.$exporturl->out().'">'.get_string('export_questions', 'feedback').'</a>/
217 <a href="'.$importurl->out().'">'.get_string('import_questions', 'feedback').'</a>
220 echo $OUTPUT->box_end();
222 ///////////////////////////////////////////////////////////////////////////
223 ///print the Item-Edit-section
224 ///////////////////////////////////////////////////////////////////////////
225 if ($do_show == 'edit') {
227 $add_item_form->display();
229 if (is_array($feedbackitems)) {
232 $align = right_to_left() ?
'right' : 'left';
234 $helpbutton = $OUTPUT->help_icon('preview', 'feedback');
236 echo $OUTPUT->heading($helpbutton . get_string('preview', 'feedback'));
237 if (isset($SESSION->feedback
->moving
) AND $SESSION->feedback
->moving
->shouldmoving
== 1) {
238 $anker = '<a href="edit.php?id='.$id.'">';
239 $anker .= get_string('cancel_moving', 'feedback');
241 echo $OUTPUT->heading($anker);
244 //check, if there exists required-elements
245 $params = array('feedback' => $feedback->id
, 'required' => 1);
246 $countreq = $DB->count_records('feedback_item', $params);
248 echo '<span class="feedback_required_mark">(*)';
249 echo get_string('items_are_required', 'feedback');
253 //use list instead a table
254 echo $OUTPUT->box_start('feedback_items');
255 if (isset($SESSION->feedback
->moving
) AND $SESSION->feedback
->moving
->shouldmoving
== 1) {
257 $movehereurl = new moodle_url($url, array('movehere'=>$moveposition));
258 //only shown if shouldmoving = 1
259 echo $OUTPUT->box_start('feedback_item_box_'.$align.' clipboard');
260 $buttonlink = $movehereurl->out();
261 $strbutton = get_string('move_here', 'feedback');
262 $src = $OUTPUT->pix_url('movehere');
263 echo '<a title="'.$strbutton.'" href="'.$buttonlink.'">
264 <img class="movetarget" alt="'.$strbutton.'" src="'.$src.'" />
266 echo $OUTPUT->box_end();
268 //print the inserted items
270 foreach ($feedbackitems as $feedbackitem) {
272 //hiding the item to move
273 if (isset($SESSION->feedback
->moving
)) {
274 if ($SESSION->feedback
->moving
->movingitem
== $feedbackitem->id
) {
278 if ($feedbackitem->dependitem
> 0) {
279 $dependstyle = ' feedback_depend';
283 echo $OUTPUT->box_start('feedback_item_box_'.$align.$dependstyle);
284 //items without value only are labels
285 if ($feedbackitem->hasvalue
== 1 AND $feedback->autonumbering
) {
287 echo $OUTPUT->box_start('feedback_item_number_'.$align);
289 echo $OUTPUT->box_end();
291 echo $OUTPUT->box_start('box generalbox boxalign_'.$align);
292 echo $OUTPUT->box_start('feedback_item_commands_'.$align);
293 echo '<span class="feedback_item_commands">';
294 echo '('.get_string('position', 'feedback').':'.$itempos .')';
296 //print the moveup-button
297 if ($feedbackitem->position
> 1) {
298 echo '<span class="feedback_item_command_moveup">';
299 $moveupurl = new moodle_url($url, array('moveupitem'=>$feedbackitem->id
));
300 $buttonlink = $moveupurl->out();
301 $strbutton = get_string('moveup_item', 'feedback');
302 echo '<a class="icon up" title="'.$strbutton.'" href="'.$buttonlink.'">
303 <img alt="'.$strbutton.'" src="'.$OUTPUT->pix_url('t/up') . '" />
307 //print the movedown-button
308 if ($feedbackitem->position
< $lastposition - 1) {
309 echo '<span class="feedback_item_command_movedown">';
310 $urlparams = array('movedownitem'=>$feedbackitem->id
);
311 $movedownurl = new moodle_url($url, $urlparams);
312 $buttonlink = $movedownurl->out();
313 $strbutton = get_string('movedown_item', 'feedback');
314 echo '<a class="icon down" title="'.$strbutton.'" href="'.$buttonlink.'">
315 <img alt="'.$strbutton.'" src="'.$OUTPUT->pix_url('t/down') . '" />
319 //print the move-button
320 echo '<span class="feedback_item_command_move">';
321 $moveurl = new moodle_url($url, array('moveitem'=>$feedbackitem->id
));
322 $buttonlink = $moveurl->out();
323 $strbutton = get_string('move_item', 'feedback');
324 echo '<a class="editing_move" title="'.$strbutton.'" href="'.$buttonlink.'">
325 <img alt="'.$strbutton.'" src="'.$OUTPUT->pix_url('t/move') . '" />
328 //print the button to edit the item
329 if ($feedbackitem->typ
!= 'pagebreak') {
330 echo '<span class="feedback_item_command_edit">';
331 $editurl = new moodle_url('/mod/feedback/edit_item.php');
332 $editurl->params(array('do_show'=>$do_show,
334 'id'=>$feedbackitem->id
,
335 'typ'=>$feedbackitem->typ
));
337 // in edit_item.php the param id is used for the itemid
338 // and the cmid is the id to get the module
339 $buttonlink = $editurl->out();
340 $strbutton = get_string('edit_item', 'feedback');
341 echo '<a class="editing_update" title="'.$strbutton.'" href="'.$buttonlink.'">
342 <img alt="'.$strbutton.'" src="'.$OUTPUT->pix_url('t/edit') . '" />
347 //print the toggle-button to switch required yes/no
348 if ($feedbackitem->hasvalue
== 1) {
349 echo '<span class="feedback_item_command_toggle">';
350 if ($feedbackitem->required
== 1) {
351 $buttontitle = get_string('switch_item_to_not_required', 'feedback');
352 $buttonimg = $OUTPUT->pix_url('required', 'feedback');
354 $buttontitle = get_string('switch_item_to_required', 'feedback');
355 $buttonimg = $OUTPUT->pix_url('notrequired', 'feedback');
357 $urlparams = array('switchitemrequired'=>$feedbackitem->id
);
358 $requiredurl = new moodle_url($url, $urlparams);
359 $buttonlink = $requiredurl->out();
360 echo '<a class="icon '.
361 'feedback_switchrequired" '.
362 'title="'.$buttontitle.'" '.
363 'href="'.$buttonlink.'">'.
364 '<img alt="'.$buttontitle.'" src="'.$buttonimg.'" />'.
369 //print the delete-button
370 echo '<span class="feedback_item_command_toggle">';
371 $deleteitemurl = new moodle_url('/mod/feedback/delete_item.php');
372 $deleteitemurl->params(array('id'=>$id,
374 'deleteitem'=>$feedbackitem->id
));
376 $buttonlink = $deleteitemurl->out();
377 $strbutton = get_string('delete_item', 'feedback');
378 $src = $OUTPUT->pix_url('t/delete');
379 echo '<a class="icon delete" title="'.$strbutton.'" href="'.$buttonlink.'">
380 <img alt="'.$strbutton.'" src="'.$src.'" />
383 echo $OUTPUT->box_end();
384 if ($feedbackitem->typ
!= 'pagebreak') {
385 feedback_print_item_preview($feedbackitem);
387 echo $OUTPUT->box_start('feedback_pagebreak');
388 echo get_string('pagebreak', 'feedback').'<hr class="feedback_pagebreak" />';
389 echo $OUTPUT->box_end();
391 echo $OUTPUT->box_end();
392 echo $OUTPUT->box_end();
393 if (isset($SESSION->feedback
->moving
) AND $SESSION->feedback
->moving
->shouldmoving
== 1) {
395 $movehereurl->param('movehere', $moveposition);
396 echo $OUTPUT->box_start('clipboard'); //only shown if shouldmoving = 1
397 $buttonlink = $movehereurl->out();
398 $strbutton = get_string('move_here', 'feedback');
399 $src = $OUTPUT->pix_url('movehere');
400 echo '<a title="'.$strbutton.'" href="'.$buttonlink.'">
401 <img class="movetarget" alt="'.$strbutton.'" src="'.$src.'" />
403 echo $OUTPUT->box_end();
405 echo '<div class="clearer"> </div>';
407 echo $OUTPUT->box_end();
409 echo $OUTPUT->box(get_string('no_items_available_yet', 'feedback'),
410 'generalbox boxaligncenter');
414 ///////////////////////////////////////////////////////////////////////////
415 ///////////////////////////////////////////////////////////////////////////
416 ///////////////////////////////////////////////////////////////////////////
418 echo $OUTPUT->footer();