rules.debug.js 2.31 KB
/**
 * @file
 * Adds the collapsible functionality to the rules debug log.
 */

// Registers the rules namespace.
Drupal.rules = Drupal.rules || {};

(function($) {
  Drupal.behaviors.rules_debug_log = {
    attach: function(context) {
      $('.rules-debug-open').click(function () {
        var icon = $(this).children('span.ui-icon');
        if ($(this).next().is(':hidden')) {
          Drupal.rules.changeDebugIcon(icon, true);
        }
        else {
          Drupal.rules.changeDebugIcon(icon, false);
        }
        $(this).next().toggle();
      }).next().hide();

      $('.rules-debug-open-main').click(function () {
        var icon = $(this).children('span.ui-icon');
        if ($(this).parent().next().is(':hidden')) {
          Drupal.rules.changeDebugIcon(icon, true);
          $(this).parent().children('.rules-debug-open-all').text(Drupal.t('-Close all-'));
        }
        else {
          Drupal.rules.changeDebugIcon(icon, false);
          $(this).parent().children('.rules-debug-open-all').text(Drupal.t('-Open all-'));
        }
        $(this).parent().next().toggle();
      }).parent().next().hide();

      $('.rules-debug-open-all').click(function() {
        if ($('.rules-debug-open-main').parent().next().is(':hidden')) {
          $('.rules-debug-open').next().show();
          Drupal.rules.changeDebugIcon($('.rules-debug-open').children('span.ui-icon'), true);
          $('.rules-debug-open-main').parent().next().show();
          Drupal.rules.changeDebugIcon($(this).prev().children('span.ui-icon'), true);
          $(this).text(Drupal.t('-Close all-'));
        }
        else {
          $('.rules-debug-open-main').parent().next().hide();
          Drupal.rules.changeDebugIcon($('.rules-debug-open-main').children('span.ui-icon'), false);
          $(this).text(Drupal.t('-Open all-'));
          $('.rules-debug-open').next().hide();
          Drupal.rules.changeDebugIcon($(this).prev().children('span.ui-icon'), false);
        }
      });
    }
  };

  /**
   * Changes the icon of a collapsible div.
   */
  Drupal.rules.changeDebugIcon = function(item, open) {
    if (open == true) {
      item.removeClass('ui-icon-triangle-1-e');
      item.addClass('ui-icon-triangle-1-s');
    }
    else {
      item.removeClass('ui-icon-triangle-1-s');
      item.addClass('ui-icon-triangle-1-e');
    }
  }
})(jQuery);