function views_ui_add_form

Same name in other branches
  1. 6.x-3.x includes/admin.inc \views_ui_add_form()

Form builder for the "add new view" page.

1 string reference to 'views_ui_add_form'
views_ui_add_page in includes/admin.inc
Page callback to add a new view.

File

includes/admin.inc, line 310

Code

function views_ui_add_form($form, &$form_state) {
    ctools_include('dependent');
    $form['#attached']['js'][] = drupal_get_path('module', 'views_ui') . '/js/views-admin.js';
    $form['#attributes']['class'] = array(
        'views-admin',
    );
    $form['human_name'] = array(
        '#type' => 'textfield',
        '#title' => t('View name'),
        '#required' => TRUE,
        '#size' => 32,
        '#default_value' => !empty($form_state['view']) ? $form_state['view']->human_name : '',
        '#maxlength' => 255,
    );
    $form['name'] = array(
        '#type' => 'machine_name',
        '#maxlength' => 128,
        '#machine_name' => array(
            'exists' => 'views_get_view',
            'source' => array(
                'human_name',
            ),
        ),
        '#description' => t('A unique machine-readable name for this View. It must only contain lowercase letters, numbers, and underscores.'),
    );
    $form['description_enable'] = array(
        '#type' => 'checkbox',
        '#title' => t('Description'),
    );
    $form['description'] = array(
        '#type' => 'textfield',
        '#title' => t('Provide description'),
        '#title_display' => 'invisible',
        '#size' => 64,
        '#default_value' => !empty($form_state['view']) ? $form_state['view']->description : '',
        '#dependency' => array(
            'edit-description-enable' => array(
                1,
            ),
        ),
    );
    // Create a wrapper for the entire dynamic portion of the form. Everything
    // that can be updated by AJAX goes somewhere inside here. For example, this
    // is needed by "Show" dropdown (below); it changes the base table of the
    // view and therefore potentially requires all options on the form to be
    // dynamically updated.
    $form['displays'] = array();
    // Create the part of the form that allows the user to select the basic
    // properties of what the view will display.
    $form['displays']['show'] = array(
        '#type' => 'fieldset',
        '#tree' => TRUE,
        '#attributes' => array(
            'class' => array(
                'container-inline',
            ),
        ),
    );
    // Create the "Show" dropdown, which allows the base table of the view to be
    // selected.
    $wizard_plugins = views_ui_get_wizards();
    $options = array();
    foreach ($wizard_plugins as $key => $wizard) {
        $options[$key] = $wizard['title'];
    }
    $form['displays']['show']['wizard_key'] = array(
        '#type' => 'select',
        '#title' => t('Show'),
        '#options' => $options,
    );
    $show_form =& $form['displays']['show'];
    $show_form['wizard_key']['#default_value'] = views_ui_get_selected($form_state, array(
        'show',
        'wizard_key',
    ), 'node', $show_form['wizard_key']);
    // Changing this dropdown updates the entire content of $form['displays'] via
    // AJAX.
    views_ui_add_ajax_trigger($show_form, 'wizard_key', array(
        'displays',
    ));
    // Build the rest of the form based on the currently selected wizard plugin.
    $wizard_key = $show_form['wizard_key']['#default_value'];
    $get_instance = $wizard_plugins[$wizard_key]['get_instance'];
    $wizard_instance = $get_instance($wizard_plugins[$wizard_key]);
    $form = $wizard_instance->build_form($form, $form_state);
    $form['save'] = array(
        '#type' => 'submit',
        '#value' => t('Save & exit'),
        '#validate' => array(
            'views_ui_wizard_form_validate',
        ),
        '#submit' => array(
            'views_ui_add_form_save_submit',
        ),
    );
    $form['continue'] = array(
        '#type' => 'submit',
        '#value' => t('Continue & edit'),
        '#validate' => array(
            'views_ui_wizard_form_validate',
        ),
        '#submit' => array(
            'views_ui_add_form_store_edit_submit',
        ),
        '#process' => array_merge(array(
            'views_ui_default_button',
        ), element_info_property('submit', '#process', array())),
    );
    $form['cancel'] = array(
        '#type' => 'submit',
        '#value' => t('Cancel'),
        '#submit' => array(
            'views_ui_add_form_cancel_submit',
        ),
        '#limit_validation_errors' => array(),
    );
    return $form;
}