weekly release 3.2dev
[moodle.git] / lib / yui / build / moodle-core-event / moodle-core-event.js
CommitLineData
cc90cedc
DW
1YUI.add('moodle-core-event', function (Y, NAME) {
2
3// This file is part of Moodle - http://moodle.org/
4//
5// Moodle is free software: you can redistribute it and/or modify
6// it under the terms of the GNU General Public License as published by
7// the Free Software Foundation, either version 3 of the License, or
8// (at your option) any later version.
9//
10// Moodle is distributed in the hope that it will be useful,
11// but WITHOUT ANY WARRANTY; without even the implied warranty of
12// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13// GNU General Public License for more details.
14//
15// You should have received a copy of the GNU General Public License
16// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
17
18/**
19 * @module moodle-core-event
20 */
21
22var LOGNAME = 'moodle-core-event';
23
24/**
25 * List of published global JS events in Moodle. This is a collection
26 * of global events that can be subscribed to, or fired from any plugin.
27 *
441f94b2
DW
28 * @namespace M.core
29 * @class event
cc90cedc
DW
30 */
31M.core = M.core || {};
32
36e0030f 33M.core.event = M.core.event || {
441f94b2
DW
34 /**
35 * This event is triggered when a page has added dynamic nodes to a page
36 * that should be processed by the filter system. An example is loading
37 * user text that could have equations in it. MathJax can typeset the equations
38 * but only if it is notified that there are new nodes in the page that need processing.
39 * To trigger this event use M.core.Event.fire(M.core.Event.FILTER_CONTENT_UPDATED, {nodes: list});
40 *
41 * @event "filter-content-updated"
42 * @param nodes {Y.NodeList} List of nodes added to the DOM.
43 */
cc90cedc
DW
44 FILTER_CONTENT_UPDATED: "filter-content-updated"
45};
46
36e0030f 47M.core.globalEvents = M.core.globalEvents || {
eaec9cfe
MM
48 /**
49 * This event is triggered when form has an error
50 *
51 * @event "form_error"
52 * @param formid {string} Id of form with error.
53 * @param elementid {string} Id of element with error.
54 */
fd5466af
CB
55 FORM_ERROR: "form_error",
56
57 /**
58 * This event is triggered when the content of a block has changed
59 *
60 * @event "block_content_updated"
61 * @param instanceid ID of the block instance that was updated
62 */
63 BLOCK_CONTENT_UPDATED: "block_content_updated"
eaec9cfe
MM
64};
65
cc90cedc
DW
66
67var eventDefaultConfig = {
68 emitFacade: true,
69 defaultFn: function(e) {
70 },
71 preventedFn: function(e) {
72 },
73 stoppedFn: function(e) {
74 }
75};
76
eaec9cfe
MM
77// Publish events with a custom config here.
78
441f94b2
DW
79// Publish all the events with a standard config.
80var key;
81for (key in M.core.event) {
36e0030f 82 if (M.core.event.hasOwnProperty(key) && Y.getEvent(M.core.event[key]) === null) {
441f94b2
DW
83 Y.publish(M.core.event[key], eventDefaultConfig);
84 }
cc90cedc
DW
85}
86
36e0030f 87// Publish global events.
eaec9cfe 88for (key in M.core.globalEvents) {
36e0030f
JP
89 // Make sure the key exists and that the event has not yet been published. Otherwise, skip publishing.
90 if (M.core.globalEvents.hasOwnProperty(key) && Y.Global.getEvent(M.core.globalEvents[key]) === null) {
91 Y.Global.publish(M.core.globalEvents[key], Y.merge(eventDefaultConfig, {broadcast: true}));
eaec9cfe
MM
92 }
93}
cc90cedc
DW
94
95
96}, '@VERSION@', {"requires": ["event-custom"]});