foreach ($groups as $id => $value) {
$groupList[$id]['group_id'] = $value['id'];
$groupList[$id]['group_name'] = $value['title'];
- $groupList[$id]['class'] = $value['class'];
+ $groupList[$id]['class'] = implode(' ', $value['class']);
// append parent names if in search mode
if ( !CRM_Utils_Array::value('parent_id', $params) &&
$title[] = $allGroups[$gId];
}
$groupList[$id]['group_name'] .= '<div class="crm-row-parent-name"><em>'.ts('Child of').'</em>: ' . implode(', ', $title) . '</div>';
- $groupList[$id]['class'] = '';
+ $groupList[$id]['class'] = in_array('disabled', $value['class']) ? 'disabled' : '';
}
$groupList[$id]['group_description'] = CRM_Utils_Array::value('description', $value);
if ($permission) {
$newLinks = $links;
- $values[$object->id] = array();
+ $values[$object->id] = array('class' => array());
CRM_Core_DAO::storeValues($object, $values[$object->id]);
if ($object->saved_search_id) {
$values[$object->id]['title'] .= ' (' . ts('Smart Group') . ')';
}
}
- $values[$object->id]['class'] = '';
if (array_key_exists('is_active', $object)) {
if ($object->is_active) {
$action -= CRM_Core_Action::ENABLE;
}
else {
- $values[$object->id]['class'] = 'disabled';
+ $values[$object->id]['class'][] = 'disabled';
$action -= CRM_Core_Action::VIEW;
$action -= CRM_Core_Action::DISABLE;
}
// If group has children, add class for link to view children
$values[$object->id]['is_parent'] = false;
if (array_key_exists('children', $values[$object->id])) {
- $values[$object->id]['class'] = "crm-group-parent";
+ $values[$object->id]['class'][] = "crm-group-parent";
$values[$object->id]['is_parent'] = true;
}
// If group is a child, add child class
if (array_key_exists('parents', $values[$object->id])) {
- $values[$object->id]['class'] = "crm-group-child";
- }
-
- if (array_key_exists('children', $values[$object->id])
- && array_key_exists('parents', $values[$object->id])) {
- $values[$object->id]['class'] = "crm-group-child crm-group-parent";
+ $values[$object->id]['class'][] = "crm-group-child";
}
if ($groupOrg) {
}
/* in place edit */
-.crm-container .crm-editable-enabled,
-.crm-container .crm-editable-textarea-enabled {
+.crm-container .crm-editable-enabled {
white-space: nowrap;
- display: block;
+ padding-left: 2px;
+ border: 2px dashed transparent;
+}
+.crm-container .crm-editable-textarea-enabled {
padding-left: 2px;
border: 2px dashed transparent;
}
-.crm-container .crm-editable-enabled:hover {
+.crm-container .crm-editable-enabled:hover,
+.crm-container .crm-editable-textarea-enabled:hover {
border: 2px dashed lightgrey;
cursor: pointer;
}
+.crm-container span.crm-editable-textarea-enabled {
+ display: inline-block !important;
+ width: 96%;
+}
+.crm-container span.crm-editable-enabled {
+ display: inline-block !important;
+}
+
.crm-container .crm-editable-placeholder {
background: url("../i/icons/jquery-ui-2786C2.png") -66px -114px no-repeat;
text-indent: -10000px;
.crm-container h2.crm-editable-enabled input {
min-height: 1.4em;
}
-
-.crm-container td.crm-editable {
- display: table-cell !important;
+.crm-container .crm-editable-textarea-enabled textarea {
+ min-height: 5em;
}
/*crm-10345*/
padding-left: 60px;
text-indent: -20px;
}
+#crm-container .crm-group-name span.crm-editable-enabled {
+ text-indent: 0;
+}
#crm-container div.crm-row-parent-name {
padding: 3px 0px 0px .5em;
el = this[0],
ret = {},
$row = this.first().closest('.crm-entity');
- ret.entity = $row.data('entity');
- ret.id = $row.data('id');
- if (!ret.entity || !ret.id) {
- ret.entity = $row[0].id.split('-')[0];
- ret.id = $row[0].id.split('-')[1];
- }
+ ret.entity = $row.data('entity') || $row[0].id.split('-')[0];
+ ret.id = $row.data('id') || $row[0].id.split('-')[1];
if (!ret.entity || !ret.id) {
return false;
}
<tr id="contact_type-{$row.id}" class="{cycle values="odd-row,even-row"} {$row.class} crm-contactType crm-entity {if NOT $row.is_active} disabled{/if}">
<td class="crm-contactType-label crm-editable" data-field="label">{ts}{$row.label}{/ts}</td>
<td class="crm-contactType-parent">{if $row.parent}{ts}{$row.parent_label}{/ts}{else}{ts}(built-in){/ts}{/if}</td>
- <td class="crm-contactType-description crm-editable" data-field="description">{$row.description}</td>
+ <td class="crm-contactType-description crm-editable" data-field="description" data-type="textarea">{$row.description}</td>
<td>{$row.action|replace:'xx':$row.id}</td>
</tr>
{/foreach}
<td class="yes-no crm-admin-options-filter">{if $row.filter eq 1}<img src="{$config->resourceBase}i/check.gif" alt="{ts}Counted{/ts}" />{/if}</td>
{/if}
{if $showVisibility}<td class="crm-admin-visibility_label">{$row.visibility_label}</td>{/if}
- <td class="crm-admin-options-description crm-editable" data-field="description" data-action="create">{$row.description}</td>
+ <td class="crm-admin-options-description crm-editable" data-field="description" data-type="textarea">{$row.description}</td>
<td class="nowrap crm-admin-options-order">{$row.order}</td>
{if $showIsDefault}
<td class="crm-admin-options-is_default" align="center">{if $row.is_default eq 1}<img src="{$config->resourceBase}i/check.gif" alt="{ts}Default{/ts}" />{/if} </td>
{foreach from=$rows item=row}
<tr id="print_label-{$row.id}" class="crm-entity {cycle values="odd-row,even-row"} {$row.class} crm-badge-layout {if NOT $row.is_active} disabled{/if}">
<td class="crm-badge-layout-title crm-editable" data-field="title">{$row.title}</td>
- <td class="crm-badge-layout-description crm-editable" data-field="description">{$row.description}</td>
+ <td class="crm-badge-layout-description crm-editable" data-field="description" data-type="textarea">{$row.description}</td>
<td id="row_{$row.id}_status" class="crm-badge-layout-is_active">
{if $row.is_active eq 1} {ts}Yes{/ts} {else} {ts}No{/ts} {/if}
</td>
{foreach from=$rows item=row}
<tr id="financial_account-{$row.id}" class="crm-entity {cycle values="odd-row,even-row"} {$row.class}{if NOT $row.is_active} disabled{/if}">
<td class="crm-editable" data-field="name">{$row.name}</td>
- <td class="crm-editable" data-field="description">{$row.description}</td>
+ <td class="crm-editable" data-field="description" data-type="textarea">{$row.description}</td>
<td class="crm-editable" data-field="accounting_code">{$row.accounting_code}</td>
<td>{$row.financial_account_type_id}{if $row.account_type_code} ({$row.account_type_code}){/if}</td>
<td>{if $row.is_deductible eq 1} {ts}Yes{/ts} {else} {ts}No{/ts} {/if}</td>
{foreach from=$rows item=row}
<tr id="financial_type-{$row.id}" class="crm-entity {cycle values="odd-row,even-row"} {$row.class}{if NOT $row.is_active} disabled{/if}">
<td class="crm-editable" data-field="name">{$row.name}</td>
- <td class="crm-editable" data-field="description">{$row.description}</td>
+ <td class="crm-editable" data-field="description" data-type="textarea">{$row.description}</td>
<td>{$row.financial_account}</td>
<td>{if $row.is_deductible eq 1} {ts}Yes{/ts} {else} {ts}No{/ts} {/if}</td>
<td>{if $row.is_reserved eq 1} {ts}Yes{/ts} {else} {ts}No{/ts} {/if}</td>
{literal}
<script type="text/javascript">
-cj( function() {
+cj(function($) {
// for CRM-11310 and CRM-10635 : processing just parent groups on initial display
// passing '1' for parentsOnlyArg to show parent child heirarchy structure display
// on initial load of manage group page and
// also to handle search filtering for initial load of same page.
buildGroupSelector(true, 1);
- cj('#_qf_Search_refresh').click( function() {
+ $('#_qf_Search_refresh').click( function() {
buildGroupSelector( true );
});
+ // Add livePage functionality
+ $('#crm-container').on('click', 'a.button, a.action-item[href*="action=update"], a.action-item[href*="action=delete"]', function() {
+ CRM.loadForm($(this).attr('href'), {
+ openInline: 'a:not([href="#"])'
+ }).on('crmFormSuccess', function(e, data) {
+ // Refresh datatable when form completes
+ $('#crm-group-selector').dataTable().fnDraw();
+ });
+ return false;
+ });
});
function buildGroupSelector( filterSearch, parentsOnlyArg ) {
"sLast": {/literal}"{ts escape='js'}Last{/ts}"{literal}
}
},
- "fnDrawCallback": function() { setSelectorClass( parentsOnly, showOrgInfo ); },
+ "fnRowCallback": function(nRow, aData, iDisplayIndex, iDisplayIndexFull) {
+ var id = cj('td:eq(1)', nRow).text();
+ cj(nRow).addClass('crm-entity').attr('data-entity', 'group').attr('data-id', id);
+ cj('td:eq(0)', nRow).wrapInner('<span class="crm-editable crmf-name" />');
+ cj('td:eq(3)', nRow).wrapInner('<span class="crm-editable crmf-description" data-type="textarea" />');
+ return nRow;
+ },
+ "fnDrawCallback": function() {
+ setSelectorClass( parentsOnly, showOrgInfo );
+ cj('.crm-editable').crmEditable();
+ },
"fnServerData": function ( sSource, aoData, fnCallback ) {
aoData.push( {name:'showOrgInfo', value: showOrgInfo },
{name:'parentsOnly', value: parentsOnly }
"success": function(response){
var appendHTML = '';
cj.each( response, function( i, val ) {
- appendHTML += '<tr id="row_'+ val.group_id +'_'+parent_id+'" class="parent_is_' + parent_id + ' crm-row-child ' + val.class + '">';
+ appendHTML += '<tr id="row_'+ val.group_id +'_'+parent_id+'" data-entity="group" data-id="'+ val.group_id +'" class="crm-entity parent_is_' + parent_id + ' crm-row-child ' + val.class + '">';
if ( val.is_parent ) {
- appendHTML += '<td class="crm-group-name ' + levelClass + '">' + '{/literal}<span class="collapsed show-children" title="{ts}show child groups{/ts}"/></span>{literal}' + val.group_name + '</td>';
+ appendHTML += '<td class="crm-group-name ' + levelClass + '">' + '{/literal}<span class="collapsed show-children" title="{ts}show child groups{/ts}"/></span>{literal}<span class="crm-editable crmf-name">' + val.group_name + '</span></td>';
}
else {
- appendHTML += '<td class="crm-group-name ' + levelClass + '"><span class="crm-no-children"></span>' + val.group_name + '</td>';
+ appendHTML += '<td class="crm-group-name ' + levelClass + '"><span class="crm-no-children"></span><span class="crm-editable crmf-name">' + val.group_name + '</span></td>';
}
appendHTML += "<td>" + val.group_id + "</td>";
appendHTML += "<td>" + val.created_by + "</td>";
- if (val.group_description) {
- appendHTML += "<td>" + val.group_description + "</td>";
- } else {
- appendHTML += "<td> </td>";
- }
+ appendHTML += '<td><span class="crm-editable crmf-description" data-type="textarea">' + (val.group_description || '') + "</span></td>";
appendHTML += "<td>" + val.group_type + "</td>";
appendHTML += "<td>" + val.visibility + "</td>";
appendHTML += "<td>" + val.links + "</td>";
appendHTML += "</tr>";
});
cj( rowID ).after( appendHTML );
+ cj('.crm-editable').crmEditable();
}
} );
}
var $row, $table, info, enabled, fieldLabel;
function refresh() {
- if (false && $.fn.DataTable.fnIsDataTable($table[0])) { // fixme why doesn't this work?
- $table.dataTable().fnDraw();
- } else {
- // Refresh an existing ajax container or create a new one
+ // Call native refresh method on ajax datatables
+ if ($.fn.DataTable.fnIsDataTable($table[0]) && $table.dataTable().fnSettings().sAjaxSource) {
+ $table.unblock().dataTable().fnDraw();
+ }
+ // Otherwise refresh the content area using crmSnippet
+ else {
$row.closest('.crm-ajax-container, #crm-main-content-wrapper').crmSnippet().crmSnippet('refresh');
}
{/literal} {* client-side variable substitutions in smarty are AWKWARD! *}