From 0f51963108a5e599c4d9e9ba172b970360c5cce8 Mon Sep 17 00:00:00 2001 From: Sara Arjona Date: Fri, 3 Apr 2020 12:54:00 +0200 Subject: [PATCH] MDL-67919 dataprivacy: Fix behat error when contacting DPO --- .../amd/build/myrequestactions.min.js | 2 +- .../amd/build/myrequestactions.min.js.map | 2 +- .../dataprivacy/amd/src/myrequestactions.js | 17 +++++++++++------ 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/admin/tool/dataprivacy/amd/build/myrequestactions.min.js b/admin/tool/dataprivacy/amd/build/myrequestactions.min.js index f510cd2869e..a6ba75991d1 100644 --- a/admin/tool/dataprivacy/amd/build/myrequestactions.min.js +++ b/admin/tool/dataprivacy/amd/build/myrequestactions.min.js @@ -1,2 +1,2 @@ -define ("tool_dataprivacy/myrequestactions",["jquery","core/ajax","core/notification","core/str","core/modal_factory","core/modal_events","core/templates"],function(a,b,c,d,e,f,g){var i={CANCEL_REQUEST:"[data-action=\"cancel\"]",CONTACT_DPO:"[data-action=\"contactdpo\"]"},j=function(){this.registerEvents()};j.prototype.registerEvents=function(){a(i.CANCEL_REQUEST).click(function(g){g.preventDefault();var h=a(this).data("requestid");d.get_strings([{key:"cancelrequest",component:"tool_dataprivacy"},{key:"cancelrequestconfirmation",component:"tool_dataprivacy"}]).then(function(a){var d=a[0],g=a[1];return e.create({title:d,body:g,type:e.types.SAVE_CANCEL}).then(function(a){a.setSaveButtonText(d);a.getRoot().on(f.save,function(){b.call([{methodname:"tool_dataprivacy_cancel_data_request",args:{requestid:h}}])[0].done(function(a){if(a.result){window.location.reload()}else{c.addNotification({message:a.warnings[0].message,type:"error"})}}).fail(c.exception)});a.getRoot().on(f.hidden,function(){a.destroy()});return a})}).done(function(a){a.show()}).fail(c.exception)});a(i.CONTACT_DPO).click(function(b){b.preventDefault();var i=a(this).data("replytoemail"),j="";d.get_strings([{key:"contactdataprotectionofficer",component:"tool_dataprivacy"},{key:"send",component:"tool_dataprivacy"}]).then(function(a){var b=a[0];j=a[1];return e.create({title:b,body:g.render("tool_dataprivacy/contact_dpo",{replytoemail:i}),type:e.types.SAVE_CANCEL,large:!0})}).done(function(b){b.setSaveButtonText(j);b.getRoot().on(f.save,function(b){var c=a("#message").val().trim();if(0===c.length){b.preventDefault();a("[data-region=\"messageinput\"]").addClass("has-danger notifyproblem");a("#id_error_message").removeAttr("hidden")}else{h(c)}});b.getRoot().on(f.hidden,function(){b.destroy()});b.show()}).fail(c.exception)})};function h(a){var e="success";b.call([{methodname:"tool_dataprivacy_contact_dpo",args:{message:a}}])[0].then(function(a){if(a.result){return d.get_string("requestsubmitted","tool_dataprivacy")}e="error";return a.warnings.join("
")}).done(function(a){c.addNotification({message:a,type:e})}).fail(c.exception)}return{init:function init(){return new j}}}); +define ("tool_dataprivacy/myrequestactions",["jquery","core/ajax","core/notification","core/str","core/modal_factory","core/modal_events","core/templates","core/pending"],function(a,b,c,d,e,f,g,h){var j={CANCEL_REQUEST:"[data-action=\"cancel\"]",CONTACT_DPO:"[data-action=\"contactdpo\"]"},k=function(){this.registerEvents()};k.prototype.registerEvents=function(){a(j.CANCEL_REQUEST).click(function(g){g.preventDefault();var h=a(this).data("requestid");d.get_strings([{key:"cancelrequest",component:"tool_dataprivacy"},{key:"cancelrequestconfirmation",component:"tool_dataprivacy"}]).then(function(a){var d=a[0],g=a[1];return e.create({title:d,body:g,type:e.types.SAVE_CANCEL}).then(function(a){a.setSaveButtonText(d);a.getRoot().on(f.save,function(){b.call([{methodname:"tool_dataprivacy_cancel_data_request",args:{requestid:h}}])[0].done(function(a){if(a.result){window.location.reload()}else{c.addNotification({message:a.warnings[0].message,type:"error"})}}).fail(c.exception)});a.getRoot().on(f.hidden,function(){a.destroy()});return a})}).done(function(a){a.show()}).fail(c.exception)});a(j.CONTACT_DPO).click(function(b){var j=new h("dataprivacy/crud:initModal:contactdpo");b.preventDefault();var k=a(this).data("replytoemail"),l="";d.get_strings([{key:"contactdataprotectionofficer",component:"tool_dataprivacy"},{key:"send",component:"tool_dataprivacy"}]).then(function(a){var b=a[0];l=a[1];return e.create({title:b,body:g.render("tool_dataprivacy/contact_dpo",{replytoemail:k}),type:e.types.SAVE_CANCEL,large:!0})}).then(function(b){b.setSaveButtonText(l);b.show();b.getRoot().on(f.save,function(b){var c=a("#message").val().trim();if(0===c.length){b.preventDefault();a("[data-region=\"messageinput\"]").addClass("has-danger notifyproblem");a("#id_error_message").removeAttr("hidden")}else{i(c)}});b.getRoot().on(f.hidden,function(){b.destroy()})}).then(j.resolve).catch(c.exception)})};function i(a){var e="success";b.call([{methodname:"tool_dataprivacy_contact_dpo",args:{message:a}}])[0].then(function(a){if(a.result){return d.get_string("requestsubmitted","tool_dataprivacy")}e="error";return a.warnings.join("
")}).done(function(a){c.addNotification({message:a,type:e})}).fail(c.exception)}return{init:function init(){return new k}}}); //# sourceMappingURL=myrequestactions.min.js.map diff --git a/admin/tool/dataprivacy/amd/build/myrequestactions.min.js.map b/admin/tool/dataprivacy/amd/build/myrequestactions.min.js.map index 6d17dee57c3..c9f78ed452a 100644 --- a/admin/tool/dataprivacy/amd/build/myrequestactions.min.js.map +++ b/admin/tool/dataprivacy/amd/build/myrequestactions.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/myrequestactions.js"],"names":["define","$","Ajax","Notification","Str","ModalFactory","ModalEvents","Templates","ACTIONS","CANCEL_REQUEST","CONTACT_DPO","MyRequestActions","registerEvents","prototype","click","e","preventDefault","requestId","data","get_strings","key","component","then","langStrings","title","confirmMessage","create","body","type","types","SAVE_CANCEL","modal","setSaveButtonText","getRoot","on","save","call","methodname","args","done","result","window","location","reload","addNotification","message","warnings","fail","exception","hidden","destroy","show","replyToEmail","sendButtonText","modalTitle","render","large","val","trim","length","addClass","removeAttr","sendMessageToDPO","requestType","get_string","join"],"mappings":"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","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 .\n\n/**\n * AMD module to enable users to manage their own data requests.\n *\n * @module tool_dataprivacy/myrequestactions\n * @package tool_dataprivacy\n * @copyright 2018 Jun Pataleta\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\ndefine([\n 'jquery',\n 'core/ajax',\n 'core/notification',\n 'core/str',\n 'core/modal_factory',\n 'core/modal_events',\n 'core/templates'],\nfunction($, Ajax, Notification, Str, ModalFactory, ModalEvents, Templates) {\n\n /**\n * List of action selectors.\n *\n * @type {{CANCEL_REQUEST: string}}\n * @type {{CONTACT_DPO: string}}\n */\n var ACTIONS = {\n CANCEL_REQUEST: '[data-action=\"cancel\"]',\n CONTACT_DPO: '[data-action=\"contactdpo\"]',\n };\n\n /**\n * MyRequestActions class.\n */\n var MyRequestActions = function() {\n this.registerEvents();\n };\n\n /**\n * Register event listeners.\n */\n MyRequestActions.prototype.registerEvents = function() {\n $(ACTIONS.CANCEL_REQUEST).click(function(e) {\n e.preventDefault();\n\n var requestId = $(this).data('requestid');\n var stringkeys = [\n {\n key: 'cancelrequest',\n component: 'tool_dataprivacy'\n },\n {\n key: 'cancelrequestconfirmation',\n component: 'tool_dataprivacy'\n }\n ];\n\n Str.get_strings(stringkeys).then(function(langStrings) {\n var title = langStrings[0];\n var confirmMessage = langStrings[1];\n return ModalFactory.create({\n title: title,\n body: confirmMessage,\n type: ModalFactory.types.SAVE_CANCEL\n }).then(function(modal) {\n modal.setSaveButtonText(title);\n\n // Handle save event.\n modal.getRoot().on(ModalEvents.save, function() {\n // Cancel the request.\n var params = {\n 'requestid': requestId\n };\n\n var request = {\n methodname: 'tool_dataprivacy_cancel_data_request',\n args: params\n };\n\n Ajax.call([request])[0].done(function(data) {\n if (data.result) {\n window.location.reload();\n } else {\n Notification.addNotification({\n message: data.warnings[0].message,\n type: 'error'\n });\n }\n }).fail(Notification.exception);\n });\n\n // Handle hidden event.\n modal.getRoot().on(ModalEvents.hidden, function() {\n // Destroy when hidden.\n modal.destroy();\n });\n\n return modal;\n });\n }).done(function(modal) {\n // Show the modal!\n modal.show();\n\n }).fail(Notification.exception);\n });\n\n $(ACTIONS.CONTACT_DPO).click(function(e) {\n e.preventDefault();\n\n var replyToEmail = $(this).data('replytoemail');\n\n var keys = [\n {\n key: 'contactdataprotectionofficer',\n component: 'tool_dataprivacy'\n },\n {\n key: 'send',\n component: 'tool_dataprivacy'\n },\n ];\n\n var sendButtonText = '';\n Str.get_strings(keys).then(function(langStrings) {\n var modalTitle = langStrings[0];\n sendButtonText = langStrings[1];\n var context = {\n 'replytoemail': replyToEmail\n };\n return ModalFactory.create({\n title: modalTitle,\n body: Templates.render('tool_dataprivacy/contact_dpo', context),\n type: ModalFactory.types.SAVE_CANCEL,\n large: true\n });\n }).done(function(modal) {\n modal.setSaveButtonText(sendButtonText);\n\n // Handle send event.\n modal.getRoot().on(ModalEvents.save, function(e) {\n var message = $('#message').val().trim();\n if (message.length === 0) {\n e.preventDefault();\n // Show validation error when the message is empty.\n $('[data-region=\"messageinput\"]').addClass('has-danger notifyproblem');\n $('#id_error_message').removeAttr('hidden');\n } else {\n // Send the message.\n sendMessageToDPO(message);\n }\n });\n\n // Handle hidden event.\n modal.getRoot().on(ModalEvents.hidden, function() {\n // Destroy when hidden.\n modal.destroy();\n });\n\n // Show the modal!\n modal.show();\n }).fail(Notification.exception);\n });\n };\n\n /**\n * Send message to the Data Protection Officer.\n *\n * @param {String} message The message to send.\n */\n function sendMessageToDPO(message) {\n var request = {\n methodname: 'tool_dataprivacy_contact_dpo',\n args: {\n message: message\n }\n };\n\n var requestType = 'success';\n Ajax.call([request])[0].then(function(data) {\n if (data.result) {\n return Str.get_string('requestsubmitted', 'tool_dataprivacy');\n }\n requestType = 'error';\n return data.warnings.join('
');\n\n }).done(function(message) {\n Notification.addNotification({\n message: message,\n type: requestType\n });\n\n }).fail(Notification.exception);\n }\n\n return /** @alias module:tool_dataprivacy/myrequestactions */ {\n // Public variables and functions.\n\n /**\n * Initialise the unified user filter.\n *\n * @method init\n * @return {MyRequestActions}\n */\n 'init': function() {\n return new MyRequestActions();\n }\n };\n});\n"],"file":"myrequestactions.min.js"} \ No newline at end of file +{"version":3,"sources":["../src/myrequestactions.js"],"names":["define","$","Ajax","Notification","Str","ModalFactory","ModalEvents","Templates","Pending","ACTIONS","CANCEL_REQUEST","CONTACT_DPO","MyRequestActions","registerEvents","prototype","click","e","preventDefault","requestId","data","get_strings","key","component","then","langStrings","title","confirmMessage","create","body","type","types","SAVE_CANCEL","modal","setSaveButtonText","getRoot","on","save","call","methodname","args","done","result","window","location","reload","addNotification","message","warnings","fail","exception","hidden","destroy","show","pendingPromise","replyToEmail","sendButtonText","modalTitle","render","large","val","trim","length","addClass","removeAttr","sendMessageToDPO","resolve","catch","requestType","get_string","join"],"mappings":"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","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 .\n\n/**\n * AMD module to enable users to manage their own data requests.\n *\n * @module tool_dataprivacy/myrequestactions\n * @package tool_dataprivacy\n * @copyright 2018 Jun Pataleta\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\ndefine([\n 'jquery',\n 'core/ajax',\n 'core/notification',\n 'core/str',\n 'core/modal_factory',\n 'core/modal_events',\n 'core/templates',\n 'core/pending'],\nfunction($, Ajax, Notification, Str, ModalFactory, ModalEvents, Templates, Pending) {\n\n /**\n * List of action selectors.\n *\n * @type {{CANCEL_REQUEST: string}}\n * @type {{CONTACT_DPO: string}}\n */\n var ACTIONS = {\n CANCEL_REQUEST: '[data-action=\"cancel\"]',\n CONTACT_DPO: '[data-action=\"contactdpo\"]',\n };\n\n /**\n * MyRequestActions class.\n */\n var MyRequestActions = function() {\n this.registerEvents();\n };\n\n /**\n * Register event listeners.\n */\n MyRequestActions.prototype.registerEvents = function() {\n $(ACTIONS.CANCEL_REQUEST).click(function(e) {\n e.preventDefault();\n\n var requestId = $(this).data('requestid');\n var stringkeys = [\n {\n key: 'cancelrequest',\n component: 'tool_dataprivacy'\n },\n {\n key: 'cancelrequestconfirmation',\n component: 'tool_dataprivacy'\n }\n ];\n\n Str.get_strings(stringkeys).then(function(langStrings) {\n var title = langStrings[0];\n var confirmMessage = langStrings[1];\n return ModalFactory.create({\n title: title,\n body: confirmMessage,\n type: ModalFactory.types.SAVE_CANCEL\n }).then(function(modal) {\n modal.setSaveButtonText(title);\n\n // Handle save event.\n modal.getRoot().on(ModalEvents.save, function() {\n // Cancel the request.\n var params = {\n 'requestid': requestId\n };\n\n var request = {\n methodname: 'tool_dataprivacy_cancel_data_request',\n args: params\n };\n\n Ajax.call([request])[0].done(function(data) {\n if (data.result) {\n window.location.reload();\n } else {\n Notification.addNotification({\n message: data.warnings[0].message,\n type: 'error'\n });\n }\n }).fail(Notification.exception);\n });\n\n // Handle hidden event.\n modal.getRoot().on(ModalEvents.hidden, function() {\n // Destroy when hidden.\n modal.destroy();\n });\n\n return modal;\n });\n }).done(function(modal) {\n // Show the modal!\n modal.show();\n\n }).fail(Notification.exception);\n });\n\n $(ACTIONS.CONTACT_DPO).click(function(e) {\n var pendingPromise = new Pending('dataprivacy/crud:initModal:contactdpo');\n e.preventDefault();\n\n var replyToEmail = $(this).data('replytoemail');\n\n var keys = [\n {\n key: 'contactdataprotectionofficer',\n component: 'tool_dataprivacy'\n },\n {\n key: 'send',\n component: 'tool_dataprivacy'\n },\n ];\n\n var sendButtonText = '';\n Str.get_strings(keys).then(function(langStrings) {\n var modalTitle = langStrings[0];\n sendButtonText = langStrings[1];\n var context = {\n 'replytoemail': replyToEmail\n };\n return ModalFactory.create({\n title: modalTitle,\n body: Templates.render('tool_dataprivacy/contact_dpo', context),\n type: ModalFactory.types.SAVE_CANCEL,\n large: true\n });\n }).then(function(modal) {\n modal.setSaveButtonText(sendButtonText);\n\n // Show the modal!\n modal.show();\n\n // Handle send event.\n modal.getRoot().on(ModalEvents.save, function(e) {\n var message = $('#message').val().trim();\n if (message.length === 0) {\n e.preventDefault();\n // Show validation error when the message is empty.\n $('[data-region=\"messageinput\"]').addClass('has-danger notifyproblem');\n $('#id_error_message').removeAttr('hidden');\n } else {\n // Send the message.\n sendMessageToDPO(message);\n }\n });\n\n // Handle hidden event.\n modal.getRoot().on(ModalEvents.hidden, function() {\n // Destroy when hidden.\n modal.destroy();\n });\n\n return;\n }).then(pendingPromise.resolve)\n .catch(Notification.exception);\n });\n };\n\n /**\n * Send message to the Data Protection Officer.\n *\n * @param {String} message The message to send.\n */\n function sendMessageToDPO(message) {\n var request = {\n methodname: 'tool_dataprivacy_contact_dpo',\n args: {\n message: message\n }\n };\n\n var requestType = 'success';\n Ajax.call([request])[0].then(function(data) {\n if (data.result) {\n return Str.get_string('requestsubmitted', 'tool_dataprivacy');\n }\n requestType = 'error';\n return data.warnings.join('
');\n\n }).done(function(message) {\n Notification.addNotification({\n message: message,\n type: requestType\n });\n\n }).fail(Notification.exception);\n }\n\n return /** @alias module:tool_dataprivacy/myrequestactions */ {\n // Public variables and functions.\n\n /**\n * Initialise the unified user filter.\n *\n * @method init\n * @return {MyRequestActions}\n */\n 'init': function() {\n return new MyRequestActions();\n }\n };\n});\n"],"file":"myrequestactions.min.js"} \ No newline at end of file diff --git a/admin/tool/dataprivacy/amd/src/myrequestactions.js b/admin/tool/dataprivacy/amd/src/myrequestactions.js index 5ec631ef1a9..54f94fb3e01 100644 --- a/admin/tool/dataprivacy/amd/src/myrequestactions.js +++ b/admin/tool/dataprivacy/amd/src/myrequestactions.js @@ -28,8 +28,9 @@ define([ 'core/str', 'core/modal_factory', 'core/modal_events', - 'core/templates'], -function($, Ajax, Notification, Str, ModalFactory, ModalEvents, Templates) { + 'core/templates', + 'core/pending'], +function($, Ajax, Notification, Str, ModalFactory, ModalEvents, Templates, Pending) { /** * List of action selectors. @@ -118,6 +119,7 @@ function($, Ajax, Notification, Str, ModalFactory, ModalEvents, Templates) { }); $(ACTIONS.CONTACT_DPO).click(function(e) { + var pendingPromise = new Pending('dataprivacy/crud:initModal:contactdpo'); e.preventDefault(); var replyToEmail = $(this).data('replytoemail'); @@ -146,9 +148,12 @@ function($, Ajax, Notification, Str, ModalFactory, ModalEvents, Templates) { type: ModalFactory.types.SAVE_CANCEL, large: true }); - }).done(function(modal) { + }).then(function(modal) { modal.setSaveButtonText(sendButtonText); + // Show the modal! + modal.show(); + // Handle send event. modal.getRoot().on(ModalEvents.save, function(e) { var message = $('#message').val().trim(); @@ -169,9 +174,9 @@ function($, Ajax, Notification, Str, ModalFactory, ModalEvents, Templates) { modal.destroy(); }); - // Show the modal! - modal.show(); - }).fail(Notification.exception); + return; + }).then(pendingPromise.resolve) + .catch(Notification.exception); }); };