Initial Commit

This commit is contained in:
Rumperuu 2018-03-21 18:19:20 +00:00
parent 4c352bf02e
commit 1ab6e5f0b0
1085 changed files with 195258 additions and 0 deletions

View file

@ -0,0 +1,164 @@
/* =Infinity Styles
-------------------------------------------------------------- */
.infinite-wrap {
}
.infinite-loader {
color: #000;
display: block;
height: 28px;
text-indent: -9999px;
}
#infinite-handle span {
background: #333;
border-radius: 1px;
color: #eee;
cursor: pointer;
font-size: 13px;
padding: 6px 16px;
}
/**
* Using a highly-specific rule to make sure that all button styles
* will be reset
*/
#infinite-handle span button,
#infinite-handle span button:hover,
#infinite-handle span button:focus {
display: inline;
position: static;
padding: 0;
margin: 0;
border: none;
line-height: inherit;
background: transparent;
color: inherit;
cursor: inherit;
font-size: inherit;
font-weight: inherit;
font-family: inherit;
}
/**
* This is used to avoid unnecessary inner button spacing in Firefox
*/
#infinite-handle span button::-moz-focus-inner {
margin: 0;
padding: 0;
border: none;
}
/**
* For smaller viewports, remove the down-arrow icon and turn
* the button into a block element, spanning the content's full width.
*/
@media (max-width: 800px) {
#infinite-handle span:before {
display: none;
}
#infinite-handle span {
display: block;
}
}
/**
* Footer
*/
#infinite-footer {
position: fixed;
bottom: -50px;
left: 0;
width: 100%;
}
#infinite-footer a {
text-decoration: none;
}
#infinite-footer .blog-info a:hover,
#infinite-footer .blog-credits a:hover {
color: #444;
text-decoration: underline;
}
#infinite-footer .container {
background: rgba( 255, 255, 255, 0.8 );
border-color: #ccc;
border-color: rgba( 0, 0, 0, 0.1 );
border-style: solid;
border-width: 1px 0 0;
-moz-box-sizing: border-box;
box-sizing: border-box;
margin: 0 auto;
overflow: hidden;
padding: 1px 20px;
width: 780px;
}
#infinite-footer .blog-info,
#infinite-footer .blog-credits {
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
line-height: 25px;
}
#infinite-footer .blog-info {
float: left;
overflow: hidden;
text-align: left;
text-overflow: ellipsis;
white-space: nowrap;
width: 40%;
}
#infinite-footer .blog-credits {
font-weight: normal;
float: right;
width: 60%;
}
#infinite-footer .blog-info a {
color: #111;
font-size: 14px;
font-weight: bold;
}
#infinite-footer .blog-credits {
color: #888;
font-size: 12px;
text-align: right;
}
#infinite-footer .blog-credits a {
color: #666;
}
/**
* Hooks to infinity-end body class to restore footer
*/
.infinity-end.neverending #infinite-footer {
display: none;
}
/**
* Responsive structure for the footer
*/
@media (max-width: 640px) {
#infinite-footer .container {
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
width: 100%;
}
#infinite-footer .blog-info {
width: 30%;
}
#infinite-footer .blog-credits {
width: 70%;
}
#infinite-footer .blog-info a,
#infinite-footer .blog-credits {
font-size: 10px;
}
}
/**
* No fixed footer on small viewports
*/
@media ( max-width: 640px ) {
#infinite-footer {
position: static;
}
}

View file

@ -0,0 +1,718 @@
(function($){ // Open closure
// Local vars
var Scroller, ajaxurl, stats, type, text, totop;
// IE requires special handling
var isIE = ( -1 != navigator.userAgent.search( 'MSIE' ) );
if ( isIE ) {
var IEVersion = navigator.userAgent.match(/MSIE\s?(\d+)\.?\d*;/);
var IEVersion = parseInt( IEVersion[1] );
}
// HTTP ajaxurl when site is HTTPS causes Access-Control-Allow-Origin failure in Desktop and iOS Safari
if ( "https:" == document.location.protocol ) {
infiniteScroll.settings.ajaxurl = infiniteScroll.settings.ajaxurl.replace( "http://", "https://" );
}
/**
* Loads new posts when users scroll near the bottom of the page.
*/
Scroller = function( settings ) {
var self = this;
// Initialize our variables
this.id = settings.id;
this.body = $( document.body );
this.window = $( window );
this.element = $( '#' + settings.id );
this.wrapperClass = settings.wrapper_class;
this.ready = true;
this.disabled = false;
this.page = 1;
this.offset = settings.offset;
this.currentday = settings.currentday;
this.order = settings.order;
this.throttle = false;
this.handle = '<div id="infinite-handle"><span><button>' + text.replace( '\\', '' ) + '</button></span></div>';
this.click_handle = settings.click_handle;
this.google_analytics = settings.google_analytics;
this.history = settings.history;
this.origURL = window.location.href;
this.pageCache = {};
// Footer settings
this.footer = $( '#infinite-footer' );
this.footer.wrap = settings.footer;
// Core's native MediaElement.js implementation needs special handling
this.wpMediaelement = null;
// We have two type of infinite scroll
// cases 'scroll' and 'click'
if ( type == 'scroll' ) {
// Bind refresh to the scroll event
// Throttle to check for such case every 300ms
// On event the case becomes a fact
this.window.bind( 'scroll.infinity', function() {
this.throttle = true;
});
// Go back top method
self.gotop();
setInterval( function() {
if ( this.throttle ) {
// Once the case is the case, the action occurs and the fact is no more
this.throttle = false;
// Reveal or hide footer
self.thefooter();
// Fire the refresh
self.refresh();
self.determineURL(); // determine the url
}
}, 250 );
// Ensure that enough posts are loaded to fill the initial viewport, to compensate for short posts and large displays.
self.ensureFilledViewport();
this.body.bind( 'post-load', { self: self }, self.checkViewportOnLoad );
} else if ( type == 'click' ) {
if ( this.click_handle ) {
this.element.append( this.handle );
}
this.body.delegate( '#infinite-handle', 'click.infinity', function() {
// Handle the handle
if ( self.click_handle ) {
$( '#infinite-handle' ).remove();
}
// Fire the refresh
self.refresh();
});
}
// Initialize any Core audio or video players loaded via IS
this.body.bind( 'post-load', { self: self }, self.initializeMejs );
};
/**
* Check whether we should fetch any additional posts.
*/
Scroller.prototype.check = function() {
var container = this.element.offset();
// If the container can't be found, stop otherwise errors result
if ( 'object' !== typeof container ) {
return false;
}
var bottom = this.window.scrollTop() + this.window.height(),
threshold = container.top + this.element.outerHeight(false) - (this.window.height() * 2);
return bottom > threshold;
};
/**
* Renders the results from a successful response.
*/
Scroller.prototype.render = function( response ) {
this.body.addClass( 'infinity-success' );
// Check if we can wrap the html
this.element.append( response.html );
this.body.trigger( 'post-load', response );
this.ready = true;
};
/**
* Returns the object used to query for new posts.
*/
Scroller.prototype.query = function() {
return {
page : this.page,
currentday : this.currentday,
order : this.order,
scripts : window.infiniteScroll.settings.scripts,
styles : window.infiniteScroll.settings.styles,
query_args : window.infiniteScroll.settings.query_args,
last_post_date : window.infiniteScroll.settings.last_post_date
};
};
/**
* Scroll back to top.
*/
Scroller.prototype.gotop = function() {
var blog = $( '#infinity-blog-title' );
blog.attr( 'title', totop );
// Scroll to top on blog title
blog.bind( 'click', function( e ) {
$( 'html, body' ).animate( { scrollTop: 0 }, 'fast' );
e.preventDefault();
});
};
/**
* The infinite footer.
*/
Scroller.prototype.thefooter = function() {
var self = this,
width;
// Check if we have an id for the page wrapper
if ( $.type( this.footer.wrap ) === "string" ) {
width = $( 'body #' + this.footer.wrap ).outerWidth( false );
// Make the footer match the width of the page
if ( width > 479 )
this.footer.find( '.container' ).css( 'width', width );
}
// Reveal footer
if ( this.window.scrollTop() >= 350 )
self.footer.animate( { 'bottom': 0 }, 'fast' );
else if ( this.window.scrollTop() < 350 )
self.footer.animate( { 'bottom': '-50px' }, 'fast' );
};
/**
* Controls the flow of the refresh. Don't mess.
*/
Scroller.prototype.refresh = function() {
var self = this,
query, jqxhr, load, loader, color, customized;
// If we're disabled, ready, or don't pass the check, bail.
if ( this.disabled || ! this.ready || ! this.check() )
return;
// Let's get going -- set ready to false to prevent
// multiple refreshes from occurring at once.
this.ready = false;
// Create a loader element to show it's working.
if ( this.click_handle ) {
loader = '<span class="infinite-loader"></span>';
this.element.append( loader );
loader = this.element.find( '.infinite-loader' );
color = loader.css( 'color' );
try {
loader.spin( 'medium-left', color );
} catch ( error ) { }
}
// Generate our query vars.
query = $.extend({
action: 'infinite_scroll'
}, this.query() );
// Inject Customizer state.
if ( 'undefined' !== typeof wp && wp.customize && wp.customize.settings.theme ) {
customized = {};
query.wp_customize = 'on';
query.theme = wp.customize.settings.theme.stylesheet;
wp.customize.each( function( setting ) {
if ( setting._dirty ) {
customized[ setting.id ] = setting();
}
} );
query.customized = JSON.stringify( customized );
query.nonce = wp.customize.settings.nonce.preview;
}
// Fire the ajax request.
jqxhr = $.post( infiniteScroll.settings.ajaxurl, query );
// Allow refreshes to occur again if an error is triggered.
jqxhr.fail( function() {
if ( self.click_handle ) {
loader.hide();
}
self.ready = true;
});
// Success handler
jqxhr.done( function( response ) {
// On success, let's hide the loader circle.
if ( self.click_handle ) {
loader.hide();
}
// Check for and parse our response.
if ( ! response || ! response.type ) {
return;
}
// If there are no remaining posts...
if ( response.type == 'empty' ) {
// Disable the scroller.
self.disabled = true;
// Update body classes, allowing the footer to return to static positioning
self.body.addClass( 'infinity-end' ).removeClass( 'infinity-success' );
// If we've succeeded...
} else if ( response.type == 'success' ) {
// If additional scripts are required by the incoming set of posts, parse them
if ( response.scripts ) {
$( response.scripts ).each( function() {
var elementToAppendTo = this.footer ? 'body' : 'head';
// Add script handle to list of those already parsed
window.infiniteScroll.settings.scripts.push( this.handle );
// Output extra data, if present
if ( this.extra_data ) {
var data = document.createElement('script'),
dataContent = document.createTextNode( "//<![CDATA[ \n" + this.extra_data + "\n//]]>" );
data.type = 'text/javascript';
data.appendChild( dataContent );
document.getElementsByTagName( elementToAppendTo )[0].appendChild(data);
}
// Build script tag and append to DOM in requested location
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = this.src;
script.id = this.handle;
// If MediaElement.js is loaded in by this set of posts, don't initialize the players a second time as it breaks them all
if ( 'wp-mediaelement' === this.handle ) {
self.body.unbind( 'post-load', self.initializeMejs );
}
if ( 'wp-mediaelement' === this.handle && 'undefined' === typeof mejs ) {
self.wpMediaelement = {};
self.wpMediaelement.tag = script;
self.wpMediaelement.element = elementToAppendTo;
setTimeout( self.maybeLoadMejs.bind( self ), 250 );
} else {
document.getElementsByTagName( elementToAppendTo )[0].appendChild(script);
}
} );
}
// If additional stylesheets are required by the incoming set of posts, parse them
if ( response.styles ) {
$( response.styles ).each( function() {
// Add stylesheet handle to list of those already parsed
window.infiniteScroll.settings.styles.push( this.handle );
// Build link tag
var style = document.createElement('link');
style.rel = 'stylesheet';
style.href = this.src;
style.id = this.handle + '-css';
// Destroy link tag if a conditional statement is present and either the browser isn't IE, or the conditional doesn't evaluate true
if ( this.conditional && ( ! isIE || ! eval( this.conditional.replace( /%ver/g, IEVersion ) ) ) )
var style = false;
// Append link tag if necessary
if ( style )
document.getElementsByTagName('head')[0].appendChild(style);
} );
}
// stash the response in the page cache
self.pageCache[self.page] = response;
// Increment the page number
self.page++;
// Record pageview in WP Stats, if available.
if ( stats )
new Image().src = document.location.protocol + '//pixel.wp.com/g.gif?' + stats + '&post=0&baba=' + Math.random();
// Add new posts to the postflair object
if ( 'object' == typeof response.postflair && 'object' == typeof WPCOM_sharing_counts )
WPCOM_sharing_counts = $.extend( WPCOM_sharing_counts, response.postflair );
// Render the results
self.render.apply( self, arguments );
// If 'click' type and there are still posts to fetch, add back the handle
if ( type == 'click' ) {
if ( response.lastbatch ) {
if ( self.click_handle ) {
$( '#infinite-handle' ).remove();
} else {
self.body.trigger( 'infinite-scroll-posts-end' );
}
} else {
if ( self.click_handle ) {
self.element.append( self.handle );
} else {
self.body.trigger( 'infinite-scroll-posts-more' );
}
}
}
// Update currentday to the latest value returned from the server
if ( response.currentday ) {
self.currentday = response.currentday;
}
// Fire Google Analytics pageview
if ( self.google_analytics ) {
var ga_url = self.history.path.replace( /%d/, self.page );
if ( 'object' === typeof _gaq ) {
_gaq.push( [ '_trackPageview', ga_url ] );
}
if ( 'function' === typeof ga ) {
ga( 'send', 'pageview', ga_url );
}
}
}
});
return jqxhr;
};
/**
* Core's native media player uses MediaElement.js
* The library's size is sufficient that it may not be loaded in time for Core's helper to invoke it, so we need to delay until `mejs` exists.
*/
Scroller.prototype.maybeLoadMejs = function() {
if ( null === this.wpMediaelement ) {
return;
}
if ( 'undefined' === typeof mejs ) {
setTimeout( this.maybeLoadMejs, 250 );
} else {
document.getElementsByTagName( this.wpMediaelement.element )[0].appendChild( this.wpMediaelement.tag );
this.wpMediaelement = null;
// Ensure any subsequent IS loads initialize the players
this.body.bind( 'post-load', { self: this }, this.initializeMejs );
}
}
/**
* Initialize the MediaElement.js player for any posts not previously initialized
*/
Scroller.prototype.initializeMejs = function( ev, response ) {
// Are there media players in the incoming set of posts?
if ( ! response.html || -1 === response.html.indexOf( 'wp-audio-shortcode' ) && -1 === response.html.indexOf( 'wp-video-shortcode' ) ) {
return;
}
// Don't bother if mejs isn't loaded for some reason
if ( 'undefined' === typeof mejs ) {
return;
}
// Adapted from wp-includes/js/mediaelement/wp-mediaelement.js
// Modified to not initialize already-initialized players, as Mejs doesn't handle that well
$(function () {
var settings = {};
if ( typeof _wpmejsSettings !== 'undefined' ) {
settings.pluginPath = _wpmejsSettings.pluginPath;
}
settings.success = function (mejs) {
var autoplay = mejs.attributes.autoplay && 'false' !== mejs.attributes.autoplay;
if ( 'flash' === mejs.pluginType && autoplay ) {
mejs.addEventListener( 'canplay', function () {
mejs.play();
}, false );
}
};
$('.wp-audio-shortcode, .wp-video-shortcode').not( '.mejs-container' ).mediaelementplayer( settings );
});
}
/**
* Trigger IS to load additional posts if the initial posts don't fill the window.
* On large displays, or when posts are very short, the viewport may not be filled with posts, so we overcome this by loading additional posts when IS initializes.
*/
Scroller.prototype.ensureFilledViewport = function() {
var self = this,
windowHeight = self.window.height(),
postsHeight = self.element.height(),
aveSetHeight = 0,
wrapperQty = 0;
// Account for situations where postsHeight is 0 because child list elements are floated
if ( postsHeight === 0 ) {
$( self.element.selector + ' > li' ).each( function() {
postsHeight += $( this ).height();
} );
if ( postsHeight === 0 ) {
self.body.unbind( 'post-load', self.checkViewportOnLoad );
return;
}
}
// Calculate average height of a set of posts to prevent more posts than needed from being loaded.
$( '.' + self.wrapperClass ).each( function() {
aveSetHeight += $( this ).height();
wrapperQty++;
} );
if ( wrapperQty > 0 )
aveSetHeight = aveSetHeight / wrapperQty;
else
aveSetHeight = 0;
// Load more posts if space permits, otherwise stop checking for a full viewport
if ( postsHeight < windowHeight && ( postsHeight + aveSetHeight < windowHeight ) ) {
self.ready = true;
self.refresh();
}
else {
self.body.unbind( 'post-load', self.checkViewportOnLoad );
}
}
/**
* Event handler for ensureFilledViewport(), tied to the post-load trigger.
* Necessary to ensure that the variable `this` contains the scroller when used in ensureFilledViewport(). Since this function is tied to an event, `this` becomes the DOM element the event is tied to.
*/
Scroller.prototype.checkViewportOnLoad = function( ev ) {
ev.data.self.ensureFilledViewport();
}
/**
* Identify archive page that corresponds to majority of posts shown in the current browser window.
*/
Scroller.prototype.determineURL = function () {
var self = this,
windowTop = $( window ).scrollTop(),
windowBottom = windowTop + $( window ).height(),
windowSize = windowBottom - windowTop,
setsInView = [],
setsHidden = [],
pageNum = false;
// Find out which sets are in view
$( '.' + self.wrapperClass ).each( function() {
var id = $( this ).attr( 'id' ),
setTop = $( this ).offset().top,
setHeight = $( this ).outerHeight( false ),
setBottom = 0,
setPageNum = $( this ).data( 'page-num' );
// Account for containers that have no height because their children are floated elements.
if ( 0 === setHeight ) {
$( '> *', this ).each( function() {
setHeight += $( this ).outerHeight( false );
} );
}
// Determine position of bottom of set by adding its height to the scroll position of its top.
setBottom = setTop + setHeight;
// Populate setsInView object. While this logic could all be combined into a single conditional statement, this is easier to understand.
if ( setTop < windowTop && setBottom > windowBottom ) { // top of set is above window, bottom is below
setsInView.push({'id': id, 'top': setTop, 'bottom': setBottom, 'pageNum': setPageNum });
}
else if( setTop > windowTop && setTop < windowBottom ) { // top of set is between top (gt) and bottom (lt)
setsInView.push({'id': id, 'top': setTop, 'bottom': setBottom, 'pageNum': setPageNum });
}
else if( setBottom > windowTop && setBottom < windowBottom ) { // bottom of set is between top (gt) and bottom (lt)
setsInView.push({'id': id, 'top': setTop, 'bottom': setBottom, 'pageNum': setPageNum });
} else {
setsHidden.push({'id': id, 'top': setTop, 'bottom': setBottom, 'pageNum': setPageNum });
}
} );
$.each(setsHidden, function() {
var $set = $('#' + this.id);
if( $set.hasClass( 'is--replaced' ) ) {
return;
}
self.pageCache[ this.pageNum].html = $set.html();
$set.css('min-height', ( this.bottom - this.top ) + 'px' )
.addClass('is--replaced')
.empty();
});
$.each(setsInView, function() {
var $set = $('#' + this.id);
if( $set.hasClass('is--replaced') ) {
$set.css('min-height', '').removeClass('is--replaced');
if( this.pageNum in self.pageCache ) {
$set.html( self.pageCache[this.pageNum].html );
self.body.trigger( 'post-load', self.pageCache[this.pageNum] );
}
}
});
// Parse number of sets found in view in an attempt to update the URL to match the set that comprises the majority of the window.
if ( 0 == setsInView.length ) {
pageNum = -1;
}
else if ( 1 == setsInView.length ) {
var setData = setsInView.pop();
// If the first set of IS posts is in the same view as the posts loaded in the template by WordPress, determine how much of the view is comprised of IS-loaded posts
if ( ( ( windowBottom - setData.top ) / windowSize ) < 0.5 )
pageNum = -1;
else
pageNum = setData.pageNum;
}
else {
var majorityPercentageInView = 0;
// Identify the IS set that comprises the majority of the current window and set the URL to it.
$.each( setsInView, function( i, setData ) {
var topInView = 0,
bottomInView = 0,
percentOfView = 0;
// Figure percentage of view the current set represents
if ( setData.top > windowTop && setData.top < windowBottom )
topInView = ( windowBottom - setData.top ) / windowSize;
if ( setData.bottom > windowTop && setData.bottom < windowBottom )
bottomInView = ( setData.bottom - windowTop ) / windowSize;
// Figure out largest percentage of view for current set
if ( topInView >= bottomInView )
percentOfView = topInView;
else if ( bottomInView >= topInView )
percentOfView = bottomInView;
// Does current set's percentage of view supplant the largest previously-found set?
if ( percentOfView > majorityPercentageInView ) {
pageNum = setData.pageNum;
majorityPercentageInView = percentOfView;
}
} );
}
// If a page number could be determined, update the URL
// -1 indicates that the original requested URL should be used.
if ( 'number' == typeof pageNum ) {
if ( pageNum != -1 )
pageNum++;
self.updateURL( pageNum );
}
}
/**
* Update address bar to reflect archive page URL for a given page number.
* Checks if URL is different to prevent pollution of browser history.
*/
Scroller.prototype.updateURL = function( page ) {
// IE only supports pushState() in v10 and above, so don't bother if those conditions aren't met.
if ( ! window.history.pushState ) {
return;
}
var self = this,
offset = self.offset > 0 ? self.offset - 1 : 0,
pageSlug = -1 == page ? self.origURL : window.location.protocol + '//' + self.history.host + self.history.path.replace( /%d/, page + offset ) + self.history.parameters;
if ( window.location.href != pageSlug ) {
history.pushState( null, null, pageSlug );
}
}
/**
* Ready, set, go!
*/
$( document ).ready( function() {
// Check for our variables
if ( 'object' != typeof infiniteScroll )
return;
// Set ajaxurl (for brevity)
ajaxurl = infiniteScroll.settings.ajaxurl;
// Set stats, used for tracking stats
stats = infiniteScroll.settings.stats;
// Define what type of infinity we have, grab text for click-handle
type = infiniteScroll.settings.type;
text = infiniteScroll.settings.text;
totop = infiniteScroll.settings.totop;
// Initialize the scroller (with the ID of the element from the theme)
infiniteScroll.scroller = new Scroller( infiniteScroll.settings );
/**
* Monitor user scroll activity to update URL to correspond to archive page for current set of IS posts
*/
if( type == 'click' ) {
var timer = null;
$( window ).bind( 'scroll', function() {
// run the real scroll handler once every 250 ms.
if ( timer ) { return; }
timer = setTimeout( function() {
infiniteScroll.scroller.determineURL();
timer = null;
} , 250 );
});
}
// Integrate with Selective Refresh in the Customizer.
if ( 'undefined' !== typeof wp && wp.customize && wp.customize.selectiveRefresh ) {
/**
* Handle rendering of selective refresh partials.
*
* Make sure that when a partial is rendered, the Jetpack post-load event
* will be triggered so that any dynamic elements will be re-constructed,
* such as ME.js elements, Photon replacements, social sharing, and more.
* Note that this is applying here not strictly to posts being loaded.
* If a widget contains a ME.js element and it is previewed via selective
* refresh, the post-load would get triggered allowing any dynamic elements
* therein to also be re-constructed.
*
* @param {wp.customize.selectiveRefresh.Placement} placement
*/
wp.customize.selectiveRefresh.bind( 'partial-content-rendered', function( placement ) {
var content;
if ( 'string' === typeof placement.addedContent ) {
content = placement.addedContent;
} else if ( placement.container ) {
content = $( placement.container ).html();
}
if ( content ) {
$( document.body ).trigger( 'post-load', { html: content } );
}
} );
/*
* Add partials for posts added via infinite scroll.
*
* This is unnecessary when MutationObserver is supported by the browser
* since then this will be handled by Selective Refresh in core.
*/
if ( 'undefined' === typeof MutationObserver ) {
$( document.body ).on( 'post-load', function( e, response ) {
var rootElement = null;
if ( response.html && -1 !== response.html.indexOf( 'data-customize-partial' ) ) {
if ( infiniteScroll.settings.id ) {
rootElement = $( '#' + infiniteScroll.settings.id );
}
wp.customize.selectiveRefresh.addPartials( rootElement );
}
} );
}
}
});
})(jQuery); // Close closure

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,45 @@
/* =Infinity Styles
-------------------------------------------------------------- */
.infinite-scroll #main:after {
clear: both;
content: '';
display: block;
}
.infinite-scroll #content {
margin-bottom: 40px;
}
.infinite-scroll.neverending #content {
margin-bottom: 70px;
}
.infinite-scroll .infinite-wrap {
border-top: none;
padding-top: 0;
}
.infinite-scroll .infinite-wrap .hentry:last-child {
border-bottom: 1px solid #ddd;
}
.infinite-scroll .infinite-wrap:last-of-type .hentry:last-child {
border-bottom: none;
}
/**
* Elements to hide:
* (footer widgets, post navigation, regular footer)
*/
.infinite-scroll.neverending #colophon #supplementary,
.infinite-scroll #nav-below,
.infinite-scroll.neverending #colophon {
display: none;
}
/* Hooks to infinity-end body class to restore footer */
.infinity-end.neverending #colophon {
display: block;
}
/* For responsive CSS */
@media (max-width: 800px) {
.infinite-scroll #infinite-handle {
padding-bottom: 40px;
}
}

View file

@ -0,0 +1,48 @@
<?php
/**
* Infinite Scroll Theme Assets
*
* Register support for @Twenty Eleven and enqueue relevant styles.
*/
/**
* Add theme support for infinity scroll
*/
function twenty_eleven_infinite_scroll_init() {
add_theme_support( 'infinite-scroll', array(
'container' => 'content',
'footer' => 'page',
) );
}
add_action( 'init', 'twenty_eleven_infinite_scroll_init' );
/**
* Enqueue CSS stylesheet with theme styles for infinity.
*/
function twenty_eleven_infinite_scroll_enqueue_styles() {
// Add theme specific styles.
wp_enqueue_style( 'infinity-twentyeleven', plugins_url( 'twentyeleven.css', __FILE__ ), array( 'the-neverending-homepage' ), '20121002' );
}
add_action( 'wp_enqueue_scripts', 'twenty_eleven_infinite_scroll_enqueue_styles', 25 );
/**
* Have we any footer widgets?
*
* @param bool $has_widgets
* @uses is_active_sidebar
* @uses jetpack_is_mobile
* @filter infinite_scroll_has_footer_widgets
* @return bool
*/
function twenty_eleven_has_footer_widgets( $has_widgets ) {
// Are any of the "Footer Area" sidebars active?
if ( is_active_sidebar( 'sidebar-3' ) || is_active_sidebar( 'sidebar-4' ) || is_active_sidebar( 'sidebar-5' ) )
return true;
// If we're on mobile and the Main Sidebar has widgets, it falls below the content, so we have footer widgets.
if ( function_exists( 'jetpack_is_mobile' ) && jetpack_is_mobile() && is_active_sidebar( 'sidebar-1' ) )
return true;
return $has_widgets;
}
add_filter( 'infinite_scroll_has_footer_widgets', 'twenty_eleven_has_footer_widgets' );

View file

@ -0,0 +1,216 @@
/**
* Infinite Scroll
*/
.infinite-scroll .pagination,
.infinite-scroll.neverending .site-footer {
display: none;
}
.infinity-end.neverending .site-footer {
display: block;
}
/* Spinner */
.infinite-loader {
clear: both;
height: 24px;
margin: 24px 0;
}
.infinite-loader .spinner {
top: 50% !important;
right: 50% !important;
}
/* Click-to-load */
#infinite-handle {
clear: both;
margin: 7.6923%;
text-align: center;
}
#infinite-handle span {
background-color: #333;
font-family: "Noto Sans", sans-serif;
font-size: 12px;
font-size: 1.2rem;
font-weight: 700;
letter-spacing: 0.04em;
line-height: normal;
padding: 0.7917em;
text-transform: uppercase;
}
#infinite-handle span:hover,
#infinite-handle span:focus {
background-color: #707070;
background-color: rgba(51, 51, 51, 0.7);
color: #fff;
}
/* Footer */
#infinite-footer {
display: none;
z-index: 999;
}
#infinite-footer .container {
background-color: #fff;
background-color: rgba(255, 255, 255, 0.5);
border-color: #eaeaea;
border-color: rgba(51, 51, 51, 0.1);
padding: 0 0.8em;
width: 100% !important;
}
#infinite-footer .blog-info {
font-family: "Noto Sans", sans-serif;
}
#infinite-footer .blog-info,
#infinite-footer .blog-credits {
height: 24px;
line-height: 24px;
}
#infinite-footer .blog-info a,
#infinite-footer .blog-credits {
font-size: 12px;
font-size: 1.2rem;
}
#infinite-footer .blog-info a,
#infinite-footer .blog-credits a:hover,
#infinite-footer .blog-credits a:focus {
color: #333;
}
#infinite-footer .blog-info a:hover,
#infinite-footer .blog-info a:focus,
#infinite-footer .blog-credits,
#infinite-footer .blog-credits a {
color: #707070;
color: rgba(51, 51, 51, 0.7);
}
#infinite-footer .blog-info a:hover,
#infinite-footer .blog-info a:focus,
#infinite-footer .blog-credits a:hover,
#infinite-footer .blog-credits a:focus {
text-decoration: none;
}
@media screen and (min-width: 38.75em) {
.infinite-loader {
margin: 7.6923% 0;
}
.infinite-wrap {
margin-top: 7.6923%;
}
#infinite-handle {
margin-bottom: 0;
}
}
@media screen and (min-width: 46.25em) {
#infinite-handle span {
display: block;
font-size: 14px;
font-size: 1.4rem;
padding: 0.8214em
}
}
@media screen and (min-width: 55em) {
#infinite-handle span {
font-size: 16px;
font-size: 1.6rem;
padding: 0.8125em;
}
}
@media screen and (min-width: 59.6875em) {
.infinite-loader {
margin: 8.3333% 0;
}
.infinite-wrap {
margin-top: 8.3333%;
}
#infinite-handle {
margin: 8.3333% 8.3333% 0;
}
#infinite-handle span {
display: inline-block;
font-size: 12px;
font-size: 1.2rem;
padding: 0.7917em 1.5833em;
}
#infinite-footer {
display: block;
position: fixed;
}
}
@media screen and (min-width: 68.75em) {
#infinite-handle span {
display: inline-block;
font-size: 14px;
font-size: 1.4rem;
padding: 0.8214em 1.5714em;
}
#infinite-footer .container {
padding: 0 0.8235em;
}
#infinite-footer .blog-info,
#infinite-footer .blog-credits {
height: 27px;
line-height: 27px;
}
#infinite-footer .blog-info a {
font-size: 14px;
font-size: 1.4rem;
}
#infinite-footer .blog-credits {
font-size: 12px;
font-size: 1.2rem;
}
}
@media screen and (min-width: 77.5em) {
#infinite-handle span {
font-size: 16px;
font-size: 1.6rem;
padding: 0.8125em 1.625em;
}
#infinite-footer .container {
padding: 0 0.8421em;
}
#infinite-footer .blog-info,
#infinite-footer .blog-credits {
height: 32px;
line-height: 32px;
}
#infinite-footer .blog-info a {
font-size: 16px;
font-size: 1.6rem;
}
#infinite-footer .blog-credits {
font-size: 13px;
font-size: 1.3rem;
}
}

View file

@ -0,0 +1,216 @@
/**
* Infinite Scroll
*/
.infinite-scroll .pagination,
.infinite-scroll.neverending .site-footer {
display: none;
}
.infinity-end.neverending .site-footer {
display: block;
}
/* Spinner */
.infinite-loader {
clear: both;
height: 24px;
margin: 24px 0;
}
.infinite-loader .spinner {
top: 50% !important;
left: 50% !important;
}
/* Click-to-load */
#infinite-handle {
clear: both;
margin: 7.6923%;
text-align: center;
}
#infinite-handle span {
background-color: #333;
font-family: "Noto Sans", sans-serif;
font-size: 12px;
font-size: 1.2rem;
font-weight: 700;
letter-spacing: 0.04em;
line-height: normal;
padding: 0.7917em;
text-transform: uppercase;
}
#infinite-handle span:hover,
#infinite-handle span:focus {
background-color: #707070;
background-color: rgba(51, 51, 51, 0.7);
color: #fff;
}
/* Footer */
#infinite-footer {
display: none;
z-index: 999;
}
#infinite-footer .container {
background-color: #fff;
background-color: rgba(255, 255, 255, 0.5);
border-color: #eaeaea;
border-color: rgba(51, 51, 51, 0.1);
padding: 0 0.8em;
width: 100% !important;
}
#infinite-footer .blog-info {
font-family: "Noto Sans", sans-serif;
}
#infinite-footer .blog-info,
#infinite-footer .blog-credits {
height: 24px;
line-height: 24px;
}
#infinite-footer .blog-info a,
#infinite-footer .blog-credits {
font-size: 12px;
font-size: 1.2rem;
}
#infinite-footer .blog-info a,
#infinite-footer .blog-credits a:hover,
#infinite-footer .blog-credits a:focus {
color: #333;
}
#infinite-footer .blog-info a:hover,
#infinite-footer .blog-info a:focus,
#infinite-footer .blog-credits,
#infinite-footer .blog-credits a {
color: #707070;
color: rgba(51, 51, 51, 0.7);
}
#infinite-footer .blog-info a:hover,
#infinite-footer .blog-info a:focus,
#infinite-footer .blog-credits a:hover,
#infinite-footer .blog-credits a:focus {
text-decoration: none;
}
@media screen and (min-width: 38.75em) {
.infinite-loader {
margin: 7.6923% 0;
}
.infinite-wrap {
margin-top: 7.6923%;
}
#infinite-handle {
margin-bottom: 0;
}
}
@media screen and (min-width: 46.25em) {
#infinite-handle span {
display: block;
font-size: 14px;
font-size: 1.4rem;
padding: 0.8214em
}
}
@media screen and (min-width: 55em) {
#infinite-handle span {
font-size: 16px;
font-size: 1.6rem;
padding: 0.8125em;
}
}
@media screen and (min-width: 59.6875em) {
.infinite-loader {
margin: 8.3333% 0;
}
.infinite-wrap {
margin-top: 8.3333%;
}
#infinite-handle {
margin: 8.3333% 8.3333% 0;
}
#infinite-handle span {
display: inline-block;
font-size: 12px;
font-size: 1.2rem;
padding: 0.7917em 1.5833em;
}
#infinite-footer {
display: block;
position: fixed;
}
}
@media screen and (min-width: 68.75em) {
#infinite-handle span {
display: inline-block;
font-size: 14px;
font-size: 1.4rem;
padding: 0.8214em 1.5714em;
}
#infinite-footer .container {
padding: 0 0.8235em;
}
#infinite-footer .blog-info,
#infinite-footer .blog-credits {
height: 27px;
line-height: 27px;
}
#infinite-footer .blog-info a {
font-size: 14px;
font-size: 1.4rem;
}
#infinite-footer .blog-credits {
font-size: 12px;
font-size: 1.2rem;
}
}
@media screen and (min-width: 77.5em) {
#infinite-handle span {
font-size: 16px;
font-size: 1.6rem;
padding: 0.8125em 1.625em;
}
#infinite-footer .container {
padding: 0 0.8421em;
}
#infinite-footer .blog-info,
#infinite-footer .blog-credits {
height: 32px;
line-height: 32px;
}
#infinite-footer .blog-info a {
font-size: 16px;
font-size: 1.6rem;
}
#infinite-footer .blog-credits {
font-size: 13px;
font-size: 1.3rem;
}
}

View file

@ -0,0 +1,26 @@
<?php
/**
* Infinite Scroll Theme Assets
*
* Register support for Twenty Fifteen.
*/
/**
* Add theme support for infinite scroll
*/
function twentyfifteen_infinite_scroll_init() {
add_theme_support( 'infinite-scroll', array(
'container' => 'main',
'footer' => 'page',
) );
}
add_action( 'after_setup_theme', 'twentyfifteen_infinite_scroll_init' );
/**
* Enqueue CSS stylesheet with theme styles for Infinite Scroll.
*/
function twentyfifteen_infinite_scroll_enqueue_styles() {
wp_enqueue_style( 'infinity-twentyfifteen', plugins_url( 'twentyfifteen.css', __FILE__ ), array( 'the-neverending-homepage' ), '20141022' );
wp_style_add_data( 'infinity-twentyfifteen', 'rtl', 'replace' );
}
add_action( 'wp_enqueue_scripts', 'twentyfifteen_infinite_scroll_enqueue_styles', 25 );

View file

@ -0,0 +1,111 @@
/* Spinner */
.infinite-loader {
height: 36px;
padding: 24px 0;
}
.infinite-loader .spinner {
margin: 0 auto;
top: 18px !important;
left: 0 !important;
}
.rtl .infinite-loader .spinner {
right: 0 !important;
left: auto !important;
}
/* Click-to-load */
#infinite-handle {
padding: 24px 0;
text-align: center;
}
#infinite-handle span {
background: #24890d;
border-radius: 2px;
display: inline-block;
color: #fff;
font-size: 12px;
font-weight: 700;
line-height: 1;
padding: 12px 30px;
text-transform: uppercase;
}
#infinite-handle span:hover {
background-color: #41a62a;
}
#infinite-handle span:active {
background-color: #55d737;
}
/* Footer */
#infinite-footer {
z-index: 2;
}
#infinite-footer .container {
margin: 0;
padding: 4px 20px;
}
#infinite-footer .blog-info a {
color: #2b2b2b;
}
#infinite-footer .blog-credits,
#infinite-footer .blog-credits a {
color: #767676;
}
#infinite-footer .blog-info a:hover,
#infinite-footer .blog-credits a:hover {
color: #41a62a;
text-decoration: none;
}
/* Elements to hide: post navigation, normal footer. */
.infinite-scroll .paging-navigation,
.infinite-scroll.neverending #colophon {
display: none;
}
@media (max-width: 640px) {
#infinite-footer {
display: none;
}
}
/* Hooks to infinity-end body class to restore footer. */
.infinity-end.neverending #colophon {
display: block;
}
/* Reset top margin adjustment for subsequent posts added by Infinite Scroll */
.full-width .site-content .infinite-wrap .hentry.has-post-thumbnail:first-child {
margin-top: 0;
}
@media screen and (min-width: 401px) {
.infinite-loader,
#infinite-handle {
padding: 0 0 48px;
}
.list-view .site-content .infinite-wrap .hentry:first-of-type {
border-top: 1px solid rgba(0, 0, 0, 0.1);
padding-top: 48px;
}
.list-view .site-content .infinite-wrap .hentry.has-post-thumbnail {
border-top: 0;
padding-top: 0;
}
}

View file

@ -0,0 +1,47 @@
<?php
/**
* Infinite Scroll Theme Assets
*
* Register support for Twenty Fourteen.
*/
/**
* Add theme support for infinite scroll
*/
function twentyfourteen_infinite_scroll_init() {
add_theme_support( 'infinite-scroll', array(
'container' => 'content',
'footer' => 'page'
) );
}
add_action( 'after_setup_theme', 'twentyfourteen_infinite_scroll_init' );
/**
* Switch to the "click to load" type IS with the following cases
* 1. Viewed from iPad and the primary sidebar is active.
* 2. Viewed from mobile and either the primary or the content sudebar is active.
* 3. The footer widget is active.
*
* @return bool
*/
if ( function_exists( 'jetpack_is_mobile' ) ) {
function twentyfourteen_has_footer_widgets( $has_widgets ) {
if ( ( Jetpack_User_Agent_Info::is_ipad() && is_active_sidebar( 'sidebar-1' ) )
|| ( jetpack_is_mobile( '', true ) && ( is_active_sidebar( 'sidebar-1' ) || is_active_sidebar( 'sidebar-2' ) ) )
|| is_active_sidebar( 'sidebar-3' ) )
return true;
return $has_widgets;
}
add_filter( 'infinite_scroll_has_footer_widgets', 'twentyfourteen_has_footer_widgets' );
}
/**
* Enqueue CSS stylesheet with theme styles for Infinite Scroll.
*/
function twentyfourteen_infinite_scroll_enqueue_styles() {
wp_enqueue_style( 'infinity-twentyfourteen', plugins_url( 'twentyfourteen.css', __FILE__ ), array( 'the-neverending-homepage' ), '20131118' );
}
add_action( 'wp_enqueue_scripts', 'twentyfourteen_infinite_scroll_enqueue_styles', 25 );

View file

@ -0,0 +1,161 @@
.infinite-scroll .pagination {
display: none;
}
.infinite-wrap > article:before,
.infinite-wrap > article:after {
content: "";
display: table;
}
.infinite-wrap > article:after {
clear: both;
}
.infinite-wrap > article {
margin-bottom: 3.5em;
}
/* Spinner */
.site-main .infinite-loader {
clear: both;
color: currentColor;
height: 42px;
margin-bottom: 3.5em;
}
.infinite-loader .spinner {
right: 50% !important;
top: 50% !important;
}
/* Click-to-load */
#infinite-handle {
clear: both;
margin-right: 7.6923%;
margin-left: 7.6923%;
text-align: center;
}
.site-main #infinite-handle span {
background: #1a1a1a;
border-radius: 2px;
color: #fff;
font-family: Montserrat, "Helvetica Neue", sans-serif;
font-size: inherit;
font-weight: 700;
letter-spacing: 0.046875em;
line-height: 1;
padding: 0.84375em 0.875em 0.78125em;
text-transform: uppercase;
}
#infinite-handle span:hover,
#infinite-handle span:focus {
background: #007acc;
}
#infinite-handle button:focus {
outline-offset: 0.375em;
}
/* Footer */
body #infinite-footer {
display: none;
z-index: 999;
}
body #infinite-footer .container {
background-color: #fff;
background-color: rgba(255, 255, 255, 0.8);
border-color: #d1d1d1;
padding: 0 7.6923%;
width: 100% !important;
}
body #infinite-footer .blog-info {
font-family: Montserrat, "Helvetica Neue", sans-serif;
height: 2.1875em;
line-height: 2.1875em;
}
body #infinite-footer .blog-info a {
color: #1a1a1a;
font-size: inherit
}
body #infinite-footer .blog-credits {
font-size: 13px;
font-size: 0.8125rem;
height: 2.692307692em;
line-height: 2.692307692em;
}
body #infinite-footer .blog-credits,
body #infinite-footer .blog-credits a {
color: #686868;
}
body #infinite-footer .blog-info a:hover,
body #infinite-footer .blog-info a:focus,
body #infinite-footer .blog-credits a:hover,
body #infinite-footer .blog-credits a:focus {
color: #007acc;
text-decoration: none;
}
@media screen and (min-width: 44.375em) {
.infinite-wrap > article,
.site-main .infinite-loader {
margin-bottom: 5.25em;
}
.infinite-loader .spinner {
right: 7.6923% !important;
margin-right: 12px;
}
#infinite-handle {
text-align: right;
}
.site-main #infinite-handle span {
display: inline-block;
}
body #infinite-footer .container {
padding: 0 0.761904762em;
width: -webkit-calc(100% - 42px) !important;
width: calc(100% - 42px) !important;
}
body:not(.custom-background-image) #infinite-footer {
bottom: 21px !important;
}
}
@media screen and (min-width: 56.875em) {
.infinite-loader .spinner {
right: 0 !important;
}
#infinite-handle {
margin: 0;
}
.no-sidebar .infinite-loader .spinner {
right: 50% !important;
margin: 0;
}
.no-sidebar #infinite-handle {
text-align: center;
}
}
@media screen and (min-width: 61.5625em) {
.infinite-wrap > article,
.site-main .infinite-loader {
margin-bottom: 7.0em;
}
}

View file

@ -0,0 +1,161 @@
.infinite-scroll .pagination {
display: none;
}
.infinite-wrap > article:before,
.infinite-wrap > article:after {
content: "";
display: table;
}
.infinite-wrap > article:after {
clear: both;
}
.infinite-wrap > article {
margin-bottom: 3.5em;
}
/* Spinner */
.site-main .infinite-loader {
clear: both;
color: currentColor;
height: 42px;
margin-bottom: 3.5em;
}
.infinite-loader .spinner {
left: 50% !important;
top: 50% !important;
}
/* Click-to-load */
#infinite-handle {
clear: both;
margin-right: 7.6923%;
margin-left: 7.6923%;
text-align: center;
}
.site-main #infinite-handle span {
background: #1a1a1a;
border-radius: 2px;
color: #fff;
font-family: Montserrat, "Helvetica Neue", sans-serif;
font-size: inherit;
font-weight: 700;
letter-spacing: 0.046875em;
line-height: 1;
padding: 0.84375em 0.875em 0.78125em;
text-transform: uppercase;
}
#infinite-handle span:hover,
#infinite-handle span:focus {
background: #007acc;
}
#infinite-handle button:focus {
outline-offset: 0.375em;
}
/* Footer */
body #infinite-footer {
display: none;
z-index: 999;
}
body #infinite-footer .container {
background-color: #fff;
background-color: rgba(255, 255, 255, 0.8);
border-color: #d1d1d1;
padding: 0 7.6923%;
width: 100% !important;
}
body #infinite-footer .blog-info {
font-family: Montserrat, "Helvetica Neue", sans-serif;
height: 2.1875em;
line-height: 2.1875em;
}
body #infinite-footer .blog-info a {
color: #1a1a1a;
font-size: inherit
}
body #infinite-footer .blog-credits {
font-size: 13px;
font-size: 0.8125rem;
height: 2.692307692em;
line-height: 2.692307692em;
}
body #infinite-footer .blog-credits,
body #infinite-footer .blog-credits a {
color: #686868;
}
body #infinite-footer .blog-info a:hover,
body #infinite-footer .blog-info a:focus,
body #infinite-footer .blog-credits a:hover,
body #infinite-footer .blog-credits a:focus {
color: #007acc;
text-decoration: none;
}
@media screen and (min-width: 44.375em) {
.infinite-wrap > article,
.site-main .infinite-loader {
margin-bottom: 5.25em;
}
.infinite-loader .spinner {
left: 7.6923% !important;
margin-left: 12px;
}
#infinite-handle {
text-align: left;
}
.site-main #infinite-handle span {
display: inline-block;
}
body #infinite-footer .container {
padding: 0 0.761904762em;
width: -webkit-calc(100% - 42px) !important;
width: calc(100% - 42px) !important;
}
body:not(.custom-background-image) #infinite-footer {
bottom: 21px !important;
}
}
@media screen and (min-width: 56.875em) {
.infinite-loader .spinner {
left: 0 !important;
}
#infinite-handle {
margin: 0;
}
.no-sidebar .infinite-loader .spinner {
left: 50% !important;
margin: 0;
}
.no-sidebar #infinite-handle {
text-align: center;
}
}
@media screen and (min-width: 61.5625em) {
.infinite-wrap > article,
.site-main .infinite-loader {
margin-bottom: 7.0em;
}
}

View file

@ -0,0 +1,41 @@
<?php
/**
* Infinite Scroll Theme Assets
*
* Register support for Twenty Sixteen.
*/
/**
* Add theme support for infinite scroll
*/
function twentysixteen_infinite_scroll_init() {
add_theme_support( 'infinite-scroll', array(
'container' => 'main',
'render' => 'twentysixteen_infinite_scroll_render',
'footer' => 'content',
) );
}
add_action( 'after_setup_theme', 'twentysixteen_infinite_scroll_init' );
/**
* Custom render function for Infinite Scroll.
*/
function twentysixteen_infinite_scroll_render() {
while ( have_posts() ) {
the_post();
if ( is_search() ) {
get_template_part( 'template-parts/content', 'search' );
} else {
get_template_part( 'template-parts/content', get_post_format() );
}
}
}
/**
* Enqueue CSS stylesheet with theme styles for Infinite Scroll.
*/
function twentysixteen_infinite_scroll_enqueue_styles() {
wp_enqueue_style( 'infinity-twentysixteen', plugins_url( 'twentysixteen.css', __FILE__ ), array( 'the-neverending-homepage' ), '20151102' );
wp_style_add_data( 'infinity-twentysixteen', 'rtl', 'replace' );
}
add_action( 'wp_enqueue_scripts', 'twentysixteen_infinite_scroll_enqueue_styles', 25 );

View file

@ -0,0 +1,25 @@
/* =Infinity Styles
-------------------------------------------------------------- */
.infinite-scroll #wrapper {
margin-bottom: 40px;
}
.infinite-scroll #content {
margin-bottom: 50px;
}
.infinite-scroll #content .infinite-wrap {
padding-top: 0;
border-top: 0;
}
/* Elements to hide */
.infinite-scroll #nav-above,
.infinite-scroll #nav-below,
.infinite-scroll.neverending #footer {
display: none;
}
/* Restore the footer when IS is finished */
.infinity-end.neverending #footer {
display: block;
}
#infinite-footer .blog-info a {
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
}

View file

@ -0,0 +1,48 @@
<?php
/**
* Infinite Scroll Theme Assets
*
* Register support for @Twenty Ten and enqueue relevant styles.
*/
/**
* Add theme support for infinity scroll
*/
function twenty_ten_infinite_scroll_init() {
add_theme_support( 'infinite-scroll', array(
'container' => 'content',
'render' => 'twenty_ten_infinite_scroll_render',
'footer' => 'wrapper',
) );
}
add_action( 'init', 'twenty_ten_infinite_scroll_init' );
/**
* Set the code to be rendered on for calling posts,
* hooked to template parts when possible.
*
* Note: must define a loop.
*/
function twenty_ten_infinite_scroll_render() {
get_template_part( 'loop' );
}
/**
* Enqueue CSS stylesheet with theme styles for infinity.
*/
function twenty_ten_infinite_scroll_enqueue_styles() {
// Add theme specific styles.
wp_enqueue_style( 'infinity-twentyten', plugins_url( 'twentyten.css', __FILE__ ), array( 'the-neverending-homepage' ), '20121002' );
}
add_action( 'wp_enqueue_scripts', 'twenty_ten_infinite_scroll_enqueue_styles', 25 );
/**
* Do we have footer widgets?
*/
function twenty_ten_has_footer_widgets( $has_widgets ) {
if ( is_active_sidebar( 'first-footer-widget-area' ) || is_active_sidebar( 'second-footer-widget-area' ) || is_active_sidebar( 'third-footer-widget-area' ) || is_active_sidebar( 'fourth-footer-widget-area' ) )
$has_widgets = true;
return $has_widgets;
}
add_filter( 'infinite_scroll_has_footer_widgets', 'twenty_ten_has_footer_widgets' );

View file

@ -0,0 +1,90 @@
/* =Infinite Scroll
-------------------------------------------------------------- */
.infinite-wrap {
border-top: 0;
}
/* Spinner */
.infinite-loader {
background-color: #e8e5ce;
padding: 40px 0;
}
.infinite-loader .spinner {
margin: 0 auto;
width: 34px;
height: 34px;
}
.sidebar .infinite-loader .spinner {
padding-right: 376px;
}
.rtl.sidebar .infinite-loader .spinner {
padding-left: 376px;
padding-right: 0;
}
/* Click-to-load */
#infinite-handle {
background-color: #e8e5ce;
padding: 40px 0;
text-align: center;
}
.sidebar #infinite-handle {
padding-right: 376px;
}
.rtl.sidebar #infinite-handle {
padding-left: 376px;
padding-right: 0;
}
#infinite-handle span {
background: #e05d22; /* Old browsers */
background: -webkit-linear-gradient(top, #e05d22 0%, #d94412 100%); /* Chrome 10+, Safari 5.1+ */
background: linear-gradient(to bottom, #e05d22 0%, #d94412 100%); /* W3C */
border: none;
border-bottom: 3px solid #b93207;
border-radius: 2px;
display: inline-block;
color: #fff;
font-size: 100%;
padding: 11px 24px 10px;
text-decoration: none;
}
#infinite-handle span:hover {
background: #ed6a31; /* Old browsers */
background: -webkit-linear-gradient(top, #ed6a31 0%, #e55627 100%); /* Chrome 10+, Safari 5.1+ */
background: linear-gradient(to bottom, #ed6a31 0%, #e55627 100%); /* W3C */
outline: none;
}
#infinite-handle span:active {
background: #d94412; /* Old browsers */
background: -webkit-linear-gradient(top, #d94412 0%, #e05d22 100%); /* Chrome 10+, Safari 5.1+ */
background: linear-gradient(to bottom, #d94412 0%, #e05d22 100%); /* W3C */
border: none;
border-top: 3px solid #b93207;
padding: 10px 24px 11px;
}
/* Elements to hide: post navigation, normal footer. */
.infinite-scroll .paging-navigation,
.infinite-scroll.neverending #colophon {
display: none;
}
/* Hooks to infinity-end body class to restore footer. */
.infinity-end.neverending #colophon {
display: block;
}
/* For small viewports. */
@media (max-width: 999px) {
.sidebar .infinite-loader .spinner,
.rtl.sidebar .infinite-loader .spinner {
padding-right: 0;
padding-left: 0;
}
.infinite-scroll #infinite-handle,
.rtl.sidebar #infinite-handle {
padding-right: 0;
padding-left: 0;
}
}

View file

@ -0,0 +1,26 @@
<?php
/**
* Infinite Scroll Theme Assets
*
* Register support for Twenty Thirteen.
*/
/**
* Add theme support for infinite scroll
*/
function twentythirteen_infinite_scroll_init() {
add_theme_support( 'infinite-scroll', array(
'container' => 'content',
'footer' => 'page',
'footer_widgets' => array( 'sidebar-1' )
) );
}
add_action( 'after_setup_theme', 'twentythirteen_infinite_scroll_init' );
/**
* Enqueue CSS stylesheet with theme styles for Infinite Scroll.
*/
function twentythirteen_infinite_scroll_enqueue_styles() {
wp_enqueue_style( 'infinity-twentythirteen', plugins_url( 'twentythirteen.css', __FILE__ ), array( 'the-neverending-homepage' ), '20130409' );
}
add_action( 'wp_enqueue_scripts', 'twentythirteen_infinite_scroll_enqueue_styles', 25 );

View file

@ -0,0 +1,33 @@
/* =Infinity Styles
-------------------------------------------------------------- */
.infinite-scroll .site-content:after {
clear: both;
content: '';
display: block;
}
.infinite-wrap {
border-top: 0;
}
.infinite-scroll.neverending .site-content {
margin-bottom: 48px;
margin-bottom: 3.428571429rem;
}
/* Elements to hide: post navigation, regular footer */
.infinite-scroll #nav-below,
.infinite-scroll.neverending #colophon {
display: none;
}
/* Hooks to infinity-end body class to restore footer */
.infinity-end.neverending #colophon {
display: block;
}
/* For responsive CSS */
@media (max-width: 599px) {
.infinite-scroll #infinite-handle {
padding-bottom: 48px;
padding-bottom: 3.428571429rem;
}
}

View file

@ -0,0 +1,46 @@
<?php
/**
* Infinite Scroll Theme Assets
*
* Register support for Twenty Twelve and enqueue relevant styles.
*/
/**
* Add theme support for infinite scroll
*/
function twenty_twelve_infinite_scroll_init() {
add_theme_support( 'infinite-scroll', array(
'container' => 'content',
'footer' => 'page'
) );
}
add_action( 'after_setup_theme', 'twenty_twelve_infinite_scroll_init' );
/**
* Enqueue CSS stylesheet with theme styles for infinity.
*/
function twenty_twelve_infinite_scroll_enqueue_styles() {
// Add theme specific styles.
wp_enqueue_style( 'infinity-twentytwelve', plugins_url( 'twentytwelve.css', __FILE__ ), array( 'the-neverending-homepage' ), '20120817' );
}
add_action( 'wp_enqueue_scripts', 'twenty_twelve_infinite_scroll_enqueue_styles', 25 );
/**
* Handle `footer_widgets` argument for mobile devices
*
* @param bool $has_widgets
* @uses jetpack_is_mobile, is_front_page, is_active_sidebar
* @filter infinite_scroll_has_footer_widgets
* @return bool
*/
function twenty_twelve_has_footer_widgets( $has_widgets ) {
if ( function_exists( 'jetpack_is_mobile' ) && jetpack_is_mobile() ) {
if ( is_front_page() && ( is_active_sidebar( 'sidebar-2' ) || is_active_sidebar( 'sidebar-3' ) ) )
$has_widgets = true;
elseif ( is_active_sidebar( 'sidebar-1' ) )
$has_widgets = true;
}
return $has_widgets;
}
add_filter( 'infinite_scroll_has_footer_widgets', 'twenty_twelve_has_footer_widgets' );