facetapi_collapsible.module in Facet API Collapsible 7
File
facetapi_collapsible.module
View source
<?php
function facetapi_collapsible_facetapi_widgets() {
return array(
'collapsible' => array(
'handler' => array(
'label' => t('Collapsible Links'),
'class' => 'FacetapiCollapsible',
'query types' => array(
'term',
'date',
),
),
),
);
}
function facetapi_collapsible_theme_registry_alter(&$theme_registry) {
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;
}
}
function facetapi_collapsible_facetapi_title($variables) {
return theme('facetapi_collapsible_facetapi_title_original', $variables) . '<span class="toggle"></span>';
}
function facetapi_collapsible_facetapi_link_inactive($variables) {
return '<div class="facetapi-facet facetapi-inactive">' . theme('facetapi_collapsible_facetapi_link_inactive_original', $variables) . '</div>';
}
function facetapi_collapsible_facetapi_link_active($variables) {
return '<div class="facetapi-facet facetapi-active">' . theme('facetapi_collapsible_facetapi_link_active_original', $variables) . '</div>';
}
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 facetapi_collapsible_static($delta = NULL) {
$facetapi_collapsible =& drupal_static(__FUNCTION__, array());
if ($delta) {
$facetapi_collapsible[] = $delta;
}
return $facetapi_collapsible;
}
function facetapi_collapsible_preprocess_block(&$variables) {
$collapsible_facets = facetapi_collapsible_static();
if (in_array($variables['block']->delta, $collapsible_facets)) {
$variables['classes_array'][] = 'facetapi-collapsible';
}
}