View source
<?php
function field_views_field_info() {
return array(
'field_views' => array(
'label' => t('View'),
'description' => t('This field allows for an embeded view'),
'settings' => array(
'global_setting' => 255,
),
'instance_settings' => array(
'local' => 0,
),
'default_widget' => 'field_views',
'default_formatter' => 'field_views_formatter',
'no_ui' => FALSE,
),
);
}
function field_views_field_instance_settings_form($field, $instance) {
$settings = $instance['settings'];
$form = array();
return $form;
}
function field_views_field_is_empty($item, $field) {
FALSE;
}
function field_views_field_validate($entity_type, $entity, $field, $instance, $langcode, $items, &$errors) {
TRUE;
}
function field_views_field_widget_info() {
return array(
'field_views' => array(
'label' => t('Views Field'),
'field types' => array(
'field_views',
),
'settings' => array(
'widget_setting' => 'bob',
),
'behaviors' => array(
'multiple values' => FIELD_BEHAVIOR_DEFAULT,
'default value' => FIELD_BEHAVIOR_DEFAULT,
),
),
);
}
function field_views_field_widget_form(&$form, &$form_state, $field, $instance, $langcode, $items, $delta, $element) {
$form['#help'] = array(
'markup' => 'This field is read-only and you will not see any settings on edit form. To choose the view to use edit the display settings',
);
return array();
}
function field_views_field_update($entity_type, $entity, $field, $instance, $langcode, &$items) {
field_views_field_insert($entity_type, $entity, $field, $instance, $langcode, $items);
}
function field_views_field_insert($entity_type, $entity, $field, $instance, $langcode, &$items) {
return;
}
function field_views_field_delete($entity_type, $entity, $field, $instance, $langcode, &$items) {
}
function field_views_field_formatter_info() {
return array(
'field_views_formatter' => array(
'label' => 'Display View',
'field types' => array(
'field_views',
),
'settings' => array(
'view' => '',
),
),
);
}
function field_views_field_formatter_prepare_view($entity_type, $entities, $field, $instances, $langcode, &$items, $displays) {
foreach ($items as $key => $value) {
if (!$value) {
$items[$key] = array(
"",
);
}
}
}
function field_views_field_formatter_view($entity_type, &$entity, $field, $instance, $langcode, $items, $display) {
$element = array();
$entity_info = entitY_get_info($entity_type);
$entity_id = $entity->{$entity_info['entity keys']['id']};
$settings = $display['settings'];
list($view_name, $view_display_name) = explode(" ", $settings['view']);
$element[0]['#markup'] = views_embed_view($view_name, $view_display_name, $entity_id);
return $element;
}
function field_views_field_formatter_settings_form($field, $instance, $view_mode, $form, &$form_state) {
$display = $instance['display'][$view_mode];
$settings = $display['settings'];
$options = array();
$views = views_get_all_views();
foreach ($views as $name => $view) {
foreach ($view->display as $display_name => $display) {
$options[$view->human_name]["{$name} {$display_name}"] = "{$view->human_name} -- " . $display->display_title . " ({$display_name})";
}
}
$form['view'] = array(
'#type' => 'select',
'#title' => 'View',
'#options' => $options,
'#default_value' => $settings['view'],
);
return $form;
}
function field_views_field_formatter_settings_summary($field, $instance, $view_mode) {
$display = $instance['display'][$view_mode];
$settings = $display['settings'];
$view_human_name = '';
$display_title = '';
$display_name = '';
if ($settings['view'] != '') {
list($view_name, $display_name) = explode(" ", $settings['view']);
$view = views_get_view($view_name);
$display = $view->display[$display_name];
$view_human_name = $view->human_name;
$display_title = $display->display_title;
}
return "View: {$view_human_name} <BR />Display: " . $display_title . " ({$display_name})";
}