worked on CRM-12012, delete case roles for all the client if deleted for one. also...
authorKurund Jalmi <kurund@civicrm.org>
Sun, 17 Mar 2013 11:00:04 +0000 (16:30 +0530)
committerKurund Jalmi <kurund@civicrm.org>
Sun, 17 Mar 2013 11:21:52 +0000 (16:51 +0530)
CRM/Activity/Page/AJAX.php
CRM/Case/Page/AJAX.php
CRM/Case/xml/Menu/Case.xml
templates/CRM/Case/Form/CaseView.tpl

index 2cc9e18e91615acbb29a6ef8ba78db2b5907e2e9..454f531f8a610933d3f2cc258f583e97ab752851 100644 (file)
@@ -254,12 +254,12 @@ class CRM_Activity_Page_AJAX {
     foreach ($caseRelationships as $key => $row) {
       // view user links
       if ($caseRelationships[$key]['cid']) {
-      $caseRelationships[$key]['name'] = '<a href='.CRM_Utils_System::url('civicrm/contact/view',
+        $caseRelationships[$key]['name'] = '<a href='.CRM_Utils_System::url('civicrm/contact/view',
           'action=view&reset=1&cid='.$caseRelationships[$key]['cid']).'>'.$caseRelationships[$key]['name'].'</a>';
       }
       // email column links/icon
       if ($caseRelationships[$key]['email']) {
-      $caseRelationships[$key]['email'] = '<a href="'.CRM_Utils_System::url('civicrm/contact/view/activity', 'action=reset=1&action=add&atype=3&cid='.$caseRelationships[$key]['cid']).'" title="compose and send an email"><div class="icon email-icon" title="compose and send an email"></div>
+        $caseRelationships[$key]['email'] = '<a href="'.CRM_Utils_System::url('civicrm/contact/view/activity', 'action=reset=1&action=add&atype=3&cid='.$caseRelationships[$key]['cid']).'" title="compose and send an email"><div class="icon email-icon" title="compose and send an email"></div>
              </a>';
       }
       // edit links
@@ -267,12 +267,12 @@ class CRM_Activity_Page_AJAX {
         switch($caseRelationships[$key]['source']){
         case 'caseRel':
           $caseRelationships[$key]['actions'] = 
-            '<a href="#" title="edit case role" onclick="createRelationship( '.$caseRelationships[$key]['relation_type'].', '.$caseRelationships[$key]['cid'].', '.$caseRelationships[$key]['rel_id'].', '.$idx.', \''.$caseRelationships[$key]['relation'].'\' );return false;"><div class="icon edit-icon" ></div></a>&nbsp;&nbsp;<a href="'.CRM_Utils_System::url('civicrm/contact/view/rel', 'action=delete&reset=1&cid='. $caseRelationships[$key]['client_id'].'&id='.$caseRelationships[$key]['rel_id'].'&caseID='.$caseID.'').'" onclick = "if (confirm(\'Are you sure you want to remove this person from their case role?\') ) this.href+=\'&confirmed=1\'; else return false;"><div class="icon delete-icon" title="remove contact from case role"></div></a>';
+            '<a href="#" title="edit case role" onclick="createRelationship( '.$caseRelationships[$key]['relation_type'].', '.$caseRelationships[$key]['cid'].', '.$caseRelationships[$key]['rel_id'].', '.$idx.', \''.$caseRelationships[$key]['relation'].'\' );return false;"><div class="icon edit-icon" ></div></a>&nbsp;&nbsp;<a href="#" class="case-role-delete" case_id="'.$caseID.'" rel_type="'.$caseRelationships[$key]['relation_type'].'"><div class="icon delete-icon" title="remove contact from case role"></div></a>';
           break;
           
         case 'caseRoles':
           $caseRelationships[$key]['actions'] = 
-            '<a href="#" title="edit case role" onclick="createRelationship( '.$caseRelationships[$key]['relation_type'].', null, null, '.$idx.',  \''.$caseRelationships[$key]['relation'].'\');return false;"><div class="icon edit-icon"></div></a>';
+            '<a href="#" title="edit case role" onclick="createRelationship('.$caseRelationships[$key]['relation_type'].', null, null, '.$idx.',  \''.$caseRelationships[$key]['relation'].'\');return false;"><div class="icon edit-icon"></div></a>';
           break;
         }
       } else {
index 00c70611cd8ea9a77e28aabaf17f83d738d71a4f..860566625c395e89a4268682690cf51a322c2b69 100644 (file)
@@ -182,5 +182,18 @@ class CRM_Case_Page_AJAX {
     echo json_encode(TRUE);
     CRM_Utils_System::civiExit();
   }
+
+  /**
+   * Function to delete relationships specific to case and relationship type
+   */
+  static function deleteCaseRoles() {
+    $caseId  = CRM_Utils_Type::escape($_POST['case_id'], 'Integer');
+    $relType = CRM_Utils_Type::escape($_POST['rel_type'], 'Integer');
+
+    $sql = "DELETE FROM civicrm_relationship WHERE case_id={$caseId} AND relationship_type_id={$relType}";
+    CRM_Core_DAO::executeQuery($sql);
+
+    CRM_Utils_System::civiExit();
+  }
 }
 
index be30bf1dbafe5f1846a0f4b9d8661441e873cf3d..5d5e622429a31c97d59ffbb4a2a5a60dc7decb31 100644 (file)
      <path>civicrm/case/ajax/details</path>
      <page_callback>CRM_Case_Page_AJAX::CaseDetails</page_callback>
   </item>
+  <item>
+    <path>civicrm/ajax/delcaserole</path>
+    <page_callback>CRM_Case_Page_AJAX::deleteCaseRoles</page_callback>
+  </item>
 </menu>
index 7306f212e08153dd9b8fab807a070037f9b3a270..8618bcaab1d10f3a7cdda75346a6c939ae9d0285 100644 (file)
   var oTable;
 
   cj(function() {
+    cj().crmAccordions();
     buildCaseRoles(false);
   });
 
+  function deleteCaseRoles(caseselector) {
+    cj('.case-role-delete').click(function(){
+      var caseID = cj(this).attr('case_id');
+      var relType  = cj(this).attr('rel_type');
+
+      CRM.confirm(function() {
+        var postUrl = {/literal}"{crmURL p='civicrm/ajax/delcaserole' h=0 }"{literal};
+        cj.post( postUrl, {
+          rel_type: relType, case_id: caseID, key: {/literal}"{crmKey name='civicrm/ajax/delcaserole'}"{literal}},
+          function(data) {
+            // reloading datatable
+            var oTable = cj('#' + caseselector).dataTable();
+            oTable.fnDraw();
+          }
+        );
+      }
+      ,{
+        title: ts('Delete case role'),
+        message: ts('Are you sure you want to delete this case role.')
+      });
+      return false;
+    });
+  }
+
   function buildCaseRoles(filterSearch) {
     if(filterSearch) {
       oTable.fnDestroy();
     cj("#caseRoles-selector td:last-child").each( function( ) {
       cj(this).parent().addClass(cj(this).text() );
     });
+
+    // also bind delete action once rows are rendered
+    deleteCaseRoles('caseRoles-selector');
   }
 
   function printCaseReport( ) {
 
     window.location = dataUrl;
   }
-  
-  cj(function() {
-    cj().crmAccordions();
-  });
 </script>
 {/literal}
  </div><!-- /.crm-accordion-body -->