annotate sites/all/modules/field_group/field_group.api.php @ 4:ce11bbd8f642

added modules
author danieleb <danielebarchiesi@me.com>
date Thu, 19 Sep 2013 10:38:44 +0100
parents
children
rev   line source
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