views_dynamic_fields.module in Views Dynamic Fields 7
Registers a views filter.
The view hook for registration of a new views filter that allows the user to choose the fields to be excluded from a displayed instance of a view.
File
views_dynamic_fields.moduleView source
<?php
/**
* @file
* Registers a views filter.
*
* The view hook for registration of a new views filter that allows the user
* to choose the fields to be excluded from a displayed instance of a view.
*/
/**
* Implements hook_views_data_alter().
*/
function views_dynamic_fields_views_data_alter(&$data) {
// Register a dummy field to attach the filter for nodes.
$data['node']['dynamic-field'] = array(
'title' => t('Dynamic Fields'),
'help' => t("List of fields displayed in a view"),
'filter' => array(
'handler' => 'views_handler_filter_dynamic_fields',
),
);
// Register a dummy field to attach the filter for users.
// @see http://drupal.org/node/1492166
$data['users']['dynamic-field'] = array(
'title' => t('Dynamic Fields'),
'help' => t("List of fields displayed in a view"),
'filter' => array(
'handler' => 'views_handler_filter_dynamic_fields',
),
);
// Register a dummy field to attach the filter for commerce_products.
// @see http://drupal.org/node/2289005
$data['commerce_product']['dynamic-field'] = array(
'title' => t('Dynamic Fields'),
'help' => t("List of fields displayed in a view"),
'filter' => array(
'handler' => 'views_handler_filter_dynamic_fields',
),
);
}
/**
* Implements hook_theme().
*/
function views_dynamic_fields_theme() {
$theme = array(
'views_dynamic_fields_sort_filter_fields' => array(
'render element' => 'form',
),
);
return $theme;
}
/**
* Theme a drag-sortable table of fields in the exposed filter.
*/
function theme_views_dynamic_fields_sort_filter_fields($variables) {
$form = $variables['form'];
drupal_add_tabledrag('views-dynamic-fields-filters-table-sort', 'order', 'self', 'sort');
// Weight for sortable tables.
// @see http://drupal.org/node/935910
// @see https://www.drupal.org/node/2327893
$header = array(
t('Select'),
t('Field'),
t('Weight'),
);
$rows = array();
foreach (element_children($form) as $key) {
// This is important.
// We need to start with an empty element for the drag handle.
$row = array();
// Add class to group weight fields for drag and drop.
$form[$key]['sort']['#attributes']['class'] = array(
'sort',
);
$row[] = drupal_render($form[$key]['check']);
$row[] = drupal_render($form[$key]['title']);
$row[] = drupal_render($form[$key]['sort']);
// Note the difference between $row and $rows.
$rows[] = array(
'data' => $row,
'class' => array(
'draggable',
),
);
}
$output = theme('table', array(
'header' => $header,
'rows' => $rows,
'attributes' => array(
'id' => 'views-dynamic-fields-filters-table-sort',
),
));
$output .= drupal_render_children($form);
return $output;
}
Functions
Name![]() |
Description |
---|---|
theme_views_dynamic_fields_sort_filter_fields | Theme a drag-sortable table of fields in the exposed filter. |
views_dynamic_fields_theme | Implements hook_theme(). |
views_dynamic_fields_views_data_alter | Implements hook_views_data_alter(). |