-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathwebform_term_select.module
More file actions
96 lines (84 loc) · 3.22 KB
/
webform_term_select.module
File metadata and controls
96 lines (84 loc) · 3.22 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
<?php
/**
* Implements hook_form_taxonomy_form_term_alter().
* Adds the form fields this module needs to flag a term as visible to our select
* options callback function. We also verify the absence of "confirm_delete" on
* the form state to prevent our fields from displaying on the delete confirmation page.
*/
function webform_term_select_form_taxonomy_form_term_alter(&$form, &$form_state, $form_id) {
$term = $form_state['term'];
if (!isset($form_state['confirm_delete'])) {
$form['webform_term_select'] = array(
'#type' => 'fieldset',
'#title' => t('Webform Term Select'),
'#collapsible' => TRUE,
'#weight' => 0,
);
$form['webform_term_select']['show'] = array(
'#type' =>'checkbox',
'#title' => t('Show this term on the Webform pre-built lists'),
'#default_value' => isset($term->wts_visible) ? $term->wts_visible : '0',
);
array_unshift($form['#submit'], "webform_term_select_taxonomy_form_submit");
}
}
/**
* Additional submit handler for the taxonomy_form_term form.
* Fills in the $term->wts_visible flag according to the value in our "show" form field
* whenever a term is created or updated.
*/
function webform_term_select_taxonomy_form_submit($form, &$form_state) {
if ($form_state['triggering_element']['#value'] != t('Delete')) {
$form_state['term']->wts_visible = $form_state['values']['show'];
}
}
/**
* Implements hook_form_taxonomy_overview_terms_alter().
* Edits the term links in admin/structure/taxonomy/<vocabulary_machine_name>
* to display whether or not a term has been flagged into Webforms
*/
function webform_term_select_form_taxonomy_overview_terms_alter(&$form, &$form_state, $form_id) {
$query = 'tid:';
foreach ($form as $key => $value) {
if(substr($key, 0, strlen($query)) === $query) {
if($value['#term']['wts_visible'] === '1') {
$form[$key]['view'] = array(
'#markup' => l(
$form[$key]['view']['#title'],
$form[$key]['view']['#href']) . ' <small>'. t('Shown in Webforms').'</small>',
);
}
}
}
}
/**
* Implements hook_webform_select_options_info().
* Fetches each vocabulary and adds a pre-built option list entry for each one.
*/
function webform_term_select_webform_select_options_info() {
$items = array();
$vocabularies = taxonomy_get_vocabularies();
foreach ($vocabularies as $voc) {
$items['vid_' . $voc->vid] = array(
'title' => t('Flagged terms from') .' '. $voc->name,
'options callback' => 'webform_term_select_vocabulary_terms',
'options arguments' => array('vid' => $voc->vid),
);
}
return $items;
}
/**
* Pre-built option list callback to populate the select options.
* This particular callback filters "wts_visible" flagged fields
* into the select options array.
*/
function webform_term_select_vocabulary_terms($component, $flat, $arguments) {
$terms = array();
$tree = taxonomy_get_tree($arguments['vid']);
foreach ($tree as $term) {
if($term->wts_visible === "1") {
$terms['tid_' . $term->tid] = $term->name;
}
}
return $terms;
}