// Custom page actions
;(function($){
'use strict';
window.sandboxTheme = function(){
var $body = $('body'),
eventNames = ['resize', 'scroll', 'ready', 'load', 'sticky'],
readyStates = ['interactive', 'complete'],
trigger_event = function(){
var feature,
featureName,
eventName = typeof arguments[0] !== 'undefined' ? arguments[0] : null;
if ( eventName && $.inArray(eventName, eventNames) !== -1 ) {
// Trigger all features
for ( featureName in sandboxTheme.features ) {
if ( sandboxTheme.features.hasOwnProperty(featureName) ) {
if ( sandboxTheme.info['feature-' + featureName] ) {
feature = sandboxTheme.features[featureName];
if ( feature.hasOwnProperty(eventName) ) {
feature[eventName]();
}
}
}
}
}
},
ready_events_register = function(){
trigger_event('ready');
$(window).on('scroll', function(){
trigger_event('scroll');
});
$(window).on('debouncedresize', function(){
trigger_event('resize');
});
},
setup = function setup(){
var featureName,
feature,
featureOptions,
dataName,
dataValue,
data = arguments[0];
sandboxTheme.info = {};
sandboxTheme.page = {};
if ( $.isPlainObject(data) ) {
for ( dataName in data ) {
if ( data.hasOwnProperty(dataName) ) {
dataValue = dataName === 'id' ? parseInt(data[dataName]) : data[dataName];
if ( dataName !== 'info') {
sandboxTheme.page[dataName] = dataValue;
}
}
}
if ( data.hasOwnProperty('info') ) {
for ( dataName in data.info ) {
if ( data.info.hasOwnProperty(dataName) ) {
sandboxTheme.info[dataName] = data.info[dataName];
}
}
}
}
$.log(data);
// Loop through all features to set all neccessary data
for ( featureName in sandboxTheme.features ) {
if ( sandboxTheme.features.hasOwnProperty(featureName) ) {
feature = sandboxTheme.features[featureName];
// Make a copy of merged page feature options and feature options
// jQuery.extend() will take care for a boolean value of options.page.features[featureName]
featureOptions = $.extend(true, {}, feature.options || {});
// Merge the feature with common feature functions, options and info
$.extend(true, feature, {
options: featureOptions,
info: {
name: featureName,
/**
* Lookup for a hash fragment that starts with the features name
* false if no match is found
*/
hash: window.location.hash.length > 0 && window.location.hash.match('^#' + featureName) ? window.location.hash.replace('#' + featureName + '-', '') : false,
}
});
sandboxTheme.info['feature-' + featureName] = Boolean(feature.setup());
}
}
// Execute events
if ( $.inArray(document.readyState, readyStates) !== -1 ) {
ready_events_register();
} else {
$(document).on('DOMContentLoaded readyStates', function(){
ready_events_register();
});
}
$(window).on('load', function(){
trigger_event('load');
});
};
return {
init: function init(){
setup(arguments[0] || null);
},
$body: $body,
is_page: function is_page(){
var id = typeof arguments[0] !== 'undefined' ? parseInt(arguments[0]) : null;
if ( id ) {
return id === sandboxTheme.page.id;
} else {
return sandboxTheme.info.is_page;
}
},
get_page: function get_page(){
var property = typeof arguments[0] === 'string' ? arguments[0] : null;
if ( property ) {
if ( sandboxTheme.page.hasOwnProperty(property) ) {
return sandboxTheme.page[property];
} else {
return 'ERROR: no page property called "' + property + '"';
}
} else {
return sandboxTheme.page;
}
},
trigger: function trigger(eventName){
var eventName = typeof arguments[0] !== 'undefined' ? arguments[0] : null;
if ( eventName && $.inArray(eventName, eventNames) !== -1 ) {
trigger_event(eventName);
}
}
};
}();
sandboxTheme.features = {
/**
* Scrolled
* ========
* Controlls a className to be set, when the page has been scrolled
* Any layout based on this behaviour is at style.css
*/
scrolled: {
info: {
isScrolled: false
},
scroll: function scroll(){
if (this.$window.scrollTop() > 100){
if ( !this.info.isScrolled ) {
this.info.isScrolled = true;
sandboxTheme.$body.addClass(this.info.name);
}
} else {
if ( this.info.isScrolled ) {
this.info.isScrolled = false;
sandboxTheme.$body.removeClass(this.info.name);
}
}
},
ready: function ready(){
var scrollTop = 0;
this.$window = $(window);
this.$target = window.location.hash.length > 0 ? $(window.location.hash) : false;
if ( this.$target && this.$target.length > 0 ) {
scrollTop = this.$target.offset().top;
}
$('html, body').scrollTop(scrollTop);
this.scroll();
},
setup: function setup(){
var isSetup = true; //sandboxTheme.info.is_front_page || sandboxTheme.info.is_home || sandboxTheme.info.is_archive;
return isSetup;
}
},
/**
* Forms support
* =============
*/
forms: {
options: {
selectors: {
form: '.wpcf7-form',
form_container: '.content, .textwidget',
inputs: '.inputs, .textarea',
input_container: 'p',
label: 'label',
input: 'input'
},
classNames: {
focus: 'focus',
valued: 'valued',
},
},
events: function events(){
var selectors = this.options.selectors,
classNames = this.options.classNames;
this.$forms.each(function(index){
var $form = $(this),
$inputs = $form.find(selectors.input);
$inputs.on('focusin', function(){
$(this).parents(selectors.input_container).addClass(classNames.focus);
});
$inputs.on('focusout', function(){
var $input = $(this),
$input_container = $input.parents(selectors.input_container).first();
$input_container.removeClass(classNames.focus);
if ( $input.val() === '' ) {
if ( $input_container.is('.' + classNames.valued) ) {
$input_container.removeClass(classNames.valued);
}
} else if ( !$input_container.is('.' + classNames.valued) ) {
$input_container.addClass(classNames.valued);
}
});
$form.on('submit', function(){
$inputs.each(function(index){
$(this).parents(selectors.input_container).first().removeClass(classNames.valued);
});
});
});
},
ready: function ready(){
var selectors = this.options.selectors;
this.$forms = $(selectors.form);
this.events();
},
setup: function setup(){
return true;
}
},
/**
* Back to top
* ===========
*/
toTop: {
options: {
selectors: {
toTop: '.to-top'
}
},
events: function events(){
$(this.options.selectors.toTop).on('click', function(event){
$.mPageScroll2id('scrollTo', this.hash);
event.preventDefault();
});
},
ready: function ready(){
this.events();
},
setup: function setup(){
return true;
}
},
/**
* Offpage side menu with toggle button
* ====================================
* controls the behaviour of the mobile menu
* Visible on: Viewport lower then 987px
* Look at CSS for Layout
*/
sideMenu: {
options: {
outsideOff: true,
selectors: {
container:'#site-actions',
site_menu: '#site-menu > .inner',
source: '#site-menu .menu > li',
blackout: 'body > .blackout',
additional_content: '.header-bar',
logo: '#site-logo',
additional_items: '.add-to-sideMenu',
has_sub_menu: '.menu-item-has-children',
current_item: '.current-menu-item',
current_item_parent: '.current-menu-parent',
current_item_parents: '.current-menu-ancestor',
main: '#main'
},
classNames: {
toggler: 'toggle',
active: 'active',
visible: 'visible',
menu: 'menu',
sub_menu: 'sub-menu',
searcher: 'search',
additional: 'additional',
parentLink: 'sub-menu-parent-link'
}
},
templates:{
toggler: '',
// Animated CSS Bars like svg rect elements
icon: '
',
},
info: {},
toggle_sub_menu: function toggle_sub_menu($item){
var active_class = this.options.classNames.toggler + '-' + this.options.classNames.active,
$sub_menu_parent = $item.parent(),
$active_sub_menu_parent = this.$has_sub_menu.filter('.' + active_class);
if ( $active_sub_menu_parent.length > 0 ) {
$active_sub_menu_parent.removeClass(active_class);
$active_sub_menu_parent.children('ul').slideUp(250);
}
if ( !$sub_menu_parent.is($active_sub_menu_parent) ) {
$sub_menu_parent.addClass(active_class);
$sub_menu_parent.children('ul').slideDown(250)
}
},
events: function events(){
var info = this.info,
classNames = this.options.classNames,
selectors = this.options.selectors,
$toggler = this.$toggler,
$sideMenu = this.$sideMenu,
sideMenu = this;
// Toggle menu Off/On Page with toggler
this.$toggler.on('click', function(event){
if ( info.isVisible ) {
$toggler.removeClass(classNames.active);
$sideMenu.removeClass(classNames.visible);
sandboxTheme.$body.removeClass(info.name + '-' + classNames.visible);
info.isVisible = false;
} else {
$toggler.addClass(classNames.active);
$sideMenu.addClass(classNames.visible).find('a').eq(0).trigger('focus');
sandboxTheme.$body.addClass(info.name + '-' + classNames.visible);
info.isVisible = true;
}
event.preventDefault();
});
// Toggle sub_menu Display
this.$has_sub_menu.children('a').on('click', function click(event){
sideMenu.toggle_sub_menu($(this));
event.preventDefault();
});
// Toggle menu Off/On Page with Outside Click
if ( this.options.outsideOff === true ) {
this.$blackout.on('click', function(){
$toggler.trigger('click').trigger('focus');
});
}
},
ready: function ready(){
var options = this.options,
info = this.info,
templates = this.templates,
classNames = options.classNames,
selectors = options.selectors,
sideMenu = this;
this.$container = $(selectors.container);
this.$site_menu = $(selectors.site_menu);
// Get sources
this.$logo = $(selectors.logo).clone().removeAttr('id');
this.$additional_content = $(selectors.additional_content).clone().addClass(classNames.additional).removeAttr('id');
this.$source = $(selectors.source).clone();
// include sources to $sideMenu
this.$source.appendTo(this.$container).wrapAll('').wrapAll('');
// Menus
this.$sideMenu = this.$source.parents('#' + info.name);
this.$has_sub_menu = this.$sideMenu.find(selectors.has_sub_menu);
this.$has_sub_menu.each(function(index){
var $sub_menu_parent = $(this),
$sub_menu = $sub_menu_parent.children('ul');
if ( $sub_menu_parent.is(selectors.current_item_parents) ) {
$sub_menu_parent.addClass(classNames.toggler + '-' + classNames.active)
sideMenu.$active_sub_menu_parent = $sub_menu_parent;
} else {
$sub_menu.hide();
}
$sub_menu.prepend($('').prepend($sub_menu.prev('a').clone()))
});
this.$logo.appendTo(this.$sideMenu);
this.$additional_content.appendTo(this.$sideMenu);
// Interactions
this.$toggler = $(templates.toggler).attr('href', '#' + info.name).attr('id', info.name + '-' + classNames.toggler).addClass(info.name + ' ' + classNames.toggler);
this.$toggler.html(templates.icon);
this.$toggler.appendTo(this.$site_menu);
this.$blackout = $(selectors.blackout);
this.events();
//
sandboxTheme.$body.addClass(info.name + '-' + classNames.active);
},
setup: function setup(){
this.info.isVisible = false;
return true;
}
},
/**
* Nicer comments form
* ===================
*/
comments: {
options: {
offset: 70,
selectors: {
comments: '#comments',
respond: '#respond',
commentForm: '#commentform',
comment_field: '#comment',
trigger: '.comment-reply-title',
replytocom: '.comment-form-replytocom',
need_login: '.need-login',
}
},
info: {
isTriggered: false
},
events: function events(){
var $trigger = this.$trigger,
$commentForm = this.$commentForm,
$comment_field = this.$comment_field,
$respond = this.$respond,
offset = this.options.offset,
info = this.info;
$trigger.on('click.' + info.name, function(event){
if ( !info.isTriggered ) {
$('body').addClass(info.name + '-visible');
$commentForm.trigger('focusin.' + info.name).slideDown(600, 'swing');
info.isTriggered = true;
} else {
$('body').removeClass(info.name + '-visible');
$commentForm.trigger('blur.' + info.name).slideUp(600, 'swing');
info.isTriggered = false;
}
event.preventDefault();
});
if ( !this.$comments.is(this.options.selectors.replytocom) ){
$commentForm.on('submit', function(){
if ( $comment_field.val() === '' ) {
$comment_field.val('Ohne Begründung');
}
});
}
},
resize: function resize(){},
ready: function ready(){
var selectors = this.options.selectors;
this.$comments = $(selectors.comments);
this.$respond = $(selectors.respond);
this.$commentForm = $(selectors.commentForm).hide();
this.$comment_field = $(selectors.comment_field);
this.$trigger = this.$respond.find(selectors.trigger).not(selectors.need_login);
this.events();
if ( window.location.hash === selectors.respond ) {
this.$trigger.trigger('click');
}
},
setup: function setup(){
return sandboxTheme.info.comments_open && sandboxTheme.info.is_user_logged_in;
}
},
/**
* accordeon
* =========
*/
accordeon: {
options: {
speed: 300, // {number} Speed of the slideUp/Down animation
initOpen: 1, // {number} initial accordion to show on page load, 0 = all accordions are closed!
scrollToInitOpen: true, // {boolean} scroll to the open item on init? Only works when initShow is set or a hash opens an item.
scrollToInitOpenOffset: 60, // {number} calulate an extra offset when jumpToInitOpen is true (eg. use with fixed header)
selectors: { // select DOM elements
container: '#content > *', // where to look at accordions
title: '.title',
},
classNames: { // Class names will be mixed with the name space "accordion"
heading: 'heading', // {string} Accordion heading class
trigger: 'trigger', // {string} Accordion open/close trigger class
content: 'content', // {string} Accordion content class
no: 'no', // {string} Accordion leave out class
opened: 'opened', // {string} Accordion is opened
closed: 'closed', // {string} Accordion is closed
enabled: 'enabled',
},
},
templates: {
div: '',
link: ''
},
/**
* Store any dynamic information about your feature here.
*
* @usage
* Use it like the Modernizr object:
*
* if ( this.info.myInfo ) {
* // do stuff
* }
*
* var myInfo = this.info.myInfo
*/
info: {
/**
* Index/Count of the accordion items
*
* We increase to 1 before the first accordion is markuped for good readabilty.
* Always remeber that the first element of an array has an index of 0!
*/
index: 1
},
events: function events(){
var options = this.options,
selectors = options.selectors,
classNames = options.classNames,
info = this.info,
accordeon = this;
this.$headings.each(function(){
var $heading = $(this),
$accordeon = $heading.parent(), // not guaranteed
$accordeon_content = $heading.next('.' + info.name),
accordeon_id = $heading.is(selectors.title) ? $accordeon.attr('id') : false,
accordeon_content_id = $accordeon_content.attr('id');
$heading.children('a').on('click', function(event){
var scrollTop = $(window).scrollTop();
if ( $heading.is('.' + classNames.opened) ) {
$heading.removeClass(classNames.opened);
$accordeon_content.stop().slideUp(options.speed, function(){
$heading.addClass(classNames.closed);
if ( window.location.hash === '#' + accordeon_id || window.location.hash === '#' + accordeon_content_id ) {
window.location.hash = '';
$(window).scrollTop(scrollTop);
}
});
} else {
$heading.addClass(classNames.opened);
$accordeon_content.stop().slideDown(options.speed, function(){
$heading.removeClass(classNames.closed);
if ( accordeon_id ) {
$accordeon.removeAttr('id');
window.location.hash = accordeon_id;
$accordeon.attr('id', accordeon_id);
} else {
$accordeon_content.removeAttr('id');
window.location.hash = accordeon_content_id;
$accordeon_content.attr('id', accordeon_content_id);
}
});
}
event.preventDefault();
});
});
},
ready: function ready(){
var options = this.options,
selectors = this.options.selectors,
classNames = this.options.classNames,
info = this.info,
templates = this.templates,
$accordeons = $(),
accordeon_ids = [],
open_index = options.initOpen,
location_id = window.location.hash.replace('#', '');
this.$container = $(selectors.container);
this.$headings = this.$container.find('.' + info.name).not('.' + classNames.no + '-' + info.name);
/**
* collect accordeon data
*/
this.$headings.each(function(){
var $heading = $(this),
$accordeon = $heading.parent();
if ( $heading.is(selectors.title) ) { // then has no ".inner" div next
$accordeons = $accordeons.add($accordeon);
accordeon_ids.push($accordeon.attr('id'));
}
});
/**
* Set the index of the initial opened accordeon
*/
if ( accordeon_ids.indexOf(location_id) >= 0 ) {
open_index = accordeon_ids.indexOf(location_id)+1;
} else if ( info.hash ) {
open_index = info.hash;
if ( accordeon_ids.length > 0 ) {
window.location.hash = accordeon_ids[open_index-1];
}
}
/**
* Generate the accordion items and open the one to show initial or selected by location.hash
*
* Only headings that dont have the 'no-accordion' class and
* have content until the next heading are valid accordion item selectors
*/
this.$headings.each(function(){
var $heading = $(this),
$accordeon_content = $heading.nextUntil('.' + info.name);
if ( $accordeon_content.length > 0 ) {
$heading.removeClass(info.name).addClass(info.name + '-' + classNames.heading);
if ( !$heading.is(selectors.title) ) { // then has no ".inner" div next
$heading.wrapInner(templates.link).children('a').attr('href', '#' + info.name + '-' + info.index)
$accordeon_content = $accordeon_content.wrapAll(templates.div);
$accordeon_content.attr('id', info.name + '-' + info.index);
}
$accordeon_content.addClass(info.name);
/**
* the one to open initial
*/
if ( open_index === info.index ) {
$heading.addClass(classNames.opened);
/**
* scroll to the opened item?
*/
if ( options.initOpen !== open_index && options.scrollToInitOpen ) {
$(window).scrollTop($heading.offset().top-parseInt(options.scrollToInitOpenOffset));
}
} else {
$heading.addClass(classNames.closed);
$accordeon_content.hide();
}
/**
* Count valid accordions
*/
info.index++;
}
});
this.$accordeons = $accordeons.length > 0 ? $accordeons : false;
this.info.accordeon_ids = accordeon_ids.length > 0 ? accordeon_ids : false;
this.events();
document.body.classList.add(info.name + '-' + classNames.enabled);
},
setup: function setup(){
if ( this.info.hash ) {
// use hash as initOpen index
this.info.hash = parseInt(this.info.hash);
}
return true; // sandboxTheme.is_page(8); // true on Kurssuche;
}
},
/**
* FAQ navigation
*/
content_tabs: {
options: {
selectors: {
tabs: '.tabs'
},
classNames: {
active: 'active'
},
scroll_offset: 45,
scroll_speed: 300,
scrollIntoView: {
behavior: 'auto',
block: 'center',
inline: 'nearest'
}
},
scroll: function(){
var classNames = this.options.classNames,
scroll_top = $(document).scrollTop()+this.options.scroll_offset+20,
$tab_items = this.$tab_items;
$tab_items.each(function(index){
var $tab_item = $(this),
$content = $(this.hash);
if ( $content.position().top <= scroll_top && $content.position().top + $content.height() > scroll_top) {
$tab_items.removeClass(classNames.active);
$tab_item.addClass(classNames.active);
} else {
$tab_item.removeClass(classNames.active);
}
});
},
events: function(){
var options = this.options,
selectors = options.selectors;
this.$tab_items.on('click', function(event){
var $tab_item = $(this);
$('html, body').stop().animate({
scrollTop: $(this.hash).offset().top-parseInt(options.scroll_offset),
}, options.scroll_speed, 'swing');
event.preventDefault();
});
},
ready: function(){
this.$tabs = $(this.options.selectors.tabs);
this.$tab_items = this.$tabs.find('a');
this.events();
},
setup: function(){
return sandboxTheme.info.post_type === 'aktivitaet';
}
},
/**
* FAQ navigation
*/
faq_nav: {
options: {
page_slug: 'faqs', // FAQ page slug/permalink
scrollOffset: 60, // {number} calulate an extra offset when scrolling to accordeon
speed: 300,
selectors: {
nav: '.faq-navigation',
menu: '.menu',
sub_menu: '.sub-menu',
has_children: '.menu-item-has-children',
articles: '.articles',
faq_heading: '.title'
},
classNames: {
active: 'active',
closed: 'closed',
opened: 'opened',
},
},
events: function events(){
var options = this.options,
selectors = options.selectors,
classNames = options.classNames;
// submenu open/close
this.$menu.children('li').children('a').on('click', function(event){
var $menu_item = $(this).parent(),
$sub_menu = $(this).next(selectors.sub_menu);
if ( $menu_item.is('.' + classNames.opened) ) {
$menu_item.removeClass(classNames.opened);
$sub_menu.stop().slideUp(options.speed, function(){
$menu_item.addClass(classNames.closed);
});
} else {
$menu_item.addClass(classNames.opened);
$sub_menu.stop().slideDown(options.speed, function(){
$menu_item.removeClass(classNames.closed);
});
}
event.preventDefault();
});
// direct to faq accordions and open on demand
this.$menu.find(selectors.sub_menu).find('a').on('click', function(event){
var $heading = $(this.hash).children(selectors.title),
trigger_index = 0;
$('html, body').stop().animate({
scrollTop: $heading.offset().top-parseInt(options.scrollOffset),
}, options.speed, 'swing', function(){
if ( trigger_index === 0 && !$heading.is('.' + classNames.opened) ) { // gets called twice for html and body
$heading.children('a').trigger('click');
}
trigger_index++;
});
event.preventDefault();
});
},
ready: function ready(){
var selectors = this.options.selectors,
classNames = this.options.classNames,
location_id = window.location.hash.replace('#', ''),
$active_menu_item,
$opend_menu_item,
accordeon = sandboxTheme.features.accordeon;
// sections selection
this.$nav = $(selectors.nav);
this.$menu = this.$nav.find(selectors.menu);
/**
* Set the index of the initial opened accordeon
*/
if ( accordeon.info.accordeon_ids && accordeon.info.accordeon_ids.length > 0 && accordeon.info.accordeon_ids.indexOf(location_id) >= 0 ) {
$active_menu_item = this.$menu.find('a[href="' + window.location.hash + '"]');
$opend_menu_item = $active_menu_item.parents('li').last();
} else {
$opend_menu_item = this.$menu.children('li').first();
}
this.$menu.find(selectors.sub_menu).hide().parent('li').addClass(classNames.closed);
// event handling
this.events();
// initiate
$opend_menu_item.children('a').trigger('click');
},
setup: function setup(){
var is_setup = sandboxTheme.get_page('slug') === this.options.page_slug; // only on FAQ page
return is_setup;
}
},
/**
* social widget support
* =====================
*/
social: {
options: {
selectors: {
widget: '#social-2',
title: '.title',
list: 'ul',
list_item: 'li'
},
classNames: {
open: 'open',
}
},
info: {
},
events: function events(){
var selectors = this.options.selectors,
classNames = this.options.classNames,
info = this.info,
$list = this.$list,
$body = sandboxTheme.$body;
this.$social.find(selectors.title).on('click', function(event){
// $.log($body.is('.' + info.name + '-' + classNames.open));
if ( $body.is('.' + info.name + '-' + classNames.open) ) {
$body.removeClass(info.name + '-' + classNames.open);
} else {
$body.addClass(info.name + '-' + classNames.open);
}
event.preventDefault();
});
},
ready: function ready(){
this.$social = $(this.options.selectors.widget);
if ( this.$social.length > 0 ) {
this.$list = this.$social.find(this.options.selectors.list);
this.events();
}
},
setup: function setup(){
return sandboxTheme.info.is_single && sandboxTheme.info.post_type === 'alpha_download'; // true on Lernmaterial;
}
},
/**
* Carousel
* ========
*/
carousel: {
options: {
classNames:{
prev: 'prev',
next: 'next'
},
selectors: {
container: 'section.slider',
carousel: '.slides',
slides: '.slide',
navigation: '.prev-next'
},
carouFredSel: {
direction: 'up',
height: 'variable',
items: {
visible: 1,
},
scroll: {
easing: 'swing',
fx: 'scroll',
duration: 1000,
pauseOnHover: true,
},
auto: {
play: true,
duration: 2000,
timoutDuration: 5
}
},
texts: {
prev: 'Zurück',
next: 'Vor',
}
},
resize: function resize(){},
get_size: function get_size(){
return {
height: this.$container.parent().height(),
width: this.$container.parent().width()
};
},
set_size: function set_size(){
var scrollDuration = this.options.carouFredSel.scroll.duration,
size = this.get_size();
this.$container.animate({
width: size.width,
height: size.height,
}, {
duration: scrollDuration
});
this.$slides.animate({
width: size.width,
height: size.height,
}, {
duration: scrollDuration
});
},
ready: function ready(){
var selectors = this.options.selectors,
classNames = this.options.classNames,
carousel = this;
this.$container = $('.slider');
this.info.active = this.$container.length > 0;
if ( this.info.active ) {
this.$navigation = $('');
this.$carousel = this.$container.find(selectors.carousel);
this.$slides = this.$carousel.find(selectors.slides);
$.extend(this.options.carouFredSel, {
pagination: {
container: '.slider-nav',
keys: true,
anchorBuilder: function anchorBuilder(index){
return '' + index + '';
}
},
prev: {
button: function(){
var $prev = $('Zurück');
$prev.appendTo(carousel.$navigation);
return $prev;
}
},
next: {
button: function(){
var $next = $('Vor');
$next.appendTo(carousel.$navigation);
return $next;
}
}
});
// Slider Javascript Powered
this.$navigation.appendTo(this.$container);
this.$carousel.carouFredSel(this.options.carouFredSel, {
debug: true
});
}
},
setup: function setup(){
var isSetup = sandboxTheme.info.is_front_page; // || sandboxTheme.info.is_home;
this.info.active = false;
return isSetup;
}
}
};
/**
* Initiate theme actions
*
* merges WP REST API results with theme_data
*
* @object sandboxTheme_data data handed over with wp_localize_script
* @object pageData WP REST API result
*
* @uses sandboxTheme.init() initiates the page theme actions
*/
var siteData = $.getJSON(sandboxTheme_data.urls.rest);
siteData.done(function(pageData){
if ( $.isPlainObject(pageData) ) {
sandboxTheme.init($.extend(sandboxTheme_data, pageData));
} else {
sandboxTheme.init(sandboxTheme_data);
}
});
})(jQuery);