Add menu item for "Import MultiValued Custom Data"
authorColeman Watts <coleman@civicrm.org>
Mon, 3 Jan 2022 19:25:20 +0000 (14:25 -0500)
committerColeman Watts <coleman@civicrm.org>
Mon, 3 Jan 2022 21:57:09 +0000 (16:57 -0500)
CRM/Upgrade/Incremental/php/FiveFortySix.php
xml/templates/civicrm_navigation.tpl

index 26d9bdc87e5a51381273a674e6789d9d3ff1bba8..901e21c0e5dfc14026d30f5ebda0ad7905bd9c4d 100644 (file)
@@ -49,6 +49,51 @@ class CRM_Upgrade_Incremental_php_FiveFortySix extends CRM_Upgrade_Incremental_B
    */
   public function upgrade_5_46_alpha1($rev): void {
     $this->addTask(ts('Upgrade DB to %1: SQL', [1 => $rev]), 'runSql', $rev);
+    $this->addTask('Add "Import Custom Data" menu', 'addImportCustomMenu');
+  }
+
+  /**
+   * Add menu item "Import MultiValued Custom" below "Import Activities"
+   *
+   * @param \CRM_Queue_TaskContext $ctx
+   * @return bool
+   */
+  public static function addImportCustomMenu(CRM_Queue_TaskContext $ctx) {
+    try {
+      // Get "Import Activities" and remove separator
+      $importActivities = civicrm_api3('Navigation', 'get', [
+        'name' => 'Import Activities',
+        'return' => ['id', 'parent_id', 'weight'],
+        'sequential' => 1,
+        'domain_id' => CRM_Core_Config::domainID(),
+        'api.Navigation.create' => ['has_separator' => ''],
+      ])['values'][0] ?? NULL;
+      $existing = civicrm_api3('Navigation', 'getcount', [
+        'name' => "Import MultiValued Custom",
+        'domain_id' => CRM_Core_Config::domainID(),
+      ]);
+      // Insert "Import MultiValued Custom" below "Import Activities"
+      if ($importActivities && !$existing) {
+        // Use APIv4 because it will auto-adjust weights unlike v3
+        civicrm_api4('Navigation', 'create', [
+          'checkPermissions' => FALSE,
+          'values' => [
+            'parent_id' => $importActivities['parent_id'],
+            'label' => ts('Import Custom Data'),
+            'weight' => $importActivities['weight'] + 1,
+            'name' => 'Import MultiValued Custom',
+            'permission' => "import contacts",
+            'url' => "civicrm/import/custom?reset=1",
+            'has_separator' => 1,
+            'is_active' => 1,
+          ],
+        ]);
+      }
+    }
+    catch (Exception $e) {
+      // Couldn't create menu item.
+    }
+    return TRUE;
   }
 
 }
index 601f16d38d0bd91cfe450a6308b7d11c77d5c018..b6098f865c33d2c0bea4e797bf0c7fd9a0f2594e 100644 (file)
@@ -91,10 +91,11 @@ VALUES
     ( @domainID, 'civicrm/activity?reset=1&action=add&context=standalone',  '{ts escape="sql" skip="true"}New Activity{/ts}',           'New Activity',         NULL,               '',             @contactlastID, '1', NULL,  5 ),
     ( @domainID, 'civicrm/activity/email/add?atype=3&action=add&reset=1&context=standalone', '{ts escape="sql" skip="true"}New Email{/ts}',   'New Email',      NULL,               '',             @contactlastID, '1', '1',   6 ),
     ( @domainID, 'civicrm/import/contact?reset=1',                          '{ts escape="sql" skip="true"}Import Contacts{/ts}',        'Import Contacts',      'import contacts',  '',             @contactlastID, '1', NULL,  7 ),
-    ( @domainID, 'civicrm/import/activity?reset=1',                         '{ts escape="sql" skip="true"}Import Activities{/ts}',      'Import Activities',    'import contacts',  '',             @contactlastID, '1', '1',   8 ),
-    ( @domainID, 'civicrm/group/add?reset=1',                               '{ts escape="sql" skip="true"}New Group{/ts}',              'New Group',            'edit groups',      '',             @contactlastID, '1', NULL,  9 ),
-    ( @domainID, 'civicrm/group?reset=1',                                   '{ts escape="sql" skip="true"}Manage Groups{/ts}',          'Manage Groups',        'access CiviCRM',   '',             @contactlastID, '1', '1',   10 ),
-    ( @domainID, 'civicrm/tag?reset=1',                               '{ts escape="sql" skip="true"}Manage Tags{/ts}', 'Manage Tags (Categories)', 'manage tags', '',     @contactlastID, '1','1', 12 ),
+    ( @domainID, 'civicrm/import/activity?reset=1',                         '{ts escape="sql" skip="true"}Import Activities{/ts}',      'Import Activities',    'import contacts',  '',             @contactlastID, '1', NULL,   8 ),
+    ( @domainID, 'civicrm/import/custom?reset=1',                         '{ts escape="sql" skip="true"}Import Custom Data{/ts}',  'Import MultiValued Custom', 'import contacts',  '',             @contactlastID, '1', '1',   9 ),
+    ( @domainID, 'civicrm/group/add?reset=1',                               '{ts escape="sql" skip="true"}New Group{/ts}',              'New Group',            'edit groups',      '',             @contactlastID, '1', NULL,  10 ),
+    ( @domainID, 'civicrm/group?reset=1',                                   '{ts escape="sql" skip="true"}Manage Groups{/ts}',          'Manage Groups',        'access CiviCRM',   '',             @contactlastID, '1', '1',   11 ),
+    ( @domainID, 'civicrm/tag?reset=1',                               '{ts escape="sql" skip="true"}Manage Tags{/ts}', 'Manage Tags (Categories)',              'manage tags',      '',             @contactlastID, '1', '1',   12 ),
     ( @domainID, 'civicrm/contact/deduperules?reset=1',  '{ts escape="sql" skip="true"}Find and Merge Duplicate Contacts{/ts}', 'Find and Merge Duplicate Contacts', 'administer dedupe rules,merge duplicate contacts', 'OR', @contactlastID, '1', NULL, 13 );
 
 INSERT INTO civicrm_navigation