Skip to content
Snippets Groups Projects
message_banner.js 1.94 KiB
(function(define) {
    'use strict';
    define([
        'gettext',
        'jquery',
        'underscore',
        'backbone',
        'text!templates/fields/message_banner.underscore',
        'edx-ui-toolkit/js/utils/html-utils'
    ], function(gettext, $, _, Backbone, messageBannerTemplate, HtmlUtils) {
        var MessageBannerView = Backbone.View.extend({

            events: {
                'click .close-btn': 'closeBanner'
            },

            closeBanner: function(event) {
                sessionStorage.setItem("isBannerClosed", true);
                this.hideMessage();
            },

            initialize: function(options) {
                if (_.isUndefined(options)) {
                    options = {};
                }
                this.options = _.defaults(options, {
                    urgency: 'high',
                    type: '',
                    hideCloseBtn: true,
                    isRecoveryEmailMsg: false,
                    isLearnerPortalEnabled: false
                });
            },

            render: function() {
                if (_.isUndefined(this.message) || _.isNull(this.message)) {
                    this.$el.html('');
                } else {
                    this.$el.html(_.template(messageBannerTemplate)(_.extend(this.options, {  // xss-lint: disable=javascript-jquery-html
                        message: this.message,
                        HtmlUtils: HtmlUtils
                    })));
                }
                return this;
            },

            showMessage: function(message) {
                this.message = message;
                if (sessionStorage.getItem("isBannerClosed") == null) {
                    this.render();
                }
            },

            hideMessage: function() {
                this.message = null;
                this.render();
            }
        });

        return MessageBannerView;
    });
}).call(this, define || RequireJS.define);