Skip to content

Instantly share code, notes, and snippets.

@mkorostoff
Created May 11, 2012 14:47
Show Gist options
  • Save mkorostoff/2660221 to your computer and use it in GitHub Desktop.
Save mkorostoff/2660221 to your computer and use it in GitHub Desktop.
<?php
/**
* Preprocess and Process Functions SEE: http://drupal.org/node/254940#variables-processor
* 1. Rename each function and instance of "rsn_base" to match
* your subthemes name, e.g. if you name your theme "footheme" then the function
* name will be "footheme_preprocess_hook". Tip - you can search/replace
* on "rsn_base".
* 2. Uncomment the required function to use.
*/
/**
* Override or insert variables into the html templates.
*/
function rsn_base_preprocess_html(&$vars) {
// Load the media queries styles
// Remember to rename these files to match the names used here - they are
// in the CSS directory of your subtheme.
$media_queries_css = array(
'rsn_base.responsive.style.css',
'rsn_base.responsive.gpanels.css'
);
load_subtheme_media_queries($media_queries_css, 'rsn_base');
$vars['body_classes'] = implode(" ",$vars['classes_array']) . " uid-" . $vars['user']->uid . " " . implode(" ",$vars['user']->roles) . " " . implode(" ",arg());
/**
* Load IE specific stylesheets
* AT automates adding IE stylesheets, simply add to the array using
* the conditional comment as the key and the stylesheet name as the value.
*
* See our online help: http://adaptivethemes.com/documentation/working-with-internet-explorer
*
* For example to add a stylesheet for IE8 only use:
*
* 'IE 8' => 'ie-8.css',
*
* Your IE CSS file must be in the /css/ directory in your subtheme.
*/
/* -- Delete this line to add a conditional stylesheet for IE 7 or less.
$ie_files = array(
'lte IE 7' => 'ie-lte-7.css',
);
load_subtheme_ie_styles($ie_files, 'rsn_base');
// */
}
/* -- Delete this line if you want to use this function
function rsn_base_process_html(&$vars) {
}
// */
/**
* Override or insert variables into the page templates.
*/
/* -- Delete this line if you want to use these functions
function rsn_base_preprocess_page(&$vars) {
}
function rsn_base_process_page(&$vars) {
}
// */
/**
* Override or insert variables into the node templates.
*/
/* -- Delete this line if you want to use these functions
function rsn_base_preprocess_node(&$vars) {
}
function rsn_base_process_node(&$vars) {
}
// */
/**
* Override or insert variables into the comment templates.
*/
/* -- Delete this line if you want to use these functions
function rsn_base_preprocess_comment(&$vars) {
}
function rsn_base_process_comment(&$vars) {
}
// */
/**
* Override or insert variables into the block templates.
*/
/* -- Delete this line if you want to use these functions
function rsn_base_preprocess_block(&$vars) {
}
function rsn_base_process_block(&$vars) {
}
// */
/**
* Add the Style Schemes if enabled.
* NOTE: You MUST make changes in your subthemes theme-settings.php file
* also to enable Style Schemes.
*/
/* -- Delete this line if you want to enable style schemes.
// DONT TOUCH THIS STUFF...
function get_at_styles() {
$scheme = theme_get_setting('style_schemes');
if (!$scheme) {
$scheme = 'style-default.css';
}
if (isset($_COOKIE["atstyles"])) {
$scheme = $_COOKIE["atstyles"];
}
return $scheme;
}
if (theme_get_setting('style_enable_schemes') == 'on') {
$style = get_at_styles();
if ($style != 'none') {
drupal_add_css(path_to_theme() . '/css/schemes/' . $style, array(
'group' => CSS_THEME,
'preprocess' => TRUE,
)
);
}
}
// */
/**
* Theme override for theme_menu_link()
* Adds a unique ID class to all menu items.
*/
// function rsn_base_menu_link($variables) {
// $element = $variables['element'];
// static $item_id = 0;
// $element['#attributes']['class'][] = 'menu-item-custom-id' . (++$item_id);
// $sub_menu = $element['#below'] ? drupal_render($element['#below']) : '';
// $output = l($element['#title'], $element['#href'], $element['#localized_options']);
// return '<li' . drupal_attributes($element['#attributes']) . '>' . $output . $sub_menu . '</li>\n';
// }
/**
* Override the News Ticker pager
*/
function rsn_base_pager__rsn_news_ticker($variables) {
$tags = $variables['tags'];
$element = $variables['element'];
$parameters = $variables['parameters'];
$quantity = 5;
global $pager_page_array, $pager_total;
// Calculate various markers within this pager piece:
// Middle is used to "center" pages around the current page.
$pager_middle = ceil($quantity / 2);
// current is the page we are currently paged to
$pager_current = $pager_page_array[$element] + 1;
// first is the first page listed by this pager piece (re quantity)
$pager_first = $pager_current - $pager_middle + 1;
// last is the last page listed by this pager piece (re quantity)
$pager_last = $pager_current + $quantity - $pager_middle;
// max is the maximum page number
$pager_max = $pager_total[$element];
// End of marker calculations.
// Prepare for generation loop.
$i = $pager_first;
if ($pager_last > $pager_max) {
// Adjust "center" if at end of query.
$i = $i + ($pager_max - $pager_last);
$pager_last = $pager_max;
}
if (0 >= $i) {
// Adjust "center" if at start of query.
$pager_last = $pager_last + (1 - $i);
$i = 1;
}
// End of generation loop preparation.
$li_previous = theme('pager_previous', array('text' => (isset($tags[1]) ? $tags[1] : t('Previous')), 'element' => $element, 'interval' => 1, 'parameters' => $parameters));
$li_next = theme('pager_next', array('text' => (isset($tags[3]) ? $tags[3] : t('Next')), 'element' => $element, 'interval' => 1, 'parameters' => $parameters));
if (1 < $pager_total[$element]) {
if ($li_previous) {
$items[] = array(
'class' => array('pager-previous'),
'data' => $li_previous,
);
}
// When there is more than one page, create the pager list.
if ($i != $pager_max) {
// Now generate the actual pager piece.
$first_item = $i;
for (; $i <= $pager_last && $i <= $pager_max; $i++) {
if ($i < $pager_current) {
$class = array('pager-item');
if ($i == $first_item) {
$class[] = 'first-item';
}
$items[] = array(
'class' => $class,
'data' => theme('pager_previous', array('text' => $i, 'element' => $element, 'interval' => ($pager_current - $i), 'parameters' => $parameters)),
);
}
if ($i == $pager_current) {
$class = array('pager-item');
if ($i == $first_item) {
$class[] = 'first-item';
}
$items[] = array(
'class' => $class,
'data' => $i,
);
}
if ($i > $pager_current) {
$items[] = array(
'class' => array('pager-item'),
'data' => theme('pager_next', array('text' => $i, 'element' => $element, 'interval' => ($i - $pager_current), 'parameters' => $parameters)),
);
}
}
}
// End generation.
if ($li_next) {
$items[] = array(
'class' => array('pager-next'),
'data' => $li_next,
);
}
return '<h2 class="element-invisible">' . t('Pages') . '</h2>' . theme('item_list', array(
'items' => $items,
'attributes' => array('class' => array('pager')),
));
}
}
function rsn_base_preprocess_views_view(&$vars) {
if ('rsn_news_ticker' == $vars['view']->name) {
drupal_add_js(drupal_get_path('theme', 'rsn_base') . '/js/news-ticker-fix-header.js');
}
}
/**
* Returns HTML for a query pager.
*
* Menu callbacks that display paged query results should call theme('pager') to
* retrieve a pager control so that users can view other results. Format a list
* of nearby pages with additional query results.
*
* @param $variables
* An associative array containing:
* - tags: An array of labels for the controls in the pager.
* - element: An optional integer to distinguish between multiple pagers on
* one page.
* - parameters: An associative array of query string parameters to append to
* the pager links.
* - quantity: The number of pages in the list.
*
* @ingroup themeable
*/
function rsn_base_pager__rsn_video_listing($variables) {
$tags = $variables['tags'];
$element = $variables['element'];
$parameters = $variables['parameters'];
$quantity = $variables['quantity'];
global $pager_page_array, $pager_total;
// Calculate various markers within this pager piece:
// Middle is used to "center" pages around the current page.
$pager_middle = ceil($quantity / 2);
// current is the page we are currently paged to
$pager_current = $pager_page_array[$element] + 1;
// first is the first page listed by this pager piece (re quantity)
$pager_first = $pager_current - $pager_middle + 1;
// last is the last page listed by this pager piece (re quantity)
$pager_last = $pager_current + $quantity - $pager_middle;
// max is the maximum page number
$pager_max = $pager_total[$element];
// End of marker calculations.
// Prepare for generation loop.
$i = $pager_first;
if ($pager_last > $pager_max) {
// Adjust "center" if at end of query.
$i = $i + ($pager_max - $pager_last);
$pager_last = $pager_max;
}
if ($i <= 0) {
// Adjust "center" if at start of query.
$pager_last = $pager_last + (1 - $i);
$i = 1;
}
// End of generation loop preparation.
$li_previous = theme('pager_previous', array('text' => (isset($tags[1]) ? $tags[1] : t('‹ previous')), 'element' => $element, 'interval' => 1, 'parameters' => $parameters));
$li_next = theme('pager_next', array('text' => (isset($tags[3]) ? $tags[3] : t('next ›')), 'element' => $element, 'interval' => 1, 'parameters' => $parameters));
if ($pager_total[$element] > 1) {
$items[] = array(
'class' => array('pager-page'),
'data' => t('Page:'),
);
if ($li_previous) {
$items[] = array(
'class' => array('pager-previous'),
'data' => $li_previous,
);
} else {
$items[] = array(
'class' => array('pager-previous-disabled'),
'data' => '&nbsp;',
);
}
// When there is more than one page, create the pager list.
if ($i != $pager_max) {
// Now generate the actual pager piece.
$first_item = $i;
for (; $i <= $pager_last && $i <= $pager_max; $i++) {
if ($i < $pager_current) {
$class = array('pager-item');
if ($i == $first_item) {
$class[] = 'first-item';
}
$items[] = array(
'class' => $class,
'data' => theme('pager_previous', array('text' => $i, 'element' => $element, 'interval' => ($pager_current - $i), 'parameters' => $parameters)),
);
}
if ($i == $pager_current) {
$class = array('pager-item', 'pager-current');
if ($i == $first_item) {
$class[] = 'first-item';
}
$items[] = array(
'class' => $class,
'data' => $i,
);
}
if ($i > $pager_current) {
$items[] = array(
'class' => array('pager-item'),
'data' => theme('pager_next', array('text' => $i, 'element' => $element, 'interval' => ($i - $pager_current), 'parameters' => $parameters)),
);
}
}
}
// End generation.
if ($li_next) {
$items[] = array(
'class' => array('pager-next'),
'data' => $li_next,
);
} else {
$items[] = array(
'class' => array('pager-next-disabled'),
'data' => '&nbsp;',
);
}
return theme('item_list', array(
'items' => $items,
'attributes' => array('class' => array('pager')),
));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment