MDL-47494 ddimageortext: Update OU Qtype ddimageortext for simplified forms #6614
This commit is contained in:
@@ -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 = '<br><sub><sup><b><i><strong><em>';
|
||||
$errormessage = get_string('formerror_disallowedtags', 'qtype_ddimageortext');
|
||||
} else {
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
);
|
||||
|
||||
+15
-18
@@ -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('<div class="ddarea"><div class="droparea"></div>'+
|
||||
'<div class="dragitems"></div>'+
|
||||
var tn = Y.one(this.get('topnode'));
|
||||
tn.one('div.fcontainer').append('<div class="ddarea"><div class="droparea"></div><div class="dragitems"></div>'+
|
||||
'<div class="dropzones"></div></div>');
|
||||
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 {
|
||||
|
||||
Reference in New Issue
Block a user