HEX
Server: Apache
System: Linux sg241.singhost.net 2.6.32-896.16.1.lve1.4.51.el6.x86_64 #1 SMP Wed Jan 17 13:19:23 EST 2018 x86_64
User: honghock (909)
PHP: 8.0.30
Disabled: passthru,system,shell_exec,show_source,exec,popen,proc_open
Upload Files
File: /home/honghock/public_html/wp-content/plugins/admin-notices-manager/assets/dist/js/notices.js
"use strict";

jQuery(function () {
  var ignore_selector = '.hidden, .hide-if-js, .update-message, [aria-hidden="true"], .anm-display-notice';

  if (anm_i18n.settings['css_selector'].length > 0) {
    ignore_selector += ', ' + anm_i18n.settings['css_selector'];
  }

  jQuery('#wpbody-content .wrap').find('div.updated, div.error, div.notice, #message').not(ignore_selector).css({
    'display': 'none'
  });
});

(function ($, window) {
  var AdminNoticesManager = {
    container: null,
    counter_link: null,
    migration_delay: 100,
    migration_interval: null,
    migration_start: 0,
    migration_limit: 5000,
    popup_delay: 50,
    popup_interval: null,
    popup_start: 0,
    popup_limit: 1000,
    removal_interval: null,
    system_messages: [],
    init: function init() {
      var _this3 = this;

      var _this = this;

      var category_wrappers = '<div id="anm-system-notices"></div><div id="anm-error-notices"></div><div id="anm-warning-notices"></div><div id="anm-success-notices"></div><div id="anm-information-notices"></div><div id="anm-misc-notices"></div>'; // Attach correct wrapper type

      if ('popup' == anm_i18n.settings.popup_style) {
        $('body').append('<div id="anm-container" style="display: none;">' + category_wrappers + '</div>');
        this.container = $('#anm-container');
      } else {
        var top_padding = 34; // WP admin bar

        if ($('.woocommerce-layout__header').length > 0) {
          // WooCommerce header
          top_padding += $('.woocommerce-layout__header').height();
        }

        $('body').append('<div id="anm-container-slide-in" style="background-color: ' + anm_i18n.settings.slide_in_background_colour + '; padding-top: ' + top_padding + 'px;"><div id="anm-slide-in-content">' + category_wrappers + '</div></div>');
        this.container = $('#anm-slide-in-content');
      }

      this.counter_link = $('#wp-admin-bar-anm_notification_count');
      this.initTriggers();
      this.migration_start = new Date().getTime();
      this.migration_interval = setInterval(function () {
        _this3.transferNotices();
      }, this.migration_delay);
      var timesRun = 0;
      var interval = setInterval(function () {
        timesRun += 1;

        if (timesRun === 3) {
          _this.CheckAndStoreNotices();
        }

        if (timesRun === 4) {
          clearInterval(interval);
        } //do whatever here..

      }, 150);
      var smCount = anm_i18n.system_messages.length;

      for (var i = 0; i < smCount; i++) {
        var systemMessage = anm_i18n.system_messages[i];
        this.system_messages.push(systemMessage.replace(/%[sdf]/g, ''));
      }
    },
    getCurrentCounterValue: function getCurrentCounterValue() {
      var counter_elm = $('.anm-notification-counter span.count');

      if (0 == counter_elm.length) {
        return 0;
      }

      return parseInt(counter_elm.html(), 10);
    },
    getNoticeType: function getNoticeType(noticeElm) {
      var jqNotice = $(noticeElm);

      if (jqNotice.hasClass('notice-system')) {
        return 'system';
      }

      if (jqNotice.hasClass('notice-error')) {
        return 'error';
      }

      if (jqNotice.hasClass('notice-info') || jqNotice.hasClass('notice-information')) {
        return 'information';
      }

      if (jqNotice.hasClass('notice-warning')) {
        return 'warning';
      }

      if (jqNotice.hasClass('notice-success') || jqNotice.hasClass('updated')) {
        return 'success';
      } // Return a default so its handled by ANM.


      return 'misc';
    },
    checkMigrationInterval: function checkMigrationInterval() {
      //	clear the interval after given time or when there are no notices left to move
      var now = new Date().getTime();
      var time_diff = now - this.migration_start;

      if (time_diff > this.migration_limit) {
        //	stop interval
        clearInterval(this.migration_interval);
        this.migration_interval = null;
        this.CheckAndStoreNotices(); // Some notices might be left if they are exempted.

        var wrapper = $('.anm-notices-wrapper');

        if (wrapper.children(this.getIgnoreSelector()).length > 0) {
          wrapper.children().not(this.getIgnoreSelector()).remove();
          wrapper.show();
        }
      }
    },
    getIgnoreSelector: function getIgnoreSelector() {
      var ignore_selector = '.hidden, .hide-if-js, .update-message, [aria-hidden="true"], .anm-display-notice';

      if (anm_i18n.settings['css_selector'].length > 0) {
        ignore_selector += ', ' + anm_i18n.settings['css_selector'];
      }

      return ignore_selector;
    },
    getIgnoreParentSelector: function getIgnoreParentSelector() {
      var ignore_selector = '#loco-content';
      return ignore_selector;
    },
    transferNotices: function transferNotices() {
      var _this4 = this;

      var notices = $('#wpwrap ').find('div.updated, div.error, div.notice, #message').not(this.getIgnoreSelector()); //	filter out the system notices

      notices.each(function (index, notice) {
        var smCount = _this4.system_messages.length;

        for (var i = 0; i < smCount; i++) {
          var systemMessage = _this4.system_messages[i];

          if (notice.innerHTML.indexOf(systemMessage) > 0) {
            $(notice).addClass('notice-system');
          }
        } // Check if this notice resides in a known selector we should ignore.


        if ($(notice).parent(_this4.getIgnoreParentSelector()).length || $(notice).parent().parent(_this4.getIgnoreParentSelector()).length) {
          notices.splice(index, 1);
        }
      });
      var notifications_count = 0;
      var _container = this.container;
      notices.each(function (index, notice) {
        var noticeType = _this4.getNoticeType(notice);

        var actionTypeKey = 'system' === noticeType ? 'wordpress_system_admin_notices' : noticeType + '_level_notices';
        var actionType = anm_i18n.settings[actionTypeKey];

        if ('hide' === actionType) {
          $(notice).remove();
        } else if ('popup-only' === actionType || noticeType == 'misc') {
          jQuery(notice).css({
            'display': 'block'
          }); //	detach notices from the original place and increase the counter

          var typeWrapper = $(_container).find('#anm-' + noticeType + '-notices');

          if (!jQuery(notice).find('p').length) {
            jQuery(notice).wrapInner('<p></p>');
          }

          $(notice).detach().addClass('notice').appendTo(typeWrapper);
          notifications_count++;
        } else {
          jQuery(notice).css({
            'display': 'block'
          }).addClass('leave-in-place');
        }
      }); //	number of notifications

      var count_to_show = notifications_count; //	increase counter if already exists

      if (0 < $('.anm-notification-counter').length) {
        count_to_show += this.getCurrentCounterValue();
      }

      this.updateCounterBubble(count_to_show);
      this.checkMigrationInterval();
    },
    updateCounterBubble: function updateCounterBubble(count) {
      count = this.container.find('.notice').length;

      if (0 < $('.anm-notification-counter').length) {
        var counter_elm = $('.anm-notification-counter span.count');
        counter_elm.html(count);
      } else {
        var title = anm_i18n.title;
        this.counter_link.find('a').html(title);
        var bubble_html = '<div class="anm-notification-counter' + ' wp-core-ui wp-ui-notification">' + '<span aria-hidden="true" class="count">' + count + '</span>' + '<span class="screen-reader-text">' + count + ' ' + title + '</span>' + '</div>';
        this.counter_link.attr('data-popup-title', title);
        this.counter_link.find('a').append(bubble_html);
        this.counter_link.addClass('has-data');
      }
    },
    adjustModalHeight: function adjustModalHeight() {
      $('#TB_ajaxContent').css({
        width: '100%',
        height: $('#TB_window').height() - $('#TB_title').outerHeight() - 22 + 'px',
        padding: '2px 0px 20px 0px'
      }); //	clear the interval after given time

      if (this.popup_interval) {
        var now = new Date().getTime();
        var time_diff = now - this.popup_start;

        if (time_diff > this.popup_limit) {
          clearInterval(this.popup_interval);
          this.popup_interval = null;
        }
      }
    },
    checkNoticeRemoval: function checkNoticeRemoval() {
      if (!$('#TB_ajaxContent').height()) {
        if (this.removal_interval) {
          clearInterval(this.removal_interval);
        }

        return;
      } //	if the popup is open, check if any notices have been removed and update the count accordingly


      var notices_present_count = $('#TB_ajaxContent').find('.notice').not(':hidden').length;
      var displayed_count = this.getCurrentCounterValue();

      if (displayed_count !== notices_present_count) {
        this.updateCounterBubble(notices_present_count);
      }
    },
    CheckAndStoreNotices: function CheckAndStoreNotices() {
      // Get the notices we currently hold.
      var notices = jQuery(this.container).find('.notice');
      var noticeArr = [];

      var _this = this;

      notices.each(function (index, notice) {
        jQuery(notice).find('.anm-notice-timestamp').remove();
        var noticeHTML = notice.outerHTML;
        noticeArr[index] = noticeHTML;
      });
      jQuery.ajax({
        type: 'POST',
        dataType: 'json',
        url: anm_i18n.ajaxurl,
        data: {
          action: 'anm_log_notices',
          _wpnonce: anm_i18n.nonce,
          notices: noticeArr
        },
        complete: function complete(data) {
          _this.appendTimeDate(notices, data.responseJSON.data);

          $('.anm-notification-counter').addClass('display');
        }
      });
    },
    appendTimeDate: function appendTimeDate(notices, data) {
      var _this = this;

      notices.each(function (index, notice) {
        if (data[index] == 'do-not-display') {
          jQuery(notice).remove();

          var currentCount = _this.getCurrentCounterValue();

          var newCount = currentCount - 1;

          _this.updateCounterBubble(newCount);
        } else if (data[index][0] == 'display-notice') {
          jQuery(notice).addClass('anm-display-notice');
          jQuery(notice).insertAfter('.anm-notices-wrapper');
          var timeAndDate = '<div class="anm-notice-hide"><a href="#" data-hide-notice="' + data[index][1] + '">' + anm_i18n.hide_notice + '</a></div>';

          if (!jQuery(notice).find('.anm-notice-hide').length) {
            jQuery(timeAndDate).appendTo(notice);
          }

          var newCount = currentCount - 1;

          _this.updateCounterBubble(newCount);
        } else {
          var timeAndDate = '<div class="anm-notice-timestamp"><span class="anm-time">' + anm_i18n.date_time_preamble + data[index][1] + '</span><a href="#" data-hide-notice-forever="' + data[index][0] + '">' + anm_i18n.hide_notice_text + '</a> <a href="#" data-display-notice="' + data[index][0] + '">' + anm_i18n.display_notice + '</a></div>';

          if (!jQuery(notice).find('.anm-notice-timestamp').length) {
            jQuery(timeAndDate).appendTo(notice);
          }
        }
      });
    },
    initTriggers: function initTriggers() {
      var _this = this;

      this.counter_link.click(function () {
        if (_this.popup_interval) {
          clearInterval(_this.popup_interval);
          _this.popup_interval = null;
        }

        if (0 == _this.getCurrentCounterValue()) {
          return false;
        }

        if ('popup' == anm_i18n.settings.popup_style) {
          tb_show(_this.counter_link.attr('data-popup-title'), '#TB_inline?inlineId=anm-container');
        } else {
          $('#anm-container-slide-in').addClass('show');
        } //	start height adjustment using interval (there is no callback nor event to hook into)


        _this.popup_start = new Date().getTime();
        _this.popup_interval = setInterval(function () {
          _this.adjustModalHeight.call(_this);
        }, _this.popup_delay);

        if (_this.removal_interval) {
          clearInterval(_this.removal_interval);
        }

        _this.removal_interval = setInterval(function () {
          _this.checkNoticeRemoval.call(_this);
        }, _this.popup_delay);
        return false;
      });
      $(window).resize(function () {
        if ('popup' == anm_i18n.settings.popup_style) {
          //	adjust thick box modal height on window resize
          _this.adjustModalHeight.call(_this);
        }
      });

      if ('slide-in' == anm_i18n.settings.popup_style) {
        $(document).on('click', 'body *', function (e) {
          if ($(e.target).is('#anm-container-slide-in a')) {
            return;
          } else if (!$(e.target).is('#anm-container-slide-in')) {
            $('#anm-container-slide-in').removeClass('show');
          }
        });
      }

      jQuery(document).on('click', '[data-hide-notice-forever]', function (e) {
        e.preventDefault();
        var itemHash = jQuery(this).attr('data-hide-notice-forever');
        var itemToHide = jQuery(this).closest('.notice');
        var counter = $('.anm-notification-counter span.count').text();
        var _this2 = _this;
        jQuery.ajax({
          type: 'POST',
          dataType: 'json',
          url: anm_i18n.ajaxurl,
          data: {
            action: 'anm_hide_notice_forever',
            _wpnonce: anm_i18n.nonce,
            notice_hash: itemHash
          },
          complete: function complete(data) {
            itemToHide.slideUp(300).delay(300).remove();
            var newCount = counter - 1;

            _this2.updateCounterBubble(newCount);
          }
        });
      });
      jQuery(document).on('click', '[data-display-notice]', function (e) {
        e.preventDefault();
        var itemHash = jQuery(this).attr('data-display-notice');
        var itemToHide = jQuery(this).closest('.notice');
        var counter = $('.anm-notification-counter span.count').text();
        var _this2 = _this;
        jQuery.ajax({
          type: 'POST',
          dataType: 'json',
          url: anm_i18n.ajaxurl,
          data: {
            action: 'anm_display_notice',
            _wpnonce: anm_i18n.nonce,
            notice_hash: itemHash
          },
          complete: function complete(data) {
            jQuery(itemToHide).find('.anm-notice-timestamp').remove();
            jQuery(itemToHide).addClass('anm-display-notice');
            var timeAndDate = '<div class="anm-notice-hide"><a href="#" data-hide-notice="' + itemHash + '">' + anm_i18n.hide_notice + '</a></div>';

            if (!jQuery(itemToHide).find('.anm-notice-hide').length) {
              jQuery(timeAndDate).appendTo(itemToHide);
            }

            jQuery(itemToHide).insertAfter('.anm-notices-wrapper');
            itemToHide.slideDown();
            var newCount = counter - 1;

            _this2.updateCounterBubble(newCount);
          }
        });
      });
      jQuery(document).on('click', '[data-hide-notice]', function (e) {
        e.preventDefault();
        var itemHash = jQuery(this).attr('data-hide-notice');
        var itemToHide = jQuery(this).closest('.notice');
        var counter = $('.anm-notification-counter span.count').text();
        var _this2 = _this;
        jQuery.ajax({
          type: 'POST',
          dataType: 'json',
          url: anm_i18n.ajaxurl,
          data: {
            action: 'anm_hide_notice',
            _wpnonce: anm_i18n.nonce,
            notice_hash: itemHash
          },
          complete: function complete(data) {
            location.reload();
          }
        });
      });
    }
  };
  AdminNoticesManager.init();
})(jQuery, window);