AutorÃa | Ultima modificación | Ver Log |
{"version":3,"file":"bulk_user_actions.min.js","sources":["../src/bulk_user_actions.js"],"sourcesContent":["// This file is part of Moodle - http://moodle.org/\n//\n// Moodle is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// Moodle is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with Moodle. If not, see <http://www.gnu.org/licenses/>.\n\n/**\n * Add bulk actions to the users list report\n *\n * @module core_admin/bulk_user_actions\n * @copyright 2024 Marina Glancy\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\ni
mport * as reportSelectors from 'core_reportbuilder/local/selectors';\nimport * as tableEvents from 'core_table/local/dynamic/events';\nimport * as FormChangeChecker from 'core_form/changechecker';\nimport * as CustomEvents from 'core/custom_interaction_events';\nimport jQuery from 'jquery';\n\nconst Selectors = {\n bulkActionsForm: 'form#user-bulk-action-form',\n userReportWrapper: '[data-region=\"report-user-list-wrapper\"]',\n checkbox: 'input[type=\"checkbox\"][data-togglegroup=\"report-select-all\"][data-toggle=\"slave\"]',\n masterCheckbox: 'input[type=\"checkbox\"][data-togglegroup=\"report-select-all\"][data-toggle=\"master\"]',\n checkedRows: '[data-togglegroup=\"report-select-all\"][data-toggle=\"slave\"]:checked',\n};\n\n/**\n * Initialise module\n */\nexport const init = () => {\n\n const userBulkForm = document.querySelector(Selectors.bulkActionsForm);\n const userReport = userBulkForm?.closest(Selectors.userReportWrapper)?.querySelector(reportSelectors.regions.report);\n
if (!userBulkForm || !userReport) {\n return;\n }\n const actionSelect = userBulkForm.querySelector('select');\n CustomEvents.define(actionSelect, [CustomEvents.events.accessibleChange]);\n\n jQuery(actionSelect).on(CustomEvents.events.accessibleChange, event => {\n if (event.target.value && `${event.target.value}` !== \"0\") {\n const e = new Event('submit', {cancelable: true});\n userBulkForm.dispatchEvent(e);\n if (!e.defaultPrevented) {\n FormChangeChecker.markFormSubmitted(userBulkForm);\n userBulkForm.submit();\n }\n }\n });\n\n // Every time the checkboxes in the report are changed, update the list of users in the form values\n // and enable/disable the action select.\n const updateUserIds = () => {\n const selectedUsers = [...userReport.querySelectorAll(Selectors.checkedRows)];\n const selectedUserIds = selectedUsers.map(check => parseInt(check.value));\n userBu
lkForm.querySelector('[name=\"userids\"]').value = selectedUserIds.join(',');\n\n // Disable the action selector if nothing selected, and reset the current selection.\n actionSelect.disabled = selectedUsers.length === 0;\n if (actionSelect.disabled) {\n actionSelect.value = \"0\";\n }\n\n const selectedUsersNames = selectedUsers.map(check => document.querySelector(`label[for=\"${check.id}\"]`).textContent);\n // Add the user ids and names to the form data attributes so they can be available from the\n // other JS modules that listen to the form submit event.\n userBulkForm.data = {userids: selectedUserIds, usernames: selectedUsersNames};\n };\n\n updateUserIds();\n\n document.addEventListener('change', event => {\n // When checkboxes are checked next to individual users or the master toggle (Select all/none).\n if ((event.target.matches(Selectors.checkbox) || event.target.matches(Selectors.masterCheckbox))\n
&& userReport.contains(event.target)) {\n updateUserIds();\n }\n });\n\n document.addEventListener(tableEvents.tableContentRefreshed, event => {\n // When the report contents is updated (i.e. page is changed, filters applied, etc).\n if (userReport.contains(event.target)) {\n updateUserIds();\n }\n });\n};\n"],"names":["Selectors","userBulkForm","document","querySelector","userReport","closest","_userBulkForm$closest","reportSelectors","regions","report","actionSelect","CustomEvents","define","events","accessibleChange","on","event","target","value","e","Event","cancelable","dispatchEvent","defaultPrevented","FormChangeChecker","markFormSubmitted","submit","updateUserIds","selectedUsers","querySelectorAll","selectedUserIds","map","check","parseInt","join","disabled","length","selectedUsersNames","id","textContent","data","userids","usernames","addEventListener","matches","contains","tableEvents","tableContentRefreshed"],"mappings":";;;;;;;0WA6BMA
,0BACe,6BADfA,4BAEiB,2CAFjBA,mBAGQ,oFAHRA,yBAIc,qFAJdA,sBAKW,oFAMG,qCAEVC,aAAeC,SAASC,cAAcH,2BACtCI,WAAaH,MAAAA,4CAAAA,aAAcI,QAAQL,qEAAtBM,sBAAoDH,cAAcI,gBAAgBC,QAAQC,YACxGR,eAAiBG,wBAGhBM,aAAeT,aAAaE,cAAc,UAChDQ,aAAaC,OAAOF,aAAc,CAACC,aAAaE,OAAOC,uCAEhDJ,cAAcK,GAAGJ,aAAaE,OAAOC,kBAAkBE,WACtDA,MAAMC,OAAOC,OAAqC,MAA5B,UAAGF,MAAMC,OAAOC,OAAiB,OACjDC,EAAI,IAAIC,MAAM,SAAU,CAACC,YAAY,IAC3CpB,aAAaqB,cAAcH,GACtBA,EAAEI,mBACHC,kBAAkBC,kBAAkBxB,cACpCA,aAAayB,oBAOnBC,cAAgB,WACZC,cAAgB,IAAIxB,WAAWyB,iBAAiB7B,wBAChD8B,gBAAkBF,cAAcG,KAAIC,OAASC,SAASD,MAAMd,SAClEjB,aAAaE,cAAc,oBAAoBe,MAAQY,gBAAgBI,KAAK,KAG5ExB,aAAayB,SAAoC,IAAzBP,cAAcQ,OAClC1B,aAAayB,WACbzB,aAAaQ,MAAQ,WAGnBmB,mBAAqBT,cAAcG,KAAIC,OAAS9B,SAASC,mCAA4B6B,MAAMM,UAAQC,cAGzGtC,aAAauC,KAAO,CAACC,QAASX,gBAAiBY,UAAWL,qBAG9DV,gBAEAzB,SAASyC,iBAAiB,UAAU3B,SAE3BA,MAAMC,OAAO2B,QAAQ5C,qBAAuBgB,MAAMC,OAAO2B,QAAQ5C,4BAC3DI,WAAWyC,SAAS7B,MAAMC,SACjCU,mBAIRzB,SAASyC,iBAAiBG,YAAYC,uBAAuB/B,QAErDZ,WAAWyC,SAAS7B,MAAMC,SAC1BU"}