2 +--------------------------------------------------------------------+
3 | CiviCRM version 4.4 |
4 +--------------------------------------------------------------------+
5 | Copyright CiviCRM LLC (c) 2004-2013 |
6 +--------------------------------------------------------------------+
7 | This file is a part of CiviCRM. |
9 | CiviCRM is free software; you can copy, modify, and distribute it |
10 | under the terms of the GNU Affero General Public License |
11 | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. |
13 | CiviCRM is distributed in the hope that it will be useful, but |
14 | WITHOUT ANY WARRANTY; without even the implied warranty of |
15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
16 | See the GNU Affero General Public License for more details. |
18 | You should have received a copy of the GNU Affero General Public |
19 | License and the CiviCRM Licensing Exception along |
20 | with this program; if not, contact CiviCRM LLC |
21 | at info[AT]civicrm[DOT]org. If you have questions about the |
22 | GNU Affero General Public License or the licensing of CiviCRM, |
23 | see the CiviCRM license FAQ at http://civicrm.org/licensing |
24 +--------------------------------------------------------------------+
26 {* CiviCase - view case screen*}
28 <div class="crm-block crm-form-block crm-case-caseview-form-block">
30 {* here we are showing related cases w/ jquery dialog *}
31 {if $showRelatedCases}
32 {include file="CRM/Case/Form/ViewRelatedCases.tpl"}
37 <h3>{ts}Summary{/ts}</h3>
38 <table class="report crm-entity case-summary" data-entity="case" data-id="{$caseID}" data-cid="{$contactID}">
40 <tr class="crm-case-caseview-client">
41 <td colspan="5" class="label">
43 {foreach from=$caseRoles.client item=client name=clients}
44 <a href="{crmURL p='civicrm/contact/view' q="action=view&reset=1&cid=`$client.contact_id`"}" title="{ts}view contact record{/ts}">{$client.display_name}</a>{if not $smarty.foreach.clients.last}, {/if}
46 <a href="#" class="crm-hover-button" title="{ts}add new client to the case{/ts}" onclick="addClient( );return false;">
47 <span class="icon edit-icon"></span>
50 <div class="crm-block relatedCases-link"><a class="crm-hover-button crm-popup medium-popup" href="{$relatedCaseUrl}">{$relatedCaseLabel}</a></div>
58 <table class="form-layout-compressed">
59 {foreach from=$caseRoles.client item=client}
60 <tr class="crm-case-caseview-display_name">
61 <td class="label-left bold" style="padding: 0px; border: none;">{$client.display_name}</td>
64 <tr class="crm-case-caseview-phone">
65 <td class="label-left description" style="padding: 1px">{$client.phone}</td>
68 {if $client.birth_date}
69 <tr class="crm-case-caseview-birth_date">
70 <td class="label-left description" style="padding: 1px">{ts}DOB{/ts}: {$client.birth_date|crmDate}</td>
76 <div class="crm-block relatedCases-link"><a class="crm-hover-button crm-popup medium-popup" href="{$relatedCaseUrl}">{$relatedCaseLabel}</a></div>
80 <td class="crm-case-caseview-case_subject label">
81 <span class="crm-case-summary-label">{ts}Subject{/ts}:</span> {$caseDetails.case_subject}
83 <td class="crm-case-caseview-case_type label">
84 <span class="crm-case-summary-label">{ts}Type{/ts}:</span> {$caseDetails.case_type} <a class="crm-hover-button crm-popup" href="{crmURL p='civicrm/case/activity' q="action=add&reset=1&cid=`$contactId`&caseid=`$caseId`&selectedChild=activity&atype=`$changeCaseTypeId`"}" title="{ts}Change case type (creates activity record){/ts}"><span class="icon edit-icon"></span></a>
86 <td class="crm-case-caseview-case_status label">
87 <span class="crm-case-summary-label">{ts}Status{/ts}:</span> {$caseDetails.case_status} <a class="crm-hover-button crm-popup" href="{crmURL p='civicrm/case/activity' q="action=add&reset=1&cid=`$contactId`&caseid=`$caseId`&selectedChild=activity&atype=`$changeCaseStatusId`"}" title="{ts}Change case status (creates activity record){/ts}"><span class="icon edit-icon"></span></a>
89 <td class="crm-case-caseview-case_start_date label">
90 <span class="crm-case-summary-label">{ts}Open Date{/ts}:</span> {$caseDetails.case_start_date|crmDate} <a class="crm-hover-button crm-popup" href="{crmURL p='civicrm/case/activity' q="action=add&reset=1&cid=`$contactId`&caseid=`$caseId`&selectedChild=activity&atype=`$changeCaseStartDateId`"}" title="{ts}Change case start date (creates activity record){/ts}"><span class="icon edit-icon"></span></a>
92 <td class="crm-case-caseview-{$caseID} label">
93 <span class="crm-case-summary-label">{ts}ID{/ts}:</span> {$caseID}
98 <div id="caseSummary">
99 {foreach from=$hookCaseSummary item=val key=div_id}
100 <div id="{$div_id}"><label>{$val.label}</label><div class="value">{$val.value}</div></div>
105 <div class="case-control-panel">
108 {$form.add_activity_type_id.html}
109 {if $hasAccessToAllCases}
110 {$form.timeline_id.html}{$form._qf_CaseView_next.html}
111 {$form.report_id.html}
117 {if $hasAccessToAllCases}
118 <a class="crm-hover-button action-item no-popup" href="{crmURL p='civicrm/case/report/print' q="all=1&redact=0&cid=$contactID&caseID=$caseId&asn=standard_timeline"}"><span class="icon print-icon"></span> {ts}Print Report{/ts}</a>
122 <a href="#merge_cases" class="action-item no-popup crm-hover-button case-miniform"><span class="icon ui-icon-copy"></span>{ts}Merge Case{/ts}</a>
123 {$form._qf_CaseView_next_merge_case.html}
124 <span id='merge_cases' class="hiddenElement">
125 {$form.merge_case_id.html}
129 {if call_user_func(array('CRM_Core_Permission','giveMeAllACLs'))}
130 <a class="action-item crm-hover-button medium-popup" href="{crmURL p='civicrm/contact/view/case/editClient' h=1 q="reset=1&action=update&id=$caseID&cid=$contactID"}"><span class="icon ui-icon-person"></span> {ts}Assign to Another Client{/ts}</a>
136 <div class="clear"></div>
137 {include file="CRM/Case/Page/CustomDataView.tpl"}
139 <div class="crm-accordion-wrapper collapsed crm-case-roles-block">
140 <div class="crm-accordion-header">
142 </div><!-- /.crm-accordion-header -->
143 <div class="crm-accordion-body">
145 {if $hasAccessToAllCases}
146 <div class="crm-submit-buttons">
147 <a class="button" href="#" onclick="addRole();return false;"><span><div class="icon add-icon"></div>{ts}Add new role{/ts}</span></a>
151 <table id="caseRoles-selector" class="report-layout">
153 <th>{ts}Case Role{/ts}</th>
154 <th>{ts}Name{/ts}</th>
155 <th>{ts}Phone{/ts}</th>
156 <th>{ts}Email{/ts}</th>
157 {if $relId neq 'client' and $hasAccessToAllCases}
158 <th id="nosort">{ts}Actions{/ts}</th>
163 <div id="deleteCaseRole" class="case-miniform hiddenElement">
164 {ts}Are you sure you want to delete this case role?{/ts}
168 <script type="text/javascript">
172 buildCaseRoles(false);
175 function buildCaseRoles(filterSearch) {
181 var sourceUrl = {/literal}"{crmURL p='civicrm/ajax/caseroles' h=0 q='snippet=4&caseID='}{$caseID}"{literal};
182 sourceUrl = sourceUrl + '&cid={/literal}{$contactID}{literal}';
183 sourceUrl = sourceUrl + '&userID={/literal}{$userID}{literal}';
185 cj('#caseRoles-selector th').each( function( ) {
186 if ( cj(this).attr('id') != 'nosort' ) {
187 columns += '{"sClass": "' + cj(this).attr('class') +'"},';
190 columns += '{ "bSortable": false },';
195 columns = columns.substring(0, columns.length - 1 );
196 eval('columns =[' + columns + ']');
198 oTable = cj('#caseRoles-selector').dataTable({
200 "bAutoWidth" : false,
202 "aoColumns" : columns,
205 "asStripClasses" : [ "odd-row", "even-row" ],
206 "sPaginationType": "full_numbers",
207 "sDom" : '<"crm-datatable-pager-top"lfp>rt<"crm-datatable-pager-bottom"ip>',
209 "sAjaxSource": sourceUrl,
210 "iDisplayLength": 10,
211 "fnDrawCallback": function() { setCaseRolesSelectorClass(); },
212 "fnServerData": function ( sSource, aoData, fnCallback ) {
218 "success": fnCallback
224 function setCaseRolesSelectorClass( ) {
225 cj("#caseRoles-selector td:last-child").each( function( ) {
226 cj(this).parent().addClass(cj(this).text() );
232 </div><!-- /.crm-accordion-body -->
233 </div><!-- /.crm-accordion-wrapper -->
235 {ts}Begin typing last name of contact.{/ts}<br/>
236 <input type="text" id="rel_contact"/>
237 <input type="hidden" id="rel_contact_id" value="">
241 <script type="text/javascript">
243 cj("#dialog").hide( );
245 function addClient( ) {
246 cj("#dialog").show( );
248 cj("#dialog").dialog({
249 title: "{/literal}{ts escape="js"}Add Client to the Case{/ts}{literal}",
251 close : function(event, ui) {
252 cj("#rel_contact").unautocomplete( );
253 cj("#dialog").hide( );
255 overlay: { opacity: 0.5, background: "black" },
258 var contactUrl = {/literal}"{crmURL p='civicrm/ajax/rest' q='className=CRM_Contact_Page_AJAX&fnName=getContactList&json=1&context=caseview' h=0 }"{literal};
259 cj("#rel_contact").autocomplete( contactUrl, {
265 cj("#rel_contact").focus();
266 cj("#rel_contact").result(function(event, data, formatted) {
267 cj("input[id=rel_contact_id]").val(data[1]);
272 "{/literal}{ts escape='js'}Done{/ts}{literal}": function() {
273 var postUrl = {/literal}"{crmURL p='civicrm/case/ajax/addclient' h=0 }"{literal};
274 var caseID = {/literal}"{$caseID}"{literal};
275 var contactID = cj("#rel_contact_id").val( );
277 if ( !cj("#rel_contact").val( ) || !contactID ) {
278 cj("#rel_contact").crmError('{/literal}{ts escape="js"}Select valid contact from the list.{/ts}{literal}');
281 cj.post( postUrl, {contactID: contactID,caseID: caseID,
282 key: {/literal}"{crmKey name='civicrm/case/ajax/addclient'}"{literal} },
284 //due to caching issues we use redirection rather than reload
285 document.location = {/literal}'{crmURL q="action=view&reset=1&id=$caseID&cid=$contactID&context=$context" h=0 }'{literal};
291 "{/literal}{ts escape='js'}Cancel{/ts}{literal}": function() {
292 cj(this).dialog("close");
293 cj(this).dialog("destroy");
299 function createRelationship( relType, contactID, relID, rowNumber, relTypeName ) {
300 cj("#dialog").show( );
302 cj("#dialog").dialog({
303 title: "Assign Case Role",
305 close: function(event, ui) { cj("#rel_contact").unautocomplete( ); },
307 /* set defaults if editing */
308 cj("#rel_contact").val("");
309 cj("#rel_contact_id").val(null);
311 cj("#rel_contact_id").val(contactID);
312 var contactName = cj('#caseRoles-selector').find('tr :eq('+ rowNumber +')').children(':eq(1)').text();
313 cj("#rel_contact").val(contactName);
316 var contactUrl = {/literal}"{crmURL p='civicrm/ajax/rest' q='className=CRM_Contact_Page_AJAX&fnName=getContactList&json=1&context=caseview' h=0 }"{literal};
318 cj("#rel_contact").autocomplete( contactUrl, {
324 cj("#rel_contact").focus();
325 cj("#rel_contact").result(function(event, data, formatted) {
326 cj("input[id=rel_contact_id]").val(data[1]);
331 "{/literal}{ts escape='js'}Ok{/ts}{literal}": function() {
333 var sourceContact = {/literal}"{$contactID}"{literal};
334 var caseID = {/literal}"{$caseID}"{literal};
336 var v1 = cj("#rel_contact_id").val( );
338 if ( !cj("#rel_contact").val( ) || !v1 ) {
339 cj("#rel_contact").crmError('{/literal}{ts escape="js"}Select valid contact from the list{/ts}{literal}.');
343 var postUrl = {/literal}"{crmURL p='civicrm/ajax/relation' h=0 }"{literal};
344 cj.post( postUrl, { rel_contact: v1, rel_type: relType, contact_id: sourceContact,
345 rel_id: relID, case_id: caseID, key: {/literal}"{crmKey name='civicrm/ajax/relation'}"{literal} },
347 if ( data.status == 'process-relationship-success' ) {
348 // reloading datatable
349 var oTable = cj('#caseRoles-selector').dataTable();
353 // This is an awkward mix of smarty and javascript: the relTypeName variable is
354 // not available in smarty, could not find an i18n-correct way of doing this.
356 {capture assign=relTypeAdminLink}{crmURL p='civicrm/admin/reltype' q='reset=1' h=0 }{/capture}
358 var errorMsg = relTypeName + ': ' + '{/literal}{ts escape="js" 1="$relTypeAdminLink"}The relationship type definition for the case role is not valid for the client and / or staff contact types. You can review and edit relationship types at <a href="%1">Administer >> Option Lists >> Relationship Types</a>.{/ts}{literal}';
360 //display error message.
361 cj().crmError(errorMsg);
366 cj(this).dialog("close");
367 cj(this).dialog("destroy");
370 "{/literal}{ts escape='js'}Cancel{/ts}{literal}": function() {
371 cj(this).dialog("close");
372 cj(this).dialog("destroy");
381 {if $hasAccessToAllCases}
382 <div class="crm-accordion-wrapper collapsed crm-case-other-relationships-block">
383 <div class="crm-accordion-header">
384 {ts}Other Relationships{/ts}
385 </div><!-- /.crm-accordion-header -->
386 <div class="crm-accordion-body">
387 {capture assign=relUrl}{crmURL p='civicrm/contact/view/rel' q="action=add&reset=1&cid=`$contactId`&caseID=`$caseID`"}{/capture}
388 {if $clientRelationships}
389 <div class="crm-submit-buttons">
390 <a class="button" href="{$relUrl}">
391 <div class="icon add-icon"></div>{ts}Add client relationship{/ts}</a>
393 <table id="clientRelationships-selector" class="report-layout">
395 <th>{ts}Client Relationship{/ts}</th>
396 <th>{ts}Name{/ts}</th>
397 <th>{ts}Phone{/ts}</th>
398 <th>{ts}Email{/ts}</th>
402 <div class="messages status no-popup">
403 <div class="icon inform-icon"></div>
404 {capture assign=link}class="action-item" href="{$relUrl}"{/capture}
405 {ts 1=$link}There are no Relationships entered for this client. You can <a %1>add one</a>.{/ts}
409 <script type="text/javascript">
411 buildCaseClientRelationships(false);
414 function buildCaseClientRelationships(filterSearch) {
420 var sourceUrl = {/literal}"{crmURL p='civicrm/ajax/clientrelationships' h=0 q='snippet=4&caseID='}{$caseID}"{literal};
421 sourceUrl = sourceUrl + '&cid={/literal}{$contactID}{literal}';
422 sourceUrl = sourceUrl + '&userID={/literal}{$userID}{literal}';
424 cj('#clientRelationships-selector th').each( function( ) {
425 if ( cj(this).attr('id') != 'nosort' ) {
426 columns += '{"sClass": "' + cj(this).attr('class') +'"},';
429 columns += '{ "bSortable": false },';
434 columns = columns.substring(0, columns.length - 1 );
435 eval('columns =[' + columns + ']');
437 oTable = cj('#clientRelationships-selector').dataTable({
439 "bAutoWidth" : false,
441 "aoColumns" : columns,
444 "asStripClasses" : [ "odd-row", "even-row" ],
445 "sPaginationType": "full_numbers",
446 "sDom" : '<"crm-datatable-pager-top"lfp>rt<"crm-datatable-pager-bottom"ip>',
448 "sAjaxSource": sourceUrl,
449 "iDisplayLength": 10,
450 "fnDrawCallback": function() { setClientRelationshipsSelectorClass(); },
451 "fnServerData": function (sSource, aoData, fnCallback) {
457 "success": fnCallback
463 function setClientRelationshipsSelectorClass( ) {
464 cj("#clientRelationships-selector td:last-child").each(function() {
465 cj(this).parent().addClass(cj(this).text());
472 {if $globalRelationships}
473 <div class="crm-submit-buttons">
474 <a class="button" href="#" onClick="window.location='{crmURL p='civicrm/group/search' q="reset=1&context=amtg&amtgID=`$globalGroupInfo.id`"}'; return false;">
475 <span><div class="icon add-icon"></div>{ts 1=$globalGroupInfo.title}Add members to %1{/ts}</a></span>
477 <table id="globalRelationships-selector" class="report-layout">
479 <th>{$globalGroupInfo.title}</th>
480 <th>{ts}Phone{/ts}</th>
481 <th>{ts}Email{/ts}</th>
484 {elseif $globalGroupInfo.id}
485 <div class="messages status no-popup">
486 <div class="icon inform-icon"></div>
487 {capture assign=crmURL}{crmURL p='civicrm/group/search' q="reset=1&context=amtg&amtgID=`$globalGroupInfo.id`"}{/capture}
488 {ts 1=$crmURL 2=$globalGroupInfo.title}The group %2 has no members. You can <a href='%1'>add one</a>.{/ts}
493 <script type="text/javascript">
496 buildCaseGlobalRelationships(false);
499 function buildCaseGlobalRelationships(filterSearch) {
505 var sourceUrl = {/literal}"{crmURL p='civicrm/ajax/globalrelationships' h=0 q='snippet=4&caseID='}{$caseID}"{literal};
506 sourceUrl = sourceUrl + '&cid={/literal}{$contactID}{literal}';
507 sourceUrl = sourceUrl + '&userID={/literal}{$userID}{literal}';
509 cj('#globalRelationships-selector th').each( function( ) {
510 if (cj(this).attr('id') != 'nosort') {
511 columns += '{"sClass": "' + cj(this).attr('class') +'"},';
514 columns += '{ "bSortable": false },';
519 columns = columns.substring(0, columns.length - 1 );
520 eval('columns =[' + columns + ']');
522 oTable = cj('#globalRelationships-selector').dataTable({
524 "bAutoWidth" : false,
526 "aoColumns" : columns,
529 "asStripClasses" : [ "odd-row", "even-row" ],
530 "sPaginationType": "full_numbers",
531 "sDom" : '<"crm-datatable-pager-top"lfp>rt<"crm-datatable-pager-bottom"ip>',
533 "sAjaxSource": sourceUrl,
534 "iDisplayLength": 10,
535 "fnDrawCallback": function() { setGlobalRelationshipsSelectorClass(); },
536 "fnServerData": function ( sSource, aoData, fnCallback ) {
542 "success": fnCallback
548 function setGlobalRelationshipsSelectorClass( ) {
549 cj("#globalRelationships-selector td:last-child").each( function( ) {
550 cj(this).parent().addClass(cj(this).text() );
555 </div><!-- /.crm-accordion-body -->
556 </div><!-- /.crm-accordion-wrapper -->
558 {/if} {* other relationship section ends *}
560 <div id="addRoleDialog">
561 {$form.role_type.label}<br />
562 {$form.role_type.html}
564 {ts}Begin typing last name of contact.{/ts}<br/>
565 <input type="text" id="role_contact"/>
566 <input type="hidden" id="role_contact_id" value="">
570 <script type="text/javascript">
572 cj("#addRoleDialog").hide( );
574 cj("#addRoleDialog").show( );
576 cj("#addRoleDialog").dialog({
579 close: function(event, ui) { cj("#role_contact").unautocomplete( ); },
581 /* set defaults if editing */
582 cj("#role_contact").val( "" );
583 cj("#role_contact_id").val( null );
585 var contactUrl = {/literal}"{crmURL p='civicrm/ajax/rest' q='className=CRM_Contact_Page_AJAX&fnName=getContactList&json=1&context=caseview' h=0 }"{literal};
587 cj("#role_contact").autocomplete( contactUrl, {
593 cj("#role_contact").focus();
594 cj("#role_contact").result(function(event, data, formatted) {
595 cj("input[id=role_contact_id]").val(data[1]);
600 "{/literal}{ts escape='js'}Ok{/ts}{literal}": function() {
601 var sourceContact = {/literal}"{$contactID}"{literal};
602 var caseID = {/literal}"{$caseID}"{literal};
605 var v2 = cj("#role_type").val();
607 cj("#role_type").crmError('{/literal}{ts escape="js"}Select valid type from the list{/ts}{literal}.');
611 var v1 = cj("#role_contact_id").val( );
612 if (!cj("#role_contact").val( ) || !v1) {
613 cj("#role_contact").crmError('{/literal}{ts escape="js"}Select valid contact from the list{/ts}{literal}.');
617 /* send synchronous request so that disabling any actions for slow servers*/
618 var postUrl = {/literal}"{crmURL p='civicrm/ajax/relation' h=0 }"{literal};
619 var data = 'rel_contact='+ v1 + '&rel_type='+ v2 + '&contact_id='+sourceContact + '&rel_id='+ relID
620 + '&case_id=' + caseID + "&key={/literal}{crmKey name='civicrm/ajax/relation'}{literal}";
627 success : function(values) {
628 if (values.status == 'process-relationship-success') {
629 // reloading datatable
630 var oTable = cj('#caseRoles-selector').dataTable();
634 var relTypeName = cj("#role_type :selected").text();
635 var relTypeAdminLink = {/literal}"{crmURL p='civicrm/admin/reltype' q='reset=1' h=0 }"{literal};
636 var errorMsg = '{/literal}{ts escape="js" 1="' + relTypeName + '" 2="' + relTypeAdminLink + '"}The relationship type definition for the %1 case role is not valid for the client and / or staff contact types. You can review and edit relationship types at <a href="%2">Administer >> Option Lists >> Relationship Types</a>{/ts}{literal}.';
638 //display error message.
639 cj().crmError(errorMsg);
644 cj(this).dialog("close");
645 cj(this).dialog("destroy");
648 "{/literal}{ts escape='js'}Cancel{/ts}{literal}": function() {
649 cj(this).dialog("close");
650 cj(this).dialog("destroy");
658 {include file="CRM/Case/Form/ActivityToCase.tpl"}
660 {* pane to display / edit regular tags or tagsets for cases *}
661 {if $showTags OR $showTagsets}
663 <div id="casetags" class="crm-accordion-wrapper crm-case-tags-block">
664 <div class="crm-accordion-header">
666 </div><!-- /.crm-accordion-header -->
667 <div class="crm-accordion-body">
668 {assign var="tagExits" value=0}
670 <div class="crm-block crm-content-block crm-case-caseview-display-tags"> {$tags}</div>
671 {assign var="tagExits" value=1}
674 {foreach from=$tagsetInfo_case item=displayTagset}
675 {if $displayTagset.entityTagsArray}
676 <div class="crm-block crm-content-block crm-case-caseview-display-tagset">
677 {$displayTagset.parentName}:
678 {foreach from=$displayTagset.entityTagsArray item=val name="tagsetList"}
679 {$val.name}{if !$smarty.foreach.tagsetList.last},{/if}
682 {assign var="tagExits" value=1}
688 {ts}There are no tags currently assigned to this case.{/ts}
692 <div class="crm-submit-buttons">
693 <a class="button case-miniform" href="#manageTags" data-key="{crmKey name='civicrm/case/ajax/processtags'}">{if $tagExits}{ts}Edit Tags{/ts}{else}{ts}Add Tags{/ts}{/if}</a>
696 </div><!-- /.crm-accordion-body -->
697 </div><!-- /.crm-accordion-wrapper -->
699 <div id="manageTags" class="hiddenElement">
700 <div class="label">{$form.case_tag.label}</div>
701 <div class="view-value"><div class="crm-select-container">{$form.case_tag.html}</div>
703 <div style="text-align:left;">{include file="CRM/common/Tag.tpl" tagsetType='case'}</div>
705 <div class="clear"></div>
709 {/if} {* end of tag block*}
711 <div class="crm-accordion-wrapper crm-case_activities-accordion crm-case-activities-block">
712 <div class="crm-accordion-header">
715 <div id="activities" class="crm-accordion-body">
716 <div class="crm-accordion-wrapper crm-accordion-inner crm-search_filters-accordion collapsed">
717 <div class="crm-accordion-header">
718 {ts}Search Filters{/ts}</a>
719 </div><!-- /.crm-accordion-header -->
720 <div class="crm-accordion-body">
721 <table class="no-border form-layout-compressed" id="searchOptions">
723 <td class="crm-case-caseview-form-block-repoter_id"colspan="2"><label for="reporter_id">{ts}Reporter/Role{/ts}</label><br />
724 {$form.reporter_id.html|crmAddClass:twenty}
726 <td class="crm-case-caseview-form-block-status_id"><label for="status_id">{$form.status_id.label}</label><br />
727 {$form.status_id.html}
729 <td style="vertical-align: bottom;">
730 <span class="crm-button"><input class="form-submit default" name="_qf_Basic_refresh" value="Search" type="button" onclick="buildCaseActivities( true )"; /></span>
734 <td class="crm-case-caseview-form-block-activity_date_low">
735 {$form.activity_date_low.label}<br />
736 {include file="CRM/common/jcalendar.tpl" elementName=activity_date_low}
738 <td class="crm-case-caseview-form-block-activity_date_high">
739 {$form.activity_date_high.label}<br />
740 {include file="CRM/common/jcalendar.tpl" elementName=activity_date_high}
742 <td class="crm-case-caseview-form-block-activity_type_filter_id">
743 {$form.activity_type_filter_id.label}<br />
744 {$form.activity_type_filter_id.html}
747 {if $form.activity_deleted}
748 <tr class="crm-case-caseview-form-block-activity_deleted">
750 {$form.activity_deleted.html}{$form.activity_deleted.label}
755 </div><!-- /.crm-accordion-body -->
756 </div><!-- /.crm-accordion-wrapper -->
758 <table id="activities-selector" class="nestedActivitySelector">
760 <th class='crm-case-activities-date'>{ts}Date{/ts}</th>
761 <th class='crm-case-activities-subject'>{ts}Subject{/ts}</th>
762 <th class='crm-case-activities-type'>{ts}Type{/ts}</th>
763 <th class='crm-case-activities-with'>{ts}With{/ts}</th>
764 <th class='crm-case-activities-assignee'>{ts}Reporter / Assignee{/ts}</th>
765 <th class='crm-case-activities-status'>{ts}Status{/ts}</th>
766 <th class='crm-case-activities-status' id="nosort"> </th>
767 <th class='hiddenElement'> </th>
771 </div><!-- /.crm-accordion-body -->
772 </div><!-- /.crm-accordion-wrapper -->
775 <script type="text/javascript">
779 buildCaseActivities(false);
782 function buildCaseActivities(filterSearch) {
788 var sourceUrl = {/literal}"{crmURL p='civicrm/ajax/activity' h=0 q='snippet=4&caseID='}{$caseID}"{literal};
789 sourceUrl = sourceUrl + '&cid={/literal}{$contactID}{literal}';
790 sourceUrl = sourceUrl + '&userID={/literal}{$userID}{literal}';
792 cj('#activities-selector th').each(function( ) {
793 if (cj(this).attr('id') != 'nosort') {
794 columns += '{"sClass": "' + cj(this).attr('class') +'"},';
797 columns += '{ "bSortable": false },';
802 columns = columns.substring(0, columns.length - 1 );
803 eval('columns =[' + columns + ']');
805 oTable = cj('#activities-selector').dataTable({
807 "bAutoWidth" : false,
809 "aoColumns" : columns,
812 "asStripClasses" : [ "odd-row", "even-row" ],
813 "sPaginationType": "full_numbers",
814 "sDom" : '<"crm-datatable-pager-top"lfp>rt<"crm-datatable-pager-bottom"ip>',
816 "sAjaxSource": sourceUrl,
817 "iDisplayLength": 10,
818 "fnDrawCallback": function() { setSelectorClass(); },
819 "fnServerData": function ( sSource, aoData, fnCallback ) {
821 if ( filterSearch ) {
822 var activity_deleted = 0;
823 if ( cj("#activity_deleted:checked").val() == 1 ) {
824 activity_deleted = 1;
827 {name:'status_id', value: cj("select#status_id").val()},
828 {name:'activity_type_id', value: cj("select#activity_type_filter_id").val()},
829 {name:'activity_date_low', value: cj("#activity_date_low").val()},
830 {name:'activity_date_high', value: cj("#activity_date_high").val() },
831 {name:'activity_deleted', value: activity_deleted }
839 "success": fnCallback
845 function setSelectorClass( ) {
846 cj("#activities-selector td:last-child").each( function( ) {
847 cj(this).parent().addClass(cj(this).text() );
854 <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="bottom"}</div>
856 {include file="CRM/Case/Form/ActivityChangeStatusJs.tpl"}
857 {/if} {* view related cases if end *}