From 62e72577b50f4d70ca8541fbfd4ed7d3147c0bab Mon Sep 17 00:00:00 2001 From: Jun Pataleta Date: Thu, 21 Dec 2017 14:24:00 +1300 Subject: [PATCH] MDL-65938 mod_quiz: Use new core/checkbox-toggleall Plus: * On the attempts report pages, the "Regrade selected attempts" and "Delete selected attempts" buttons are now only enabled when there's at least one item selected. * Behat fixes for quiz edit feature after this patch --- mod/quiz/classes/output/edit_renderer.php | 55 +++++++------- mod/quiz/report/attemptsreport_table.php | 72 +++++++++++++------ mod/quiz/report/overview/overview_table.php | 13 +++- mod/quiz/report/overview/report.php | 2 +- mod/quiz/report/responses/report.php | 2 +- mod/quiz/styles.css | 22 +----- .../editing_remove_multiple_questions.feature | 6 +- .../moodle-mod_quiz-toolboxes-debug.js | 37 ---------- .../moodle-mod_quiz-toolboxes-min.js | 6 +- .../moodle-mod_quiz-toolboxes.js | 37 ---------- mod/quiz/yui/src/toolboxes/js/resource.js | 36 ---------- mod/quiz/yui/src/toolboxes/js/toolbox.js | 1 - 12 files changed, 104 insertions(+), 185 deletions(-) diff --git a/mod/quiz/classes/output/edit_renderer.php b/mod/quiz/classes/output/edit_renderer.php index 7caa98c78b7..6add15e9179 100644 --- a/mod/quiz/classes/output/edit_renderer.php +++ b/mod/quiz/classes/output/edit_renderer.php @@ -38,6 +38,9 @@ use renderable; */ class edit_renderer extends \plugin_renderer_base { + /** @var string The toggle group name of the checkboxes for the toggle-all functionality. */ + protected $togglegroup = 'quiz-questions'; + /** * Render the edit page * @@ -249,7 +252,11 @@ class edit_renderer extends \plugin_renderer_base { 'type' => 'button', 'id' => 'selectmultipledeletecommand', 'value' => get_string('deleteselected', 'mod_quiz'), - 'class' => 'btn btn-secondary' + 'class' => 'btn btn-secondary', + 'data-action' => 'toggle', + 'data-togglegroup' => $this->togglegroup, + 'data-toggle' => 'action', + 'disabled' => true ); $buttoncanceloptions = array( 'type' => 'button', @@ -259,7 +266,7 @@ class edit_renderer extends \plugin_renderer_base { ); $groupoptions = array( - 'class' => 'btn-group selectmultiplecommand actions', + 'class' => 'btn-group selectmultiplecommand actions m-1', 'role' => 'group' ); @@ -270,29 +277,26 @@ class edit_renderer extends \plugin_renderer_base { $buttoncanceloptions), $groupoptions); $toolbaroptions = array( - 'class' => 'btn-toolbar', + 'class' => 'btn-toolbar m-1', 'role' => 'toolbar', 'aria-label' => get_string('selectmultipletoolbar', 'quiz'), ); // Select all/deselect all questions. - $buttonselectalloptions = array( - 'role' => 'button', - 'id' => 'questionselectall', - 'class' => 'btn btn-link' - ); - $buttondeselectalloptions = array( - 'role' => 'button', - 'id' => 'questiondeselectall', - 'class' => 'btn btn-link' - ); - $output .= html_writer::tag('div', - html_writer::tag('div', - html_writer::link('#', get_string('selectall', 'quiz'), $buttonselectalloptions) . - html_writer::tag('span', "/", ['class' => 'separator']) . - html_writer::link('#', get_string('selectnone', 'quiz'), $buttondeselectalloptions), - array('class' => 'btn-group selectmultiplecommandbuttons')), - $toolbaroptions); + $selectallid = 'questionselectall'; + $selectalltext = get_string('selectall', 'moodle'); + $deselectalltext = get_string('deselectall', 'moodle'); + $mastercheckbox = new \core\output\checkbox_toggleall($this->togglegroup, true, [ + 'id' => $selectallid, + 'name' => $selectallid, + 'value' => 1, + 'label' => $selectalltext, + 'selectall' => $selectalltext, + 'deselectall' => $deselectalltext, + ], true); + + $selectdeselect = html_writer::div($this->render($mastercheckbox), 'selectmultiplecommandbuttons'); + $output .= html_writer::tag('div', $selectdeselect, $toolbaroptions); return $output; } @@ -728,10 +732,13 @@ class edit_renderer extends \plugin_renderer_base { } $output .= html_writer::start_div('mod-indent-outer'); - $output .= html_writer::tag('input', '', array('id' => 'selectquestion-' . - $structure->get_displayed_number_for_slot($slot), 'name' => 'selectquestion[]', - 'type' => 'checkbox', 'class' => 'select-multiple-checkbox', - 'value' => $structure->get_displayed_number_for_slot($slot))); + $checkbox = new \core\output\checkbox_toggleall($this->togglegroup, false, [ + 'id' => 'selectquestion-' . $structure->get_displayed_number_for_slot($slot), + 'name' => 'selectquestion[]', + 'value' => $structure->get_displayed_number_for_slot($slot), + 'classes' => 'select-multiple-checkbox', + ]); + $output .= $this->render($checkbox); $output .= $this->question_number($structure->get_displayed_number_for_slot($slot)); // This div is used to indent the content. diff --git a/mod/quiz/report/attemptsreport_table.php b/mod/quiz/report/attemptsreport_table.php index 5feaa9d4be0..787032b5834 100644 --- a/mod/quiz/report/attemptsreport_table.php +++ b/mod/quiz/report/attemptsreport_table.php @@ -75,6 +75,9 @@ abstract class quiz_attempts_report_table extends table_sql { /** @var bool whether to include the column with checkboxes to select each attempt. */ protected $includecheckboxes; + /** @var string The toggle group name for the checkboxes in the checkbox column. */ + protected $togglegroup = 'quiz-attempts'; + /** * Constructor * @param string $uniqueid @@ -108,9 +111,17 @@ abstract class quiz_attempts_report_table extends table_sql { * @return string HTML content to go inside the td. */ public function col_checkbox($attempt) { + global $OUTPUT; + if ($attempt->attempt) { - return html_writer::checkbox('attemptid[]', $attempt->attempt, false, - get_string('selectattempt', 'quiz'), [], ['class' => 'accesshide']); + $checkbox = new \core\output\checkbox_toggleall($this->togglegroup, false, [ + 'id' => "attemptid_{$attempt->attempt}", + 'name' => 'attemptid[]', + 'value' => $attempt->attempt, + 'label' => get_string('selectattempt', 'quiz'), + 'labelclasses' => 'accesshide', + ]); + return $OUTPUT->render($checkbox); } else { return ''; } @@ -610,22 +621,6 @@ abstract class quiz_attempts_report_table extends table_sql { } echo '
'; - echo '' . - get_string('selectall', 'quiz') . ' / '; - echo '' . - get_string('selectnone', 'quiz') . ' '; - $PAGE->requires->js_amd_inline(" - require(['jquery'], function($) { - $('#checkattempts').click(function(e) { - $('#attemptsform').find('input:checkbox').prop('checked', true); - e.preventDefault(); - }); - $('#uncheckattempts').click(function(e) { - $('#attemptsform').find('input:checkbox').prop('checked', false); - e.preventDefault(); - }); - });"); - echo '  '; $this->submit_buttons(); echo '
'; @@ -640,10 +635,47 @@ abstract class quiz_attempts_report_table extends table_sql { protected function submit_buttons() { global $PAGE; if (has_capability('mod/quiz:deleteattempts', $this->context)) { - echo ''; + $deletebuttonparams = [ + 'type' => 'submit', + 'class' => 'btn btn-secondary mr-1', + 'id' => 'deleteattemptsbutton', + 'name' => 'delete', + 'value' => get_string('deleteselected', 'quiz_overview'), + 'data-action' => 'toggle', + 'data-togglegroup' => $this->togglegroup, + 'data-toggle' => 'action', + 'disabled' => true + ]; + echo html_writer::empty_tag('input', $deletebuttonparams); $PAGE->requires->event_handler('#deleteattemptsbutton', 'click', 'M.util.show_confirm_dialog', array('message' => get_string('deleteattemptcheck', 'quiz'))); } } + + /** + * Generates the contents for the checkbox column header. + * + * It returns the HTML for a master \core\output\checkbox_toggleall component that selects/deselects all quiz attempts. + * + * @return string + */ + public function checkbox_col_header() { + global $OUTPUT; + + // Build the select/deselect all control. + $selectallid = $this->uniqueid . '-selectall-attempts'; + $selectalltext = get_string('selectall', 'quiz'); + $deselectalltext = get_string('selectnone', 'quiz'); + $mastercheckbox = new \core\output\checkbox_toggleall($this->togglegroup, true, [ + 'id' => $selectallid, + 'name' => $selectallid, + 'value' => 1, + 'label' => $selectalltext, + 'labelclasses' => 'accesshide', + 'selectall' => $selectalltext, + 'deselectall' => $deselectalltext, + ]); + + return $OUTPUT->render($mastercheckbox); + } } diff --git a/mod/quiz/report/overview/overview_table.php b/mod/quiz/report/overview/overview_table.php index c39f1911132..936d36fc992 100644 --- a/mod/quiz/report/overview/overview_table.php +++ b/mod/quiz/report/overview/overview_table.php @@ -213,8 +213,17 @@ class quiz_overview_table extends quiz_attempts_report_table { protected function submit_buttons() { if (has_capability('mod/quiz:regrade', $this->context)) { - echo ''; + $regradebuttonparams = [ + 'type' => 'submit', + 'class' => 'btn btn-secondary mr-1', + 'name' => 'regrade', + 'value' => get_string('regradeselected', 'quiz_overview'), + 'data-action' => 'toggle', + 'data-togglegroup' => $this->togglegroup, + 'data-toggle' => 'action', + 'disabled' => true + ]; + echo html_writer::empty_tag('input', $regradebuttonparams); } parent::submit_buttons(); } diff --git a/mod/quiz/report/overview/report.php b/mod/quiz/report/overview/report.php index e95eac7f448..7627fbeaa8f 100644 --- a/mod/quiz/report/overview/report.php +++ b/mod/quiz/report/overview/report.php @@ -173,7 +173,7 @@ class quiz_overview_report extends quiz_attempts_report { if (!$table->is_downloading() && $options->checkboxcolumn) { $columns[] = 'checkbox'; - $headers[] = null; + $headers[] = $table->checkbox_col_header(); } $this->add_user_columns($table, $columns, $headers); diff --git a/mod/quiz/report/responses/report.php b/mod/quiz/report/responses/report.php index 693029eeb6e..38ee7768659 100644 --- a/mod/quiz/report/responses/report.php +++ b/mod/quiz/report/responses/report.php @@ -142,7 +142,7 @@ class quiz_responses_report extends quiz_attempts_report { if (!$table->is_downloading() && $options->checkboxcolumn) { $columns[] = 'checkbox'; - $headers[] = null; + $headers[] = $table->checkbox_col_header(); } $this->add_user_columns($table, $columns, $headers); diff --git a/mod/quiz/styles.css b/mod/quiz/styles.css index e9570cfcf44..eae1b2878b6 100644 --- a/mod/quiz/styles.css +++ b/mod/quiz/styles.css @@ -1137,12 +1137,8 @@ table#categoryquestions { /* Bulk edit actions */ -#page-mod-quiz-edit .selectmultiplecommandbuttons { - margin: 0.6em 0.4em; -} - #page-mod-quiz-edit .btn-group.selectmultiplecommand, -#page-mod-quiz-edit .btn-group.selectmultiplecommandbuttons, +#page-mod-quiz-edit .selectmultiplecommandbuttons, #page-mod-quiz-edit .select-multiple-checkbox { display: none; } @@ -1150,21 +1146,7 @@ table#categoryquestions { #page-mod-quiz-edit.select-multiple .selectmultiplecommand, #page-mod-quiz-edit.select-multiple .selectmultiplecommandbuttons, #page-mod-quiz-edit.select-multiple .select-multiple-checkbox { - display: inherit; -} - -#page-mod-quiz-edit.select-multiple .selectmultiplecommandbuttons .separator { - position: relative; - float: left; - padding: .5rem 0; -} - -#page-mod-quiz-edit #questionselectall { - padding-right: .1rem; -} - -#page-mod-quiz-edit #questiondeselectall { - padding-left: .1rem; + display: inline-block; } #page-mod-quiz-edit.select-multiple input.select-multiple-checkbox[type="checkbox"] { diff --git a/mod/quiz/tests/behat/editing_remove_multiple_questions.feature b/mod/quiz/tests/behat/editing_remove_multiple_questions.feature index 069ad84995d..9d9a220cea6 100644 --- a/mod/quiz/tests/behat/editing_remove_multiple_questions.feature +++ b/mod/quiz/tests/behat/editing_remove_multiple_questions.feature @@ -131,7 +131,7 @@ Feature: Edit quiz page - remove multiple questions # Delete all questions in page. Page contains multiple questions When I click on "Select multiple items" "button" - Then I click on "Select all" "link" + Then I press "Select all" And I click on "Delete selected" "button" And I click on "Yes" "button" in the "Confirm" "dialogue" @@ -162,10 +162,10 @@ Feature: Edit quiz page - remove multiple questions # Delete last question in last page. Page contains multiple questions When I click on "Select multiple items" "button" - And I click on "Select all" "link" + And I press "Select all" Then the field "selectquestion-3" matches value "1" - When I click on "Deselect all" "link" + When I press "Deselect all" Then the field "selectquestion-3" matches value "0" @javascript diff --git a/mod/quiz/yui/build/moodle-mod_quiz-toolboxes/moodle-mod_quiz-toolboxes-debug.js b/mod/quiz/yui/build/moodle-mod_quiz-toolboxes/moodle-mod_quiz-toolboxes-debug.js index ef021af6bb0..5175facd333 100644 --- a/mod/quiz/yui/build/moodle-mod_quiz-toolboxes/moodle-mod_quiz-toolboxes-debug.js +++ b/mod/quiz/yui/build/moodle-mod_quiz-toolboxes/moodle-mod_quiz-toolboxes-debug.js @@ -47,7 +47,6 @@ var CSS = { CONTENTAFTERLINK: 'div.contentafterlink', CONTENTWITHOUTLINK: 'div.contentwithoutlink', DELETESECTIONICON: 'a.editing_delete .icon', - DESELECTALL: '#questiondeselectall', EDITMAXMARK: 'a.editing_maxmark', EDITSECTION: 'a.editing_section', EDITSECTIONICON: 'a.editing_section .icon', @@ -322,28 +321,8 @@ Y.extend(RESOURCETOOLBOX, TOOLBOX, { Y.one('body').removeClass(CSS.SELECTMULTIPLE); }); - // Click select all link to check all the checkboxes. - Y.one(SELECTOR.SELECTALL).on('click', function(e) { - e.preventDefault(); - Y.all(SELECTOR.SELECTMULTIPLECHECKBOX).set('checked', 'checked'); - }); - - // Click deselect all link to show the select all checkboxes. - Y.one(SELECTOR.DESELECTALL).on('click', function(e) { - e.preventDefault(); - Y.all(SELECTOR.SELECTMULTIPLECHECKBOX).set('checked', ''); - }); - - // Disable delete multiple button by default. - Y.one(SELECTOR.SELECTMULTIPLEDELETEBUTTON).setAttribute('disabled', 'disabled'); - // Assign the delete method to the delete multiple button. Y.delegate('click', this.delete_multiple_action, BODY, SELECTOR.SELECTMULTIPLEDELETEBUTTON, this); - - // Enable the delete all button only when at least one slot is selected. - Y.delegate('click', this.toggle_select_all_buttons_enabled, BODY, SELECTOR.SELECTMULTIPLECHECKBOX, this); - Y.delegate('click', this.toggle_select_all_buttons_enabled, BODY, SELECTOR.SELECTALL, this); - Y.delegate('click', this.toggle_select_all_buttons_enabled, BODY, SELECTOR.DESELECTALL, this); }, /** @@ -416,22 +395,6 @@ Y.extend(RESOURCETOOLBOX, TOOLBOX, { return null; }, - /** - * If a select multiple checkbox is checked enable the buttons in the select multiple - * toolbar otherwise disable it. - * - * @method toggle_select_all_buttons_enabled - */ - toggle_select_all_buttons_enabled: function() { - var checked = Y.all(SELECTOR.SELECTMULTIPLECHECKBOX + ':checked'); - var deletebutton = Y.one(SELECTOR.SELECTMULTIPLEDELETEBUTTON); - if (checked && !checked.isEmpty()) { - deletebutton.removeAttribute('disabled'); - } else { - deletebutton.setAttribute('disabled', 'disabled'); - } - }, - /** * Deletes the given activity or resource after confirmation. * diff --git a/mod/quiz/yui/build/moodle-mod_quiz-toolboxes/moodle-mod_quiz-toolboxes-min.js b/mod/quiz/yui/build/moodle-mod_quiz-toolboxes/moodle-mod_quiz-toolboxes-min.js index 6b1df8bfc15..0fd3fe77b07 100644 --- a/mod/quiz/yui/build/moodle-mod_quiz-toolboxes/moodle-mod_quiz-toolboxes-min.js +++ b/mod/quiz/yui/build/moodle-mod_quiz-toolboxes/moodle-mod_quiz-toolboxes-min.js @@ -1,3 +1,3 @@ -YUI.add("moodle-mod_quiz-toolboxes",function(e,t){var n={ACTIVITYINSTANCE:"activityinstance",AVAILABILITYINFODIV:"div.availabilityinfo",CONTENTWITHOUTLINK:"contentwithoutlink",CONDITIONALHIDDEN:"conditionalhidden",DIMCLASS:"dimmed",DIMMEDTEXT:"dimmed_text",EDITINSTRUCTIONS:"editinstructions",EDITINGMAXMARK:"editor_displayed",HIDE:"hide",JOIN:"page_join",MODINDENTCOUNT:"mod-indent-",MODINDENTHUGE:"mod-indent-huge",PAGE:"page",SECTIONHIDDENCLASS:"hidden",SECTIONIDPREFIX:"section-",SELECTMULTIPLE:"select-multiple",SLOT:"slot",SHOW:"editing_show",TITLEEDITOR:"titleeditor"},r={ACTIONAREA:".actions",ACTIONLINKTEXT:".actionlinktext",ACTIVITYACTION:"a.cm-edit-action[data-action], a.editing_maxmark, a.editing_section, input.shuffle_questions",ACTIVITYFORM:"span.instancemaxmarkcontainer form",ACTIVITYINSTANCE:"."+n.ACTIVITYINSTANCE,SECTIONINSTANCE:".sectioninstance",ACTIVITYLI:"li.activity, li.section",ACTIVITYMAXMARK:"input[name=maxmark]",COMMANDSPAN:".commands",CONTENTAFTERLINK:"div.contentafterlink",CONTENTWITHOUTLINK:"div.contentwithoutlink",DELETESECTIONICON:"a.editing_delete .icon",DESELECTALL:"#questiondeselectall",EDITMAXMARK:"a.editing_maxmark",EDITSECTION:"a.editing_section",EDITSECTIONICON:"a.editing_section .icon",EDITSHUFFLEQUESTIONSACTION:"input.cm-edit-action[data-action]",EDITSHUFFLEAREA:".instanceshufflequestions .shuffle-progress",HIDE:"a.editing_hide",HIGHLIGHT:"a.editing_highlight",INSTANCENAME:"span.instancename",INSTANCEMAXMARK:"span.instancemaxmark",INSTANCESECTION:"span.instancesection",INSTANCESECTIONAREA:"div.section-heading",MODINDENTDIV:".mod-indent",MODINDENTOUTER:".mod-indent-outer",NUMQUESTIONS:".numberofquestions",PAGECONTENT:"div#page-content",PAGELI:"li.page",SECTIONLI:"li.section",SECTIONUL:"ul.section",SECTIONFORM:".instancesectioncontainer form",SECTIONINPUT:"input[name=section]",SELECTMULTIPLEBUTTON:"#selectmultiplecommand",SELECTMULTIPLECANCELBUTTON:"#selectmultiplecancelcommand",SELECTMULTIPLECHECKBOX:".select-multiple-checkbox",SELECTMULTIPLEDELETEBUTTON:"#selectmultipledeletecommand",SELECTALL:"#questionselectall",SHOW:"a."+n.SHOW,SLOTLI:"li.slot",SUMMARKS:".mod_quiz_summarks"},i=e.one(document.body);M.mod_quiz=M.mod_quiz||{};var s=function(){s.superclass.constructor.apply(this,arguments)};e.extend(s,e.Base,{send_request:function(t,n,i,s){t||(t={});var o=this.get("config").pageparams,u;for(u in o)t[u]=o[u];t.sesskey=M.cfg.sesskey,t.courseid=this.get("courseid"),t.quizid=this.get("quizid");var a=M.cfg.wwwroot+this.get("ajaxurl"),f=[],l={method:"POST",data:t,on:{success:function(t,s){try{f=e.JSON.parse(s.responseText),f.error&&new M.core.ajaxException(f)}catch(o){}f.hasOwnProperty("newsummarks")&&e.one(r.SUMMARKS).setHTML(f.newsummarks),f.hasOwnProperty("newnumquestions")&&e.one(r.NUMQUESTIONS).setHTML(M.util.get_string("numquestionsx","quiz",f.newnumquestions)),i&&e.bind(i,this,f)(),n&&window.setTimeout(function(){n.hide()},400)},failure:function(e,t){n&&n.hide(),new M.core.ajaxException(t)}},context:this};if(s)for(u in s)l[u]=s[u];return n&&n.show(),e.io(a,l),this}},{NAME:"mod_quiz-toolbox",ATTRS:{courseid:{value:0},quizid:{value:0},ajaxurl:{value:null},config:{value:{}}}});var o=function(){o.superclass.constructor.apply(this,arguments)};e.extend(o,s,{editmaxmarkevents:[],NODE_PAGE:1,NODE_SLOT:2,NODE_JOIN:3,initializer:function(){M.mod_quiz.quizbase.register_module(this),e.delegate("click",this.handle_data_action,i,r.ACTIVITYACTION,this),e.delegate("click",this.handle_data_action,i,r.DEPENDENCY_LINK,this),this.initialise_select_multiple()},initialise_select_multiple:function(){e.one(r.SELECTMULTIPLEBUTTON).on("click",function(t){t.preventDefault(),e.one("body").addClass(n.SELECTMULTIPLE)}),e.one(r.SELECTMULTIPLECANCELBUTTON).on("click",function(t){t.preventDefault(),e.one("body").removeClass(n.SELECTMULTIPLE)}),e.one(r.SELECTALL).on("click",function(t){t.preventDefault(),e.all(r.SELECTMULTIPLECHECKBOX).set("checked","checked")}),e.one(r.DESELECTALL).on("click",function(t){t.preventDefault(),e.all(r.SELECTMULTIPLECHECKBOX).set("checked","")}),e.one(r.SELECTMULTIPLEDELETEBUTTON).setAttribute("disabled","disabled"),e.delegate("click",this.delete_multiple_action,i,r.SELECTMULTIPLEDELETEBUTTON,this),e.delegate("click",this.toggle_select_all_buttons_enabled,i,r.SELECTMULTIPLECHECKBOX,this),e.delegate("click",this.toggle_select_all_buttons_enabled,i,r.SELECTALL,this),e.delegate("click",this.toggle_select_all_buttons_enabled,i,r.DESELECTALL,this)},handle_data_action:function(e){var t=e.target;t.test("a")||(t=t.ancestor(r.ACTIVITYACTION));var n=t.getData("action"),i=t.ancestor(r.ACTIVITYLI);if(!t.test("a")||!n||!i)return;switch(n){case"editmaxmark":this.edit_maxmark(e,t,i,n);break;case"delete":this.delete_with_confirmation(e,t,i,n);break;case"addpagebreak":case"removepagebreak":this.update_page_break(e,t,i,n);break;case"adddependency":case"removedependency":this.update_dependency(e,t,i,n);break;default:}},add_spinner:function(t){var n=t.one(r.ACTIONAREA);return n?M.util.add_spinner(e,n):null},toggle_select_all_buttons_enabled:function(){var t=e.all(r.SELECTMULTIPLECHECKBOX+":checked"),n=e.one(r.SELECTMULTIPLEDELETEBUTTON);t&&!t.isEmpty()?n.removeAttribute("disabled"):n.setAttribute("disabled","disabled")},delete_with_confirmation:function(t,n,r){t.preventDefault();var i=r,s="",o=M.util.get_string("pluginname","qtype_"+i.getAttribute("class").match(/qtype_([^\s]*)/)[1]);s=M.util.get_string("confirmremovequestion","quiz",o);var u=new M.core.confirm({question:s,modal:!0});u.on("complete-yes",function(){var n=this.add_spinner(i),r={"class":"resource",action:"DELETE",id:e.Moodle.mod_quiz.util.slot.getId(i)};this.send_request(r,n,function(n){n.deleted&&(e.Moodle.mod_quiz.util.slot.remove(i),this.reorganise_edit_page(),M.core.actionmenu&&M.core.actionmenu.instance&&M.core.actionmenu.instance.hideMenu(t))})},this)},find_sections_that_would_become_empty:function(){var t,n=e.all(r.SECTIONLI);return n.size()>1&&n.some(function(e){var n=e.one(r.INSTANCESECTION).getContent(),i=e -.all(r.SELECTMULTIPLECHECKBOX+":checked"),s=e.all(r.SELECTMULTIPLECHECKBOX+":not(:checked)");return!i.isEmpty()&&s.isEmpty()&&(t=n),t}),t},delete_multiple_action:function(e){var t=this.find_sections_that_would_become_empty();if(typeof t!="undefined"){var n=new M.core.alert({title:M.util.get_string("cannotremoveslots","quiz"),message:M.util.get_string("cannotremoveallsectionslots","quiz",t)});n.show()}else this.delete_multiple_with_confirmation(e)},delete_multiple_with_confirmation:function(t){t.preventDefault();var i="",s=[];e.all(r.SELECTMULTIPLECHECKBOX+":checked").each(function(t){var n=e.Moodle.mod_quiz.util.slot.getSlotFromComponent(t);i+=i===""?"":",",i+=e.Moodle.mod_quiz.util.slot.getId(n),s.push(n)});var o=e.one("div.mod-quiz-edit-content");if(!s||!s.length)return;var u=new M.core.confirm({question:M.util.get_string("areyousureremoveselected","quiz"),modal:!0});u.on("complete-yes",function(){var t=this.add_spinner(o),s={"class":"resource",field:"deletemultiple",ids:i};this.send_request(s,t,function(t){t.deleted&&(e.all(r.SELECTMULTIPLECHECKBOX+":checked").each(function(t){e.Moodle.mod_quiz.util.slot.remove(t.ancestor("li.activity"))}),this.reorganise_edit_page(),e.one("body").removeClass(n.SELECTMULTIPLE))})},this)},edit_maxmark:function(t,i,s){var o=s.one(r.INSTANCEMAXMARK),u=s.one(r.ACTIVITYINSTANCE),a=o.get("firstChild"),f=a.get("data"),l=f,c,h=o,p={"class":"resource",field:"getmaxmark",id:e.Moodle.mod_quiz.util.slot.getId(s)};t.preventDefault(),this.send_request(p,null,function(r){M.core.actionmenu&&M.core.actionmenu.instance&&M.core.actionmenu.instance.hideMenu(t),r.instancemaxmark&&(l=r.instancemaxmark);var i=e.Node.create('
'),o=e.Node.create('').set("innerHTML",M.util.get_string("edittitleinstructions","moodle")),a=e.Node.create('').setAttrs({value:l,autocomplete:"off","aria-describedby":"id_editinstructions",maxLength:"12",size:parseInt(this.get("config").questiondecimalpoints,10)+2});i.appendChild(a),i.setData("anchor",h),u.insert(o,"before"),h.replace(i),s.addClass(n.EDITINGMAXMARK),a.focus().select(),c=a.on("blur",this.edit_maxmark_cancel,this,s,!1),this.editmaxmarkevents.push(c),c=a.on("key",this.edit_maxmark_cancel,"esc",this,s,!0),this.editmaxmarkevents.push(c),c=i.on("submit",this.edit_maxmark_submit,this,s,f),this.editmaxmarkevents.push(c)})},edit_maxmark_submit:function(t,n,i){t.preventDefault();var s=e.Lang.trim(n.one(r.ACTIVITYFORM+" "+r.ACTIVITYMAXMARK).get("value")),o=this.add_spinner(n);this.edit_maxmark_clear(n),n.one(r.INSTANCEMAXMARK).setContent(s);if(s!==null&&s!==""&&s!==i){var u={"class":"resource",field:"updatemaxmark",maxmark:s,id:e.Moodle.mod_quiz.util.slot.getId(n)};this.send_request(u,o,function(e){e.instancemaxmark&&n.one(r.INSTANCEMAXMARK).setContent(e.instancemaxmark)})}},edit_maxmark_cancel:function(e,t,n){n&&e.preventDefault(),this.edit_maxmark_clear(t)},edit_maxmark_clear:function(t){(new e.EventHandle(this.editmaxmarkevents)).detach();var i=t.one(r.ACTIVITYFORM),s=t.one("#id_editinstructions");i&&i.replace(i.getData("anchor")),s&&s.remove(),t.removeClass(n.EDITINGMAXMARK),e.later(100,this,function(){t.one(r.EDITMAXMARK).focus()}),e.one("input[name=maxmark")||e.one("body").append('')},update_page_break:function(t,n,r,i){t.preventDefault();var s=r.next("li.activity.slot"),o=this.add_spinner(s),u=i==="removepagebreak"?1:2,a={"class":"resource",field:"updatepagebreak",id:e.Moodle.mod_quiz.util.slot.getId(s),value:u};return this.send_request(a,o,function(t){if(t.slots){if(i==="addpagebreak")e.Moodle.mod_quiz.util.page.add(r);else{var n=r.next(e.Moodle.mod_quiz.util.page.SELECTORS.PAGE);e.Moodle.mod_quiz.util.page.remove(n,!0)}this.reorganise_edit_page()}}),this},update_dependency:function(t,n,r,i){t.preventDefault();var s=this.add_spinner(r),o={"class":"resource",field:"updatedependency",id:e.Moodle.mod_quiz.util.slot.getId(r),value:i==="adddependency"?1:0};return this.send_request(o,s,function(t){t.hasOwnProperty("requireprevious")&&e.Moodle.mod_quiz.util.slot.updateDependencyIcon(r,t.requireprevious)}),this},reorganise_edit_page:function(){e.Moodle.mod_quiz.util.slot.reorderSlots(),e.Moodle.mod_quiz.util.slot.reorderPageBreaks(),e.Moodle.mod_quiz.util.page.reorderPages(),e.Moodle.mod_quiz.util.slot.updateOneSlotSections(),e.Moodle.mod_quiz.util.slot.updateAllDependencyIcons()},NAME:"mod_quiz-resource-toolbox",ATTRS:{courseid:{value:0},quizid:{value:0}}}),M.mod_quiz.resource_toolbox=null,M.mod_quiz.init_resource_toolbox=function(e){return M.mod_quiz.resource_toolbox=new o(e),M.mod_quiz.resource_toolbox};var u=function(){u.superclass.constructor.apply(this,arguments)};e.extend(u,s,{editsectionevents:[],initializer:function(){M.mod_quiz.quizbase.register_module(this),i.delegate("key",this.handle_data_action,"down:enter",r.ACTIVITYACTION,this),e.delegate("click",this.handle_data_action,i,r.ACTIVITYACTION,this),e.delegate("change",this.handle_data_action,i,r.EDITSHUFFLEQUESTIONSACTION,this)},handle_data_action:function(e){var t=e.target;!t.test("a")&&!t.test("input[data-action]")&&(t=t.ancestor(r.ACTIVITYACTION));var n=t.getData("action"),i=t.ancestor(r.ACTIVITYLI);if(!t.test("a")&&!t.test("input[data-action]")||!n||!i)return;switch(n){case"edit_section_title":this.edit_section_title(e,t,i,n);break;case"shuffle_questions":this.edit_shuffle_questions(e,t,i,n);break;case"deletesection":this.delete_section_with_confirmation(e,t,i,n);break;default:}},delete_section_with_confirmation:function(t,n,i){t.preventDefault();var s=new M.core.confirm({question:M.util.get_string("confirmremovesectionheading","quiz",i.get("aria-label")),modal:!0});s.on("complete-yes",function(){var t=M.util.add_spinner(e,i.one(r.ACTIONAREA)),n={"class":"section",action:"DELETE",id:i.get("id").replace("section-","")};this.send_request(n,t,function(e){e.deleted&&window.location.reload(!0 -)})},this)},edit_section_title:function(t,i,s){var o=s.get("id").replace("section-",""),u=s.one(r.INSTANCESECTION),a,f=u,l={"class":"section",field:"getsectiontitle",id:o};t.preventDefault(),this.send_request(l,null,function(t){var r=t.instancesection,i=e.Node.create(''),o=e.Node.create('').set("innerHTML",M.util.get_string("edittitleinstructions","moodle")),l=e.Node.create('').setAttrs({value:r,autocomplete:"off","aria-describedby":"id_editinstructions",maxLength:"255"});i.appendChild(l),i.setData("anchor",f),u.insert(o,"before"),f.replace(i),l.focus().select(),a=l.on("blur",this.edit_section_title_cancel,this,s,!1),this.editsectionevents.push(a),a=l.on("key",this.edit_section_title_cancel,"esc",this,s,!0),this.editsectionevents.push(a),a=i.on("submit",this.edit_section_title_submit,this,s,r),this.editsectionevents.push(a)})},edit_section_title_submit:function(t,n,i){t.preventDefault();var s=e.Lang.trim(n.one(r.SECTIONFORM+" "+r.SECTIONINPUT).get("value")),o=M.util.add_spinner(e,n.one(r.INSTANCESECTIONAREA));this.edit_section_title_clear(n);if(s!==null&&s!==i){n.one(r.INSTANCESECTION).setContent(s);var u={"class":"section",field:"updatesectiontitle",newheading:s,id:n.get("id").replace("section-","")};this.send_request(u,o,function(e){if(e){n.one(r.INSTANCESECTION).setContent(e.instancesection),n.one(r.EDITSECTIONICON).set("title",M.util.get_string("sectionheadingedit","quiz",e.instancesection)),n.one(r.EDITSECTIONICON).set("alt",M.util.get_string("sectionheadingedit","quiz",e.instancesection));var t=n.one(r.DELETESECTIONICON);t&&(t.set("title",M.util.get_string("sectionheadingremove","quiz",e.instancesection)),t.set("alt",M.util.get_string("sectionheadingremove","quiz",e.instancesection)))}})}},edit_section_title_cancel:function(e,t,n){n&&e.preventDefault(),this.edit_section_title_clear(t)},edit_section_title_clear:function(t){(new e.EventHandle(this.editsectionevents)).detach();var n=t.one(r.SECTIONFORM),i=t.one("#id_editinstructions");n&&n.replace(n.getData("anchor")),i&&i.remove(),e.later(100,this,function(){t.one(r.EDITSECTION).focus()}),e.one("input[name=section]")||e.one("body").append('')},edit_shuffle_questions:function(t,n,i){var s;i.one(r.EDITSHUFFLEQUESTIONSACTION).get("checked")?s=1:s=0;var o={"class":"section",field:"updateshufflequestions",id:i.get("id").replace("section-",""),newshuffle:s};t.preventDefault();var u=M.util.add_spinner(e,i.one(r.EDITSHUFFLEAREA));this.send_request(o,u)}},{NAME:"mod_quiz-section-toolbox",ATTRS:{courseid:{value:0},quizid:{value:0}}}),M.mod_quiz.init_section_toolbox=function(e){return new u(e)}},"@VERSION@",{requires:["base","node","event","event-key","io","moodle-mod_quiz-quizbase","moodle-mod_quiz-util-slot","moodle-core-notification-ajaxexception"]}); +YUI.add("moodle-mod_quiz-toolboxes",function(e,t){var n={ACTIVITYINSTANCE:"activityinstance",AVAILABILITYINFODIV:"div.availabilityinfo",CONTENTWITHOUTLINK:"contentwithoutlink",CONDITIONALHIDDEN:"conditionalhidden",DIMCLASS:"dimmed",DIMMEDTEXT:"dimmed_text",EDITINSTRUCTIONS:"editinstructions",EDITINGMAXMARK:"editor_displayed",HIDE:"hide",JOIN:"page_join",MODINDENTCOUNT:"mod-indent-",MODINDENTHUGE:"mod-indent-huge",PAGE:"page",SECTIONHIDDENCLASS:"hidden",SECTIONIDPREFIX:"section-",SELECTMULTIPLE:"select-multiple",SLOT:"slot",SHOW:"editing_show",TITLEEDITOR:"titleeditor"},r={ACTIONAREA:".actions",ACTIONLINKTEXT:".actionlinktext",ACTIVITYACTION:"a.cm-edit-action[data-action], a.editing_maxmark, a.editing_section, input.shuffle_questions",ACTIVITYFORM:"span.instancemaxmarkcontainer form",ACTIVITYINSTANCE:"."+n.ACTIVITYINSTANCE,SECTIONINSTANCE:".sectioninstance",ACTIVITYLI:"li.activity, li.section",ACTIVITYMAXMARK:"input[name=maxmark]",COMMANDSPAN:".commands",CONTENTAFTERLINK:"div.contentafterlink",CONTENTWITHOUTLINK:"div.contentwithoutlink",DELETESECTIONICON:"a.editing_delete .icon",EDITMAXMARK:"a.editing_maxmark",EDITSECTION:"a.editing_section",EDITSECTIONICON:"a.editing_section .icon",EDITSHUFFLEQUESTIONSACTION:"input.cm-edit-action[data-action]",EDITSHUFFLEAREA:".instanceshufflequestions .shuffle-progress",HIDE:"a.editing_hide",HIGHLIGHT:"a.editing_highlight",INSTANCENAME:"span.instancename",INSTANCEMAXMARK:"span.instancemaxmark",INSTANCESECTION:"span.instancesection",INSTANCESECTIONAREA:"div.section-heading",MODINDENTDIV:".mod-indent",MODINDENTOUTER:".mod-indent-outer",NUMQUESTIONS:".numberofquestions",PAGECONTENT:"div#page-content",PAGELI:"li.page",SECTIONLI:"li.section",SECTIONUL:"ul.section",SECTIONFORM:".instancesectioncontainer form",SECTIONINPUT:"input[name=section]",SELECTMULTIPLEBUTTON:"#selectmultiplecommand",SELECTMULTIPLECANCELBUTTON:"#selectmultiplecancelcommand",SELECTMULTIPLECHECKBOX:".select-multiple-checkbox",SELECTMULTIPLEDELETEBUTTON:"#selectmultipledeletecommand",SELECTALL:"#questionselectall",SHOW:"a."+n.SHOW,SLOTLI:"li.slot",SUMMARKS:".mod_quiz_summarks"},i=e.one(document.body);M.mod_quiz=M.mod_quiz||{};var s=function(){s.superclass.constructor.apply(this,arguments)};e.extend(s,e.Base,{send_request:function(t,n,i,s){t||(t={});var o=this.get("config").pageparams,u;for(u in o)t[u]=o[u];t.sesskey=M.cfg.sesskey,t.courseid=this.get("courseid"),t.quizid=this.get("quizid");var a=M.cfg.wwwroot+this.get("ajaxurl"),f=[],l={method:"POST",data:t,on:{success:function(t,s){try{f=e.JSON.parse(s.responseText),f.error&&new M.core.ajaxException(f)}catch(o){}f.hasOwnProperty("newsummarks")&&e.one(r.SUMMARKS).setHTML(f.newsummarks),f.hasOwnProperty("newnumquestions")&&e.one(r.NUMQUESTIONS).setHTML(M.util.get_string("numquestionsx","quiz",f.newnumquestions)),i&&e.bind(i,this,f)(),n&&window.setTimeout(function(){n.hide()},400)},failure:function(e,t){n&&n.hide(),new M.core.ajaxException(t)}},context:this};if(s)for(u in s)l[u]=s[u];return n&&n.show(),e.io(a,l),this}},{NAME:"mod_quiz-toolbox",ATTRS:{courseid:{value:0},quizid:{value:0},ajaxurl:{value:null},config:{value:{}}}});var o=function(){o.superclass.constructor.apply(this,arguments)};e.extend(o,s,{editmaxmarkevents:[],NODE_PAGE:1,NODE_SLOT:2,NODE_JOIN:3,initializer:function(){M.mod_quiz.quizbase.register_module(this),e.delegate("click",this.handle_data_action,i,r.ACTIVITYACTION,this),e.delegate("click",this.handle_data_action,i,r.DEPENDENCY_LINK,this),this.initialise_select_multiple()},initialise_select_multiple:function(){e.one(r.SELECTMULTIPLEBUTTON).on("click",function(t){t.preventDefault(),e.one("body").addClass(n.SELECTMULTIPLE)}),e.one(r.SELECTMULTIPLECANCELBUTTON).on("click",function(t){t.preventDefault(),e.one("body").removeClass(n.SELECTMULTIPLE)}),e.delegate("click",this.delete_multiple_action,i,r.SELECTMULTIPLEDELETEBUTTON,this)},handle_data_action:function(e){var t=e.target;t.test("a")||(t=t.ancestor(r.ACTIVITYACTION));var n=t.getData("action"),i=t.ancestor(r.ACTIVITYLI);if(!t.test("a")||!n||!i)return;switch(n){case"editmaxmark":this.edit_maxmark(e,t,i,n);break;case"delete":this.delete_with_confirmation(e,t,i,n);break;case"addpagebreak":case"removepagebreak":this.update_page_break(e,t,i,n);break;case"adddependency":case"removedependency":this.update_dependency(e,t,i,n);break;default:}},add_spinner:function(t){var n=t.one(r.ACTIONAREA);return n?M.util.add_spinner(e,n):null},delete_with_confirmation:function(t,n,r){t.preventDefault();var i=r,s="",o=M.util.get_string("pluginname","qtype_"+i.getAttribute("class").match(/qtype_([^\s]*)/)[1]);s=M.util.get_string("confirmremovequestion","quiz",o);var u=new M.core.confirm({question:s,modal:!0});u.on("complete-yes",function(){var n=this.add_spinner(i),r={"class":"resource",action:"DELETE",id:e.Moodle.mod_quiz.util.slot.getId(i)};this.send_request(r,n,function(n){n.deleted&&(e.Moodle.mod_quiz.util.slot.remove(i),this.reorganise_edit_page(),M.core.actionmenu&&M.core.actionmenu.instance&&M.core.actionmenu.instance.hideMenu(t))})},this)},find_sections_that_would_become_empty:function(){var t,n=e.all(r.SECTIONLI);return n.size()>1&&n.some(function(e){var n=e.one(r.INSTANCESECTION).getContent(),i=e.all(r.SELECTMULTIPLECHECKBOX+":checked"),s=e.all(r.SELECTMULTIPLECHECKBOX+":not(:checked)");return!i.isEmpty()&&s.isEmpty()&&(t=n),t}),t},delete_multiple_action:function(e){var t=this.find_sections_that_would_become_empty();if(typeof t!="undefined"){var n=new M.core.alert({title:M.util.get_string("cannotremoveslots","quiz"),message:M.util.get_string("cannotremoveallsectionslots","quiz",t)});n.show()}else this.delete_multiple_with_confirmation(e)},delete_multiple_with_confirmation:function(t){t.preventDefault();var i="",s=[];e.all(r.SELECTMULTIPLECHECKBOX+":checked").each(function(t){var n=e.Moodle.mod_quiz.util.slot.getSlotFromComponent(t);i+=i===""?"":",",i+=e.Moodle.mod_quiz.util.slot.getId(n),s.push(n)});var o=e.one("div.mod-quiz-edit-content");if(!s||!s.length)return;var u=new M.core.confirm( +{question:M.util.get_string("areyousureremoveselected","quiz"),modal:!0});u.on("complete-yes",function(){var t=this.add_spinner(o),s={"class":"resource",field:"deletemultiple",ids:i};this.send_request(s,t,function(t){t.deleted&&(e.all(r.SELECTMULTIPLECHECKBOX+":checked").each(function(t){e.Moodle.mod_quiz.util.slot.remove(t.ancestor("li.activity"))}),this.reorganise_edit_page(),e.one("body").removeClass(n.SELECTMULTIPLE))})},this)},edit_maxmark:function(t,i,s){var o=s.one(r.INSTANCEMAXMARK),u=s.one(r.ACTIVITYINSTANCE),a=o.get("firstChild"),f=a.get("data"),l=f,c,h=o,p={"class":"resource",field:"getmaxmark",id:e.Moodle.mod_quiz.util.slot.getId(s)};t.preventDefault(),this.send_request(p,null,function(r){M.core.actionmenu&&M.core.actionmenu.instance&&M.core.actionmenu.instance.hideMenu(t),r.instancemaxmark&&(l=r.instancemaxmark);var i=e.Node.create(''),o=e.Node.create('').set("innerHTML",M.util.get_string("edittitleinstructions","moodle")),a=e.Node.create('').setAttrs({value:l,autocomplete:"off","aria-describedby":"id_editinstructions",maxLength:"12",size:parseInt(this.get("config").questiondecimalpoints,10)+2});i.appendChild(a),i.setData("anchor",h),u.insert(o,"before"),h.replace(i),s.addClass(n.EDITINGMAXMARK),a.focus().select(),c=a.on("blur",this.edit_maxmark_cancel,this,s,!1),this.editmaxmarkevents.push(c),c=a.on("key",this.edit_maxmark_cancel,"esc",this,s,!0),this.editmaxmarkevents.push(c),c=i.on("submit",this.edit_maxmark_submit,this,s,f),this.editmaxmarkevents.push(c)})},edit_maxmark_submit:function(t,n,i){t.preventDefault();var s=e.Lang.trim(n.one(r.ACTIVITYFORM+" "+r.ACTIVITYMAXMARK).get("value")),o=this.add_spinner(n);this.edit_maxmark_clear(n),n.one(r.INSTANCEMAXMARK).setContent(s);if(s!==null&&s!==""&&s!==i){var u={"class":"resource",field:"updatemaxmark",maxmark:s,id:e.Moodle.mod_quiz.util.slot.getId(n)};this.send_request(u,o,function(e){e.instancemaxmark&&n.one(r.INSTANCEMAXMARK).setContent(e.instancemaxmark)})}},edit_maxmark_cancel:function(e,t,n){n&&e.preventDefault(),this.edit_maxmark_clear(t)},edit_maxmark_clear:function(t){(new e.EventHandle(this.editmaxmarkevents)).detach();var i=t.one(r.ACTIVITYFORM),s=t.one("#id_editinstructions");i&&i.replace(i.getData("anchor")),s&&s.remove(),t.removeClass(n.EDITINGMAXMARK),e.later(100,this,function(){t.one(r.EDITMAXMARK).focus()}),e.one("input[name=maxmark")||e.one("body").append('')},update_page_break:function(t,n,r,i){t.preventDefault();var s=r.next("li.activity.slot"),o=this.add_spinner(s),u=i==="removepagebreak"?1:2,a={"class":"resource",field:"updatepagebreak",id:e.Moodle.mod_quiz.util.slot.getId(s),value:u};return this.send_request(a,o,function(t){if(t.slots){if(i==="addpagebreak")e.Moodle.mod_quiz.util.page.add(r);else{var n=r.next(e.Moodle.mod_quiz.util.page.SELECTORS.PAGE);e.Moodle.mod_quiz.util.page.remove(n,!0)}this.reorganise_edit_page()}}),this},update_dependency:function(t,n,r,i){t.preventDefault();var s=this.add_spinner(r),o={"class":"resource",field:"updatedependency",id:e.Moodle.mod_quiz.util.slot.getId(r),value:i==="adddependency"?1:0};return this.send_request(o,s,function(t){t.hasOwnProperty("requireprevious")&&e.Moodle.mod_quiz.util.slot.updateDependencyIcon(r,t.requireprevious)}),this},reorganise_edit_page:function(){e.Moodle.mod_quiz.util.slot.reorderSlots(),e.Moodle.mod_quiz.util.slot.reorderPageBreaks(),e.Moodle.mod_quiz.util.page.reorderPages(),e.Moodle.mod_quiz.util.slot.updateOneSlotSections(),e.Moodle.mod_quiz.util.slot.updateAllDependencyIcons()},NAME:"mod_quiz-resource-toolbox",ATTRS:{courseid:{value:0},quizid:{value:0}}}),M.mod_quiz.resource_toolbox=null,M.mod_quiz.init_resource_toolbox=function(e){return M.mod_quiz.resource_toolbox=new o(e),M.mod_quiz.resource_toolbox};var u=function(){u.superclass.constructor.apply(this,arguments)};e.extend(u,s,{editsectionevents:[],initializer:function(){M.mod_quiz.quizbase.register_module(this),i.delegate("key",this.handle_data_action,"down:enter",r.ACTIVITYACTION,this),e.delegate("click",this.handle_data_action,i,r.ACTIVITYACTION,this),e.delegate("change",this.handle_data_action,i,r.EDITSHUFFLEQUESTIONSACTION,this)},handle_data_action:function(e){var t=e.target;!t.test("a")&&!t.test("input[data-action]")&&(t=t.ancestor(r.ACTIVITYACTION));var n=t.getData("action"),i=t.ancestor(r.ACTIVITYLI);if(!t.test("a")&&!t.test("input[data-action]")||!n||!i)return;switch(n){case"edit_section_title":this.edit_section_title(e,t,i,n);break;case"shuffle_questions":this.edit_shuffle_questions(e,t,i,n);break;case"deletesection":this.delete_section_with_confirmation(e,t,i,n);break;default:}},delete_section_with_confirmation:function(t,n,i){t.preventDefault();var s=new M.core.confirm({question:M.util.get_string("confirmremovesectionheading","quiz",i.get("aria-label")),modal:!0});s.on("complete-yes",function(){var t=M.util.add_spinner(e,i.one(r.ACTIONAREA)),n={"class":"section",action:"DELETE",id:i.get("id").replace("section-","")};this.send_request(n,t,function(e){e.deleted&&window.location.reload(!0)})},this)},edit_section_title:function(t,i,s){var o=s.get("id").replace("section-",""),u=s.one(r.INSTANCESECTION),a,f=u,l={"class":"section",field:"getsectiontitle",id:o};t.preventDefault(),this.send_request(l,null,function(t){var r=t.instancesection,i=e.Node.create(''),o=e.Node.create('').set("innerHTML",M.util.get_string("edittitleinstructions","moodle")),l=e.Node.create('').setAttrs({value:r,autocomplete:"off","aria-describedby":"id_editinstructions",maxLength:"255"});i.appendChild(l),i.setData("anchor",f),u.insert(o,"before"),f.replace(i),l.focus().select(),a=l.on("blur",this.edit_section_title_cancel,this,s,!1),this.editsectionevents.push(a),a=l.on("key",this.edit_section_title_cancel +,"esc",this,s,!0),this.editsectionevents.push(a),a=i.on("submit",this.edit_section_title_submit,this,s,r),this.editsectionevents.push(a)})},edit_section_title_submit:function(t,n,i){t.preventDefault();var s=e.Lang.trim(n.one(r.SECTIONFORM+" "+r.SECTIONINPUT).get("value")),o=M.util.add_spinner(e,n.one(r.INSTANCESECTIONAREA));this.edit_section_title_clear(n);if(s!==null&&s!==i){n.one(r.INSTANCESECTION).setContent(s);var u={"class":"section",field:"updatesectiontitle",newheading:s,id:n.get("id").replace("section-","")};this.send_request(u,o,function(e){if(e){n.one(r.INSTANCESECTION).setContent(e.instancesection),n.one(r.EDITSECTIONICON).set("title",M.util.get_string("sectionheadingedit","quiz",e.instancesection)),n.one(r.EDITSECTIONICON).set("alt",M.util.get_string("sectionheadingedit","quiz",e.instancesection));var t=n.one(r.DELETESECTIONICON);t&&(t.set("title",M.util.get_string("sectionheadingremove","quiz",e.instancesection)),t.set("alt",M.util.get_string("sectionheadingremove","quiz",e.instancesection)))}})}},edit_section_title_cancel:function(e,t,n){n&&e.preventDefault(),this.edit_section_title_clear(t)},edit_section_title_clear:function(t){(new e.EventHandle(this.editsectionevents)).detach();var n=t.one(r.SECTIONFORM),i=t.one("#id_editinstructions");n&&n.replace(n.getData("anchor")),i&&i.remove(),e.later(100,this,function(){t.one(r.EDITSECTION).focus()}),e.one("input[name=section]")||e.one("body").append('')},edit_shuffle_questions:function(t,n,i){var s;i.one(r.EDITSHUFFLEQUESTIONSACTION).get("checked")?s=1:s=0;var o={"class":"section",field:"updateshufflequestions",id:i.get("id").replace("section-",""),newshuffle:s};t.preventDefault();var u=M.util.add_spinner(e,i.one(r.EDITSHUFFLEAREA));this.send_request(o,u)}},{NAME:"mod_quiz-section-toolbox",ATTRS:{courseid:{value:0},quizid:{value:0}}}),M.mod_quiz.init_section_toolbox=function(e){return new u(e)}},"@VERSION@",{requires:["base","node","event","event-key","io","moodle-mod_quiz-quizbase","moodle-mod_quiz-util-slot","moodle-core-notification-ajaxexception"]}); diff --git a/mod/quiz/yui/build/moodle-mod_quiz-toolboxes/moodle-mod_quiz-toolboxes.js b/mod/quiz/yui/build/moodle-mod_quiz-toolboxes/moodle-mod_quiz-toolboxes.js index ef021af6bb0..5175facd333 100644 --- a/mod/quiz/yui/build/moodle-mod_quiz-toolboxes/moodle-mod_quiz-toolboxes.js +++ b/mod/quiz/yui/build/moodle-mod_quiz-toolboxes/moodle-mod_quiz-toolboxes.js @@ -47,7 +47,6 @@ var CSS = { CONTENTAFTERLINK: 'div.contentafterlink', CONTENTWITHOUTLINK: 'div.contentwithoutlink', DELETESECTIONICON: 'a.editing_delete .icon', - DESELECTALL: '#questiondeselectall', EDITMAXMARK: 'a.editing_maxmark', EDITSECTION: 'a.editing_section', EDITSECTIONICON: 'a.editing_section .icon', @@ -322,28 +321,8 @@ Y.extend(RESOURCETOOLBOX, TOOLBOX, { Y.one('body').removeClass(CSS.SELECTMULTIPLE); }); - // Click select all link to check all the checkboxes. - Y.one(SELECTOR.SELECTALL).on('click', function(e) { - e.preventDefault(); - Y.all(SELECTOR.SELECTMULTIPLECHECKBOX).set('checked', 'checked'); - }); - - // Click deselect all link to show the select all checkboxes. - Y.one(SELECTOR.DESELECTALL).on('click', function(e) { - e.preventDefault(); - Y.all(SELECTOR.SELECTMULTIPLECHECKBOX).set('checked', ''); - }); - - // Disable delete multiple button by default. - Y.one(SELECTOR.SELECTMULTIPLEDELETEBUTTON).setAttribute('disabled', 'disabled'); - // Assign the delete method to the delete multiple button. Y.delegate('click', this.delete_multiple_action, BODY, SELECTOR.SELECTMULTIPLEDELETEBUTTON, this); - - // Enable the delete all button only when at least one slot is selected. - Y.delegate('click', this.toggle_select_all_buttons_enabled, BODY, SELECTOR.SELECTMULTIPLECHECKBOX, this); - Y.delegate('click', this.toggle_select_all_buttons_enabled, BODY, SELECTOR.SELECTALL, this); - Y.delegate('click', this.toggle_select_all_buttons_enabled, BODY, SELECTOR.DESELECTALL, this); }, /** @@ -416,22 +395,6 @@ Y.extend(RESOURCETOOLBOX, TOOLBOX, { return null; }, - /** - * If a select multiple checkbox is checked enable the buttons in the select multiple - * toolbar otherwise disable it. - * - * @method toggle_select_all_buttons_enabled - */ - toggle_select_all_buttons_enabled: function() { - var checked = Y.all(SELECTOR.SELECTMULTIPLECHECKBOX + ':checked'); - var deletebutton = Y.one(SELECTOR.SELECTMULTIPLEDELETEBUTTON); - if (checked && !checked.isEmpty()) { - deletebutton.removeAttribute('disabled'); - } else { - deletebutton.setAttribute('disabled', 'disabled'); - } - }, - /** * Deletes the given activity or resource after confirmation. * diff --git a/mod/quiz/yui/src/toolboxes/js/resource.js b/mod/quiz/yui/src/toolboxes/js/resource.js index c2355ad1727..97ed36362a7 100644 --- a/mod/quiz/yui/src/toolboxes/js/resource.js +++ b/mod/quiz/yui/src/toolboxes/js/resource.js @@ -88,28 +88,8 @@ Y.extend(RESOURCETOOLBOX, TOOLBOX, { Y.one('body').removeClass(CSS.SELECTMULTIPLE); }); - // Click select all link to check all the checkboxes. - Y.one(SELECTOR.SELECTALL).on('click', function(e) { - e.preventDefault(); - Y.all(SELECTOR.SELECTMULTIPLECHECKBOX).set('checked', 'checked'); - }); - - // Click deselect all link to show the select all checkboxes. - Y.one(SELECTOR.DESELECTALL).on('click', function(e) { - e.preventDefault(); - Y.all(SELECTOR.SELECTMULTIPLECHECKBOX).set('checked', ''); - }); - - // Disable delete multiple button by default. - Y.one(SELECTOR.SELECTMULTIPLEDELETEBUTTON).setAttribute('disabled', 'disabled'); - // Assign the delete method to the delete multiple button. Y.delegate('click', this.delete_multiple_action, BODY, SELECTOR.SELECTMULTIPLEDELETEBUTTON, this); - - // Enable the delete all button only when at least one slot is selected. - Y.delegate('click', this.toggle_select_all_buttons_enabled, BODY, SELECTOR.SELECTMULTIPLECHECKBOX, this); - Y.delegate('click', this.toggle_select_all_buttons_enabled, BODY, SELECTOR.SELECTALL, this); - Y.delegate('click', this.toggle_select_all_buttons_enabled, BODY, SELECTOR.DESELECTALL, this); }, /** @@ -182,22 +162,6 @@ Y.extend(RESOURCETOOLBOX, TOOLBOX, { return null; }, - /** - * If a select multiple checkbox is checked enable the buttons in the select multiple - * toolbar otherwise disable it. - * - * @method toggle_select_all_buttons_enabled - */ - toggle_select_all_buttons_enabled: function() { - var checked = Y.all(SELECTOR.SELECTMULTIPLECHECKBOX + ':checked'); - var deletebutton = Y.one(SELECTOR.SELECTMULTIPLEDELETEBUTTON); - if (checked && !checked.isEmpty()) { - deletebutton.removeAttribute('disabled'); - } else { - deletebutton.setAttribute('disabled', 'disabled'); - } - }, - /** * Deletes the given activity or resource after confirmation. * diff --git a/mod/quiz/yui/src/toolboxes/js/toolbox.js b/mod/quiz/yui/src/toolboxes/js/toolbox.js index 642b2553774..b621f5bb47c 100644 --- a/mod/quiz/yui/src/toolboxes/js/toolbox.js +++ b/mod/quiz/yui/src/toolboxes/js/toolbox.js @@ -45,7 +45,6 @@ var CSS = { CONTENTAFTERLINK: 'div.contentafterlink', CONTENTWITHOUTLINK: 'div.contentwithoutlink', DELETESECTIONICON: 'a.editing_delete .icon', - DESELECTALL: '#questiondeselectall', EDITMAXMARK: 'a.editing_maxmark', EDITSECTION: 'a.editing_section', EDITSECTIONICON: 'a.editing_section .icon',