diff --git a/docs/framework/routing.md b/docs/framework/routing.md index c8a6389d953a54f2e305987950b5afbe703adbf5..6d34202d63f3fa418243032e83a1768dcdb7aa1c 100644 --- a/docs/framework/routing.md +++ b/docs/framework/routing.md @@ -5,10 +5,10 @@ CiviCRM's routing system is built based on XML files. These XML files define wha The standard menu XML files can be found in `CRM/Core/xml/Menu/`. Each route is defined as an "Item" Within the menu. In extensions you should add your menu to `<extension folder>/xml/Menu/<extensionName>.xml` !!! note - For historical reasons, the routing files live in a `Menu` folder, but the contents of these files do *not* affect the navigation menu at the top of the screen. - + For historical reasons, the routing files live in a `Menu` folder, but the contents of these files do *not* affect the navigation menu at the top of the screen. + Extension authors can add new menu entires by using [hook_civicrm_navigationMenu](/hooks/hook_civicrm_navigationMenu.md). - + ## Example ```xml @@ -35,15 +35,6 @@ The XML will contain a structure made up of the following elements. !!! tip The [`<menu>`](#menu) element must be the root element of the document. - -### `<access_callback>` {:#access_callback} - -* Containing element: [`<item>`](#item) -* Description: Function to be used to check access to the route -* Example: `CRM_Core_Permission::checkMenu` -* Contains: Text -* Notes: - * If you wish for this route to be public you can set it to be 1. ### `<access_arguments>` {:#access_arguments} @@ -54,6 +45,15 @@ The XML will contain a structure made up of the following elements. * Notes: * If you want the permissions to be an "or" situation i.e. User needs either access CiviCRM or administer CiviCRM put a `;` between the permissions. If you want it so that users need multiple permissions put a `,` between +### `<access_callback>` {:#access_callback} + +* Containing element: [`<item>`](#item) +* Description: Function to be used to check access to the route +* Example: `CRM_Core_Permission::checkMenu` +* Contains: Text +* Notes: + * If you wish for this route to be public you can set it to be 1. + ### `<adminGroup>` {:#adminGroup} * Containing element: [`<item>`](#item) @@ -88,6 +88,18 @@ The XML will contain a structure made up of the following elements. * Example: `admin/small/duplicate_matching.png` * Contains: Text +### `<is_public>` {:#is_public} + +* Containing element: [`<item>`](#item) +* Description: ??? +* Contains: `true` or `false` + +### `<is_ssl>` {:#is_ssl} + +* Containing element: [`<item>`](#item) +* Description: ??? +* Contains: `true` or `false` + ### `<item>` {:#item} * Containing element: [`<menu>`](#menu) @@ -95,7 +107,7 @@ The XML will contain a structure made up of the following elements. Elements acceptable within `<item>` -| Element | Acceptable instances | +| Element | Acceptable instances | | -- | -- | | [`<access_callback>`](#access_callback) | 0 or 1 | | [`<access_arguments>`](#access_arguments) | 0 or 1 | @@ -116,18 +128,6 @@ Elements acceptable within `<item>` | [`<title>`](#title) | 1 | | [`<weight>`](#weight) | 0 or 1 | -### `<is_public>` {:#is_public} - -* Containing element: [`<item>`](#item) -* Description: ??? -* Contains: `true` or `false` - -### `<is_ssl>` {:#is_ssl} - -* Containing element: [`<item>`](#item) -* Description: ??? -* Contains: `true` or `false` - ### `<menu>` {:#menu} * Containing element: none (this is the root element) @@ -135,20 +135,10 @@ Elements acceptable within `<item>` Elements acceptable within `<menu>` -| Element | Acceptable instances | +| Element | Acceptable instances | | -- | -- | | [`<item>`](#item) | 1+ | -### `<path>` {:#path} - -* Containing element: [`<item>`](#item) -* Description: The path is the url route that this menu item is for -* Example: `civicrm/admin/eway/settings` -* Contains: Text - -!!! Caution "Caution: Wild card sub-paths" - One path can match all sub-paths. For example, `<path>civicrm/admin</path>` can match `http://example.org/civicrm/admin/f/o/o/b/a/r`. However, one should avoid designs which rely on this because it's imprecise and it can be difficult to integrate with some frontends. - ### `<page_arguments>` {:#page_arguments} @@ -173,6 +163,16 @@ Elements acceptable within `<menu>` * Notes: * If this is not set the default is 0 +### `<path>` {:#path} + +* Containing element: [`<item>`](#item) +* Description: The path is the url route that this menu item is for +* Example: `civicrm/admin/eway/settings` +* Contains: Text + +!!! Caution "Caution: Wild card sub-paths" + One path can match all sub-paths. For example, `<path>civicrm/admin</path>` can match `http://example.org/civicrm/admin/f/o/o/b/a/r`. However, one should avoid designs which rely on this because it's imprecise and it can be difficult to integrate with some frontends. + ### `<path_arguments>` {:#path_arguments} * Containing element: [`<item>`](#item)