1 | <?php |
---|
2 | |
---|
3 | // $Id: content_taxonomy_options.module,v 1.1.4.7.2.4 2008/12/27 11:25:27 mh86 Exp $ |
---|
4 | |
---|
5 | /** |
---|
6 | * @file |
---|
7 | * Defines a widget type for content_taxonomy for options |
---|
8 | **/ |
---|
9 | |
---|
10 | /** |
---|
11 | * Implementation of hook_theme(). |
---|
12 | */ |
---|
13 | function content_taxonomy_options_theme() { |
---|
14 | return array( |
---|
15 | 'content_taxonomy_options_widgets_none' => array( |
---|
16 | 'arguments' => array('field' => NULL), |
---|
17 | ), |
---|
18 | ); |
---|
19 | } |
---|
20 | |
---|
21 | /** |
---|
22 | * Implementation of hook_widget_info(). |
---|
23 | */ |
---|
24 | function content_taxonomy_options_widget_info() { |
---|
25 | return array( |
---|
26 | 'content_taxonomy_options' => array( |
---|
27 | 'label' => t('Checkboxes/Radios'), |
---|
28 | 'field types' => array('content_taxonomy'), |
---|
29 | 'multiple values' => CONTENT_HANDLE_MODULE, |
---|
30 | 'callbacks' => array( |
---|
31 | 'default value' => CONTENT_CALLBACK_DEFAULT, |
---|
32 | ), |
---|
33 | ), |
---|
34 | 'content_taxonomy_select' => array( |
---|
35 | 'label' => t('Select List'), |
---|
36 | 'field types' => array('content_taxonomy'), |
---|
37 | 'multiple values' => CONTENT_HANDLE_MODULE, |
---|
38 | 'callbacks' => array( |
---|
39 | 'default value' => CONTENT_CALLBACK_DEFAULT, |
---|
40 | ), |
---|
41 | ), |
---|
42 | ); |
---|
43 | return $items; |
---|
44 | } |
---|
45 | |
---|
46 | /** |
---|
47 | * Implementation of hook_widget_settings |
---|
48 | */ |
---|
49 | function content_taxonomy_options_widget_settings($op, $widget) { |
---|
50 | switch ($op) { |
---|
51 | case 'form': |
---|
52 | $form['settings'] = array( |
---|
53 | '#type' => 'fieldset', |
---|
54 | '#title' => t('Settings for Options'), |
---|
55 | '#collapsible' => TRUE, |
---|
56 | '#weight' => 10, |
---|
57 | ); |
---|
58 | $form['settings']['show_depth'] = array( |
---|
59 | '#type' => 'checkbox', |
---|
60 | '#title' => t('Indent child terms with \' - \' signs'), |
---|
61 | '#default_value' => is_numeric($widget['show_depth']) ? $widget['show_depth'] : 1, |
---|
62 | '#description' => t('If this option is checked, a hierarchy gets visualized by indenting child terms, otherwise it\'s a flat list'), |
---|
63 | ); |
---|
64 | $form['settings']['group_parent'] = array( |
---|
65 | '#title' => t('Parent term for OptGroups in select fields'), |
---|
66 | '#type' => 'select', |
---|
67 | '#default_value' => isset($widget['group_parent']) ? $widget['group_parent'] : 0, |
---|
68 | '#options' => _content_taxonomy_get_all_terms(), |
---|
69 | '#description' => t('This settings applies only for select fields. Select a parent term containg the grouping terms. Grouping terms should be parents of the selected terms (from the Global Settings).'), |
---|
70 | ); |
---|
71 | return $form; |
---|
72 | |
---|
73 | case 'save': |
---|
74 | return array('group_parent', 'show_depth'); |
---|
75 | } |
---|
76 | } |
---|
77 | |
---|
78 | /** |
---|
79 | * Implementation of hook_widget(). |
---|
80 | */ |
---|
81 | function content_taxonomy_options_widget(&$form, &$form_state, $field, $items, $delta = NULL) { |
---|
82 | $element = array( |
---|
83 | '#type' => ($field['widget']['type'] == 'content_taxonomy_select') ? 'optionwidgets_select' : 'optionwidgets_buttons', |
---|
84 | '#default_value' => !empty($items) ? $items : array(), |
---|
85 | ); |
---|
86 | return $element; |
---|
87 | } |
---|
88 | |
---|
89 | /** |
---|
90 | * Theme the label for the empty value for options (for optional radios and single selects). |
---|
91 | */ |
---|
92 | function theme_content_taxonomy_options_widgets_none($field) { |
---|
93 | switch ($field['widget']['type']) { |
---|
94 | case 'content_taxonomy_options': |
---|
95 | return t('N/A'); |
---|
96 | case 'content_taxonomy_select': |
---|
97 | return t('- None -'); |
---|
98 | default : |
---|
99 | return ''; |
---|
100 | } |
---|
101 | } |
---|