JS updates to support HR-337
authorColeman Watts <coleman@civicrm.org>
Fri, 11 Apr 2014 01:22:17 +0000 (21:22 -0400)
committerColeman Watts <coleman@civicrm.org>
Fri, 11 Apr 2014 01:22:17 +0000 (21:22 -0400)
js/Common.js
js/crm.ajax.js

index 5a78933218b98c7ac1787c114d499f83dbde660d..fbc0defdb69ba16318b7118c248ffb6ca2cbfe28 100644 (file)
@@ -406,17 +406,18 @@ CRM.validate = CRM.validate || {
     .on('crmLoad', function(e) {
       $('table.row-highlight', e.target)
         .off('.rowHighlight')
-        .on('change.rowHighlight', 'input.select-row, input.select-rows', function () {
-          var target, table = $(this).closest('table');
+        .on('change.rowHighlight', 'input.select-row, input.select-rows', function (e, data) {
+          var filter, $table = $(this).closest('table');
           if ($(this).hasClass('select-rows')) {
-            target = $('tbody tr', table);
-            $('input.select-row', table).prop('checked', $(this).prop('checked'));
+            filter = $(this).prop('checked') ? ':not(:checked)' : ':checked';
+            $('input.select-row' + filter, $table).prop('checked', $(this).prop('checked')).trigger('change', 'master-selected');
           }
           else {
-            target = $(this).closest('tr');
-            $('input.select-rows', table).prop('checked', $(".select-row:not(':checked')", table).length < 1);
+            $(this).closest('tr').toggleClass('crm-row-selected', $(this).prop('checked'));
+            if (data !== 'master-selected') {
+              $('input.select-rows', $table).prop('checked', $(".select-row:not(':checked')", $table).length < 1);
+            }
           }
-          target.toggleClass('crm-row-selected', $(this).is(':checked'));
         })
         .find('input.select-row:checked').parents('tr').addClass('crm-row-selected');
       $('.crm-select2:not(.select2-offscreen, .select2-container)', e.target).crmSelect2();
index e198881ba33784b96dbd71d9150368074bdc38cb..a13d5dec4ebd0b0f00f6feb10cb2646b2b4842e5 100644 (file)
       var that = this;
       var url = this._formatUrl(this.options.url);
       this.options.crmForm && $('form', this.element).ajaxFormUnbind();
+      if (this._originalContent === null) {
+        this._originalContent = this.element.contents().detach();
+      }
       this.options.block && $('.blockOverlay', this.element).length < 1 && this.element.block();
       $.getJSON(url, function(data) {
         if (typeof(data) != 'object' || typeof(data.content) != 'string') {
           return;
         }
         data.url = url;
-        that.element.trigger('crmBeforeLoad', data);
-        if (that._originalContent === null) {
-          that._originalContent = that.element.contents().detach();
-        }
-        that.element.html(data.content);
+        that.element.trigger('crmBeforeLoad', data).html(data.content);
         that._handleOrderLinks();
         that.element.trigger('crmLoad', data);
         that.options.crmForm && that.element.trigger('crmFormLoad', data);