From a6c4ddada55a0e56c1ecf0bf4f963c3847cf5fd2 Mon Sep 17 00:00:00 2001 From: Simon Adams Date: Mon, 12 Aug 2024 15:25:41 +0100 Subject: [PATCH] MDL-71378 qbank_bulkmove: refactor for moving to shared question banks --- lib/amd/build/form-autocomplete.min.js | 2 +- lib/amd/build/form-autocomplete.min.js.map | 2 +- lib/amd/src/form-autocomplete.js | 4 +- lib/db/services.php | 6 + question/amd/build/repository.min.js | 11 + question/amd/build/repository.min.js.map | 1 + question/amd/src/repository.js | 47 +++ .../build/modal_question_bank_bulkmove.min.js | 3 + .../modal_question_bank_bulkmove.min.js.map | 1 + .../amd/src/modal_question_bank_bulkmove.js | 333 ++++++++++++++++++ .../bulkmove/classes/bulk_move_action.php | 29 ++ question/bank/bulkmove/classes/helper.php | 14 +- .../bulkmove/classes/output/bulk_move.php | 141 ++++++++ .../bank/bulkmove/classes/output/renderer.php | 4 + .../bank/bulkmove/classes/plugin_feature.php | 12 +- .../bank/bulkmove/lang/en/qbank_bulkmove.php | 5 +- question/bank/bulkmove/lib.php | 40 +++ question/bank/bulkmove/move.php | 110 ------ .../bulkmove/templates/bulk_move.mustache | 133 ++++++- .../templates/bulk_move_footer.mustache | 31 ++ .../bulkmove/tests/behat/bulk_move.feature | 73 +++- question/bank/bulkmove/tests/helper_test.php | 1 + question/bank/bulkmove/version.php | 2 +- .../deletequestion/classes/plugin_feature.php | 9 +- .../tests/question_history_view_test.php | 5 +- question/classes/external.php | 3 + question/classes/external/move_questions.php | 132 +++++++ .../classes/local/bank/bulk_action_base.php | 11 +- .../local/bank/filter_condition_manager.php | 29 ++ .../local/bank/plugin_features_base.php | 3 +- question/classes/local/bank/view.php | 41 +-- question/edit.php | 4 +- 32 files changed, 1067 insertions(+), 175 deletions(-) create mode 100644 question/amd/build/repository.min.js create mode 100644 question/amd/build/repository.min.js.map create mode 100644 question/amd/src/repository.js create mode 100644 question/bank/bulkmove/amd/build/modal_question_bank_bulkmove.min.js create mode 100644 question/bank/bulkmove/amd/build/modal_question_bank_bulkmove.min.js.map create mode 100644 question/bank/bulkmove/amd/src/modal_question_bank_bulkmove.js create mode 100644 question/bank/bulkmove/classes/output/bulk_move.php create mode 100644 question/bank/bulkmove/lib.php delete mode 100644 question/bank/bulkmove/move.php create mode 100644 question/bank/bulkmove/templates/bulk_move_footer.mustache create mode 100644 question/classes/external/move_questions.php diff --git a/lib/amd/build/form-autocomplete.min.js b/lib/amd/build/form-autocomplete.min.js index 8636b9bfdff..7d3d7b497cd 100644 --- a/lib/amd/build/form-autocomplete.min.js +++ b/lib/amd/build/form-autocomplete.min.js @@ -6,6 +6,6 @@ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later * @since 3.0 */ -define("core/form-autocomplete",["jquery","core/log","core/str","core/templates","core/notification","core/loadingicon","core/aria","core_form/changechecker","core/popper2"],(function($,log,str,templates,notification,LoadingIcon,Aria,FormChangeChecker,Popper){var KEYS_DOWN=40,KEYS_ENTER=13,KEYS_SPACE=32,KEYS_ESCAPE=27,KEYS_COMMA=44,KEYS_UP=38,KEYS_LEFT=37,KEYS_RIGHT=39,uniqueId=Date.now(),activateSelection=function(index,state){var selectionElement=$(document.getElementById(state.selectionId));index=wrapListIndex(index,selectionElement.children("[aria-selected=true]").length);var element=$(selectionElement.children("[aria-selected=true]").get(index)),itemId=state.selectionId+"-"+index;return selectionElement.children().attr("data-active-selection",null).attr("id",""),element.attr("data-active-selection",!0).attr("id",itemId),selectionElement.attr("aria-activedescendant",itemId),selectionElement.attr("data-active-value",element.attr("data-value")),$.Deferred().resolve()},updateActiveSelectionFromState=function(state){var activeElement=function(state){var _selectionRegion$attr,selectionRegion=$(document.getElementById(state.selectionId)),activeId=selectionRegion.attr("aria-activedescendant");if(activeId){var activeElement=$(document.getElementById(activeId));if(activeElement.length)return activeElement}var activeValue=null===(_selectionRegion$attr=selectionRegion.attr("data-active-value"))||void 0===_selectionRegion$attr?void 0:_selectionRegion$attr.replace(/"/g,'\\"');return selectionRegion.find('[data-value="'+activeValue+'"]')}(state),activeValue=activeElement.attr("data-value"),selectionRegion=$(document.getElementById(state.selectionId));if(activeValue){var activeIndex=selectionRegion.find("[aria-selected=true]").index(activeElement);if(-1!==activeIndex)return void activateSelection(activeIndex,state)}activateSelection(0,state)},updateSelectionList=function(options,state,originalSelect){var pendingKey="form-autocomplete-updateSelectionList-"+state.inputId;M.util.js_pending(pendingKey);var items=rebuildOptions(originalSelect.children("option:selected"),!1),newSelection=$(document.getElementById(state.selectionId));if(!hasItemListChanged(state,items))return M.util.js_complete(pendingKey),Promise.resolve();state.items=items;var context=$.extend(options,state);return templates.render(options.templates.items,context).then((function(html,js){templates.replaceNodeContents(newSelection,html,js),updateActiveSelectionFromState(state)})).then((function(){return M.util.js_complete(pendingKey)})).catch(notification.exception)},hasItemListChanged=function(state,items){return state.items.length!==items.length||state.items.filter((item=>-1===items.indexOf(item))).length>0},notifyChange=function(originalSelect){FormChangeChecker.markFormChangedFromNode(originalSelect[0]),originalSelect[0].dispatchEvent(new Event("change",{bubbles:!0}))},deselectItem=function(options,state,item,originalSelect){var selectedItemValue=$(item).attr("data-value");return void 0!==originalSelect.find("option").first().attr("value")&&originalSelect.prepend($("