From: Coleman Watts Date: Wed, 13 Aug 2014 14:58:42 +0000 (+0100) Subject: CRM-15107 - Show count instead of id in 'manage groups' table X-Git-Url: https://vcs.fsf.org/?a=commitdiff_plain;h=7f4b344cce81a942357992d62f11e56ffb09cc29;p=civicrm-core.git CRM-15107 - Show count instead of id in 'manage groups' table --- diff --git a/CRM/Contact/BAO/Group.php b/CRM/Contact/BAO/Group.php index cc484a2527..411c4003df 100644 --- a/CRM/Contact/BAO/Group.php +++ b/CRM/Contact/BAO/Group.php @@ -750,8 +750,8 @@ class CRM_Contact_BAO_Group extends CRM_Contact_DAO_Group { if (!empty($groups)) { foreach ($groups as $id => $value) { $groupList[$id]['group_id'] = $value['id']; + $groupList[$id]['members'] = $value['members']; $groupList[$id]['group_name'] = $value['title']; - $groupList[$id]['class'] = implode(' ', $value['class']); // append parent names if in search mode if (empty($params['parent_id']) && !empty($value['parents'])) { @@ -761,8 +761,10 @@ class CRM_Contact_BAO_Group extends CRM_Contact_DAO_Group { $title[] = $allGroups[$gId]; } $groupList[$id]['group_name'] .= '
'.ts('Child of').': ' . implode(', ', $title) . '
'; - $groupList[$id]['class'] = in_array('disabled', $value['class']) ? 'disabled' : ''; + $value['class'] = array_diff($value['class'], array('crm-row-parent')); } + $value['class'][] = 'crm-entity'; + $groupList[$id]['class'] = $value['id'] . ',' . implode(' ', $value['class']); $groupList[$id]['group_description'] = CRM_Utils_Array::value('description', $value); if (!empty($value['group_type'])) { @@ -829,12 +831,17 @@ class CRM_Contact_BAO_Group extends CRM_Contact_DAO_Group { } $query = " - SELECT groups.*, createdBy.sort_name as created_by {$select} + SELECT groups.*, createdBy.sort_name as created_by, IF(groups.saved_search_id, COUNT(smart_members.id), COUNT(members.id)) as members {$select} FROM civicrm_group groups - LEFT JOIN civicrm_contact createdBy - ON createdBy.id = groups.created_id - {$from} + LEFT JOIN civicrm_group_contact members + ON members.group_id = groups.id AND members.status = 'Added' + LEFT JOIN civicrm_group_contact_cache smart_members + ON smart_members.group_id = groups.id + LEFT JOIN civicrm_contact createdBy + ON createdBy.id = groups.created_id + {$from} WHERE $whereClause {$where} + GROUP BY groups.id {$orderBy} {$limit}"; @@ -910,6 +917,8 @@ class CRM_Contact_BAO_Group extends CRM_Contact_DAO_Group { $values[$object->id]['visibility'] = $visibility[$values[$object->id]['visibility']]; + $values[$object->id]['members'] = $object->members; + if (isset($values[$object->id]['group_type'])) { $groupTypes = explode(CRM_Core_DAO::VALUE_SEPARATOR, substr($values[$object->id]['group_type'], 1, -1) diff --git a/CRM/Group/Page/AJAX.php b/CRM/Group/Page/AJAX.php index fef31e7fe3..b34b0f3838 100644 --- a/CRM/Group/Page/AJAX.php +++ b/CRM/Group/Page/AJAX.php @@ -84,7 +84,7 @@ class CRM_Group_Page_AJAX { $iFilteredTotal = $iTotal = $params['total']; $selectorElements = array( - 'group_name', 'group_id', 'created_by', 'group_description', + 'group_name', 'members', 'created_by', 'group_description', 'group_type', 'visibility', 'org_info', 'links', 'class', ); diff --git a/templates/CRM/Group/Form/Search.tpl b/templates/CRM/Group/Form/Search.tpl index 9773787209..d3bbee5a59 100644 --- a/templates/CRM/Group/Form/Search.tpl +++ b/templates/CRM/Group/Form/Search.tpl @@ -71,7 +71,7 @@ {ts}Name{/ts} - {ts}ID{/ts} + {ts}Members{/ts} {ts}Created By{/ts} {ts}Description{/ts} {ts}Group Type{/ts} @@ -137,7 +137,7 @@ CRM.$(function($) { "aaSorting" : [], "aoColumns" : [ {sClass:'crm-group-name'}, - {sClass:'crm-group-group_id'}, + {sClass:'crm-group-members'}, {sClass:'crm-group-created_by'}, {sClass:'crm-group-description', bSortable:false}, {sClass:'crm-group-group_type'}, @@ -171,14 +171,19 @@ CRM.$(function($) { } }, "fnRowCallback": function(nRow, aData, iDisplayIndex, iDisplayIndexFull) { - var id = $('td:eq(1)', nRow).text(); - $(nRow).addClass('crm-entity').attr('data-entity', 'group').attr('data-id', id); + var id = $('td:last', nRow).text().split(',')[0]; + var cl = $('td:last', nRow).text().split(',')[1]; + $(nRow).addClass(cl).attr({id: 'row_' + id, 'data-id': id, 'data-entity': 'group'}); $('td:eq(0)', nRow).wrapInner(''); $('td:eq(3)', nRow).wrapInner(''); + if (parentsOnly) { + if ($(nRow).hasClass('crm-group-parent')) { + $(nRow).find('td:first').prepend('{/literal}{literal}'); + } + } return nRow; }, "fnDrawCallback": function() { - setSelectorClass( parentsOnly, showOrgInfo ); $('.crm-editable').crmEditable(); }, "fnServerData": function ( sSource, aoData, fnCallback ) { @@ -230,20 +235,6 @@ CRM.$(function($) { }); } - function setSelectorClass( parentsOnly, showOrgInfo ) { - var $context = $('#crm-main-content-wrapper'); - $('table.crm-group-selector tr', $context).each( function( ) { - var className = $(this).find('td:last-child').text(); - $(this).addClass( className ); - var rowID = $(this).find('td:nth-child(2)').text(); - $(this).prop( 'id', 'row_' + rowID ); - if (parentsOnly) { - if ( $(this).hasClass('crm-group-parent') ) { - $(this).find('td:first').prepend('{/literal}{literal}'); - } - } - }); - } // show hide children var $context = $('#crm-main-content-wrapper'); $('table.crm-group-selector', $context).on( 'click', 'span.show-children', function(){ @@ -292,14 +283,14 @@ CRM.$(function($) { "success": function(response){ var appendHTML = ''; $.each( response, function( i, val ) { - appendHTML += ''; + appendHTML += ''; if ( val.is_parent ) { appendHTML += '' + '{/literal}{literal}' + val.group_name + ''; } else { appendHTML += '' + val.group_name + ''; } - appendHTML += "" + val.group_id + ""; + appendHTML += "" + val.members + ""; appendHTML += "" + val.created_by + ""; appendHTML += '' + (val.group_description || '') + ""; appendHTML += "" + val.group_type + "";