flexiform_multistep.admin.inc in Flexiform 7
Admin functions for Flexiform Multistep.
File
flexiform_multistep/flexiform_multistep.admin.incView source
<?php
/**
* @file
* Admin functions for Flexiform Multistep.
*/
/**
* Implements hook_form_FORM_ID_alter() for flexiform_manage_form_fields_form().
*/
function _flexiform_multistep_form_flexiform_manage_form_fields_form_alter(&$form, &$form_state, $form_id) {
$settings = isset($form['#flexiform']->settings['flexiform_multistep']) ? $form['#flexiform']->settings['flexiform_multistep'] : array();
array_unshift($form['#submit'], 'flexiform_multistep_manage_form_fields_submit');
$form['additional_settings']['flexiform_multistep'] = array(
'#type' => 'fieldset',
'#title' => t('Multi-page'),
'#description' => t('Configure this form for server side multi-pages.'),
'#collapsible' => TRUE,
'#collapsed' => FALSE,
'#parents' => array(
'flexiform_multistep',
),
);
$form['additional_settings']['flexiform_multistep']['enabled'] = array(
'#type' => 'checkbox',
'#title' => t('Enable server side multi-page for this form.'),
'#default_value' => !empty($settings['enabled']),
);
ctools_include('wizard');
$ctools_wizard_defaults = array(
'id' => NULL,
'forms' => array(),
);
ctools_wizard_defaults($ctools_wizard_defaults);
$form['additional_settings']['flexiform_multistep']['form_info']['show trail'] = array(
'#type' => 'checkbox',
'#title' => t('Show progress indicator'),
'#default_value' => isset($settings['form_info']['show trail']) ? $settings['form_info']['show trail'] : $ctools_wizard_defaults['show trail'],
'#states' => array(
'visible' => array(
':input[name="flexiform_multistep[enabled]"]' => array(
'checked' => TRUE,
),
),
),
);
$form['additional_settings']['flexiform_multistep']['form_info']['next text'] = array(
'#type' => 'textfield',
'#title' => t('Next button text'),
'#default_value' => isset($settings['form_info']['next text']) ? $settings['form_info']['next text'] : NULL,
'#description' => t('Leave blank to use %text', array(
'%text' => $ctools_wizard_defaults['next text'],
)),
'#states' => array(
'visible' => array(
':input[name="flexiform_multistep[enabled]"]' => array(
'checked' => TRUE,
),
),
),
);
$form['additional_settings']['flexiform_multistep']['form_info']['finish text'] = array(
'#type' => 'textfield',
'#title' => t('Finish button text'),
'#default_value' => isset($settings['form_info']['finish text']) ? $settings['form_info']['finish text'] : NULL,
'#description' => t('Leave blank to use %text', array(
'%text' => $ctools_wizard_defaults['finish text'],
)),
'#states' => array(
'visible' => array(
':input[name="flexiform_multistep[enabled]"]' => array(
'checked' => TRUE,
),
),
),
);
$form['additional_settings']['flexiform_multistep']['form_info']['show back'] = array(
'#type' => 'checkbox',
'#title' => t('Show back button'),
'#default_value' => isset($settings['form_info']['show back']) ? $settings['form_info']['show back'] : $ctools_wizard_defaults['show back'],
'#states' => array(
'visible' => array(
':input[name="flexiform_multistep[enabled]"]' => array(
'checked' => TRUE,
),
),
),
);
$form['additional_settings']['flexiform_multistep']['form_info']['back text'] = array(
'#type' => 'textfield',
'#title' => t('Back button text'),
'#default_value' => isset($settings['form_info']['back text']) ? $settings['form_info']['back text'] : NULL,
'#description' => t('Leave blank to use %text', array(
'%text' => $ctools_wizard_defaults['back text'],
)),
'#states' => array(
'visible' => array(
':input[name="flexiform_multistep[enabled]"]' => array(
'checked' => TRUE,
),
':input[name="flexiform_multistep[form_info][show back]"]' => array(
'checked' => TRUE,
),
),
),
);
$form['additional_settings']['flexiform_multistep']['form_info']['show cancel'] = array(
'#type' => 'checkbox',
'#title' => t('Show cancel button'),
'#default_value' => isset($settings['form_info']['show cancel']) ? $settings['form_info']['show cancel'] : $ctools_wizard_defaults['show cancel'],
'#states' => array(
'visible' => array(
':input[name="flexiform_multistep[enabled]"]' => array(
'checked' => TRUE,
),
),
),
);
$form['additional_settings']['flexiform_multistep']['form_info']['cancel text'] = array(
'#type' => 'textfield',
'#title' => t('Cancel button text'),
'#default_value' => isset($settings['form_info']['cancel text']) ? $settings['form_info']['cancel text'] : NULL,
'#description' => t('Leave blank to use %text', array(
'%text' => $ctools_wizard_defaults['cancel text'],
)),
'#states' => array(
'visible' => array(
':input[name="flexiform_multistep[enabled]"]' => array(
'checked' => TRUE,
),
':input[name="flexiform_multistep[form_info][show cancel]"]' => array(
'checked' => TRUE,
),
),
),
);
$form['additional_settings']['flexiform_multistep']['form_info']['show return'] = array(
'#type' => 'checkbox',
'#title' => t('Show return button'),
'#description' => t('Saves and keeps you on the current page.'),
'#default_value' => isset($settings['form_info']['show return']) ? $settings['form_info']['show return'] : $ctools_wizard_defaults['show return'],
'#states' => array(
'visible' => array(
':input[name="flexiform_multistep[enabled]"]' => array(
'checked' => TRUE,
),
),
),
);
$form['additional_settings']['flexiform_multistep']['form_info']['return text'] = array(
'#type' => 'textfield',
'#title' => t('Return button text'),
'#default_value' => isset($settings['form_info']['return text']) ? $settings['form_info']['return text'] : NULL,
'#description' => t('Leave blank to use %text', array(
'%text' => $ctools_wizard_defaults['return text'],
)),
'#states' => array(
'visible' => array(
':input[name="flexiform_multistep[enabled]"]' => array(
'checked' => TRUE,
),
':input[name="flexiform_multistep[form_info][show return]"]' => array(
'checked' => TRUE,
),
),
),
);
$form['additional_settings']['flexiform_multistep']['save_entities'] = array(
'#type' => 'checkbox',
'#title' => t('Save entities on the submission of each page'),
'#description' => t('If checked, all entities used on the page will be saved when the page is submitted rather than all entities being saved at the end. This can be overridden per page.'),
'#default_value' => !empty($settings['save_entities']),
'#states' => array(
'visible' => array(
':input[name="flexiform_multistep[enabled]"]' => array(
'checked' => TRUE,
),
),
),
);
$tokens = array(
'#theme' => 'item_list',
'#items' => array(),
);
foreach ($form['#flexiform']->entities as $namespace => $info) {
$tokens['#items'][] = format_string('%namespace: @label', array(
'%namespace' => '%' . $namespace,
'@label' => $info['label'],
));
}
$form['additional_settings']['flexiform_multistep']['redirect'] = array(
'#type' => 'textfield',
'#title' => t('Redirect on completion'),
'#description' => t('Provide an internal path to redirect to on completion of the form. The following tokens are available: !tokens', array(
'!tokens' => drupal_render($tokens),
)),
'#default_value' => isset($settings['redirect']) ? $settings['redirect'] : NULL,
);
}
/**
* Submission handler for flexiform_manage_form_fields_form().
*
* See _flexiform_multistep_form_flexiform_manage_form_fields_form_alter().
*/
function flexiform_multistep_manage_form_fields_submit(&$form, &$form_state) {
$settings = $form_state['values']['flexiform_multistep'];
// Clear out empties.
$settings['form_info'] = array_filter($settings['form_info']);
$form_state['#flexiform']->settings['flexiform_multistep'] = $settings;
}
/**
* Add additional settings for multi-page forms.
*/
function _flexiform_multistep_field_group_format_settings($group) {
$flexiform = flexiform_load($group->bundle);
$settings = isset($flexiform->settings['flexiform_multistep']) ? $flexiform->settings['flexiform_multistep'] : array();
$form = array(
'instance_settings' => array(
'#tree' => TRUE,
'#weight' => 2,
),
);
$form['instance_settings']['save_entities'] = array(
'#type' => 'select',
'#title' => t('Entities to save on submission'),
'#empty_option' => t('Use form default - @default', array(
'@default' => t(!empty($settings['save_entities']) ? 'save entities on this page' : 'save all entities on last page'),
)),
'#options' => array(
'y' => t('Save entities exposed on this page'),
'n' => t("Don't save any entities on this page"),
'c' => t('Choose which entities to save'),
),
'#description' => t('Choose which entities should be saved on the submission of this page.'),
'#default_value' => isset($group->format_settings['instance_settings']['save_entities']) ? $group->format_settings['instance_settings']['save_entities'] : NULL,
);
$form['instance_settings']['save_entities_custom'] = array(
'#type' => 'checkboxes',
'#title' => t('Entities to save on page submission'),
'#options' => array(),
'#description' => t('Select which entities to save when this page is submitted. The last page will save all entities if none are selected.'),
'#default_value' => isset($group->format_settings['instance_settings']['save_entities_custom']) ? $group->format_settings['instance_settings']['save_entities_custom'] : array(),
'#states' => array(
'visible' => array(
':input[name="fields[' . $group->group_name . '][format_settings][settings][instance_settings][save_entities]"]' => array(
'value' => 'c',
),
),
),
);
foreach ($flexiform->entities as $namespace => $entity) {
$form['instance_settings']['save_entities_custom']['#options'][$namespace] = $entity['label'];
}
$form['instance_settings']['page_title'] = array(
'#type' => 'textfield',
'#title' => t('Page title'),
'#description' => t('Optionally provide a page title.'),
'#default_value' => isset($group->format_settings['instance_settings']['page_title']) ? $group->format_settings['instance_settings']['page_title'] : NULL,
);
return $form;
}
Functions
Name | Description |
---|---|
flexiform_multistep_manage_form_fields_submit | Submission handler for flexiform_manage_form_fields_form(). |
_flexiform_multistep_field_group_format_settings | Add additional settings for multi-page forms. |
_flexiform_multistep_form_flexiform_manage_form_fields_form_alter | Implements hook_form_FORM_ID_alter() for flexiform_manage_form_fields_form(). |