root / drupal7 / modules / field_ui / field_ui.api.php @ 6eb57d7f
1 |
<?php
|
---|---|
2 |
|
3 |
/**
|
4 |
* @file
|
5 |
* Hooks provided by the Field UI module.
|
6 |
*/
|
7 |
|
8 |
/**
|
9 |
* @addtogroup field_types
|
10 |
* @{
|
11 |
*/
|
12 |
|
13 |
/**
|
14 |
* Add settings to a field settings form.
|
15 |
*
|
16 |
* Invoked from field_ui_field_settings_form() to allow the module defining the
|
17 |
* field to add global settings (i.e. settings that do not depend on the bundle
|
18 |
* or instance) to the field settings form. If the field already has data, only
|
19 |
* include settings that are safe to change.
|
20 |
*
|
21 |
* @todo: Only the field type module knows which settings will affect the
|
22 |
* field's schema, but only the field storage module knows what schema
|
23 |
* changes are permitted once a field already has data. Probably we need an
|
24 |
* easy way for a field type module to ask whether an update to a new schema
|
25 |
* will be allowed without having to build up a fake $prior_field structure
|
26 |
* for hook_field_update_forbid().
|
27 |
*
|
28 |
* @param $field
|
29 |
* The field structure being configured.
|
30 |
* @param $instance
|
31 |
* The instance structure being configured.
|
32 |
* @param $has_data
|
33 |
* TRUE if the field already has data, FALSE if not.
|
34 |
*
|
35 |
* @return
|
36 |
* The form definition for the field settings.
|
37 |
*/
|
38 |
function hook_field_settings_form($field, $instance, $has_data) { |
39 |
$settings = $field['settings']; |
40 |
$form['max_length'] = array( |
41 |
'#type' => 'textfield', |
42 |
'#title' => t('Maximum length'), |
43 |
'#default_value' => $settings['max_length'], |
44 |
'#required' => FALSE, |
45 |
'#element_validate' => array('element_validate_integer_positive'), |
46 |
'#description' => t('The maximum length of the field in characters. Leave blank for an unlimited size.'), |
47 |
); |
48 |
return $form; |
49 |
} |
50 |
|
51 |
/**
|
52 |
* Add settings to an instance field settings form.
|
53 |
*
|
54 |
* Invoked from field_ui_field_edit_form() to allow the module defining the
|
55 |
* field to add settings for a field instance.
|
56 |
*
|
57 |
* @param $field
|
58 |
* The field structure being configured.
|
59 |
* @param $instance
|
60 |
* The instance structure being configured.
|
61 |
*
|
62 |
* @return
|
63 |
* The form definition for the field instance settings.
|
64 |
*/
|
65 |
function hook_field_instance_settings_form($field, $instance) { |
66 |
$settings = $instance['settings']; |
67 |
|
68 |
$form['text_processing'] = array( |
69 |
'#type' => 'radios', |
70 |
'#title' => t('Text processing'), |
71 |
'#default_value' => $settings['text_processing'], |
72 |
'#options' => array( |
73 |
t('Plain text'),
|
74 |
t('Filtered text (user selects text format)'),
|
75 |
), |
76 |
); |
77 |
if ($field['type'] == 'text_with_summary') { |
78 |
$form['display_summary'] = array( |
79 |
'#type' => 'select', |
80 |
'#title' => t('Display summary'), |
81 |
'#options' => array( |
82 |
t('No'),
|
83 |
t('Yes'),
|
84 |
), |
85 |
'#description' => t('Display the summary to allow the user to input a summary value. Hide the summary to automatically fill it with a trimmed portion from the main post.'), |
86 |
'#default_value' => !empty($settings['display_summary']) ? $settings['display_summary'] : 0, |
87 |
); |
88 |
} |
89 |
|
90 |
return $form; |
91 |
} |
92 |
|
93 |
/**
|
94 |
* Add settings to a widget settings form.
|
95 |
*
|
96 |
* Invoked from field_ui_field_edit_form() to allow the module defining the
|
97 |
* widget to add settings for a widget instance.
|
98 |
*
|
99 |
* @param $field
|
100 |
* The field structure being configured.
|
101 |
* @param $instance
|
102 |
* The instance structure being configured.
|
103 |
*
|
104 |
* @return
|
105 |
* The form definition for the widget settings.
|
106 |
*/
|
107 |
function hook_field_widget_settings_form($field, $instance) { |
108 |
$widget = $instance['widget']; |
109 |
$settings = $widget['settings']; |
110 |
|
111 |
if ($widget['type'] == 'text_textfield') { |
112 |
$form['size'] = array( |
113 |
'#type' => 'textfield', |
114 |
'#title' => t('Size of textfield'), |
115 |
'#default_value' => $settings['size'], |
116 |
'#element_validate' => array('element_validate_integer_positive'), |
117 |
'#required' => TRUE, |
118 |
); |
119 |
} |
120 |
else {
|
121 |
$form['rows'] = array( |
122 |
'#type' => 'textfield', |
123 |
'#title' => t('Rows'), |
124 |
'#default_value' => $settings['rows'], |
125 |
'#element_validate' => array('element_validate_integer_positive'), |
126 |
'#required' => TRUE, |
127 |
); |
128 |
} |
129 |
|
130 |
return $form; |
131 |
} |
132 |
|
133 |
|
134 |
/**
|
135 |
* Specify the form elements for a formatter's settings.
|
136 |
*
|
137 |
* This hook is only invoked if hook_field_formatter_settings_summary()
|
138 |
* returns a non-empty value.
|
139 |
*
|
140 |
* @param $field
|
141 |
* The field structure being configured.
|
142 |
* @param $instance
|
143 |
* The instance structure being configured.
|
144 |
* @param $view_mode
|
145 |
* The view mode being configured.
|
146 |
* @param $form
|
147 |
* The (entire) configuration form array, which will usually have no use here.
|
148 |
* @param $form_state
|
149 |
* The form state of the (entire) configuration form.
|
150 |
*
|
151 |
* @return
|
152 |
* The form elements for the formatter settings.
|
153 |
*/
|
154 |
function hook_field_formatter_settings_form($field, $instance, $view_mode, $form, &$form_state) { |
155 |
$display = $instance['display'][$view_mode]; |
156 |
$settings = $display['settings']; |
157 |
|
158 |
$element = array(); |
159 |
|
160 |
if ($display['type'] == 'text_trimmed' || $display['type'] == 'text_summary_or_trimmed') { |
161 |
$element['trim_length'] = array( |
162 |
'#title' => t('Length'), |
163 |
'#type' => 'textfield', |
164 |
'#size' => 20, |
165 |
'#default_value' => $settings['trim_length'], |
166 |
'#element_validate' => array('element_validate_integer_positive'), |
167 |
'#required' => TRUE, |
168 |
); |
169 |
} |
170 |
|
171 |
return $element; |
172 |
|
173 |
} |
174 |
|
175 |
/**
|
176 |
* Return a short summary for the current formatter settings of an instance.
|
177 |
*
|
178 |
* If an empty result is returned, the formatter is assumed to have no
|
179 |
* configurable settings, and no UI will be provided to display a settings
|
180 |
* form.
|
181 |
*
|
182 |
* @param $field
|
183 |
* The field structure.
|
184 |
* @param $instance
|
185 |
* The instance structure.
|
186 |
* @param $view_mode
|
187 |
* The view mode for which a settings summary is requested.
|
188 |
*
|
189 |
* @return
|
190 |
* A string containing a short summary of the formatter settings.
|
191 |
*/
|
192 |
function hook_field_formatter_settings_summary($field, $instance, $view_mode) { |
193 |
$display = $instance['display'][$view_mode]; |
194 |
$settings = $display['settings']; |
195 |
|
196 |
$summary = ''; |
197 |
|
198 |
if ($display['type'] == 'text_trimmed' || $display['type'] == 'text_summary_or_trimmed') { |
199 |
$summary = t('Length: @chars chars', array('@chars' => $settings['trim_length'])); |
200 |
} |
201 |
|
202 |
return $summary; |
203 |
} |
204 |
|
205 |
/**
|
206 |
* @} End of "addtogroup field_types".
|
207 |
*/
|