|
Moodle
2.2.1
http://www.collinsharper.com
|
00001 <?php 00002 // This file is part of Moodle - http://moodle.org/ 00003 // 00004 // Moodle is free software: you can redistribute it and/or modify 00005 // it under the terms of the GNU General Public License as published by 00006 // the Free Software Foundation, either version 3 of the License, or 00007 // (at your option) any later version. 00008 // 00009 // Moodle is distributed in the hope that it will be useful, 00010 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00012 // GNU General Public License for more details. 00013 // 00014 // You should have received a copy of the GNU General Public License 00015 // along with Moodle. If not, see <http://www.gnu.org/licenses/>. 00016 00025 require_once("../../config.php"); 00026 require_once("lib.php"); 00027 require_once('edit_form.php'); 00028 00029 feedback_init_feedback_session(); 00030 00031 $id = required_param('id', PARAM_INT); 00032 00033 if (($formdata = data_submitted()) AND !confirm_sesskey()) { 00034 print_error('invalidsesskey'); 00035 } 00036 00037 $do_show = optional_param('do_show', 'edit', PARAM_ALPHA); 00038 $moveupitem = optional_param('moveupitem', false, PARAM_INT); 00039 $movedownitem = optional_param('movedownitem', false, PARAM_INT); 00040 $moveitem = optional_param('moveitem', false, PARAM_INT); 00041 $movehere = optional_param('movehere', false, PARAM_INT); 00042 $switchitemrequired = optional_param('switchitemrequired', false, PARAM_INT); 00043 00044 $current_tab = $do_show; 00045 00046 $url = new moodle_url('/mod/feedback/edit.php', array('id'=>$id, 'do_show'=>$do_show)); 00047 00048 if (! $cm = get_coursemodule_from_id('feedback', $id)) { 00049 print_error('invalidcoursemodule'); 00050 } 00051 00052 if (! $course = $DB->get_record("course", array("id"=>$cm->course))) { 00053 print_error('coursemisconf'); 00054 } 00055 00056 if (! $feedback = $DB->get_record("feedback", array("id"=>$cm->instance))) { 00057 print_error('invalidcoursemodule'); 00058 } 00059 00060 if (!$context = get_context_instance(CONTEXT_MODULE, $cm->id)) { 00061 print_error('badcontext'); 00062 } 00063 00064 require_login($course->id, true, $cm); 00065 00066 require_capability('mod/feedback:edititems', $context); 00067 00068 //move up/down items 00069 if ($moveupitem) { 00070 $item = $DB->get_record('feedback_item', array('id'=>$moveupitem)); 00071 feedback_moveup_item($item); 00072 } 00073 if ($movedownitem) { 00074 $item = $DB->get_record('feedback_item', array('id'=>$movedownitem)); 00075 feedback_movedown_item($item); 00076 } 00077 00078 //moving of items 00079 if ($movehere && isset($SESSION->feedback->moving->movingitem)) { 00080 $item = $DB->get_record('feedback_item', array('id'=>$SESSION->feedback->moving->movingitem)); 00081 feedback_move_item($item, intval($movehere)); 00082 $moveitem = false; 00083 } 00084 if ($moveitem) { 00085 $item = $DB->get_record('feedback_item', array('id'=>$moveitem)); 00086 $SESSION->feedback->moving->shouldmoving = 1; 00087 $SESSION->feedback->moving->movingitem = $moveitem; 00088 } else { 00089 unset($SESSION->feedback->moving); 00090 } 00091 00092 if ($switchitemrequired) { 00093 $item = $DB->get_record('feedback_item', array('id'=>$switchitemrequired)); 00094 @feedback_switch_item_required($item); 00095 redirect($url->out(false)); 00096 exit; 00097 } 00098 00099 //the create_template-form 00100 $create_template_form = new feedback_edit_create_template_form(); 00101 $create_template_form->set_feedbackdata(array('context'=>$context, 'course'=>$course)); 00102 $create_template_form->set_form_elements(); 00103 $create_template_form->set_data(array('id'=>$id, 'do_show'=>'templates')); 00104 $create_template_formdata = $create_template_form->get_data(); 00105 if (isset($create_template_formdata->savetemplate) && $create_template_formdata->savetemplate == 1) { 00106 //check the capabilities to create templates 00107 if (!has_capability('mod/feedback:createprivatetemplate', $context) AND 00108 !has_capability('mod/feedback:createpublictemplate', $context)) { 00109 print_error('cannotsavetempl', 'feedback'); 00110 } 00111 if (trim($create_template_formdata->templatename) == '') { 00112 $savereturn = 'notsaved_name'; 00113 } else { 00114 //if the feedback is located on the frontpage then templates can be public 00115 if (has_capability('mod/feedback:createpublictemplate', get_system_context())) { 00116 $create_template_formdata->ispublic = isset($create_template_formdata->ispublic) ? 1 : 0; 00117 } else { 00118 $create_template_formdata->ispublic = 0; 00119 } 00120 if (!feedback_save_as_template($feedback, 00121 $create_template_formdata->templatename, 00122 $create_template_formdata->ispublic)) { 00123 $savereturn = 'failed'; 00124 } else { 00125 $savereturn = 'saved'; 00126 } 00127 } 00128 } 00129 00130 //get the feedbackitems 00131 $lastposition = 0; 00132 $feedbackitems = $DB->get_records('feedback_item', array('feedback'=>$feedback->id), 'position'); 00133 if (is_array($feedbackitems)) { 00134 $feedbackitems = array_values($feedbackitems); 00135 if (count($feedbackitems) > 0) { 00136 $lastitem = $feedbackitems[count($feedbackitems)-1]; 00137 $lastposition = $lastitem->position; 00138 } else { 00139 $lastposition = 0; 00140 } 00141 } 00142 $lastposition++; 00143 00144 00145 //the add_item-form 00146 $add_item_form = new feedback_edit_add_question_form('edit_item.php'); 00147 $add_item_form->set_data(array('cmid'=>$id, 'position'=>$lastposition)); 00148 00149 //the use_template-form 00150 $use_template_form = new feedback_edit_use_template_form('use_templ.php'); 00151 $use_template_form->set_feedbackdata(array('course' => $course)); 00152 $use_template_form->set_form_elements(); 00153 $use_template_form->set_data(array('id'=>$id)); 00154 00156 $strfeedbacks = get_string("modulenameplural", "feedback"); 00157 $strfeedback = get_string("modulename", "feedback"); 00158 00159 $PAGE->set_url('/mod/feedback/edit.php', array('id'=>$cm->id, 'do_show'=>$do_show)); 00160 $PAGE->set_heading(format_string($course->fullname)); 00161 $PAGE->set_title(format_string($feedback->name)); 00162 echo $OUTPUT->header(); 00163 00165 require('tabs.php'); 00166 00171 00172 $savereturn=isset($savereturn)?$savereturn:''; 00173 00174 //print the messages 00175 if ($savereturn == 'notsaved_name') { 00176 echo '<p align="center"><b><font color="red">'. 00177 get_string('name_required', 'feedback'). 00178 '</font></b></p>'; 00179 } 00180 00181 if ($savereturn == 'saved') { 00182 echo '<p align="center"><b><font color="green">'. 00183 get_string('template_saved', 'feedback'). 00184 '</font></b></p>'; 00185 } 00186 00187 if ($savereturn == 'failed') { 00188 echo '<p align="center"><b><font color="red">'. 00189 get_string('saving_failed', 'feedback'). 00190 '</font></b></p>'; 00191 } 00192 00196 if ($do_show == 'templates') { 00197 echo $OUTPUT->box_start('generalbox boxaligncenter boxwidthwide'); 00198 $use_template_form->display(); 00199 00200 if (has_capability('mod/feedback:createprivatetemplate', $context) OR 00201 has_capability('mod/feedback:createpublictemplate', $context)) { 00202 $deleteurl = new moodle_url('/mod/feedback/delete_template.php', array('id' => $id)); 00203 $create_template_form->display(); 00204 echo '<p><a href="'.$deleteurl->out().'">'. 00205 get_string('delete_templates', 'feedback'). 00206 '</a></p>'; 00207 } else { 00208 echo ' '; 00209 } 00210 00211 if (has_capability('mod/feedback:edititems', $context)) { 00212 $urlparams = array('action'=>'exportfile', 'id'=>$id); 00213 $exporturl = new moodle_url('/mod/feedback/export.php', $urlparams); 00214 $importurl = new moodle_url('/mod/feedback/import.php', array('id'=>$id)); 00215 echo '<p> 00216 <a href="'.$exporturl->out().'">'.get_string('export_questions', 'feedback').'</a>/ 00217 <a href="'.$importurl->out().'">'.get_string('import_questions', 'feedback').'</a> 00218 </p>'; 00219 } 00220 echo $OUTPUT->box_end(); 00221 } 00225 if ($do_show == 'edit') { 00226 00227 $add_item_form->display(); 00228 00229 if (is_array($feedbackitems)) { 00230 $itemnr = 0; 00231 00232 $align = right_to_left() ? 'right' : 'left'; 00233 00234 $helpbutton = $OUTPUT->help_icon('preview', 'feedback'); 00235 00236 echo $OUTPUT->heading($helpbutton . get_string('preview', 'feedback')); 00237 if (isset($SESSION->feedback->moving) AND $SESSION->feedback->moving->shouldmoving == 1) { 00238 $anker = '<a href="edit.php?id='.$id.'">'; 00239 $anker .= get_string('cancel_moving', 'feedback'); 00240 $anker .= '</a>'; 00241 echo $OUTPUT->heading($anker); 00242 } 00243 00244 //check, if there exists required-elements 00245 $params = array('feedback' => $feedback->id, 'required' => 1); 00246 $countreq = $DB->count_records('feedback_item', $params); 00247 if ($countreq > 0) { 00248 echo '<span class="feedback_required_mark">(*)'; 00249 echo get_string('items_are_required', 'feedback'); 00250 echo '</span>'; 00251 } 00252 00253 //use list instead a table 00254 echo $OUTPUT->box_start('feedback_items'); 00255 if (isset($SESSION->feedback->moving) AND $SESSION->feedback->moving->shouldmoving == 1) { 00256 $moveposition = 1; 00257 $movehereurl = new moodle_url($url, array('movehere'=>$moveposition)); 00258 //only shown if shouldmoving = 1 00259 echo $OUTPUT->box_start('feedback_item_box_'.$align.' clipboard'); 00260 $buttonlink = $movehereurl->out(); 00261 $strbutton = get_string('move_here', 'feedback'); 00262 $src = $OUTPUT->pix_url('movehere'); 00263 echo '<a title="'.$strbutton.'" href="'.$buttonlink.'"> 00264 <img class="movetarget" alt="'.$strbutton.'" src="'.$src.'" /> 00265 </a>'; 00266 echo $OUTPUT->box_end(); 00267 } 00268 //print the inserted items 00269 $itempos = 0; 00270 foreach ($feedbackitems as $feedbackitem) { 00271 $itempos++; 00272 //hiding the item to move 00273 if (isset($SESSION->feedback->moving)) { 00274 if ($SESSION->feedback->moving->movingitem == $feedbackitem->id) { 00275 continue; 00276 } 00277 } 00278 if ($feedbackitem->dependitem > 0) { 00279 $dependstyle = ' feedback_depend'; 00280 } else { 00281 $dependstyle = ''; 00282 } 00283 echo $OUTPUT->box_start('feedback_item_box_'.$align.$dependstyle); 00284 //items without value only are labels 00285 if ($feedbackitem->hasvalue == 1 AND $feedback->autonumbering) { 00286 $itemnr++; 00287 echo $OUTPUT->box_start('feedback_item_number_'.$align); 00288 echo $itemnr; 00289 echo $OUTPUT->box_end(); 00290 } 00291 echo $OUTPUT->box_start('box generalbox boxalign_'.$align); 00292 echo $OUTPUT->box_start('feedback_item_commands_'.$align); 00293 echo '<span class="feedback_item_commands">'; 00294 echo '('.get_string('position', 'feedback').':'.$itempos .')'; 00295 echo '</span>'; 00296 //print the moveup-button 00297 if ($feedbackitem->position > 1) { 00298 echo '<span class="feedback_item_command_moveup">'; 00299 $moveupurl = new moodle_url($url, array('moveupitem'=>$feedbackitem->id)); 00300 $buttonlink = $moveupurl->out(); 00301 $strbutton = get_string('moveup_item', 'feedback'); 00302 echo '<a class="icon up" title="'.$strbutton.'" href="'.$buttonlink.'"> 00303 <img alt="'.$strbutton.'" src="'.$OUTPUT->pix_url('t/up') . '" /> 00304 </a>'; 00305 echo '</span>'; 00306 } 00307 //print the movedown-button 00308 if ($feedbackitem->position < $lastposition - 1) { 00309 echo '<span class="feedback_item_command_movedown">'; 00310 $urlparams = array('movedownitem'=>$feedbackitem->id); 00311 $movedownurl = new moodle_url($url, $urlparams); 00312 $buttonlink = $movedownurl->out(); 00313 $strbutton = get_string('movedown_item', 'feedback'); 00314 echo '<a class="icon down" title="'.$strbutton.'" href="'.$buttonlink.'"> 00315 <img alt="'.$strbutton.'" src="'.$OUTPUT->pix_url('t/down') . '" /> 00316 </a>'; 00317 echo '</span>'; 00318 } 00319 //print the move-button 00320 echo '<span class="feedback_item_command_move">'; 00321 $moveurl = new moodle_url($url, array('moveitem'=>$feedbackitem->id)); 00322 $buttonlink = $moveurl->out(); 00323 $strbutton = get_string('move_item', 'feedback'); 00324 echo '<a class="editing_move" title="'.$strbutton.'" href="'.$buttonlink.'"> 00325 <img alt="'.$strbutton.'" src="'.$OUTPUT->pix_url('t/move') . '" /> 00326 </a>'; 00327 echo '</span>'; 00328 //print the button to edit the item 00329 if ($feedbackitem->typ != 'pagebreak') { 00330 echo '<span class="feedback_item_command_edit">'; 00331 $editurl = new moodle_url('/mod/feedback/edit_item.php'); 00332 $editurl->params(array('do_show'=>$do_show, 00333 'cmid'=>$id, 00334 'id'=>$feedbackitem->id, 00335 'typ'=>$feedbackitem->typ)); 00336 00337 // in edit_item.php the param id is used for the itemid 00338 // and the cmid is the id to get the module 00339 $buttonlink = $editurl->out(); 00340 $strbutton = get_string('edit_item', 'feedback'); 00341 echo '<a class="editing_update" title="'.$strbutton.'" href="'.$buttonlink.'"> 00342 <img alt="'.$strbutton.'" src="'.$OUTPUT->pix_url('t/edit') . '" /> 00343 </a>'; 00344 echo '</span>'; 00345 } 00346 00347 //print the toggle-button to switch required yes/no 00348 if ($feedbackitem->hasvalue == 1) { 00349 echo '<span class="feedback_item_command_toggle">'; 00350 if ($feedbackitem->required == 1) { 00351 $buttontitle = get_string('switch_item_to_not_required', 'feedback'); 00352 $buttonimg = 'pics/required.gif'; 00353 } else { 00354 $buttontitle = get_string('switch_item_to_required', 'feedback'); 00355 $buttonimg = 'pics/notrequired.gif'; 00356 } 00357 $urlparams = array('switchitemrequired'=>$feedbackitem->id); 00358 $requiredurl = new moodle_url($url, $urlparams); 00359 $buttonlink = $requiredurl->out(); 00360 echo '<a class="icon '. 00361 'feedback_switchrequired" '. 00362 'title="'.$buttontitle.'" '. 00363 'href="'.$buttonlink.'">'. 00364 '<img alt="'.$buttontitle.'" src="'.$buttonimg.'" />'. 00365 '</a>'; 00366 echo '</span>'; 00367 } 00368 00369 //print the delete-button 00370 echo '<span class="feedback_item_command_toggle">'; 00371 $deleteitemurl = new moodle_url('/mod/feedback/delete_item.php'); 00372 $deleteitemurl->params(array('id'=>$id, 00373 'do_show'=>$do_show, 00374 'deleteitem'=>$feedbackitem->id)); 00375 00376 $buttonlink = $deleteitemurl->out(); 00377 $strbutton = get_string('delete_item', 'feedback'); 00378 $src = $OUTPUT->pix_url('t/delete'); 00379 echo '<a class="icon delete" title="'.$strbutton.'" href="'.$buttonlink.'"> 00380 <img alt="'.$strbutton.'" src="'.$src.'" /> 00381 </a>'; 00382 echo '</span>'; 00383 echo $OUTPUT->box_end(); 00384 if ($feedbackitem->typ != 'pagebreak') { 00385 feedback_print_item_preview($feedbackitem); 00386 } else { 00387 echo $OUTPUT->box_start('feedback_pagebreak'); 00388 echo get_string('pagebreak', 'feedback').'<hr class="feedback_pagebreak" />'; 00389 echo $OUTPUT->box_end(); 00390 } 00391 echo $OUTPUT->box_end(); 00392 echo $OUTPUT->box_end(); 00393 if (isset($SESSION->feedback->moving) AND $SESSION->feedback->moving->shouldmoving == 1) { 00394 $moveposition++; 00395 $movehereurl->param('movehere', $moveposition); 00396 echo $OUTPUT->box_start('clipboard'); //only shown if shouldmoving = 1 00397 $buttonlink = $movehereurl->out(); 00398 $strbutton = get_string('move_here', 'feedback'); 00399 $src = $OUTPUT->pix_url('movehere'); 00400 echo '<a title="'.$strbutton.'" href="'.$buttonlink.'"> 00401 <img class="movetarget" alt="'.$strbutton.'" src="'.$src.'" /> 00402 </a>'; 00403 echo $OUTPUT->box_end(); 00404 } 00405 echo '<div class="clearer"> </div>'; 00406 } 00407 echo $OUTPUT->box_end(); 00408 } else { 00409 echo $OUTPUT->box(get_string('no_items_available_yet', 'feedback'), 00410 'generalbox boxaligncenter'); 00411 } 00412 } 00417 00418 echo $OUTPUT->footer();