Projet

Général

Profil

Paste
Télécharger (1,61 ko) Statistiques
| Branche: | Révision:

root / drupal7 / sites / all / modules / views / modules / translation / views_handler_field_node_translation_link.inc @ 4003efde

1
<?php
2

    
3
/**
4
 * @file
5
 * Definition of views_handler_field_node_translation_link.
6
 */
7

    
8
/**
9
 * Field handler to present a link to the node.
10
 *
11
 * @ingroup views_field_handlers
12
 */
13
class views_handler_field_node_translation_link extends views_handler_field {
14

    
15
  /**
16
   * {@inheritdoc}
17
   */
18
  public function construct() {
19
    parent::construct();
20
    $this->additional_fields['nid'] = 'nid';
21
    $this->additional_fields['tnid'] = 'tnid';
22
    $this->additional_fields['title'] = 'title';
23
    $this->additional_fields['language'] = 'language';
24
  }
25

    
26
  /**
27
   * {@inheritdoc}
28
   */
29
  public function query() {
30
    $this->ensure_my_table();
31
    $this->add_additional_fields();
32
  }
33

    
34
  /**
35
   * {@inheritdoc}
36
   */
37
  public function render($values) {
38
    $value = $this->get_value($values, 'tnid');
39
    return $this->render_link($this->sanitize_value($value), $values);
40
  }
41

    
42
  /**
43
   * {@inheritdoc}
44
   */
45
  public function render_link($data, $values) {
46
    global $language;
47

    
48
    $tnid = $this->get_value($values, 'tnid');
49
    // Only load translations if the node isn't in the current language.
50
    if ($this->get_value($values, 'language') != $language->language) {
51
      $translations = translation_node_get_translations($tnid);
52
      if (isset($translations[$language->language])) {
53
        $values->{$this->aliases['nid']} = $translations[$language->language]->nid;
54
        $values->{$this->aliases['title']} = $translations[$language->language]->title;
55
      }
56
    }
57

    
58
    $this->options['alter']['make_link'] = TRUE;
59
    $this->options['alter']['path'] = "node/" . $this->get_value($values, 'nid');
60
    return $this->get_value($values, 'title');
61
  }
62

    
63
}