134 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			134 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
/**
 | 
						|
 * @file
 | 
						|
 * Views area handlers.
 | 
						|
 */
 | 
						|
 | 
						|
/**
 | 
						|
 * @defgroup views_area_handlers Views area handlers
 | 
						|
 * @{
 | 
						|
 * Handlers to tell Views what can display in header, footer
 | 
						|
 * and empty text in a view.
 | 
						|
 */
 | 
						|
 | 
						|
/**
 | 
						|
 * Base class for area handlers.
 | 
						|
 *
 | 
						|
 * @ingroup views_area_handlers
 | 
						|
 */
 | 
						|
class views_handler_area extends views_handler {
 | 
						|
 | 
						|
  /**
 | 
						|
   * Overrides views_handler::init().
 | 
						|
   *
 | 
						|
   * Make sure that no result area handlers are set to be shown when the result
 | 
						|
   * is empty.
 | 
						|
   */
 | 
						|
  function init(&$view, &$options) {
 | 
						|
    parent::init($view, $options);
 | 
						|
    if ($this->handler_type == 'empty') {
 | 
						|
      $this->options['empty'] = TRUE;
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  /**
 | 
						|
   * Get this field's label.
 | 
						|
   */
 | 
						|
  function label() {
 | 
						|
    if (!isset($this->options['label'])) {
 | 
						|
      return $this->ui_name();
 | 
						|
    }
 | 
						|
    return $this->options['label'];
 | 
						|
  }
 | 
						|
 | 
						|
  function option_definition() {
 | 
						|
    $options = parent::option_definition();
 | 
						|
 | 
						|
    $this->definition['field'] = !empty($this->definition['field']) ? $this->definition['field'] : '';
 | 
						|
    $label = !empty($this->definition['label']) ? $this->definition['label'] : $this->definition['field'];
 | 
						|
    $options['label'] = array('default' => $label, 'translatable' => TRUE);
 | 
						|
    $options['empty'] = array('default' => FALSE, 'bool' => TRUE);
 | 
						|
 | 
						|
    return $options;
 | 
						|
  }
 | 
						|
 | 
						|
  /**
 | 
						|
   * Provide extra data to the administration form
 | 
						|
   */
 | 
						|
  function admin_summary() {
 | 
						|
    return $this->label();
 | 
						|
  }
 | 
						|
 | 
						|
  /**
 | 
						|
   * Default options form that provides the label widget that all fields
 | 
						|
   * should have.
 | 
						|
   */
 | 
						|
  function options_form(&$form, &$form_state) {
 | 
						|
    parent::options_form($form, $form_state);
 | 
						|
    $form['label'] = array(
 | 
						|
      '#type' => 'textfield',
 | 
						|
      '#title' => t('Label'),
 | 
						|
      '#default_value' => isset($this->options['label']) ? $this->options['label'] : '',
 | 
						|
      '#description' => t('The label for this area that will be displayed only administratively.'),
 | 
						|
    );
 | 
						|
 | 
						|
    if ($form_state['type'] != 'empty') {
 | 
						|
      $form['empty'] = array(
 | 
						|
        '#type' => 'checkbox',
 | 
						|
        '#title' => t('Display even if view has no result'),
 | 
						|
        '#default_value' => isset($this->options['empty']) ? $this->options['empty'] : 0,
 | 
						|
      );
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  /**
 | 
						|
   * Don't run a query
 | 
						|
   */
 | 
						|
  function query() { }
 | 
						|
 | 
						|
  /**
 | 
						|
   * Render the area
 | 
						|
   */
 | 
						|
  function render($empty = FALSE) {
 | 
						|
    return '';
 | 
						|
  }
 | 
						|
 | 
						|
  /**
 | 
						|
   * Area handlers shouldn't have groupby.
 | 
						|
   */
 | 
						|
  function use_group_by() {
 | 
						|
    return FALSE;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * A special handler to take the place of missing or broken handlers.
 | 
						|
 *
 | 
						|
 * @ingroup views_area_handlers
 | 
						|
 */
 | 
						|
class views_handler_area_broken extends views_handler_area {
 | 
						|
  function ui_name($short = FALSE) {
 | 
						|
    return t('Broken/missing handler');
 | 
						|
  }
 | 
						|
 | 
						|
  function ensure_my_table() { /* No table to ensure! */ }
 | 
						|
  function query($group_by = FALSE) { /* No query to run */ }
 | 
						|
  function render($empty = FALSE) { return ''; }
 | 
						|
  function options_form(&$form, &$form_state) {
 | 
						|
    $form['markup'] = array(
 | 
						|
      '#prefix' => '<div class="form-item description">',
 | 
						|
      '#value' => t('The handler for this item is broken or missing and cannot be used. If a module provided the handler and was disabled, re-enabling the module may restore it. Otherwise, you should probably delete this item.'),
 | 
						|
    );
 | 
						|
  }
 | 
						|
 | 
						|
  /**
 | 
						|
   * Determine if the handler is considered 'broken'
 | 
						|
   */
 | 
						|
  function broken() { return TRUE; }
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * @}
 | 
						|
 */
 |