• Main Page
  • Related Pages
  • Modules
  • Classes
  • Files
  • File List
  • File Members

modules/node/views_handler_field_node.inc

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     // Don't add the additional fields to groupby
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 }

Generated on Sun Feb 26 2012 12:52:51 for Views by  doxygen 1.7.1