00001 <?php 00011 class views_handler_field_node_revision extends views_handler_field_node { 00012 function init(&$view, &$options) { 00013 parent::init($view, $options); 00014 if (!empty($this->options['link_to_node_revision'])) { 00015 $this->additional_fields['vid'] = 'vid'; 00016 $this->additional_fields['nid'] = 'nid'; 00017 if (module_exists('translation')) { 00018 $this->additional_fields['language'] = array('table' => 'node', 'field' => 'language'); 00019 } 00020 } 00021 } 00022 function option_definition() { 00023 $options = parent::option_definition(); 00024 $options['link_to_node_revision'] = array('default' => FALSE); 00025 return $options; 00026 } 00027 00031 function options_form(&$form, &$form_state) { 00032 $form['link_to_node_revision'] = array( 00033 '#title' => t('Link this field to its content revision'), 00034 '#description' => t('This will override any other link you have set.'), 00035 '#type' => 'checkbox', 00036 '#default_value' => !empty($this->options['link_to_node_revision']), 00037 ); 00038 parent::options_form($form, $form_state); 00039 } 00040 00046 function render_link($data, $values) { 00047 if (!empty($this->options['link_to_node_revision']) && $data !== NULL && $data !== '') { 00048 $this->options['alter']['make_link'] = TRUE; 00049 $nid = $this->get_value($values, 'nid'); 00050 $vid = $this->get_value($values, 'vid'); 00051 $this->options['alter']['path'] = "node/" . $nid . '/revisions/' . $vid . '/view'; 00052 if (module_exists('translation')) { 00053 $language = $this->get_value($values, 'language'); 00054 $languages = language_list(); 00055 if (isset($languages[$language])) { 00056 $this->options['alter']['language'] = $languages[$language]; 00057 } 00058 } 00059 } 00060 else { 00061 return parent::render_link($data, $values); 00062 } 00063 return $data; 00064 } 00065 }