function panels_skinr_submit_handler_settings in Skinr 6
Same name and namespace in other branches
- 6.2 modules/panels.skinr.inc \panels_skinr_submit_handler_settings()
Skinr submit handler.
Parameters
$op: What kind of action is being performed. Possible values:
- "access skinr": access to edit skinr's selector
- "access skinr classes": access to edit skinr's additional classes
&$form: Passes in the $form parameter from hook_form_alter().
$form_state: Passes in the $form_state parameter from hook_form_alter().
Return value
TRUE if we get access, FALSE if we don't.
Related topics
1 string reference to 'panels_skinr_submit_handler_settings'
- panels_skinr_data in modules/
panels.skinr.inc - Implementation of hook_skinr_data().
File
- modules/
panels.skinr.inc, line 207 - Provide skinr handling for panels.module.
Code
function panels_skinr_submit_handler_settings(&$form, $form_state, $module, $form_settings) {
foreach ($form_state['values']['skinr_settings'][$module . '_group'] as $theme_name => $theme) {
if (!empty($theme['widgets']) && is_array($theme['widgets']) || isset($theme['advanced']['_additional'])) {
$hook = $module;
$key = skinr_handler('form_index_handler', 'submit', $form_settings['index_handler'], $form, $form_state);
// Key doesn't exist properly for new displays. Perhaps we should inject a timestamp based key into the display object
// and use that for reference on the final submit? If it works...
$value = array();
$saved = skinr_get($theme_name, $hook, $key);
if (!empty($theme['widgets']) && is_array($theme['widgets'])) {
foreach ($theme['widgets'] as $skin_id => $skin_value) {
$value[$skin_id] = is_array($skin_value) ? _skinr_array_strip_empty($skin_value) : $skin_value;
}
}
if (isset($theme['advanced']['_additional'])) {
$theme['advanced']['_additional'] = trim($theme['advanced']['_additional']);
if (!empty($theme['advanced']['_additional'])) {
$value['_additional'] = $theme['advanced']['_additional'];
}
}
else {
if (!user_access('access skinr classes') && isset($saved['_additional'])) {
// The user didn't have access to change this. Ensure the existing
// custom classes remain by populating the element with the
// previously saved values.
$value['_additional'] = $saved['_additional'];
}
}
if (isset($theme['advanced']['_template'])) {
$theme['advanced']['_template'] = trim($theme['advanced']['_template']);
if (!empty($theme['advanced']['_template'])) {
$value['_template'] = $theme['advanced']['_template'];
}
}
else {
if (!user_access('access skinr classes') && isset($saved['_template'])) {
// The user didn't have access to change this. Ensure the existing
// template selection remains by populating the element with the
// previously saved values.
$value['_template'] = $saved['_template'];
}
}
if (empty($key)) {
// We didn't receive a valid key, so raise an error.
drupal_set_message(t("Skinr settings weren't saved due to an error."), 'error');
}
// Save skinr_settings for this panel display in cache.
ctools_include('object-cache');
if (!($skinr_data = ctools_object_cache_get('skinr', $form_state['display']->did, TRUE))) {
$skinr_data = array();
// Fetch skinr data.
$skinr = skinr_get($theme_name);
if (isset($skinr[$module])) {
foreach ($skinr[$module] as $skinr_key => $skinr_value) {
if (drupal_substr($skinr_key, 0, drupal_strlen('display-' . $form_state['display']->did)) == 'display-' . $form_state['display']->did) {
$skinr_data[$theme_name][$skinr_key] = $skinr_value;
}
}
}
}
$skinr_data[$theme_name][$key] = $value;
ctools_object_cache_set('skinr', $form_state['display']->did, $skinr_data);
}
}
}