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