* Add filters to report.
*/
public function addFilters() {
- $filters = array();
+ $filters = $filterGroups =array();
$count = 1;
+
foreach ($this->_filters as $table => $attributes) {
+ if (isset($this->_columns[$table]['group_title'])) {
+ // The presence of 'group_title' is secret code for 'is_a_custom_table'
+ // which magically means to 'display in an accordian'
+ // here we make this explicit.
+ $filterGroups[$table] = array(
+ 'group_title' => $this->_columns[$table]['group_title'],
+ 'use_accordian_for_field_selection' => TRUE,
+
+ );
+ }
foreach ($attributes as $fieldName => $field) {
// get ready with option value pair
// @ todo being able to specific options for a field (e.g a date field) in the field spec as an array rather than an override
);
}
$this->assign('filters', $filters);
+ $this->assign('filterGroups', $filterGroups);
}
/**
{foreach from=$filters item=table key=tableName}
{assign var="filterCount" value=$table|@count}
{* Wrap custom field sets in collapsed accordion pane. *}
- {if $colGroups.$tableName.group_title and $filterCount gte 1}
+ {if $filterGroups.$tableName.group_title and $filterCount gte 1}
{* we should close table that contains other filter elements before we start building custom group accordian
*}
{if $counter eq 1}
{/if}
<div class="crm-accordion-wrapper crm-accordion collapsed">
<div class="crm-accordion-header">
- {$colGroups.$tableName.group_title}
+ {$filterGroups.$tableName.group_title}
</div><!-- /.crm-accordion-header -->
<div class="crm-accordion-body">
<table class="report-layout">
</tr>
{/if}
{/foreach}
- {if $colGroups.$tableName.group_title}
+ {if $filterGroups.$tableName.group_title}
</table>
</div><!-- /.crm-accordion-body -->
</div><!-- /.crm-accordion-wrapper -->