{*
+--------------------------------------------------------------------+
- | CiviCRM version 4.4 |
+ | CiviCRM version 4.5 |
+--------------------------------------------------------------------+
- | Copyright CiviCRM LLC (c) 2004-2013 |
+ | Copyright CiviCRM LLC (c) 2004-2014 |
+--------------------------------------------------------------------+
| This file is a part of CiviCRM. |
| |
{foreach from=$caseRoles.client item=client name=clients}
<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}
{/foreach}
- <a href="#" class="crm-hover-button" title="{ts}add new client to the case{/ts}" onclick="addClient( );return false;">
- <span class="icon edit-icon"></span>
+ <a href="#addClientDialog" class="crm-hover-button case-miniform" title="{ts}Add Client{/ts}" data-key="{crmKey name='civicrm/case/ajax/addclient'}">
+ <span class="icon add-icon"></span>
</a>
+ <div id="addClientDialog" class="hiddenElement">
+ <input name="add_client_id" placeholder="{ts}- select contact -{/ts}" class="huge" />
+ </div>
{if $hasRelatedCases}
<div class="crm-block relatedCases-link"><a class="crm-hover-button crm-popup medium-popup" href="{$relatedCaseUrl}">{$relatedCaseLabel}</a></div>
{/if}
</div>
{/if}
-<table class="form-layout">
-<tr class="crm-case-caseview-form-block-activity_type_id">
- <td>{$form.add_activity_type_id.html}</td>
- {if $hasAccessToAllCases}
- <td>
- <a class="button no-popup" href="{crmURL p='civicrm/case/report/print' q="all=1&redact=0&cid=$contactID&caseID=$caseId&asn=standard_timeline"}"><div class="icon print-icon"></div> {ts}Print Report{/ts}</a>
- </td>
- </tr>
- <tr>
- <td class="crm-case-caseview-form-block-timeline_id">{$form.timeline_id.label}<br />{$form.timeline_id.html} {$form._qf_CaseView_next.html}</td>
- <td class="crm-case-caseview-form-block-report_id">{$form.report_id.label}<br />{$form.report_id.html} <input type="button" accesskey="R" value="Go" name="case_report" onclick="checkSelection( this );"/></td>
- {else}
- <td></td>
- {/if}
-</tr>
+<div class="case-control-panel">
+ <div>
+ <p>
+ {$form.add_activity_type_id.html}
+ {if $hasAccessToAllCases}
+ {$form.timeline_id.html}{$form._qf_CaseView_next.html}
+ {$form.report_id.html}
+ {/if}
+ </p>
+ </div>
+ <div>
+ <p>
+ {if $hasAccessToAllCases}
+ <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>
+ {/if}
- {if $mergeCases}
- <tr class="crm-case-caseview-form-block-merge_case_id">
- <td colspan='2'><a href="#" onClick='cj("#merge_cases").toggle( ); return false;'>{ts}Merge Case{/ts}</a>
- <span id='merge_cases' class='hide-block'>
- {$form.merge_case_id.html} {$form._qf_CaseView_next_merge_case.html}
+ {if $mergeCases}
+ <a href="#mergeCasesDialog" class="action-item no-popup crm-hover-button case-miniform"><span class="icon ui-icon-copy"></span>{ts}Merge Case{/ts}</a>
+ {$form._qf_CaseView_next_merge_case.html}
+ <span id="mergeCasesDialog" class="hiddenElement">
+ {$form.merge_case_id.html}
</span>
- </td>
- </tr>
- {/if}
+ {/if}
- {if call_user_func(array('CRM_Core_Permission','giveMeAllACLs'))}
- <tr class="crm-case-caseview-form-block-change_client_id">
- <td colspan='2'>
- <a class="crm-popup medium-popup" href="{crmURL p='civicrm/contact/view/case/editClient' h=0 q="reset=1&action=update&id=$caseID&cid=$contactID"}"><span class="icon swap-icon"></span> {ts}Assign to Another Contact{/ts}</a>
- </td>
- </tr>
- {/if}
-</table>
+ {if call_user_func(array('CRM_Core_Permission','giveMeAllACLs'))}
+ <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>
+ {/if}
+ </p>
+ </div>
+</div>
<div class="clear"></div>
{include file="CRM/Case/Page/CustomDataView.tpl"}
{if $hasAccessToAllCases}
<div class="crm-submit-buttons">
- <a class="button" href="#" onclick="addRole();return false;"><span><div class="icon add-icon"></div>{ts}Add new role{/ts}</span></a>
+ <a class="button case-miniform" href="#addCaseRoleDialog" data-key="{crmKey name='civicrm/ajax/relation'}" rel="#caseRoles-selector-{$caseID}"><div class="icon add-icon"></div>{ts}Add new role{/ts}</a>
+ </div>
+ <div id="addCaseRoleDialog" class="hiddenElement">
+ <div>{$form.role_type.label}</div>
+ <div>{$form.role_type.html}</div><br />
+ <div><label for="add_role_contact_id">{ts}Assign To{/ts}:</label></div>
+ <div><input name="add_role_contact_id" placeholder="{ts}- select contact -{/ts}" class="huge" /></div>
</div>
{/if}
- <table id="caseRoles-selector" class="report-layout">
+ <div id="editCaseRoleDialog" class="hiddenElement">
+ <div><label for="edit_role_contact_id">{ts}Change To{/ts}:</label></div>
+ <div><input name="edit_role_contact_id" placeholder="{ts}- select contact -{/ts}" class="huge" /></div>
+ </div>
+
+ <table id="caseRoles-selector-{$caseID}" class="report-layout">
<thead><tr>
<th>{ts}Case Role{/ts}</th>
<th>{ts}Name{/ts}</th>
</tr></thead>
</table>
+ <div id="deleteCaseRoleDialog" class="hiddenElement">
+ {ts}Are you sure you want to delete this case role?{/ts}
+ </div>
+
{literal}
<script type="text/javascript">
var oTable;
- cj(function() {
- cj().crmAccordions();
+ CRM.$(function($) {
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();
- }
- );
+ function buildCaseRoles(filterSearch) {
+ if(filterSearch) {
+ oTable.fnDestroy();
}
- ,{
- title: '{/literal}{ts escape="js"}Delete case role{/ts}{literal}',
- message: '{/literal}{ts escape="js"}Are you sure you want to delete this case role?{/ts}{literal}'
+ var count = 0;
+ var columns = '';
+ var sourceUrl = {/literal}"{crmURL p='civicrm/ajax/caseroles' h=0 q='snippet=4&caseID='}{$caseID}"{literal};
+ sourceUrl = sourceUrl + '&cid={/literal}{$contactID}{literal}';
+ sourceUrl = sourceUrl + '&userID={/literal}{$userID}{literal}';
+
+ $('#caseRoles-selector-{/literal}{$caseID}{literal} th').each( function( ) {
+ if ( $(this).attr('id') != 'nosort' ) {
+ columns += '{"sClass": "' + $(this).attr('class') +'"},';
+ }
+ else {
+ columns += '{ "bSortable": false },';
+ }
+ count++;
});
- return false;
- });
- }
- function buildCaseRoles(filterSearch) {
- if(filterSearch) {
- oTable.fnDestroy();
+ columns = columns.substring(0, columns.length - 1 );
+ eval('columns =[' + columns + ']');
+
+ oTable = $('#caseRoles-selector-{/literal}{$caseID}{literal}').dataTable({
+ "bFilter" : false,
+ "bAutoWidth" : false,
+ "aaSorting" : [],
+ "aoColumns" : columns,
+ "bProcessing": true,
+ "bJQueryUI": true,
+ "asStripClasses" : [ "odd-row", "even-row" ],
+ "sPaginationType": "full_numbers",
+ "sDom" : '<"crm-datatable-pager-top"lfp>rt<"crm-datatable-pager-bottom"ip>',
+ "bServerSide": true,
+ "sAjaxSource": sourceUrl,
+ "iDisplayLength": 10,
+ "fnDrawCallback": function() { setCaseRolesSelectorClass(); },
+ "fnServerData": function ( sSource, aoData, fnCallback ) {
+ $.ajax({
+ "dataType": 'json',
+ "type": "POST",
+ "url": sSource,
+ "data": aoData,
+ "success": fnCallback
+ });
+ }
+ });
}
- var count = 0;
- var columns = '';
- var sourceUrl = {/literal}"{crmURL p='civicrm/ajax/caseroles' h=0 q='snippet=4&caseID='}{$caseID}"{literal};
- sourceUrl = sourceUrl + '&cid={/literal}{$contactID}{literal}';
- sourceUrl = sourceUrl + '&userID={/literal}{$userID}{literal}';
-
- cj('#caseRoles-selector th').each( function( ) {
- if ( cj(this).attr('id') != 'nosort' ) {
- columns += '{"sClass": "' + cj(this).attr('class') +'"},';
- }
- else {
- columns += '{ "bSortable": false },';
- }
- count++;
- });
-
- columns = columns.substring(0, columns.length - 1 );
- eval('columns =[' + columns + ']');
-
- oTable = cj('#caseRoles-selector').dataTable({
- "bFilter" : false,
- "bAutoWidth" : false,
- "aaSorting" : [],
- "aoColumns" : columns,
- "bProcessing": true,
- "bJQueryUI": true,
- "asStripClasses" : [ "odd-row", "even-row" ],
- "sPaginationType": "full_numbers",
- "sDom" : '<"crm-datatable-pager-top"lfp>rt<"crm-datatable-pager-bottom"ip>',
- "bServerSide": true,
- "sAjaxSource": sourceUrl,
- "iDisplayLength": 10,
- "fnDrawCallback": function() { setCaseRolesSelectorClass(); },
- "fnServerData": function ( sSource, aoData, fnCallback ) {
- cj.ajax({
- "dataType": 'json',
- "type": "POST",
- "url": sSource,
- "data": aoData,
- "success": fnCallback
- });
- }
- });
- }
-
- function setCaseRolesSelectorClass( ) {
- 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 setCaseRolesSelectorClass( ) {
+ $("#caseRoles-selector-{/literal}{$caseID}{literal} td:last-child").each( function( ) {
+ $(this).parent().addClass($(this).text() );
+ });
+ }
+ });
</script>
{/literal}
</div><!-- /.crm-accordion-body -->
</div><!-- /.crm-accordion-wrapper -->
-<div id="dialog">
- {ts}Begin typing last name of contact.{/ts}<br/>
- <input type="text" id="rel_contact"/>
- <input type="hidden" id="rel_contact_id" value="">
-</div>
-
-{literal}
-<script type="text/javascript">
-
- cj("#dialog").hide( );
-
- function addClient( ) {
- cj("#dialog").show( );
-
- cj("#dialog").dialog({
- title: "{/literal}{ts escape="js"}Add Client to the Case{/ts}{literal}",
- modal: true,
- close : function(event, ui) {
- cj("#rel_contact").unautocomplete( );
- cj("#dialog").hide( );
- },
- overlay: { opacity: 0.5, background: "black" },
-
- open:function() {
- var contactUrl = {/literal}"{crmURL p='civicrm/ajax/rest' q='className=CRM_Contact_Page_AJAX&fnName=getContactList&json=1&context=caseview' h=0 }"{literal};
- cj("#rel_contact").autocomplete( contactUrl, {
- width: 260,
- selectFirst: false,
- matchContains: true
- });
-
- cj("#rel_contact").focus();
- cj("#rel_contact").result(function(event, data, formatted) {
- cj("input[id=rel_contact_id]").val(data[1]);
- });
- },
-
- buttons: {
- "{/literal}{ts escape='js'}Done{/ts}{literal}": function() {
- var postUrl = {/literal}"{crmURL p='civicrm/case/ajax/addclient' h=0 }"{literal};
- var caseID = {/literal}"{$caseID}"{literal};
- var contactID = cj("#rel_contact_id").val( );
-
- if ( !cj("#rel_contact").val( ) || !contactID ) {
- cj("#rel_contact").crmError('{/literal}{ts escape="js"}Select valid contact from the list.{/ts}{literal}');
- return false;
- }
- cj.post( postUrl, {contactID: contactID,caseID: caseID,
- key: {/literal}"{crmKey name='civicrm/case/ajax/addclient'}"{literal} },
- function( data ) {
- //due to caching issues we use redirection rather than reload
- document.location = {/literal}'{crmURL q="action=view&reset=1&id=$caseID&cid=$contactID&context=$context" h=0 }'{literal};
- },
- 'json'
- );
- },
-
- "{/literal}{ts escape='js'}Cancel{/ts}{literal}": function() {
- cj(this).dialog("close");
- cj(this).dialog("destroy");
- }
- }
- });
- }
-
- function createRelationship( relType, contactID, relID, rowNumber, relTypeName ) {
- cj("#dialog").show( );
-
- cj("#dialog").dialog({
- title: "Assign Case Role",
- modal: true,
- close: function(event, ui) { cj("#rel_contact").unautocomplete( ); },
- open:function() {
- /* set defaults if editing */
- cj("#rel_contact").val("");
- cj("#rel_contact_id").val(null);
- if (contactID) {
- cj("#rel_contact_id").val(contactID);
- var contactName = cj('#caseRoles-selector').find('tr :eq('+ rowNumber +')').children(':eq(1)').text();
- cj("#rel_contact").val(contactName);
- }
-
- var contactUrl = {/literal}"{crmURL p='civicrm/ajax/rest' q='className=CRM_Contact_Page_AJAX&fnName=getContactList&json=1&context=caseview' h=0 }"{literal};
-
- cj("#rel_contact").autocomplete( contactUrl, {
- width: 260,
- selectFirst: false,
- matchContains: true
- });
-
- cj("#rel_contact").focus();
- cj("#rel_contact").result(function(event, data, formatted) {
- cj("input[id=rel_contact_id]").val(data[1]);
- });
- },
-
- buttons: {
- "{/literal}{ts escape='js'}Ok{/ts}{literal}": function() {
-
- var sourceContact = {/literal}"{$contactID}"{literal};
- var caseID = {/literal}"{$caseID}"{literal};
-
- var v1 = cj("#rel_contact_id").val( );
-
- if ( !cj("#rel_contact").val( ) || !v1 ) {
- cj("#rel_contact").crmError('{/literal}{ts escape="js"}Select valid contact from the list{/ts}{literal}.');
- return false;
- }
-
- var postUrl = {/literal}"{crmURL p='civicrm/ajax/relation' h=0 }"{literal};
- cj.post( postUrl, { rel_contact: v1, rel_type: relType, contact_id: sourceContact,
- rel_id: relID, case_id: caseID, key: {/literal}"{crmKey name='civicrm/ajax/relation'}"{literal} },
- function( data ) {
- if ( data.status == 'process-relationship-success' ) {
- // reloading datatable
- var oTable = cj('#caseRoles-selector').dataTable();
- oTable.fnDraw();
- }
- else {
- // This is an awkward mix of smarty and javascript: the relTypeName variable is
- // not available in smarty, could not find an i18n-correct way of doing this.
- {/literal}
- {capture assign=relTypeAdminLink}{crmURL p='civicrm/admin/reltype' q='reset=1' h=0 }{/capture}
- {literal}
- 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}';
-
- //display error message.
- cj().crmError(errorMsg);
- }
- }, 'json'
- );
-
- cj(this).dialog("close");
- cj(this).dialog("destroy");
- },
-
- "{/literal}{ts escape='js'}Cancel{/ts}{literal}": function() {
- cj(this).dialog("close");
- cj(this).dialog("destroy");
- }
- }
- });
- }
-
-</script>
-{/literal}
{if $hasAccessToAllCases}
<div class="crm-accordion-wrapper collapsed crm-case-other-relationships-block">
<a class="button" href="{$relUrl}">
<div class="icon add-icon"></div>{ts}Add client relationship{/ts}</a>
</div>
- <table id="clientRelationships-selector" class="report-layout">
+ <table id="clientRelationships-selector-{$caseID}" class="report-layout">
<thead><tr>
<th>{ts}Client Relationship{/ts}</th>
<th>{ts}Name{/ts}</th>
{/if}
{literal}
<script type="text/javascript">
- cj(function( ) {
- buildCaseClientRelationships(false);
- });
-
- function buildCaseClientRelationships(filterSearch) {
- if (filterSearch) {
- oTable.fnDestroy();
+ CRM.$(function($) {
+ buildCaseClientRelationships(false);
+ function buildCaseClientRelationships(filterSearch) {
+ if (filterSearch) {
+ oTable.fnDestroy();
+ }
+ var count = 0;
+ var columns = '';
+ var sourceUrl = {/literal}"{crmURL p='civicrm/ajax/clientrelationships' h=0 q='snippet=4&caseID='}{$caseID}"{literal};
+ sourceUrl = sourceUrl + '&cid={/literal}{$contactID}{literal}';
+ sourceUrl = sourceUrl + '&userID={/literal}{$userID}{literal}';
+
+ $('#clientRelationships-selector-{/literal}{$caseID}{literal} th').each( function( ) {
+ if ( $(this).attr('id') != 'nosort' ) {
+ columns += '{"sClass": "' + $(this).attr('class') +'"},';
+ }
+ else {
+ columns += '{ "bSortable": false },';
+ }
+ count++;
+ });
+
+ columns = columns.substring(0, columns.length - 1 );
+ eval('columns =[' + columns + ']');
+
+ oTable = $('#clientRelationships-selector-{/literal}{$caseID}{literal}').dataTable({
+ "bFilter" : false,
+ "bAutoWidth" : false,
+ "aaSorting" : [],
+ "aoColumns" : columns,
+ "bProcessing": true,
+ "bJQueryUI": true,
+ "asStripClasses" : [ "odd-row", "even-row" ],
+ "sPaginationType": "full_numbers",
+ "sDom" : '<"crm-datatable-pager-top"lfp>rt<"crm-datatable-pager-bottom"ip>',
+ "bServerSide": true,
+ "sAjaxSource": sourceUrl,
+ "iDisplayLength": 10,
+ "fnDrawCallback": function() { setClientRelationshipsSelectorClass(); },
+ "fnServerData": function (sSource, aoData, fnCallback) {
+ $.ajax( {
+ "dataType": 'json',
+ "type": "POST",
+ "url": sSource,
+ "data": aoData,
+ "success": fnCallback
+ });
+ }
+ });
}
- var count = 0;
- var columns = '';
- var sourceUrl = {/literal}"{crmURL p='civicrm/ajax/clientrelationships' h=0 q='snippet=4&caseID='}{$caseID}"{literal};
- sourceUrl = sourceUrl + '&cid={/literal}{$contactID}{literal}';
- sourceUrl = sourceUrl + '&userID={/literal}{$userID}{literal}';
-
- cj('#clientRelationships-selector th').each( function( ) {
- if ( cj(this).attr('id') != 'nosort' ) {
- columns += '{"sClass": "' + cj(this).attr('class') +'"},';
- }
- else {
- columns += '{ "bSortable": false },';
- }
- count++;
- });
-
- columns = columns.substring(0, columns.length - 1 );
- eval('columns =[' + columns + ']');
-
- oTable = cj('#clientRelationships-selector').dataTable({
- "bFilter" : false,
- "bAutoWidth" : false,
- "aaSorting" : [],
- "aoColumns" : columns,
- "bProcessing": true,
- "bJQueryUI": true,
- "asStripClasses" : [ "odd-row", "even-row" ],
- "sPaginationType": "full_numbers",
- "sDom" : '<"crm-datatable-pager-top"lfp>rt<"crm-datatable-pager-bottom"ip>',
- "bServerSide": true,
- "sAjaxSource": sourceUrl,
- "iDisplayLength": 10,
- "fnDrawCallback": function() { setClientRelationshipsSelectorClass(); },
- "fnServerData": function (sSource, aoData, fnCallback) {
- cj.ajax( {
- "dataType": 'json',
- "type": "POST",
- "url": sSource,
- "data": aoData,
- "success": fnCallback
- } );
- }
- });
- }
-
- function setClientRelationshipsSelectorClass( ) {
- cj("#clientRelationships-selector td:last-child").each(function() {
- cj(this).parent().addClass(cj(this).text());
- });
- }
+
+ function setClientRelationshipsSelectorClass( ) {
+ $("#clientRelationships-selector-{/literal}{$caseID}{literal} td:last-child").each(function() {
+ $(this).parent().addClass($(this).text());
+ });
+ }
+ });
</script>
{/literal}
<br />
-
- {if $globalRelationships}
+ {if !empty($globalGroupInfo.id)}
<div class="crm-submit-buttons">
- <a class="button" href="#" onClick="window.location='{crmURL p='civicrm/group/search' q="reset=1&context=amtg&amtgID=`$globalGroupInfo.id`"}'; return false;">
- <span><div class="icon add-icon"></div>{ts 1=$globalGroupInfo.title}Add members to %1{/ts}</a></span>
+ <a class="button case-miniform" href="#addMembersToGroupDialog" rel="#globalRelationships-selector-{$caseId}" data-group_id="{$globalGroupInfo.id}">
+ <div class="icon add-icon"></div>{ts 1=$globalGroupInfo.title}Add members to %1{/ts}
+ </a>
+ </div>
+ <div id="addMembersToGroupDialog" class="hiddenElement">
+ <input name="add_member_to_group_contact_id" placeholder="{ts}- select contacts -{/ts}" class="huge" />
</div>
- <table id="globalRelationships-selector" class="report-layout">
+ <table id="globalRelationships-selector-{$caseId}" class="report-layout">
<thead><tr>
<th>{$globalGroupInfo.title}</th>
<th>{ts}Phone{/ts}</th>
<th>{ts}Email{/ts}</th>
</tr></thead>
</table>
- {elseif $globalGroupInfo.id}
- <div class="messages status no-popup">
- <div class="icon inform-icon"></div>
- {capture assign=crmURL}{crmURL p='civicrm/group/search' q="reset=1&context=amtg&amtgID=`$globalGroupInfo.id`"}{/capture}
- {ts 1=$crmURL 2=$globalGroupInfo.title}The group %2 has no members. You can <a href='%1'>add one</a>.{/ts}
- </div>
{/if}
{literal}
<script type="text/javascript">
-
- cj(function() {
- buildCaseGlobalRelationships(false);
- });
-
- function buildCaseGlobalRelationships(filterSearch) {
- if (filterSearch) {
- oTable.fnDestroy();
- }
- var count = 0;
- var columns = '';
- var sourceUrl = {/literal}"{crmURL p='civicrm/ajax/globalrelationships' h=0 q='snippet=4&caseID='}{$caseID}"{literal};
- sourceUrl = sourceUrl + '&cid={/literal}{$contactID}{literal}';
- sourceUrl = sourceUrl + '&userID={/literal}{$userID}{literal}';
-
- cj('#globalRelationships-selector th').each( function( ) {
- if (cj(this).attr('id') != 'nosort') {
- columns += '{"sClass": "' + cj(this).attr('class') +'"},';
- }
- else {
- columns += '{ "bSortable": false },';
- }
- count++;
- });
-
- columns = columns.substring(0, columns.length - 1 );
- eval('columns =[' + columns + ']');
-
- oTable = cj('#globalRelationships-selector').dataTable({
- "bFilter" : false,
- "bAutoWidth" : false,
- "aaSorting" : [],
- "aoColumns" : columns,
- "bProcessing": true,
- "bJQueryUI": true,
- "asStripClasses" : [ "odd-row", "even-row" ],
- "sPaginationType": "full_numbers",
- "sDom" : '<"crm-datatable-pager-top"lfp>rt<"crm-datatable-pager-bottom"ip>',
- "bServerSide": true,
- "sAjaxSource": sourceUrl,
- "iDisplayLength": 10,
- "fnDrawCallback": function() { setGlobalRelationshipsSelectorClass(); },
- "fnServerData": function ( sSource, aoData, fnCallback ) {
- cj.ajax( {
- "dataType": 'json',
- "type": "POST",
- "url": sSource,
- "data": aoData,
- "success": fnCallback
- } );
- }
- });
- }
-
- function setGlobalRelationshipsSelectorClass( ) {
- cj("#globalRelationships-selector td:last-child").each( function( ) {
- cj(this).parent().addClass(cj(this).text() );
- });
- }
+ CRM.$(function($) {
+ buildCaseGlobalRelationships(false);
+ function buildCaseGlobalRelationships(filterSearch) {
+ if (filterSearch) {
+ oTable.fnDestroy();
+ }
+ var count = 0;
+ var columns = '';
+ var sourceUrl = {/literal}"{crmURL p='civicrm/ajax/globalrelationships' h=0 q='snippet=4&caseID='}{$caseID}"{literal};
+ sourceUrl = sourceUrl + '&cid={/literal}{$contactID}{literal}';
+ sourceUrl = sourceUrl + '&userID={/literal}{$userID}{literal}';
+
+ $('#globalRelationships-selector-{/literal}{$caseID}{literal} th').each( function( ) {
+ if ($(this).attr('id') != 'nosort') {
+ columns += '{"sClass": "' + $(this).attr('class') +'"},';
+ }
+ else {
+ columns += '{ "bSortable": false },';
+ }
+ count++;
+ });
+
+ columns = columns.substring(0, columns.length - 1 );
+ eval('columns =[' + columns + ']');
+
+ oTable = $('#globalRelationships-selector-{/literal}{$caseID}{literal}').dataTable({
+ "bFilter" : false,
+ "bAutoWidth" : false,
+ "aaSorting" : [],
+ "aoColumns" : columns,
+ "bProcessing": true,
+ "bJQueryUI": true,
+ "asStripClasses" : [ "odd-row", "even-row" ],
+ "sPaginationType": "full_numbers",
+ "sDom" : '<"crm-datatable-pager-top"lfp>rt<"crm-datatable-pager-bottom"ip>',
+ "bServerSide": true,
+ "sAjaxSource": sourceUrl,
+ "iDisplayLength": 10,
+ "fnDrawCallback": function() { setGlobalRelationshipsSelectorClass(); },
+ "oLanguage": {
+ "sEmptyTable": {/literal}'{ts escape='js' 1=$globalGroupInfo.title}The group %1 has no members.{/ts}'{literal}
+ },
+ "fnServerData": function ( sSource, aoData, fnCallback ) {
+ $.ajax( {
+ "dataType": 'json',
+ "type": "POST",
+ "url": sSource,
+ "data": aoData,
+ "success": fnCallback
+ });
+ }
+ });
+ }
+
+ function setGlobalRelationshipsSelectorClass( ) {
+ $("#globalRelationships-selector-{/literal}{$caseID}{literal} td:last-child").each( function( ) {
+ $(this).parent().addClass($(this).text() );
+ });
+ }
+ });
</script>
{/literal}
</div><!-- /.crm-accordion-body -->
</div><!-- /.crm-accordion-wrapper -->
{/if} {* other relationship section ends *}
-
-<div id="addRoleDialog">
-{$form.role_type.label}<br />
-{$form.role_type.html}
-<br /><br />
- {ts}Begin typing last name of contact.{/ts}<br/>
- <input type="text" id="role_contact"/>
- <input type="hidden" id="role_contact_id" value="">
-</div>
-
-{literal}
-<script type="text/javascript">
-
-cj("#addRoleDialog").hide( );
-function addRole() {
- cj("#addRoleDialog").show( );
-
- cj("#addRoleDialog").dialog({
- title: "Add Role",
- modal: true,
- close: function(event, ui) { cj("#role_contact").unautocomplete( ); },
- open:function() {
- /* set defaults if editing */
- cj("#role_contact").val( "" );
- cj("#role_contact_id").val( null );
-
- var contactUrl = {/literal}"{crmURL p='civicrm/ajax/rest' q='className=CRM_Contact_Page_AJAX&fnName=getContactList&json=1&context=caseview' h=0 }"{literal};
-
- cj("#role_contact").autocomplete( contactUrl, {
- width: 260,
- selectFirst: false,
- matchContains: true
- });
-
- cj("#role_contact").focus();
- cj("#role_contact").result(function(event, data, formatted) {
- cj("input[id=role_contact_id]").val(data[1]);
- });
- },
-
- buttons: {
- "{/literal}{ts escape='js'}Ok{/ts}{literal}": function() {
- var sourceContact = {/literal}"{$contactID}"{literal};
- var caseID = {/literal}"{$caseID}"{literal};
- var relID = null;
-
- var v2 = cj("#role_type").val();
- if (!v2) {
- cj("#role_type").crmError('{/literal}{ts escape="js"}Select valid type from the list{/ts}{literal}.');
- return false;
- }
-
- var v1 = cj("#role_contact_id").val( );
- if (!cj("#role_contact").val( ) || !v1) {
- cj("#role_contact").crmError('{/literal}{ts escape="js"}Select valid contact from the list{/ts}{literal}.');
- return false;
- }
-
- /* send synchronous request so that disabling any actions for slow servers*/
- var postUrl = {/literal}"{crmURL p='civicrm/ajax/relation' h=0 }"{literal};
- var data = 'rel_contact='+ v1 + '&rel_type='+ v2 + '&contact_id='+sourceContact + '&rel_id='+ relID
- + '&case_id=' + caseID + "&key={/literal}{crmKey name='civicrm/ajax/relation'}{literal}";
- cj.ajax({
- type : "POST",
- url : postUrl,
- data : data,
- async : false,
- dataType : "json",
- success : function(values) {
- if (values.status == 'process-relationship-success') {
- // reloading datatable
- var oTable = cj('#caseRoles-selector').dataTable();
- oTable.fnDraw();
- }
- else {
- var relTypeName = cj("#role_type :selected").text();
- var relTypeAdminLink = {/literal}"{crmURL p='civicrm/admin/reltype' q='reset=1' h=0 }"{literal};
- 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}.';
-
- //display error message.
- cj().crmError(errorMsg);
- }
- }
- });
-
- cj(this).dialog("close");
- cj(this).dialog("destroy");
- },
-
- "{/literal}{ts escape='js'}Cancel{/ts}{literal}": function() {
- cj(this).dialog("close");
- cj(this).dialog("destroy");
- }
- }
- });
-}
-
-</script>
-{/literal}
{include file="CRM/Case/Form/ActivityToCase.tpl"}
{* pane to display / edit regular tags or tagsets for cases *}
{assign var="tagExits" value=1}
{/if}
- {foreach from=$tagsetInfo_case item=displayTagset}
+ {foreach from=$tagsetInfo.case item=displayTagset}
{if $displayTagset.entityTagsArray}
<div class="crm-block crm-content-block crm-case-caseview-display-tagset">
{$displayTagset.parentName}:
{/if}
<div class="crm-submit-buttons">
- <a class="button case-miniform" href="#manageTags" data-qfkey="{crmKey name='civicrm/case/ajax/processtags'}">{if $tagExits}{ts}Edit Tags{/ts}{else}{ts}Add Tags{/ts}{/if}</a>
+ <a class="button case-miniform" href="#manageTagsDialog" data-key="{crmKey name='civicrm/case/ajax/processtags'}">{if $tagExits}{ts}Edit Tags{/ts}{else}{ts}Add Tags{/ts}{/if}</a>
</div>
</div><!-- /.crm-accordion-body -->
</div><!-- /.crm-accordion-wrapper -->
-<div id="manageTags">
+<div id="manageTagsDialog" class="hiddenElement">
<div class="label">{$form.case_tag.label}</div>
<div class="view-value"><div class="crm-select-container">{$form.case_tag.html}</div>
<br/>
- <div style="text-align:left;">{include file="CRM/common/Tag.tpl" tagsetType='case'}</div>
+ <div style="text-align:left;">{include file="CRM/common/Tagset.tpl" tagsetType='case'}</div>
<br/>
<div class="clear"></div>
</div>
{/if} {* end of tag block*}
-<div class="crm-accordion-wrapper crm-case_activities-accordion crm-case-activities-block">
- <div class="crm-accordion-header">
- {ts}Activities{/ts}
- </div>
- <div id="activities" class="crm-accordion-body">
- <div class="crm-accordion-wrapper crm-accordion-inner crm-search_filters-accordion collapsed">
- <div class="crm-accordion-header">
- {ts}Search Filters{/ts}</a>
- </div><!-- /.crm-accordion-header -->
- <div class="crm-accordion-body">
- <table class="no-border form-layout-compressed" id="searchOptions">
- <tr>
- <td class="crm-case-caseview-form-block-repoter_id"colspan="2"><label for="reporter_id">{ts}Reporter/Role{/ts}</label><br />
- {$form.reporter_id.html|crmAddClass:twenty}
- </td>
- <td class="crm-case-caseview-form-block-status_id"><label for="status_id">{$form.status_id.label}</label><br />
- {$form.status_id.html}
- </td>
- <td style="vertical-align: bottom;">
- <span class="crm-button"><input class="form-submit default" name="_qf_Basic_refresh" value="Search" type="button" onclick="buildCaseActivities( true )"; /></span>
- </td>
- </tr>
- <tr>
- <td class="crm-case-caseview-form-block-activity_date_low">
- {$form.activity_date_low.label}<br />
- {include file="CRM/common/jcalendar.tpl" elementName=activity_date_low}
- </td>
- <td class="crm-case-caseview-form-block-activity_date_high">
- {$form.activity_date_high.label}<br />
- {include file="CRM/common/jcalendar.tpl" elementName=activity_date_high}
- </td>
- <td class="crm-case-caseview-form-block-activity_type_filter_id">
- {$form.activity_type_filter_id.label}<br />
- {$form.activity_type_filter_id.html}
- </td>
- </tr>
- {if $form.activity_deleted}
- <tr class="crm-case-caseview-form-block-activity_deleted">
- <td>
- {$form.activity_deleted.html}{$form.activity_deleted.label}
- </td>
- </tr>
- {/if}
- </table>
- </div><!-- /.crm-accordion-body -->
- </div><!-- /.crm-accordion-wrapper -->
-
- <table id="activities-selector" class="nestedActivitySelector">
- <thead><tr>
- <th class='crm-case-activities-date'>{ts}Date{/ts}</th>
- <th class='crm-case-activities-subject'>{ts}Subject{/ts}</th>
- <th class='crm-case-activities-type'>{ts}Type{/ts}</th>
- <th class='crm-case-activities-with'>{ts}With{/ts}</th>
- <th class='crm-case-activities-assignee'>{ts}Reporter / Assignee{/ts}</th>
- <th class='crm-case-activities-status'>{ts}Status{/ts}</th>
- <th class='crm-case-activities-status' id="nosort"> </th>
- <th class='hiddenElement'> </th>
- </tr></thead>
- </table>
-
- </div><!-- /.crm-accordion-body -->
-</div><!-- /.crm-accordion-wrapper -->
-
-{literal}
-<script type="text/javascript">
-var oTable;
-
-function checkSelection( field ) {
- var validationMessage = '';
- var validationField = '';
- var successAction = '';
- var forceValidation = false;
-
- var fName = field.name;
-
- switch ( fName ) {
- case '_qf_CaseView_next' :
- validationMessage = '{/literal}{ts escape="js"}Please select an activity set from the list.{/ts}{literal}';
- validationField = 'timeline_id';
- successAction = "confirm('{/literal}{ts escape='js'}Are you sure you want to add a set of scheduled activities to this case?{/ts}{literal}');";
- break;
-
- case 'case_report' :
- validationMessage = '{/literal}{ts escape="js"}Please select a report from the list.{/ts}{literal}';
- validationField = 'report_id';
- successAction = "window.location='{/literal}{$reportUrl}{literal}' + document.getElementById('report_id').value";
- break;
-
- case '_qf_CaseView_next_merge_case' :
- validationMessage = '{/literal}{ts escape="js"}Please select a case from the list to merge with.{/ts}{literal}';
- validationField = 'merge_case_id';
- break;
- }
- if ( forceValidation || ( document.getElementById( validationField ).value == '' ) ) {
- cj('#'+validationField).crmError(validationMessage);
- return false;
- }
- else if ( successAction ) {
- return eval( successAction );
- }
-}
-
-cj(function( ) {
- buildCaseActivities(false);
-});
-
-function buildCaseActivities(filterSearch) {
- if (filterSearch) {
- oTable.fnDestroy();
- }
- var count = 0;
- var columns = '';
- var sourceUrl = {/literal}"{crmURL p='civicrm/ajax/activity' h=0 q='snippet=4&caseID='}{$caseID}"{literal};
- sourceUrl = sourceUrl + '&cid={/literal}{$contactID}{literal}';
- sourceUrl = sourceUrl + '&userID={/literal}{$userID}{literal}';
-
- cj('#activities-selector th').each(function( ) {
- if (cj(this).attr('id') != 'nosort') {
- columns += '{"sClass": "' + cj(this).attr('class') +'"},';
- }
- else {
- columns += '{ "bSortable": false },';
- }
- count++;
- });
-
- columns = columns.substring(0, columns.length - 1 );
- eval('columns =[' + columns + ']');
-
- oTable = cj('#activities-selector').dataTable({
- "bFilter" : false,
- "bAutoWidth" : false,
- "aaSorting" : [],
- "aoColumns" : columns,
- "bProcessing": true,
- "bJQueryUI": true,
- "asStripClasses" : [ "odd-row", "even-row" ],
- "sPaginationType": "full_numbers",
- "sDom" : '<"crm-datatable-pager-top"lfp>rt<"crm-datatable-pager-bottom"ip>',
- "bServerSide": true,
- "sAjaxSource": sourceUrl,
- "iDisplayLength": 10,
- "fnDrawCallback": function() { setSelectorClass(); },
- "fnServerData": function ( sSource, aoData, fnCallback ) {
-
- if ( filterSearch ) {
- var activity_deleted = 0;
- if ( cj("#activity_deleted:checked").val() == 1 ) {
- activity_deleted = 1;
- }
- aoData.push(
- {name:'status_id', value: cj("select#status_id").val()},
- {name:'activity_type_id', value: cj("select#activity_type_filter_id").val()},
- {name:'activity_date_low', value: cj("#activity_date_low").val()},
- {name:'activity_date_high', value: cj("#activity_date_high").val() },
- {name:'activity_deleted', value: activity_deleted }
- );
- }
- cj.ajax( {
- "dataType": 'json',
- "type": "POST",
- "url": sSource,
- "data": aoData,
- "success": fnCallback
- } );
- }
- });
-}
-
-function setSelectorClass( ) {
- cj("#activities-selector td:last-child").each( function( ) {
- cj(this).parent().addClass(cj(this).text() );
- });
-}
-
-</script>
-{/literal}
+{include file="CRM/Case/Form/ActivityTab.tpl"}
<div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="bottom"}</div>
-{literal}
-<script type="text/javascript">
- cj(function() {
- cj().crmAccordions();
- });
-</script>
-{/literal}
-
{include file="CRM/Case/Form/ActivityChangeStatusJs.tpl"}
{/if} {* view related cases if end *}
</div>