comparison sites/all/modules/webform/components/fieldset.inc @ 0:ff03f76ab3fe

initial version
author danieleb <danielebarchiesi@me.com>
date Wed, 21 Aug 2013 18:51:11 +0100
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:ff03f76ab3fe
1 <?php
2
3 /**
4 * @file
5 * Webform module fieldset component.
6 */
7
8 /**
9 * Implements _webform_defaults_component().
10 */
11 function _webform_defaults_fieldset() {
12 return array(
13 'name' => '',
14 'form_key' => NULL,
15 'pid' => 0,
16 'weight' => 0,
17 'extra' => array(
18 'title_display' => 0,
19 'collapsible' => 0,
20 'collapsed' => 0,
21 'description' => '',
22 'private' => FALSE,
23 ),
24 );
25 }
26
27 /**
28 * Implements _webform_edit_component().
29 */
30 function _webform_edit_fieldset($component) {
31 $form = array();
32 $form['display']['collapsible'] = array(
33 '#type' => 'checkbox',
34 '#title' => t('Collapsible'),
35 '#default_value' => $component['extra']['collapsible'],
36 '#description' => t('If this fieldset is collapsible, the user may open or close the fieldset.'),
37 '#weight' => 0,
38 '#parents' => array('extra', 'collapsible'),
39 );
40 $form['display']['collapsed'] = array(
41 '#type' => 'checkbox',
42 '#title' => t('Collapsed by Default'),
43 '#default_value' => $component['extra']['collapsed'],
44 '#description' => t('Collapsible fieldsets are "open" by default. Select this option to default the fieldset to "closed."'),
45 '#weight' => 3,
46 '#parents' => array('extra', 'collapsed'),
47 );
48 return $form;
49 }
50
51 /**
52 * Implements _webform_render_component().
53 */
54 function _webform_render_fieldset($component, $value = NULL, $filter = TRUE) {
55 $node = isset($component['nid']) ? node_load($component['nid']) : NULL;
56
57 $element = array(
58 '#type' => 'fieldset',
59 '#title' => $filter ? _webform_filter_xss($component['name']) : $component['name'],
60 '#title_display' => $component['extra']['title_display'] ? $component['extra']['title_display'] : NULL,
61 '#weight' => $component['weight'],
62 '#description' => $filter ? _webform_filter_descriptions($component['extra']['description'], $node) : $component['extra']['description'],
63 '#collapsible' => $component['extra']['collapsible'],
64 '#collapsed' => $component['extra']['collapsed'],
65 '#attributes' => array('class' => array('webform-component-fieldset'), 'id' => 'webform-component-' . $component['form_key']),
66 '#pre_render' => array('webform_fieldset_prerender', 'webform_element_title_display'),
67 '#translatable' => array('title', 'description'),
68 );
69
70 return $element;
71 }
72
73 /**
74 * Pre-render function to set a fieldset ID.
75 */
76 function webform_fieldset_prerender($element) {
77 $element['#attributes']['id'] = 'webform-component-' . str_replace('_', '-', implode('--', array_slice($element['#parents'], 1)));
78 return $element;
79 }
80
81 /**
82 * Implements _webform_display_component().
83 */
84 function _webform_display_fieldset($component, $value, $format = 'html') {
85 if ($format == 'text') {
86 $element = array(
87 '#title' => $component['name'],
88 '#weight' => $component['weight'],
89 '#theme_wrappers' => array('webform_element_text'),
90 '#translatable' => array('title'),
91 );
92 }
93 else {
94 $element = _webform_render_fieldset($component, $value);
95 }
96
97 $element['#format'] = $format;
98
99 return $element;
100 }