Viewing File: /usr/local/cpanel/3rdparty/share/angular-growl-2/src/growlFactory.js

angular.module("angular-growl").provider("growl", function () {
  "use strict";

  var _ttl = {success: null, error: null, warning: null, info: null},
    _messagesKey = 'messages',
    _messageTextKey = 'text',
    _messageTitleKey = 'title',
    _messageSeverityKey = 'severity',
    _onlyUniqueMessages = true,
    _messageVariableKey = 'variables',
    _referenceId = 0,
    _inline = false,
    _position = 'top-right',
    _disableCloseButton = false,
    _disableIcons = false,
    _reverseOrder = false,
    _disableCountDown = false,
    _translateMessages = true;

  /**
   * set a global timeout (time to live) after which messages will be automatically closed
   *
   * @param ttl in seconds
   */
  this.globalTimeToLive = function (ttl) {
    if (typeof ttl === 'object') {
      for (var k in ttl) {
        if (ttl.hasOwnProperty(k)) {
          _ttl[k] = ttl[k];
        }
      }
    } else {
      for (var severity in _ttl) {
        if (_ttl.hasOwnProperty(severity)) {
          _ttl[severity] = ttl;
        }
      }
    }
  };

  /**
   * set whether the messages should be translated (default:true) when the translator is available
   *
   * @param {bool} translateMessages true to to translate all messages
   */
  this.globalTranslateMessages = function (translateMessages) {
    _translateMessages = translateMessages;
  };

  /**
   * set whether the close button should be displayed (default) or hidden
   *
   * @param {bool} disableCloseButton true to hide close button on all messages
   */
  this.globalDisableCloseButton = function (disableCloseButton) {
    _disableCloseButton = disableCloseButton;
  };

  /**
   * set whether the icons will be shown in the message
   *
   * @param {bool} messageIcons
   */
  this.globalDisableIcons = function (disableIcons) {
    _disableIcons = disableIcons;
  };

  /**
   * set whether message ordering is reversed
   *
   * @param {bool} reverseOrder
   */
  this.globalReversedOrder = function (reverseOrder) {
    _reverseOrder = reverseOrder;
  };

  /**
   * set whether to show the count down
   *
   * @param {bool} reverseOrder
   */
  this.globalDisableCountDown = function (countDown) {
    _disableCountDown = countDown;
  };

  /**
   * set the key in server sent messages the serverMessagesInterecptor is looking for variables to inject in the message
   *
   * @param  {string} messageVariableKey default: variables
   */
  this.messageVariableKey = function (messageVariableKey) {
    _messageVariableKey = messageVariableKey;
  };

  /**
   * set wheter the notficiation is displayed inline our in growl like fasion
   *
   * @param {bool} inline true to show only inline notifications
   */
  this.globalInlineMessages = function (inline) {
    _inline = inline;
  };

  /**
   * set position
   *
   * @param  {string} messageVariableKey default: top-right
   */
  this.globalPosition = function (position) {
    _position = position;
  };
  /**
   * sets the key in $http response the serverMessagesInterecptor is looking for server-sent messages, value of key
   * needs to be an array of objects
   *
   * @param {string} messagesKey default: messages
   */
  this.messagesKey = function (messagesKey) {
    _messagesKey = messagesKey;
  };

  /**
   * sets the key in server sent messages the serverMessagesInterecptor is looking for text of message
   *
   * @param {string} messageTextKey default: text
   */
  this.messageTextKey = function (messageTextKey) {
    _messageTextKey = messageTextKey;
  };

  /**
   * sets the key in server sent messages the serverMessagesInterecptor is looking for title of message
   *
   * @param {string} messageTextKey default: text
   */
  this.messageTitleKey = function (messageTitleKey) {
    _messageTitleKey = messageTitleKey;
  };

  /**
   * sets the key in server sent messages the serverMessagesInterecptor is looking for severity of message
   *
   * @param {string} messageSeverityKey default: severity
   */
  this.messageSeverityKey = function (messageSeverityKey) {
    _messageSeverityKey = messageSeverityKey;
  };

  this.onlyUniqueMessages = function (onlyUniqueMessages) {
    _onlyUniqueMessages = onlyUniqueMessages;
  };

  /**
   * $http interceptor that can be added to array of $http interceptors during config phase of application
   * via $httpProvider.responseInterceptors.push(...)
   *
   */
  this.serverMessagesInterceptor = ['$q', 'growl', function ($q, growl) {
    function checkResponse (response) {
      if (response !== undefined && response.data[_messagesKey] && response.data[_messagesKey].length > 0) {
        growl.addServerMessages(response.data[_messagesKey]);
      }
    }

    return {
      'response': function (response) {
        checkResponse(response);
        return response;
      },
      'responseError': function (rejection) {
        checkResponse(rejection);
        return $q.reject(rejection);
      }
    };
  }];

  this.$get = ["$rootScope", "$interpolate", "$sce", "$filter", "$timeout", "growlMessages", function ($rootScope, $interpolate, $sce, $filter, $timeout, growlMessages) {
    var translate;

    growlMessages.onlyUnique = _onlyUniqueMessages;
    growlMessages.reverseOrder = _reverseOrder;

    try {
      translate = $filter("translate");
    } catch (e) {
      //
    }

    function broadcastMessage (message) {
      if (translate && message.translateMessage) {
        message.text = translate(message.text, message.variables);
      } else if (message.interpolate || (Object.keys(message.variables).length > 0)) {
        var polation = $interpolate(message.text);
        message.text = polation(message.variables);
      }
      var addedMessage = growlMessages.addMessage(message);
      $rootScope.$broadcast("growlMessage", message);
      $timeout(function () {
      }, 0);
      return addedMessage;
    }

    function sendMessage (text, config, severity) {
      var _config = config || {}, message;

      message = {
        text: text,
        title: _config.title,
        severity: severity,
        ttl: _config.ttl || _ttl[severity],
        variables: _config.variables || {},
        disableCloseButton: _config.disableCloseButton === undefined ? _disableCloseButton : _config.disableCloseButton,
        disableIcons: _config.disableIcons === undefined ? _disableIcons : _config.disableIcons,
        disableCountDown: _config.disableCountDown === undefined ? _disableCountDown : _config.disableCountDown,
        position: _config.position || _position,
        referenceId: _config.referenceId || _referenceId,
        translateMessage: _config.translateMessage === undefined ? _translateMessages : _config.translateMessage,
        destroy: function () {
          growlMessages.deleteMessage(message);
        },
        setText: function (newText) {
          message.text = $sce.trustAsHtml(String(newText));
        },
        onclose: _config.onclose,
        onopen: _config.onopen,
        interpolate: _config.interpolate
      };

      return broadcastMessage(message);
    }

    /**
     * add one warning message with bootstrap class: alert
     *
     * @param {string} text
     * @param {{ttl: number}} config
     */
    function warning (text, config) {
      return sendMessage(text, config, "warning");
    }

    /**
     * add one error message with bootstrap classes: alert, alert-error
     *
     * @param {string} text
     * @param {{ttl: number}} config
     */
    function error (text, config) {
      return sendMessage(text, config, "error");
    }

    /**
     * add one info message with bootstrap classes: alert, alert-info
     *
     * @param {string} text
     * @param {{ttl: number}} config
     */
    function info (text, config) {
      return sendMessage(text, config, "info");
    }

    /**
     * add one success message with bootstrap classes: alert, alert-success
     *
     * @param {string} text
     * @param {{ttl: number}} config
     */
    function success (text, config) {
      return sendMessage(text, config, "success");
    }

    /**
     * add one message with specified severity
     *
     * @param {string} text
     * @param {{ttl: number}} config
     * @param {string} severity
     */
    function general (text, config, severity) {
      severity = (severity || "error").toLowerCase();
      sendMessage(text, config, severity);
    }

    /**
     * add a indefinite number of messages that a backend server may have sent as a validation result
     *
     * @param {Array.<object>} messages
     */
    function addServerMessages (messages) {
      if ((!messages) || (!messages.length)) {
        return;
      }
      var i, message, severity, length;
      length = messages.length;
      for (i = 0; i < length; i++) {
        message = messages[i];

        if (message[_messageTextKey]) {
          severity = (message[_messageSeverityKey] || "error").toLowerCase();
          var config = {};
          config.variables = message[_messageVariableKey] || {};
          config.title = message[_messageTitleKey];
          sendMessage(message[_messageTextKey], config, severity);
        }
      }
    }

    function onlyUnique () {
      return _onlyUniqueMessages;
    }

    function reverseOrder () {
      return _reverseOrder;
    }

    function inlineMessages () {
      return _inline;
    }

    function position () {
      return _position;
    }

    return {
      warning: warning,
      error: error,
      info: info,
      success: success,
      general: general,
      addServerMessages: addServerMessages,
      onlyUnique: onlyUnique,
      reverseOrder: reverseOrder,
      inlineMessages: inlineMessages,
      position: position
    };
  }];
});
Back to Directory File Manager