array( 'handler' => array( 'label' => t('Collapsible Links'), 'class' => 'FacetapiCollapsible', 'query types' => array('term', 'date'), ), ), ); } /** * Implements hook_theme_registry_alter(). */ function facetapi_collapsible_theme_registry_alter(&$theme_registry) { // FacetAPI Collapsible only needs to inject or wrap these theming functions with additional markup. // When replacing the theme funciton, we need to save the origial array and invoke the original theming // function in ours. This allows compatibility with other modules and themes that have existing overrides. foreach (array('facetapi_title', 'facetapi_link_inactive', 'facetapi_link_active') as $theme_function) { $theme_registry['facetapi_collapsible_' . $theme_function . '_original'] = $theme_registry[$theme_function]; $theme_registry[$theme_function]['function'] = 'facetapi_collapsible_' . $theme_function; } } /** * Implements theme_facetapi_link_title(). */ function facetapi_collapsible_facetapi_title($variables) { return theme('facetapi_collapsible_facetapi_title_original', $variables) . ''; } /** * Implements theme_facetapi_link_inactive(). */ function facetapi_collapsible_facetapi_link_inactive($variables) { return '
'. theme('facetapi_collapsible_facetapi_link_inactive_original', $variables) .'
'; } /** * Implements theme_facetapi_link_active(). */ function facetapi_collapsible_facetapi_link_active($variables) { return '
' . theme('facetapi_collapsible_facetapi_link_active_original', $variables) . '
'; } /** * Implements hook_block_view_alter(). */ function facetapi_collapsible_block_view_alter($data, $block) { if (isset($data['content']['#facet'])) { $settings = $data['content']['#settings']; if (is_object($settings) && isset($settings->settings) && $settings->settings['widget'] == 'collapsible') { facetapi_collapsible_static($block->delta); } } } /** * Function that manages a static array of the block deltas that contain * collapsible facets. */ function facetapi_collapsible_static($delta = NULL) { $facetapi_collapsible = &drupal_static(__FUNCTION__, array()); if ($delta) { // Add the given delta to our array of collapsible facets. $facetapi_collapsible[] = $delta; } return $facetapi_collapsible; } /** * Implements hook_preprocess_block(). */ function facetapi_collapsible_preprocess_block(&$variables) { $collapsible_facets = facetapi_collapsible_static(); if (in_array($variables['block']->delta, $collapsible_facets)) { $variables['classes_array'][] = 'facetapi-collapsible'; } }