b98dfe19fa78b0a2566e674fdcf2c56274e42ad8
[moodle.git] / lib / yui / build / moodle-core-notification-confirm / moodle-core-notification-confirm-debug.js
1 YUI.add('moodle-core-notification-confirm', function (Y, NAME) {
3 /* eslint-disable */
4 var DIALOGUE_PREFIX,
5     BASE,
6     CONFIRMYES,
7     CONFIRMNO,
8     TITLE,
9     QUESTION,
10     CSS;
12 DIALOGUE_PREFIX = 'moodle-dialogue',
13 BASE = 'notificationBase',
14 CONFIRMYES = 'yesLabel',
15 CONFIRMNO = 'noLabel',
16 TITLE = 'title',
17 QUESTION = 'question',
18 CSS = {
19     BASE : 'moodle-dialogue-base',
20     WRAP : 'moodle-dialogue-wrap',
21     HEADER : 'moodle-dialogue-hd',
22     BODY : 'moodle-dialogue-bd',
23     CONTENT : 'moodle-dialogue-content',
24     FOOTER : 'moodle-dialogue-ft',
25     HIDDEN : 'hidden',
26     LIGHTBOX : 'moodle-dialogue-lightbox'
27 };
29 // Set up the namespace once.
30 M.core = M.core || {};
31 /**
32  * A dialogue type designed to display a confirmation to the user.
33  *
34  * @module moodle-core-notification
35  * @submodule moodle-core-notification-confirm
36  */
38 var CONFIRM_NAME = 'Moodle confirmation dialogue',
39     CONFIRM;
41 /**
42  * Extends core Dialogue to show the confirmation dialogue.
43  *
44  * @param {Object} config Object literal specifying the dialogue configuration properties.
45  * @constructor
46  * @class M.core.confirm
47  * @extends M.core.dialogue
48  */
49 CONFIRM = function(config) {
50     CONFIRM.superclass.constructor.apply(this, [config]);
51 };
52 Y.extend(CONFIRM, M.core.notification.info, {
53     /**
54      * The list of events to detach when destroying this dialogue.
55      *
56      * @property _closeEvents
57      * @type EventHandle[]
58      * @private
59      */
60     _closeEvents: null,
62     /**
63      * A reference to the yes button.
64      *
65      * @property _yesButton
66      * @type Node
67      * @private
68      */
69     _yesButton: null,
71     /**
72      * A reference to the No button.
73      *
74      * @property _noButton
75      * @type Node
76      * @private
77      */
78     _noButton: null,
80     /**
81      * A reference to the Question.
82      *
83      * @property _question
84      * @type Node
85      * @private
86      */
87     _question: null,
89     initializer: function() {
90         this._closeEvents = [];
91         this.publish('complete');
92         this.publish('complete-yes');
93         this.publish('complete-no');
94         this._yesButton = Y.Node.create('<input type="button" id="id_yuiconfirmyes-' +
95                                         this.get('COUNT') + '" value="'+this.get(CONFIRMYES)+'" />');
96         this._noButton = Y.Node.create('<input type="button" id="id_yuiconfirmno-' +
97                                         this.get('COUNT') + '" value="'+this.get(CONFIRMNO)+'" />');
98         this._question = Y.Node.create('<div class="confirmation-message">' + this.get(QUESTION) + '</div>');
99         var content = Y.Node.create('<div class="confirmation-dialogue"></div>')
100                         .append(this._question)
101                         .append(Y.Node.create('<div class="confirmation-buttons"></div>')
102                             .append(this._yesButton)
103                             .append(this._noButton));
104         this.get(BASE).addClass('moodle-dialogue-confirm');
105         this.setStdModContent(Y.WidgetStdMod.BODY, content, Y.WidgetStdMod.REPLACE);
106         this.setStdModContent(Y.WidgetStdMod.HEADER,
107                 '<h1 id="moodle-dialogue-'+this.get('COUNT')+'-header-text">' + this.get(TITLE) + '</h1>', Y.WidgetStdMod.REPLACE);
109         this._closeEvents.push(
110             Y.on('key', this.submit, window, 'down:27', this, false),
111             this._yesButton.on('click', this.submit, this, true),
112             this._noButton.on('click', this.submit, this, false)
113         );
115         var closeButton = this.get('boundingBox').one('.closebutton');
116         if (closeButton) {
117             // The close button should act exactly like the 'No' button.
118             this._closeEvents.push(
119                 closeButton.on('click', this.submit, this)
120             );
121         }
122     },
123     submit: function(e, outcome) {
124         new Y.EventHandle(this._closeEvents).detach();
125         this.fire('complete', outcome);
126         if (outcome) {
127             this.fire('complete-yes');
128         } else {
129             this.fire('complete-no');
130         }
131         this.hide();
132         this.destroy();
133     }
134 }, {
135     NAME: CONFIRM_NAME,
136     CSS_PREFIX: DIALOGUE_PREFIX,
137     ATTRS: {
139         /**
140          * The button text to use to accept the confirmation.
141          *
142          * @attribute yesLabel
143          * @type String
144          * @default 'Yes'
145          */
146         yesLabel: {
147             validator: Y.Lang.isString,
148             valueFn: function() {
149                 return M.util.get_string('yes', 'moodle');
150             },
151             setter: function(value) {
152                 if (this._yesButton) {
153                     this._yesButton.set('value', value);
154                 }
155                 return value;
156             }
157         },
159         /**
160          * The button text to use to reject the confirmation.
161          *
162          * @attribute noLabel
163          * @type String
164          * @default 'No'
165          */
166         noLabel: {
167             validator: Y.Lang.isString,
168             valueFn: function() {
169                 return M.util.get_string('no', 'moodle');
170             },
171             setter: function(value) {
172                 if (this._noButton) {
173                     this._noButton.set('value', value);
174                 }
175                 return value;
176             }
177         },
179         /**
180          * The title of the dialogue.
181          *
182          * @attribute title
183          * @type String
184          * @default 'Confirm'
185          */
186         title: {
187             validator: Y.Lang.isString,
188             value: M.util.get_string('confirm', 'moodle')
189         },
191         /**
192          * The question posed by the dialogue.
193          *
194          * @attribute question
195          * @type String
196          * @default 'Are you sure?'
197          */
198         question: {
199             validator: Y.Lang.isString,
200             valueFn: function() {
201                 return M.util.get_string('areyousure', 'moodle');
202             },
203             setter: function(value) {
204                 if (this._question) {
205                     this._question.set('value', value);
206                 }
207                 return value;
208             }
209         }
210     }
211 });
212 Y.augment(CONFIRM, Y.EventTarget);
214 M.core.confirm = CONFIRM;
217 }, '@VERSION@', {"requires": ["moodle-core-notification-dialogue"]});