* @return array
*/
public static function getAdminSettings() {
+ $afformTypes = (array) \Civi\Api4\OptionValue::get(FALSE)
+ ->addSelect('name', 'label', 'icon')
+ ->addWhere('is_active', '=', TRUE)
+ ->addWhere('option_group_id:name', '=', 'afform_type')
+ ->addOrderBy('weight', 'ASC')
+ ->execute();
+ // Pluralize tabs (too bad option groups only store a single label)
+ $plurals = [
+ 'form' => ts('Custom Forms'),
+ 'search' => ts('Search Displays'),
+ 'block' => ts('Field Blocks'),
+ 'system' => ts('System Forms'),
+ ];
+ foreach ($afformTypes as $index => $type) {
+ $afformTypes[$index]['plural'] = $plurals[$type['name']] ?? \CRM_Utils_String::pluralize($type['label']);
+ }
return [
- 'afform_type' => \Civi\Api4\OptionValue::get(FALSE)
- ->addSelect('name', 'label', 'icon')
- ->addWhere('is_active', '=', TRUE)
- ->addWhere('option_group_id:name', '=', 'afform_type')
- ->addOrderBy('weight', 'ASC')
- ->execute(),
+ 'afform_type' => $afformTypes,
];
}
$scope.crmUrl = CRM.url;
this.tabs = CRM.afAdmin.afform_type;
- $scope.tabs = _.indexBy(ctrl.tabs, 'name');
+ $scope.types = _.indexBy(ctrl.tabs, 'name');
_.each(['form', 'block', 'search'], function(type) {
- if ($scope.tabs[type]) {
- $scope.tabs[type].options = [];
+ if ($scope.types[type]) {
+ $scope.types[type].options = [];
if (type === 'form') {
- $scope.tabs.form.default = '#create/form/Individual';
+ $scope.types.form.default = '#create/form/Individual';
}
}
});
this.createLinks = function() {
ctrl.searchCreateLinks = '';
- if ($scope.tabs[ctrl.tab].options.length) {
+ if ($scope.types[ctrl.tab].options.length) {
return;
}
var links = [];
});
}
});
- $scope.tabs.form.options = _.sortBy(links, 'Label');
+ $scope.types.form.options = _.sortBy(links, 'Label');
}
if (ctrl.tab === 'block') {
});
}
});
- $scope.tabs.block.options = _.sortBy(links, 'Label');
+ $scope.types.block.options = _.sortBy(links, 'Label');
}
if (ctrl.tab === 'search') {
icon: searchDisplay['type:icon']
});
});
- $scope.tabs.search.options = _.sortBy(links, 'Label');
+ $scope.types.search.options = _.sortBy(links, 'Label');
});
}
};
<ul class="nav nav-tabs">
<li role="presentation" ng-repeat="tab in $ctrl.tabs" ng-class="{active: tab.name === $ctrl.tab}">
- <a href ng-click="$ctrl.tab = tab.name; $ctrl.searchAfformList = ''"><i class="crm-i {{ tab.icon }}"></i> {{:: tab.label }}</a>
+ <a href ng-click="$ctrl.tab = tab.name; $ctrl.searchAfformList = ''"><i class="crm-i {{ tab.icon }}"></i> {{:: tab.plural }}</a>
</li>
</ul>
<div class="form-inline">
<label for="afform-list-filter">{{:: ts('Filter:') }}</label>
<input class="form-control" type="search" id="afform-list-filter" ng-model="$ctrl.searchAfformList" placeholder="">
- <div class="btn-group pull-right" ng-if="tabs[$ctrl.tab].options">
- <a ng-if="tabs[$ctrl.tab].default" href="{{ tabs[$ctrl.tab].default }}" class="btn btn-primary">
- {{ ts('New %1', {1: tabs[$ctrl.tab].label }) }}
+ <div class="btn-group pull-right" ng-if="types[$ctrl.tab].options">
+ <a ng-if="types[$ctrl.tab].default" href="{{ types[$ctrl.tab].default }}" class="btn btn-primary">
+ {{ ts('New %1', {1: types[$ctrl.tab].label }) }}
</a>
<button ng-click="$ctrl.createLinks()" type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
- <span ng-class="{'sr-only': tabs[$ctrl.tab].default}">{{ ts('New %1', {1: tabs[$ctrl.tab].label }) }}</span>
+ <span ng-class="{'sr-only': types[$ctrl.tab].default}">{{ ts('New %1', {1: types[$ctrl.tab].label }) }}</span>
<span class="caret"></span>
</button>
<ul class="dropdown-menu">
<li>
- <input ng-if="tabs[$ctrl.tab].options.length" type="search" class="form-control" placeholder="" ng-model="$ctrl.searchCreateLinks">
- <a href ng-if="!tabs[$ctrl.tab].options.length"><i class="crm-i fa-spinner fa-spin"></i></a>
+ <input ng-if="types[$ctrl.tab].options.length" type="search" class="form-control" placeholder="" ng-model="$ctrl.searchCreateLinks">
+ <a href ng-if="!types[$ctrl.tab].options.length"><i class="crm-i fa-spinner fa-spin"></i></a>
</li>
- <li ng-repeat="link in tabs[$ctrl.tab].options | filter:$ctrl.searchCreateLinks">
+ <li ng-repeat="link in types[$ctrl.tab].options | filter:$ctrl.searchCreateLinks">
<a href="{{ link.url }}">
<i class="crm-i {{ link.icon }}"></i>
{{ link.label }}