popsu-d7/sites/all/modules/i18n/i18n_translation/i18n_translation.admin.inc
Bachir Soussi Chiadmi 1bc61b12ad first import
2015-04-08 11:40:19 +02:00

98 lines
3.1 KiB
PHP

<?php
/**
* @file
* Internationalization (i18n) module. Translation sets admin
*/
/**
* Overview page for translation sets
*
* @param $type
* Translation set type to get a listing for this type only
* @param $query
* Base query to build upon
*/
function i18n_translation_admin_overview($type = NULL, $query = NULL) {
// Build the sortable table header.
$header['title'] = array('data' => t('Title'), 'field' => 't.title');
if (!$type) {
$header['type'] = array('data' => t('Type'), 'field' => 't.type');
}
$header['items'] = t('Items');
$header['created'] = array('data' => t('Created'), 'field' => 't.created');
$header['changed'] = array('data' => t('Updated'), 'field' => 't.changed', 'sort' => 'desc');
$header['operations'] = array('data' => t('Operations'));
// Get the translation sets for this form
$query = $query ? $query : db_select('i18n_translation_set', 't');
$query = $query->extend('PagerDefault')->extend('TableSort');
if ($type) {
$query->condition('t.type', $type);
}
$tsids = $query
->fields('t', array('tsid'))
->limit(20)
->orderByHeader($header)
->execute()
->fetchCol();
$translations = $tsids ? entity_load('i18n_translation', $tsids) : array();
$form = drupal_get_form('i18n_translation_admin_form', $translations, $header);
$form['pager'] = array('#markup' => theme('pager'));
return $form;
}
/**
* Admin form
*/
function i18n_translation_admin_form($form, &$form_state, $translations, $header) {
$destination = drupal_get_destination();
$rows = array();
foreach ($translations as $set) {
$info = i18n_object_info($set->type);
$rows[$set->tsid]['title'] = check_plain($set->get_title());
if (isset($header['type'])) {
$rows[$set->tsid]['type'] = isset($info['title']) ? $info['title'] : t('Unknown');
}
$rows[$set->tsid]['items'] = ($items = $set->get_links()) ? theme('links', array('links' => $items)) : '';
$rows[$set->tsid] += array(
'created' => format_date($set->created, 'short'),
'changed' => format_date($set->changed, 'short'),
'operations' => '',
);
// Build a list of all the accessible operations for the current set.
$operations = $set->get_operations();
if (count($operations) > 1) {
// Render an unordered list of operations links.
$rows[$set->tsid]['operations'] = array(
'data' => array(
'#theme' => 'links__node_operations',
'#links' => $operations,
'#attributes' => array('class' => array('links', 'inline')),
),
);
}
elseif (!empty($operations)) {
// Render the first and only operation as a link.
$link = reset($operations);
$rows[$set->tsid]['operations'] = array(
'data' => array(
'#type' => 'link',
'#title' => $link['title'],
'#href' => $link['href'],
'#options' => array('query' => $link['query']),
),
);
}
}
$form['translations'] = array(
'#theme' => 'table',
'#header' => $header,
'#rows' => $rows,
'#empty' => t('No translation sets available.'),
);
return $form;
}