From 4139151f7530a1256e557c8a303f3ba7e66da971 Mon Sep 17 00:00:00 2001 From: Colin Chambers Date: Fri, 26 Apr 2013 16:13:42 +0100 Subject: [PATCH] MDL-47494 ddimageortext: Update OU Qtype ddimageortext for simplified forms #6614 --- .../ddimageortext/edit_ddimageortext_form.php | 66 +++++++++--------- .../edit_ddtoimage_form_base.php | 23 +++---- .../lang/en/qtype_ddimageortext.php | 5 +- question/type/ddimageortext/questiontype.php | 13 ++-- question/type/ddimageortext/styles.css | 67 ++++++++++++++----- question/type/ddimageortext/version.php | 8 +-- question/type/ddimageortext/yui/form/form.js | 33 +++++---- 7 files changed, 119 insertions(+), 96 deletions(-) diff --git a/question/type/ddimageortext/edit_ddimageortext_form.php b/question/type/ddimageortext/edit_ddimageortext_form.php index 1f82049ad26..83c1c437418 100644 --- a/question/type/ddimageortext/edit_ddimageortext_form.php +++ b/question/type/ddimageortext/edit_ddimageortext_form.php @@ -52,7 +52,7 @@ class qtype_ddimageortext_edit_form extends qtype_ddtoimage_edit_form_base { foreach ($question->options->drags as $drag) { $dragindex = $drag->no -1; $question->drags[$dragindex] = array(); - $question->drags[$dragindex]['draglabel'] = $drag->label; + $question->draglabel[$dragindex] = $drag->label; $question->drags[$dragindex]['infinite'] = $drag->infinite; $question->drags[$dragindex]['draggroup'] = $drag->draggroup; $dragids[$dragindex] = $drag->id; @@ -93,11 +93,11 @@ class qtype_ddimageortext_edit_form extends qtype_ddtoimage_edit_form_base { } else { $fileexists = self::file_uploaded($question->dragitem[$dragindex]); } - $labelexists = (trim($question->drags[$dragindex]['draglabel']) != ''); + $labelexists = (trim($question->draglabel[$dragindex]) != ''); if ($labelexists && !$fileexists) { - $question->dragitemtype[$dragindex] = 'word'; + $question->drags[$dragindex]['dragitemtype'] = 'word'; } else { - $question->dragitemtype[$dragindex] = 'image'; + $question->drags[$dragindex]['dragitemtype'] = 'image'; } } } @@ -118,7 +118,7 @@ class qtype_ddimageortext_edit_form extends qtype_ddtoimage_edit_form_base { $maxsizes->dragimage->height = QTYPE_DDIMAGEORTEXT_DRAGIMAGE_MAXHEIGHT; $params = array('maxsizes' => $maxsizes, - 'topnode' => 'fieldset#previewareaheader'); + 'topnode' => 'fieldset#id_previewareaheader'); $PAGE->requires->yui_module('moodle-qtype_ddimageortext-form', 'M.qtype_ddimageortext.init_form', @@ -128,38 +128,31 @@ class qtype_ddimageortext_edit_form extends qtype_ddtoimage_edit_form_base { // Drag items. protected function definition_draggable_items($mform, $itemrepeatsatstart) { - + $mform->addElement('header', 'draggableitemheader', + get_string('draggableitems', 'qtype_ddimageortext')); + $mform->addElement('advcheckbox', 'shuffleanswers', ' ', + get_string('shuffleimages', 'qtype_'.$this->qtype())); + $mform->setDefault('shuffleanswers', 0); $this->repeat_elements($this->draggable_item($mform), $itemrepeatsatstart, $this->draggable_items_repeated_options(), 'noitems', 'additems', self::ADD_NUM_ITEMS, - get_string('addmoreimages', 'qtype_ddimageortext')); + get_string('addmoreimages', 'qtype_ddimageortext'), true); } protected function draggable_item($mform) { $draggableimageitem = array(); - $draggableimageitem[] = $mform->createElement('header', 'draggableitemheader', - get_string('draggableitemheader', 'qtype_ddimageortext', '{no}')); + $grouparray = array(); $dragitemtypes = array('image' => get_string('draggableimage', 'qtype_ddimageortext'), 'word' => get_string('draggableword', 'qtype_ddimageortext')); - $draggableimageitem[] = $mform->createElement('select', 'dragitemtype', + $grouparray[] = $mform->createElement('select', 'dragitemtype', get_string('draggableitemtype', 'qtype_ddimageortext'), $dragitemtypes, array('class' => 'dragitemtype')); - $draggableimageitem[] = $mform->createElement('filepicker', 'dragitem', '', null, - self::file_picker_options()); - - $grouparray = array(); - $grouparray[] = $mform->createElement('text', 'draglabel', - get_string('label', 'qtype_ddimageortext'), - array('size'=>30, 'class'=>'tweakcss')); - $mform->setType('draglabel', PARAM_NOTAGS); $options = array(); for ($i = 1; $i <= self::MAX_GROUPS; $i += 1) { $options[$i] = $i; } - $grouparray[] = $mform->createElement('static', '', '', ' ' . - get_string('group', 'qtype_gapselect').' '); $grouparray[] = $mform->createElement('select', 'draggroup', get_string('group', 'qtype_gapselect'), $options, @@ -167,7 +160,15 @@ class qtype_ddimageortext_edit_form extends qtype_ddtoimage_edit_form_base { $grouparray[] = $mform->createElement('advcheckbox', 'infinite', ' ', get_string('infinite', 'qtype_ddimageortext')); $draggableimageitem[] = $mform->createElement('group', 'drags', - get_string('label', 'qtype_ddimageortext'), $grouparray); + get_string('draggableitemheader', 'qtype_ddimageortext', '{no}'), $grouparray); + + $draggableimageitem[] = $mform->createElement('filepicker', 'dragitem', '', null, + self::file_picker_options()); + + $draggableimageitem[] = $mform->createElement('text', 'draglabel', + get_string('label', 'qtype_ddimageortext'), + array('size'=>30, 'class'=>'tweakcss')); + $mform->setType('draglabel', PARAM_NOTAGS); return $draggableimageitem; } @@ -183,30 +184,20 @@ class qtype_ddimageortext_edit_form extends qtype_ddtoimage_edit_form_base { $dropzoneitem = array(); $grouparray = array(); - $grouparray[] = $mform->createElement('static', 'xleftlabel', '', - ' '.get_string('xleft', 'qtype_ddimageortext').' '); $grouparray[] = $mform->createElement('text', 'xleft', get_string('xleft', 'qtype_ddimageortext'), array('size'=>5, 'class'=>'tweakcss')); - $mform->setType('xleft', PARAM_NOTAGS); - $grouparray[] = $mform->createElement('static', 'ytoplabel', '', - ' '.get_string('ytop', 'qtype_ddimageortext').' '); $grouparray[] = $mform->createElement('text', 'ytop', get_string('ytop', 'qtype_ddimageortext'), array('size'=>5, 'class'=>'tweakcss')); - $mform->setType('ytop', PARAM_NOTAGS); $options = array(); $options[0] = ''; for ($i = 1; $i <= $imagerepeats; $i += 1) { $options[$i] = $i; } - $grouparray[] = $mform->createElement('static', '', '', ' ' . - get_string('draggableitem', 'qtype_ddimageortext').' '); $grouparray[] = $mform->createElement('select', 'choice', get_string('draggableitem', 'qtype_ddimageortext'), $options); - $grouparray[] = $mform->createElement('static', '', '', ' ' . - get_string('label', 'qtype_ddimageortext').' '); $grouparray[] = $mform->createElement('text', 'droplabel', get_string('label', 'qtype_ddimageortext'), array('size'=>10, 'class'=>'tweakcss')); @@ -218,8 +209,11 @@ class qtype_ddimageortext_edit_form extends qtype_ddtoimage_edit_form_base { protected function drop_zones_repeated_options() { $repeatedoptions = array(); - $repeatedoptions['xleft']['type'] = PARAM_INT; - $repeatedoptions['ytop']['type'] = PARAM_INT; + // The next two are PARAM_RAW becuase we need to distinguish 0 and ''. + // We do the necessary validation in the validation method. + $repeatedoptions['drops[xleft]']['type'] = PARAM_RAW; + $repeatedoptions['drops[ytop]']['type'] = PARAM_RAW; + $repeatedoptions['drops[droplabel]']['type'] = PARAM_TEXT; $repeatedoptions['choice']['default'] = '0'; return $repeatedoptions; } @@ -252,7 +246,7 @@ class qtype_ddimageortext_edit_form extends qtype_ddtoimage_edit_form_base { $errors["drops[$i]"] = get_string('formerror_notintxleft', 'qtype_ddimageortext'); } - if ($data['dragitemtype'][$choice - 1] != 'word' && + if ($data['drags'][$choice - 1]['dragitemtype'] != 'word' && !self::file_uploaded($data['dragitem'][$choice - 1])) { $errors['dragitem['.($choice - 1).']'] = get_string('formerror_nofile', 'qtype_ddimageortext', $i); @@ -275,8 +269,8 @@ class qtype_ddimageortext_edit_form extends qtype_ddtoimage_edit_form_base { } } for ($dragindex=0; $dragindex < $data['noitems']; $dragindex++) { - $label = $data['drags'][$dragindex]['draglabel']; - if ($data['dragitemtype'][$dragindex] == 'word') { + $label = $data['draglabel'][$dragindex]; + if ($data['drags'][$dragindex]['dragitemtype'] == 'word') { $allowedtags = '
'; $errormessage = get_string('formerror_disallowedtags', 'qtype_ddimageortext'); } else { diff --git a/question/type/ddimageortext/edit_ddtoimage_form_base.php b/question/type/ddimageortext/edit_ddtoimage_form_base.php index d834aa9ea36..099ec22a5aa 100644 --- a/question/type/ddimageortext/edit_ddtoimage_form_base.php +++ b/question/type/ddimageortext/edit_ddtoimage_form_base.php @@ -63,14 +63,13 @@ abstract class qtype_ddtoimage_edit_form_base extends question_edit_form { $mform->registerNoSubmitButton('refresh'); $mform->addElement('submit', 'refresh', get_string('refresh', 'qtype_'.$this->qtype())); - $mform->closeHeaderBefore('refresh'); + $mform->addElement('filepicker', 'bgimage', get_string('bgimage', 'qtype_'.$this->qtype()), + null, self::file_picker_options()); + $mform->closeHeaderBefore('dropzoneheader'); list($itemrepeatsatstart, $imagerepeats) = $this->get_drag_item_repeats(); $this->definition_drop_zones($mform, $imagerepeats); - $mform->addElement('advcheckbox', 'shuffleanswers', ' ', - get_string('shuffleimages', 'qtype_'.$this->qtype())); - $mform->setDefault('shuffleanswers', 0); - $mform->closeHeaderBefore('shuffleanswers'); + // Add the draggable image fields to the form. $this->definition_draggable_items($mform, $itemrepeatsatstart); @@ -82,21 +81,17 @@ abstract class qtype_ddtoimage_edit_form_base extends question_edit_form { $mform->addElement('header', 'dropzoneheader', get_string('dropzoneheader', 'qtype_'.$this->qtype())); - $mform->addElement('filepicker', 'bgimage', get_string('bgimage', 'qtype_'.$this->qtype()), - null, self::file_picker_options()); - $countdropzones = 0; if (isset($this->question->id)) { foreach ($this->question->options->drops as $drop) { $countdropzones = max($countdropzones, $drop->no); } } - if ($this->question->formoptions->repeatelements) { - $dropzonerepeatsatstart = max(self::START_NUM_ITEMS, - $countdropzones + self::ADD_NUM_ITEMS); - } else { - $dropzonerepeatsatstart = $countdropzones; + + if (!$countdropzones) { + $countdropzones = self::START_NUM_ITEMS; } + $dropzonerepeatsatstart = $countdropzones; $this->repeat_elements($this->drop_zone($mform, $imagerepeats), $dropzonerepeatsatstart, $this->drop_zones_repeated_options(), @@ -107,7 +102,7 @@ abstract class qtype_ddtoimage_edit_form_base extends question_edit_form { abstract protected function drop_zones_repeated_options(); - abstract protected function definition_draggable_items($mform, $itemrepeatsatstart); + abstract protected function definition_draggable_items($mform, $itemrepeatsatstart) ; abstract protected function draggable_item($mform); diff --git a/question/type/ddimageortext/lang/en/qtype_ddimageortext.php b/question/type/ddimageortext/lang/en/qtype_ddimageortext.php index 1ca222417ee..1ee1492e5aa 100644 --- a/question/type/ddimageortext/lang/en/qtype_ddimageortext.php +++ b/question/type/ddimageortext/lang/en/qtype_ddimageortext.php @@ -29,6 +29,7 @@ $string['bgimage'] = 'Background image'; $string['correctansweris'] = 'The correct answer is: {$a}'; $string['draggableimage'] = 'Draggable image'; $string['draggableitem'] = 'Draggable item'; +$string['draggableitems'] = 'Draggable items'; $string['draggableitemheader'] = 'Draggable item {$a}'; $string['draggableitemtype'] = 'Type'; $string['draggableword'] = 'Draggable text'; @@ -57,8 +58,8 @@ $string['pluginname_link'] = 'question/type/ddimageortext'; $string['pluginnameadding'] = 'Adding drag and drop onto image'; $string['pluginnameediting'] = 'Editing drag and drop onto image'; $string['pluginnamesummary'] = 'Images or text labels are dragged and dropped into drop zones on a background image.'; -$string['previewarea'] = 'Preview area -'; -$string['previewareaheader'] = 'Preview'; +$string['previewarea'] = ''; +$string['previewareaheader'] = 'Background image'; $string['previewareamessage'] = 'Select a background image file and select draggable images or just enter text that will be made draggable. Then choose a drag item for each \'drop zone\', and drag the drag item to where the student should drag it to.'; $string['refresh'] = 'Refresh preview'; $string['shuffleimages'] = 'Shuffle drag items each time question is attempted'; diff --git a/question/type/ddimageortext/questiontype.php b/question/type/ddimageortext/questiontype.php index e848a9547b6..83c75a1f9ab 100644 --- a/question/type/ddimageortext/questiontype.php +++ b/question/type/ddimageortext/questiontype.php @@ -95,7 +95,7 @@ class qtype_ddimageortext extends qtype_ddtoimage_base { '', 'no, id'); foreach (array_keys($formdata->drags) as $dragno) { $info = file_get_draft_area_info($formdata->dragitem[$dragno]); - if ($info['filecount'] > 0 || (trim($formdata->drags[$dragno]['draglabel'])!='')) { + if ($info['filecount'] > 0 || (trim($formdata->draglabel[$dragno])!='')) { $draftitemid = $formdata->dragitem[$dragno]; $drag = new stdClass(); @@ -103,7 +103,7 @@ class qtype_ddimageortext extends qtype_ddtoimage_base { $drag->no = $dragno + 1; $drag->draggroup = $formdata->drags[$dragno]['draggroup']; $drag->infinite = empty($formdata->drags[$dragno]['infinite'])? 0 : 1; - $drag->label = $formdata->drags[$dragno]['draglabel']; + $drag->label = $formdata->draglabel[$dragno]; if (isset($olddragids[$dragno +1])) { $drag->id = $olddragids[$dragno +1]; @@ -113,7 +113,7 @@ class qtype_ddimageortext extends qtype_ddtoimage_base { $drag->id = $DB->insert_record('qtype_ddimageortext_drags', $drag); } - if ($formdata->dragitemtype[$dragno] == 'image') { + if ($formdata->drags[$dragno]['dragitemtype'] == 'image') { self::constrain_image_size_in_draft_area($draftitemid, QTYPE_DDIMAGEORTEXT_DRAGIMAGE_MAXWIDTH, QTYPE_DDIMAGEORTEXT_DRAGIMAGE_MAXHEIGHT); @@ -130,6 +130,7 @@ class qtype_ddimageortext extends qtype_ddtoimage_base { } } + if (!empty($olddragids)) { list($sql, $params) = $DB->get_in_or_equal(array_values($olddragids)); $DB->delete_records_select('qtype_ddimageortext_drags', "id $sql", $params); @@ -243,7 +244,7 @@ class qtype_ddimageortext extends qtype_ddtoimage_base { $dragno = $format->getpath($dragxml, array('#', 'no', 0, '#'), 0); $dragindex = $dragno -1; $question->drags[$dragindex] = array(); - $question->drags[$dragindex]['draglabel'] = + $question->draglabel[$dragindex] = $format->getpath($dragxml, array('#', 'text', 0, '#'), '', true); $question->drags[$dragindex]['infinite'] = array_key_exists('infinite', $dragxml['#']); $question->drags[$dragindex]['draggroup'] = @@ -252,9 +253,9 @@ class qtype_ddimageortext extends qtype_ddtoimage_base { $question->dragitem[$dragindex] = $this->import_files_to_draft_file_area($format, $filexml); if (count($filexml)) { - $question->dragitemtype[$dragindex] = 'image'; + $question->drags[$dragindex]['dragitemtype'] = 'image'; } else { - $question->dragitemtype[$dragindex] = 'word'; + $question->drags[$dragindex]['dragitemtype'] = 'word'; } } diff --git a/question/type/ddimageortext/styles.css b/question/type/ddimageortext/styles.css index 27cf612e019..0ee6b36d224 100644 --- a/question/type/ddimageortext/styles.css +++ b/question/type/ddimageortext/styles.css @@ -3,17 +3,17 @@ display: block; } -.que.ddimageortext div.droparea img, form.mform fieldset#previewareaheader div.droparea img { +.que.ddimageortext div.droparea img, form.mform fieldset#id_previewareaheader div.droparea img { border: 1px solid #000000; } -.que.ddimageortext .draghome, form.mform fieldset#previewareaheader .draghome { +.que.ddimageortext .draghome, form.mform fieldset#id_previewareaheader .draghome { vertical-align: top; margin: 5px; visibility : hidden; } -.que.ddimageortext div.draghome, form.mform fieldset#previewareaheader div.draghome { +.que.ddimageortext div.draghome, form.mform fieldset#id_previewareaheader div.draghome { border: 1px solid black; cursor: move; background-color: #B0C4DE; @@ -25,31 +25,31 @@ *display: inline; } -.que.ddimageortext .group1, form.mform fieldset#previewareaheader .group1 { +.que.ddimageortext .group1, form.mform fieldset#id_previewareaheader .group1 { background-color: #FFFFFF; } -.que.ddimageortext .group2, form.mform fieldset#previewareaheader .group2 { +.que.ddimageortext .group2, form.mform fieldset#id_previewareaheader .group2 { background-color: #B0C4DE; } -.que.ddimageortext .group3, form.mform fieldset#previewareaheader .group3 { +.que.ddimageortext .group3, form.mform fieldset#id_previewareaheader .group3 { background-color: #DCDCDC; } -.que.ddimageortext .group4, form.mform fieldset#previewareaheader .group4 { +.que.ddimageortext .group4, form.mform fieldset#id_previewareaheader .group4 { background-color: #D8BFD8; } -.que.ddimageortext .group5, form.mform fieldset#previewareaheader .group5 { +.que.ddimageortext .group5, form.mform fieldset#id_previewareaheader .group5 { background-color: #87CEFA; } -.que.ddimageortext .group6, form.mform fieldset#previewareaheader .group6 { +.que.ddimageortext .group6, form.mform fieldset#id_previewareaheader .group6 { background-color: #DAA520; } -.que.ddimageortext .group7, form.mform fieldset#previewareaheader .group7 { +.que.ddimageortext .group7, form.mform fieldset#id_previewareaheader .group7 { background-color: #FFD700; } -.que.ddimageortext .group8, form.mform fieldset#previewareaheader .group8 { +.que.ddimageortext .group8, form.mform fieldset#id_previewareaheader .group8 { background-color: #F0E68C; } -.que.ddimageortext .drag, form.mform fieldset#previewareaheader .drag { +.que.ddimageortext .drag, form.mform fieldset#id_previewareaheader .drag { border: 1px solid black; cursor: move; z-index: 2; @@ -57,10 +57,10 @@ .que.ddimageortext .dragitems.readonly .drag { cursor: auto; } -.que.ddimageortext div.ddarea, form.mform fieldset#previewareaheader div.ddarea { +.que.ddimageortext div.ddarea, form.mform fieldset#id_previewareaheader div.ddarea { text-align : center; } -.que.ddimageortext .dropbackground, form.mform fieldset#previewareaheader .dropbackground { +.que.ddimageortext .dropbackground, form.mform fieldset#id_previewareaheader .dropbackground { margin:0 auto; } .que.ddimageortext .dropzone { @@ -75,12 +75,12 @@ } .que.ddimageortext div.dragitems div.draghome, .que.ddimageortext div.dragitems div.drag, -form.mform fieldset#previewareaheader div.draghome, form.mform fieldset#previewareaheader div.drag { +form.mform fieldset#id_previewareaheader div.draghome, form.mform fieldset#id_previewareaheader div.drag { font:13px/1.231 arial,helvetica,clean,sans-serif; *font-size:small; /* for IE */ *font:x-small; /* for IE in quirks mode */ } -form.mform fieldset#previewareaheader div.drag.yui3-dd-dragging, +form.mform fieldset#id_previewareaheader div.drag.yui3-dd-dragging, .que.ddimageortext div.drag.yui3-dd-dragging { z-index: 3; -moz-box-shadow: 3px 3px 4px #000; @@ -91,3 +91,38 @@ form.mform fieldset#previewareaheader div.drag.yui3-dd-dragging, /* For IE 5.5 - 7 */ filter: progid:DXImageTransform.Microsoft.Shadow(Strength=4, Direction=135, Color='#000000'); } +/* Editing form. Style repeated elements*/ +/*Top*/ +body#page-question-type-ddimageortext div[id^=fgroup_id_][id*=drags_] { + background: #EEE; + margin-top: 0; + margin-bottom: 0; + padding-bottom: 5px; + padding-top: 5px; + border: 1px solid #BBB; + border-bottom: 0; +} +body#page-question-type-ddimageortext div[id^=fgroup_id_][id*=drags_] .fgrouplabel label { + font-weight: bold; +} +/* Middle */ +body#page-question-type-ddimageortext div[id^=fitem_id_][id*=dragitem_] { + background: #EEE; + margin-bottom: 0; + margin-top: 0; + padding-bottom: 5px; + padding-top: 5px; + border: 1px solid #BBB; + border-top: 0; + border-bottom: 0; +} +/* Bottom */ +body#page-question-type-ddimageortext div[id^=fitem_id_][id*=draglabel_] { + background: #EEE; + margin-bottom: 2em; + margin-top: 0; + padding-bottom: 5px; + padding-top: 5px; + border: 1px solid #BBB; + border-top: 0; +} diff --git a/question/type/ddimageortext/version.php b/question/type/ddimageortext/version.php index a7ce5c88b9c..939243ab4b2 100644 --- a/question/type/ddimageortext/version.php +++ b/question/type/ddimageortext/version.php @@ -25,13 +25,13 @@ defined('MOODLE_INTERNAL') || die(); -$plugin->version = 2013031400; -$plugin->requires = 2012062500; +$plugin->version = 2013052000; +$plugin->requires = 2013051400; $plugin->cron = 0; $plugin->component = 'qtype_ddimageortext'; $plugin->maturity = MATURITY_STABLE; -$plugin->release = '1.2 for Moodle 2.3+'; +$plugin->release = '1.3 for Moodle 2.5+'; $plugin->dependencies = array( - 'qtype_gapselect' => 2013031400, + 'qtype_gapselect' => 2013042900, ); diff --git a/question/type/ddimageortext/yui/form/form.js b/question/type/ddimageortext/yui/form/form.js index 46808cba954..557f2902976 100644 --- a/question/type/ddimageortext/yui/form/form.js +++ b/question/type/ddimageortext/yui/form/form.js @@ -11,8 +11,8 @@ YUI.add('moodle-qtype_ddimageortext-form', function(Y) { initializer : function() { this.fp = this.file_pickers(); - Y.one(this.get('topnode')).append('
'+ - '
'+ + var tn = Y.one(this.get('topnode')); + tn.one('div.fcontainer').append('
'+ '
'); this.doc = this.doc_structure(this); this.draw_dd_area(); @@ -77,11 +77,11 @@ YUI.add('moodle-qtype_ddimageortext-form', function(Y) { load_drag_home : function (dragitemno) { var url = null; - if ('image' === this.form.get_form_value('dragitemtype', [dragitemno])) { + if ('image' === this.form.get_form_value('drags', [dragitemno, 'dragitemtype'])) { url = this.fp.file(this.form.to_name_with_index('dragitem', [dragitemno])).href; } this.doc.add_or_update_drag_item_home(dragitemno, url, - this.form.get_form_value('drags', [dragitemno, 'draglabel']), + this.form.get_form_value('draglabel', [dragitemno]), this.form.get_form_value('drags', [dragitemno, 'draggroup'])); }, @@ -100,9 +100,9 @@ YUI.add('moodle-qtype_ddimageortext-form', function(Y) { set_options_for_drag_item_selectors : function () { var dragitemsoptions = {0: ''}; for (var i=0; i < this.form.get_form_value('noitems', []); i++) { - var label = this.form.get_form_value('drags', [i, 'draglabel']); + var label = this.form.get_form_value('draglabel', [i]); var file = this.fp.file(this.form.to_name_with_index('dragitem', [i])); - if ('image' === this.form.get_form_value('dragitemtype', [i]) + if ('image' === this.form.get_form_value('drags', [i, 'dragitemtype']) && file.name !== null) { dragitemsoptions[i + 1] = (i + 1) + '. ' + label + ' (' + file.name + ')'; } else if (label !== '') { @@ -124,12 +124,9 @@ YUI.add('moodle-qtype_ddimageortext-form', function(Y) { optionnode.set('selected', true); } else { if (value !== 0) { // no item option is always selectable - var cbselector = 'fieldset#draggableitemheader_'+(value-1) - +' input[type="checkbox"]'; - var cbel = Y.one(cbselector); - var infinite = cbel.get('checked'); - if (!infinite) { - Y.all('fieldset#dropzoneheader select').some(function (selector) { + var cbel = Y.one('#id_drags_'+(value-1)+'_infinite'); + if (cbel && !cbel.get('checked')) { + Y.all('fieldset#id_dropzoneheader select').some(function (selector) { if (+selector.get('value') === value) { optionnode.set('disabled', true); return true; // stop looping @@ -144,14 +141,14 @@ YUI.add('moodle-qtype_ddimageortext-form', function(Y) { }, stop_selector_events : function () { - Y.all('fieldset#dropzoneheader select').detachAll(); + Y.all('fieldset#id_dropzoneheader select').detachAll(); }, setup_form_events : function () { //events triggered by changes to form data //x and y coordinates - Y.all('fieldset#dropzoneheader input').on('blur', function (e) { + Y.all('fieldset#id_dropzoneheader input').on('blur', function (e) { var name = e.target.getAttribute('name'); var draginstanceno = this.form.from_name_with_index(name).indexes[0]; var fromform = [this.form.get_form_value('drops', [draginstanceno, 'xleft']), @@ -162,7 +159,7 @@ YUI.add('moodle-qtype_ddimageortext-form', function(Y) { }, this); //change in selected item - Y.all('fieldset#dropzoneheader select').on('change', function (e) { + Y.all('fieldset#id_dropzoneheader select').on('change', function (e) { var name = e.target.getAttribute('name'); var draginstanceno = this.form.from_name_with_index(name).indexes[0]; var old = this.doc.drag_item(draginstanceno); @@ -174,12 +171,12 @@ YUI.add('moodle-qtype_ddimageortext-form', function(Y) { for (var i=0; i < this.form.get_form_value('noitems', []); i++) { //change to group selector - Y.all('fieldset#draggableitemheader_'+i+' select.draggroup').on( + Y.all('#fgroup_id_drags_'+i+' select.draggroup').on( 'change', function () { this.doc.drag_items().remove(true); this.draw_dd_area(); }, this); - Y.all('fieldset#draggableitemheader_' + i + ' select.dragitemtype').on( + Y.all('#fgroup_id_drags_'+i+' select.dragitemtype').on( 'change', function () { this.doc.drag_items().remove(true); this.draw_dd_area(); @@ -202,7 +199,7 @@ YUI.add('moodle-qtype_ddimageortext-form', function(Y) { update_visibility_of_file_pickers : function() { for (var i=0; i < this.form.get_form_value('noitems', []); i++) { - if ('image' === this.form.get_form_value('dragitemtype', [i])) { + if ('image' === this.form.get_form_value('drags', [i, 'dragitemtype'])) { Y.one('input#id_dragitem_'+i).get('parentNode').get('parentNode') .setStyle('display', 'block'); } else {