Refresh case table without reloading the page CRM-12202
authorColeman Watts <coleman@civicrm.org>
Sat, 30 Mar 2013 03:16:23 +0000 (20:16 -0700)
committerColeman Watts <coleman@civicrm.org>
Sat, 30 Mar 2013 03:25:26 +0000 (20:25 -0700)
CRM/Case/Page/CaseDetails.php
templates/CRM/Case/Form/ActivityChangeStatus.js
templates/CRM/Case/Page/CaseDetails.tpl

index 03d101cb452427212206186ce7edcf8e8c7b8c62..bccfbb7476ca331feaeb4f0970195baaa92bd21e 100644 (file)
@@ -66,6 +66,17 @@ class CRM_Case_Page_CaseDetails extends CRM_Core_Page {
     $this->assign('caseId', $caseId);
     $this->assign('contactId', $this->_contactId);
 
+    // Make it easy to refresh this table
+    $params = array(
+      'caseId' => $caseId,
+      'type' => $type,
+      'context' => $this->_context,
+      'cid' => $this->_contactId,
+      'action' => $this->_action,
+      'snippet' => 4,
+    );
+    $this->assign('data_params', json_encode($params));
+
     return parent::run();
   }
 }
index 77e077fadf9139162e720f37e56ef793e7905011..b51a7a01b957374e94c24b7b076634079841eb6c 100644 (file)
@@ -1,19 +1,15 @@
 // http://civicrm.org/licensing
 cj(function($) {
-  $('.crm-container').on('click', 'a.crm-activity-change-status', function() {
-    changeActivityStatus(
-      $(this).attr('activity_id'),
-      $(this).attr('current_status'),
-      $(this).attr('case_id')
-    );
-    return false;
-  });
 
-  function changeActivityStatus(activityId, current_status_id, caseId) {
-    var o = $('<div class="crm-container crm-activity_change_status"></div>');
+  $('#crm-container').on('click', 'a.crm-activity-change-status', function() {
+    var link = $(this),
+      activityId = $(this).attr('activity_id'),
+      current_status_id = $(this).attr('current_status'),
+      caseId = $(this).attr('case_id'),
+      data = 'snippet=1&reset=1',
+      o = $('<div class="crm-container crm-activity_change_status"></div>');
     addCiviOverlay(o);
 
-    var data = 'snippet=1&reset=1';
     o.load(CRM.url('civicrm/case/changeactivitystatus'), data, function() {
       removeCiviOverlay(o);
       cj("#activity_change_status").val(current_status_id);
@@ -40,8 +36,16 @@ cj(function($) {
               return false;
             }
             else {
-              // just reload the page on success
-              window.location.reload();
+              // reload the table on success
+              if (window.buildCaseActivities) {
+                // If we are using a datatable
+                buildCaseActivities(true);
+              }
+              else {
+                // Legacy refresh for non-datatable screens
+                var table = link.closest('table.nestedActivitySelector');
+                table.parent().load(CRM.url('civicrm/case/details', table.data('params')));
+              }
             }
           },
           error : function(jqXHR) {
@@ -55,7 +59,8 @@ cj(function($) {
         message: o
       }
     );
-  }
+    return false;
+  });
 });
 
 
index 5509c2052b9d72de3f92725e24a185793a142e61..5cf717fd0213daef251dcc8696d44db52f3b8fbf 100644 (file)
@@ -25,7 +25,7 @@
 *}
 {strip}
 {if $rows}
-  <table class="nestedActivitySelector">
+  <table class="nestedActivitySelector" data-params='{$data_params}'>
     <tr class="columnheader">
       <th>{ts}Date{/ts}</th>
       <th>{ts}Subject{/ts}</th>
@@ -55,4 +55,4 @@
 {/if}
 {/strip}
 
-{include file="CRM/Case/Form/ActivityToCase.tpl"}
\ No newline at end of file
+{include file="CRM/Case/Form/ActivityToCase.tpl"}