Go to the documentation of this file.00001 <?php
00014 class views_handler_field_node extends views_handler_field {
00015
00016 function init(&$view, &$options) {
00017 parent::init($view, $options);
00018
00019 if (!empty($this->options['link_to_node'])) {
00020 $this->additional_fields['nid'] = array('table' => 'node', 'field' => 'nid');
00021 if (module_exists('translation')) {
00022 $this->additional_fields['language'] = array('table' => 'node', 'field' => 'language');
00023 }
00024 }
00025 }
00026
00027 function option_definition() {
00028 $options = parent::option_definition();
00029 $options['link_to_node'] = array('default' => isset($this->definition['link_to_node default']) ? $this->definition['link_to_node default'] : FALSE);
00030 return $options;
00031 }
00032
00036 function options_form(&$form, &$form_state) {
00037 $form['link_to_node'] = array(
00038 '#title' => t('Link this field to the original piece of content'),
00039 '#description' => t("Enable to override this field's links."),
00040 '#type' => 'checkbox',
00041 '#default_value' => !empty($this->options['link_to_node']),
00042 );
00043
00044 parent::options_form($form, $form_state);
00045 }
00046
00052 function render_link($data, $values) {
00053 if (!empty($this->options['link_to_node']) && !empty($this->additional_fields['nid'])) {
00054 if ($data !== NULL && $data !== '') {
00055 $this->options['alter']['make_link'] = TRUE;
00056 $this->options['alter']['path'] = "node/" . $this->get_value($values, 'nid');
00057 if (isset($this->aliases['language'])) {
00058 $languages = language_list();
00059 $language = $this->get_value($values, 'language');
00060 if (isset($languages[$language])) {
00061 $this->options['alter']['language'] = $languages[$language];
00062 }
00063 else {
00064 unset($this->options['alter']['language']);
00065 }
00066 }
00067 }
00068 else {
00069 $this->options['alter']['make_link'] = FALSE;
00070 }
00071 }
00072 return $data;
00073 }
00074
00075 function render($values) {
00076 $value = $this->get_value($values);
00077 return $this->render_link($this->sanitize_value($value), $values);
00078 }
00079 }