views_handler_field_node_translation_link.inc

  1. 3.x modules/translation/views_handler_field_node_translation_link.inc
  2. 2.x modules/translation/views_handler_field_node_translation_link.inc

Definition of views_handler_field_node_translation_link.

File

modules/translation/views_handler_field_node_translation_link.inc
View source
  1. <?php
  2. /**
  3. * @file
  4. * Definition of views_handler_field_node_translation_link.
  5. */
  6. /**
  7. * Field handler to present a link to the node.
  8. *
  9. * @ingroup views_field_handlers
  10. */
  11. class views_handler_field_node_translation_link extends views_handler_field {
  12. function construct() {
  13. parent::construct();
  14. $this->additional_fields['nid'] = 'nid';
  15. $this->additional_fields['tnid'] = 'tnid';
  16. $this->additional_fields['title'] = 'title';
  17. $this->additional_fields['language'] = 'language';
  18. }
  19. function query() {
  20. $this->ensure_my_table();
  21. $this->add_additional_fields();
  22. }
  23. function render($values) {
  24. $value = $this->get_value($values, 'tnid');
  25. return $this->render_link($this->sanitize_value($value), $values);
  26. }
  27. function render_link($data, $values) {
  28. global $language;
  29. $tnid = $this->get_value($values, 'tnid');
  30. // Only load translations if the node isn't in the current language.
  31. if ($this->get_value($values, 'language') != $language->language) {
  32. $translations = translation_node_get_translations($tnid);
  33. if (isset($translations[$language->language])) {
  34. $values->{$this->aliases['nid']} = $translations[$language->language]->nid;
  35. $values->{$this->aliases['title']} = $translations[$language->language]->title;
  36. }
  37. }
  38. $this->options['alter']['make_link'] = TRUE;
  39. $this->options['alter']['path'] = "node/" . $this->get_value($values, 'nid');
  40. return $this->get_value($values, 'title');
  41. }
  42. }