You are here

class CurrentSearchItemActive in Facet API 6.3

Same name and namespace in other branches
  1. 7.2 contrib/current_search/plugins/current_search/item_active.inc \CurrentSearchItemActive
  2. 7 contrib/current_search/plugins/current_search/item_active.inc \CurrentSearchItemActive

Extension of CurrentSearchItem that displays all active items.

Hierarchy

Expanded class hierarchy of CurrentSearchItemActive

1 string reference to 'CurrentSearchItemActive'
current_search_current_search_items in contrib/current_search/current_search.module
Implements hook_current_search_items().

File

contrib/current_search/plugins/current_search/item_active.inc, line 11
Displays all active items.

View source
class CurrentSearchItemActive extends CurrentSearchItem {

  /**
   * Implements CurrentSearchItem::execute().
   */
  public function execute(FacetapiAdapter $adapter) {
    $items = array();

    // Makes sure facet builds are initialized.
    $adapter
      ->processFacets();

    // Adds the keywords if any were passed.
    $keys = $adapter
      ->getSearchKeys();
    if ($this->settings['keys'] && $keys) {
      $items[] = theme('current_search_keys', array(
        'keys' => $keys,
        'adapter' => $adapter,
      ));
    }

    // Initializes links attributes, adds rel="nofollow" if configured.
    $attributes = $this->settings['nofollow'] ? array(
      'rel' => 'nofollow',
    ) : array();
    $attributes += array(
      'class' => '',
    );

    // Gets the translated pattern with token replacements in tact.
    $pattern = $this
      ->translate('pattern', $this->settings['pattern']);

    // Adds active facets to the current search block.
    foreach ($adapter
      ->getAllActiveItems() as $item) {

      // Adds adapter to the active item for token replacement.
      $item['adapter'] = $adapter;

      // Builds variables to pass to theme function.
      $variables = array(
        'text' => token_replace($pattern, 'facetapi_active', $item),
        'path' => $this
          ->getFacetPath($item, $adapter),
        'options' => array(
          'attributes' => $attributes,
          'html' => TRUE,
          'query' => $this
            ->getQueryString($item, $adapter),
        ),
      );

      // Renders the active link.
      $items[] = theme('facetapi_link_active', $variables);
    }

    // If there are items, return the render array.
    if ($items) {
      $classes = $this->settings['css'] ? current_search_get_classes($this->settings['classes']) : '';
      return array(
        '#theme' => 'item_list',
        '#items' => $items,
        '#attributes' => array(
          'class' => $classes,
        ),
      );
    }
  }

  /**
   * Implements CurrentSearchItem::settingsForm().
   */
  public function settingsForm(&$form, &$form_state) {
    $form['pattern'] = array(
      '#type' => 'textfield',
      '#title' => t('Pattern'),
      '#default_value' => $this->settings['pattern'],
      '#description' => t('The pattern used to render active items in the list. Token replacement patterns are allowed.'),
      '#maxlength' => 255,
    );
    $form['keys'] = array(
      '#type' => 'checkbox',
      '#title' => t('Append the keywords passed by the user to the list'),
      '#default_value' => $this->settings['keys'],
    );
    $form['css'] = array(
      '#type' => 'checkbox',
      '#title' => t('Add CSS classes to wrapper element'),
      '#default_value' => $this->settings['css'],
    );
    $form['classes'] = array(
      '#type' => 'textfield',
      '#title' => t('CSS classes'),
      '#default_value' => $this->settings['classes'],
      '#description' => t('A comma separated list of CSS classes.'),
      '#maxlength' => 128,
      '#states' => array(
        'visible' => array(
          ':input[name="plugin_settings[' . $this->name . '][css]"]' => array(
            'checked' => TRUE,
          ),
        ),
      ),
    );
    $form['nofollow'] = array(
      '#type' => 'checkbox',
      '#title' => t('Prevent crawlers from following active item links'),
      '#default_value' => $this->settings['nofollow'],
      '#description' => t('Add the <code>rel="nofollow"</code> attribute to active item links to maximize SEO by preventing crawlers from indexing duplicate content and getting stuck in loops.'),
    );

    // Adds token tree.
    $form['tokens'] = $this
      ->getTokenTree(array(
      'facetapi_active',
    ));
  }

  /**
   * Implements CurrentSearchItem::getDefaultSettings().
   */
  public function getDefaultSettings() {
    return array(
      'pattern' => '[active-value]',
      'keys' => FALSE,
      'css' => FALSE,
      'classes' => '',
      'nofollow' => 1,
    );
  }

}

Members

Namesort descending Modifiers Type Description Overrides
CurrentSearchItem::$configName protected property The machine readable name of the current search block configuration.
CurrentSearchItem::$itemValues protected property An array keyed by item position to its value and all its children.
CurrentSearchItem::$name protected property The machine readable name of the item this instance is associated with.
CurrentSearchItem::$settings protected property An array of facet settings.
CurrentSearchItem::getFacetPath public function Helper function that returns a facet's path.
CurrentSearchItem::getItemValues public function Helper function that returns the item's value and its children.
CurrentSearchItem::getQueryString public function Helper function that returns a facet's query string.
CurrentSearchItem::getTokenTree public function Returns the token tree element.
CurrentSearchItem::translate public function Helper function for translating strings.
CurrentSearchItem::wrapperDefaults public function Returns defaults for "wrapper HTML" elements.
CurrentSearchItem::wrapperForm public function Returns "wrapper HTML" form elements.
CurrentSearchItem::__construct public function Constructs a CurrentSearchItem object.
CurrentSearchItemActive::execute public function Implements CurrentSearchItem::execute(). Overrides CurrentSearchItem::execute
CurrentSearchItemActive::getDefaultSettings public function Implements CurrentSearchItem::getDefaultSettings(). Overrides CurrentSearchItem::getDefaultSettings
CurrentSearchItemActive::settingsForm public function Implements CurrentSearchItem::settingsForm(). Overrides CurrentSearchItem::settingsForm