From f54dff72eb90829423b682eed083b39ca2dcd03d Mon Sep 17 00:00:00 2001 From: Coleman Watts Date: Mon, 3 Jan 2022 14:25:20 -0500 Subject: [PATCH] Add menu item for "Import MultiValued Custom Data" --- CRM/Upgrade/Incremental/php/FiveFortySix.php | 45 ++++++++++++++++++++ xml/templates/civicrm_navigation.tpl | 9 ++-- 2 files changed, 50 insertions(+), 4 deletions(-) diff --git a/CRM/Upgrade/Incremental/php/FiveFortySix.php b/CRM/Upgrade/Incremental/php/FiveFortySix.php index 26d9bdc87e..901e21c0e5 100644 --- a/CRM/Upgrade/Incremental/php/FiveFortySix.php +++ b/CRM/Upgrade/Incremental/php/FiveFortySix.php @@ -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; } } diff --git a/xml/templates/civicrm_navigation.tpl b/xml/templates/civicrm_navigation.tpl index 601f16d38d..b6098f865c 100644 --- a/xml/templates/civicrm_navigation.tpl +++ b/xml/templates/civicrm_navigation.tpl @@ -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 -- 2.25.1