Afform Admin - Pluralize tabs & rename variable with same name as another
authorColeman Watts <coleman@civicrm.org>
Tue, 2 Feb 2021 03:32:11 +0000 (22:32 -0500)
committerColeman Watts <coleman@civicrm.org>
Tue, 2 Feb 2021 18:35:34 +0000 (13:35 -0500)
ext/afform/admin/Civi/AfformAdmin/AfformAdminMeta.php
ext/afform/admin/ang/afAdmin/afAdminList.controller.js
ext/afform/admin/ang/afAdmin/afAdminList.html

index 782a5fcc716ca96661db8cb6ab0978b2c6ae4f18..468d690bdbcdfe6a41f1f9a05f9eb5af749bf48d 100644 (file)
@@ -10,13 +10,24 @@ class AfformAdminMeta {
    * @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,
     ];
   }
 
index f1d8003439593d062e5f94786d1a0eb0ab783a5f..716e7900dbdb9f291c2f5b2cd82caa3e58ab600c 100644 (file)
@@ -8,12 +8,12 @@
     $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';
         }
       }
     });
@@ -33,7 +33,7 @@
 
     this.createLinks = function() {
       ctrl.searchCreateLinks = '';
-      if ($scope.tabs[ctrl.tab].options.length) {
+      if ($scope.types[ctrl.tab].options.length) {
         return;
       }
       var links = [];
@@ -48,7 +48,7 @@
             });
           }
         });
-        $scope.tabs.form.options = _.sortBy(links, 'Label');
+        $scope.types.form.options = _.sortBy(links, 'Label');
       }
 
       if (ctrl.tab === 'block') {
@@ -61,7 +61,7 @@
             });
           }
         });
-        $scope.tabs.block.options = _.sortBy(links, 'Label');
+        $scope.types.block.options = _.sortBy(links, 'Label');
       }
 
       if (ctrl.tab === 'search') {
@@ -75,7 +75,7 @@
               icon: searchDisplay['type:icon']
             });
           });
-          $scope.tabs.search.options = _.sortBy(links, 'Label');
+          $scope.types.search.options = _.sortBy(links, 'Label');
         });
       }
     };
index 02dd53f96b352de3d7c85677f787557c8a299a18..bebb59f91e8e9875dca645458db4d852fd87f84b 100644 (file)
@@ -3,27 +3,27 @@
 
   <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="&#xf002">
-    <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="&#xf002" 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="&#xf002" 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 }}