- <?php
- * @file
- * Provides configurable (flexible) layout templates.
- *
- * This provides the UI to list, create, edit and delete flexible layouts.
- */
-
- * Form to add a flexible template.
- *
- * @ingroup forms
- */
- function layout_flexible_template_settings_add_form() {
- $flexible_template = new LayoutFlexibleTemplate();
- $flexible_template->is_new = TRUE;
- backdrop_set_title(t('Add template'));
- return backdrop_get_form('layout_flexible_template_settings_edit_form', $flexible_template);
- }
-
- * Form to configure a flexible template.
- *
- * @param LayoutFlexibleTemplate $flexible_template
- * The loaded flexible template object.
- *
- * @ingroup forms
- */
- function layout_flexible_template_settings_edit_form($form, &$form_state, LayoutFlexibleTemplate $flexible_template) {
- $form_state['flexible_template'] = $flexible_template;
- $template_exists = layout_flexible_template_load($flexible_template->name);
-
- $form['name'] = array(
- '#title' => t('Template name'),
- '#type' => 'textfield',
- '#maxlength' => 128,
- '#default_value' => $flexible_template->title,
- '#required' => TRUE,
- );
- $form['machine_name'] = array(
- '#type' => 'machine_name',
- '#maxlength' => 21,
- '#default_value' => $flexible_template->name,
- '#disabled' => ($template_exists && empty($flexible_template->is_new)),
- '#machine_name' => array(
- 'exists' => 'layout_flexible_template_load',
- ),
- );
- $form['description'] = array(
- '#title' => t('Description'),
- '#type' => 'textfield',
- '#default_value' => $flexible_template->description,
- );
-
- $form['actions'] = array('#type' => 'actions');
- $form['actions']['submit'] = array(
- '#type' => 'submit',
- '#submit' => array(
- 'layout_flexible_template_settings_form_submit',
- ),
- '#value' => t('Save and configure'),
- );
- $form['actions']['cancel'] = array(
- '#type' => 'submit',
- '#value' => t('Cancel'),
- '#validate' => array(),
- '#limit_validation_errors' => array(array('name', 'machine_name')),
- '#submit' => array(
- 'layout_flexible_template_settings_form_cancel',
- ),
- );
-
- return $form;
- }
-
- * Submit handler that cancels the flexible template form.
- *
- * @see layout_flexible_template_settings_edit_form()
- */
- function layout_flexible_template_settings_form_cancel($form, &$form_state) {
- $form_state['redirect'] = 'admin/structure/layouts/settings';
- }
-
- * Submit handler that saves a flexible template.
- *
- * @see layout_flexible_template_settings_edit_form()
- */
- function layout_flexible_template_settings_form_submit($form, &$form_state) {
-
- $flexible_template = $form_state['flexible_template'];
- $flexible_template->name = $form_state['values']['machine_name'];
- $flexible_template->title = $form_state['values']['name'];
- $flexible_template->description = $form_state['values']['description'];
- unset($flexible_template->is_new);
-
- $flexible_template->save();
-
- layout_flexible_tempstore_set($flexible_template);
-
- backdrop_set_message(t('Layout template "@title" saved.', array('@title' => $flexible_template->title)));
- $form_state['redirect'] = 'admin/structure/layouts/settings/flexible-template/' . $form_state['values']['machine_name'] . '/configure';
- }
-
- * Form to manage adding and removing rows to a flexible template.
- *
- * @param LayoutFlexibleTemplate $flexible_template
- * The template configuration being edited.
- *
- * @ingroup forms
- */
- function layout_flexible_template_configure_form($form, &$form_state, LayoutFlexibleTemplate $flexible_template) {
- form_load_include($form_state, 'inc', 'layout', 'layout.admin');
- form_load_include($form_state, 'inc', 'layout', 'layout.flexible');
-
- $messages = array();
- $form['messages'] = array(
- '#theme' => 'status_messages',
- '#messages' => $messages,
- '#weight' => -100,
-
- '#prefix' => '<div id="layout-messages">',
- '#suffix' => '</div>',
- );
-
- $form_state['flexible_template'] = &$flexible_template;
- $flexible_template_name = $flexible_template->name;
-
- $config = array(
- 'is_new' => TRUE,
- 'layout_template' => $flexible_template_name,
- );
- $layout = new Layout($config);
- $template = layout_get_layout_template_info($flexible_template_name);
-
- backdrop_set_title($template['title']);
-
- $form_state['flexible_template_name'] = $flexible_template_name;
-
- if (empty($form_state['flexible_template'])) {
- return array();
- }
-
- $renderer = layout_create_renderer('flexible', $layout);
-
- $form['content'] = array(
- '#type' => 'item',
- '#id' => 'layout-flexible-content',
- );
- $form['content']['display'] = array(
- '#markup' => $renderer->render(),
- );
-
- $form['content']['row_positions'] = array(
-
- '#type' => 'hidden',
- '#default_value' => implode(',', array_keys($flexible_template->rows)),
- );
-
- $form['content']['add_row'] = array(
- '#type' => 'submit',
- '#value' => t('Add row'),
- '#attributes' => array('class' => array('flexible-layout-add-row')),
- '#submit' => array(
- 'layout_flexible_template_add_row',
- ),
- '#ajax' => array(
- 'callback' => 'layout_ajax_form_open_dialog',
- ),
- );
- $form['actions'] = array(
- '#type' => 'actions',
- );
- $form['actions']['submit'] = array(
- '#type' => 'submit',
- '#value' => t('Save layout template'),
- '#submit' => array(
- 'layout_flexible_template_configure_form_submit',
- ),
- );
- $form['actions']['cancel'] = array(
- '#type' => 'submit',
- '#value' => t('Cancel'),
- '#submit' => array(
- 'layout_flexible_template_configure_form_cancel',
- ),
- );
-
- return $form;
- }
-
- * Handler for layout_flexible_template_configure_form() to add a new row.
- */
- function layout_flexible_template_add_row($form, &$form_state) {
- $form_state['redirect'] = 'admin/structure/layouts/settings/flexible-template/' . $form_state['flexible_template_name'] . '/row/add/select-widths';
- }
-
- * Submit handler that cancels in-progress changes.
- *
- * @see layout_flexible_template_configure_form()
- */
- function layout_flexible_template_configure_form_cancel($form, &$form_state) {
- tempstore_clear('layout.flexible', $form_state['flexible_template_name']);
- $form_state['redirect'] = 'admin/structure/layouts/settings';
- }
-
- * Submit handler that saves the configured flexible template.
- *
- * @see layout_flexible_template_configure_form()
- */
- function layout_flexible_template_configure_form_submit($form, &$form_state) {
-
-
- $flexible_template = layout_flexible_tempstore_load($form_state['flexible_template_name']);
- $positions = array();
-
- if (!empty($form_state['values']['row_positions'])) {
- $rows = array_filter(explode(',', $form_state['values']['row_positions']));
- foreach ($rows as $position) {
- if (isset($flexible_template->rows[$position])) {
- $positions[$position] = $flexible_template->rows[$position];
- }
- }
- }
-
- $flexible_template->rows = $positions;
- $flexible_template->save();
-
- tempstore_clear('layout.flexible', $form_state['flexible_template_name']);
-
- backdrop_set_message(t('Layout template "@title" saved.', array('@title' => $flexible_template->title)));
- }
-
- * Form to select the region widths for a flexible template.
- *
- * @param LayoutFlexibleTemplate $flexible_template
- * The loaded flexible template object.
- * @param string $original_row
- * The row above or below which a new row is being inserted.
- *
- * @ingroup forms
- */
- function layout_flexible_template_region_style_select($form, &$form_state, LayoutFlexibleTemplate $flexible_template, $original_row) {
- $new_row = ($original_row == 'add');
- form_load_include($form_state, 'inc', 'layout', 'layout.admin');
- form_load_include($form_state, 'inc', 'layout', 'layout.flexible');
- $form_state['flexible_template_name'] = $flexible_template->name;
- $form_state['original_row'] = $original_row;
-
- $row_styles = layout_flexible_row_styles();
- $count_options = array();
- foreach ($row_styles as $name => $row_style) {
- $count_options[$row_style['region_count']] = $row_style['region_count'];
- }
-
- $row_style_in_use = 'region_12';
- $default_region_count = 1;
- if (!$new_row) {
- if (isset($form_state['values']['region_style'])) {
- $row_style_in_use = $form_state['values']['region_style'];
- }
- else {
- $row_style_in_use = $flexible_template->rows[$original_row]['contains'];
- }
- $default_region_count = $row_styles[$row_style_in_use]['region_count'];
- }
- $form['region_count'] = array(
- '#title' => t('Number of regions'),
- '#type' => 'radios',
- '#default_value' => $default_region_count,
- '#parents' => array('region_count'),
- '#options' => $count_options,
- '#ajax' => array(
- 'callback' => 'layout_flexible_template_edit_region_style_ajax',
- 'wrapper' => 'row_settings',
- 'trigger_as' => array('name' => 'region_count_update'),
- ),
- );
- $form['region_count_update'] = array(
- '#type' => 'submit',
- '#value' => t('Update regions'),
- '#attributes' => array('class' => array('js-hide')),
- '#name' => 'region_count_update',
- '#validate' => array(),
- '#submit' => array('layout_flexible_template_edit_region_style_submit'),
- '#ajax' => array(
- 'callback' => 'layout_flexible_template_edit_region_style_ajax',
- 'wrapper' => 'row_settings',
- ),
- );
-
- $form['row_settings'] = array(
- '#type' => 'container',
- '#id' => 'row_settings',
- '#parents' => array('row_settings'),
- );
-
- $region_count = isset($form_state['values']['region_count']) ? $form_state['values']['region_count'] : $default_region_count;
-
- $options = array();
- $row_styles = layout_flexible_row_styles();
- foreach ($row_styles as $name => $row_style) {
- if ($row_style['region_count'] == $region_count) {
- $options[$name] = theme('layout_flexible_template_style_option', array('row_style' => $row_style));
- }
- }
-
- if (empty($options)) {
- $options['region_12'] = '12:0';
- }
-
- $default_region_style = $row_style_in_use;
- if (!isset($options[$row_style_in_use])) {
- $default_region_style = key($options);
- }
- $form['row_settings']['region_style'] = array(
- '#title' => t('Region widths'),
- '#type' => 'radios',
- '#default_value' => $default_region_style,
- '#options' => $options,
- );
-
- $form['submit_region_style'] = array(
- '#type' => 'submit',
- '#value' => t('Choose region widths'),
- '#attributes' => array(
- 'class' => array('js-hide'),
- ),
- '#submit' => array(
- 'layout_flexible_template_region_count_load',
- ),
- );
-
- $submit_button_value = $new_row ? t('Continue') : t('Save region widths');
- $form['actions'] = array('#type' => 'actions');
- $form['actions']['submit'] = array(
- '#type' => 'submit',
- '#name' => 'submit',
- '#value' => $submit_button_value,
- '#attributes' => array('class' => array('layout-title-button')),
- '#submit' => array(
- 'layout_flexible_template_region_style_select_submit',
- ),
- '#ajax' => array(
- 'callback' => 'layout_ajax_form_open_dialog',
- ),
- );
- if (isset($flexible_template->rows[$original_row]['in_progress'])) {
- $cancel_submit_callback = 'layout_flexible_template_region_style_select_cancel';
- $cancel_ajax_callback = 'layout_ajax_form_open_dialog';
- }
- else {
- $cancel_submit_callback = 'layout_flexible_template_cancel';
- $cancel_ajax_callback = 'layout_flexible_template_cancel_ajax';
- }
- $form['actions']['cancel'] = array(
- '#type' => 'submit',
- '#value' => t('Cancel'),
- '#validate' => array(),
- '#submit' => array(
- $cancel_submit_callback,
- ),
- '#ajax' => array(
- 'callback' => $cancel_ajax_callback,
- ),
- );
-
- return $form;
- }
-
- * Submit handler that cancels the region style selection form.
- *
- * @see layout_flexible_template_region_style_select().
- */
- function layout_flexible_template_cancel($form, &$form_state) {
- $form_state['redirect'] = 'admin/structure/layouts/settings/flexible-template/' . $form_state['flexible_template_name'] . '/configure';
- }
-
- * AJAX handler to cancels the region style selection form.
- *
- * @see layout_flexible_template_region_style_select().
- */
- function layout_flexible_template_cancel_ajax($form, $form_state) {
- $commands = array();
- $commands[] = ajax_command_close_modal_dialog();
-
- return array(
- '#type' => 'ajax',
- '#commands' => $commands,
- );
- }
-
- * Submit handler that cancels the region style selection form.
- *
- * @see layout_flexible_template_region_style_select().
- */
- function layout_flexible_template_region_style_select_cancel($form, &$form_state) {
- $form_state['redirect'] = 'admin/structure/layouts/settings/flexible-template/' . $form_state['flexible_template_name'] . '/row/' . $form_state['original_row'] . '/configure';
- }
-
- * Submit handler that saves the region style selection form.
- *
- * @see layout_flexible_template_region_style_select().
- */
- function layout_flexible_template_region_style_select_submit($form, &$form_state) {
- $form_state['redirect'] = 'admin/structure/layouts/settings/flexible-template/' . $form_state['flexible_template_name'] . '/row/' . $form_state['original_row'] . '/configure/' . $form_state['values']['region_style'];
- }
-
- * Form to add or edit a row on a flexible template.
- *
- * @param LayoutFlexibleTemplate $flexible_template
- * The loaded flexible template object.
- * @param string $original_row
- * The row above or below which a new row is being inserted.
- * @param string $region_style
- * The selected region style.
- *
- * @ingroup forms
- */
- function layout_flexible_template_edit_row_form($form, &$form_state, LayoutFlexibleTemplate $flexible_template, $original_row, $region_style = NULL) {
- form_load_include($form_state, 'inc', 'layout', 'layout.flexible');
- form_load_include($form_state, 'inc', 'layout', 'layout.admin');
- $form_state['flexible_template'] = &$flexible_template;
- $flexible_template_name = $flexible_template->name;
-
- $form_state['flexible_template_name'] = $flexible_template_name;
- $form_state['original_row'] = $original_row;
-
- $row_data = array();
- if ($original_row != 'add') {
- if (isset($flexible_template->rows[$original_row]['in_progress'])) {
- $row_data = $flexible_template->rows[$original_row]['in_progress'];
- }
- else {
- $row_data = $flexible_template->rows[$original_row];
- }
- }
-
- $region_style = $region_style ? $region_style : $row_data['contains'];
- $form_state['region_style'] = $region_style;
-
- $row_styles = layout_flexible_row_styles();
- $selected_style = $row_styles[$region_style]['name'];
- $region_count = $row_styles[$region_style]['region_count'];
-
- if ($original_row == 'add') {
- backdrop_set_title(t('Add new row'));
- }
- else {
- backdrop_set_title(t('Configure row !original_row', array('!original_row' => $original_row)));
- }
-
- $form['region_style'] = array(
- '#type' => 'item',
- '#title' => t('Selected region widths'),
- '#markup' => $selected_style,
- );
-
- if ($original_row != 'add') {
- $form['change_region_style'] = array(
- '#type' => 'submit',
- '#value' => t('Change region widths'),
- '#attributes' => array('class' => array('layout-link-button')),
- '#submit' => array(
- 'layout_flexible_template_change_region_style',
- ),
- '#ajax' => array(
- 'callback' => 'layout_ajax_form_open_dialog',
- ),
- );
- }
-
- $form['region_names'] = array(
- '#type' => 'fieldset',
- '#title' => t('Region names'),
- '#collapsed' => $original_row != 'add',
- '#collapsible' => TRUE,
- '#tree' => TRUE,
- );
-
- $form_state['last_region_number'] = layout_flexible_template_get_last_region_number($flexible_template);
- for ($i = 0; $i < $region_count; $i++) {
- $form['region_names']['region_name_' . $i] = array(
- '#type' => 'textfield',
- '#title' => t('Region') . ' ' . ($i + 1) . ' ' . t('name'),
- '#default_value' => !empty($row_data['region_names']['region_name_' . $i]) ? $row_data['region_names']['region_name_' . $i] : t('Region') . ' ' . ($form_state['last_region_number'] + $i + 1),
- );
- }
-
- $form['region_styles'] = array(
- '#type' => 'fieldset',
- '#title' => t('Style'),
- '#collapsed' => $original_row != 'add',
- '#collapsible' => TRUE,
- );
-
- $options = array(
- 'div' => 'DIV',
- 'nav' => 'NAV',
- 'aside' => 'ASIDE',
- 'section' => 'SECTION',
- 'header' => 'HEADER',
- 'footer' => 'FOOTER',
- 'main' => 'MAIN',
- );
- $form['region_styles']['element'] = array(
- '#title' => t('Row wrapper tag'),
- '#type' => 'select',
- '#options' => $options,
- '#default_value' => isset($row_data['element']) ? $row_data['element'] : '',
- );
-
- $form['region_styles']['container'] = array(
- '#title' => t('Row width behavior'),
- '#type' => 'radios',
- '#options' => array(
- 'container' => t('Fixed maximum width'),
- 'container_fluid' => t('Fluid width'),
- 'no_container' => t('Full width'),
- ),
- '#default_value' => isset($row_data['container']) ? $row_data['container'] : 'container_fluid',
- );
- $form['region_styles']['container']['container']['#description'] = t('Adds the <code>container</code> class to the row.');
- $form['region_styles']['container']['container_fluid']['#description'] = t('Adds the <code>container-fluid</code> class to the row (no <code>max-width</code>, but <code>padding</code>).');
- $form['region_styles']['container']['no_container']['#description'] = t('No container-related classes added to the row (e.g. for Hero blocks).');
-
- $form['region_styles']['row_classes'] = array(
- '#title' => t('Additional row classes'),
- '#type' => 'textfield',
- '#default_value' => isset($row_data['classes']) ? $row_data['classes'] : '',
- );
-
- $form['actions'] = array('#type' => 'actions');
- $form['actions']['submit'] = array(
- '#type' => 'submit',
- '#name' => 'submit',
- '#value' => t('Save configuration'),
- '#attributes' => array('class' => array('layout-title-button')),
- '#validate' => array(
- 'layout_flexible_template_edit_row_validate',
- ),
- '#submit' => array(
- 'layout_flexible_template_edit_row_form_submit',
- ),
- '#ajax' => array(
- 'callback' => 'layout_flexible_template_edit_row_ajax',
- ),
- );
- $form['actions']['cancel'] = array(
- '#type' => 'submit',
- '#value' => t('Cancel'),
- '#validate' => array(),
- '#submit' => array(
- 'layout_flexible_template_cancel',
- ),
- '#ajax' => array(
- 'callback' => 'layout_flexible_template_cancel_ajax',
- ),
- );
-
- return $form;
- }
-
- * Returns the last number of all regions named "Region X" where X is a number.
- */
- function layout_flexible_template_get_last_region_number(LayoutFlexibleTemplate $flexible_template, $form_state = NULL) {
- $last = 0;
- if ($form_state) {
- $region_names = array_filter($form_state['values']['region_names']);
- $last = $form_state['last_region_number'];
- }
- else {
- $region_names = array();
- foreach ($flexible_template->rows as $row) {
- foreach ($row['region_names'] as $name) {
- $region_names[] = $name;
- }
- }
- }
-
- foreach ($region_names as $region) {
- $str = explode('Region ', $region);
- if (!empty($str[1]) && is_numeric($str[1]) && $str[1] > $last) {
- $last = $str[1];
- }
- }
-
- return $last;
- }
-
- * Submit handler for the change region style button on the
- * layout_flexible_template_edit_row_form().
- */
- function layout_flexible_template_change_region_style($form, &$form_state) {
- $old_row = array(
- 'contains' => $form_state['region_style'],
- 'element' => $form_state['values']['element'],
- 'classes' => $form_state['values']['row_classes'],
- 'container' => $form_state['values']['container'],
- 'region_names' => $form_state['values']['region_names'],
- );
- $form_state['flexible_template']->rows[$form_state['original_row']]['in_progress'] = $old_row;
-
- layout_flexible_tempstore_set($form_state['flexible_template']);
-
- $form_state['redirect'] = 'admin/structure/layouts/settings/flexible-template/' . $form_state['flexible_template_name'] . '/row/' . $form_state['original_row'] . '/select-widths';
- }
-
- * Submit handler on the hidden button to change region widths on
- * layout_flexible_template_edit_row_form() if AJAX is disabled.
- */
- function layout_flexible_template_region_count_load(&$form, &$form_state) {
- $form_state['rebuild'] = TRUE;
- }
-
- * Validation handler for layout_flexible_template_edit_row_form().
- */
- function layout_flexible_template_edit_row_validate($form, &$form_state) {
- $last_region_number = layout_flexible_template_get_last_region_number($form_state['flexible_template'], $form_state);
-
- foreach ($form_state['values']['region_names'] as $key => $region_name) {
- if (empty($region_name)) {
- $form_state['values']['region_names'][$key] = t('Region') . ' ' . ($last_region_number + $key + 1);
- $last_region_number++;
- }
- }
- }
-
- * Submit handler for layout_flexible_template_edit_row_form().
- */
- function layout_flexible_template_edit_row_form_submit($form, &$form_state) {
- form_load_include($form_state, 'inc', 'layout', 'layout.admin');
- form_load_include($form_state, 'inc', 'layout', 'layout.flexible');
-
- $flexible_template = $form_state['flexible_template'];
- $original_row = $form_state['original_row'];
-
- $new_row = array(
- 'contains' => $form_state['region_style'],
- 'element' => $form_state['values']['element'],
- 'classes' => $form_state['values']['row_classes'],
- 'container' => $form_state['values']['container'],
- 'region_names' => $form_state['values']['region_names'],
- );
-
- if ($original_row == 'add') {
- $uuid = new Uuid();
- $original_row = $uuid->generate();
- }
-
- $flexible_template->rows[$original_row] = $new_row;
-
- $form_state['flexible_template'] = $flexible_template;
-
- $form_state['ajax_rebuild_form'] = 'layout_flexible_template_configure_form';
- $form_state['ajax_rebuild_args'] = array($flexible_template);
- $form_state['ajax_update'] = array('content');
- layout_flexible_tempstore_set($flexible_template);
- layout_flexible_reset_caches();
- if (!backdrop_is_ajax()) {
- $form_state['redirect'] = 'admin/structure/layouts/settings/flexible-template/' . $form_state['flexible_template_name'] . '/configure';
- }
- }
-
- * AJAX callback to change the region count.
- *
- * @see layout_flexible_template_region_style_select()
- */
- function layout_flexible_template_edit_region_style_ajax($form, &$form_state) {
- return $form['row_settings'];
- }
-
- * Submit callback to change the region count.
- *
- * @see layout_flexible_template_region_style_select()
- */
- function layout_flexible_template_edit_region_style_submit($form, &$form_state) {
-
- $form_state['input']['region_style'] = NULL;
- $form_state['rebuild'] = TRUE;
- }
-
- * AJAX callback on the submit button for editing a layout row.
- *
- * @see layout_flexible_template_edit_row_form().
- */
- function layout_flexible_template_edit_row_ajax($form, $form_state) {
- $commands = array();
-
- if (form_get_errors()) {
- $html = '';
- $html .= theme('status_messages');
- $html .= backdrop_render($form);
- $title = isset($form['#title']) ? $form['#title'] : backdrop_get_title();
- $commands[] = ajax_command_open_modal_dialog($title, $html, array('dialogClass' => 'layout-dialog'));
- }
- else {
- $commands[] = ajax_command_close_modal_dialog();
-
- $update_ajax = layout_ajax_form_update($form, $form_state);
- $commands = array_merge($commands, $update_ajax['#commands']);
- }
-
-
- $commands[] = ajax_command_remove('#messages');
- $commands[] = ajax_command_html('#layout-messages', theme('status_messages'));
-
- return array(
- '#type' => 'ajax',
- '#commands' => $commands,
- );
- }
-
- * Menu callback to delete a row from a flexible template.
- *
- * @param LayoutFlexibleTemplate $flexible_template
- * The loaded flexible template object.
- * @param string $original_row
- * The row above or below which a new row is being inserted.
- *
- * @ingroup forms
- */
- function layout_flexible_template_delete_row(LayoutFlexibleTemplate $flexible_template, $original_row) {
- if (!isset($_GET['token']) || !backdrop_valid_token($_GET['token'], 'layout-region-' . $original_row)) {
- return MENU_ACCESS_DENIED;
- }
-
- $commands = array();
- $flexible_template_name = $flexible_template->name;
-
- unset($flexible_template->rows[$original_row]);
- layout_flexible_tempstore_set($flexible_template);
-
- if (backdrop_is_ajax()) {
- $commands[] = ajax_command_remove('#flexible-row--' . $original_row);
-
- return array(
- '#type' => 'ajax',
- '#commands' => $commands,
- );
- }
- else {
- backdrop_set_message(t('Row "@title" removed.', array('@title' => $flexible_template->title)));
- backdrop_goto('admin/structure/layouts/settings/flexible-template/' . $flexible_template_name . '/configure');
- return array();
- }
- }
-
- * Menu callback; Delete a flexible template.
- *
- * @ingroup forms
- */
- function layout_flexible_template_delete_form($form, &$form_state, LayoutFlexibleTemplate $flexible_template) {
- $form_state['flexible_template'] = &$flexible_template;
- $question = t('Delete flexible template @title?', array('@title' => $flexible_template->title));
- $description = t('This action cannot be undone.');
- backdrop_set_title($question, PASS_THROUGH);
-
-
- $errors = array();
- foreach (layout_load_all() as $layout) {
- if ($layout->layout_template == $flexible_template->name) {
- $errors[] = check_plain($layout->title);
- }
- }
-
- if (!empty($errors)) {
- backdrop_set_message(t('The "@title" layout template is currently in use in the following layouts and may not be deleted: !list', array('@title' => $flexible_template->title, '!list' => theme('item_list', array('items' => $errors)))), 'error');
- }
- else {
- $form['description'] = array(
- '#markup' => $description
- );
- }
-
- $form['actions'] = array(
- '#type' => 'actions'
- );
- $form['actions']['submit'] = array(
- '#type' => 'submit',
- '#disabled' => !empty($errors),
- '#value' => t('Delete template'),
- '#attributes' => array('class' => array('button-danger')),
- );
- $form['actions']['cancel'] = array(
- '#type' => 'link',
- '#title' => t('Cancel'),
- '#href' => 'admin/structure/layouts/settings',
- );
-
- $form['#attributes']['class'][] = 'confirmation';
- $form['#theme'] = 'confirm_form';
-
- return $form;
- }
-
- * Submit handler that deletes a flexible template.
- *
- * @see layout_flexible_template_delete_form()
- */
- function layout_flexible_template_delete_form_submit(&$form, &$form_state) {
-
- $flexible_template = &$form_state['flexible_template'];
- $flexible_template->delete();
-
- backdrop_set_message(t('The layout template "@title" has been deleted.', array('@title' => $flexible_template->title)));
- $form_state['redirect'] = 'admin/structure/layouts/settings';
- }