AutorÃa | Ultima modificación | Ver Log |
{"version":3,"file":"requestactions.min.js","sources":["../src/requestactions.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 * Request actions.\n *\n * @module tool_dataprivacy/requestactions\n * @copyright 2018 Jun Pataleta\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\ndefine([\n 'jquery',\n 'co
re/ajax',\n 'core/notification',\n 'core/str',\n 'core/modal_save_cancel',\n 'core/modal_events',\n 'core/templates',\n 'tool_dataprivacy/data_request_modal',\n 'tool_dataprivacy/events',\n 'tool_dataprivacy/selectedcourses'\n], function(\n $, Ajax, Notification, Str, ModalSaveCancel, ModalEvents, Templates, ModalDataRequest, DataPrivacyEvents, SelectedCourses\n) {\n\n /**\n * List of action selectors.\n *\n * @type {{APPROVE_REQUEST: string}}\n * @type {{DENY_REQUEST: string}}\n * @type {{VIEW_REQUEST: string}}\n * @type {{MARK_COMPLETE: string}}\n * @type {{CHANGE_BULK_ACTION: string}}\n * @type {{CONFIRM_BULK_ACTION: string}}\n * @type {{SELECT_ALL: string}}\n */\n var ACTIONS = {\n APPROVE_REQUEST: '[data-action=\"approve\"]',\n DENY_REQUEST: '[data-action=\"deny\"]',\n VIEW_REQUEST: '[data-action=\"view\"]',\n MARK_COMPLETE: '[data-action=\"complete\"]',\n CHANGE_BULK_ACTION: '[id=\"bulk-action\"]
',\n CONFIRM_BULK_ACTION: '[id=\"confirm-bulk-action\"]',\n SELECT_ALL: '[data-action=\"selectall\"]',\n APPROVE_REQUEST_SELECT_COURSE: '[data-action=\"approve-selected-courses\"]',\n };\n\n /**\n * List of available bulk actions.\n *\n * @type {{APPROVE: number}}\n * @type {{DENY: number}}\n */\n var BULK_ACTIONS = {\n APPROVE: 1,\n DENY: 2\n };\n\n /**\n * List of selectors.\n *\n * @type {{SELECT_REQUEST: string}}\n */\n var SELECTORS = {\n SELECT_REQUEST: '.selectrequests'\n };\n\n /**\n * RequestActions class.\n */\n var RequestActions = function() {\n this.registerEvents();\n };\n\n /**\n * Register event listeners.\n */\n RequestActions.prototype.registerEvents = function() {\n $(ACTIONS.VIEW_REQUEST).click(function(e) {\n e.preventDefault();\n\n var requestId = $(this).data('requestid');\n var contextId = $(this).data('context
id');\n\n // Cancel the request.\n var params = {\n 'requestid': requestId\n };\n\n var request = {\n methodname: 'tool_dataprivacy_get_data_request',\n args: params\n };\n\n var promises = Ajax.call([request]);\n $.when(promises[0]).then(function(data) {\n if (data.result) {\n return data.result;\n }\n // Fail.\n Notification.addNotification({\n message: data.warnings[0].message,\n type: 'error'\n });\n return false;\n\n }).then(function(data) {\n var body = Templates.render('tool_dataprivacy/request_details', data);\n var templateContext = {\n approvedeny: data.approvedeny,\n canmarkcomplete: data.canmarkcomplete,\n allowfiltering: data.allowfilt
ering\n };\n return ModalDataRequest.create({\n title: data.typename,\n body: body,\n large: true,\n templateContext: templateContext\n });\n\n }).then(function(modal) {\n // Handle approve event.\n modal.getRoot().on(DataPrivacyEvents.approve, function() {\n showConfirmation(DataPrivacyEvents.approve, approveEventWsData(requestId));\n });\n\n // Handle deny event.\n modal.getRoot().on(DataPrivacyEvents.deny, function() {\n showConfirmation(DataPrivacyEvents.deny, denyEventWsData(requestId));\n });\n\n // Handle send event.\n modal.getRoot().on(DataPrivacyEvents.complete, function() {\n var params = {\n 'requestid': requestId\n };\n handleSave('
tool_dataprivacy_mark_complete', params);\n });\n\n // Handle hidden event.\n modal.getRoot().on(ModalEvents.hidden, function() {\n // Destroy when hidden.\n modal.destroy();\n });\n\n modal.getRoot().on(DataPrivacyEvents.approveSelectCourses, function() {\n new SelectedCourses(contextId, requestId);\n });\n\n // Show the modal!\n modal.show();\n\n return;\n\n }).catch(Notification.exception);\n });\n\n $(ACTIONS.APPROVE_REQUEST_SELECT_COURSE).click(function(e) {\n e.preventDefault();\n\n var requestId = $(this).data('requestid');\n var contextId = $(this).data('contextid');\n\n new SelectedCourses(contextId, requestId);\n });\n\n $(ACTIONS.APPROVE_REQUEST).click(function(e) {\n e.preventDefault();\n\n var requestId
= $(this).data('requestid');\n showConfirmation(DataPrivacyEvents.approve, approveEventWsData(requestId));\n });\n\n $(ACTIONS.DENY_REQUEST).click(function(e) {\n e.preventDefault();\n\n var requestId = $(this).data('requestid');\n showConfirmation(DataPrivacyEvents.deny, denyEventWsData(requestId));\n });\n\n $(ACTIONS.MARK_COMPLETE).click(function(e) {\n e.preventDefault();\n\n var requestId = $(this).data('requestid');\n showConfirmation(DataPrivacyEvents.complete, completeEventWsData(requestId));\n });\n\n $(ACTIONS.CONFIRM_BULK_ACTION).click(function() {\n var requestIds = [];\n var actionEvent = '';\n var wsdata = {};\n var bulkActionKeys = [\n {\n key: 'selectbulkaction',\n component: 'tool_dataprivacy'\n },\n {\n key: 'selectdatarequests',\
n component: 'tool_dataprivacy'\n },\n {\n key: 'ok'\n }\n ];\n\n var bulkaction = parseInt($('#bulk-action').val());\n\n if (bulkaction != BULK_ACTIONS.APPROVE && bulkaction != BULK_ACTIONS.DENY) {\n Str.get_strings(bulkActionKeys).done(function(langStrings) {\n Notification.alert('', langStrings[0], langStrings[2]);\n }).fail(Notification.exception);\n\n return;\n }\n\n $(\".selectrequests:checked\").each(function() {\n requestIds.push($(this).val());\n });\n\n if (requestIds.length < 1) {\n Str.get_strings(bulkActionKeys).done(function(langStrings) {\n Notification.alert('', langStrings[1], langStrings[2]);\n }).fail(Notification.exception);\n\n return;\n }\n\n switch (bulkaction) {\n
case BULK_ACTIONS.APPROVE:\n actionEvent = DataPrivacyEvents.bulkApprove;\n wsdata = bulkApproveEventWsData(requestIds);\n break;\n case BULK_ACTIONS.DENY:\n actionEvent = DataPrivacyEvents.bulkDeny;\n wsdata = bulkDenyEventWsData(requestIds);\n }\n\n showConfirmation(actionEvent, wsdata);\n });\n\n $(ACTIONS.SELECT_ALL).change(function(e) {\n e.preventDefault();\n\n var selectAll = $(this).is(':checked');\n $(SELECTORS.SELECT_REQUEST).prop('checked', selectAll);\n });\n };\n\n /**\n * Return the webservice data for the approve request action.\n *\n * @param {Number} requestId The ID of the request.\n * @return {Object}\n */\n function approveEventWsData(requestId) {\n return {\n 'wsfunction': 'tool_dataprivacy_approve_data_request',\n 'wsparams': {'reque
stid': requestId}\n };\n }\n\n /**\n * Return the webservice data for the bulk approve request action.\n *\n * @param {Array} requestIds The array of request ID's.\n * @return {Object}\n */\n function bulkApproveEventWsData(requestIds) {\n return {\n 'wsfunction': 'tool_dataprivacy_bulk_approve_data_requests',\n 'wsparams': {'requestids': requestIds}\n };\n }\n\n /**\n * Return the webservice data for the deny request action.\n *\n * @param {Number} requestId The ID of the request.\n * @return {Object}\n */\n function denyEventWsData(requestId) {\n return {\n 'wsfunction': 'tool_dataprivacy_deny_data_request',\n 'wsparams': {'requestid': requestId}\n };\n }\n\n /**\n * Return the webservice data for the bulk deny request action.\n *\n * @param {Array} requestIds The array of request ID's.\n * @return {Object}\n */\n function bulkDenyEventWsData(
requestIds) {\n return {\n 'wsfunction': 'tool_dataprivacy_bulk_deny_data_requests',\n 'wsparams': {'requestids': requestIds}\n };\n }\n\n /**\n * Return the webservice data for the complete request action.\n *\n * @param {Number} requestId The ID of the request.\n * @return {Object}\n */\n function completeEventWsData(requestId) {\n return {\n 'wsfunction': 'tool_dataprivacy_mark_complete',\n 'wsparams': {'requestid': requestId}\n };\n }\n\n /**\n * Show the confirmation dialogue.\n *\n * @param {String} action The action name.\n * @param {Object} wsdata Object containing ws data.\n */\n function showConfirmation(action, wsdata) {\n var keys = [];\n\n switch (action) {\n case DataPrivacyEvents.approve:\n keys = [\n {\n key: 'approverequest',\n component: 'tool_dataprivacy'\n
},\n {\n key: 'confirmapproval',\n component: 'tool_dataprivacy'\n }\n ];\n break;\n case DataPrivacyEvents.bulkApprove:\n keys = [\n {\n key: 'bulkapproverequests',\n component: 'tool_dataprivacy'\n },\n {\n key: 'confirmbulkapproval',\n component: 'tool_dataprivacy'\n }\n ];\n break;\n case DataPrivacyEvents.deny:\n keys = [\n {\n key: 'denyrequest',\n component: 'tool_dataprivacy'\n },\n {\n key: 'confirmdenial',\n component: 'tool_dataprivacy'\n }\n
];\n break;\n case DataPrivacyEvents.bulkDeny:\n keys = [\n {\n key: 'bulkdenyrequests',\n component: 'tool_dataprivacy'\n },\n {\n key: 'confirmbulkdenial',\n component: 'tool_dataprivacy'\n }\n ];\n break;\n case DataPrivacyEvents.complete:\n keys = [\n {\n key: 'markcomplete',\n component: 'tool_dataprivacy'\n },\n {\n key: 'confirmcompletion',\n component: 'tool_dataprivacy'\n }\n ];\n break;\n }\n\n var modalTitle = '';\n Str.get_strings(keys).then(function(langStrings) {\n modalTitle = langStrings[0];\n va
r confirmMessage = langStrings[1];\n return ModalSaveCancel.create({\n title: modalTitle,\n body: confirmMessage,\n });\n }).then(function(modal) {\n modal.setSaveButtonText(modalTitle);\n\n // Handle save event.\n modal.getRoot().on(ModalEvents.save, function() {\n handleSave(wsdata.wsfunction, wsdata.wsparams);\n });\n\n // Handle hidden event.\n modal.getRoot().on(ModalEvents.hidden, function() {\n // Destroy when hidden.\n modal.destroy();\n });\n\n modal.show();\n\n return;\n\n }).catch(Notification.exception);\n }\n\n /**\n * Calls a web service function and reloads the page on success and shows a notification.\n * Displays an error notification, otherwise.\n *\n * @param {String} wsfunction The web service function to call.\n * @param {Object} params The parameters for
the web service functoon.\n */\n function handleSave(wsfunction, params) {\n // Confirm the request.\n var request = {\n methodname: wsfunction,\n args: params\n };\n\n Ajax.call([request])[0].done(function(data) {\n if (data.result) {\n // On success, reload the page so that the data request table will be updated.\n // TODO: Probably in the future, better to reload the table or the target data request via AJAX.\n window.location.reload();\n } else {\n // Add the notification.\n Notification.addNotification({\n message: data.warnings[0].message,\n type: 'error'\n });\n }\n }).fail(Notification.exception);\n }\n\n return RequestActions;\n});\n"],"names":["define","$","Ajax","Notification","Str","ModalSaveCancel","ModalEvents","Templates","ModalDataRequest","DataPrivacyEvents","Selec
tedCourses","ACTIONS","BULK_ACTIONS","SELECTORS","RequestActions","registerEvents","approveEventWsData","requestId","denyEventWsData","showConfirmation","action","wsdata","keys","approve","key","component","bulkApprove","deny","bulkDeny","complete","modalTitle","get_strings","then","langStrings","confirmMessage","create","title","body","modal","setSaveButtonText","getRoot","on","save","handleSave","wsfunction","wsparams","hidden","destroy","show","catch","exception","params","request","methodname","args","call","done","data","result","window","location","reload","addNotification","message","warnings","type","fail","prototype","click","e","preventDefault","this","contextId","promises","when","render","templateContext","approvedeny","canmarkcomplete","allowfiltering","typename","large","approveSelectCourses","completeEventWsData","requestIds","actionEvent","bulkActionKeys","bulkaction","parseInt","val","each","push","length","alert","bulkApproveEventWsData","bulkDenyEventWsData","change","selectAll","is","prop
"],"mappings":"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"}