Mercurial > hg > isophonics-drupal-site
comparison core/modules/toolbar/toolbar.api.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children | 7a779792577d |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:4c8ae668cc8c |
---|---|
1 <?php | |
2 | |
3 /** | |
4 * @file | |
5 * Hooks provided by the toolbar module. | |
6 */ | |
7 | |
8 use Drupal\Core\Url; | |
9 | |
10 /** | |
11 * @addtogroup hooks | |
12 * @{ | |
13 */ | |
14 | |
15 /** | |
16 * Add items to the toolbar menu. | |
17 * | |
18 * The toolbar is a container for administrative and site-global interactive | |
19 * components. | |
20 * | |
21 * The toolbar provides a common styling for items denoted by the | |
22 * .toolbar-tab class. | |
23 * | |
24 * The toolbar provides a construct called a 'tray'. The tray is a container | |
25 * for content. The tray may be associated with a toggle in the administration | |
26 * bar. The toggle shows or hides the tray and is optimized for small and | |
27 * large screens. To create this association, hook_toolbar() returns one or | |
28 * more render elements of type 'toolbar_item', containing the toggle and tray | |
29 * elements in its 'tab' and 'tray' properties. | |
30 * | |
31 * The following properties are available: | |
32 * - 'tab': A renderable array. | |
33 * - 'tray': Optional. A renderable array. | |
34 * - '#weight': Optional. Integer weight used for sorting toolbar items in | |
35 * administration bar area. | |
36 * | |
37 * This hook is invoked in toolbar_pre_render(). | |
38 * | |
39 * @return | |
40 * An array of toolbar items, keyed by unique identifiers such as 'home' or | |
41 * 'administration', or the short name of the module implementing the hook. | |
42 * The corresponding value is a render element of type 'toolbar_item'. | |
43 * | |
44 * @see toolbar_pre_render() | |
45 * @ingroup toolbar_tabs | |
46 */ | |
47 function hook_toolbar() { | |
48 $items = []; | |
49 | |
50 // Add a search field to the toolbar. The search field employs no toolbar | |
51 // module theming functions. | |
52 $items['global_search'] = [ | |
53 '#type' => 'toolbar_item', | |
54 'tab' => [ | |
55 '#type' => 'search', | |
56 '#attributes' => [ | |
57 'placeholder' => t('Search the site'), | |
58 'class' => ['search-global'], | |
59 ], | |
60 ], | |
61 '#weight' => 200, | |
62 // Custom CSS, JS or a library can be associated with the toolbar item. | |
63 '#attached' => [ | |
64 'library' => [ | |
65 'search/global', | |
66 ], | |
67 ], | |
68 ]; | |
69 | |
70 // The 'Home' tab is a simple link, which is wrapped in markup associated | |
71 // with a visual tab styling. | |
72 $items['home'] = [ | |
73 '#type' => 'toolbar_item', | |
74 'tab' => [ | |
75 '#type' => 'link', | |
76 '#title' => t('Home'), | |
77 '#url' => Url::fromRoute('<front>'), | |
78 '#options' => [ | |
79 'attributes' => [ | |
80 'title' => t('Home page'), | |
81 'class' => ['toolbar-icon', 'toolbar-icon-home'], | |
82 ], | |
83 ], | |
84 ], | |
85 '#weight' => -20, | |
86 ]; | |
87 | |
88 // A tray may be associated with a tab. | |
89 // | |
90 // When the tab is activated, the tray will become visible, either in a | |
91 // horizontal or vertical orientation on the screen. | |
92 // | |
93 // The tray should contain a renderable array. An optional #heading property | |
94 // can be passed. This text is written to a heading tag in the tray as a | |
95 // landmark for accessibility. | |
96 $items['commerce'] = [ | |
97 '#type' => 'toolbar_item', | |
98 'tab' => [ | |
99 '#type' => 'link', | |
100 '#title' => t('Shopping cart'), | |
101 '#url' => Url::fromRoute('cart'), | |
102 '#options' => [ | |
103 'attributes' => [ | |
104 'title' => t('Shopping cart'), | |
105 ], | |
106 ], | |
107 ], | |
108 'tray' => [ | |
109 '#heading' => t('Shopping cart actions'), | |
110 'shopping_cart' => [ | |
111 '#theme' => 'item_list', | |
112 '#items' => [/* An item list renderable array */], | |
113 ], | |
114 ], | |
115 '#weight' => 150, | |
116 ]; | |
117 | |
118 // The tray can be used to render arbitrary content. | |
119 // | |
120 // A renderable array passed to the 'tray' property will be rendered outside | |
121 // the administration bar but within the containing toolbar element. | |
122 // | |
123 // If the default behavior and styling of a toolbar tray is not desired, one | |
124 // can render content to the toolbar element and apply custom theming and | |
125 // behaviors. | |
126 $items['user_messages'] = [ | |
127 // Include the toolbar_tab_wrapper to style the link like a toolbar tab. | |
128 // Exclude the theme wrapper if custom styling is desired. | |
129 '#type' => 'toolbar_item', | |
130 'tab' => [ | |
131 '#type' => 'link', | |
132 '#theme' => 'user_message_toolbar_tab', | |
133 '#theme_wrappers' => [], | |
134 '#title' => t('Messages'), | |
135 '#url' => Url::fromRoute('user.message'), | |
136 '#options' => [ | |
137 'attributes' => [ | |
138 'title' => t('Messages'), | |
139 ], | |
140 ], | |
141 ], | |
142 'tray' => [ | |
143 '#heading' => t('User messages'), | |
144 'messages' => [/* renderable content */], | |
145 ], | |
146 '#weight' => 125, | |
147 ]; | |
148 | |
149 return $items; | |
150 } | |
151 | |
152 /** | |
153 * Alter the toolbar menu after hook_toolbar() is invoked. | |
154 * | |
155 * This hook is invoked by toolbar_view() immediately after hook_toolbar(). The | |
156 * toolbar definitions are passed in by reference. Each element of the $items | |
157 * array is one item returned by a module from hook_toolbar(). Additional items | |
158 * may be added, or existing items altered. | |
159 * | |
160 * @param $items | |
161 * Associative array of toolbar menu definitions returned from hook_toolbar(). | |
162 */ | |
163 function hook_toolbar_alter(&$items) { | |
164 // Move the User tab to the right. | |
165 $items['commerce']['#weight'] = 5; | |
166 } | |
167 | |
168 /** | |
169 * @} End of "addtogroup hooks". | |
170 */ |