MDL-59759 core_amd: Deprecate core/modal_confirm
authorJun Pataleta <jun@moodle.com>
Thu, 31 Aug 2017 07:18:53 +0000 (15:18 +0800)
committerJun Pataleta <jun@moodle.com>
Mon, 4 Sep 2017 02:44:46 +0000 (10:44 +0800)
lib/amd/build/modal_confirm.min.js
lib/amd/build/modal_events.min.js
lib/amd/build/modal_factory.min.js
lib/amd/src/modal_confirm.js
lib/amd/src/modal_events.js
lib/amd/src/modal_factory.js
lib/templates/modal_confirm.mustache [deleted file]
lib/upgrade.txt

index 905b621..68df031 100644 (file)
Binary files a/lib/amd/build/modal_confirm.min.js and b/lib/amd/build/modal_confirm.min.js differ
index 9b2eaab..5fc8341 100644 (file)
Binary files a/lib/amd/build/modal_events.min.js and b/lib/amd/build/modal_events.min.js differ
index 02e0604..04cb7e1 100644 (file)
Binary files a/lib/amd/build/modal_factory.min.js and b/lib/amd/build/modal_factory.min.js differ
index 171c433..f396c8e 100644 (file)
 // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
 
 /**
- * Contain the logic for the save/cancel modal.
+ * Contain the logic for the yes/no confirmation modal.
+ * This has been deprecated and should not be used anymore. Please use core/modal_save_cancel instead.
+ * See MDL-59759.
  *
- * @module     core/modal_save_cancel
- * @class      modal_save_cancel
+ * @deprecated Since Moodle 3.4
+ * @module     core/modal_confirm
+ * @class      modal_confirm
  * @package    core
  * @copyright  2016 Ryan Wyllie <ryan@moodle.com>
  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
-define(['jquery', 'core/notification', 'core/custom_interaction_events', 'core/modal', 'core/modal_events'],
-        function($, Notification, CustomEvents, Modal, ModalEvents) {
-
-    var SELECTORS = {
-        YES_BUTTON: '[data-action="yes"]',
-        NO_BUTTON: '[data-action="no"]',
-    };
+define(['jquery', 'core/custom_interaction_events', 'core/modal_events', 'core/modal_save_cancel', 'core/log'],
+        function($, CustomEvents, ModalEvents, ModalSaveCancel, Log) {
 
     /**
      * Constructor for the Modal.
@@ -36,57 +34,13 @@ define(['jquery', 'core/notification', 'core/custom_interaction_events', 'core/m
      * @param {object} root The root jQuery element for the modal
      */
     var ModalConfirm = function(root) {
-        Modal.call(this, root);
-
-        if (!this.getFooter().find(SELECTORS.YES_BUTTON).length) {
-            Notification.exception({message: 'No "yes" button found'});
-        }
-
-        if (!this.getFooter().find(SELECTORS.NO_BUTTON).length) {
-            Notification.exception({message: 'No "no" button found'});
-        }
+        Log.warn("The CONFIRM modal type has been deprecated and should not be used anymore." +
+            " Please use the SAVE_CANCEL modal type instead.");
+        ModalSaveCancel.call(this, root);
     };
 
-    ModalConfirm.prototype = Object.create(Modal.prototype);
+    ModalConfirm.prototype = Object.create(ModalSaveCancel.prototype);
     ModalConfirm.prototype.constructor = ModalConfirm;
 
-    /**
-     * Override parent implementation to prevent changing the footer content.
-     */
-    ModalConfirm.prototype.setFooter = function() {
-        Notification.exception({message: 'Can not change the footer of a confirm modal'});
-        return;
-    };
-
-    /**
-     * Set up all of the event handling for the modal.
-     *
-     * @method registerEventListeners
-     */
-    ModalConfirm.prototype.registerEventListeners = function() {
-        // Apply parent event listeners.
-        Modal.prototype.registerEventListeners.call(this);
-
-        this.getModal().on(CustomEvents.events.activate, SELECTORS.YES_BUTTON, function(e, data) {
-            var yesEvent = $.Event(ModalEvents.yes);
-            this.getRoot().trigger(yesEvent, this);
-
-            if (!yesEvent.isDefaultPrevented()) {
-                this.hide();
-                data.originalEvent.preventDefault();
-            }
-        }.bind(this));
-
-        this.getModal().on(CustomEvents.events.activate, SELECTORS.NO_BUTTON, function(e, data) {
-            var noEvent = $.Event(ModalEvents.no);
-            this.getRoot().trigger(noEvent, this);
-
-            if (!noEvent.isDefaultPrevented()) {
-                this.hide();
-                data.originalEvent.preventDefault();
-            }
-        }.bind(this));
-    };
-
     return ModalConfirm;
 });
index bbd3979..9c26179 100644 (file)
@@ -32,8 +32,9 @@ define([], function() {
         // ModalSaveCancel events.
         save: 'modal-save-cancel:save',
         cancel: 'modal-save-cancel:cancel',
-        // ModalConfirm events.
-        yes: 'modal-confirm:yes',
-        no: 'modal-confirm:no',
+        // ModalConfirm events. Deprecated since Moodle 3.4. See MDL-59759.
+        // Point core/modal_confirm events to save/cancel events of core/modal_save_cancel.
+        yes: 'modal-save-cancel:save',
+        no: 'modal-save-cancel:cancel',
     };
 });
index f9db208..770ecdf 100644 (file)
@@ -32,7 +32,8 @@ define(['jquery', 'core/modal_events', 'core/modal_registry', 'core/modal',
     var TEMPLATES = {
         DEFAULT: 'core/modal',
         SAVE_CANCEL: 'core/modal_save_cancel',
-        CONFIRM: 'core/modal_confirm',
+        // Deprecated since Moodle 3.4. Point template to core/modal_save_cancel instead. See MDL-59759.
+        CONFIRM: 'core/modal_save_cancel',
         CANCEL: 'core/modal_cancel',
     };
 
@@ -40,6 +41,7 @@ define(['jquery', 'core/modal_events', 'core/modal_registry', 'core/modal',
     var TYPES = {
         DEFAULT: 'DEFAULT',
         SAVE_CANCEL: 'SAVE_CANCEL',
+        // Deprecated since Moodle 3.4. See MDL-59759.
         CONFIRM: 'CONFIRM',
         CANCEL: 'CANCEL',
     };
@@ -47,6 +49,7 @@ define(['jquery', 'core/modal_events', 'core/modal_registry', 'core/modal',
     // Register the common set of modals.
     ModalRegistry.register(TYPES.DEFAULT, Modal, TEMPLATES.DEFAULT);
     ModalRegistry.register(TYPES.SAVE_CANCEL, ModalSaveCancel, TEMPLATES.SAVE_CANCEL);
+    // Deprecated since Moodle 3.4. See MDL-59759.
     ModalRegistry.register(TYPES.CONFIRM, ModalConfirm, TEMPLATES.CONFIRM);
     ModalRegistry.register(TYPES.CANCEL, ModalCancel, TEMPLATES.CANCEL);
 
diff --git a/lib/templates/modal_confirm.mustache b/lib/templates/modal_confirm.mustache
deleted file mode 100644 (file)
index 549a3c6..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-{{!
-    This file is part of Moodle - http://moodle.org/
-
-    Moodle is free software: you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    Moodle is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
-}}
-{{!
-    @template core/modal_confirm
-
-    Moodle template for a confirmation modal.
-
-    The purpose of this template is to render a modal.
-
-    Classes required for JS:
-    * none
-
-    Data attributes required for JS:
-    * none
-
-    Context variables required for this template:
-    * body HTML content for the boday
-
-    Example context (json):
-    {
-    }
-}}
-
-{{< core/modal }}
-    {{$title}}{{#str}} confirm {{/str}}{{/title}}
-    {{$body}}{{#str}} areyousure {{/str}}{{/body}}
-    {{$footer}}
-        <button type="button" class="btn btn-primary" data-action="yes">{{#str}} yes {{/str}}</button>
-        <button type="button" class="btn btn-secondary" data-action="no">{{#str}} no {{/str}}</button>
-    {{/footer}}
-{{/ core/modal }}
index 77e180a..cd4d742 100644 (file)
@@ -42,6 +42,8 @@ information provided here is intended especially for developers.
   close the suggestions popup immediately after an option has been selected. If not specified, it defaults to true for single-select
   elements and false for multiple-select elements.
 * user_can_view_profile() now also checks the moodle/user:viewalldetails capability.
+* The core/modal_confirm dialogue has been deprecated. Please use the core/modal_save_cancel dialogue instead. Please ensure you
+  update to use the ModalEvents.save and ModalEvents.cancel events instead of their yes/no counterparts.
 
 === 3.3.1 ===