diff --git a/CRM/Admin/Page/AutomationFormProcessor.php b/CRM/Admin/Page/AutomationFormProcessor.php new file mode 100644 index 0000000000000000000000000000000000000000..27717e36ca590a44450bce1697ea77af967ba987 --- /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 d64a4f4074ae07a93b9a6da64b91a08b212c444b..7507192389eecc71185aa3781571f330e9d985a2 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 39572e0a6127245be22fcd1613d6980f2706e80c..838065883a2f974ab42a19bc1653c4f5c861657a 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 0000000000000000000000000000000000000000..0784e5d541f453f8ad2a81f646cd6e6f9908a985 --- /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 0000000000000000000000000000000000000000..01a423906bfdfd4cd144637e4d27b95c27918cb2 --- /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>