From 8dde09aa8001855c1918cb90f4cf2ad250e61cc0 Mon Sep 17 00:00:00 2001 From: Jaap Jansma <jaap@edeveloper.nl> Date: Sat, 24 Feb 2018 14:25:28 +0100 Subject: [PATCH] added a menu item and a page for the angular module --- CRM/Admin/Page/AutomationFormProcessor.php | 19 ++++ ang/form_processor.ang.php | 10 +++ form_processor.php | 86 +++++++++++++++---- .../Admin/Page/AutomationFormProcessor.tpl | 5 ++ xml/Menu/form_processor.xml | 8 ++ 5 files changed, 111 insertions(+), 17 deletions(-) create mode 100644 CRM/Admin/Page/AutomationFormProcessor.php create mode 100644 templates/CRM/Admin/Page/AutomationFormProcessor.tpl create mode 100644 xml/Menu/form_processor.xml diff --git a/CRM/Admin/Page/AutomationFormProcessor.php b/CRM/Admin/Page/AutomationFormProcessor.php new file mode 100644 index 0000000..27717e3 --- /dev/null +++ b/CRM/Admin/Page/AutomationFormProcessor.php @@ -0,0 +1,19 @@ +<?php +use CRM_FormProcessor_ExtensionUtil as E; + +class CRM_Admin_Page_AutomationFormProcessor extends CRM_Core_Page { + + public function run() { + $loader = new \Civi\Angular\AngularLoader(); + $loader->setModules(array('form_processor')); + $loader->setPageName('civicrm/admin/formprocessor'); + \Civi::resources()->addSetting(array( + 'crmApp' => array( + 'defaultRoute' => 'formprocessors', + ), + )); + $loader->load(); + parent::run(); + } + +} diff --git a/ang/form_processor.ang.php b/ang/form_processor.ang.php index d64a4f4..7507192 100644 --- a/ang/form_processor.ang.php +++ b/ang/form_processor.ang.php @@ -6,6 +6,16 @@ $action_provider = form_processor_get_action_provider(); return array ( + 'basePages' => array('civicrm/admin/formprocessor'), + 'requires' => array( + 'crmApp', + 'crmUi', + 'crmUtil', + 'ngRoute', + 'dialogService', + 'ui.utils', + 'action_provider', + ), 'js' => array ( 0 => 'ang/form_processor.js', diff --git a/form_processor.php b/form_processor.php index 39572e0..8380658 100644 --- a/form_processor.php +++ b/form_processor.php @@ -97,6 +97,75 @@ function form_processor_get_action_types() { return $provider->getActions(); } +/** + * Implementation of hook_civicrm_navigationMenu. + * + * Adds Automation navigation items just before the Administer menu. + * + * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_navigationMenu + */ +function form_processor_civicrm_navigationMenu(&$params) { + // get the Administer menu ID and position in the $params array + $administerMenuId = CRM_Core_DAO::getFieldValue('CRM_Core_BAO_Navigation', 'Administer', 'id', 'name'); + $posOfAdminMenu = array_search($administerMenuId, array_keys($params)); + + $newNavId = _form_processor_getMenuKeyMax($params); + $formProcessorMenu = array( + $newNavId => array( + 'attributes' => array( + 'label' => ts('Automation'), + 'name' => 'automation', + 'url' => NULL, + 'permission' => 'administer CiviCRM', + 'operator' => NULL, + 'separator' => 0, + 'parentID' => NULL, + 'navID' => $newNavId, + 'active' => 1, + ), + 'child' => array( + $newNavId + 1 => array( + 'attributes' => array( + 'label' => E::ts('Form processors,'), + 'name' => 'form_processors', + 'url' => 'civicrm/admin/automation/formprocessor/#/formprocessors', + 'permission' => 'administer CiviCRM', + 'operator' => NULL, + 'separator' => 0, + 'parentID' => $newNavId, + 'navID' => $newNavId + 1, + 'active' => 1, + ), + 'child' => array(), + ), + ), + ), + ); + + // insert volunteer menu before the admininster menu + $params = array_slice($params, 0, $posOfAdminMenu, true) + + $formProcessorMenu + array_slice($params, $posOfAdminMenu, NULL, true); +} + +/** + * Helper function for getting the highest key in the navigation menu. + * + * Taken from http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_navigationMenu. + * + * @param array $menuArray + * @return int + */ +function _form_processor_getMenuKeyMax($menuArray) { + $max = array(max(array_keys($menuArray))); + foreach($menuArray as $v) { + if (!empty($v['child'])) { + $max[] = _form_processor_getMenuKeyMax($v['child']); + } + } + return max($max); +} + + /** * Implements hook_civicrm_config(). * @@ -227,20 +296,3 @@ function form_processor_civicrm_alterSettingsFolders(&$metaDataFolders = NULL) { function form_processor_civicrm_preProcess($formName, &$form) { } // */ - -/** - * Implements hook_civicrm_navigationMenu(). - * - * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_navigationMenu - * -function form_processor_civicrm_navigationMenu(&$menu) { - _form_processor_civix_insert_navigation_menu($menu, NULL, array( - 'label' => E::ts('The Page'), - 'name' => 'the_page', - 'url' => 'civicrm/the-page', - 'permission' => 'access CiviReport,access CiviContribute', - 'operator' => 'OR', - 'separator' => 0, - )); - _form_processor_civix_navigationMenu($menu); -} // */ diff --git a/templates/CRM/Admin/Page/AutomationFormProcessor.tpl b/templates/CRM/Admin/Page/AutomationFormProcessor.tpl new file mode 100644 index 0000000..0784e5d --- /dev/null +++ b/templates/CRM/Admin/Page/AutomationFormProcessor.tpl @@ -0,0 +1,5 @@ +{literal} + <div ng-app="crmApp"> + <div ng-view></div> + </div> +{/literal} \ No newline at end of file diff --git a/xml/Menu/form_processor.xml b/xml/Menu/form_processor.xml new file mode 100644 index 0000000..01a4239 --- /dev/null +++ b/xml/Menu/form_processor.xml @@ -0,0 +1,8 @@ +<?xml version="1.0"?> +<menu> + <item> + <path>civicrm/admin/automation/formprocessor</path> + <page_callback>CRM_Admin_Page_AutomationFormProcessor</page_callback> + <access_arguments>administer CiviCRM</access_arguments> + </item> +</menu> -- GitLab