You are here

i18n_translation.admin.inc in Internationalization 7

Internationalization (i18n) module. Translation sets admin

File

i18n_translation/i18n_translation.admin.inc
View source
<?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;
}

Functions

Namesort descending Description
i18n_translation_admin_form Admin form
i18n_translation_admin_overview Overview page for translation sets