1 filter.admin.inc | filter_admin_format_form_submit($form, &$form_state) |
Form submission handler for filter_admin_format_form().
See also
filter_admin_format_form_validate()
File
- core/
modules/ filter/ filter.admin.inc, line 683 - Admin page callbacks for the Filter module.
Code
function filter_admin_format_form_submit($form, &$form_state) {
// Remove unnecessary values.
form_state_values_clean($form_state);
unset($form_state['values']['filter_settings']);
unset($form_state['values']['actions']);
// Add the submitted form values to the text format, and save it.
$format = $form_state['format'];
// Whether we need this, depends on the tempstore triggered by AJAX or not.
$filters_original = $form_state['format']->filters;
// Save allowed HTML tags from the hidden field in the event JS modified them.
$allowed_html = $form_state['values']['allowed_html'];
unset($form_state['values']['allowed_html']);
foreach ($form_state['values'] as $key => $value) {
$format->$key = $value;
}
// Get values from filter settings forms back from tempstore.
if ($stored_format = filter_get_format_tempstore($format->format)) {
foreach ($stored_format->filters as $name => $filter) {
$format->filters[$name]['settings'] = $filter->settings;
}
}
// We have no tempstore, if none of the extended configure forms has been
// opened. So we fall back to the existing filter settings. They haven't been
// changed then.
else {
foreach ($filters_original as $name => $value) {
if (!empty($value->settings) && $name != 'filter_html') {
$format->filters[$name]['settings'] = $value->settings;
}
}
}
// Set allowed html, parked in a variable previously.
$format->filters['filter_html']['settings']['allowed_html'] = $allowed_html;
// If not saving an editor, do not save any settings.
if (!$format->editor) {
$format->editor_settings = array();
}
$status = filter_format_save($format);
// Save user permissions.
if ($permission = filter_permission_name($format)) {
foreach ($format->roles as $rid => $enabled) {
user_role_change_permissions($rid, array($permission => $enabled));
}
}
switch ($status) {
case SAVED_NEW:
backdrop_set_message(t('Added text format %format.', array('%format' => $format->name)));
break;
case SAVED_UPDATED:
backdrop_set_message(t('Updated text format %format.', array('%format' => $format->name)));
break;
}
filter_clear_format_tempstore($format->format);
$form_state['redirect'] = 'admin/config/content/formats';
}