function node_filter_form

Returns the node administration filters form array to node_admin_content().

See also

node_admin_nodes()

node_admin_nodes_submit()

node_admin_nodes_validate()

node_filter_form_submit()

node_multiple_delete_confirm()

node_multiple_delete_confirm_submit()

Related topics

1 call to node_filter_form()
node_admin_content in modules/node/node.admin.inc
Page callback: Form constructor for the content administration form.

File

modules/node/node.admin.inc, line 156

Code

function node_filter_form() {
    $session = isset($_SESSION['node_overview_filter']) ? $_SESSION['node_overview_filter'] : array();
    $filters = node_filters();
    $i = 0;
    $form['filters'] = array(
        '#type' => 'fieldset',
        '#title' => t('Show only items where'),
        '#theme' => 'exposed_filters__node',
    );
    foreach ($session as $filter) {
        list($type, $value) = $filter;
        if ($type == 'term') {
            // Load term name from DB rather than search and parse options array.
            $value = module_invoke('taxonomy', 'term_load', $value);
            $value = $value->name;
        }
        elseif ($type == 'language') {
            $value = $value == LANGUAGE_NONE ? t('Language neutral') : module_invoke('locale', 'language_name', $value);
        }
        else {
            $value = $filters[$type]['options'][$value];
        }
        $t_args = array(
            '%property' => $filters[$type]['title'],
            '%value' => $value,
        );
        if ($i++) {
            $form['filters']['current'][] = array(
                '#markup' => t('and where %property is %value', $t_args),
            );
        }
        else {
            $form['filters']['current'][] = array(
                '#markup' => t('where %property is %value', $t_args),
            );
        }
        if (in_array($type, array(
            'type',
            'language',
        ))) {
            // Remove the option if it is already being filtered on.
            unset($filters[$type]);
        }
    }
    $form['filters']['status'] = array(
        '#type' => 'container',
        '#attributes' => array(
            'class' => array(
                'clearfix',
            ),
        ),
        '#prefix' => $i ? '<div class="additional-filters">' . t('and where') . '</div>' : '',
    );
    $form['filters']['status']['filters'] = array(
        '#type' => 'container',
        '#attributes' => array(
            'class' => array(
                'filters',
            ),
        ),
    );
    foreach ($filters as $key => $filter) {
        $form['filters']['status']['filters'][$key] = array(
            '#type' => 'select',
            '#options' => $filter['options'],
            '#title' => $filter['title'],
            '#default_value' => '[any]',
        );
    }
    $form['filters']['status']['actions'] = array(
        '#type' => 'actions',
        '#attributes' => array(
            'class' => array(
                'container-inline',
            ),
        ),
    );
    $form['filters']['status']['actions']['submit'] = array(
        '#type' => 'submit',
        '#value' => count($session) ? t('Refine') : t('Filter'),
    );
    if (count($session)) {
        $form['filters']['status']['actions']['undo'] = array(
            '#type' => 'submit',
            '#value' => t('Undo'),
        );
        $form['filters']['status']['actions']['reset'] = array(
            '#type' => 'submit',
            '#value' => t('Reset'),
        );
    }
    drupal_add_js('misc/form.js');
    return $form;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.