1 layout.admin.inc | layout_settings_form_save_submit($form, &$form_state) |
Submit handler for layout_settings_form() that saves in-progress changes.
File
- core/
modules/ layout/ layout.admin.inc, line 1109 - Admin page callbacks for the Layout module.
Code
function layout_settings_form_save_submit($form, &$form_state) {
/* @var Layout $layout */
$layout = $form_state['layout'];
if (isset($_SESSION['layout_new_name'])) {
unset($_SESSION['layout_new_name']);
}
// If this is a new layout, populate blocks from default layout.
if (!empty($layout->is_new)) {
$default_layout_name = path_is_admin($layout->getPath()) ? 'admin_default' : 'default';
$default_layout = layout_load($default_layout_name);
// Get the template being used by this layout.
$template_info = layout_get_layout_template_info($layout->layout_template);
foreach ($default_layout->positions as $region => $region_block_list) {
if (array_key_exists($region, $template_info['regions'])) {
foreach ($region_block_list as $uuid) {
if (isset($default_layout->content[$uuid])) {
$block = $default_layout->content[$uuid];
$new_block = $block->getClone();
// Only add the block from the default if required contexts are
// present for each block.
if ($layout->hasContexts($new_block->getRequiredContexts())) {
$layout->positions[$region][] = $new_block->uuid;
$layout->content[$new_block->uuid] = $new_block;
}
}
}
}
}
}
$layout->save();
layout_clear_layout_tempstore($layout->name);
if (!empty($layout->is_new)) {
backdrop_set_message(t('Layout created. Blocks may now be added to this layout.'));
}
else {
backdrop_set_message(t('Layout saved.'));
}
$form_state['redirect'] = 'admin/structure/layouts/manage/' . $layout->name;
}