172 lines
4.7 KiB
PHP

<?php
/**
* @file
* Contains Views controllers for the translation management module.
*/
/**
* Implements hook_views_data().
*/
function tmgmt_views_data() {
$data = array();
foreach (tmgmt_source_views_controller() as $controller) {
$data += $controller->views_data();
}
return $data;
}
/**
* Views controller class for the job item entity.
*/
class TMGMTJobItemViewsController extends EntityDefaultViewsController {
/**
* {@inheritdoc}
*/
public function views_data() {
$data = parent::views_data();
$data['tmgmt_job_item']['label'] = array(
'title' => t('Label'),
'help' => t('Displays a label of the job item.'),
'field' => array(
'handler' => 'tmgmt_handler_field_tmgmt_entity_label',
),
);
$data['tmgmt_job_item']['type'] = array(
'title' => t('Type'),
'help' => t('Displays a type of the job item.'),
'field' => array(
'handler' => 'tmgmt_handler_field_tmgmt_job_item_type',
),
);
$data['tmgmt_job_item']['progress'] = array(
'title' => t('Progress'),
'help' => t('Displays the progress of a job item.'),
'real field' => 'tjiid',
'field' => array(
'handler' => 'tmgmt_handler_field_tmgmt_progress',
),
);
$data['tmgmt_job_item']['operations'] = array(
'title' => t('Operations'),
'help' => t('Displays a list of options which are available for a job item.'),
'real field' => 'tjiid',
'field' => array(
'handler' => 'tmgmt_handler_field_tmgmt_job_item_operations',
),
);
return $data;
}
}
/**
* Views controller class for the job entity.
*/
class TMGMTJobViewsController extends EntityDefaultViewsController {
/**
* {@inheritdoc}
*/
public function views_data() {
$data = parent::views_data();
$data['tmgmt_job']['operations'] = array(
'title' => t('Operations'),
'help' => t('Displays a list of options which are available for a job.'),
'real field' => 'tjid',
'field' => array(
'handler' => 'tmgmt_handler_field_tmgmt_job_operations',
),
);
$data['tmgmt_job']['progress'] = array(
'title' => t('Progress'),
'help' => t('Displays the progress of a job.'),
'real field' => 'tjid',
'field' => array(
'handler' => 'tmgmt_handler_field_tmgmt_progress',
),
);
$data['tmgmt_job']['word_count'] = array(
'title' => t('Word count'),
'help' => t('Displays the word count of a job.'),
'real field' => 'tjid',
'field' => array(
'handler' => 'tmgmt_handler_field_tmgmt_wordcount',
),
);
$data['tmgmt_job']['label']['field']['handler'] = 'tmgmt_handler_field_tmgmt_entity_label';
$data['tmgmt_job']['translator']['field']['handler'] = 'tmgmt_handler_field_tmgmt_translator';
$data['tmgmt_job']['job_item'] = array(
'title' => t('Job items'),
'help' => t('Get the job items of the job'),
'relationship' => array(
'base' => 'tmgmt_job_item',
'base field' => 'tjid',
'real field' => 'tjid',
'label' => t('Job items'),
),
);
$data['tmgmt_job']['item_count'] = array(
'title' => t('Job item count'),
'help' => t('Show the amount of job items per job (per job item status)'),
'real field' => 'tjid',
'field' => array(
'handler' => 'tmgmt_handler_field_tmgmt_job_item_count',
),
);
return $data;
}
}
/**
* Views controller class for the job message entity.
*/
class TMGMTMessageViewsController extends EntityDefaultViewsController {
/**
* {@inheritdoc}
*/
public function views_data() {
$data = parent::views_data();
$data['tmgmt_message']['message']['field']['handler'] = 'tmgmt_handler_field_tmgmt_message_message';
return $data;
}
}
interface TMGMTSourceViewsControllerInterface extends TMGMTPluginBaseInterface {
/**
* Defines the result for hook_views_data().
*/
public function views_data();
}
/**
* Vies controller class for source plugins.
*/
class TMGMTDefaultSourceViewsController extends TMGMTPluginBase implements TMGMTSourceViewsControllerInterface {
/**
* {@inheritdoc}
*/
public function views_data() {
// @todo Implement this in a generic fashion.
/* $key = $this->pluginInfo['something'];
$data[$key]['tmgmt_translatable_types'] = array(
'title' => t('Translatable types'),
'help' => t('Filter translatable elements based on their types.'),
'filter' => array(
'handler' => 'views_handler_filter_in_operator',
'real field' => 'type',
'options callback' => 'tmgmt_source_translatable_item_types',
'options arguments' => array($this->pluginType),
),
); */
return array();
}
}