Your IP : 216.73.216.95


Current Path : /var/www/ljmtc/cbt/message/amd/build/
Upload File :
Current File : /var/www/ljmtc/cbt/message/amd/build/message_drawer_view_settings.min.js.map

{"version":3,"sources":["../src/message_drawer_view_settings.js"],"names":["define","$","Notification","Str","PubSub","Templates","Repository","CustomEvents","MessageDrawerEvents","SELECTORS","CHECKBOX","SETTINGS","PRIVACY_PREFERENCE","NOTIFICATIONS_PREFERENCE","ENTER_TO_SEND_PREFERENCE","NOTIFICATION_PREFERENCES_CONTAINER","CONTENT_CONTAINER","PLACEHOLDER_CONTAINER","TEMPLATES","NOTIFICATION_PREFERENCES","setPrivacyPreference","body","value","inputs","find","each","index","input","val","prop","setEnterToSend","checkbox","savePreferences","loggedInUserId","preferences","then","publish","PREFERENCES_UPDATED","catch","exception","registerEventListeners","settingsContainer","events","activate","on","e","container","target","closest","checkboxes","length","values","toArray","reduce","carry","push","attr","newValue","join","type","init","getUserMessagePreferences","response","blocknoncontacts","entertosend","notificationProcessors","components","forEach","component","notifications","notificationPreferences","filter","notification","preferencekey","configuration","processors","map","processor","checked","loggedin","loggedoff","displayname","name","locked","lockedmessage","removeClass","render","html","append","addClass","show","namespace","header","footer","Deferred","resolve","promise","description","get_string"],"mappings":"AAsBAA,OAAM,6CACN,CACI,QADJ,CAEI,mBAFJ,CAGI,UAHJ,CAII,aAJJ,CAKI,gBALJ,CAMI,iCANJ,CAOI,gCAPJ,CAQI,oCARJ,CADM,CAWN,SACIC,CADJ,CAEIC,CAFJ,CAGIC,CAHJ,CAIIC,CAJJ,CAKIC,CALJ,CAMIC,CANJ,CAOIC,CAPJ,CAQIC,CARJ,CASE,IAEMC,CAAAA,CAAS,CAAG,CACZC,QAAQ,CAAE,0BADE,CAEZC,QAAQ,CAAE,4BAFE,CAGZC,kBAAkB,CAAE,8DAHR,CAIZC,wBAAwB,CAAE,8DAJd,CAKZC,wBAAwB,CAAE,4DALd,CAMZC,kCAAkC,CAAE,qDANxB,CAOZC,iBAAiB,CAAE,qCAPP,CAQZC,qBAAqB,CAAE,yCARX,CAFlB,CAaMC,CAAS,CAAG,CACZC,wBAAwB,CAAE,iFADd,CAblB,CAyBMC,CAAoB,CAAG,SAASC,CAAT,CAAeC,CAAf,CAAsB,CAC7C,GAAIC,CAAAA,CAAM,CAAGF,CAAI,CAACG,IAAL,CAAUf,CAAS,CAACG,kBAApB,CAAb,CACAW,CAAM,CAACE,IAAP,CAAY,SAASC,CAAT,CAAgBC,CAAhB,CAAuB,CAC/BA,CAAK,CAAG1B,CAAC,CAAC0B,CAAD,CAAT,CACA,GAAIA,CAAK,CAACC,GAAN,IAAeN,CAAnB,CAA0B,CACtBK,CAAK,CAACE,IAAN,CAAW,SAAX,IACH,CAFD,IAEO,CACHF,CAAK,CAACE,IAAN,CAAW,SAAX,IACH,CACJ,CAPD,CAQH,CAnCH,CA2CMC,CAAc,CAAG,SAAST,CAAT,CAAeC,CAAf,CAAsB,CACvC,GAAIS,CAAAA,CAAQ,CAAGV,CAAI,CAACG,IAAL,CAAUf,CAAS,CAACK,wBAApB,CAAf,CAEA,GAAIQ,CAAJ,CAAW,CACPS,CAAQ,CAACF,IAAT,CAAc,SAAd,IACH,CAFD,IAEO,CACHE,CAAQ,CAACF,IAAT,CAAc,SAAd,IACH,CACJ,CAnDH,CA8DMG,CAAe,CAAG,SAASC,CAAT,CAAyBC,CAAzB,CAAsC,CACxD,MAAO5B,CAAAA,CAAU,CAAC0B,eAAX,CAA2BC,CAA3B,CAA2CC,CAA3C,EACFC,IADE,CACG,UAAW,CACb/B,CAAM,CAACgC,OAAP,CAAe5B,CAAmB,CAAC6B,mBAAnC,CAAwDH,CAAxD,CAEH,CAJE,EAKFI,KALE,CAKIpC,CAAY,CAACqC,SALjB,CAMV,CArEH,CA8EMC,CAAsB,CAAG,SAASnB,CAAT,CAAeY,CAAf,CAA+B,CACxD,GAAIQ,CAAAA,CAAiB,CAAGpB,CAAI,CAACG,IAAL,CAAUf,CAAS,CAACE,QAApB,CAAxB,CAEAJ,CAAY,CAACP,MAAb,CAAoByC,CAApB,CAAuC,CACnClC,CAAY,CAACmC,MAAb,CAAoBC,QADe,CAAvC,EAIAF,CAAiB,CAACG,EAAlB,CAAqBrC,CAAY,CAACmC,MAAb,CAAoBC,QAAzC,CAAmDlC,CAAS,CAACI,wBAA7D,CAAuF,SAASgC,CAAT,CAAY,IAC3FC,CAAAA,CAAS,CAAG7C,CAAC,CAAC4C,CAAC,CAACE,MAAH,CAAD,CAAYC,OAAZ,CAAoBvC,CAAS,CAACM,kCAA9B,CAD+E,CAE3FkC,CAAU,CAAGH,CAAS,CAACtB,IAAV,CAAef,CAAS,CAACC,QAAzB,CAF8E,CAG/F,GAAI,CAACuC,CAAU,CAACC,MAAhB,CAAwB,CACpB,MACH,CAL8F,GAQ3FC,CAAAA,CAAM,CAAGF,CAAU,CAACG,OAAX,GAAqBC,MAArB,CAA4B,SAASC,CAAT,CAAgBvB,CAAhB,CAA0B,CAC/DA,CAAQ,CAAG9B,CAAC,CAAC8B,CAAD,CAAZ,CACA,GAAIA,CAAQ,CAACF,IAAT,CAAc,SAAd,CAAJ,CAA8B,CAC1ByB,CAAK,CAACC,IAAN,CAAWxB,CAAQ,CAACyB,IAAT,CAAc,WAAd,CAAX,CACH,CAED,MAAOF,CAAAA,CACV,CAPY,CAOV,EAPU,CARkF,CAgB3FG,CAAQ,CAAGN,CAAM,CAACD,MAAP,CAAgBC,CAAM,CAACO,IAAP,CAAY,GAAZ,CAAhB,CAAmC,MAhB6C,CA4B/F1B,CAAe,CAACC,CAAD,CAXG,CACd,CACI0B,IAAI,CAAE,kDADV,CAEIrC,KAAK,CAAEmC,CAFX,CADc,CAKd,CACIE,IAAI,CAAE,iDADV,CAEIrC,KAAK,CAAEmC,CAFX,CALc,CAWH,CAClB,CA7BD,EA+BAhB,CAAiB,CAACG,EAAlB,CAAqB,QAArB,CAA+BnC,CAAS,CAACG,kBAAzC,CAA6D,SAASiC,CAAT,CAAY,IACjEY,CAAAA,CAAQ,CAAGxD,CAAC,CAAC4C,CAAC,CAACE,MAAH,CAAD,CAAYnB,GAAZ,EADsD,CASrEI,CAAe,CAACC,CAAD,CAPG,CACd,CACI0B,IAAI,CAAE,0BADV,CAEIrC,KAAK,CAAEmC,CAFX,CADc,CAOH,CAClB,CAVD,EAYAhB,CAAiB,CAACG,EAAlB,CAAqBrC,CAAY,CAACmC,MAAb,CAAoBC,QAAzC,CAAmDlC,CAAS,CAACK,wBAA7D,CAAuF,SAAS+B,CAAT,CAAY,IAC3FY,CAAAA,CAAQ,CAAGxD,CAAC,CAAC4C,CAAC,CAACE,MAAH,CAAD,CAAYlB,IAAZ,CAAiB,SAAjB,CADgF,CAS/FG,CAAe,CAACC,CAAD,CAPG,CACd,CACI0B,IAAI,CAAE,qBADV,CAEIrC,KAAK,CAAEmC,CAFX,CADc,CAOH,CAClB,CAVD,CAWH,CA3IH,CAwJMG,CAAI,CAAG,SAASvC,CAAT,CAAeY,CAAf,CAA+B,CAEtC3B,CAAU,CAACuD,yBAAX,CAAqC5B,CAArC,EACKE,IADL,CACU,SAAS2B,CAAT,CAAmB,CAErB1C,CAAoB,CAACC,CAAD,CAAOyC,CAAQ,CAACC,gBAAhB,CAApB,CACAjC,CAAc,CAACT,CAAD,CAAOyC,CAAQ,CAACE,WAAhB,CAAd,CAGA,GAAIC,CAAAA,CAAsB,CAAG,EAA7B,CACA,GAAIH,CAAQ,CAAC5B,WAAT,CAAqBgC,UAArB,CAAgChB,MAApC,CAA4C,CACxCY,CAAQ,CAAC5B,WAAT,CAAqBgC,UAArB,CAAgCC,OAAhC,CAAwC,SAASC,CAAT,CAAoB,CACxD,GAAIA,CAAS,CAACC,aAAV,CAAwBnB,MAA5B,CAAoC,CAGhC,GAAIoB,CAAAA,CAAuB,CAAGF,CAAS,CAACC,aAAV,CAAwBE,MAAxB,CAA+B,SAASC,CAAT,CAAuB,CAChF,MAAOA,CAAAA,CAAY,CAACC,aAAb,EAvJA,wCAwJV,CAF6B,CAA9B,CAIA,GAAIH,CAAuB,CAACpB,MAA5B,CAAoC,CAGhC,GAAIwB,CAAAA,CAAa,CAAGN,CAAS,CAACC,aAAV,CAAwB,CAAxB,CAApB,CACAJ,CAAsB,CAAGS,CAAa,CAACC,UAAd,CAAyBC,GAAzB,CAA6B,SAASC,CAAT,CAAoB,CAItE,GAAIC,CAAAA,CAAO,CAAGD,CAAS,CAACE,QAAV,CAAmBD,OAAnB,EAA8BD,CAAS,CAACG,SAAV,CAAoBF,OAAhE,CACA,MAAO,CACHG,WAAW,CAAEJ,CAAS,CAACI,WADpB,CAEHC,IAAI,CAAEL,CAAS,CAACK,IAFb,CAGHJ,OAAO,CAAEA,CAHN,CAMHK,MAAM,CAAEN,CAAS,CAACM,MANf,CAOHC,aAAa,CAAEP,CAAS,CAACO,aAAV,EAA2B,IAPvC,CASV,CAdwB,CAe5B,CACJ,CACJ,CA7BD,CA8BH,CAED,GAAItC,CAAAA,CAAS,CAAGzB,CAAI,CAACG,IAAL,CAAUf,CAAS,CAACM,kCAApB,CAAhB,CACA,GAAIkD,CAAsB,CAACf,MAA3B,CAAmC,CAE/BJ,CAAS,CAACuC,WAAV,CAAsB,QAAtB,EAEA,MAAOhF,CAAAA,CAAS,CAACiF,MAAV,CAAiBpE,CAAS,CAACC,wBAA3B,CAAqD,CAACwD,UAAU,CAAEV,CAAb,CAArD,EACF9B,IADE,CACG,SAASoD,CAAT,CAAe,CACjBzC,CAAS,CAAC0C,MAAV,CAAiBD,CAAjB,EACA,MAAOA,CAAAA,CACV,CAJE,CAKV,CATD,IASO,CACH,QACH,CACJ,CAtDL,EAuDKpD,IAvDL,CAuDU,UAAW,CAEbd,CAAI,CAACG,IAAL,CAAUf,CAAS,CAACO,iBAApB,EAAuCqE,WAAvC,CAAmD,QAAnD,EACAhE,CAAI,CAACG,IAAL,CAAUf,CAAS,CAACQ,qBAApB,EAA2CwE,QAA3C,CAAoD,QAApD,EAEAjD,CAAsB,CAACnB,CAAD,CAAOY,CAAP,CAEzB,CA9DL,EA+DKK,KA/DL,CA+DWpC,CAAY,CAACqC,SA/DxB,CAgEH,CA1NH,CAyPE,MAAO,CACHmD,IAAI,CAnBG,QAAPA,CAAAA,IAAO,CAASC,CAAT,CAAoBC,CAApB,CAA4BvE,CAA5B,CAAkCwE,CAAlC,CAA0C5D,CAA1C,CAA0D,CACjE,GAAI,CAACZ,CAAI,CAACmC,IAAL,CAAU,WAAV,CAAL,CAA6B,CACzBI,CAAI,CAACvC,CAAD,CAAOY,CAAP,CAAJ,CACAZ,CAAI,CAACmC,IAAL,CAAU,WAAV,IACH,CAED,MAAOvD,CAAAA,CAAC,CAAC6F,QAAF,GAAaC,OAAb,GAAuBC,OAAvB,EACV,CAWM,CAEHC,WAAW,CANG,QAAdA,CAAAA,WAAc,EAAW,CACzB,MAAO9F,CAAAA,CAAG,CAAC+F,UAAJ,CAAe,2BAAf,CAA4C,cAA5C,CACV,CAEM,CAIV,CAjRK,CAAN","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 * Controls the settings page in the message drawer.\n *\n * @module     core_message/message_drawer_view_settings\n * @copyright  2018 Ryan Wyllie <ryan@moodle.com>\n * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\ndefine(\n[\n    'jquery',\n    'core/notification',\n    'core/str',\n    'core/pubsub',\n    'core/templates',\n    'core_message/message_repository',\n    'core/custom_interaction_events',\n    'core_message/message_drawer_events'\n],\nfunction(\n    $,\n    Notification,\n    Str,\n    PubSub,\n    Templates,\n    Repository,\n    CustomEvents,\n    MessageDrawerEvents\n) {\n\n    var SELECTORS = {\n        CHECKBOX: 'input[type=\"checkbox\"]',\n        SETTINGS: '[data-region=\"settings\"]',\n        PRIVACY_PREFERENCE: '[data-preference=\"blocknoncontacts\"] input[type=\"radio\"]',\n        NOTIFICATIONS_PREFERENCE: '[data-preference=\"notifications\"] input[type=\"checkbox\"]',\n        ENTER_TO_SEND_PREFERENCE: '[data-preference=\"entertosend\"] input[type=\"checkbox\"]',\n        NOTIFICATION_PREFERENCES_CONTAINER: '[data-region=\"notification-preference-container\"]',\n        CONTENT_CONTAINER: '[data-region=\"content-container\"]',\n        PLACEHOLDER_CONTAINER: '[data-region=\"placeholder-container\"]'\n    };\n\n    var TEMPLATES = {\n        NOTIFICATION_PREFERENCES: 'core_message/message_drawer_view_settings_body_content_notification_preferences'\n    };\n\n    var NOTIFICATION_PREFERENCES_KEY = 'message_provider_moodle_instantmessage';\n\n    /**\n     * Select the correct radio button in the DOM for the privacy preference.\n     *\n     * @param {Object} body The settings body element.\n     * @param {Number} value Which radio button should be set\n     */\n    var setPrivacyPreference = function(body, value) {\n        var inputs = body.find(SELECTORS.PRIVACY_PREFERENCE);\n        inputs.each(function(index, input) {\n            input = $(input);\n            if (input.val() == value) {\n                input.prop('checked', true);\n            } else {\n                input.prop('checked', false);\n            }\n        });\n    };\n\n    /**\n     * Set the \"enter to send\" checkbox to the correct value in the DOM.\n     *\n     * @param {Object} body The settings body element.\n     * @param {Bool} value Whether enter to send is enabled or disabled.\n     */\n    var setEnterToSend = function(body, value) {\n        var checkbox = body.find(SELECTORS.ENTER_TO_SEND_PREFERENCE);\n\n        if (value) {\n            checkbox.prop('checked', true);\n        } else {\n            checkbox.prop('checked', false);\n        }\n    };\n\n    /**\n     * Send a request to the server to save the given preferences. Also publish\n     * a preferences updated event for the rest of the message drawer to\n     * subscribe to.\n     *\n     * @param {Number} loggedInUserId The logged in user id.\n     * @param {Array} preferences The preferences to set.\n     * @return {Object} jQuery promise\n     */\n    var savePreferences = function(loggedInUserId, preferences) {\n        return Repository.savePreferences(loggedInUserId, preferences)\n            .then(function() {\n                PubSub.publish(MessageDrawerEvents.PREFERENCES_UPDATED, preferences);\n                return;\n            })\n            .catch(Notification.exception);\n    };\n\n    /**\n     * Create all of the event listeners for the message preferences page.\n     *\n     * @method registerEventListeners\n     * @param {Object} body The settings body element.\n     * @param {Number} loggedInUserId The logged in user id.\n     */\n    var registerEventListeners = function(body, loggedInUserId) {\n        var settingsContainer = body.find(SELECTORS.SETTINGS);\n\n        CustomEvents.define(settingsContainer, [\n            CustomEvents.events.activate\n        ]);\n\n        settingsContainer.on(CustomEvents.events.activate, SELECTORS.NOTIFICATIONS_PREFERENCE, function(e) {\n            var container = $(e.target).closest(SELECTORS.NOTIFICATION_PREFERENCES_CONTAINER);\n            var checkboxes = container.find(SELECTORS.CHECKBOX);\n            if (!checkboxes.length) {\n                return;\n            }\n            // The preference value is all of the enabled processors, comma separated, so let's\n            // see which ones are enabled.\n            var values = checkboxes.toArray().reduce(function(carry, checkbox) {\n                checkbox = $(checkbox);\n                if (checkbox.prop('checked')) {\n                    carry.push(checkbox.attr('data-name'));\n                }\n\n                return carry;\n            }, []);\n            var newValue = values.length ? values.join(',') : 'none';\n            var preferences = [\n                {\n                    type: 'message_provider_moodle_instantmessage_loggedoff',\n                    value: newValue\n                },\n                {\n                    type: 'message_provider_moodle_instantmessage_loggedin',\n                    value: newValue\n                }\n            ];\n\n            savePreferences(loggedInUserId, preferences);\n        });\n\n        settingsContainer.on('change', SELECTORS.PRIVACY_PREFERENCE, function(e) {\n            var newValue = $(e.target).val();\n            var preferences = [\n                {\n                    type: 'message_blocknoncontacts',\n                    value: newValue\n                }\n            ];\n\n            savePreferences(loggedInUserId, preferences);\n        });\n\n        settingsContainer.on(CustomEvents.events.activate, SELECTORS.ENTER_TO_SEND_PREFERENCE, function(e) {\n            var newValue = $(e.target).prop('checked');\n            var preferences = [\n                {\n                    type: 'message_entertosend',\n                    value: newValue\n                }\n            ];\n\n            savePreferences(loggedInUserId, preferences);\n        });\n    };\n\n    /**\n     * Initialise the module by loading the user's messaging preferences from the server and\n     * rendering them in the settings page.\n     *\n     * Moodle may have many (or no) message processors enabled to notify the user when they\n     * receive messages. We need to dynamically build the settings page based on which processors\n     * are configured for the user.\n     *\n     * @param {Object} body The settings body element.\n     * @param {Number} loggedInUserId The logged in user id.\n     */\n    var init = function(body, loggedInUserId) {\n        // Load the message preferences from the server.\n        Repository.getUserMessagePreferences(loggedInUserId)\n            .then(function(response) {\n                // Set the values of the stright forward preferences.\n                setPrivacyPreference(body, response.blocknoncontacts);\n                setEnterToSend(body, response.entertosend);\n\n                // Parse the list of other preferences into a more usable format.\n                var notificationProcessors = [];\n                if (response.preferences.components.length) {\n                    response.preferences.components.forEach(function(component) {\n                        if (component.notifications.length) {\n                            // Filter down to just the notification processors that work on instant\n                            // messaging. We don't care about another other ones.\n                            var notificationPreferences = component.notifications.filter(function(notification) {\n                                return notification.preferencekey == NOTIFICATION_PREFERENCES_KEY;\n                            });\n\n                            if (notificationPreferences.length) {\n                                // Messaging only has one config at the moment which is for notifications\n                                // on personal messages.\n                                var configuration = component.notifications[0];\n                                notificationProcessors = configuration.processors.map(function(processor) {\n                                    // Consider the the processor enabled if either preference is set. This is\n                                    // for backwards compatibility. Going forward they will be treated as one\n                                    // setting.\n                                    var checked = processor.loggedin.checked || processor.loggedoff.checked;\n                                    return {\n                                        displayname: processor.displayname,\n                                        name: processor.name,\n                                        checked: checked,\n                                        // The admin can force processors to be enabled at a site level so\n                                        // we need to check if this processor has been locked by the admin.\n                                        locked: processor.locked,\n                                        lockedmessage: processor.lockedmessage || null,\n                                    };\n                                });\n                            }\n                        }\n                    });\n                }\n\n                var container = body.find(SELECTORS.NOTIFICATION_PREFERENCES_CONTAINER);\n                if (notificationProcessors.length) {\n                    // We have processors (i.e. email, mobile, jabber) to show.\n                    container.removeClass('hidden');\n                    // Render the processor options.\n                    return Templates.render(TEMPLATES.NOTIFICATION_PREFERENCES, {processors: notificationProcessors})\n                        .then(function(html) {\n                            container.append(html);\n                            return html;\n                        });\n                } else {\n                    return true;\n                }\n            })\n            .then(function() {\n                // We're done loading so hide the loading placeholder and show the settings.\n                body.find(SELECTORS.CONTENT_CONTAINER).removeClass('hidden');\n                body.find(SELECTORS.PLACEHOLDER_CONTAINER).addClass('hidden');\n                // Register the event listers for if the user wants to change the preferences.\n                registerEventListeners(body, loggedInUserId);\n                return;\n            })\n            .catch(Notification.exception);\n    };\n\n    /**\n     * Initialise the settings page by adding event listeners to\n     * the checkboxes.\n     *\n     * @param {string} namespace The route namespace.\n     * @param {Object} header The settings header element.\n     * @param {Object} body The settings body element.\n     * @param {Object} footer The footer body element.\n     * @param {Number} loggedInUserId The logged in user id.\n     * @return {Object} jQuery promise\n     */\n    var show = function(namespace, header, body, footer, loggedInUserId) {\n        if (!body.attr('data-init')) {\n            init(body, loggedInUserId);\n            body.attr('data-init', true);\n        }\n\n        return $.Deferred().resolve().promise();\n    };\n\n    /**\n     * String describing this page used for aria-labels.\n     *\n     * @return {Object} jQuery promise\n     */\n    var description = function() {\n        return Str.get_string('messagedrawerviewsettings', 'core_message');\n    };\n\n    return {\n        show: show,\n        description: description,\n    };\n});\n"],"file":"message_drawer_view_settings.min.js"}