token_field.module in Token Field 7
Same filename and directory in other branches
Optional extension to CCK (Content Construction Kit) to provide a read-only field which allows embedding of "compound" fields using Tokens.
File
token_field.moduleView source
<?php
/**
* @file
* Optional extension to CCK (Content Construction Kit) to provide a read-only
* field which allows embedding of "compound" fields using Tokens.
*/
/**
* Implements hook_field_info().
*/
function token_field_field_info() {
return array(
'token_field' => array(
'label' => t('Token Field'),
'description' => t('A read-only compound field using Tokens.'),
'default_widget' => 'token_field',
'default_formatter' => 'token_field_default',
),
);
}
/**
* Implements hook_field_settings_form().
*/
function token_field_field_settings_form($field, $instance, $has_data) {
$settings = $field['settings'];
$form = array();
$form['template'] = array(
'#type' => 'text_format',
'#default_value' => isset($settings['template']['value']) ? $settings['template']['value'] : '',
'#format' => isset($settings['template']['format']) ? $settings['template']['format'] : NULL,
'#description' => t('Using the text area, define the layout for this field using HTML and Tokens.'),
);
$form['token_help'] = array(
'#theme' => 'token_tree',
'#token_types' => array(
'node',
),
);
return $form;
}
/**
* Implements hook_form_FORM_ID_alter().
*/
function token_field_form_field_ui_field_edit_form_alter(&$form, &$form_state, $form_id) {
// Not intereted in non-token_field forms
if ($form['#field']['type'] != 'token_field') {
return;
}
// By settings the following fields to 'value', they will no longer appear
// in the form but their value will appear in the submission handlers.
$form['instance']['required']['#type'] = 'value';
$form['instance']['description']['#type'] = 'value';
$form['field']['cardinality']['#type'] = 'value';
}
/**
* Implements hook_field_instance_settings_form().
*/
function token_field_field_instance_settings_form($field, $instance) {
// @todo This currently isn't used. Do we need to declare it?
return array();
}
/**
* Implements hook_field().
*/
function token_field_field_load($entity_type, $entities, $field, $instances, $landcode, &$items) {
foreach ($entities as $id => $entity) {
// Get the template from the field and overly the defaults
$item = $field['settings']['template'] + array(
'value' => '',
'format' => filter_default_format(),
);
// Parse the body for tokens
$types = array(
'global' => NULL,
$entity_type => $entity,
);
$item['value_token_filtered'] = token_replace($item['value'], $types);
$item['safe'] = check_markup($item['value_token_filtered'], $item['format']);
$items[$id][0] = $item;
}
}
/**
* Implements hook_field_formatter_info().
*/
function token_field_field_formatter_info() {
return array(
'token_field_default' => array(
'field types' => array(
'token_field',
),
'label' => t('Default'),
),
);
}
/**
* Implements hook_field_formatter_settings_form().
*/
function token_field_field_formatter_settings_form($field, $instance, $view_mode, $form, &$form_state) {
// @todo
}
/**
* Implements hook_field_formatter_settings_summary().
*/
function token_field_field_formatter_settings_summary($field, $instance, $view_mode) {
// @todo
}
/**
* Implements hook_field_formatter_view().
*/
function token_field_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
$element = array();
switch ($display['type']) {
case 'token_field_default':
foreach ($items as $delta => $item) {
$element[$delta] = array(
'#markup' => $item['safe'],
);
}
break;
}
return $element;
}
/**
* Implements hook_field_widget_info().
*/
function token_field_field_widget_info() {
return array(
'token_field' => array(
'label' => t('Token Field (Read Only)'),
'field types' => array(
'token_field',
),
'settings' => array(),
'behaviors' => array(
'multiple values' => FIELD_BEHAVIOR_DEFAULT,
'default value' => FIELD_BEHAVIOR_NONE,
),
),
);
}
/**
* Implements hook_widget().
*/
function token_field_widget(&$form, &$form_state, $field, $items, $delta = 0) {
return array();
}
/**
* Implements hook_field_widget_settings_form().
*/
/*
* Not needed at the moment - keeping for future possible reference
function token_field_field_widget_settings_form($field, $instance) {
}
*/
/**
* Implements hook_field_widget_form().
*/
function token_field_field_widget_form(&$form, &$form_state, $field, $instance, $langcode, $items, $delta, $element) {
}
/**
* Implements hook_field_widget_error().
*/
function token_field_field_widget_error($element, $error, $form, &$form_state) {
}
/**
* Implements hook_field_widget_translation().
*/
function token_field_field_prepare_translation($entity_type, $entity, $field, $instance, $langcode, &$items, $source_entity, $source_langcode) {
}
/**
* Implements hook_filter_format_update().
*/
function token_field_filter_format_update($format) {
field_cache_clear();
}
/**
* Implements hook_filter_format_disable().
*/
function token_field_filter_format_disable($format) {
field_cache_clear();
}
/**
* Implements hook_field_is_empty().
*/
function token_field_field_is_empty($item, $field) {
return FALSE;
}