123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- <?php
- /**
- * @file
- * The taxonomy specific translation functions and hook implementations.
- */
- /**
- * Returns whether the given taxonomy vocabulary has support for translations.
- *
- * @return bool
- * TRUE if translation is enabled, FALSE otherwise.
- */
- function entity_translation_taxonomy_term_enabled_vocabulary($vocabulary_name) {
- $info = variable_get('entity_translation_taxonomy', array());
- return !empty($info[$vocabulary_name]);
- }
- /**
- * Taxonomy-term-specific menu alterations.
- */
- function entity_translation_taxonomy_term_menu_alter(&$items, $backup) {
- if (isset($backup['taxonomy_term'])) {
- $item = $backup['taxonomy_term'];
- // Preserve the menu router item defined by other modules.
- $callback['page callback'] = $item['page callback'];
- $callback['file'] = $item['file'];
- $callback['module'] = $item['module'];
- $access_arguments = array_merge(array(2, $item['access callback']), $item['access arguments']);
- $page_arguments = array_merge(array('taxonomy_term', 2, $callback), $item['page arguments']);
- }
- else {
- $access_arguments = array(2);
- $page_arguments = array('taxonomy_term', 2);
- }
- $items['taxonomy/term/%taxonomy_term/translate']['page callback'] = 'entity_translation_overview';
- $items['taxonomy/term/%taxonomy_term/translate']['page arguments'] = $page_arguments;
- $items['taxonomy/term/%taxonomy_term/translate']['access arguments'] = $access_arguments;
- $items['taxonomy/term/%taxonomy_term/translate']['access callback'] = 'entity_translation_taxonomy_term_tab_access';
- $items['taxonomy/term/%taxonomy_term/translate']['file'] = 'entity_translation.admin.inc';
- $items['taxonomy/term/%taxonomy_term/translate']['module'] = 'entity_translation';
- }
- /**
- * Taxonomy term specific access callback.
- */
- function entity_translation_taxonomy_term_tab_access() {
- $args = func_get_args();
- $term = array_shift($args);
- if (entity_translation_enabled('taxonomy_term', $term)) {
- return entity_translation_tab_access('taxonomy_term', $term);
- }
- else {
- $function = array_shift($args);
- return $function ? call_user_func_array($function, $args) : FALSE;
- }
- }
- /**
- * Implements hook_form_FORM_ID_alter()
- */
- function entity_translation_form_taxonomy_form_vocabulary_alter(&$form, &$form_state) {
- if (entity_translation_enabled('taxonomy_term')) {
- $name = $form_state['vocabulary']->machine_name;
- if (isset($form['i18n_translation']['i18n_mode'])) {
- $args = array('!url' => url('admin/config/regional/entity_translation'));
- $form['i18n_translation']['i18n_mode']['#options'][I18N_MODE_ENTITY_TRANSLATION] = t('Field translation. Term fields will be translated through the <a href="!url">Entity translation</a> module.', $args);
- if (entity_translation_enabled_bundle('taxonomy_term', $name)) {
- $form['i18n_translation']['i18n_mode']['#default_value'] = I18N_MODE_ENTITY_TRANSLATION;
- }
- }
- else {
- $form['entity_translation_taxonomy'] = array(
- '#title' => t('Enable field translation'),
- '#type' => 'checkbox',
- '#prefix' => '<label>' . t('Translation') . '</label>',
- '#default_value' => entity_translation_enabled('taxonomy_term', $name),
- );
- }
- $form['#submit'][] = 'entity_translation_form_taxonomy_form_vocabulary_submit';
- }
- }
- /**
- * Submit handler for the taxonomy vocabulary form.
- */
- function entity_translation_form_taxonomy_form_vocabulary_submit($form, &$form_state) {
- if (!empty($form_state['values']['i18n_mode']) && $form_state['values']['i18n_mode'] == I18N_MODE_ENTITY_TRANSLATION) {
- $form_state['values']['entity_translation_taxonomy'] = TRUE;
- }
- $info = variable_get('entity_translation_taxonomy', array());
- $info[$form_state['vocabulary']->machine_name] = !empty($form_state['values']['entity_translation_taxonomy']);
- variable_set('entity_translation_taxonomy', $info);
- }
|