weight.module in Weight 7.3
Same filename and directory in other branches
Provides a weight field that allows entities to be ordered.
File
weight.moduleView source
<?php
/**
* @file
* Provides a weight field that allows entities to be ordered.
*/
/**
* Implements hook_field_info().
*/
function weight_field_info() {
return array(
'weight' => array(
'label' => t('Weight'),
'description' => t('Weight Field'),
'instance_settings' => array(
'range' => 20,
),
'default_widget' => 'weight_selector',
'default_formatter' => 'number_integer',
'property_type' => 'integer',
),
);
}
/**
* Implements hook_field_widget_info().
*/
function weight_field_widget_info() {
return array(
'weight_selector' => array(
'label' => t('Weight Selector'),
'field types' => array(
'weight',
),
),
);
}
/**
* Implements hook_field_widget_settings_form().
*/
function weight_field_widget_settings_form($field, $instance) {
$settings = $instance['widget']['settings'];
$form['range'] = array(
'#type' => 'textfield',
'#title' => t('Range'),
'#description' => t('The range of weights available to select. For
example, a range of 20 will allow you to select a weight between -20
and 20.'),
'#default_value' => isset($settings['range']) ? $settings['range'] : 20,
'#size' => 5,
);
return $form;
}
/**
* Implements hook_field_widget_form().
*/
function weight_field_widget_form(&$form, &$form_state, $field, $instance, $langcode, $items, $delta, $element) {
if (!empty($instance['widget']['settings'])) {
$range = $instance['widget']['settings']['range'];
}
else {
$range = 20;
}
$element += array(
'#type' => 'select',
'#options' => _weight_get_options($range),
'#default_value' => isset($items[$delta]) ? $items[$delta] : 0,
'#element_validate' => array(
'weight_selector_validate',
),
);
return array(
'value' => $element,
);
}
/**
* Validation for weight_selector widget.
*/
function weight_selector_validate($element, &$form_state) {
form_set_value($element, $element['#value'], $form_state);
}
/**
* Implements hook_field_formatter_info().
*/
function weight_field_formatter_info() {
return array(
'weight_integer' => array(
'label' => t('Default'),
'field types' => array(
'weight',
),
),
);
}
/**
* Implements hook_field_formatter_view().
*/
function weight_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
$element = array();
foreach ($items as $delta => $item) {
$element[$delta] = array(
'#markup' => $item['value'],
);
}
return $element;
}
/**
* Implements hook_field_is_empty().
*/
function weight_field_is_empty($item, $field) {
if (empty($item)) {
return TRUE;
}
else {
return FALSE;
}
}
/**
* Implements hook_permission().
*/
function weight_permission() {
return array(
'assign node weight' => array(
'title' => t('Assign node weights'),
'description' => t('Allow modification of node weights.'),
),
);
}
/**
* Implements hook_views_api().
*/
function weight_views_api() {
return array(
'api' => 3,
'path' => drupal_get_path('module', 'weight') . '/views',
);
}
/**
* Implementes hook_preprocess_views_view_table().
*/
function weight_preprocess_views_view_table(&$variables) {
$weight_selector = FALSE;
// Check for a weight selector field.
foreach ($variables['view']->field as $field) {
if (isset($field->options['weight_selector'])) {
$weight_selector = TRUE;
break;
}
}
if ($weight_selector) {
// Add the tabledrag attributes.
foreach ($variables['rows'] as $key => $row) {
$variables['row_classes'][$key][] = 'draggable';
}
$table_id = 'weight-table-' . $variables['id'];
$variables['attributes_array']['id'] = $table_id;
drupal_add_tabledrag($table_id, 'order', 'sibling', 'weight-selector');
}
}
/**
* Get weight range options.
*/
function _weight_get_options($range) {
$options = array();
for ($i = -$range; $i <= $range; $i++) {
$options[$i] = $i;
}
return $options;
}
Functions
Name![]() |
Description |
---|---|
weight_field_formatter_info | Implements hook_field_formatter_info(). |
weight_field_formatter_view | Implements hook_field_formatter_view(). |
weight_field_info | Implements hook_field_info(). |
weight_field_is_empty | Implements hook_field_is_empty(). |
weight_field_widget_form | Implements hook_field_widget_form(). |
weight_field_widget_info | Implements hook_field_widget_info(). |
weight_field_widget_settings_form | Implements hook_field_widget_settings_form(). |
weight_permission | Implements hook_permission(). |
weight_preprocess_views_view_table | Implementes hook_preprocess_views_view_table(). |
weight_selector_validate | Validation for weight_selector widget. |
weight_views_api | Implements hook_views_api(). |
_weight_get_options | Get weight range options. |