danielebarchiesi@4
|
1 <?php
|
danielebarchiesi@4
|
2
|
danielebarchiesi@4
|
3 /**
|
danielebarchiesi@4
|
4 * @file
|
danielebarchiesi@4
|
5 * Hooks provided by the Field group module.
|
danielebarchiesi@4
|
6 *
|
danielebarchiesi@4
|
7 * Fieldgroup is a module that will wrap fields and other fieldgroups. Nothing more, nothing less.
|
danielebarchiesi@4
|
8 * For this there are formatters we can create on forms and view modes.
|
danielebarchiesi@4
|
9 *
|
danielebarchiesi@4
|
10 * Some of the elements defined in fieldgroup will be ported to the elements module.
|
danielebarchiesi@4
|
11 *
|
danielebarchiesi@4
|
12 * DEVELOPERS NOTES
|
danielebarchiesi@4
|
13 *
|
danielebarchiesi@4
|
14 * - Fieldgroup uses a ''#fieldgroups' property to know what fieldgroups are to be pre_rendered and
|
danielebarchiesi@4
|
15 * rendered by the field_group module. This means we need to be sure our groups are in #fieldgroups.
|
danielebarchiesi@4
|
16 * #fieldgroups is later merged with the normal #groups that can be used by any other module.
|
danielebarchiesi@4
|
17 * This is done to be sure fieldgroup is not taking fieldsets from profile2, commerce line items,
|
danielebarchiesi@4
|
18 * commerce user profiles, ... .
|
danielebarchiesi@4
|
19 * When trying to merge a programmatically created field wrapper (div, markup, fieldset, ...) into
|
danielebarchiesi@4
|
20 * groups, you might consider adding it in #field_groups as well if you want the element processed
|
danielebarchiesi@4
|
21 * by fieldgroup.
|
danielebarchiesi@4
|
22 */
|
danielebarchiesi@4
|
23
|
danielebarchiesi@4
|
24 /**
|
danielebarchiesi@4
|
25 * @addtogroup hooks
|
danielebarchiesi@4
|
26 * @{
|
danielebarchiesi@4
|
27 */
|
danielebarchiesi@4
|
28
|
danielebarchiesi@4
|
29
|
danielebarchiesi@4
|
30 /**
|
danielebarchiesi@4
|
31 * Javascript hooks
|
danielebarchiesi@4
|
32 *
|
danielebarchiesi@4
|
33 * Drupal.FieldGroup.Effects.processHook.execute()
|
danielebarchiesi@4
|
34 * See field_group.js for the examples for all implemented formatters.
|
danielebarchiesi@4
|
35 */
|
danielebarchiesi@4
|
36
|
danielebarchiesi@4
|
37
|
danielebarchiesi@4
|
38 /**
|
danielebarchiesi@4
|
39 * Implements hook_field_group_formatter_info().
|
danielebarchiesi@4
|
40 *
|
danielebarchiesi@4
|
41 * Define the information on formatters. The formatters are
|
danielebarchiesi@4
|
42 * separated by view mode type. We have "form" for all form elements
|
danielebarchiesi@4
|
43 * and "display" will be the real view modes (full, teaser, sticky, ...)
|
danielebarchiesi@4
|
44 *
|
danielebarchiesi@4
|
45 * structure:
|
danielebarchiesi@4
|
46 * @code
|
danielebarchiesi@4
|
47 * array(
|
danielebarchiesi@4
|
48 * 'form' => array(
|
danielebarchiesi@4
|
49 * 'fieldset' => array(
|
danielebarchiesi@4
|
50 * // required, String with the name of the formatter type.
|
danielebarchiesi@4
|
51 * 'label' => t('Fieldset'),
|
danielebarchiesi@4
|
52 * // optional, String description of the formatter type.
|
danielebarchiesi@4
|
53 * 'description' => t('This is field group that ...'),
|
danielebarchiesi@4
|
54 * // required, Array of available formatter options.
|
danielebarchiesi@4
|
55 * 'format_types' => array('open', 'collapsible', 'collapsed'),
|
danielebarchiesi@4
|
56 * // required, String with default value of the style.
|
danielebarchiesi@4
|
57 'default_formatter' => 'collapsible',
|
danielebarchiesi@4
|
58 * // optional, Array with key => default_value pairs.
|
danielebarchiesi@4
|
59 * 'instance_settings' => array('key' => 'value'),
|
danielebarchiesi@4
|
60 * ),
|
danielebarchiesi@4
|
61 * ),
|
danielebarchiesi@4
|
62 * 'display' => array(
|
danielebarchiesi@4
|
63 * 'fieldset' => array(
|
danielebarchiesi@4
|
64 * // required, String with the name of the formatter type.
|
danielebarchiesi@4
|
65 * 'label' => t('Fieldset'),
|
danielebarchiesi@4
|
66 * // optional, String description of the formatter type.
|
danielebarchiesi@4
|
67 * 'description' => t('This is field group that ...'),
|
danielebarchiesi@4
|
68 * // required, Array of available formatter options.
|
danielebarchiesi@4
|
69 * 'format_types' => array('open', 'collapsible', 'collapsed'),
|
danielebarchiesi@4
|
70 * // required, String with default value of the style.
|
danielebarchiesi@4
|
71 'default_formatter' => 'collapsible',
|
danielebarchiesi@4
|
72 * // optional, Array with key => default_value pairs.
|
danielebarchiesi@4
|
73 * 'instance_settings' => array('key' => 'value'),
|
danielebarchiesi@4
|
74 * ),
|
danielebarchiesi@4
|
75 * ),
|
danielebarchiesi@4
|
76 * ),
|
danielebarchiesi@4
|
77 * @endcode
|
danielebarchiesi@4
|
78 *
|
danielebarchiesi@4
|
79 * @return $formatters
|
danielebarchiesi@4
|
80 * A collection of available formatting html controls for form
|
danielebarchiesi@4
|
81 * and display overview type.
|
danielebarchiesi@4
|
82 *
|
danielebarchiesi@4
|
83 * @see field_group_field_group_formatter_info()
|
danielebarchiesi@4
|
84 */
|
danielebarchiesi@4
|
85 function hook_field_group_formatter_info() {
|
danielebarchiesi@4
|
86 return array(
|
danielebarchiesi@4
|
87 'form' => array(
|
danielebarchiesi@4
|
88 'fieldset' => array(
|
danielebarchiesi@4
|
89 'label' => t('Fieldset'),
|
danielebarchiesi@4
|
90 'description' => t('This fieldgroup renders the inner content in a fieldset with the title as legend.'),
|
danielebarchiesi@4
|
91 'format_types' => array('open', 'collapsible', 'collapsed'),
|
danielebarchiesi@4
|
92 'instance_settings' => array('classes' => ''),
|
danielebarchiesi@4
|
93 'default_formatter' => 'collapsible',
|
danielebarchiesi@4
|
94 ),
|
danielebarchiesi@4
|
95 ),
|
danielebarchiesi@4
|
96 'display' => array(
|
danielebarchiesi@4
|
97 'div' => array(
|
danielebarchiesi@4
|
98 'label' => t('Div'),
|
danielebarchiesi@4
|
99 'description' => t('This fieldgroup renders the inner content in a simple div with the title as legend.'),
|
danielebarchiesi@4
|
100 'format_types' => array('open', 'collapsible', 'collapsed'),
|
danielebarchiesi@4
|
101 'instance_settings' => array('effect' => 'none', 'speed' => 'fast', 'classes' => ''),
|
danielebarchiesi@4
|
102 'default_formatter' => 'collapsible',
|
danielebarchiesi@4
|
103 ),
|
danielebarchiesi@4
|
104 ),
|
danielebarchiesi@4
|
105 );
|
danielebarchiesi@4
|
106 }
|
danielebarchiesi@4
|
107
|
danielebarchiesi@4
|
108 /**
|
danielebarchiesi@4
|
109 * Implements hook_field_group_format_settings().
|
danielebarchiesi@4
|
110 *
|
danielebarchiesi@4
|
111 * Defines configuration widget for the settings on a field group
|
danielebarchiesi@4
|
112 * formatter. Eache formatter can have different elements and storage.
|
danielebarchiesi@4
|
113 *
|
danielebarchiesi@4
|
114 * @params Object $group The group object.
|
danielebarchiesi@4
|
115 * @return Array $form The form element for the format settings.
|
danielebarchiesi@4
|
116 */
|
danielebarchiesi@4
|
117 function hook_field_group_format_settings($group) {
|
danielebarchiesi@4
|
118 // Add a wrapper for extra settings to use by others.
|
danielebarchiesi@4
|
119 $form = array(
|
danielebarchiesi@4
|
120 'instance_settings' => array(
|
danielebarchiesi@4
|
121 '#tree' => TRUE,
|
danielebarchiesi@4
|
122 '#weight' => 2,
|
danielebarchiesi@4
|
123 ),
|
danielebarchiesi@4
|
124 );
|
danielebarchiesi@4
|
125
|
danielebarchiesi@4
|
126 $field_group_types = field_group_formatter_info();
|
danielebarchiesi@4
|
127 $mode = $group->mode == 'form' ? 'form' : 'display';
|
danielebarchiesi@4
|
128 $formatter = $field_group_types[$mode][$group->format_type];
|
danielebarchiesi@4
|
129
|
danielebarchiesi@4
|
130 // Add the required formatter type selector.
|
danielebarchiesi@4
|
131 if (isset($formatter['format_types'])) {
|
danielebarchiesi@4
|
132 $form['formatter'] = array(
|
danielebarchiesi@4
|
133 '#title' => t('Fieldgroup settings'),
|
danielebarchiesi@4
|
134 '#type' => 'select',
|
danielebarchiesi@4
|
135 '#options' => drupal_map_assoc($formatter['format_types']),
|
danielebarchiesi@4
|
136 '#default_value' => isset($group->format_settings['formatter']) ? $group->format_settings['formatter'] : $formatter['default_formatter'],
|
danielebarchiesi@4
|
137 '#weight' => 1,
|
danielebarchiesi@4
|
138 );
|
danielebarchiesi@4
|
139 }
|
danielebarchiesi@4
|
140 if ($mode == 'form') {
|
danielebarchiesi@4
|
141 $form['instance_settings']['required_fields'] = array(
|
danielebarchiesi@4
|
142 '#type' => 'checkbox',
|
danielebarchiesi@4
|
143 '#title' => t('Mark group for required fields.'),
|
danielebarchiesi@4
|
144 '#default_value' => isset($group->format_settings['instance_settings']['required_fields']) ? $group->format_settings['instance_settings']['required_fields'] : (isset($formatter['instance_settings']['required_fields']) ? $formatter['instance_settings']['required_fields'] : ''),
|
danielebarchiesi@4
|
145 '#weight' => 2,
|
danielebarchiesi@4
|
146 );
|
danielebarchiesi@4
|
147 }
|
danielebarchiesi@4
|
148 $form['instance_settings']['classes'] = array(
|
danielebarchiesi@4
|
149 '#title' => t('Extra CSS classes'),
|
danielebarchiesi@4
|
150 '#type' => 'textfield',
|
danielebarchiesi@4
|
151 '#default_value' => isset($group->format_settings['instance_settings']['classes']) ? $group->format_settings['instance_settings']['classes'] : (isset($formatter['instance_settings']['classes']) ? $formatter['instance_settings']['classes'] : ''),
|
danielebarchiesi@4
|
152 '#weight' => 3,
|
danielebarchiesi@4
|
153 '#element_validate' => array('field_group_validate_css_class'),
|
danielebarchiesi@4
|
154 );
|
danielebarchiesi@4
|
155 $form['instance_settings']['description'] = array(
|
danielebarchiesi@4
|
156 '#title' => t('Description'),
|
danielebarchiesi@4
|
157 '#type' => 'textarea',
|
danielebarchiesi@4
|
158 '#default_value' => isset($group->format_settings['instance_settings']['description']) ? $group->format_settings['instance_settings']['description'] : (isset($formatter['instance_settings']['description']) ? $formatter['instance_settings']['description'] : ''),
|
danielebarchiesi@4
|
159 '#weight' => 0,
|
danielebarchiesi@4
|
160 );
|
danielebarchiesi@4
|
161
|
danielebarchiesi@4
|
162 // Add optional instance_settings.
|
danielebarchiesi@4
|
163 switch ($group->format_type) {
|
danielebarchiesi@4
|
164 case 'div':
|
danielebarchiesi@4
|
165 $form['instance_settings']['effect'] = array(
|
danielebarchiesi@4
|
166 '#title' => t('Effect'),
|
danielebarchiesi@4
|
167 '#type' => 'select',
|
danielebarchiesi@4
|
168 '#options' => array('none' => t('None'), 'blind' => t('Blind')),
|
danielebarchiesi@4
|
169 '#default_value' => isset($group->format_settings['instance_settings']['effect']) ? $group->format_settings['instance_settings']['effect'] : $formatter['instance_settings']['effect'],
|
danielebarchiesi@4
|
170 '#weight' => 2,
|
danielebarchiesi@4
|
171 );
|
danielebarchiesi@4
|
172 $form['instance_settings']['speed'] = array(
|
danielebarchiesi@4
|
173 '#title' => t('Speed'),
|
danielebarchiesi@4
|
174 '#type' => 'select',
|
danielebarchiesi@4
|
175 '#options' => array('none' => t('None'), 'slow' => t('Slow'), 'fast' => t('Fast')),
|
danielebarchiesi@4
|
176 '#default_value' => isset($group->format_settings['instance_settings']['speed']) ? $group->format_settings['instance_settings']['speed'] : $formatter['instance_settings']['speed'],
|
danielebarchiesi@4
|
177 '#weight' => 3,
|
danielebarchiesi@4
|
178 );
|
danielebarchiesi@4
|
179 break;
|
danielebarchiesi@4
|
180 case 'fieldset':
|
danielebarchiesi@4
|
181 $form['instance_settings']['classes'] = array(
|
danielebarchiesi@4
|
182 '#title' => t('Extra CSS classes'),
|
danielebarchiesi@4
|
183 '#type' => 'textfield',
|
danielebarchiesi@4
|
184 '#default_value' => isset($group->format_settings['instance_settings']['classes']) ? $group->format_settings['instance_settings']['classes'] : $formatter['instance_settings']['classes'],
|
danielebarchiesi@4
|
185 '#weight' => 3,
|
danielebarchiesi@4
|
186 '#element_validate' => array('field_group_validate_css_class'),
|
danielebarchiesi@4
|
187 );
|
danielebarchiesi@4
|
188 break;
|
danielebarchiesi@4
|
189 case 'tabs':
|
danielebarchiesi@4
|
190 case 'htabs':
|
danielebarchiesi@4
|
191 case 'accordion':
|
danielebarchiesi@4
|
192 unset($form['instance_settings']['description']);
|
danielebarchiesi@4
|
193 if (isset($form['instance_settings']['required_fields'])) {
|
danielebarchiesi@4
|
194 unset($form['instance_settings']['required_fields']);
|
danielebarchiesi@4
|
195 }
|
danielebarchiesi@4
|
196 break;
|
danielebarchiesi@4
|
197 case 'tab':
|
danielebarchiesi@4
|
198 case 'htab':
|
danielebarchiesi@4
|
199 case 'accordion-item':
|
danielebarchiesi@4
|
200 default:
|
danielebarchiesi@4
|
201 }
|
danielebarchiesi@4
|
202
|
danielebarchiesi@4
|
203 return $form;
|
danielebarchiesi@4
|
204 }
|
danielebarchiesi@4
|
205
|
danielebarchiesi@4
|
206 /**
|
danielebarchiesi@4
|
207 * Implements hook_field_group_pre_render().
|
danielebarchiesi@4
|
208 *
|
danielebarchiesi@4
|
209 * This function gives you the oppertunity to create the given
|
danielebarchiesi@4
|
210 * wrapper element that can contain the fields.
|
danielebarchiesi@4
|
211 * In the example beneath, some variables are prepared and used when building the
|
danielebarchiesi@4
|
212 * actual wrapper element. All elements in drupal fapi can be used.
|
danielebarchiesi@4
|
213 *
|
danielebarchiesi@4
|
214 * Note that at this point, the field group has no notion of the fields in it.
|
danielebarchiesi@4
|
215 *
|
danielebarchiesi@4
|
216 * There is also an alternative way of handling this. The default implementation
|
danielebarchiesi@4
|
217 * within field_group calls "field_group_pre_render_<format_type>".
|
danielebarchiesi@4
|
218 * @see field_group_pre_render_fieldset.
|
danielebarchiesi@4
|
219 *
|
danielebarchiesi@4
|
220 * @param Array $elements by address.
|
danielebarchiesi@4
|
221 * @param Object $group The Field group info.
|
danielebarchiesi@4
|
222 */
|
danielebarchiesi@4
|
223 function hook_field_group_pre_render(& $element, $group, & $form) {
|
danielebarchiesi@4
|
224
|
danielebarchiesi@4
|
225 // You can prepare some variables to use in the logic.
|
danielebarchiesi@4
|
226 $view_mode = isset($form['#view_mode']) ? $form['#view_mode'] : 'form';
|
danielebarchiesi@4
|
227 $id = $form['#entity_type'] . '_' . $form['#bundle'] . '_' . $view_mode . '_' . $group->group_name;
|
danielebarchiesi@4
|
228
|
danielebarchiesi@4
|
229 // Each formatter type can have whole different set of element properties.
|
danielebarchiesi@4
|
230 switch ($group->format_type) {
|
danielebarchiesi@4
|
231
|
danielebarchiesi@4
|
232 // Normal or collapsible div.
|
danielebarchiesi@4
|
233 case 'div':
|
danielebarchiesi@4
|
234 $effect = isset($group->format_settings['instance_settings']['effect']) ? $group->format_settings['instance_settings']['effect'] : 'none';
|
danielebarchiesi@4
|
235 $speed = isset($group->format_settings['instance_settings']['speed']) ? $group->format_settings['instance_settings']['speed'] : 'none';
|
danielebarchiesi@4
|
236 $add = array(
|
danielebarchiesi@4
|
237 '#type' => 'markup',
|
danielebarchiesi@4
|
238 '#weight' => $group->weight,
|
danielebarchiesi@4
|
239 '#id' => $id,
|
danielebarchiesi@4
|
240 );
|
danielebarchiesi@4
|
241 $classes .= " speed-$speed effect-$effect";
|
danielebarchiesi@4
|
242 if ($group->format_settings['formatter'] != 'open') {
|
danielebarchiesi@4
|
243 $add['#prefix'] = '<div class="field-group-format ' . $classes . '">
|
danielebarchiesi@4
|
244 <span class="field-group-format-toggler">' . check_plain(t($group->label)) . '</span>
|
danielebarchiesi@4
|
245 <div class="field-group-format-wrapper" style="display: none;">';
|
danielebarchiesi@4
|
246 $add['#suffix'] = '</div></div>';
|
danielebarchiesi@4
|
247 }
|
danielebarchiesi@4
|
248 else {
|
danielebarchiesi@4
|
249 $add['#prefix'] = '<div class="field-group-format ' . $group->group_name . ' ' . $classes . '">';
|
danielebarchiesi@4
|
250 $add['#suffix'] = '</div>';
|
danielebarchiesi@4
|
251 }
|
danielebarchiesi@4
|
252 if (!empty($description)) {
|
danielebarchiesi@4
|
253 $add['#prefix'] .= '<div class="description">' . $description . '</div>';
|
danielebarchiesi@4
|
254 }
|
danielebarchiesi@4
|
255 $element += $add;
|
danielebarchiesi@4
|
256
|
danielebarchiesi@4
|
257 if ($effect == 'blind') {
|
danielebarchiesi@4
|
258 drupal_add_library('system', 'effects.blind');
|
danielebarchiesi@4
|
259 }
|
danielebarchiesi@4
|
260
|
danielebarchiesi@4
|
261 break;
|
danielebarchiesi@4
|
262 break;
|
danielebarchiesi@4
|
263 }
|
danielebarchiesi@4
|
264 }
|
danielebarchiesi@4
|
265
|
danielebarchiesi@4
|
266 /**
|
danielebarchiesi@4
|
267 * Implements hook_field_group_pre_render().
|
danielebarchiesi@4
|
268 *
|
danielebarchiesi@4
|
269 * Function that fungates as last resort to alter the pre_render build.
|
danielebarchiesi@4
|
270 */
|
danielebarchiesi@4
|
271 function hook_field_group_pre_render_alter(&$element, $group, & $form) {
|
danielebarchiesi@4
|
272
|
danielebarchiesi@4
|
273 if ($group->format_type == 'htab') {
|
danielebarchiesi@4
|
274 $element['#theme_wrappers'] = array('my_horizontal_tab');
|
danielebarchiesi@4
|
275 }
|
danielebarchiesi@4
|
276
|
danielebarchiesi@4
|
277 }
|
danielebarchiesi@4
|
278
|
danielebarchiesi@4
|
279 /**
|
danielebarchiesi@4
|
280 * Implements hook_field_group_build_pre_render_alter().
|
danielebarchiesi@4
|
281 *
|
danielebarchiesi@4
|
282 * Function that fungates as last resort where you can alter things. It is
|
danielebarchiesi@4
|
283 * expected that when you need this function, you have most likely a very custom
|
danielebarchiesi@4
|
284 * case or it is a fix that can be put in field_group core.
|
danielebarchiesi@4
|
285 *
|
danielebarchiesi@4
|
286 * @param Array $elements by address.
|
danielebarchiesi@4
|
287 */
|
danielebarchiesi@4
|
288 function hook_field_group_build_pre_render_alter(& $element) {
|
danielebarchiesi@4
|
289
|
danielebarchiesi@4
|
290 // Prepare variables.
|
danielebarchiesi@4
|
291 $display = isset($element['#view_mode']);
|
danielebarchiesi@4
|
292 $groups = array_keys($element['#groups']);
|
danielebarchiesi@4
|
293
|
danielebarchiesi@4
|
294 // Example from field_group itself to unset empty elements.
|
danielebarchiesi@4
|
295 if ($display) {
|
danielebarchiesi@4
|
296 foreach (element_children($element) as $name) {
|
danielebarchiesi@4
|
297 if (in_array($name, $groups)) {
|
danielebarchiesi@4
|
298 if (field_group_field_group_is_empty($element[$name], $groups)) {
|
danielebarchiesi@4
|
299 unset($element[$name]);
|
danielebarchiesi@4
|
300 }
|
danielebarchiesi@4
|
301 }
|
danielebarchiesi@4
|
302 }
|
danielebarchiesi@4
|
303 }
|
danielebarchiesi@4
|
304
|
danielebarchiesi@4
|
305 // You might include additional javascript files and stylesheets.
|
danielebarchiesi@4
|
306 $element['#attached']['js'][] = drupal_get_path('module', 'field_group') . '/field_group.js';
|
danielebarchiesi@4
|
307 $element['#attached']['css'][] = drupal_get_path('module', 'field_group') . '/field_group.css';
|
danielebarchiesi@4
|
308
|
danielebarchiesi@4
|
309 }
|
danielebarchiesi@4
|
310
|
danielebarchiesi@4
|
311 /**
|
danielebarchiesi@4
|
312 * Implements hook_field_group_format_summary().
|
danielebarchiesi@4
|
313 *
|
danielebarchiesi@4
|
314 * Place to override or change default summary behavior. In most
|
danielebarchiesi@4
|
315 * cases the implementation of field group itself will be enough.
|
danielebarchiesi@4
|
316 *
|
danielebarchiesi@4
|
317 * TODO It might be better to change this hook with already created summaries,
|
danielebarchiesi@4
|
318 * giving the ability to alter or add it later on.
|
danielebarchiesi@4
|
319 */
|
danielebarchiesi@4
|
320 function hook_field_group_format_summary($group) {
|
danielebarchiesi@4
|
321 $output = '';
|
danielebarchiesi@4
|
322 // Create additional summary or change the default setting.
|
danielebarchiesi@4
|
323 return $output;
|
danielebarchiesi@4
|
324 }
|
danielebarchiesi@4
|
325
|
danielebarchiesi@4
|
326 /**
|
danielebarchiesi@4
|
327 * Implement hook_ctools_plugin_api().
|
danielebarchiesi@4
|
328 * This hook is needed to let ctools know about exportables.
|
danielebarchiesi@4
|
329 * If you create field groups by using hook_field_group_info, you
|
danielebarchiesi@4
|
330 * will need to include the ctools api hook as well.
|
danielebarchiesi@4
|
331 */
|
danielebarchiesi@4
|
332 function hook_ctools_plugin_api($module, $api) {
|
danielebarchiesi@4
|
333 if ($module == 'field_group' && $api == 'field_group') {
|
danielebarchiesi@4
|
334 return array('version' => 1);
|
danielebarchiesi@4
|
335 }
|
danielebarchiesi@4
|
336 }
|
danielebarchiesi@4
|
337
|
danielebarchiesi@4
|
338 /**
|
danielebarchiesi@4
|
339 * Implements hook_field_group_info().
|
danielebarchiesi@4
|
340 * Don't forget to include the ctools hook to notify that
|
danielebarchiesi@4
|
341 * your modules has field group exports.
|
danielebarchiesi@4
|
342 * @see hook_ctools_plugin_api.
|
danielebarchiesi@4
|
343 */
|
danielebarchiesi@4
|
344 function hook_field_group_info() {
|
danielebarchiesi@4
|
345
|
danielebarchiesi@4
|
346 }
|
danielebarchiesi@4
|
347
|
danielebarchiesi@4
|
348 /**
|
danielebarchiesi@4
|
349 * Alter the field group definitions provided by other modules.
|
danielebarchiesi@4
|
350 *
|
danielebarchiesi@4
|
351 * @param array $groups
|
danielebarchiesi@4
|
352 * Reference to an array of field group definition objects.
|
danielebarchiesi@4
|
353 */
|
danielebarchiesi@4
|
354 function hook_field_group_info_alter(&$groups) {
|
danielebarchiesi@4
|
355 if (!empty($groups['group_issue_metadata|node|project_issue|form'])) {
|
danielebarchiesi@4
|
356 $groups['group_issue_metadata|node|project_issue|form']->data['children'][] = 'taxonomy_vocabulary_9';
|
danielebarchiesi@4
|
357 }
|
danielebarchiesi@4
|
358 }
|
danielebarchiesi@4
|
359
|
danielebarchiesi@4
|
360 /**
|
danielebarchiesi@4
|
361 * Implements hook_field_group_update_field_group().
|
danielebarchiesi@4
|
362 *
|
danielebarchiesi@4
|
363 * This hook is invoked by ctools export API.
|
danielebarchiesi@4
|
364 * Note that this is used by ctools and the group could occasional be
|
danielebarchiesi@4
|
365 * the group ID.
|
danielebarchiesi@4
|
366 *
|
danielebarchiesi@4
|
367 * @param $object $group
|
danielebarchiesi@4
|
368 * The FieldGroup object.
|
danielebarchiesi@4
|
369 */
|
danielebarchiesi@4
|
370 function hook_field_group_update_field_group($group) {
|
danielebarchiesi@4
|
371 // Delete extra data depending on the group.
|
danielebarchiesi@4
|
372 }
|
danielebarchiesi@4
|
373
|
danielebarchiesi@4
|
374 /**
|
danielebarchiesi@4
|
375 * Implements hook_field_group_delete_field_group().
|
danielebarchiesi@4
|
376 *
|
danielebarchiesi@4
|
377 * This hook is invoked by ctools export API.
|
danielebarchiesi@4
|
378 *
|
danielebarchiesi@4
|
379 * @param $object $group
|
danielebarchiesi@4
|
380 * The FieldGroup object.
|
danielebarchiesi@4
|
381 */
|
danielebarchiesi@4
|
382 function hook_field_group_delete_field_group($group) {
|
danielebarchiesi@4
|
383 // Delete extra data depending on the group.
|
danielebarchiesi@4
|
384 }
|
danielebarchiesi@4
|
385
|
danielebarchiesi@4
|
386 /**
|
danielebarchiesi@4
|
387 * Implements hook_field_group_create_field_group().
|
danielebarchiesi@4
|
388 *
|
danielebarchiesi@4
|
389 * This hook is invoked by ctools export API.
|
danielebarchiesi@4
|
390 *
|
danielebarchiesi@4
|
391 * @param $object $group
|
danielebarchiesi@4
|
392 * The FieldGroup object.
|
danielebarchiesi@4
|
393 */
|
danielebarchiesi@4
|
394 function hook_field_group_create_field_group($group) {
|
danielebarchiesi@4
|
395 // Create extra data depending on the group.
|
danielebarchiesi@4
|
396 }
|
danielebarchiesi@4
|
397
|
danielebarchiesi@4
|
398
|
danielebarchiesi@4
|
399
|
danielebarchiesi@4
|
400 /**
|
danielebarchiesi@4
|
401 * @} End of "addtogroup hooks".
|
danielebarchiesi@4
|
402 */
|
danielebarchiesi@4
|
403
|
danielebarchiesi@4
|
404
|
danielebarchiesi@4
|
405
|
danielebarchiesi@4
|
406 /**
|
danielebarchiesi@4
|
407 * @addtogroup utility functions
|
danielebarchiesi@4
|
408 * @{
|
danielebarchiesi@4
|
409 */
|
danielebarchiesi@4
|
410
|
danielebarchiesi@4
|
411 /**
|
danielebarchiesi@4
|
412 * Get the groups for a given entity type, bundle and view mode.
|
danielebarchiesi@4
|
413 *
|
danielebarchiesi@4
|
414 * @param String $entity_type
|
danielebarchiesi@4
|
415 * The Entity type where field groups are requested.
|
danielebarchiesi@4
|
416 * @param String $bundle
|
danielebarchiesi@4
|
417 * The entity bundle for the field groups.
|
danielebarchiesi@4
|
418 * @param String $view_mode
|
danielebarchiesi@4
|
419 * The view mode scope for the field groups.
|
danielebarchiesi@4
|
420 *
|
danielebarchiesi@4
|
421 * @see field_group_read_groups()
|
danielebarchiesi@4
|
422 * @see ctools_export_crud_load()
|
danielebarchiesi@4
|
423 * @see ctools_export_crud_load_all()
|
danielebarchiesi@4
|
424 * @see ctools_export_crud_delete()
|
danielebarchiesi@4
|
425 * @see ctools_export_crud_save()
|
danielebarchiesi@4
|
426 */
|
danielebarchiesi@4
|
427 function field_group_info_groups($entity_type = NULL, $bundle = NULL, $view_mode = NULL, $reset = FALSE) {
|
danielebarchiesi@4
|
428 // This function caches the result and delegates to field_group_read_groups.
|
danielebarchiesi@4
|
429 }
|
danielebarchiesi@4
|
430
|
danielebarchiesi@4
|
431 /**
|
danielebarchiesi@4
|
432 * Get the groups for the given parameters, uncached.
|
danielebarchiesi@4
|
433 *
|
danielebarchiesi@4
|
434 * @param Array $params
|
danielebarchiesi@4
|
435 * The Entity type where field groups are requested.
|
danielebarchiesi@4
|
436 * @param $enabled
|
danielebarchiesi@4
|
437 * Return enabled or disabled groups.*
|
danielebarchiesi@4
|
438 *
|
danielebarchiesi@4
|
439 * @see field_group_info_groups()
|
danielebarchiesi@4
|
440 * @see ctools_export_load_object()
|
danielebarchiesi@4
|
441 */
|
danielebarchiesi@4
|
442 function field_group_read_groups($conditions = array(), $enabled = TRUE) {
|
danielebarchiesi@4
|
443 // This function loads the requested groups through ctools export api.
|
danielebarchiesi@4
|
444 }
|
danielebarchiesi@4
|
445
|
danielebarchiesi@4
|
446 /**
|
danielebarchiesi@4
|
447 * Hides field groups including children in a render array.
|
danielebarchiesi@4
|
448 *
|
danielebarchiesi@4
|
449 * @param array $element
|
danielebarchiesi@4
|
450 * A render array. Can be a form, node, user, ...
|
danielebarchiesi@4
|
451 * @param array $group_names
|
danielebarchiesi@4
|
452 * An array of field group names that should be hidden.
|
danielebarchiesi@4
|
453 */
|
danielebarchiesi@4
|
454 function field_group_hide_field_groups(&$element, $group_names) {
|
danielebarchiesi@4
|
455 }
|
danielebarchiesi@4
|
456
|
danielebarchiesi@4
|
457 /**
|
danielebarchiesi@4
|
458 * @} End of "addtogroup utility functions".
|
danielebarchiesi@4
|
459 */
|
danielebarchiesi@4
|
460
|