123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- <?php
- /**
- * @file
- * Contains the translator UI controller.
- */
- /**
- * Entity UI controller for the Translator Entity.
- */
- class TMGMTTranslatorUIController extends EntityDefaultUIController {
- /**
- * {@inheritdoc}
- */
- public function hook_menu() {
- $items = parent::hook_menu();
- $items[$this->path . '/add']['title'] = 'Add Translator';
- unset($items[$this->path . '/add']['title callback']);
- unset($items[$this->path . '/add']['title arguments']);
- if (!empty($this->entityInfo['exportable'])) {
- $items[$this->path . '/import']['title'] = 'Import Translator';
- unset($items[$this->path . '/import']['title callback']);
- unset($items[$this->path . '/import']['title arguments']);
- }
- return $items;
- }
- /**
- * {@inheritdoc}
- */
- public function overviewForm($form, &$form_state) {
- $form['translators']['#tree'] = TRUE;
- $form['translators']['#theme'] = 'tmgmt_ui_translator_overview_form';
- $form['translators']['#entity_info'] = $this->entityInfo;
- // Load all translator entities.
- $translators = tmgmt_translator_load_multiple(FALSE);
- foreach ($translators as $key => $translator) {
- $form['translators'][$key] = $this->overviewFormRow(array(), $form_state, $translator, $key);
- $form['translators'][$key]['#translator'] = $translator;
- }
- $form['actions']['#type'] = 'actions';
- $form['actions']['submit'] = array(
- '#type' => 'submit',
- '#value' => t('Save'),
- );
- return $form;
- }
- /**
- * {@inheritdoc}
- */
- public function overviewFormSubmit($form, &$form_state) {
- // Update image effect weights.
- if (!empty($form_state['values']['translators'])) {
- $translators = tmgmt_translator_load_multiple(array_keys($form_state['values']['translators']));
- foreach ($form_state['values']['translators'] as $key => $item) {
- if (isset($translators[$key])) {
- $translators[$key]->weight = $item['weight'];
- entity_save($this->entityType, $translators[$key]);
- }
- }
- }
- }
- /**
- * Helper method for building a row in the overview form.
- */
- protected function overviewFormRow($form, &$form_state, $entity, $id) {
- $form['#weight'] = isset($form_state['input']['translators']) ? $form_state['input']['translators'][$id]['weight'] : NULL;
- $form['label'] = array(
- '#theme' => 'tmgmt_ui_translator_overview_item',
- '#attached' => array('css' => array(drupal_get_path('module', 'tmgmt_ui') . '/css/tmgmt_ui.admin.css')),
- '#label' => $entity->label(),
- '#name' => !empty($this->entityInfo['exportable']) ? entity_id($this->entityType, $entity) : FALSE,
- '#url' => FALSE,
- '#description' => $entity->description,
- '#entity_type' => $this->entityType,
- );
- // Add a row for the exportable status.
- if (!empty($this->entityInfo['exportable'])) {
- $form['status'] = array(
- '#theme' => 'entity_status',
- '#status' => $entity->{$this->statusKey},
- );
- }
- $wrapper = entity_metadata_wrapper($this->entityType, $entity);
- // Add a column to show the translator plugin via the metadata wrapper.
- $form['plugin'] = array(
- '#markup' => $wrapper->plugin->label(),
- '#status' => $entity->{$this->statusKey},
- );
- $controller = $entity->getController();
- $form['configured'] = array(
- '#markup' => $controller->isAvailable($entity) ? t('Yes') : t('No'),
- );
- $form['weight'] = array(
- '#type' => 'weight',
- '#delta' => 30,
- '#default_value' => $entity->weight,
- );
- // Add operations depending on the status.
- if (entity_has_status($this->entityType, $entity, ENTITY_FIXED)) {
- $form['operations']['clone'] = array(
- '#type' => 'link',
- '#title' => t('clone'),
- '#href' => $this->path . '/manage/' . $id . '/clone',
- );
- }
- else {
- $form['operations']['edit'] = array(
- '#type' => 'link',
- '#title' => t('edit'),
- '#href' => $this->path . '/manage/' . $id,
- );
- if (!empty($this->entityInfo['exportable'])) {
- $form['operations']['clone'] = array(
- '#type' => 'link',
- '#title' => t('clone'),
- '#href' => $this->path . '/manage/' . $id . '/clone',
- );
- }
- if (empty($this->entityInfo['exportable']) || !entity_has_status($this->entityType, $entity, ENTITY_IN_CODE)) {
- $form['operations']['delete'] = array(
- '#type' => 'link',
- '#title' => t('delete'),
- '#href' => $this->path . '/manage/' . $id . '/delete',
- '#options' => array('query' => drupal_get_destination()),
- );
- }
- elseif (entity_has_status($this->entityType, $entity, ENTITY_OVERRIDDEN)) {
- $form['operations']['revert'] = array(
- '#type' => 'link',
- '#title' => t('revert'),
- '#href' => $this->path . '/manage/' . $id . '/revert',
- '#options' => array('query' => drupal_get_destination()),
- );
- }
- else {
- $row[] = '';
- }
- }
- if (!empty($this->entityInfo['exportable'])) {
- $form['operations']['export'] = array(
- '#type' => 'link',
- '#title' => t('export'),
- '#href' => $this->path . '/manage/' . $id . '/export',
- );
- }
- return $form;
- }
- /**
- * {@inheritdoc}
- */
- public function applyOperation($op, $entity) {
- if ($op == 'delete' && tmgmt_translator_busy($entity->name)) {
- drupal_set_message(t("The translator %translator could not be deleted because it is currently being used by at least one active translation job.", array('%translator' => $entity->label())), 'error');
- return FALSE;
- }
- return parent::applyOperation($op, $entity);
- }
- }
|