diff --git a/mod/feedback/edit_item.php b/mod/feedback/edit_item.php index da88fc71aa7..15bcc7e9150 100644 --- a/mod/feedback/edit_item.php +++ b/mod/feedback/edit_item.php @@ -17,6 +17,7 @@ feedback_init_feedback_session(); $cmid = required_param('cmid', PARAM_INT); $typ = optional_param('typ', false, PARAM_ALPHA); $id = optional_param('id', false, PARAM_INT); +$action = optional_param('action', false, PARAM_ALPHA); $editurl = new moodle_url('/mod/feedback/edit.php', array('id'=>$cmid)); @@ -70,16 +71,14 @@ if($typ == 'pagebreak') { // $formdata->itemid = isset($formdata->itemid) ? $formdata->itemid : NULL; if($id and $item = $DB->get_record('feedback_item', array('id'=>$id))) { $typ = $item->typ; - $position = $item->position; }else { - $position = -1; $item = new stdClass(); - if ($position == '') { - $position = 0; - } + $item->id = null; + $item->position = -1; if (!$typ) { print_error('typemissing', 'feedback', $editurl->out(false)); } + $item->typ = $typ; } require_once($CFG->dirroot.'/mod/feedback/item/'.$typ.'/lib.php'); @@ -87,55 +86,19 @@ require_once($CFG->dirroot.'/mod/feedback/item/'.$typ.'/lib.php'); $itemclass = 'feedback_item_'.$typ; $itemobj = new $itemclass(); -$lastposition = $DB->count_records('feedback_item', array('feedback'=>$feedback->id)); -if($position == -1){ - $i_formselect_last = $lastposition + 1; - $i_formselect_value = $lastposition + 1; -}else { - $i_formselect_last = $lastposition; - $i_formselect_value = $item->position; +$itemobj->build_editform($item, $feedback, $cm); + +if($itemobj->is_cancelled()) { + redirect($editurl->out(false)); + exit; } -$positionlist = array_slice(range(0,$i_formselect_last),1,$i_formselect_last,true); - -$commonarams = array('cmid'=>$cmid, - 'id'=>isset($item->id) ? $item->id : NULL, - 'typ'=>$typ, - 'feedbackid'=>$feedback->id); - -$item_form = &$itemobj->show_edit($item, $commonarams, $positionlist, $i_formselect_value); - -//////////////////////////////////////////////////////////////////////////////////// -$item_form->set_data($item); -if ($formdata = $item_form->get_data()) { - if (isset($formdata->cancel)){ +if($itemobj->get_data()) { + if($item = $itemobj->save_item()) { + feedback_move_item($item, $item->position); redirect($editurl->out(false)); - } else if (isset($formdata->saveitem) AND $formdata->saveitem == 1) { - $newposition = $formdata->position; - $formdata->position = $newposition + 1; - - if (!$newitemid = feedback_create_item($formdata)) { - $SESSION->feedback->errors[] = get_string('item_creation_failed', 'feedback'); - }else { - $newitem = $DB->get_record('feedback_item', array('id'=>$newitemid)); - if (!feedback_move_item($newitem, $newposition)){ - $SESSION->feedback->errors[] = get_string('item_creation_failed', 'feedback'); - }else { - redirect($editurl->out(false)); - } - } - } else if (isset($formdata->updateitem) AND $formdata->updateitem == 1) { - //update the item and go back - if (!feedback_update_item($item, $formdata)) { - $SESSION->feedback->errors[] = get_string('item_update_failed', 'feedback'); - } else { - if (!feedback_move_item($item, $formdata->position)){ - $SESSION->feedback->errors[] = get_string('item_update_failed', 'feedback'); - }else { - redirect($editurl->out(false)); - } - } } } + //////////////////////////////////////////////////////////////////////////////////// /// Print the page header $strfeedbacks = get_string("modulenameplural", "feedback"); @@ -155,7 +118,7 @@ if(isset($error)) { echo $error; } feedback_print_errors(); -$item_form->display(); +$itemobj->show_editform(); /* echo $OUTPUT->box_start('generalbox boxwidthwide boxaligncenter'); diff --git a/mod/feedback/item/captcha/captcha_form.php b/mod/feedback/item/captcha/captcha_form.php index ad9bb2bc271..244b725ce73 100644 --- a/mod/feedback/item/captcha/captcha_form.php +++ b/mod/feedback/item/captcha/captcha_form.php @@ -4,63 +4,72 @@ require_once($CFG->dirroot.'/mod/feedback/item/feedback_item_form_class.php'); class feedback_captcha_form extends feedback_item_form { var $type = "captcha"; - var $requiredcheck; - var $itemname; - var $itemlabel; - var $select; function definition() { + + $item = $this->_customdata['item']; + $common = $this->_customdata['common']; + $positionlist = $this->_customdata['positionlist']; + $position = $this->_customdata['position']; + $mform =& $this->_form; $mform->addElement('header', 'general', get_string($this->type, 'feedback')); - $this->requiredcheck = $mform->addElement('checkbox', 'required', get_string('required', 'feedback')); + $mform->addElement('checkbox', 'required', get_string('required', 'feedback')); + $mform->addElement('text', 'name', get_string('item_name', 'feedback'), array('size="'.FEEDBACK_ITEM_NAME_TEXTBOX_SIZE.'"','maxlength="255"')); + $mform->addElement('text', 'label', get_string('item_label', 'feedback'), array('size="'.FEEDBACK_ITEM_LABEL_TEXTBOX_SIZE.'"','maxlength="255"')); - $this->itemname = $mform->addElement('text', 'itemname', get_string('item_name', 'feedback'), array('size="'.FEEDBACK_ITEM_NAME_TEXTBOX_SIZE.'"','maxlength="255"')); - $this->itemlabel = $mform->addElement('text', 'itemlabel', get_string('item_label', 'feedback'), array('size="'.FEEDBACK_ITEM_LABEL_TEXTBOX_SIZE.'"','maxlength="255"')); - - $this->select = $mform->addElement('select', - 'count_of_nums', - get_string('count_of_nums', 'feedback').' ', - array_slice(range(0,10),3,10,true)); + $mform->addElement('select', + 'presentation', + get_string('count_of_nums', 'feedback').' ', + array_slice(range(0,10),3,10,true)); //////////////////////////////////////////////////////////////////////// //the following is used in all itemforms //////////////////////////////////////////////////////////////////////// - $item = $this->_customdata['item']; - $common = $this->_customdata['common']; - - $mform->addElement('hidden', 'cmid', $common['cmid']); - $mform->setType('cmid', PARAM_INT); - $mform->addElement('hidden', 'id', $common['id']); - $mform->setType('id', PARAM_INT); - $mform->addElement('hidden', 'typ', $common['typ']); - $mform->setType('typ', PARAM_ALPHA); - $mform->addElement('hidden', 'feedbackid', $common['feedbackid']); - $mform->setType('feedbackid', PARAM_INT); - $position_select = $mform->addElement('select', 'position', get_string('position', 'feedback').' ', - $this->_customdata['positionlist']); - $position_select->setValue($this->_customdata['position']); + $positionlist); + $position_select->setValue($position); + $mform->addElement('hidden', 'cmid', $common['cmid']); + $mform->setType('cmid', PARAM_INT); + + $mform->addElement('hidden', 'id', $common['id']); + $mform->setType('id', PARAM_INT); + + $mform->addElement('hidden', 'feedback', $common['feedback']); + $mform->setType('feedback', PARAM_INT); + + $mform->addElement('hidden', 'template', 0); + $mform->setType('template', PARAM_INT); + + $mform->addElement('hidden', 'name', 'label'); + $mform->setType('template', PARAM_ALPHA); + + $mform->addElement('hidden', 'label', '-'); + $mform->setType('label', PARAM_ALPHA); + + $mform->addElement('hidden', 'typ', $this->type); + $mform->setType('typ', PARAM_ALPHA); + + $mform->addElement('hidden', 'hasvalue', 0); + $mform->setType('hasvalue', PARAM_INT); + + $buttonarray = array(); if(!empty($item->id)){ - $mform->addElement('hidden', 'updateitem', '1'); - $mform->setType('updateitem', PARAM_INT); - // $i_form->addElement('submit', 'update_item', get_string('update_item', 'feedback')); $buttonarray[] = &$mform->createElement('submit', 'update_item', get_string('update_item', 'feedback')); }else{ - $mform->addElement('hidden', 'saveitem', '1'); - $mform->setType('saveitem', PARAM_INT); - // $i_form->addElement('submit', 'save_item', get_string('save_item', 'feedback')); $buttonarray[] = &$mform->createElement('submit', 'save_item', get_string('save_item', 'feedback')); } - // $i_form->addElement('cancel'); $buttonarray[] = &$mform->createElement('cancel'); $mform->addGroup($buttonarray, 'buttonar', ' ', array(' '), false); + + $this->set_data($item); } } diff --git a/mod/feedback/item/captcha/lib.php b/mod/feedback/item/captcha/lib.php index ef2f299e3d0..591c2d885dc 100644 --- a/mod/feedback/item/captcha/lib.php +++ b/mod/feedback/item/captcha/lib.php @@ -4,41 +4,74 @@ require_once($CFG->dirroot.'/mod/feedback/item/feedback_item_class.php'); class feedback_item_captcha extends feedback_item_base { var $type = "captcha"; + var $commonparams; + var $item_form; + var $item; + function init() { } -/** - * Build the editform for the item - * - * @global object - * @param object $item the instance of the recordset feedback_item - * @param array $commonparams all hidden values needed in the form - * @param array $positionlist this array build the selection list for itemposition - * @param int $position the current itemposition - * @return object instance of the built form - */ - function show_edit($item, $commonparams, $positionlist, $position) { - global $CFG; - + function build_editform($item, $feedback, $cm) { + global $DB, $CFG; require_once('captcha_form.php'); - $item_form = new feedback_captcha_form('edit_item.php', array('item'=>$item, 'common'=>$commonparams, 'positionlist'=>$positionlist, 'position'=>$position)); - - $item->presentation = empty($item->presentation) ? 3 : $item->presentation; - $item->name = empty($item->name) ? '' : $item->name; - $item->label = empty($item->label) ? '' : $item->label; - - $item->required = isset($item->required) ? $item->required : 1; - if($item->required) { - $item_form->requiredcheck->setValue(true); + //get the lastposition number of the feedback_items + $position = $item->position; + $lastposition = $DB->count_records('feedback_item', array('feedback'=>$feedback->id)); + if($position == -1){ + $i_formselect_last = $lastposition + 1; + $i_formselect_value = $lastposition + 1; + $item->position = $lastposition + 1; + }else { + $i_formselect_last = $lastposition; + $i_formselect_value = $item->position; } + //the elements for position dropdownlist + $positionlist = array_slice(range(0,$i_formselect_last),1,$i_formselect_last,true); + + $item->presentation = empty($item->presentation) ? 3 : $item->presentation; + $item->required = 1; - $item_form->itemname->setValue($item->name); - $item_form->itemlabel->setValue($item->label); + $commonparams = array('cmid'=>$cm->id, + 'id'=>isset($item->id) ? $item->id : NULL, + 'typ'=>$item->typ, + 'feedback'=>$feedback->id); - $item_form->select->setValue($item->presentation); - return $item_form; + //build the form + $this->item_form = new feedback_captcha_form('edit_item.php', array('item'=>$item, 'common'=>$commonparams, 'positionlist'=>$positionlist, 'position'=>$position)); + } + + //this function only can used after the call of build_editform() + function show_editform() { + $this->item_form->display(); + } + + function is_cancelled() { + return $this->item_form->is_cancelled(); + } + + function get_data() { + if($this->item = $this->item_form->get_data()) { + return true; + } + return false; + } + + function save_item() { + global $DB; + + if(!$item = $this->item_form->get_data()) { + return false; + } + + if(!$item->id) { + $item->id = $DB->insert_record('feedback_item', $item); + }else { + $DB->update_record('feedback_item', $item); + } + + return $DB->get_record('feedback_item', array('id'=>$item->id)); } //liefert eine Struktur ->name, ->data = array(mit Antworten) diff --git a/mod/feedback/item/info/info_form.php b/mod/feedback/item/info/info_form.php index 6c7d42acf38..3fdc8ab1800 100644 --- a/mod/feedback/item/info/info_form.php +++ b/mod/feedback/item/info/info_form.php @@ -4,65 +4,74 @@ require_once($CFG->dirroot.'/mod/feedback/item/feedback_item_form_class.php'); class feedback_info_form extends feedback_item_form { var $type = "info"; - var $requiredcheck; - var $itemname; - var $itemlabel; - var $infotype; function definition() { + + $item = $this->_customdata['item']; + $common = $this->_customdata['common']; + $positionlist = $this->_customdata['positionlist']; + $position = $this->_customdata['position']; + $mform =& $this->_form; $mform->addElement('header', 'general', get_string($this->type, 'feedback')); - $this->requiredcheck = &$mform->addElement('hidden', 'required'); + $mform->addElement('hidden', 'required', 0); $mform->setType('required', PARAM_INT); - $this->itemname = &$mform->addElement('text', 'itemname', get_string('item_name', 'feedback'), array('size="'.FEEDBACK_ITEM_NAME_TEXTBOX_SIZE.'"','maxlength="255"')); - $this->itemlabel = $mform->addElement('text', 'itemlabel', get_string('item_label', 'feedback'), array('size="'.FEEDBACK_ITEM_LABEL_TEXTBOX_SIZE.'"','maxlength="255"')); + $mform->addElement('text', 'name', get_string('item_name', 'feedback'), array('size="'.FEEDBACK_ITEM_NAME_TEXTBOX_SIZE.'"','maxlength="255"')); + $mform->addElement('text', 'label', get_string('item_label', 'feedback'), array('size="'.FEEDBACK_ITEM_LABEL_TEXTBOX_SIZE.'"','maxlength="255"')); $options=array(); $options[1] = get_string('responsetime', 'feedback'); $options[2] = get_string('coursename', 'feedback'); $options[3] = get_string('coursecategory', 'feedback'); - $this->infotype = &$mform->addElement('select', 'infotype', get_string('infotype', 'feedback'), $options); + $this->infotype = &$mform->addElement('select', 'presentation', get_string('infotype', 'feedback'), $options); - //////////////////////////////////////////////////////////////////////// //the following is used in all itemforms //////////////////////////////////////////////////////////////////////// - $item = $this->_customdata['item']; - $common = $this->_customdata['common']; - - $mform->addElement('hidden', 'cmid', $common['cmid']); - $mform->setType('cmid', PARAM_INT); - $mform->addElement('hidden', 'id', $common['id']); - $mform->setType('id', PARAM_INT); - $mform->addElement('hidden', 'typ', $common['typ']); - $mform->setType('typ', PARAM_ALPHA); - $mform->addElement('hidden', 'feedbackid', $common['feedbackid']); - $mform->setType('feedbackid', PARAM_INT); - $position_select = $mform->addElement('select', 'position', get_string('position', 'feedback').' ', - $this->_customdata['positionlist']); - $position_select->setValue($this->_customdata['position']); + $positionlist); + $position_select->setValue($position); + $mform->addElement('hidden', 'cmid', $common['cmid']); + $mform->setType('cmid', PARAM_INT); + + $mform->addElement('hidden', 'id', $common['id']); + $mform->setType('id', PARAM_INT); + + $mform->addElement('hidden', 'feedback', $common['feedback']); + $mform->setType('feedback', PARAM_INT); + + $mform->addElement('hidden', 'template', 0); + $mform->setType('template', PARAM_INT); + + $mform->addElement('hidden', 'name', 'label'); + $mform->setType('template', PARAM_ALPHA); + + $mform->addElement('hidden', 'label', '-'); + $mform->setType('label', PARAM_ALPHA); + + $mform->addElement('hidden', 'typ', $this->type); + $mform->setType('typ', PARAM_ALPHA); + + $mform->addElement('hidden', 'hasvalue', 0); + $mform->setType('hasvalue', PARAM_INT); + + $buttonarray = array(); if(!empty($item->id)){ - $mform->addElement('hidden', 'updateitem', '1'); - $mform->setType('updateitem', PARAM_INT); - // $i_form->addElement('submit', 'update_item', get_string('update_item', 'feedback')); $buttonarray[] = &$mform->createElement('submit', 'update_item', get_string('update_item', 'feedback')); }else{ - $mform->addElement('hidden', 'saveitem', '1'); - $mform->setType('saveitem', PARAM_INT); - // $i_form->addElement('submit', 'save_item', get_string('save_item', 'feedback')); $buttonarray[] = &$mform->createElement('submit', 'save_item', get_string('save_item', 'feedback')); } - // $i_form->addElement('cancel'); $buttonarray[] = &$mform->createElement('cancel'); $mform->addGroup($buttonarray, 'buttonar', ' ', array(' '), false); + + $this->set_data($item); } } diff --git a/mod/feedback/item/info/lib.php b/mod/feedback/item/info/lib.php index 6afc0eb0bad..052824617e8 100644 --- a/mod/feedback/item/info/lib.php +++ b/mod/feedback/item/info/lib.php @@ -4,29 +4,74 @@ require_once($CFG->dirroot.'/mod/feedback/item/feedback_item_class.php'); class feedback_item_info extends feedback_item_base { var $type = "info"; + var $commonparams; + var $item_form; + var $item; + function init() { } - function show_edit($item, $commonparams, $positionlist, $position) { - global $CFG; - + function build_editform($item, $feedback, $cm) { + global $DB, $CFG; require_once('info_form.php'); - $item_form = new feedback_info_form('edit_item.php', array('item'=>$item, 'common'=>$commonparams, 'positionlist'=>$positionlist, 'position'=>$position)); + //get the lastposition number of the feedback_items + $position = $item->position; + $lastposition = $DB->count_records('feedback_item', array('feedback'=>$feedback->id)); + if($position == -1){ + $i_formselect_last = $lastposition + 1; + $i_formselect_value = $lastposition + 1; + $item->position = $lastposition + 1; + }else { + $i_formselect_last = $lastposition; + $i_formselect_value = $item->position; + } + //the elements for position dropdownlist + $positionlist = array_slice(range(0,$i_formselect_last),1,$i_formselect_last,true); + + $item->presentation = empty($item->presentation) ? 1 : $item->presentation; + $item->required = 0; - $item->presentation = empty($item->presentation) ? '' : $item->presentation; - $item->name = empty($item->name) ? '' : htmlspecialchars($item->name); - $item->label = empty($item->label) ? '' : $item->label; + $commonparams = array('cmid'=>$cm->id, + 'id'=>isset($item->id) ? $item->id : NULL, + 'typ'=>$item->typ, + 'feedback'=>$feedback->id); - $item_form->requiredcheck->setValue(false); + //build the form + $this->item_form = new feedback_info_form('edit_item.php', array('item'=>$item, 'common'=>$commonparams, 'positionlist'=>$positionlist, 'position'=>$position)); + } - $item_form->itemname->setValue($item->name); - $item_form->itemlabel->setValue($item->label); + //this function only can used after the call of build_editform() + function show_editform() { + $this->item_form->display(); + } + + function is_cancelled() { + return $this->item_form->is_cancelled(); + } - $item_form->infotype->setValue($item->presentation); + function get_data() { + if($this->item = $this->item_form->get_data()) { + return true; + } + return false; + } - return $item_form; + function save_item() { + global $DB; + + if(!$item = $this->item_form->get_data()) { + return false; + } + + if(!$item->id) { + $item->id = $DB->insert_record('feedback_item', $item); + }else { + $DB->update_record('feedback_item', $item); + } + + return $DB->get_record('feedback_item', array('id'=>$item->id)); } //liefert eine Struktur ->name, ->data = array(mit Antworten) diff --git a/mod/feedback/item/label/label_form.php b/mod/feedback/item/label/label_form.php index e68c72ecdf4..5e7a0208a67 100644 --- a/mod/feedback/item/label/label_form.php +++ b/mod/feedback/item/label/label_form.php @@ -7,69 +7,72 @@ class feedback_label_form extends feedback_item_form { var $area; function definition() { + global $CFG; + + $item = $this->_customdata['item']; + $common = $this->_customdata['common']; + $presentationoptions = $this->_customdata['presentationoptions']; + $positionlist = $this->_customdata['positionlist']; + $position = $this->_customdata['position']; + + $context = get_context_instance(CONTEXT_MODULE, $common['cmid']); + $mform =& $this->_form; + $mform->addElement('hidden', 'required', 0); + $mform->setType('required', PARAM_INT); + $mform->addElement('hidden', 'name', 'label'); + $mform->setType('template', PARAM_ALPHA); + $mform->addElement('hidden', 'label', '-'); + $mform->setType('label', PARAM_ALPHA); + + $mform->addElement('header', 'general', get_string($this->type, 'feedback')); - - $mform->addElement('hidden', 'itemname', $this->type); - $mform->setType('itemname', PARAM_INT); - $mform->addElement('editor', 'presentation', '', null, null); - $mform->setType('presentation', PARAM_CLEANHTML); + $mform->addElement('editor', 'presentation_editor', '', null, $presentationoptions); + $mform->setType('presentation_editor', PARAM_CLEANHTML); //////////////////////////////////////////////////////////////////////// //the following is used in all itemforms //////////////////////////////////////////////////////////////////////// - $item = $this->_customdata['item']; - $common = $this->_customdata['common']; - - $mform->addElement('hidden', 'cmid', $common['cmid']); - $mform->setType('cmid', PARAM_INT); - $mform->addElement('hidden', 'id', $common['id']); - $mform->setType('id', PARAM_INT); - $mform->addElement('hidden', 'typ', $common['typ']); - $mform->setType('typ', PARAM_ALPHA); - $mform->addElement('hidden', 'feedbackid', $common['feedbackid']); - $mform->setType('feedbackid', PARAM_INT); - $position_select = $mform->addElement('select', 'position', get_string('position', 'feedback').' ', - $this->_customdata['positionlist']); - $position_select->setValue($this->_customdata['position']); + $positionlist); + $position_select->setValue($position); + $mform->addElement('hidden', 'cmid', $common['cmid']); + $mform->setType('cmid', PARAM_INT); + + $mform->addElement('hidden', 'id', $common['id']); + $mform->setType('id', PARAM_INT); + + $mform->addElement('hidden', 'feedback', $common['feedback']); + $mform->setType('feedback', PARAM_INT); + + $mform->addElement('hidden', 'template', 0); + $mform->setType('template', PARAM_INT); + + $mform->addElement('hidden', 'typ', $this->type); + $mform->setType('typ', PARAM_ALPHA); + + $mform->addElement('hidden', 'hasvalue', 0); + $mform->setType('hasvalue', PARAM_INT); + + $buttonarray = array(); if(!empty($item->id)){ - $mform->addElement('hidden', 'updateitem', '1'); - $mform->setType('updateitem', PARAM_INT); - // $i_form->addElement('submit', 'update_item', get_string('update_item', 'feedback')); $buttonarray[] = &$mform->createElement('submit', 'update_item', get_string('update_item', 'feedback')); }else{ - $mform->addElement('hidden', 'saveitem', '1'); - $mform->setType('saveitem', PARAM_INT); - // $i_form->addElement('submit', 'save_item', get_string('save_item', 'feedback')); $buttonarray[] = &$mform->createElement('submit', 'save_item', get_string('save_item', 'feedback')); } - // $i_form->addElement('cancel'); $buttonarray[] = &$mform->createElement('cancel'); $mform->addGroup($buttonarray, 'buttonar', ' ', array(' '), false); + + $this->set_data($item); } - function get_data() { - $data = parent::get_data(); - if ($data) { - $data->presentation = $data->presentation['text']; - } - return $data; - } - - function set_data($data) { - if(isset($data->presentation)) { - $data->presentation = array('text'=>$data->presentation, 'format'=>FORMAT_HTML, 'itemid'=>0); - } - return parent::set_data($data); - } } diff --git a/mod/feedback/item/label/lib.php b/mod/feedback/item/label/lib.php index 3ca0156e9a1..fcf54748617 100644 --- a/mod/feedback/item/label/lib.php +++ b/mod/feedback/item/label/lib.php @@ -4,24 +4,113 @@ require_once($CFG->dirroot.'/mod/feedback/item/feedback_item_class.php'); class feedback_item_label extends feedback_item_base { var $type = "label"; + var $presentationoptions = null; + var $commonparams; + var $item_form; + var $context; + var $item; + function init() { - + global $CFG; + $this->presentationoptions = array('trusttext'=>true, 'subdirs'=>false, 'maxfiles'=>EDITOR_UNLIMITED_FILES, 'maxbytes'=>$CFG->maxbytes, 'trusttext'=>true); } - function show_edit($item, $commonparams, $positionlist, $position) { - global $CFG; - + function build_editform($item, $feedback, $cm) { + global $DB, $CFG; require_once('label_form.php'); - $item_form = new feedback_label_form('edit_item.php', array('item'=>$item, 'common'=>$commonparams, 'positionlist'=>$positionlist, 'position'=>$position)); + //get the lastposition number of the feedback_items + $position = $item->position; + $lastposition = $DB->count_records('feedback_item', array('feedback'=>$feedback->id)); + if($position == -1){ + $i_formselect_last = $lastposition + 1; + $i_formselect_value = $lastposition + 1; + $item->position = $lastposition + 1; + }else { + $i_formselect_last = $lastposition; + $i_formselect_value = $item->position; + } + //the elements for position dropdownlist + $positionlist = array_slice(range(0,$i_formselect_last),1,$i_formselect_last,true); + + $commonparams = array('cmid'=>$cm->id, + 'id'=>isset($item->id) ? $item->id : NULL, + 'typ'=>$item->typ, + 'feedback'=>$feedback->id); + + $this->context = get_context_instance(CONTEXT_MODULE, $cm->id); - return $item_form; + + //preparing the editor for new file-api + $item->presentationformat = FORMAT_HTML; + $item->presentationtrust = 1; + $item = file_prepare_standard_editor($item, + 'presentation', //name of the form element + $this->presentationoptions, + $this->context, + 'feedback_item', //the filearea + $item->id); + + //build the form + $this->item_form = new feedback_label_form('edit_item.php', array('item'=>$item, 'common'=>$commonparams, 'positionlist'=>$positionlist, 'position'=>$position, 'presentationoptions'=>$this->presentationoptions)); + } + + //this function only can used after the call of build_editform() + function show_editform() { + $this->item_form->display(); + } + + function is_cancelled() { + return $this->item_form->is_cancelled(); } + function get_data() { + if($this->item = $this->item_form->get_data()) { + return true; + } + return false; + } + + function save_item() { + global $DB; + + if(!$item = $this->item_form->get_data()) { + return false; + } + $item->presentation = ''; + + if(!$item->id) { + $item->id = $DB->insert_record('feedback_item', $item); + }else { + $DB->update_record('feedback_item', $item); + } + + $item = file_postupdate_standard_editor($item, + 'presentation', + $this->presentationoptions, + $this->context, + 'feedback_item', + $item->id); + + $DB->update_record('feedback_item', $item); + + return $DB->get_record('feedback_item', array('id'=>$item->id)); + } + function print_item($item){ + global $DB; + $cm = get_coursemodule_from_instance('feedback', $item->feedback); + $context = get_context_instance(CONTEXT_MODULE, $cm->id); + + $item->presentationformat = FORMAT_HTML; + $item->presentationtrust = 1; + ?>