danielebarchiesi@0
|
1 <?php
|
danielebarchiesi@0
|
2
|
danielebarchiesi@0
|
3 /**
|
danielebarchiesi@0
|
4 * @file
|
danielebarchiesi@0
|
5 * Administrative page callbacks for the Filter module.
|
danielebarchiesi@0
|
6 */
|
danielebarchiesi@0
|
7
|
danielebarchiesi@0
|
8 /**
|
danielebarchiesi@0
|
9 * Page callback: Form constructor for a form to list and reorder text formats.
|
danielebarchiesi@0
|
10 *
|
danielebarchiesi@0
|
11 * @ingroup forms
|
danielebarchiesi@0
|
12 * @see filter_menu()
|
danielebarchiesi@0
|
13 * @see filter_admin_overview_submit()
|
danielebarchiesi@0
|
14 */
|
danielebarchiesi@0
|
15 function filter_admin_overview($form) {
|
danielebarchiesi@0
|
16 // Overview of all formats.
|
danielebarchiesi@0
|
17 $formats = filter_formats();
|
danielebarchiesi@0
|
18 $fallback_format = filter_fallback_format();
|
danielebarchiesi@0
|
19
|
danielebarchiesi@0
|
20 $form['#tree'] = TRUE;
|
danielebarchiesi@0
|
21 foreach ($formats as $id => $format) {
|
danielebarchiesi@0
|
22 // Check whether this is the fallback text format. This format is available
|
danielebarchiesi@0
|
23 // to all roles and cannot be disabled via the admin interface.
|
danielebarchiesi@0
|
24 $form['formats'][$id]['#is_fallback'] = ($id == $fallback_format);
|
danielebarchiesi@0
|
25 if ($form['formats'][$id]['#is_fallback']) {
|
danielebarchiesi@0
|
26 $form['formats'][$id]['name'] = array('#markup' => drupal_placeholder($format->name));
|
danielebarchiesi@0
|
27 $roles_markup = drupal_placeholder(t('All roles may use this format'));
|
danielebarchiesi@0
|
28 }
|
danielebarchiesi@0
|
29 else {
|
danielebarchiesi@0
|
30 $form['formats'][$id]['name'] = array('#markup' => check_plain($format->name));
|
danielebarchiesi@0
|
31 $roles = array_map('check_plain', filter_get_roles_by_format($format));
|
danielebarchiesi@0
|
32 $roles_markup = $roles ? implode(', ', $roles) : t('No roles may use this format');
|
danielebarchiesi@0
|
33 }
|
danielebarchiesi@0
|
34 $form['formats'][$id]['roles'] = array('#markup' => $roles_markup);
|
danielebarchiesi@0
|
35 $form['formats'][$id]['configure'] = array('#type' => 'link', '#title' => t('configure'), '#href' => 'admin/config/content/formats/' . $id);
|
danielebarchiesi@0
|
36 $form['formats'][$id]['disable'] = array('#type' => 'link', '#title' => t('disable'), '#href' => 'admin/config/content/formats/' . $id . '/disable', '#access' => !$form['formats'][$id]['#is_fallback']);
|
danielebarchiesi@0
|
37 $form['formats'][$id]['weight'] = array(
|
danielebarchiesi@0
|
38 '#type' => 'weight',
|
danielebarchiesi@0
|
39 '#title' => t('Weight for @title', array('@title' => $format->name)),
|
danielebarchiesi@0
|
40 '#title_display' => 'invisible',
|
danielebarchiesi@0
|
41 '#default_value' => $format->weight,
|
danielebarchiesi@0
|
42 );
|
danielebarchiesi@0
|
43 }
|
danielebarchiesi@0
|
44 $form['actions'] = array('#type' => 'actions');
|
danielebarchiesi@0
|
45 $form['actions']['submit'] = array('#type' => 'submit', '#value' => t('Save changes'));
|
danielebarchiesi@0
|
46 return $form;
|
danielebarchiesi@0
|
47 }
|
danielebarchiesi@0
|
48
|
danielebarchiesi@0
|
49 /**
|
danielebarchiesi@0
|
50 * Form submission handler for filter_admin_overview().
|
danielebarchiesi@0
|
51 */
|
danielebarchiesi@0
|
52 function filter_admin_overview_submit($form, &$form_state) {
|
danielebarchiesi@0
|
53 foreach ($form_state['values']['formats'] as $id => $data) {
|
danielebarchiesi@0
|
54 if (is_array($data) && isset($data['weight'])) {
|
danielebarchiesi@0
|
55 // Only update if this is a form element with weight.
|
danielebarchiesi@0
|
56 db_update('filter_format')
|
danielebarchiesi@0
|
57 ->fields(array('weight' => $data['weight']))
|
danielebarchiesi@0
|
58 ->condition('format', $id)
|
danielebarchiesi@0
|
59 ->execute();
|
danielebarchiesi@0
|
60 }
|
danielebarchiesi@0
|
61 }
|
danielebarchiesi@0
|
62 filter_formats_reset();
|
danielebarchiesi@0
|
63 drupal_set_message(t('The text format ordering has been saved.'));
|
danielebarchiesi@0
|
64 }
|
danielebarchiesi@0
|
65
|
danielebarchiesi@0
|
66 /**
|
danielebarchiesi@0
|
67 * Returns HTML for the text format administration overview form.
|
danielebarchiesi@0
|
68 *
|
danielebarchiesi@0
|
69 * @param $variables
|
danielebarchiesi@0
|
70 * An associative array containing:
|
danielebarchiesi@0
|
71 * - form: A render element representing the form.
|
danielebarchiesi@0
|
72 *
|
danielebarchiesi@0
|
73 * @ingroup themeable
|
danielebarchiesi@0
|
74 */
|
danielebarchiesi@0
|
75 function theme_filter_admin_overview($variables) {
|
danielebarchiesi@0
|
76 $form = $variables['form'];
|
danielebarchiesi@0
|
77
|
danielebarchiesi@0
|
78 $rows = array();
|
danielebarchiesi@0
|
79 foreach (element_children($form['formats']) as $id) {
|
danielebarchiesi@0
|
80 $form['formats'][$id]['weight']['#attributes']['class'] = array('text-format-order-weight');
|
danielebarchiesi@0
|
81 $rows[] = array(
|
danielebarchiesi@0
|
82 'data' => array(
|
danielebarchiesi@0
|
83 drupal_render($form['formats'][$id]['name']),
|
danielebarchiesi@0
|
84 drupal_render($form['formats'][$id]['roles']),
|
danielebarchiesi@0
|
85 drupal_render($form['formats'][$id]['weight']),
|
danielebarchiesi@0
|
86 drupal_render($form['formats'][$id]['configure']),
|
danielebarchiesi@0
|
87 drupal_render($form['formats'][$id]['disable']),
|
danielebarchiesi@0
|
88 ),
|
danielebarchiesi@0
|
89 'class' => array('draggable'),
|
danielebarchiesi@0
|
90 );
|
danielebarchiesi@0
|
91 }
|
danielebarchiesi@0
|
92 $header = array(t('Name'), t('Roles'), t('Weight'), array('data' => t('Operations'), 'colspan' => 2));
|
danielebarchiesi@0
|
93 $output = theme('table', array('header' => $header, 'rows' => $rows, 'attributes' => array('id' => 'text-format-order')));
|
danielebarchiesi@0
|
94 $output .= drupal_render_children($form);
|
danielebarchiesi@0
|
95
|
danielebarchiesi@0
|
96 drupal_add_tabledrag('text-format-order', 'order', 'sibling', 'text-format-order-weight');
|
danielebarchiesi@0
|
97
|
danielebarchiesi@0
|
98 return $output;
|
danielebarchiesi@0
|
99 }
|
danielebarchiesi@0
|
100
|
danielebarchiesi@0
|
101 /**
|
danielebarchiesi@0
|
102 * Page callback: Displays the text format add/edit form.
|
danielebarchiesi@0
|
103 *
|
danielebarchiesi@0
|
104 * @param object|null $format
|
danielebarchiesi@0
|
105 * (optional) An object representing a format, with the following properties:
|
danielebarchiesi@0
|
106 * - format: A machine-readable name representing the ID of the text format
|
danielebarchiesi@0
|
107 * to save. If this corresponds to an existing text format, that format
|
danielebarchiesi@0
|
108 * will be updated; otherwise, a new format will be created.
|
danielebarchiesi@0
|
109 * - name: The title of the text format.
|
danielebarchiesi@0
|
110 * - cache: (optional) An integer indicating whether the text format is
|
danielebarchiesi@0
|
111 * cacheable (1) or not (0). Defaults to 1.
|
danielebarchiesi@0
|
112 * - status: (optional) An integer indicating whether the text format is
|
danielebarchiesi@0
|
113 * enabled (1) or not (0). Defaults to 1.
|
danielebarchiesi@0
|
114 * - weight: (optional) The weight of the text format, which controls its
|
danielebarchiesi@0
|
115 * placement in text format lists. If omitted, the weight is set to 0.
|
danielebarchiesi@0
|
116 * Defaults to NULL.
|
danielebarchiesi@0
|
117 *
|
danielebarchiesi@0
|
118 * @return
|
danielebarchiesi@0
|
119 * A form array.
|
danielebarchiesi@0
|
120 *
|
danielebarchiesi@0
|
121 * @see filter_menu()
|
danielebarchiesi@0
|
122 */
|
danielebarchiesi@0
|
123 function filter_admin_format_page($format = NULL) {
|
danielebarchiesi@0
|
124 if (!isset($format->name)) {
|
danielebarchiesi@0
|
125 drupal_set_title(t('Add text format'));
|
danielebarchiesi@0
|
126 $format = (object) array(
|
danielebarchiesi@0
|
127 'format' => NULL,
|
danielebarchiesi@0
|
128 'name' => '',
|
danielebarchiesi@0
|
129 );
|
danielebarchiesi@0
|
130 }
|
danielebarchiesi@0
|
131 return drupal_get_form('filter_admin_format_form', $format);
|
danielebarchiesi@0
|
132 }
|
danielebarchiesi@0
|
133
|
danielebarchiesi@0
|
134 /**
|
danielebarchiesi@0
|
135 * Form constructor for the text format add/edit form.
|
danielebarchiesi@0
|
136 *
|
danielebarchiesi@0
|
137 * @param $format
|
danielebarchiesi@0
|
138 * A format object having the properties:
|
danielebarchiesi@0
|
139 * - format: A machine-readable name representing the ID of the text format to
|
danielebarchiesi@0
|
140 * save. If this corresponds to an existing text format, that format will be
|
danielebarchiesi@0
|
141 * updated; otherwise, a new format will be created.
|
danielebarchiesi@0
|
142 * - name: The title of the text format.
|
danielebarchiesi@0
|
143 * - cache: An integer indicating whether the text format is cacheable (1) or
|
danielebarchiesi@0
|
144 * not (0). Defaults to 1.
|
danielebarchiesi@0
|
145 * - status: (optional) An integer indicating whether the text format is
|
danielebarchiesi@0
|
146 * enabled (1) or not (0). Defaults to 1.
|
danielebarchiesi@0
|
147 * - weight: (optional) The weight of the text format, which controls its
|
danielebarchiesi@0
|
148 * placement in text format lists. If omitted, the weight is set to 0.
|
danielebarchiesi@0
|
149 *
|
danielebarchiesi@0
|
150 * @see filter_admin_format_form_validate()
|
danielebarchiesi@0
|
151 * @see filter_admin_format_form_submit()
|
danielebarchiesi@0
|
152 * @ingroup forms
|
danielebarchiesi@0
|
153 */
|
danielebarchiesi@0
|
154 function filter_admin_format_form($form, &$form_state, $format) {
|
danielebarchiesi@0
|
155 $is_fallback = ($format->format == filter_fallback_format());
|
danielebarchiesi@0
|
156
|
danielebarchiesi@0
|
157 $form['#format'] = $format;
|
danielebarchiesi@0
|
158 $form['#tree'] = TRUE;
|
danielebarchiesi@0
|
159 $form['#attached']['js'][] = drupal_get_path('module', 'filter') . '/filter.admin.js';
|
danielebarchiesi@0
|
160 $form['#attached']['css'][] = drupal_get_path('module', 'filter') . '/filter.css';
|
danielebarchiesi@0
|
161
|
danielebarchiesi@0
|
162 $form['name'] = array(
|
danielebarchiesi@0
|
163 '#type' => 'textfield',
|
danielebarchiesi@0
|
164 '#title' => t('Name'),
|
danielebarchiesi@0
|
165 '#default_value' => $format->name,
|
danielebarchiesi@0
|
166 '#required' => TRUE,
|
danielebarchiesi@0
|
167 );
|
danielebarchiesi@0
|
168 $form['format'] = array(
|
danielebarchiesi@0
|
169 '#type' => 'machine_name',
|
danielebarchiesi@0
|
170 '#required' => TRUE,
|
danielebarchiesi@0
|
171 '#default_value' => $format->format,
|
danielebarchiesi@0
|
172 '#maxlength' => 255,
|
danielebarchiesi@0
|
173 '#machine_name' => array(
|
danielebarchiesi@0
|
174 'exists' => 'filter_format_exists',
|
danielebarchiesi@0
|
175 ),
|
danielebarchiesi@0
|
176 '#disabled' => !empty($format->format),
|
danielebarchiesi@0
|
177 );
|
danielebarchiesi@0
|
178
|
danielebarchiesi@0
|
179 // Add user role access selection.
|
danielebarchiesi@0
|
180 $form['roles'] = array(
|
danielebarchiesi@0
|
181 '#type' => 'checkboxes',
|
danielebarchiesi@0
|
182 '#title' => t('Roles'),
|
danielebarchiesi@0
|
183 '#options' => array_map('check_plain', user_roles()),
|
danielebarchiesi@0
|
184 '#disabled' => $is_fallback,
|
danielebarchiesi@0
|
185 );
|
danielebarchiesi@0
|
186 if ($is_fallback) {
|
danielebarchiesi@0
|
187 $form['roles']['#description'] = t('All roles for this text format must be enabled and cannot be changed.');
|
danielebarchiesi@0
|
188 }
|
danielebarchiesi@0
|
189 if (!empty($format->format)) {
|
danielebarchiesi@0
|
190 // If editing an existing text format, pre-select its current permissions.
|
danielebarchiesi@0
|
191 $form['roles']['#default_value'] = array_keys(filter_get_roles_by_format($format));
|
danielebarchiesi@0
|
192 }
|
danielebarchiesi@0
|
193 elseif ($admin_role = variable_get('user_admin_role', 0)) {
|
danielebarchiesi@0
|
194 // If adding a new text format and the site has an administrative role,
|
danielebarchiesi@0
|
195 // pre-select that role so as to grant administrators access to the new
|
danielebarchiesi@0
|
196 // text format permission by default.
|
danielebarchiesi@0
|
197 $form['roles']['#default_value'] = array($admin_role);
|
danielebarchiesi@0
|
198 }
|
danielebarchiesi@0
|
199
|
danielebarchiesi@0
|
200 // Retrieve available filters and load all configured filters for existing
|
danielebarchiesi@0
|
201 // text formats.
|
danielebarchiesi@0
|
202 $filter_info = filter_get_filters();
|
danielebarchiesi@0
|
203 $filters = !empty($format->format) ? filter_list_format($format->format) : array();
|
danielebarchiesi@0
|
204
|
danielebarchiesi@0
|
205 // Prepare filters for form sections.
|
danielebarchiesi@0
|
206 foreach ($filter_info as $name => $filter) {
|
danielebarchiesi@0
|
207 // Create an empty filter object for new/unconfigured filters.
|
danielebarchiesi@0
|
208 if (!isset($filters[$name])) {
|
danielebarchiesi@0
|
209 $filters[$name] = new stdClass();
|
danielebarchiesi@0
|
210 $filters[$name]->format = $format->format;
|
danielebarchiesi@0
|
211 $filters[$name]->module = $filter['module'];
|
danielebarchiesi@0
|
212 $filters[$name]->name = $name;
|
danielebarchiesi@0
|
213 $filters[$name]->status = 0;
|
danielebarchiesi@0
|
214 $filters[$name]->weight = $filter['weight'];
|
danielebarchiesi@0
|
215 $filters[$name]->settings = array();
|
danielebarchiesi@0
|
216 }
|
danielebarchiesi@0
|
217 }
|
danielebarchiesi@0
|
218 $form['#filters'] = $filters;
|
danielebarchiesi@0
|
219
|
danielebarchiesi@0
|
220 // Filter status.
|
danielebarchiesi@0
|
221 $form['filters']['status'] = array(
|
danielebarchiesi@0
|
222 '#type' => 'item',
|
danielebarchiesi@0
|
223 '#title' => t('Enabled filters'),
|
danielebarchiesi@0
|
224 '#prefix' => '<div id="filters-status-wrapper">',
|
danielebarchiesi@0
|
225 '#suffix' => '</div>',
|
danielebarchiesi@0
|
226 );
|
danielebarchiesi@0
|
227 foreach ($filter_info as $name => $filter) {
|
danielebarchiesi@0
|
228 $form['filters']['status'][$name] = array(
|
danielebarchiesi@0
|
229 '#type' => 'checkbox',
|
danielebarchiesi@0
|
230 '#title' => $filter['title'],
|
danielebarchiesi@0
|
231 '#default_value' => $filters[$name]->status,
|
danielebarchiesi@0
|
232 '#parents' => array('filters', $name, 'status'),
|
danielebarchiesi@0
|
233 '#description' => $filter['description'],
|
danielebarchiesi@0
|
234 '#weight' => $filter['weight'],
|
danielebarchiesi@0
|
235 );
|
danielebarchiesi@0
|
236 }
|
danielebarchiesi@0
|
237
|
danielebarchiesi@0
|
238 // Filter order (tabledrag).
|
danielebarchiesi@0
|
239 $form['filters']['order'] = array(
|
danielebarchiesi@0
|
240 '#type' => 'item',
|
danielebarchiesi@0
|
241 '#title' => t('Filter processing order'),
|
danielebarchiesi@0
|
242 '#theme' => 'filter_admin_format_filter_order',
|
danielebarchiesi@0
|
243 );
|
danielebarchiesi@0
|
244 foreach ($filter_info as $name => $filter) {
|
danielebarchiesi@0
|
245 $form['filters']['order'][$name]['filter'] = array(
|
danielebarchiesi@0
|
246 '#markup' => $filter['title'],
|
danielebarchiesi@0
|
247 );
|
danielebarchiesi@0
|
248 $form['filters']['order'][$name]['weight'] = array(
|
danielebarchiesi@0
|
249 '#type' => 'weight',
|
danielebarchiesi@0
|
250 '#title' => t('Weight for @title', array('@title' => $filter['title'])),
|
danielebarchiesi@0
|
251 '#title_display' => 'invisible',
|
danielebarchiesi@0
|
252 '#delta' => 50,
|
danielebarchiesi@0
|
253 '#default_value' => $filters[$name]->weight,
|
danielebarchiesi@0
|
254 '#parents' => array('filters', $name, 'weight'),
|
danielebarchiesi@0
|
255 );
|
danielebarchiesi@0
|
256 $form['filters']['order'][$name]['#weight'] = $filters[$name]->weight;
|
danielebarchiesi@0
|
257 }
|
danielebarchiesi@0
|
258
|
danielebarchiesi@0
|
259 // Filter settings.
|
danielebarchiesi@0
|
260 $form['filter_settings_title'] = array(
|
danielebarchiesi@0
|
261 '#type' => 'item',
|
danielebarchiesi@0
|
262 '#title' => t('Filter settings'),
|
danielebarchiesi@0
|
263 );
|
danielebarchiesi@0
|
264 $form['filter_settings'] = array(
|
danielebarchiesi@0
|
265 '#type' => 'vertical_tabs',
|
danielebarchiesi@0
|
266 );
|
danielebarchiesi@0
|
267
|
danielebarchiesi@0
|
268 foreach ($filter_info as $name => $filter) {
|
danielebarchiesi@0
|
269 if (isset($filter['settings callback']) && function_exists($filter['settings callback'])) {
|
danielebarchiesi@0
|
270 $function = $filter['settings callback'];
|
danielebarchiesi@0
|
271 // Pass along stored filter settings and default settings, but also the
|
danielebarchiesi@0
|
272 // format object and all filters to allow for complex implementations.
|
danielebarchiesi@0
|
273 $defaults = (isset($filter['default settings']) ? $filter['default settings'] : array());
|
danielebarchiesi@0
|
274 $settings_form = $function($form, $form_state, $filters[$name], $format, $defaults, $filters);
|
danielebarchiesi@0
|
275 if (!empty($settings_form)) {
|
danielebarchiesi@0
|
276 $form['filters']['settings'][$name] = array(
|
danielebarchiesi@0
|
277 '#type' => 'fieldset',
|
danielebarchiesi@0
|
278 '#title' => $filter['title'],
|
danielebarchiesi@0
|
279 '#parents' => array('filters', $name, 'settings'),
|
danielebarchiesi@0
|
280 '#weight' => $filter['weight'],
|
danielebarchiesi@0
|
281 '#group' => 'filter_settings',
|
danielebarchiesi@0
|
282 );
|
danielebarchiesi@0
|
283 $form['filters']['settings'][$name] += $settings_form;
|
danielebarchiesi@0
|
284 }
|
danielebarchiesi@0
|
285 }
|
danielebarchiesi@0
|
286 }
|
danielebarchiesi@0
|
287
|
danielebarchiesi@0
|
288 $form['actions'] = array('#type' => 'actions');
|
danielebarchiesi@0
|
289 $form['actions']['submit'] = array('#type' => 'submit', '#value' => t('Save configuration'));
|
danielebarchiesi@0
|
290
|
danielebarchiesi@0
|
291 return $form;
|
danielebarchiesi@0
|
292 }
|
danielebarchiesi@0
|
293
|
danielebarchiesi@0
|
294 /**
|
danielebarchiesi@0
|
295 * Returns HTML for a text format's filter order form.
|
danielebarchiesi@0
|
296 *
|
danielebarchiesi@0
|
297 * @param $variables
|
danielebarchiesi@0
|
298 * An associative array containing:
|
danielebarchiesi@0
|
299 * - element: A render element representing the form.
|
danielebarchiesi@0
|
300 *
|
danielebarchiesi@0
|
301 * @ingroup themeable
|
danielebarchiesi@0
|
302 */
|
danielebarchiesi@0
|
303 function theme_filter_admin_format_filter_order($variables) {
|
danielebarchiesi@0
|
304 $element = $variables['element'];
|
danielebarchiesi@0
|
305
|
danielebarchiesi@0
|
306 // Filter order (tabledrag).
|
danielebarchiesi@0
|
307 $rows = array();
|
danielebarchiesi@0
|
308 foreach (element_children($element, TRUE) as $name) {
|
danielebarchiesi@0
|
309 $element[$name]['weight']['#attributes']['class'][] = 'filter-order-weight';
|
danielebarchiesi@0
|
310 $rows[] = array(
|
danielebarchiesi@0
|
311 'data' => array(
|
danielebarchiesi@0
|
312 drupal_render($element[$name]['filter']),
|
danielebarchiesi@0
|
313 drupal_render($element[$name]['weight']),
|
danielebarchiesi@0
|
314 ),
|
danielebarchiesi@0
|
315 'class' => array('draggable'),
|
danielebarchiesi@0
|
316 );
|
danielebarchiesi@0
|
317 }
|
danielebarchiesi@0
|
318 $output = drupal_render_children($element);
|
danielebarchiesi@0
|
319 $output .= theme('table', array('rows' => $rows, 'attributes' => array('id' => 'filter-order')));
|
danielebarchiesi@0
|
320 drupal_add_tabledrag('filter-order', 'order', 'sibling', 'filter-order-weight', NULL, NULL, TRUE);
|
danielebarchiesi@0
|
321
|
danielebarchiesi@0
|
322 return $output;
|
danielebarchiesi@0
|
323 }
|
danielebarchiesi@0
|
324
|
danielebarchiesi@0
|
325 /**
|
danielebarchiesi@0
|
326 * Form validation handler for filter_admin_format_form().
|
danielebarchiesi@0
|
327 *
|
danielebarchiesi@0
|
328 * @see filter_admin_format_form_submit()
|
danielebarchiesi@0
|
329 */
|
danielebarchiesi@0
|
330 function filter_admin_format_form_validate($form, &$form_state) {
|
danielebarchiesi@0
|
331 $format_format = trim($form_state['values']['format']);
|
danielebarchiesi@0
|
332 $format_name = trim($form_state['values']['name']);
|
danielebarchiesi@0
|
333
|
danielebarchiesi@0
|
334 // Ensure that the values to be saved later are exactly the ones validated.
|
danielebarchiesi@0
|
335 form_set_value($form['format'], $format_format, $form_state);
|
danielebarchiesi@0
|
336 form_set_value($form['name'], $format_name, $form_state);
|
danielebarchiesi@0
|
337
|
danielebarchiesi@0
|
338 $result = db_query("SELECT format FROM {filter_format} WHERE name = :name AND format <> :format", array(':name' => $format_name, ':format' => $format_format))->fetchField();
|
danielebarchiesi@0
|
339 if ($result) {
|
danielebarchiesi@0
|
340 form_set_error('name', t('Text format names must be unique. A format named %name already exists.', array('%name' => $format_name)));
|
danielebarchiesi@0
|
341 }
|
danielebarchiesi@0
|
342 }
|
danielebarchiesi@0
|
343
|
danielebarchiesi@0
|
344 /**
|
danielebarchiesi@0
|
345 * Form submission handler for filter_admin_format_form().
|
danielebarchiesi@0
|
346 *
|
danielebarchiesi@0
|
347 * @see filter_admin_format_form_validate()
|
danielebarchiesi@0
|
348 */
|
danielebarchiesi@0
|
349 function filter_admin_format_form_submit($form, &$form_state) {
|
danielebarchiesi@0
|
350 // Remove unnecessary values.
|
danielebarchiesi@0
|
351 form_state_values_clean($form_state);
|
danielebarchiesi@0
|
352
|
danielebarchiesi@0
|
353 // Add the submitted form values to the text format, and save it.
|
danielebarchiesi@0
|
354 $format = $form['#format'];
|
danielebarchiesi@0
|
355 foreach ($form_state['values'] as $key => $value) {
|
danielebarchiesi@0
|
356 $format->$key = $value;
|
danielebarchiesi@0
|
357 }
|
danielebarchiesi@0
|
358 $status = filter_format_save($format);
|
danielebarchiesi@0
|
359
|
danielebarchiesi@0
|
360 // Save user permissions.
|
danielebarchiesi@0
|
361 if ($permission = filter_permission_name($format)) {
|
danielebarchiesi@0
|
362 foreach ($format->roles as $rid => $enabled) {
|
danielebarchiesi@0
|
363 user_role_change_permissions($rid, array($permission => $enabled));
|
danielebarchiesi@0
|
364 }
|
danielebarchiesi@0
|
365 }
|
danielebarchiesi@0
|
366
|
danielebarchiesi@0
|
367 switch ($status) {
|
danielebarchiesi@0
|
368 case SAVED_NEW:
|
danielebarchiesi@0
|
369 drupal_set_message(t('Added text format %format.', array('%format' => $format->name)));
|
danielebarchiesi@0
|
370 break;
|
danielebarchiesi@0
|
371
|
danielebarchiesi@0
|
372 case SAVED_UPDATED:
|
danielebarchiesi@0
|
373 drupal_set_message(t('The text format %format has been updated.', array('%format' => $format->name)));
|
danielebarchiesi@0
|
374 break;
|
danielebarchiesi@0
|
375 }
|
danielebarchiesi@0
|
376 }
|
danielebarchiesi@0
|
377
|
danielebarchiesi@0
|
378 /**
|
danielebarchiesi@0
|
379 * Form constructor for the text format deletion confirmation form.
|
danielebarchiesi@0
|
380 *
|
danielebarchiesi@0
|
381 * @param $format
|
danielebarchiesi@0
|
382 * An object representing a text format.
|
danielebarchiesi@0
|
383 *
|
danielebarchiesi@0
|
384 * @see filter_menu()
|
danielebarchiesi@0
|
385 * @see filter_admin_disable_submit()
|
danielebarchiesi@0
|
386 * @ingroup forms
|
danielebarchiesi@0
|
387 */
|
danielebarchiesi@0
|
388 function filter_admin_disable($form, &$form_state, $format) {
|
danielebarchiesi@0
|
389 $form['#format'] = $format;
|
danielebarchiesi@0
|
390
|
danielebarchiesi@0
|
391 return confirm_form($form,
|
danielebarchiesi@0
|
392 t('Are you sure you want to disable the text format %format?', array('%format' => $format->name)),
|
danielebarchiesi@0
|
393 'admin/config/content/formats',
|
danielebarchiesi@0
|
394 t('Disabled text formats are completely removed from the administrative interface, and any content stored with that format will not be displayed. This action cannot be undone.'),
|
danielebarchiesi@0
|
395 t('Disable')
|
danielebarchiesi@0
|
396 );
|
danielebarchiesi@0
|
397 }
|
danielebarchiesi@0
|
398
|
danielebarchiesi@0
|
399 /**
|
danielebarchiesi@0
|
400 * Form submission handler for filter_admin_disable().
|
danielebarchiesi@0
|
401 */
|
danielebarchiesi@0
|
402 function filter_admin_disable_submit($form, &$form_state) {
|
danielebarchiesi@0
|
403 $format = $form['#format'];
|
danielebarchiesi@0
|
404 filter_format_disable($format);
|
danielebarchiesi@0
|
405 drupal_set_message(t('Disabled text format %format.', array('%format' => $format->name)));
|
danielebarchiesi@0
|
406
|
danielebarchiesi@0
|
407 $form_state['redirect'] = 'admin/config/content/formats';
|
danielebarchiesi@0
|
408 }
|