client/player/test/emission_fichiers/ajax-responder.js
author wakimd
Fri, 22 Oct 2010 18:14:30 +0200
changeset 1 eb9188f2ee4f
permissions -rw-r--r--
first commit
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
     1
// $Id: ajax-responder.js,v 1.18.2.6 2010/01/22 06:48:08 merlinofchaos Exp $
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
     2
/**
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
     3
 * @file
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
     4
 *
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
     5
 * CTools flexible AJAX responder object.
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
     6
 */
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
     7
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
     8
(function ($) {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
     9
  Drupal.CTools = Drupal.CTools || {};
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    10
  Drupal.CTools.AJAX = Drupal.CTools.AJAX || {};
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    11
  Drupal.CTools.AJAX.commands = Drupal.CTools.AJAX.commands || {};
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    12
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    13
  /**
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    14
   * Success callback for an ajax request.
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    15
   *
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    16
   * This function expects to receive a packet of data from a JSON object
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    17
   * which is essentially a list of commands. Each commands must have a
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    18
   * 'command' setting and this setting must resolve to a function in the
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    19
   * Drupal.CTools.AJAX.commands space.
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    20
   */
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    21
  Drupal.CTools.AJAX.respond = function(data) {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    22
    for (i in data) {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    23
      if (data[i]['command'] && Drupal.CTools.AJAX.commands[data[i]['command']]) {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    24
        Drupal.CTools.AJAX.commands[data[i]['command']](data[i]);
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    25
      }
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    26
    }
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    27
  };
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    28
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    29
  /**
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    30
   * Generic replacement click handler to open the modal with the destination
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    31
   * specified by the href of the link.
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    32
   */
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    33
  Drupal.CTools.AJAX.clickAJAXLink = function() {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    34
    if ($(this).hasClass('ctools-ajaxing')) {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    35
      return false;
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    36
    }
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    37
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    38
    var url = $(this).attr('href');
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    39
    var object = $(this);
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    40
    $(this).addClass('ctools-ajaxing');
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    41
    try {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    42
      url = url.replace(/nojs/g, 'ajax');
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    43
      $.ajax({
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    44
        type: "POST",
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    45
        url: url,
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    46
        data: { 'js': 1, 'ctools_ajax': 1 },
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    47
        global: true,
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    48
        success: Drupal.CTools.AJAX.respond,
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    49
        error: function(xhr) {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    50
          Drupal.CTools.AJAX.handleErrors(xhr, url);
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    51
        },
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    52
        complete: function() {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    53
          object.removeClass('ctools-ajaxing');
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    54
        },
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    55
        dataType: 'json'
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    56
      });
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    57
    }
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    58
    catch (err) {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    59
      alert("An error occurred while attempting to process " + url);
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    60
      $(this).removeClass('ctools-ajaxing');
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    61
      return false;
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    62
    }
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    63
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    64
    return false;
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    65
  };
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    66
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    67
  /**
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    68
   * Generic replacement click handler to open the modal with the destination
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    69
   * specified by the href of the link.
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    70
   */
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    71
  Drupal.CTools.AJAX.clickAJAXButton = function() {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    72
    if ($(this).hasClass('ctools-ajaxing')) {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    73
      return false;
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    74
    }
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    75
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    76
    // Put our button in.
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    77
    this.form.clk = this;
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    78
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    79
    var url = Drupal.CTools.AJAX.findURL(this);
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    80
    $(this).addClass('ctools-ajaxing');
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    81
    var object = $(this);
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    82
    try {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    83
      if (url) {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    84
        url = url.replace('/nojs/', '/ajax/');
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    85
        $.ajax({
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    86
          type: "POST",
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    87
          url: url,
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    88
          data: { 'js': 1, 'ctools_ajax': 1 },
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    89
          global: true,
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    90
          success: Drupal.CTools.AJAX.respond,
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    91
          error: function(xhr) {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    92
            Drupal.CTools.AJAX.handleErrors(xhr, url);
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    93
          },
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    94
          complete: function() {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    95
            object.removeClass('ctools-ajaxing');
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    96
          },
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    97
          dataType: 'json'
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    98
        });
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
    99
      }
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   100
      else {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   101
        var form = this.form;
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   102
        url = $(form).attr('action');
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   103
        url = url.replace('/nojs/', '/ajax/');
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   104
        $(form).ajaxSubmit({
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   105
          type: "POST",
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   106
          url: url,
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   107
          data: { 'js': 1, 'ctools_ajax': 1 },
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   108
          global: true,
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   109
          success: Drupal.CTools.AJAX.respond,
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   110
          error: function(xhr) {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   111
            Drupal.CTools.AJAX.handleErrors(xhr, url);
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   112
          },
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   113
          complete: function() {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   114
            object.removeClass('ctools-ajaxing');
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   115
          },
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   116
          dataType: 'json'
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   117
        });
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   118
      }
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   119
    }
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   120
    catch (err) {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   121
      alert("An error occurred while attempting to process " + url);
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   122
      $(this).removeClass('ctools-ajaxing');
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   123
      return false;
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   124
    }
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   125
    return false;
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   126
  };
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   127
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   128
  /**
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   129
   * Display error in a more fashion way
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   130
   */
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   131
  Drupal.CTools.AJAX.handleErrors = function(xhr, path) {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   132
    var error_text = '';
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   133
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   134
    if ((xhr.status == 500 && xhr.responseText) || xhr.status == 200) {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   135
      error_text = xhr.responseText;
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   136
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   137
      // Replace all &lt; and &gt; by < and >
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   138
      error_text = error_text.replace("/&(lt|gt);/g", function (m, p) {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   139
        return (p == "lt")? "<" : ">";
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   140
      });
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   141
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   142
      // Now, replace all html tags by empty spaces
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   143
      error_text = error_text.replace(/<("[^"]*"|'[^']*'|[^'">])*>/gi,"");
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   144
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   145
      // Fix end lines
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   146
      error_text = error_text.replace(/[\n]+\s+/g,"\n");
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   147
    }
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   148
    else if (xhr.status == 500) {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   149
      error_text = xhr.status + ': ' + Drupal.t("Internal server error. Please see server or PHP logs for error information.");
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   150
    }
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   151
    else {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   152
      error_text = xhr.status + ': ' + xhr.statusText;
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   153
    }
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   154
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   155
    alert(Drupal.t("An error occurred at @path.\n\nError Description: @error", {'@path': path, '@error': error_text}));
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   156
  }
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   157
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   158
  /**
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   159
   * Generic replacement for change handler to execute ajax method.
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   160
   */
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   161
  Drupal.CTools.AJAX.changeAJAX = function () {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   162
    if ($(this).hasClass('ctools-ajaxing')) {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   163
      return false;
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   164
    }
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   165
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   166
    var url = Drupal.CTools.AJAX.findURL(this);
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   167
    $(this).addClass('ctools-ajaxing');
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   168
    var object = $(this);
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   169
    var form_id = $(object).parents('form').get(0).id;
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   170
    try {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   171
      if (url) {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   172
        url = url.replace('/nojs/', '/ajax/');
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   173
        $.ajax({
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   174
          type: "POST",
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   175
          url: url,
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   176
          data: {'ctools_changed': $(this).val(), 'js': 1, 'ctools_ajax': 1 },
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   177
          global: true,
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   178
          success: Drupal.CTools.AJAX.respond,
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   179
          error: function(xhr) {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   180
            Drupal.CTools.AJAX.handleErrors(xhr, url);
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   181
          },
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   182
          complete: function() {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   183
            object.removeClass('ctools-ajaxing');
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   184
            if ($(object).hasClass('ctools-ajax-submit-onchange')) {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   185
              $('form#' + form_id).submit();
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   186
            }
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   187
          },
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   188
          dataType: 'json'
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   189
        });
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   190
      }
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   191
      else {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   192
        if ($(object).hasClass('ctools-ajax-submit-onchange')) {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   193
          $('form#' + form_id).submit();
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   194
        }
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   195
        return false;
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   196
      }
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   197
    }
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   198
    catch (err) {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   199
      alert("An error occurred while attempting to process " + url);
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   200
      $(this).removeClass('ctools-ajaxing');
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   201
      return false;
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   202
    }
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   203
    return false;
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   204
  };
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   205
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   206
  /**
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   207
   * Find a URL for an AJAX button.
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   208
   *
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   209
   * The URL for this gadget will be composed of the values of items by
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   210
   * taking the ID of this item and adding -url and looking for that
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   211
   * class. They need to be in the form in order since we will
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   212
   * concat them all together using '/'.
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   213
   */
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   214
  Drupal.CTools.AJAX.findURL = function(item) {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   215
    var url = '';
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   216
    var url_class = '.' + $(item).attr('id') + '-url';
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   217
    $(url_class).each(
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   218
      function() {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   219
        if (url && $(this).val()) {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   220
          url += '/';
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   221
        }
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   222
        url += $(this).val();
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   223
      });
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   224
    return url;
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   225
  };
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   226
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   227
  Drupal.CTools.AJAX.commands.prepend = function(data) {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   228
    $(data.selector).prepend(data.data);
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   229
    Drupal.attachBehaviors($(data.selector));
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   230
  };
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   231
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   232
  Drupal.CTools.AJAX.commands.append = function(data) {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   233
    $(data.selector).append(data.data);
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   234
    Drupal.attachBehaviors($(data.selector));
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   235
  };
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   236
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   237
  Drupal.CTools.AJAX.commands.replace = function(data) {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   238
    $(data.selector).replaceWith(data.data);
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   239
    Drupal.attachBehaviors($(data.selector));
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   240
  };
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   241
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   242
  Drupal.CTools.AJAX.commands.after = function(data) {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   243
    var object = $(data.data);
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   244
    $(data.selector).after(object);
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   245
    Drupal.attachBehaviors(object);
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   246
  };
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   247
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   248
  Drupal.CTools.AJAX.commands.before = function(data) {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   249
    var object = $(data.data);
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   250
    $(data.selector).before(object);
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   251
    Drupal.attachBehaviors(object);
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   252
  };
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   253
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   254
  Drupal.CTools.AJAX.commands.html = function(data) {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   255
    $(data.selector).html(data.data);
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   256
    Drupal.attachBehaviors($(data.selector));
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   257
  };
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   258
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   259
  Drupal.CTools.AJAX.commands.remove = function(data) {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   260
    $(data.selector).remove();
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   261
  };
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   262
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   263
  Drupal.CTools.AJAX.commands.changed = function(data) {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   264
    if (!$(data.selector).hasClass('changed')) {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   265
      $(data.selector).addClass('changed');
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   266
      if (data.star) {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   267
        $(data.selector).find(data.star).append(' <span class="star">*</span> ');
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   268
      }
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   269
    }
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   270
  };
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   271
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   272
  Drupal.CTools.AJAX.commands.alert = function(data) {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   273
    alert(data.text, data.title);
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   274
  };
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   275
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   276
  Drupal.CTools.AJAX.commands.css = function(data) {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   277
  /*
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   278
    if (data.selector && data.selector.contains('* html ')) {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   279
      // This indicates an IE hack and we should only do it if we are IE.
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   280
      if (!jQuery.browser.msie) {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   281
        return;
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   282
      }
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   283
      data.selector = data.selector.replace('* html ', '');
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   284
    }
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   285
  */
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   286
    $(data.selector).css(data.argument);
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   287
  };
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   288
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   289
  Drupal.CTools.AJAX.commands.settings = function(data) {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   290
    $.extend(Drupal.settings, data.argument);
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   291
  };
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   292
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   293
  Drupal.CTools.AJAX.commands.data = function(data) {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   294
    $(data.selector).data(data.name, data.value);
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   295
  };
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   296
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   297
  Drupal.CTools.AJAX.commands.attr = function(data) {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   298
    $(data.selector).attr(data.name, data.value);
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   299
  };
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   300
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   301
  Drupal.CTools.AJAX.commands.restripe = function(data) {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   302
    // :even and :odd are reversed because jquery counts from 0 and
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   303
    // we count from 1, so we're out of sync.
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   304
    $('tbody tr:not(:hidden)', $(data.selector))
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   305
      .removeClass('even')
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   306
      .removeClass('odd')
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   307
      .filter(':even')
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   308
        .addClass('odd')
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   309
      .end()
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   310
      .filter(':odd')
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   311
        .addClass('even');
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   312
  };
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   313
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   314
  Drupal.CTools.AJAX.commands.redirect = function(data) {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   315
    location.href = data.url;
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   316
  };
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   317
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   318
  Drupal.CTools.AJAX.commands.reload = function(data) {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   319
    location.reload();
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   320
  };
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   321
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   322
  Drupal.CTools.AJAX.commands.submit = function(data) {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   323
    $(data.selector).submit();
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   324
  }
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   325
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   326
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   327
  /**
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   328
   * Bind links that will open modals to the appropriate function.
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   329
   */
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   330
  Drupal.behaviors.CToolsAJAX = function(context) {
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   331
    // Bind links
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   332
    $('a.ctools-use-ajax:not(.ctools-use-ajax-processed)', context)
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   333
      .addClass('ctools-use-ajax-processed')
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   334
      .click(Drupal.CTools.AJAX.clickAJAXLink);
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   335
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   336
    // Bind buttons
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   337
    $('input.ctools-use-ajax:not(.ctools-use-ajax-processed), button.ctools-use-ajax:not(.ctools-use-ajax-processed)', context)
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   338
      .addClass('ctools-use-ajax-processed')
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   339
      .click(Drupal.CTools.AJAX.clickAJAXButton);
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   340
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   341
    // Bind select
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   342
    $('select, input:text, input:radio, input:checkbox', context)
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   343
       .filter('.ctools-use-ajax-onchange:not(.ctools-use-ajax-processed)')
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   344
       .addClass('ctools-use-ajax-processed')
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   345
       .change(Drupal.CTools.AJAX.changeAJAX);
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   346
  };
eb9188f2ee4f first commit
wakimd
parents:
diff changeset
   347
})(jQuery);