From 37144f5414ebc3a344d2da794a4dfa148e6ab54a Mon Sep 17 00:00:00 2001
From: Braad Martin
Date: Thu, 15 Jan 2015 11:47:48 -0800
Subject: [PATCH 01/31] Add spacing to match WP standards, comment out logging,
add $ to variable names for jQuery objects
---
includes/js/theme-jquery.js | 123 ++++++++++++++++++------------------
1 file changed, 63 insertions(+), 60 deletions(-)
diff --git a/includes/js/theme-jquery.js b/includes/js/theme-jquery.js
index 784db77..ef3bf8b 100644
--- a/includes/js/theme-jquery.js
+++ b/includes/js/theme-jquery.js
@@ -7,98 +7,101 @@
*/
// Executes when the document is ready
-jQuery(document).ready(function( $ ) {
+jQuery( document ).ready( function( $ ) {
// Get PHP vars passed via wp_localize_script()
trestleEqualColsBreakpoint = trestle_vars.trestle_equal_cols_breakpoint;
trestleEqualHeightCols = trestle_vars.trestle_equal_height_cols;
// Remove .no-jquery body class
- $('body').removeClass('no-jquery');
+ $( 'body' ).removeClass( 'no-jquery' );
// External Links
var h = window.location.host.toLowerCase();
- $('[href^="http"]').not('[href*="' + h + '"]').addClass('external-link').attr("target", "_blank");
+ $( '[href^="http"]' ).not( '[href*="' + h + '"]' ).addClass( 'external-link' ).attr( "target", "_blank" );
// Add classes to different types of links
- $('a[href^="mailto:"]').addClass('email-link');
- $('a[href*=".pdf"]').attr({"target":"_blank"}).addClass('pdf-link');
- $('a[href*=".doc"]').attr({"target":"_blank"}).addClass('doc-link');
- $('a').has('img').addClass('image-link');
+ $( 'a[href^="mailto:"]' ).addClass( 'email-link' );
+ $( 'a[href*=".pdf"]' ).attr({ "target":"_blank" }).addClass( 'pdf-link' );
+ $( 'a[href*=".doc"]' ).attr({ "target":"_blank" }).addClass( 'doc-link' );
+ $( 'a' ).has( 'img' ).addClass( 'image-link' );
// Add classes to parts of lists
- $('li:last-child').addClass('last');
- $('li:first-child').addClass('first');
- $('ul, ol').parent('li').addClass('parent');
+ $( 'li:last-child' ).addClass( 'last' );
+ $( 'li:first-child' ).addClass( 'first' );
+ $( 'ul, ol' ).parent( 'li' ).addClass( 'parent' );
// Mobile header toggle buttons
- $('.site-header .title-area').after('');
- $('.site-header .widget-area, .nav-primary').each(function(i) {
- var target = $(this);
-
+ $( '.site-header .title-area' ).after( '' );
+ $( '.site-header .widget-area, .nav-primary' ).each( function( i ) {
+ var $target = $( this );
var buttonClass = 'toggle-button';
// Add classes of target element
- var targetClass = target.attr('class').split(/\s+/);
- $.each(targetClass, function(index,value) {
+ var targetClass = $target.attr( 'class' ).split( /\s+/ );
+ $.each( targetClass, function( index, value ) {
buttonClass += ' targets-' + value;
});
- if ( $(this).is( 'nav' ) ) {
+ if ( $( this ).is( 'nav' ) ) {
buttonClass += ' nav-toggle';
}
// Add toggle buttons to header
- $('.toggle-buttons').prepend('Toggle');
+ $( '.toggle-buttons' ).prepend( 'Toggle' );
// Add target class to nav and widget areas
- target.addClass('toggle-target-' + i );
+ $target.addClass( 'toggle-target-' + i );
});
// Toggle widget areas and primary nav
- $('.site-header .toggle-button').click( function( event ) {
+ $( '.site-header .toggle-button' ).click( function( event ) {
event.preventDefault();
- var button = $(this);
- var target = $( '.toggle-target-' + button.attr('id').match(/\d+/) );
+ var $button = $( this );
+ var $target = $( '.toggle-target-' + button.attr( 'id' ).match( /\d+/ ) );
// Toggle buttons
- button.toggleClass('open');
- $('.site-header .toggle-button').not(button).removeClass('open');
+ $button.toggleClass( 'open' );
+ $( '.site-header .toggle-button' ).not( $button ).removeClass( 'open' );
// Toggle targets
- target.toggleClass('open');
- $('[class*="toggle-target"]').not(target).removeClass('open');
+ $target.toggleClass( 'open' );
+ $( '[class*="toggle-target"]' ).not( $target ).removeClass( 'open' );
});
// Mobile navigation icons
var closedIcon = '+';
var openIcon = '-';
- $('.nav-primary').find('.genesis-nav-menu .parent:not(.current-menu-item, .current_page_item, .current_page_parent, .current_page_ancestor) > a').after('' + closedIcon + '');
- $('.nav-primary').find('.genesis-nav-menu .parent.current-menu-item > a, .genesis-nav-menu .parent.current_page_item > a, .genesis-nav-menu .parent.current_page_parent > a, .genesis-nav-menu .parent.current_page_ancestor > a').after('' + openIcon + '');
+ $( '.nav-primary' )
+ .find( '.genesis-nav-menu .parent:not(.current-menu-item, .current_page_item, .current_page_parent, .current_page_ancestor) > a' )
+ .after( '' + closedIcon + '' );
+ $( '.nav-primary' )
+ .find( '.genesis-nav-menu .parent.current-menu-item > a, .genesis-nav-menu .parent.current_page_item > a, .genesis-nav-menu .parent.current_page_parent > a, .genesis-nav-menu .parent.current_page_ancestor > a' )
+ .after( '' + openIcon + '' );
// Mobile navigation expand/contract functionality
- $('.sub-icon').click(function(event) {
+ $( '.sub-icon' ).click( function( event ) {
event.preventDefault();
- var icon = $(this);
- icon.next('ul').slideToggle().toggleClass('open');
- if ( icon.text().indexOf( closedIcon ) !== -1 )
- icon.text(openIcon);
- else if ( icon.text().indexOf( openIcon ) !== -1 )
- icon.text(closedIcon);
+ var $icon = $( this );
+ $icon.next( 'ul' ).slideToggle().toggleClass( 'open' );
+ if ( $icon.text().indexOf( closedIcon ) !== -1 )
+ $icon.text( openIcon );
+ else if ( $icon.text().indexOf( openIcon ) !== -1 )
+ $icon.text( closedIcon );
});
- $('.widget-area-toggle').click(function(event) {
+ $( '.widget-area-toggle' ).click( function( event ) {
event.preventDefault();
- var button = $(this);
- button.toggleClass('open');
- button.next('.widget-area').slideToggle();
+ var $button = $( this );
+ $button.toggleClass( 'open' );
+ $button.next( '.widget-area' ).slideToggle();
});
// Equal height homepage cols
- $('.equal-height-genesis-extender-cols .ez-home-container-area').each(function() {
- $(this).children('.widget-area').equalHeights(null,null,trestleEqualColsBreakpoint);
+ $( '.equal-height-genesis-extender-cols .ez-home-container-area' ).each( function() {
+ $( this ).children( '.widget-area' ).equalHeights( null, null, trestleEqualColsBreakpoint );
});
@@ -106,7 +109,7 @@ jQuery(document).ready(function( $ ) {
// Executes when complete page is fully loaded, including all frames, objects, and images
-jQuery(window).load(function( $ ) {
+jQuery( window ).load( function( $ ) {
});
@@ -125,32 +128,32 @@ jQuery(window).load(function( $ ) {
*
* Usage: jQuery(object).equalHeights([minHeight], [maxHeight], [breakPoint]);
*
- * Example 1: jQuery(".cols").equalHeights(); Sets all columns to the same height.
- * Example 2: jQuery(".cols").equalHeights(400); Sets all cols to at least 400px tall.
- * Example 3: jQuery(".cols").equalHeights(100,300); Cols are at least 100 but no more
+ * Example 1: jQuery( ".cols" ).equalHeights(); Sets all columns to the same height.
+ * Example 2: jQuery( ".cols" ).equalHeights( 400 ); Sets all cols to at least 400px tall.
+ * Example 3: jQuery( ".cols" ).equalHeights( 100, 300 ); Cols are at least 100 but no more
* than 300 pixels tall. Elements with too much content will gain a scrollbar.
- * Example 4: jQuery(".cols").equalHeights(null, null,768); Only resize columns above 768px viewport
+ * Example 4: jQuery( ".cols" ).equalHeights( null, null,768 ); Only resize columns above 768px viewport
*
*/
- (function( $ ) {
- $.fn.equalHeights = function(minHeight, maxHeight, breakPoint) {
- var items = this;
+ ( function( $ ) {
+ $.fn.equalHeights = function( minHeight, maxHeight, breakPoint ) {
+ var $items = this;
breakPoint = breakPoint || 0;
// Bind functionality to appropriate events
- $(window).on('load orientationchange resize equalheights', function() {
- tallest = (minHeight) ? minHeight : 0;
- items.each(function() {
- $(this).height('auto');
- if($(this).outerHeight() > tallest) {
- tallest = $(this).outerHeight();
+ $( window ).on( 'load orientationchange resize equalheights', function() {
+ tallest = ( minHeight ) ? minHeight : 0;
+ $items.each( function() {
+ $( this ).height( 'auto' );
+ if( $( this ).outerHeight() > tallest ) {
+ tallest = $( this ).outerHeight();
}
});
// Get viewport width (taking scrollbars into account)
var e = window;
a = 'inner';
- if (!('innerWidth' in window )) {
+ if ( !( 'innerWidth' in window ) ) {
a = 'client';
e = document.documentElement || document.body;
}
@@ -158,10 +161,10 @@ jQuery(window).load(function( $ ) {
// Equalize column heights if above the specified breakpoint
if ( width >= breakPoint ) {
- if((maxHeight) && tallest > maxHeight) tallest = maxHeight;
- console.log(tallest);
- return items.each(function() {
- $(this).height(tallest);
+ if( ( maxHeight ) && tallest > maxHeight ) tallest = maxHeight;
+ //console.log( tallest );
+ return items.each( function() {
+ $( this ).height( tallest );
});
}
});
From 3327b1518cabe1d475970928e049b16d6fd3ef4b Mon Sep 17 00:00:00 2001
From: Braad Martin
Date: Thu, 15 Jan 2015 17:27:39 -0800
Subject: [PATCH 02/31] Fix $button selector
---
includes/js/theme-jquery.js | 20 ++++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/includes/js/theme-jquery.js b/includes/js/theme-jquery.js
index ef3bf8b..2063e31 100644
--- a/includes/js/theme-jquery.js
+++ b/includes/js/theme-jquery.js
@@ -15,7 +15,7 @@ jQuery( document ).ready( function( $ ) {
// Remove .no-jquery body class
$( 'body' ).removeClass( 'no-jquery' );
-
+
// External Links
var h = window.location.host.toLowerCase();
$( '[href^="http"]' ).not( '[href*="' + h + '"]' ).addClass( 'external-link' ).attr( "target", "_blank" );
@@ -42,7 +42,7 @@ jQuery( document ).ready( function( $ ) {
$.each( targetClass, function( index, value ) {
buttonClass += ' targets-' + value;
});
-
+
if ( $( this ).is( 'nav' ) ) {
buttonClass += ' nav-toggle';
}
@@ -53,13 +53,13 @@ jQuery( document ).ready( function( $ ) {
// Add target class to nav and widget areas
$target.addClass( 'toggle-target-' + i );
});
-
+
// Toggle widget areas and primary nav
$( '.site-header .toggle-button' ).click( function( event ) {
event.preventDefault();
var $button = $( this );
- var $target = $( '.toggle-target-' + button.attr( 'id' ).match( /\d+/ ) );
+ var $target = $( '.toggle-target-' + $button.attr( 'id' ).match( /\d+/ ) );
// Toggle buttons
$button.toggleClass( 'open' );
@@ -80,7 +80,7 @@ jQuery( document ).ready( function( $ ) {
$( '.nav-primary' )
.find( '.genesis-nav-menu .parent.current-menu-item > a, .genesis-nav-menu .parent.current_page_item > a, .genesis-nav-menu .parent.current_page_parent > a, .genesis-nav-menu .parent.current_page_ancestor > a' )
.after( '' + openIcon + '' );
-
+
// Mobile navigation expand/contract functionality
$( '.sub-icon' ).click( function( event ) {
event.preventDefault();
@@ -91,7 +91,7 @@ jQuery( document ).ready( function( $ ) {
else if ( $icon.text().indexOf( openIcon ) !== -1 )
$icon.text( closedIcon );
});
-
+
$( '.widget-area-toggle' ).click( function( event ) {
event.preventDefault();
var $button = $( this );
@@ -104,7 +104,7 @@ jQuery( document ).ready( function( $ ) {
$( this ).children( '.widget-area' ).equalHeights( null, null, trestleEqualColsBreakpoint );
});
-
+
}); /* end of as page load scripts */
@@ -116,7 +116,7 @@ jQuery( window ).load( function( $ ) {
/**
* Equal Heights Plugin
- *
+ *
* Equalize the heights of elements. Great for columns or any elements
* that need to be the same size (floats, etc).
*
@@ -127,13 +127,13 @@ jQuery( window ).load( function( $ ) {
* - binds the script to run on load, orientation change (for mobile), and when resizing the window
*
* Usage: jQuery(object).equalHeights([minHeight], [maxHeight], [breakPoint]);
- *
+ *
* Example 1: jQuery( ".cols" ).equalHeights(); Sets all columns to the same height.
* Example 2: jQuery( ".cols" ).equalHeights( 400 ); Sets all cols to at least 400px tall.
* Example 3: jQuery( ".cols" ).equalHeights( 100, 300 ); Cols are at least 100 but no more
* than 300 pixels tall. Elements with too much content will gain a scrollbar.
* Example 4: jQuery( ".cols" ).equalHeights( null, null,768 ); Only resize columns above 768px viewport
- *
+ *
*/
( function( $ ) {
$.fn.equalHeights = function( minHeight, maxHeight, breakPoint ) {
From 41494c53ae85bc5f3ba456e73ace8edaab266815 Mon Sep 17 00:00:00 2001
From: Braad Martin
Date: Fri, 16 Jan 2015 13:48:16 -0800
Subject: [PATCH 03/31] Improvements to the equalHeights plugin, relocation of
load scripts, various fixes
---
includes/js/theme-jquery.js | 105 +++++++++++++++++++++---------------
1 file changed, 63 insertions(+), 42 deletions(-)
diff --git a/includes/js/theme-jquery.js b/includes/js/theme-jquery.js
index 2063e31..d825bf3 100644
--- a/includes/js/theme-jquery.js
+++ b/includes/js/theme-jquery.js
@@ -99,19 +99,17 @@ jQuery( document ).ready( function( $ ) {
$button.next( '.widget-area' ).slideToggle();
});
- // Equal height homepage cols
- $( '.equal-height-genesis-extender-cols .ez-home-container-area' ).each( function() {
- $( this ).children( '.widget-area' ).equalHeights( null, null, trestleEqualColsBreakpoint );
- });
+ // Executes when complete page is fully loaded, including all frames, objects, and images
+ $( window ).on( 'load', function() {
+ // Equal height homepage cols
+ $( '.equal-height-genesis-extender-cols .ez-home-container-area' ).each( function() {
+ $( this ).children( '.widget-area' ).equalHeights( null, null, trestleEqualColsBreakpoint );
+ });
-}); /* end of as page load scripts */
+ });
-
-// Executes when complete page is fully loaded, including all frames, objects, and images
-jQuery( window ).load( function( $ ) {
-
-});
+}); /* end of page load scripts */
/**
@@ -135,39 +133,62 @@ jQuery( window ).load( function( $ ) {
* Example 4: jQuery( ".cols" ).equalHeights( null, null,768 ); Only resize columns above 768px viewport
*
*/
- ( function( $ ) {
- $.fn.equalHeights = function( minHeight, maxHeight, breakPoint ) {
- var $items = this;
- breakPoint = breakPoint || 0;
+( function( $ ) {
- // Bind functionality to appropriate events
- $( window ).on( 'load orientationchange resize equalheights', function() {
- tallest = ( minHeight ) ? minHeight : 0;
- $items.each( function() {
- $( this ).height( 'auto' );
- if( $( this ).outerHeight() > tallest ) {
- tallest = $( this ).outerHeight();
- }
- });
+ $.fn.equalHeights = function( minHeight, maxHeight, breakPoint ) {
- // Get viewport width (taking scrollbars into account)
- var e = window;
- a = 'inner';
- if ( !( 'innerWidth' in window ) ) {
- a = 'client';
- e = document.documentElement || document.body;
- }
- width = e[ a+'Width' ];
+ /**
+ * Unbind all plugin events so that we can call this function again
+ * to reset it without creating multiple handlers for the same events.
+ * This allows us to manually retrigger if we have added new elements
+ * into the DOM using ajax or .clone().
+ */
+ $( window ).off( '.equalheights', equalHeightsInit );
- // Equalize column heights if above the specified breakpoint
- if ( width >= breakPoint ) {
- if( ( maxHeight ) && tallest > maxHeight ) tallest = maxHeight;
- //console.log( tallest );
- return items.each( function() {
- $( this ).height( tallest );
- });
- }
- });
- }
+ // Scope our local variables
+ var $items, breakPoint;
- })(jQuery);
+ // Store the jQuery objects upon which this function has been called
+ $items = this;
+
+ // Store the breakPoint arg if it was passsed in
+ breakPoint = breakPoint || 0;
+
+ // Actual logic for this plugin
+ var equalHeightsInit = function() {
+
+ // Calculate the tallest
+ tallest = ( minHeight ) ? minHeight : 0;
+ $items.each( function() {
+ $( this ).height( 'auto' );
+ if( $( this ).outerHeight() > tallest ) {
+ tallest = $( this ).outerHeight();
+ }
+ });
+
+ // Get viewport width (taking scrollbars into account)
+ var e = window;
+ a = 'inner';
+ if ( !( 'innerWidth' in window ) ) {
+ a = 'client';
+ e = document.documentElement || document.body;
+ }
+ width = e[ a+'Width' ];
+
+ // Equalize heights if viewport width is above the specified breakpoint
+ if ( width >= breakPoint ) {
+ if( ( maxHeight ) && tallest > maxHeight ) tallest = maxHeight;
+ return $items.each( function() {
+ $( this ).height( tallest );
+ });
+ }
+ }
+
+ // Trigger the main plugin function
+ equalHeightsInit();
+
+ // Bind appropriate events for the first time this plugin is run
+ $( window ).on( 'orientationchange.equalheights resize.equalheights equalheights.equalheights', equalHeightsInit );
+ }
+
+})( jQuery );
From b0fa089bd035e39abd887507aa76f2f05de445d8 Mon Sep 17 00:00:00 2001
From: Braad Martin
Date: Fri, 23 Jan 2015 16:46:53 -0800
Subject: [PATCH 04/31] Improvements to the equalHeights plugin
Now we're using $.proxy() to keep the context correct when executing the event handlers
---
includes/js/theme-jquery.js | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/includes/js/theme-jquery.js b/includes/js/theme-jquery.js
index d825bf3..057fe74 100644
--- a/includes/js/theme-jquery.js
+++ b/includes/js/theme-jquery.js
@@ -143,7 +143,7 @@ jQuery( document ).ready( function( $ ) {
* This allows us to manually retrigger if we have added new elements
* into the DOM using ajax or .clone().
*/
- $( window ).off( '.equalheights', equalHeightsInit );
+ $( window ).off( '.equalheights', doEqualHeights );
// Scope our local variables
var $items, breakPoint;
@@ -155,7 +155,7 @@ jQuery( document ).ready( function( $ ) {
breakPoint = breakPoint || 0;
// Actual logic for this plugin
- var equalHeightsInit = function() {
+ function doEqualHeights( $items ) {
// Calculate the tallest
tallest = ( minHeight ) ? minHeight : 0;
@@ -185,10 +185,12 @@ jQuery( document ).ready( function( $ ) {
}
// Trigger the main plugin function
- equalHeightsInit();
+ doEqualHeights( $items );
+
+ // Attach doEqualHeights as an event handler to the window resize events
+ // We're using $.proxy() to pass in the right $items to keep our context correct
+ $( window ).on( 'orientationchange.equalheights resize.equalheights equalheights.equalheights', $.proxy( doEqualHeights, null, $items ) );
- // Bind appropriate events for the first time this plugin is run
- $( window ).on( 'orientationchange.equalheights resize.equalheights equalheights.equalheights', equalHeightsInit );
}
})( jQuery );
From c6a8b0726dfa2285e7068ddd1c5be82bdebbd42f Mon Sep 17 00:00:00 2001
From: Braad Martin
Date: Fri, 23 Jan 2015 16:48:17 -0800
Subject: [PATCH 05/31] Update the inline documentation for equalHeights
---
includes/js/theme-jquery.js | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/includes/js/theme-jquery.js b/includes/js/theme-jquery.js
index 057fe74..feae7ec 100644
--- a/includes/js/theme-jquery.js
+++ b/includes/js/theme-jquery.js
@@ -118,11 +118,14 @@ jQuery( document ).ready( function( $ ) {
* Equalize the heights of elements. Great for columns or any elements
* that need to be the same size (floats, etc).
*
+ * Must be first triggered on either ready (if only text) or load (if images are included)
+ *
* Based on Rob Glazebrook's (cssnewbie.com) script
*
* Additions
* - ability to include a break point (the minimum viewport width at which the script does anything)
- * - binds the script to run on load, orientation change (for mobile), and when resizing the window
+ * - binds to window resize events (resize and orientationchange), unbinds and rebinds if called again
+ * - can be called multiple times to reset or handle DOM changes via ajax or .clone()
*
* Usage: jQuery(object).equalHeights([minHeight], [maxHeight], [breakPoint]);
*
@@ -190,7 +193,6 @@ jQuery( document ).ready( function( $ ) {
// Attach doEqualHeights as an event handler to the window resize events
// We're using $.proxy() to pass in the right $items to keep our context correct
$( window ).on( 'orientationchange.equalheights resize.equalheights equalheights.equalheights', $.proxy( doEqualHeights, null, $items ) );
-
}
})( jQuery );
From 10b473d97e321a3015a7d41e5f6e5107e9f5bba0 Mon Sep 17 00:00:00 2001
From: Braad Martin
Date: Fri, 23 Jan 2015 20:54:08 -0800
Subject: [PATCH 06/31] Improve jQuery to automatically remove focus (dotted
line) on events with e.preventDefault
Also simplifying the equalHeights inline docs
---
includes/js/theme-jquery.js | 28 +++++++++++++++++++++++++---
1 file changed, 25 insertions(+), 3 deletions(-)
diff --git a/includes/js/theme-jquery.js b/includes/js/theme-jquery.js
index feae7ec..a9a8199 100644
--- a/includes/js/theme-jquery.js
+++ b/includes/js/theme-jquery.js
@@ -56,9 +56,16 @@ jQuery( document ).ready( function( $ ) {
// Toggle widget areas and primary nav
$( '.site-header .toggle-button' ).click( function( event ) {
+
+ // Prevent default behavior
event.preventDefault();
+ // Get toggle button that was clicked
var $button = $( this );
+
+ //Remove focus
+ $button.blur();
+
var $target = $( '.toggle-target-' + $button.attr( 'id' ).match( /\d+/ ) );
// Toggle buttons
@@ -68,6 +75,7 @@ jQuery( document ).ready( function( $ ) {
// Toggle targets
$target.toggleClass( 'open' );
$( '[class*="toggle-target"]' ).not( $target ).removeClass( 'open' );
+
});
// Mobile navigation icons
@@ -83,8 +91,16 @@ jQuery( document ).ready( function( $ ) {
// Mobile navigation expand/contract functionality
$( '.sub-icon' ).click( function( event ) {
+
+ // Prevent default behavior
event.preventDefault();
+
+ // Get icon click
var $icon = $( this );
+
+ // Remove focus
+ $icon.blur();
+
$icon.next( 'ul' ).slideToggle().toggleClass( 'open' );
if ( $icon.text().indexOf( closedIcon ) !== -1 )
$icon.text( openIcon );
@@ -93,8 +109,16 @@ jQuery( document ).ready( function( $ ) {
});
$( '.widget-area-toggle' ).click( function( event ) {
+
+ // Prevent default behavior
event.preventDefault();
+
+ // Get button clicked
var $button = $( this );
+
+ // Remove focus
+ $button.blur();
+
$button.toggleClass( 'open' );
$button.next( '.widget-area' ).slideToggle();
});
@@ -118,14 +142,12 @@ jQuery( document ).ready( function( $ ) {
* Equalize the heights of elements. Great for columns or any elements
* that need to be the same size (floats, etc).
*
- * Must be first triggered on either ready (if only text) or load (if images are included)
- *
* Based on Rob Glazebrook's (cssnewbie.com) script
*
* Additions
* - ability to include a break point (the minimum viewport width at which the script does anything)
* - binds to window resize events (resize and orientationchange), unbinds and rebinds if called again
- * - can be called multiple times to reset or handle DOM changes via ajax or .clone()
+ * - can be called multiple times to handle DOM changes via ajax or .clone()
*
* Usage: jQuery(object).equalHeights([minHeight], [maxHeight], [breakPoint]);
*
From e9afb553708eabf1a5a1bc201d3a3adcc3b97d3f Mon Sep 17 00:00:00 2001
From: Braad Martin
Date: Fri, 23 Jan 2015 22:20:01 -0800
Subject: [PATCH 07/31] Formatting, first-pass at documenting every block
---
includes/js/theme-jquery.js | 82 ++++++++++++++++++++++---------------
1 file changed, 48 insertions(+), 34 deletions(-)
diff --git a/includes/js/theme-jquery.js b/includes/js/theme-jquery.js
index a9a8199..8b78df1 100644
--- a/includes/js/theme-jquery.js
+++ b/includes/js/theme-jquery.js
@@ -34,21 +34,29 @@ jQuery( document ).ready( function( $ ) {
// Mobile header toggle buttons
$( '.site-header .title-area' ).after( '' );
$( '.site-header .widget-area, .nav-primary' ).each( function( i ) {
- var $target = $( this );
- var buttonClass = 'toggle-button';
- // Add classes of target element
- var targetClass = $target.attr( 'class' ).split( /\s+/ );
+ // Store target
+ $target = $( this );
+
+ // Scope variables
+ var $target, buttonClass, targetClass;
+
+ // Setup classes
+ buttonClass = 'toggle-button';
+ targetClass = $target.attr( 'class' ).split( /\s+/ );
+
+ // Add targets-[] class to buttonClass
$.each( targetClass, function( index, value ) {
buttonClass += ' targets-' + value;
});
- if ( $( this ).is( 'nav' ) ) {
+ // Add nav-toggle class to buttonClass if the button is for the nav
+ if ( $target.is( 'nav' ) ) {
buttonClass += ' nav-toggle';
}
// Add toggle buttons to header
- $( '.toggle-buttons' ).prepend( 'Toggle' );
+ $( '.toggle-buttons' ).prepend( 'Toggle');
// Add target class to nav and widget areas
$target.addClass( 'toggle-target-' + i );
@@ -57,16 +65,20 @@ jQuery( document ).ready( function( $ ) {
// Toggle widget areas and primary nav
$( '.site-header .toggle-button' ).click( function( event ) {
- // Prevent default behavior
+ // Prevent default behavior
event.preventDefault();
- // Get toggle button that was clicked
- var $button = $( this );
-
+ // Scope our variables
+ var $button, $target;
+
+ // Get toggle button that was clicked
+ $button = $( this );
+
//Remove focus
$button.blur();
-
- var $target = $( '.toggle-target-' + $button.attr( 'id' ).match( /\d+/ ) );
+
+ // Match the button to the right target
+ $target = $( '.toggle-target-' + $button.attr( 'id' ).match( /\d+/ ) );
// Toggle buttons
$button.toggleClass( 'open' );
@@ -75,52 +87,52 @@ jQuery( document ).ready( function( $ ) {
// Toggle targets
$target.toggleClass( 'open' );
$( '[class*="toggle-target"]' ).not( $target ).removeClass( 'open' );
-
});
// Mobile navigation icons
var closedIcon = '+';
var openIcon = '-';
- $( '.nav-primary' )
- .find( '.genesis-nav-menu .parent:not(.current-menu-item, .current_page_item, .current_page_parent, .current_page_ancestor) > a' )
- .after( '' + closedIcon + '' );
- $( '.nav-primary' )
- .find( '.genesis-nav-menu .parent.current-menu-item > a, .genesis-nav-menu .parent.current_page_item > a, .genesis-nav-menu .parent.current_page_parent > a, .genesis-nav-menu .parent.current_page_ancestor > a' )
- .after( '' + openIcon + '' );
+ // Insert the icons into the nav where appropriate
+ $( '.nav-primary' ).find( '.genesis-nav-menu .parent:not( .current-menu-item, .current_page_item, .current_page_parent, .current_page_ancestor) > a' ).after( '' + closedIcon + '' );
+ $( '.nav-primary' ).find( '.genesis-nav-menu .parent.current-menu-item > a, .genesis-nav-menu .parent.current_page_item > a, .genesis-nav-menu .parent.current_page_parent > a, .genesis-nav-menu .parent.current_page_ancestor > a' ).after( '' + openIcon + '' );
// Mobile navigation expand/contract functionality
$( '.sub-icon' ).click( function( event ) {
-
+
// Prevent default behavior
event.preventDefault();
-
+
// Get icon click
var $icon = $( this );
-
+
// Remove focus
$icon.blur();
-
+
+ // Expand/contract
$icon.next( 'ul' ).slideToggle().toggleClass( 'open' );
- if ( $icon.text().indexOf( closedIcon ) !== -1 )
+
+ // Change the icon to indicate open/closed
+ if ( $icon.text().indexOf( closedIcon ) !== -1 )
$icon.text( openIcon );
else if ( $icon.text().indexOf( openIcon ) !== -1 )
$icon.text( closedIcon );
});
+ // Header widget area expand/contract functionality
$( '.widget-area-toggle' ).click( function( event ) {
-
+
// Prevent default behavior
event.preventDefault();
-
+
// Get button clicked
var $button = $( this );
-
+
// Remove focus
$button.blur();
-
- $button.toggleClass( 'open' );
- $button.next( '.widget-area' ).slideToggle();
+
+ // Expand/contract
+ $button.toggleClass( 'open' ).next( '.widget-area' ).slideToggle();
});
// Executes when complete page is fully loaded, including all frames, objects, and images
@@ -179,7 +191,7 @@ jQuery( document ).ready( function( $ ) {
// Store the breakPoint arg if it was passsed in
breakPoint = breakPoint || 0;
- // Actual logic for this plugin
+ // Equalize the heights
function doEqualHeights( $items ) {
// Calculate the tallest
@@ -209,12 +221,14 @@ jQuery( document ).ready( function( $ ) {
}
}
- // Trigger the main plugin function
+ // Start the equalizing
doEqualHeights( $items );
// Attach doEqualHeights as an event handler to the window resize events
- // We're using $.proxy() to pass in the right $items to keep our context correct
- $( window ).on( 'orientationchange.equalheights resize.equalheights equalheights.equalheights', $.proxy( doEqualHeights, null, $items ) );
+ // Use $.proxy() to pass in the right $items to keep the context correct
+ // when dealing with more than one collection of $items
+ $( window ).on( 'orientationchange.equalheights resize.equalheights equalheights.equalheights',
+ $.proxy( doEqualHeights, null, $items ) );
}
})( jQuery );
From 8c3122e90b41a9546c2ecb5192c831a1fe3c2ef4 Mon Sep 17 00:00:00 2001
From: Braad Martin
Date: Fri, 23 Jan 2015 22:28:08 -0800
Subject: [PATCH 08/31] Whitespace
---
includes/js/theme-jquery.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/includes/js/theme-jquery.js b/includes/js/theme-jquery.js
index 8b78df1..df586c2 100644
--- a/includes/js/theme-jquery.js
+++ b/includes/js/theme-jquery.js
@@ -56,7 +56,7 @@ jQuery( document ).ready( function( $ ) {
}
// Add toggle buttons to header
- $( '.toggle-buttons' ).prepend( 'Toggle');
+ $( '.toggle-buttons' ).prepend( 'Toggle' );
// Add target class to nav and widget areas
$target.addClass( 'toggle-target-' + i );
From da54115ae5e8bad63acb4ce1573a0ee93bc5e9db Mon Sep 17 00:00:00 2001
From: Braad Martin
Date: Fri, 30 Jan 2015 00:29:06 -0800
Subject: [PATCH 09/31] Big improvements to the equalHeights plugin
Also more specific selectors for the link classes
---
includes/js/theme-jquery.js | 115 +++++++++++++++++++++++++-----------
1 file changed, 80 insertions(+), 35 deletions(-)
diff --git a/includes/js/theme-jquery.js b/includes/js/theme-jquery.js
index df586c2..d33dd9e 100644
--- a/includes/js/theme-jquery.js
+++ b/includes/js/theme-jquery.js
@@ -22,8 +22,8 @@ jQuery( document ).ready( function( $ ) {
// Add classes to different types of links
$( 'a[href^="mailto:"]' ).addClass( 'email-link' );
- $( 'a[href*=".pdf"]' ).attr({ "target":"_blank" }).addClass( 'pdf-link' );
- $( 'a[href*=".doc"]' ).attr({ "target":"_blank" }).addClass( 'doc-link' );
+ $( 'a[href$=".pdf"]' ).attr({ "target":"_blank" }).addClass( 'pdf-link' );
+ $( 'a[href$=".doc"]' ).attr({ "target":"_blank" }).addClass( 'doc-link' );
$( 'a' ).has( 'img' ).addClass( 'image-link' );
// Add classes to parts of lists
@@ -86,7 +86,7 @@ jQuery( document ).ready( function( $ ) {
// Toggle targets
$target.toggleClass( 'open' );
- $( '[class*="toggle-target"]' ).not( $target ).removeClass( 'open' );
+ $( '[class^="toggle-target"]' ).not( $target ).removeClass( 'open' );
});
// Mobile navigation icons
@@ -147,7 +147,6 @@ jQuery( document ).ready( function( $ ) {
}); /* end of page load scripts */
-
/**
* Equal Heights Plugin
*
@@ -156,45 +155,66 @@ jQuery( document ).ready( function( $ ) {
*
* Based on Rob Glazebrook's (cssnewbie.com) script
*
- * Additions
+ * Features
* - ability to include a break point (the minimum viewport width at which the script does anything)
- * - binds to window resize events (resize and orientationchange), unbinds and rebinds if called again
- * - can be called multiple times to handle DOM changes via ajax or .clone()
+ * - binds to window resize events (resize and orientationchange)
+ * - will automatically detect new elements added to the DOM
+ * - can be called multiple times without duplicating any events
*
- * Usage: jQuery(object).equalHeights([minHeight], [maxHeight], [breakPoint]);
+ * Usage: jQuery( object ).equalHeights( [minHeight], [maxHeight], [breakPoint] );
*
* Example 1: jQuery( ".cols" ).equalHeights(); Sets all columns to the same height.
* Example 2: jQuery( ".cols" ).equalHeights( 400 ); Sets all cols to at least 400px tall.
* Example 3: jQuery( ".cols" ).equalHeights( 100, 300 ); Cols are at least 100 but no more
* than 300 pixels tall. Elements with too much content will gain a scrollbar.
- * Example 4: jQuery( ".cols" ).equalHeights( null, null,768 ); Only resize columns above 768px viewport
- *
+ * Example 4: jQuery( ".cols" ).equalHeights( null, null, 768 ); Only resize columns above 768px viewport
*/
( function( $ ) {
$.fn.equalHeights = function( minHeight, maxHeight, breakPoint ) {
- /**
- * Unbind all plugin events so that we can call this function again
- * to reset it without creating multiple handlers for the same events.
- * This allows us to manually retrigger if we have added new elements
- * into the DOM using ajax or .clone().
- */
- $( window ).off( '.equalheights', doEqualHeights );
+ // Scope our variables
+ var selector, args, eventData, resizeSet;
- // Scope our local variables
- var $items, breakPoint;
+ // Get the selector used to call equalHeights
+ selector = this.selector;
- // Store the jQuery objects upon which this function has been called
- $items = this;
-
- // Store the breakPoint arg if it was passsed in
+ // Use the args that were passed in or use the defaults
+ minHeight = minHeight || null;
+ maxHeight = maxHeight || null;
breakPoint = breakPoint || 0;
- // Equalize the heights
- function doEqualHeights( $items ) {
+ // Combine args into an array
+ args = [ minHeight, maxHeight, breakPoint ];
- // Calculate the tallest
+ // Check if our global already exists
+ if ( window.equalHeightsItems ) {
+
+ // It does, so add or overwrite the current object in it
+ window.equalHeightsItems[selector] = args;
+
+ } else {
+
+ // It doesn't, so create the global and store the current object in it
+ window.equalHeightsItems = {};
+ window.equalHeightsItems[selector] = args;
+ }
+
+ // Function to do the equalizing of the heights
+ function doEqualHeights( selector, args ) {
+
+ // Scope our variables
+ var $items, tallest, e, a, width;
+
+ // Grab the collection of items fresh from the DOM
+ $items = $( selector );
+
+ // Store the passed in args
+ minHeight = args[0];
+ maxHeight = args[1];
+ breakPoint = args[2];
+
+ // Calculate the tallest item
tallest = ( minHeight ) ? minHeight : 0;
$items.each( function() {
$( this ).height( 'auto' );
@@ -204,7 +224,7 @@ jQuery( document ).ready( function( $ ) {
});
// Get viewport width (taking scrollbars into account)
- var e = window;
+ e = window;
a = 'inner';
if ( !( 'innerWidth' in window ) ) {
a = 'client';
@@ -212,7 +232,7 @@ jQuery( document ).ready( function( $ ) {
}
width = e[ a+'Width' ];
- // Equalize heights if viewport width is above the specified breakpoint
+ // Equalize heights if viewport width is above the breakpoint
if ( width >= breakPoint ) {
if( ( maxHeight ) && tallest > maxHeight ) tallest = maxHeight;
return $items.each( function() {
@@ -221,14 +241,39 @@ jQuery( document ).ready( function( $ ) {
}
}
- // Start the equalizing
- doEqualHeights( $items );
+ // Function to trigger the equalizing
+ function triggerEqualHeights() {
- // Attach doEqualHeights as an event handler to the window resize events
- // Use $.proxy() to pass in the right $items to keep the context correct
- // when dealing with more than one collection of $items
- $( window ).on( 'orientationchange.equalheights resize.equalheights equalheights.equalheights',
- $.proxy( doEqualHeights, null, $items ) );
+ // Loop through each object in our global
+ $.each( window.equalHeightsItems, function( selector, args ) {
+
+ // Call doEqualHeights and pass in the current object
+ doEqualHeights( selector, args );
+ });
+ }
+
+ // Grab the event data from the window object
+ eventData = $( window ).data('events');
+
+ // Check if the window has the smartresize event
+ if ( eventData.resize ) {
+
+ // Check if the smartresize event has our namespace
+ $( eventData.resize ).each( function() {
+
+ // It does, so store this information in a variable
+ if( this.namespace == 'equalheights' ) { resizeSet = true; }
+ });
+ }
+
+ // Bind the window smartresize event to our trigger function if we
+ // haven't already done so
+ if ( ! resizeSet ) {
+ $( window ).on( 'resize.equalheights', triggerEqualHeights );
+ }
+
+ // Trigger the first equalizing
+ triggerEqualHeights();
}
})( jQuery );
From 33e7a5b3db66fddfb7f235cc4cc241f60c7d4945 Mon Sep 17 00:00:00 2001
From: Braad Martin
Date: Mon, 2 Feb 2015 23:53:13 -0800
Subject: [PATCH 10/31] Rewrite of equalHeights plugin, now it's bulletproof
---
includes/js/theme-jquery.js | 353 +++++++++++++++++++++---------------
1 file changed, 205 insertions(+), 148 deletions(-)
diff --git a/includes/js/theme-jquery.js b/includes/js/theme-jquery.js
index d33dd9e..44fd758 100644
--- a/includes/js/theme-jquery.js
+++ b/includes/js/theme-jquery.js
@@ -35,115 +35,115 @@ jQuery( document ).ready( function( $ ) {
$( '.site-header .title-area' ).after( '' );
$( '.site-header .widget-area, .nav-primary' ).each( function( i ) {
- // Store target
- $target = $( this );
+ // Store target
+ $target = $( this );
- // Scope variables
- var $target, buttonClass, targetClass;
+ // Scope variables
+ var $target, buttonClass, targetClass;
- // Setup classes
- buttonClass = 'toggle-button';
- targetClass = $target.attr( 'class' ).split( /\s+/ );
+ // Setup classes
+ buttonClass = 'toggle-button';
+ targetClass = $target.attr( 'class' ).split( /\s+/ );
- // Add targets-[] class to buttonClass
- $.each( targetClass, function( index, value ) {
- buttonClass += ' targets-' + value;
- });
+ // Add targets-[] class to buttonClass
+ $.each( targetClass, function( index, value ) {
+ buttonClass += ' targets-' + value;
+ });
- // Add nav-toggle class to buttonClass if the button is for the nav
- if ( $target.is( 'nav' ) ) {
- buttonClass += ' nav-toggle';
- }
+ // Add nav-toggle class to buttonClass if the button is for the nav
+ if ( $target.is( 'nav' ) ) {
+ buttonClass += ' nav-toggle';
+ }
- // Add toggle buttons to header
- $( '.toggle-buttons' ).prepend( 'Toggle' );
+ // Add toggle buttons to header
+ $( '.toggle-buttons' ).prepend( 'Toggle' );
- // Add target class to nav and widget areas
- $target.addClass( 'toggle-target-' + i );
- });
+ // Add target class to nav and widget areas
+ $target.addClass( 'toggle-target-' + i );
+ });
- // Toggle widget areas and primary nav
- $( '.site-header .toggle-button' ).click( function( event ) {
+ // Toggle widget areas and primary nav
+ $( '.site-header .toggle-button' ).click( function( event ) {
- // Prevent default behavior
- event.preventDefault();
+ // Prevent default behavior
+ event.preventDefault();
- // Scope our variables
- var $button, $target;
+ // Scope our variables
+ var $button, $target;
- // Get toggle button that was clicked
- $button = $( this );
+ // Get toggle button that was clicked
+ $button = $( this );
- //Remove focus
- $button.blur();
+ //Remove focus
+ $button.blur();
- // Match the button to the right target
- $target = $( '.toggle-target-' + $button.attr( 'id' ).match( /\d+/ ) );
+ // Match the button to the right target
+ $target = $( '.toggle-target-' + $button.attr( 'id' ).match( /\d+/ ) );
- // Toggle buttons
- $button.toggleClass( 'open' );
- $( '.site-header .toggle-button' ).not( $button ).removeClass( 'open' );
+ // Toggle buttons
+ $button.toggleClass( 'open' );
+ $( '.site-header .toggle-button' ).not( $button ).removeClass( 'open' );
- // Toggle targets
- $target.toggleClass( 'open' );
- $( '[class^="toggle-target"]' ).not( $target ).removeClass( 'open' );
- });
+ // Toggle targets
+ $target.toggleClass( 'open' );
+ $( '[class^="toggle-target"]' ).not( $target ).removeClass( 'open' );
+ });
- // Mobile navigation icons
- var closedIcon = '+';
- var openIcon = '-';
+ // Mobile navigation icons
+ var closedIcon = '+';
+ var openIcon = '-';
- // Insert the icons into the nav where appropriate
- $( '.nav-primary' ).find( '.genesis-nav-menu .parent:not( .current-menu-item, .current_page_item, .current_page_parent, .current_page_ancestor) > a' ).after( '' + closedIcon + '' );
- $( '.nav-primary' ).find( '.genesis-nav-menu .parent.current-menu-item > a, .genesis-nav-menu .parent.current_page_item > a, .genesis-nav-menu .parent.current_page_parent > a, .genesis-nav-menu .parent.current_page_ancestor > a' ).after( '' + openIcon + '' );
+ // Insert the icons into the nav where appropriate
+ $( '.nav-primary' ).find( '.genesis-nav-menu .parent:not( .current-menu-item, .current_page_item, .current_page_parent, .current_page_ancestor) > a' ).after( '' + closedIcon + '' );
+ $( '.nav-primary' ).find( '.genesis-nav-menu .parent.current-menu-item > a, .genesis-nav-menu .parent.current_page_item > a, .genesis-nav-menu .parent.current_page_parent > a, .genesis-nav-menu .parent.current_page_ancestor > a' ).after( '' + openIcon + '' );
- // Mobile navigation expand/contract functionality
- $( '.sub-icon' ).click( function( event ) {
+ // Mobile navigation expand/contract functionality
+ $( '.sub-icon' ).click( function( event ) {
- // Prevent default behavior
- event.preventDefault();
+ // Prevent default behavior
+ event.preventDefault();
- // Get icon click
- var $icon = $( this );
+ // Get icon click
+ var $icon = $( this );
- // Remove focus
- $icon.blur();
+ // Remove focus
+ $icon.blur();
- // Expand/contract
- $icon.next( 'ul' ).slideToggle().toggleClass( 'open' );
+ // Expand/contract
+ $icon.next( 'ul' ).slideToggle().toggleClass( 'open' );
- // Change the icon to indicate open/closed
- if ( $icon.text().indexOf( closedIcon ) !== -1 )
- $icon.text( openIcon );
- else if ( $icon.text().indexOf( openIcon ) !== -1 )
- $icon.text( closedIcon );
- });
+ // Change the icon to indicate open/closed
+ if ( $icon.text().indexOf( closedIcon ) !== -1 ) {
+ $icon.text( openIcon );
+ } else if ( $icon.text().indexOf( openIcon ) !== -1 ) {
+ $icon.text( closedIcon );
+ }
+ });
- // Header widget area expand/contract functionality
- $( '.widget-area-toggle' ).click( function( event ) {
+ // Header widget area expand/contract functionality
+ $( '.widget-area-toggle' ).click( function( event ) {
- // Prevent default behavior
- event.preventDefault();
+ // Prevent default behavior
+ event.preventDefault();
- // Get button clicked
- var $button = $( this );
+ // Get button clicked
+ var $button = $( this );
- // Remove focus
- $button.blur();
+ // Remove focus
+ $button.blur();
- // Expand/contract
- $button.toggleClass( 'open' ).next( '.widget-area' ).slideToggle();
- });
+ // Expand/contract
+ $button.toggleClass( 'open' ).next( '.widget-area' ).slideToggle();
+ });
- // Executes when complete page is fully loaded, including all frames, objects, and images
- $( window ).on( 'load', function() {
+ // Executes when complete page is fully loaded, including all frames, objects, and images
+ $( window ).on( 'load', function() {
- // Equal height homepage cols
- $( '.equal-height-genesis-extender-cols .ez-home-container-area' ).each( function() {
- $( this ).children( '.widget-area' ).equalHeights( null, null, trestleEqualColsBreakpoint );
- });
-
- });
+ // Equal height homepage cols
+ $( '.equal-height-genesis-extender-cols .ez-home-container-area' ).each( function() {
+ $( this ).children( '.widget-area' ).equalHeights( null, null, trestleEqualColsBreakpoint );
+ });
+ });
}); /* end of page load scripts */
@@ -151,7 +151,7 @@ jQuery( document ).ready( function( $ ) {
* Equal Heights Plugin
*
* Equalize the heights of elements. Great for columns or any elements
- * that need to be the same size (floats, etc).
+ * that need to be the same height (floats, etc).
*
* Based on Rob Glazebrook's (cssnewbie.com) script
*
@@ -163,18 +163,53 @@ jQuery( document ).ready( function( $ ) {
*
* Usage: jQuery( object ).equalHeights( [minHeight], [maxHeight], [breakPoint] );
*
- * Example 1: jQuery( ".cols" ).equalHeights(); Sets all columns to the same height.
- * Example 2: jQuery( ".cols" ).equalHeights( 400 ); Sets all cols to at least 400px tall.
+ * Example 1: jQuery( ".cols" ).equalHeights(); Sets all .cols to the same height.
+ * Example 2: jQuery( ".cols" ).equalHeights( 400 ); Sets all .cols to at least 400px tall.
* Example 3: jQuery( ".cols" ).equalHeights( 100, 300 ); Cols are at least 100 but no more
* than 300 pixels tall. Elements with too much content will gain a scrollbar.
- * Example 4: jQuery( ".cols" ).equalHeights( null, null, 768 ); Only resize columns above 768px viewport
+ * Example 4: jQuery( ".cols" ).equalHeights( null, null, 768 ); Only resize .cols above 768px viewport
*/
( function( $ ) {
- $.fn.equalHeights = function( minHeight, maxHeight, breakPoint ) {
+ // debouncing function from John Hann
+ // http://unscriptable.com/index.php/2009/03/20/debouncing-javascript-methods/
+ var debounce = function( func, threshold ) {
+
+ // The timer
+ var timeout;
+
+ return function debounced() {
+
+ // Store the passed in function and args
+ var obj = this;
+ var args = arguments;
+
+ // This is the callback that the timer triggers when debouncing is complete
+ function delayed() {
+
+ // We have successfully debounced, trigger the function
+ func.apply( obj, args );
+
+ // And clear the timer
+ timeout = null;
+ }
+
+ // If the timer is active, clear it
+ if ( timeout ) {
+ clearTimeout( timeout );
+ }
+
+ // Set the timer to 100ms and have it call delayed() when it completes
+ timeout = setTimeout( delayed, threshold || 50 );
+ };
+ };
+
+ // Main plugin function
+ $.fn.equalHeights = function( minHeight, maxHeight, breakPoint ) {
// Scope our variables
- var selector, args, eventData, resizeSet;
+ var selector, minHeight, maxHeight, breakPoint, eventData,
+ ourEvents, eventName, eventSet;
// Get the selector used to call equalHeights
selector = this.selector;
@@ -184,15 +219,14 @@ jQuery( document ).ready( function( $ ) {
maxHeight = maxHeight || null;
breakPoint = breakPoint || 0;
- // Combine args into an array
- args = [ minHeight, maxHeight, breakPoint ];
+ // Combine args into an object
+ args = { minHeight: minHeight, maxHeight: maxHeight, breakPoint: breakPoint };
// Check if our global already exists
if ( window.equalHeightsItems ) {
// It does, so add or overwrite the current object in it
window.equalHeightsItems[selector] = args;
-
} else {
// It doesn't, so create the global and store the current object in it
@@ -200,80 +234,103 @@ jQuery( document ).ready( function( $ ) {
window.equalHeightsItems[selector] = args;
}
- // Function to do the equalizing of the heights
- function doEqualHeights( selector, args ) {
+ // Grab the current event data from the window object
+ eventData = $( window ).data( 'events' );
- // Scope our variables
- var $items, tallest, e, a, width;
+ // Store the events that will retrigger doEqualHeights()
+ ourEvents = [ 'resize', 'orientationchange', 'equalheights' ];
- // Grab the collection of items fresh from the DOM
- $items = $( selector );
+ // Loop through each event and attach our handler if it isn't attached already
+ $( ourEvents ).each( function() {
- // Store the passed in args
- minHeight = args[0];
- maxHeight = args[1];
- breakPoint = args[2];
+ // Reset our flag to false
+ eventSet = false;
- // Calculate the tallest item
- tallest = ( minHeight ) ? minHeight : 0;
- $items.each( function() {
- $( this ).height( 'auto' );
- if( $( this ).outerHeight() > tallest ) {
- tallest = $( this ).outerHeight();
- }
- });
+ // Store this event
+ thisEvent = this;
- // Get viewport width (taking scrollbars into account)
- e = window;
- a = 'inner';
- if ( !( 'innerWidth' in window ) ) {
- a = 'client';
- e = document.documentElement || document.body;
- }
- width = e[ a+'Width' ];
+ // Add the namespace
+ eventName = this + '.equalheights';
- // Equalize heights if viewport width is above the breakpoint
- if ( width >= breakPoint ) {
- if( ( maxHeight ) && tallest > maxHeight ) tallest = maxHeight;
- return $items.each( function() {
- $( this ).height( tallest );
- });
- }
- }
+ // Check whether this event is already on the window
+ if ( eventData[ thisEvent ] ) {
- // Function to trigger the equalizing
- function triggerEqualHeights() {
+ // Be careful not to disturb any unrelated listeners
+ $( eventData[ thisEvent ] ).each( function() {
- // Loop through each object in our global
- $.each( window.equalHeightsItems, function( selector, args ) {
+ // Confirm that the event has our namespace
+ if ( this.namespace == 'equalheights' ) {
- // Call doEqualHeights and pass in the current object
- doEqualHeights( selector, args );
- });
- }
+ // It does, so set our flag to true
+ eventSet = true;
+ }
+ });
+ }
- // Grab the event data from the window object
- eventData = $( window ).data('events');
+ // If our flag is still false then we can safely attach the event
+ if ( ! eventSet ) {
- // Check if the window has the smartresize event
- if ( eventData.resize ) {
+ // Namespace it and debounce it to be safe
+ $( window ).on( eventName, debounce( triggerEqualHeights ) );
+ }
+ });
- // Check if the smartresize event has our namespace
- $( eventData.resize ).each( function() {
+ // Trigger the first equalizing
+ triggerEqualHeights();
+ };
- // It does, so store this information in a variable
- if( this.namespace == 'equalheights' ) { resizeSet = true; }
+ // Function to trigger the equalizing
+ function triggerEqualHeights() {
+
+ // Loop through each object in our global
+ $.each( window.equalHeightsItems, function( selector, args ) {
+
+ // Call doEqualHeights and pass in the current object
+ doEqualHeights( selector, args );
+ });
+ }
+
+ // Function to do the equalizing of the heights
+ function doEqualHeights( selector, args ) {
+
+ // Scope our variables
+ var $items, minHeight, maxHeight, breakPoint, tallest, e, a, width;
+
+ // Grab the collection of items fresh from the DOM
+ $items = $( selector );
+
+ // Store the passed in args
+ minHeight = args.minHeight;
+ maxHeight = args.maxHeight;
+ breakPoint = args.breakPoint;
+
+ // Calculate the tallest item
+ tallest = ( minHeight ) ? minHeight : 0;
+ $items.each( function() {
+ $( this ).height( 'auto' );
+ if( $( this ).outerHeight() > tallest ) {
+ tallest = $( this ).outerHeight();
+ }
+ });
+
+ // Get viewport width (taking scrollbars into account)
+ e = window;
+ a = 'inner';
+ if ( !( 'innerWidth' in window ) ) {
+ a = 'client';
+ e = document.documentElement || document.body;
+ }
+ width = e[ a+'Width' ];
+
+ // Equalize heights if viewport width is above the breakpoint
+ if ( width >= breakPoint ) {
+ if ( ( maxHeight ) && tallest > maxHeight ) {
+ tallest = maxHeight;
+ }
+ return $items.each( function() {
+ $( this ).height( tallest );
});
}
-
- // Bind the window smartresize event to our trigger function if we
- // haven't already done so
- if ( ! resizeSet ) {
- $( window ).on( 'resize.equalheights', triggerEqualHeights );
- }
-
- // Trigger the first equalizing
- triggerEqualHeights();
}
})( jQuery );
From 25a6a73defc3b5c61dcb48db7550735389670749 Mon Sep 17 00:00:00 2001
From: Braad Martin
Date: Mon, 2 Feb 2015 23:56:28 -0800
Subject: [PATCH 11/31] Formatting
---
includes/js/theme-jquery.js | 66 ++++++++++++++++++-------------------
1 file changed, 33 insertions(+), 33 deletions(-)
diff --git a/includes/js/theme-jquery.js b/includes/js/theme-jquery.js
index 44fd758..81110c7 100644
--- a/includes/js/theme-jquery.js
+++ b/includes/js/theme-jquery.js
@@ -207,34 +207,34 @@ jQuery( document ).ready( function( $ ) {
// Main plugin function
$.fn.equalHeights = function( minHeight, maxHeight, breakPoint ) {
- // Scope our variables
- var selector, minHeight, maxHeight, breakPoint, eventData,
- ourEvents, eventName, eventSet;
-
- // Get the selector used to call equalHeights
- selector = this.selector;
-
- // Use the args that were passed in or use the defaults
- minHeight = minHeight || null;
- maxHeight = maxHeight || null;
- breakPoint = breakPoint || 0;
-
- // Combine args into an object
- args = { minHeight: minHeight, maxHeight: maxHeight, breakPoint: breakPoint };
-
- // Check if our global already exists
- if ( window.equalHeightsItems ) {
-
- // It does, so add or overwrite the current object in it
- window.equalHeightsItems[selector] = args;
- } else {
-
- // It doesn't, so create the global and store the current object in it
- window.equalHeightsItems = {};
- window.equalHeightsItems[selector] = args;
- }
-
- // Grab the current event data from the window object
+ // Scope our variables
+ var selector, minHeight, maxHeight, breakPoint, eventData,
+ ourEvents, eventName, eventSet;
+
+ // Get the selector used to call equalHeights
+ selector = this.selector;
+
+ // Use the args that were passed in or use the defaults
+ minHeight = minHeight || null;
+ maxHeight = maxHeight || null;
+ breakPoint = breakPoint || 0;
+
+ // Combine args into an object
+ args = { minHeight: minHeight, maxHeight: maxHeight, breakPoint: breakPoint };
+
+ // Check if our global already exists
+ if ( window.equalHeightsItems ) {
+
+ // It does, so add or overwrite the current object in it
+ window.equalHeightsItems[selector] = args;
+ } else {
+
+ // It doesn't, so create the global and store the current object in it
+ window.equalHeightsItems = {};
+ window.equalHeightsItems[selector] = args;
+ }
+
+ // Grab the current event data from the window object
eventData = $( window ).data( 'events' );
// Store the events that will retrigger doEqualHeights()
@@ -271,12 +271,12 @@ jQuery( document ).ready( function( $ ) {
if ( ! eventSet ) {
// Namespace it and debounce it to be safe
- $( window ).on( eventName, debounce( triggerEqualHeights ) );
- }
+ $( window ).on( eventName, debounce( triggerEqualHeights ) );
+ }
});
-
- // Trigger the first equalizing
- triggerEqualHeights();
+
+ // Trigger the first equalizing
+ triggerEqualHeights();
};
// Function to trigger the equalizing
From e9cf7c26f541faa26e7c4ccad0c85b4d4a9559cb Mon Sep 17 00:00:00 2001
From: Braad Martin
Date: Mon, 2 Feb 2015 23:59:02 -0800
Subject: [PATCH 12/31] Formatting
---
includes/js/theme-jquery.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/includes/js/theme-jquery.js b/includes/js/theme-jquery.js
index 81110c7..c2ec45e 100644
--- a/includes/js/theme-jquery.js
+++ b/includes/js/theme-jquery.js
@@ -331,6 +331,6 @@ jQuery( document ).ready( function( $ ) {
$( this ).height( tallest );
});
}
- }
+ }
})( jQuery );
From aa1fb81226a0e55612221d14ed001a958ef7e3c0 Mon Sep 17 00:00:00 2001
From: Braad Martin
Date: Mon, 16 Feb 2015 12:24:34 -0800
Subject: [PATCH 13/31] Remove all references to equalHeights as this is now a
plugin
---
includes/js/theme-jquery.js | 196 ------------------------------------
1 file changed, 196 deletions(-)
diff --git a/includes/js/theme-jquery.js b/includes/js/theme-jquery.js
index c2ec45e..781141a 100644
--- a/includes/js/theme-jquery.js
+++ b/includes/js/theme-jquery.js
@@ -9,10 +9,6 @@
// Executes when the document is ready
jQuery( document ).ready( function( $ ) {
- // Get PHP vars passed via wp_localize_script()
- trestleEqualColsBreakpoint = trestle_vars.trestle_equal_cols_breakpoint;
- trestleEqualHeightCols = trestle_vars.trestle_equal_height_cols;
-
// Remove .no-jquery body class
$( 'body' ).removeClass( 'no-jquery' );
@@ -139,198 +135,6 @@ jQuery( document ).ready( function( $ ) {
// Executes when complete page is fully loaded, including all frames, objects, and images
$( window ).on( 'load', function() {
- // Equal height homepage cols
- $( '.equal-height-genesis-extender-cols .ez-home-container-area' ).each( function() {
- $( this ).children( '.widget-area' ).equalHeights( null, null, trestleEqualColsBreakpoint );
- });
});
}); /* end of page load scripts */
-
-/**
- * Equal Heights Plugin
- *
- * Equalize the heights of elements. Great for columns or any elements
- * that need to be the same height (floats, etc).
- *
- * Based on Rob Glazebrook's (cssnewbie.com) script
- *
- * Features
- * - ability to include a break point (the minimum viewport width at which the script does anything)
- * - binds to window resize events (resize and orientationchange)
- * - will automatically detect new elements added to the DOM
- * - can be called multiple times without duplicating any events
- *
- * Usage: jQuery( object ).equalHeights( [minHeight], [maxHeight], [breakPoint] );
- *
- * Example 1: jQuery( ".cols" ).equalHeights(); Sets all .cols to the same height.
- * Example 2: jQuery( ".cols" ).equalHeights( 400 ); Sets all .cols to at least 400px tall.
- * Example 3: jQuery( ".cols" ).equalHeights( 100, 300 ); Cols are at least 100 but no more
- * than 300 pixels tall. Elements with too much content will gain a scrollbar.
- * Example 4: jQuery( ".cols" ).equalHeights( null, null, 768 ); Only resize .cols above 768px viewport
- */
-( function( $ ) {
-
- // debouncing function from John Hann
- // http://unscriptable.com/index.php/2009/03/20/debouncing-javascript-methods/
- var debounce = function( func, threshold ) {
-
- // The timer
- var timeout;
-
- return function debounced() {
-
- // Store the passed in function and args
- var obj = this;
- var args = arguments;
-
- // This is the callback that the timer triggers when debouncing is complete
- function delayed() {
-
- // We have successfully debounced, trigger the function
- func.apply( obj, args );
-
- // And clear the timer
- timeout = null;
- }
-
- // If the timer is active, clear it
- if ( timeout ) {
- clearTimeout( timeout );
- }
-
- // Set the timer to 100ms and have it call delayed() when it completes
- timeout = setTimeout( delayed, threshold || 50 );
- };
- };
-
- // Main plugin function
- $.fn.equalHeights = function( minHeight, maxHeight, breakPoint ) {
-
- // Scope our variables
- var selector, minHeight, maxHeight, breakPoint, eventData,
- ourEvents, eventName, eventSet;
-
- // Get the selector used to call equalHeights
- selector = this.selector;
-
- // Use the args that were passed in or use the defaults
- minHeight = minHeight || null;
- maxHeight = maxHeight || null;
- breakPoint = breakPoint || 0;
-
- // Combine args into an object
- args = { minHeight: minHeight, maxHeight: maxHeight, breakPoint: breakPoint };
-
- // Check if our global already exists
- if ( window.equalHeightsItems ) {
-
- // It does, so add or overwrite the current object in it
- window.equalHeightsItems[selector] = args;
- } else {
-
- // It doesn't, so create the global and store the current object in it
- window.equalHeightsItems = {};
- window.equalHeightsItems[selector] = args;
- }
-
- // Grab the current event data from the window object
- eventData = $( window ).data( 'events' );
-
- // Store the events that will retrigger doEqualHeights()
- ourEvents = [ 'resize', 'orientationchange', 'equalheights' ];
-
- // Loop through each event and attach our handler if it isn't attached already
- $( ourEvents ).each( function() {
-
- // Reset our flag to false
- eventSet = false;
-
- // Store this event
- thisEvent = this;
-
- // Add the namespace
- eventName = this + '.equalheights';
-
- // Check whether this event is already on the window
- if ( eventData[ thisEvent ] ) {
-
- // Be careful not to disturb any unrelated listeners
- $( eventData[ thisEvent ] ).each( function() {
-
- // Confirm that the event has our namespace
- if ( this.namespace == 'equalheights' ) {
-
- // It does, so set our flag to true
- eventSet = true;
- }
- });
- }
-
- // If our flag is still false then we can safely attach the event
- if ( ! eventSet ) {
-
- // Namespace it and debounce it to be safe
- $( window ).on( eventName, debounce( triggerEqualHeights ) );
- }
- });
-
- // Trigger the first equalizing
- triggerEqualHeights();
- };
-
- // Function to trigger the equalizing
- function triggerEqualHeights() {
-
- // Loop through each object in our global
- $.each( window.equalHeightsItems, function( selector, args ) {
-
- // Call doEqualHeights and pass in the current object
- doEqualHeights( selector, args );
- });
- }
-
- // Function to do the equalizing of the heights
- function doEqualHeights( selector, args ) {
-
- // Scope our variables
- var $items, minHeight, maxHeight, breakPoint, tallest, e, a, width;
-
- // Grab the collection of items fresh from the DOM
- $items = $( selector );
-
- // Store the passed in args
- minHeight = args.minHeight;
- maxHeight = args.maxHeight;
- breakPoint = args.breakPoint;
-
- // Calculate the tallest item
- tallest = ( minHeight ) ? minHeight : 0;
- $items.each( function() {
- $( this ).height( 'auto' );
- if( $( this ).outerHeight() > tallest ) {
- tallest = $( this ).outerHeight();
- }
- });
-
- // Get viewport width (taking scrollbars into account)
- e = window;
- a = 'inner';
- if ( !( 'innerWidth' in window ) ) {
- a = 'client';
- e = document.documentElement || document.body;
- }
- width = e[ a+'Width' ];
-
- // Equalize heights if viewport width is above the breakpoint
- if ( width >= breakPoint ) {
- if ( ( maxHeight ) && tallest > maxHeight ) {
- tallest = maxHeight;
- }
- return $items.each( function() {
- $( this ).height( tallest );
- });
- }
- }
-
-})( jQuery );
From 098a9062ef5bc3c8cfae4f8ee4057bf307fa7dea Mon Sep 17 00:00:00 2001
From: Braad Martin
Date: Mon, 16 Feb 2015 12:28:00 -0800
Subject: [PATCH 14/31] Remove all references to equalHeights as this is now a
plugin
---
includes/admin/admin.php | 14 +-------------
1 file changed, 1 insertion(+), 13 deletions(-)
diff --git a/includes/admin/admin.php b/includes/admin/admin.php
index cf09130..d0d342d 100644
--- a/includes/admin/admin.php
+++ b/includes/admin/admin.php
@@ -48,8 +48,6 @@ function trestle_custom_defaults( $defaults ) {
'trestle_read_more_text' => __( 'Read More »', 'trestle' ),
'trestle_revisions_number' => 3,
'trestle_footer_widgets_number' => 3,
- 'trestle_equal_height_cols' => 1,
- 'trestle_equal_cols_breakpoint' => 768,
);
// Populate Trestle settings with default values if they don't yet exist
@@ -102,7 +100,6 @@ function trestle_register_social_sanitization_filters() {
'trestle_auto_nav_depth',
'trestle_revisions_number',
'trestle_footer_widgets_number',
- 'trestle_equal_cols_breakpoint',
)
);
@@ -303,15 +300,6 @@ function trestle_settings_box() {
?>
-
-
-
- />
-
-
-
-
-
/>
@@ -518,4 +506,4 @@ function trestle_register_required_plugins() {
);
tgmpa( $plugins, $config );
-}
\ No newline at end of file
+}
From a660a1924abd009674b40083febc4b3a64858fe7 Mon Sep 17 00:00:00 2001
From: MickeyKay
Date: Thu, 19 Feb 2015 14:52:07 -0800
Subject: [PATCH 15/31] Update styles to include better input styleing.
---
style.css | 17 +++++++++--------
1 file changed, 9 insertions(+), 8 deletions(-)
diff --git a/style.css b/style.css
index 0ef9402..7e07657 100644
--- a/style.css
+++ b/style.css
@@ -177,7 +177,7 @@ textarea:focus,
-ms-transition: all 0.1s ease-in-out;
-o-transition: all 0.1s ease-in-out;
transition: all 0.1s ease-in-out;
-
+
-webkit-appearance: none;
-moz-appearance: none;
}
@@ -466,6 +466,7 @@ textarea {
width: 100%;
}
+input[type="radio"],
input[type="radio"],
input[type="checkbox"] {
width: auto;
@@ -587,7 +588,7 @@ body .red:hover {
.genesis-nav-menu .button:hover {
background-color: #555;
- border-color: #555;
+ border-color: #555;
}
body .blue {
@@ -1167,7 +1168,7 @@ body .mapp-layout {
.simple-section-nav .current_page_item > a,
.simple-section-nav .current_page_ancestor > a {
-
+
}
.simple-section-nav .current_page_item > a,
@@ -2082,19 +2083,19 @@ Media Queries
font-size: 16px;
font-size: 1.6rem;
}
-
+
}
/* Responsive Tables CSS
--------------------------------------------- */
@media (max-width: 600px) {
-
+
table {
clear: both;
}
tr {
- padding: 0.5em;
+ padding: 0.5em;
}
th,
@@ -2385,7 +2386,7 @@ Media Queries
.five-sixths {
width: 82.90598290598291%;
}
-
+
.first,
.footer-widgets .footer-widgets-1 {
clear: both;
@@ -2554,7 +2555,7 @@ Media Queries
/* Plugins
--------------------------------------------- */
-
+
/* Events Manager */
.em-calendar-wrapper .fullcalendar tr {
display: table-row !important;
From 86520f1f8684e4d53284ff08654479aaa8a9cf66 Mon Sep 17 00:00:00 2001
From: Braad Martin
Date: Mon, 23 Feb 2015 16:03:37 -0800
Subject: [PATCH 16/31] Remove references to equal heights
---
includes/functions/theme-functions.php | 6 ------
1 file changed, 6 deletions(-)
diff --git a/includes/functions/theme-functions.php b/includes/functions/theme-functions.php
index ea71f76..2efc389 100644
--- a/includes/functions/theme-functions.php
+++ b/includes/functions/theme-functions.php
@@ -42,12 +42,6 @@ function trestle_header_actions() {
if ( is_readable( $upload_path . $custom_js_file ) )
wp_enqueue_script( 'trestle-custom-jquery', $upload_url . $custom_js_file, array( 'jquery' ), CHILD_THEME_VERSION, true );
- // Pass PHP variables to theme jQuery
- $php_vars = array (
- 'trestle_equal_cols_breakpoint' => genesis_get_option( 'trestle_equal_cols_breakpoint' ),
- );
- wp_localize_script( 'theme-jquery', 'trestle_vars', $php_vars );
-
}
/*===========================================
From 69a86d4c2d54d8d5464177b2fb9647184b570af8 Mon Sep 17 00:00:00 2001
From: Braad
Date: Thu, 19 Mar 2015 15:02:35 -0700
Subject: [PATCH 17/31] Updates to functions.php
---
functions.php | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/functions.php b/functions.php
index 20b3121..aae0238 100644
--- a/functions.php
+++ b/functions.php
@@ -2,9 +2,9 @@
/**
* Theme functionality
- *
+ *
* @since 1.0.0
- *
+ *
* @package Trestle
*/
@@ -18,6 +18,9 @@ require_once dirname( __FILE__ ) . '/includes/functions/theme-functions.php';
// Admin functionality
require_once dirname( __FILE__ ) . '/includes/admin/admin.php';
+// Customizer controls
+require_once dirname( __FILE__ ) . '/includes/admin/customizer.php';
+
// Shortcodes
require_once dirname( __FILE__ ) . '/includes/shortcodes/shortcodes.php';
@@ -57,5 +60,4 @@ function trestle_theme_setup() {
// Add support for footer widgets if specified in Trestle settings
$trestle_footer_widgets_number = esc_attr( genesis_get_option( 'trestle_footer_widgets_number' ) );
add_theme_support( 'genesis-footer-widgets', $trestle_footer_widgets_number );
-
}
From bf244dce13bea9291374d4bdac7b8c58e3f81a7b Mon Sep 17 00:00:00 2001
From: Braad
Date: Thu, 19 Mar 2015 15:09:37 -0700
Subject: [PATCH 18/31] Remove admin.css
---
includes/admin/admin.css | 122 ---------------------------------------
1 file changed, 122 deletions(-)
delete mode 100644 includes/admin/admin.css
diff --git a/includes/admin/admin.css b/includes/admin/admin.css
deleted file mode 100644
index 8a9bf26..0000000
--- a/includes/admin/admin.css
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * Trestle admin styles
- *
- * @since 1.0.0
- *
- * @package Trestle
- */
-
-.trestle-layout img {
- margin-right: 10px;
- border: 4px solid transparent;
- cursor: pointer;
-}
-
-.trestle-layout img:hover {
- border-color: #EEE;
-}
-
-.trestle-layout img.checked {
- border-color: #CCC;
-}
-
-/* Columns
---------------------------------------------- */
-.five-sixths,
-.four-sixths,
-.one-fourth,
-.one-half,
-.one-sixth,
-.one-third,
-.three-fourths,
-.three-sixths,
-.two-fourths,
-.two-sixths,
-.two-thirds,
-.footer-widgets .widget-area {
- float: left;
- margin: 0;
- width: 100%;
-}
-
-
-/* Media Queries
---------------------------------------------- */
-@media (min-width: 768px) {
-
- /* Columns
- --------------------------------------------- */
-
- .five-sixths,
- .four-sixths,
- .one-fourth,
- .one-half,
- .one-sixth,
- .one-third,
- .three-fourths,
- .three-sixths,
- .two-fourths,
- .two-sixths,
- .two-thirds,
- .footer-widgets .widget-area {
- margin-left: 2.564102564102564%;
- }
-
- .one-half,
- .three-sixths,
- .two-fourths,
- .footer-widgets-number-2 .footer-widgets .widget-area {
- width: 48.717948717948715%;
- }
-
- .one-third,
- .two-sixths,
- .sidebar-primary,
- .title-area,
- .footer-widgets-number-3 .footer-widgets .widget-area {
- width: 31.623931623931625%;
- }
-
- .four-sixths,
- .two-thirds,
- .content {
- width: 65.81196581196582%;
- }
-
- .one-fourth,
- .footer-widgets-number-4 .footer-widgets .widget-area {
- width: 23.076923076923077%;
- }
-
- .three-fourths {
- width: 74.35897435897436%;
- }
-
- .one-fifth,
- .footer-widgets-number-5 .footer-widgets .widget-area {
- width: 17.948717949%;
- }
-
- .one-sixth,
- .footer-widgets-number-6 .footer-widgets .widget-area {
- width: 14.52991452991453%;
- }
-
- .five-sixths {
- width: 82.90598290598291%;
- }
-
- .first,
- .footer-widgets .footer-widgets-1 {
- clear: both;
- margin-left: 0;
- }
-
- /* Lists inside columns (to remove bottom margin as needed at mobile sizes */
- .no-list-margin ul,
- .no-list-margin ol {
- margin-bottom: 26px;
- margin-bottom: 2.6rem;
- }
-
-}
\ No newline at end of file
From d6542d2091db5460e5c4dfc5a88925f060875e05 Mon Sep 17 00:00:00 2001
From: Braad
Date: Thu, 19 Mar 2015 15:10:02 -0700
Subject: [PATCH 19/31] Remove admin.js
---
includes/admin/admin.js | 40 ----------------------------------------
1 file changed, 40 deletions(-)
delete mode 100644 includes/admin/admin.js
diff --git a/includes/admin/admin.js b/includes/admin/admin.js
deleted file mode 100644
index c580186..0000000
--- a/includes/admin/admin.js
+++ /dev/null
@@ -1,40 +0,0 @@
-/**
- * jQuery that runs in the WordPress admin
- *
- * @since 1.0.0
- *
- * @package Trestle
- */
-
-// Executes when the document is ready
-jQuery(document).ready(function() {
-
- // Hide Trestle layout radio buttons
- jQuery('.trestle-layout img').next('input[type="radio"]').hide();
-
- // Add radio button functionality to layout icons
- jQuery('.trestle-layout img').click(function() {
- jQuery(this).next('input[type="radio"]').attr('checked', true);
- jQuery('.trestle-layout img').removeClass('checked');
- jQuery(this).addClass('checked');
- });
-
- // Add drop-down functionality for Post Info & Meta options
- if( ! jQuery('#genesis-settings\\[trestle_manual_post_info_meta\\]').is(':checked') ) {
- jQuery('.trestle-post-info-meta').hide();
- }
-
- jQuery('#genesis-settings\\[trestle_manual_post_info_meta\\]').change(function() {
- jQuery('.trestle-post-info-meta').slideToggle();
- });
-
- // Add drop-down functionality for equal height breakpoint
- if( ! jQuery('#genesis-settings\\[trestle_equal_height_cols\\]').is(':checked') ) {
- jQuery('.trestle-equal-columns-breakpoint').hide();
- }
-
- jQuery('#genesis-settings\\[trestle_equal_height_cols\\]').change(function() {
- jQuery('.trestle-equal-columns-breakpoint').slideToggle();
- });
-
-}); /* end of as page load scripts */
From 5d8a55bd03ab55aaffad92b69b0887797c512d9b Mon Sep 17 00:00:00 2001
From: Braad
Date: Thu, 19 Mar 2015 15:11:50 -0700
Subject: [PATCH 20/31] Update admin.php
---
includes/admin/admin.php | 271 ++-------------------------------------
1 file changed, 11 insertions(+), 260 deletions(-)
diff --git a/includes/admin/admin.php b/includes/admin/admin.php
index d0d342d..7fafbff 100644
--- a/includes/admin/admin.php
+++ b/includes/admin/admin.php
@@ -14,37 +14,28 @@ add_action( 'admin_enqueue_scripts', 'trestle_admin_actions' );
* @since 1.0.0
*/
function trestle_admin_actions() {
- // Add admin jQuery
- wp_enqueue_script( 'trestle-admin-jquery', get_stylesheet_directory_uri() . '/includes/admin/admin.js', array( 'jquery' ), '1.0.0', true );
- // Add admin jQuery
- wp_enqueue_style( 'trestle-admin', get_stylesheet_directory_uri() . '/includes/admin/admin.css' );
-
- // Add admin CSS
- add_editor_style( get_stylesheet_directory_uri() . '/includes/admin/editor-style.css' );
+ // Include the main stylesheet in the editor
+ add_editor_style( get_stylesheet_uri() );
}
add_filter( 'genesis_theme_settings_defaults', 'trestle_custom_defaults' );
/**
* Sets up Trestle default settings.
*
- * @since 1.0.0
+ * @since 1.0.0
*
- * @param array $defaults Genesis default settings.
- * @return array Genesis settings updated to include Trestle defaults.
+ * @param array $defaults Genesis default settings.
+ * @return array Genesis settings updated to include Trestle defaults.
*/
function trestle_custom_defaults( $defaults ) {
+
// Trestle default key/value pairs
$trestle_defaults = array(
'trestle_layout' => 'solid',
'trestle_logo_url' => '',
'trestle_logo_url_mobile' => '',
'trestle_nav_primary_location' => 'full',
- 'trestle_auto_nav' => 0,
- 'trestle_auto_nav_depth' => 0,
- 'trestle_include_home_link' => 0,
- 'trestle_home_link_text' => __( 'Home', 'trestle' ),
- 'trestle_nav_button_text' => '[icon name="icon-list-ul"] ' . __( 'Navigation', 'trestle' ),
'trestle_read_more_text' => __( 'Read More »', 'trestle' ),
'trestle_revisions_number' => 3,
'trestle_footer_widgets_number' => 3,
@@ -54,267 +45,26 @@ function trestle_custom_defaults( $defaults ) {
$options = get_option( GENESIS_SETTINGS_FIELD );
foreach ( $trestle_defaults as $k => $v ) {
+
// Add defaults to Genesis default settings array
$defaults[$k] = $v;
// Update actual options if they don't yet exist
- if ( $options && ! array_key_exists( $k, $options ) )
+ if ( $options && ! array_key_exists( $k, $options ) )
$options[$k] = $v;
}
// Update options with defaults
update_option( GENESIS_SETTINGS_FIELD, $options );
-
+
return $defaults;
}
-add_action( 'genesis_settings_sanitizer_init', 'trestle_register_social_sanitization_filters' );
-/**
- * Adds sanitization for various Trestle admin settings.
- *
- * @since 1.0.0
- */
-function trestle_register_social_sanitization_filters() {
- // 1 or 0
- genesis_add_option_filter(
- 'one_zero',
- GENESIS_SETTINGS_FIELD,
- array(
- 'trestle_auto_nav',
- 'trestle_include_home_link',
- 'trestle_custom_nav_extras',
- 'trestle_manual_post_info_meta',
- 'trestle_equal_height_cols',
- 'trestle_external_link_icons',
- 'trestle_email_link_icons',
- 'trestle_pdf_link_icons',
- 'trestle_doc_link_icons',
- )
- );
-
- // Integer
- genesis_add_option_filter(
- 'absint',
- GENESIS_SETTINGS_FIELD,
- array(
- 'trestle_auto_nav_depth',
- 'trestle_revisions_number',
- 'trestle_footer_widgets_number',
- )
- );
-
- // No HTML
- genesis_add_option_filter(
- 'no_html',
- GENESIS_SETTINGS_FIELD,
- array(
- 'trestle_layout',
- 'trestle_nav_primary_location'
- )
- );
-
- // Safe HTML
- genesis_add_option_filter(
- 'safe_html',
- GENESIS_SETTINGS_FIELD,
- array(
- 'trestle_logo_url',
- 'trestle_logo_url_mobile',
- 'trestle_home_link_text',
- 'trestle_nav_button_text',
- 'trestle_custom_nav_extras_text',
- 'trestle_read_more_text'
- )
- );
-}
-
-add_action( 'genesis_theme_settings_metaboxes', 'trestle_register_settings_box' );
-/**
- * Registers Trestle admin settings box.
- *
- * @since 1.0.0
- *
- * @global array $_genesis_admin_settings Genesis admin settings.
- *
- * @param string $_genesis_theme_settings_pagehook Hook for main Genesis settings page in admin.
- */
-function trestle_register_settings_box( $_genesis_theme_settings_pagehook ) {
- global $_genesis_admin_settings;
-
- // Create Trestle settings metabox
- $settings_box_title = __( 'Trestle Settings by', 'trestle' ) . ' MIGHTYminnow';
- add_meta_box( 'trestle-settings', $settings_box_title, 'trestle_settings_box', $_genesis_theme_settings_pagehook, 'main', 'high' );
-}
-
-/**
- * Outputs contents of Trestle admin settings box on Genesis settings page.
- *
- * @since 1.0.0
- */
-function trestle_settings_box() {
- // Set path for image radio inputs
- $img_path = get_stylesheet_directory_uri() . '/images/admin/';
-
- ?>
-
-
-
/>
- />
-
/>
- />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- />
-
-
- ' . $i . '' . "\n";
- }
- ?>
-
- />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- />
-
-
-
-
-
-
-
-
- :
-
-
-
-
-
- ' . $i . '' . "\n";
- }
- ?>
-
-
-
-
-
- />
-
-
-
-
-
-
-
- ' . $i . '' . "\n";
- }
- ?>
-
-
-
-
- />
- />
- />
- />
-
-
Date: Thu, 19 Mar 2015 15:14:31 -0700
Subject: [PATCH 21/31] Add customizer.php
---
includes/admin/customizer.php | 324 ++++++++++++++++++++++++++++++++++
1 file changed, 324 insertions(+)
create mode 100644 includes/admin/customizer.php
diff --git a/includes/admin/customizer.php b/includes/admin/customizer.php
new file mode 100644
index 0000000..39e7526
--- /dev/null
+++ b/includes/admin/customizer.php
@@ -0,0 +1,324 @@
+add_section(
+ 'trestle_settings_section',
+ array(
+ 'title' => __( 'Trestle Settings', 'trestle' ),
+ 'priority' => 160,
+ )
+ );
+
+ // Layout
+ $wp_customize->add_setting(
+ 'genesis-settings[trestle_layout]',
+ array(
+ 'default' => '',
+ 'type' => 'option',
+ 'transport' => 'postMessage',
+ 'capability' => 'edit_theme_options',
+ )
+ );
+ $wp_customize->add_control(
+ 'trestle_layout_control',
+ array(
+ 'section' => 'trestle_settings_section',
+ 'settings' => 'genesis-settings[trestle_layout]',
+ 'label' => __( 'Layout', 'trestle' ),
+ 'type' => 'radio',
+ 'choices' => array(
+ 'bubble' => __( 'Bubble', 'trestle' ),
+ 'solid' => __( 'Solid', 'trestle' ),
+ )
+ )
+ );
+
+ // Upload a logo
+ $wp_customize->add_setting(
+ 'genesis-settings[trestle_logo_url]',
+ array(
+ 'default' => genesis_get_option( 'trestle_logo_url' ),
+ 'type' => 'option',
+ 'transport' => 'postMessage',
+ 'capability' => 'edit_theme_options',
+ )
+ );
+ $wp_customize->add_control(
+ new WP_Customize_Image_Control(
+ $wp_customize,
+ 'trestle_logo_control',
+ array(
+ 'label' => __( 'Upload a logo', 'trestle' ),
+ 'section' => 'trestle_settings_section',
+ 'settings' => 'genesis-settings[trestle_logo_url]',
+ )
+ )
+ );
+
+ // Upload a mobile logo
+ $wp_customize->add_setting(
+ 'genesis-settings[trestle_logo_url_mobile]',
+ array(
+ 'default' => genesis_get_option( 'trestle_logo_url_mobile' ),
+ 'type' => 'option',
+ 'transport' => 'postMessage',
+ 'capability' => 'edit_theme_options',
+ )
+ );
+ $wp_customize->add_control(
+ new WP_Customize_Image_Control(
+ $wp_customize,
+ 'trestle_mobile_logo_control',
+ array(
+ 'label' => __( 'Upload a logo for mobile', 'trestle' ),
+ 'section' => 'trestle_settings_section',
+ 'settings' => 'genesis-settings[trestle_logo_url_mobile]',
+ )
+ )
+ );
+
+ // Primary nav style
+ $wp_customize->add_setting(
+ 'genesis-settings[trestle_nav_primary_location]',
+ array(
+ 'default' => genesis_get_option( 'trestle_nav_primary_location' ),
+ 'type' => 'option',
+ 'transport' => 'postMessage',
+ 'capability' => 'edit_theme_options',
+ )
+ );
+ $wp_customize->add_control(
+ 'trestle_nav_primary_location_control',
+ array(
+ 'section' => 'trestle_settings_section',
+ 'settings' => 'genesis-settings[trestle_nav_primary_location]',
+ 'label' => __( 'Menu style', 'trestle' ),
+ 'type' => 'select',
+ 'choices' => array(
+ 'full' => __( 'Full Width', 'trestle' ),
+ 'header' => __( 'Header Right', 'trestle' ),
+ )
+ )
+ );
+
+ // Blog post custom read more link text
+ $wp_customize->add_setting(
+ 'genesis-settings[trestle_read_more_text]',
+ array(
+ 'default' => genesis_get_option( 'trestle_read_more_text' ),
+ 'type' => 'option',
+ 'transport' => 'postMessage',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'wp_kses_post',
+ )
+ );
+ $wp_customize->add_control(
+ 'trestle_read_more_text_control',
+ array(
+ 'section' => 'trestle_settings_section',
+ 'settings' => 'genesis-settings[trestle_read_more_text]',
+ 'label' => __( 'Custom read more link text', 'trestle' ),
+ )
+ );
+
+ // Post revisions number
+ $wp_customize->add_setting(
+ 'genesis-settings[trestle_revisions_number]',
+ array(
+ 'default' => genesis_get_option( 'trestle_revisions_number' ),
+ 'type' => 'option',
+ 'transport' => 'postMessage',
+ 'capability' => 'edit_theme_options',
+ )
+ );
+ $wp_customize->add_control(
+ 'trestle_revisions_number_control',
+ array(
+ 'section' => 'trestle_settings_section',
+ 'settings' => 'genesis-settings[trestle_revisions_number]',
+ 'label' => __( 'Number of post revisions', 'trestle' ),
+ 'type' => 'select',
+ 'choices' => array(
+ '-1' => __( 'Unlimited', 'trestle' ),
+ '0' => '0',
+ '1' => '1',
+ '2' => '2',
+ '3' => '3',
+ '4' => '4',
+ '5' => '5',
+ '6' => '6',
+ '7' => '7',
+ '8' => '8',
+ '9' => '9',
+ '10' => '10',
+ )
+ )
+ );
+
+ // Footer Widget Areas
+ $wp_customize->add_setting(
+ 'genesis-settings[trestle_footer_widgets_number]',
+ array(
+ 'default' => genesis_get_option( 'trestle_footer_widgets_number' ),
+ 'type' => 'option',
+ 'transport' => 'postMessage',
+ 'capability' => 'edit_theme_options',
+ )
+ );
+ $wp_customize->add_control(
+ 'trestle_footer_widgets_number_control',
+ array(
+ 'section' => 'trestle_settings_section',
+ 'settings' => 'genesis-settings[trestle_footer_widgets_number]',
+ 'label' => __( 'Number of footer widgets', 'trestle' ),
+ 'type' => 'select',
+ 'choices' => array(
+ '0' => '0',
+ '1' => '1',
+ '2' => '2',
+ '3' => '3',
+ '4' => '4',
+ '5' => '5',
+ '6' => '6',
+ )
+ )
+ );
+
+ // Add a label for the link icons
+ $wp_customize->add_setting(
+ 'genesis-settings[trestle_link_icons_title]',
+ array(
+ 'default' => '',
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ )
+ );
+ $wp_customize->add_control(
+ 'trestle_link_icons_title',
+ array(
+ 'section' => 'trestle_settings_section',
+ 'settings' => 'genesis-settings[trestle_link_icons_title]',
+ 'label' => __( 'Icon links', 'trestle' ),
+ 'type' => 'hidden',
+ )
+ );
+
+ // External Link Icons
+ $wp_customize->add_setting(
+ 'genesis-settings[trestle_external_link_icons]',
+ array(
+ 'default' => genesis_get_option( 'trestle_external_link_icons' ),
+ 'type' => 'option',
+ 'transport' => 'postMessage',
+ 'capability' => 'edit_theme_options',
+ )
+ );
+ $wp_customize->add_control(
+ 'trestle_external_link_icons',
+ array(
+ 'section' => 'trestle_settings_section',
+ 'settings' => 'genesis-settings[trestle_external_link_icons]',
+ 'label' => __( 'Add icons to external links', 'trestle' ),
+ 'type' => 'checkbox',
+ )
+ );
+
+ // E-mail Link Icons
+ $wp_customize->add_setting(
+ 'genesis-settings[trestle_email_link_icons]',
+ array(
+ 'default' => genesis_get_option( 'trestle_email_link_icons' ),
+ 'type' => 'option',
+ 'transport' => 'postMessage',
+ 'capability' => 'edit_theme_options',
+ )
+ );
+ $wp_customize->add_control(
+ 'trestle_email_link_icons',
+ array(
+ 'section' => 'trestle_settings_section',
+ 'settings' => 'genesis-settings[trestle_email_link_icons]',
+ 'label' => __( 'Add icons to email links', 'trestle' ),
+ 'type' => 'checkbox',
+ )
+ );
+
+ // PDF Link Icons
+ $wp_customize->add_setting(
+ 'genesis-settings[trestle_pdf_link_icons]',
+ array(
+ 'default' => genesis_get_option( 'trestle_pdf_link_icons' ),
+ 'type' => 'option',
+ 'transport' => 'postMessage',
+ 'capability' => 'edit_theme_options',
+ )
+ );
+ $wp_customize->add_control(
+ 'trestle_pdf_link_icons',
+ array(
+ 'section' => 'trestle_settings_section',
+ 'settings' => 'genesis-settings[trestle_pdf_link_icons]',
+ 'label' => __( 'Add icons to .pdf links', 'trestle' ),
+ 'type' => 'checkbox',
+ )
+ );
+
+ // Doc Link Icons
+ $wp_customize->add_setting(
+ 'genesis-settings[trestle_doc_link_icons]',
+ array(
+ 'default' => genesis_get_option( 'trestle_doc_link_icons' ),
+ 'type' => 'option',
+ 'transport' => 'postMessage',
+ 'capability' => 'edit_theme_options',
+ )
+ );
+ $wp_customize->add_control(
+ 'trestle_doc_link_icons',
+ array(
+ 'section' => 'trestle_settings_section',
+ 'settings' => 'genesis-settings[trestle_doc_link_icons]',
+ 'label' => __( 'Add icons to .doc links', 'trestle' ),
+ 'type' => 'checkbox',
+ )
+ );
+
+}
From b23e0e3f7be1288b82967b0c9838ba9d38d83c70 Mon Sep 17 00:00:00 2001
From: Braad
Date: Thu, 19 Mar 2015 15:15:50 -0700
Subject: [PATCH 22/31] Add customizer.js
---
includes/admin/customizer.js | 137 +++++++++++++++++++++++++++++++++++
1 file changed, 137 insertions(+)
create mode 100644 includes/admin/customizer.js
diff --git a/includes/admin/customizer.js b/includes/admin/customizer.js
new file mode 100644
index 0000000..b6fb4ea
--- /dev/null
+++ b/includes/admin/customizer.js
@@ -0,0 +1,137 @@
+/**
+ * JavaScript for the Customizer Preview
+ *
+ * @since 1.0.0
+ */
+
+( function( $ ) {
+
+ // Layout
+ wp.customize( 'genesis-settings[trestle_layout]', function( value ) {
+ value.bind( function( value ) {
+
+ var $body = $( 'body' );
+
+ switch ( value ) {
+ case 'solid':
+ $body.removeClass( 'bubble' );
+ break;
+ case 'bubble':
+ $body.addClass( 'bubble' );
+ break;
+ }
+
+ });
+ });
+
+ // Custom logo
+ wp.customize( 'genesis-settings[trestle_logo_url]', function( value ) {
+ value.bind( function( url ) {
+
+ var $body = $( 'body' );
+
+ if ( 0 === $.trim( url ).length ) {
+ $body.removeClass( 'has-logo' );
+ $( '.site-title a.image-link' ).remove();
+ } else {
+ $body.addClass( 'has-logo' );
+ $( '.site-title a.image-link' ).remove();
+ $( '.site-title' ).append( '
' );
+ }
+
+ });
+ });
+
+ // Primary Nav Location
+ wp.customize( 'genesis-settings[trestle_nav_primary_location]', function( value ) {
+ value.bind( function( value ) {
+
+ var $body = $( 'body' );
+ var $nav = $( '.nav-primary' );
+
+ switch ( value ) {
+ case 'full':
+ $body.removeClass( 'nav-primary-location-header' )
+ .addClass( 'nav-primary-location-full' );
+ $nav.remove().insertAfter( '.site-header' );
+ break;
+ case 'header':
+ $body.removeClass( 'nav-primary-location-full' )
+ .addClass( 'nav-primary-location-header' );
+ $nav.remove().appendTo( '.site-header .wrap' );
+ break;
+ }
+
+ });
+ });
+
+ // Custom Read More Link Text
+ wp.customize( 'genesis-settings[trestle_read_more_text]', function( value ) {
+ value.bind( function( value ) {
+
+ $( 'a.more-link' ).text( value );
+
+ });
+ });
+
+ // External Links
+ wp.customize( 'genesis-settings[trestle_external_link_icons]', function( value ) {
+ value.bind( function( value ) {
+
+ var $body = $( 'body' );
+
+ if ( value ) {
+ $body.addClass( 'external-link-icons' );
+ } else {
+ $body.removeClass( 'external-link-icons' );
+ }
+
+ });
+ });
+
+ // Email Links
+ wp.customize( 'genesis-settings[trestle_email_link_icons]', function( value ) {
+ value.bind( function( value ) {
+
+ var $body = $( 'body' );
+
+ if ( value ) {
+ $body.addClass( 'email-link-icons' );
+ } else {
+ $body.removeClass( 'email-link-icons' );
+ }
+
+ });
+ });
+
+ // PDF Links
+ wp.customize( 'genesis-settings[trestle_pdf_link_icons]', function( value ) {
+ value.bind( function( value ) {
+
+ var $body = $( 'body' );
+
+ if ( value ) {
+ $body.addClass( 'pdf-link-icons' );
+ } else {
+ $body.removeClass( 'pdf-link-icons' );
+ }
+
+ });
+ });
+
+ // Doc Links
+ wp.customize( 'genesis-settings[trestle_doc_link_icons]', function( value ) {
+ value.bind( function( value ) {
+
+ var $body = $( 'body' );
+
+ if ( value ) {
+ $body.addClass( 'doc-link-icons' );
+ } else {
+ $body.removeClass( 'doc-link-icons' );
+ }
+
+ });
+ });
+
+})( jQuery );
From 47ca5a873acfb576e184b113fd238fc4668c7917 Mon Sep 17 00:00:00 2001
From: Braad
Date: Thu, 19 Mar 2015 15:16:41 -0700
Subject: [PATCH 23/31] Remove editor-style.css
---
includes/admin/editor-style.css | 36 ---------------------------------
1 file changed, 36 deletions(-)
delete mode 100644 includes/admin/editor-style.css
diff --git a/includes/admin/editor-style.css b/includes/admin/editor-style.css
deleted file mode 100644
index 4d17d21..0000000
--- a/includes/admin/editor-style.css
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Trestle editor styles
- *
- * @since 1.0.0
- *
- * @package Trestle
- */
-
-@import url( '../../style.css' );
-
-/* Overrides
---------------------------------------------- */
-body {
- padding: 8px 16px;
- background-color: #FFF;
- background-image: none;
-}
-
-.content {
- width: 100%;
- font-size: 1.6rem;
-}
-
-.content a {
- color: #f15123;
-}
-
-.content a:hover {
- color: #333;
-}
-
-.content ul,
-.content ol {
- margin: 0 0 26px 40px;
- margin: 0 0 2.6rem 4rem;
-}
\ No newline at end of file
From 26278516b694ec19851135b10b72966c162136d5 Mon Sep 17 00:00:00 2001
From: Braad
Date: Thu, 19 Mar 2015 15:18:43 -0700
Subject: [PATCH 24/31] Update theme-functions.php
---
includes/functions/theme-functions.php | 48 +++++++++++++++-----------
1 file changed, 27 insertions(+), 21 deletions(-)
diff --git a/includes/functions/theme-functions.php b/includes/functions/theme-functions.php
index 2efc389..40309e6 100644
--- a/includes/functions/theme-functions.php
+++ b/includes/functions/theme-functions.php
@@ -20,7 +20,7 @@ add_action( 'wp_enqueue_scripts', 'trestle_header_actions' );
* @since 1.0.0
*/
function trestle_header_actions() {
-
+
// Google fonts
wp_enqueue_style( 'theme-google-fonts', '//fonts.googleapis.com/css?family=Lato:300,400,700' );
@@ -36,7 +36,7 @@ function trestle_header_actions() {
$custom_css_file = '/trestle/custom.css';
if ( is_readable( $upload_path . $custom_css_file ) )
wp_enqueue_style( 'trestle-custom-css', $upload_url . $custom_css_file );
-
+
// Custom jQuery (if it exists)
$custom_js_file = '/trestle/custom.js';
if ( is_readable( $upload_path . $custom_js_file ) )
@@ -58,7 +58,7 @@ add_filter( 'body_class', 'trestle_body_classes' );
* @return array Updated body classes.
*/
function trestle_body_classes( $classes ) {
-
+
// Add 'no-jquery' class to be removed by jQuery if enabled
$classes[] = 'no-jquery';
@@ -79,19 +79,15 @@ function trestle_body_classes( $classes ) {
// Add menu style class
if ( genesis_get_option( 'trestle_nav_primary_location' ) )
$classes[] = 'nav-primary-location-' . esc_attr( genesis_get_option( 'trestle_nav_primary_location' ) );
-
+
// Add footer widget number class
if ( genesis_get_option( 'trestle_footer_widgets_number' ) )
$classes[] = 'footer-widgets-number-' . esc_attr( genesis_get_option( 'trestle_footer_widgets_number' ) );
- // Add class for equal height Genesis Extender columns
- if ( 1 == genesis_get_option( 'trestle_equal_height_cols' ) )
- $classes[] = 'equal-height-genesis-extender-cols';
-
// Add logo class
if ( genesis_get_option( 'trestle_logo_url' ) || genesis_get_option( 'trestle_logo_url_mobile' ) )
$classes[] = 'has-logo';
-
+
return $classes;
}
@@ -108,6 +104,7 @@ add_filter( 'genesis_seo_title', 'trestle_do_logos', 10, 3 );
* @since 1.0.0
*/
function trestle_do_logos( $title, $inside, $wrap ) {
+
$logo_url = genesis_get_option( 'trestle_logo_url' );
$logo_url_mobile = genesis_get_option( 'trestle_logo_url_mobile' );
$logo_html = '';
@@ -125,7 +122,7 @@ function trestle_do_logos( $title, $inside, $wrap ) {
$logo_html .= sprintf( '
',
implode(' ', $classes),
esc_attr( get_bloginfo( 'name' ) ),
- $logo_url
+ $logo_url
);
}
@@ -142,8 +139,8 @@ function trestle_do_logos( $title, $inside, $wrap ) {
$logo_html .= sprintf( '
',
implode(' ', $classes),
esc_attr( get_bloginfo( 'name' ) ),
- $logo_url_mobile
- );
+ $logo_url_mobile
+ );
}
if ( $logo_html ) {
@@ -154,11 +151,11 @@ function trestle_do_logos( $title, $inside, $wrap ) {
);
}
- //* Build the title
+ // Build the title
$title = genesis_html5() ? sprintf( "<{$wrap} %s>", genesis_attr( 'site-title' ) ) : sprintf( '<%s id="title">%s%s>', $wrap, $inside, $wrap );
$title .= genesis_html5() ? "{$inside}{$wrap}>" : '';
- //* Echo (filtered)
+ // Echo (filtered)
return $title;
}
@@ -179,6 +176,7 @@ add_action( 'init', 'trestle_nav_modifications' );
* @see trestle_nav_placeholder()
*/
function trestle_nav_modifications() {
+
global $trestle_nav_title;
// Set title for Trestle placeholder navigation menu
@@ -193,7 +191,7 @@ function trestle_nav_modifications() {
if ( 1 == genesis_get_option( 'trestle_custom_nav_extras' ) ) {
// Remove default nav extras
remove_filter( 'wp_nav_menu_items', 'genesis_nav_right' );
-
+
// Add custom nav extras
add_filter( 'wp_nav_menu_items', 'trestle_custom_nav_extras', 10, 2 );
}
@@ -227,6 +225,7 @@ function trestle_nav_primary_location() {
* @return string list of (modified) navigation menu items.
*/
function trestle_auto_nav_items( $nav_items, stdClass $menu_args ) {
+
if ( 'primary' == $menu_args->theme_location ) {
$args = array(
'depth' => genesis_get_option( 'trestle_auto_nav_depth' ) ? genesis_get_option( 'trestle_auto_nav_depth' ) : 0,
@@ -249,7 +248,7 @@ function trestle_auto_nav_items( $nav_items, stdClass $menu_args ) {
// Remove closing
$nav_items = preg_replace( '/<\/ul>\s*<\/div>/', '', $nav_items );
}
-
+
return $nav_items;
}
@@ -263,6 +262,7 @@ function trestle_auto_nav_items( $nav_items, stdClass $menu_args ) {
* @return string list of menu items with custom navigation extras appended.
*/
function trestle_custom_nav_extras( $nav_items, stdClass $menu_args ) {
+
if ( 'primary' == $menu_args->theme_location ) {
$custom_text = esc_attr( genesis_get_option( 'trestle_custom_nav_extras_text' ) );
return $nav_items . '' . do_shortcode( genesis_get_option( 'trestle_custom_nav_extras_text' ) ) . '';
@@ -281,6 +281,7 @@ function trestle_custom_nav_extras( $nav_items, stdClass $menu_args ) {
* @since 1.0.0
*/
function trestle_nav_placeholder() {
+
global $trestle_nav_title;
// Create placeholder menu for 'primary' spot if auto-nav is selected - this ensures that nav extras can be used even when no custom menu is formally set to primary
@@ -309,7 +310,7 @@ function trestle_nav_placeholder() {
add_filter( 'wp_revisions_to_keep', 'trestle_update_revisions_number', 10, 2 );
/**
- * Sets the number of post revisions.
+ * Sets the number of post revisions.
*
* @since 1.0.0
*
@@ -317,6 +318,7 @@ add_filter( 'wp_revisions_to_keep', 'trestle_update_revisions_number', 10, 2 );
* @return int Number of post revisions specified in Trestle admin panel.
*/
function trestle_update_revisions_number( $num ) {
+
$trestle_revisions_number = esc_attr( genesis_get_option( 'trestle_revisions_number' ) );
if ( isset( $trestle_revisions_number ) )
@@ -335,13 +337,14 @@ add_action( 'the_post', 'trestle_post_info_meta', 5 );
* @global object $post The current $post object.
*/
function trestle_post_info_meta() {
+
if ( ! is_admin() && in_the_loop() && genesis_get_option( 'trestle_manual_post_info_meta' ) ) {
global $post;
// Get post type
$post_type = get_post_type( $post->ID );
-
+
// Remove all Post Info & Meta
remove_action( 'genesis_entry_header', 'genesis_post_info', 12 );
remove_action( 'genesis_entry_footer', 'genesis_post_meta' );
@@ -350,7 +353,7 @@ function trestle_post_info_meta() {
if ( is_singular() ) {
$single_info_option = 'trestle_post_info_' . $post_type . '_single';
$single_meta_option = 'trestle_post_meta_' . $post_type . '_single';
-
+
// Post Info
if ( genesis_get_option( $single_info_option ) )
add_action( 'genesis_entry_header', 'genesis_post_info', 12 );
@@ -364,7 +367,7 @@ function trestle_post_info_meta() {
if ( ! is_singular() ) {
$archive_info_option = 'trestle_post_info_' . $post_type . '_archive';
$archive_meta_option = 'trestle_post_meta_' . $post_type . '_archive';
-
+
// Post Info
if ( genesis_get_option( $archive_info_option ) )
add_action( 'genesis_entry_header', 'genesis_post_info', 12 );
@@ -390,7 +393,9 @@ add_filter( 'genesis_get_image_default_args', 'trestle_featured_image_fallback'
* @return array Updated image args
*/
function trestle_featured_image_fallback( $args ) {
+
$args['fallback'] = false;
+
return $args;
}
@@ -411,10 +416,11 @@ add_filter( 'the_content_more_link', 'trestle_read_more_link' );
* @return string (Updated) "read more" text.
*/
function trestle_read_more_link( $default_text ) {
+
// Get Trestle custom "read more" link text
$custom_text = esc_attr( genesis_get_option( 'trestle_read_more_text' ) );
- if ( $custom_text )
+ if ( $custom_text )
return '… ' . $custom_text . '';
else
return $default_text;
From 2d87079e05dfa1d6ba70a2bb7fba853e4e8f1f97 Mon Sep 17 00:00:00 2001
From: Braad
Date: Thu, 19 Mar 2015 15:20:37 -0700
Subject: [PATCH 25/31] Update theme-jquery.js
---
includes/js/theme-jquery.js | 186 ++++++++++++++++++------------------
1 file changed, 93 insertions(+), 93 deletions(-)
diff --git a/includes/js/theme-jquery.js b/includes/js/theme-jquery.js
index 781141a..514b840 100644
--- a/includes/js/theme-jquery.js
+++ b/includes/js/theme-jquery.js
@@ -9,132 +9,132 @@
// Executes when the document is ready
jQuery( document ).ready( function( $ ) {
- // Remove .no-jquery body class
- $( 'body' ).removeClass( 'no-jquery' );
+ // Remove .no-jquery body class
+ $( 'body' ).removeClass( 'no-jquery' );
- // External Links
- var h = window.location.host.toLowerCase();
- $( '[href^="http"]' ).not( '[href*="' + h + '"]' ).addClass( 'external-link' ).attr( "target", "_blank" );
+ // External Links
+ var h = window.location.host.toLowerCase();
+ $( '[href^="http"]' ).not( '[href*="' + h + '"]' ).addClass( 'external-link' ).attr( "target", "_blank" );
- // Add classes to different types of links
- $( 'a[href^="mailto:"]' ).addClass( 'email-link' );
- $( 'a[href$=".pdf"]' ).attr({ "target":"_blank" }).addClass( 'pdf-link' );
- $( 'a[href$=".doc"]' ).attr({ "target":"_blank" }).addClass( 'doc-link' );
- $( 'a' ).has( 'img' ).addClass( 'image-link' );
+ // Add classes to different types of links
+ $( 'a[href^="mailto:"]' ).addClass( 'email-link' );
+ $( 'a[href$=".pdf"]' ).attr({ "target":"_blank" }).addClass( 'pdf-link' );
+ $( 'a[href$=".doc"]' ).attr({ "target":"_blank" }).addClass( 'doc-link' );
+ $( 'a' ).has( 'img' ).addClass( 'image-link' );
- // Add classes to parts of lists
- $( 'li:last-child' ).addClass( 'last' );
- $( 'li:first-child' ).addClass( 'first' );
- $( 'ul, ol' ).parent( 'li' ).addClass( 'parent' );
+ // Add classes to parts of lists
+ $( 'li:last-child' ).addClass( 'last' );
+ $( 'li:first-child' ).addClass( 'first' );
+ $( 'ul, ol' ).parent( 'li' ).addClass( 'parent' );
- // Mobile header toggle buttons
- $( '.site-header .title-area' ).after( '' );
- $( '.site-header .widget-area, .nav-primary' ).each( function( i ) {
+ // Mobile header toggle buttons
+ $( '.site-header .title-area' ).after( '' );
+ $( '.site-header .widget-area, .nav-primary' ).each( function( i ) {
- // Store target
- $target = $( this );
+ // Store target
+ $target = $( this );
- // Scope variables
- var $target, buttonClass, targetClass;
+ // Scope variables
+ var $target, buttonClass, targetClass;
- // Setup classes
- buttonClass = 'toggle-button';
- targetClass = $target.attr( 'class' ).split( /\s+/ );
+ // Setup classes
+ buttonClass = 'toggle-button';
+ targetClass = $target.attr( 'class' ).split( /\s+/ );
- // Add targets-[] class to buttonClass
- $.each( targetClass, function( index, value ) {
- buttonClass += ' targets-' + value;
- });
+ // Add targets-[] class to buttonClass
+ $.each( targetClass, function( index, value ) {
+ buttonClass += ' targets-' + value;
+ });
- // Add nav-toggle class to buttonClass if the button is for the nav
- if ( $target.is( 'nav' ) ) {
- buttonClass += ' nav-toggle';
- }
+ // Add nav-toggle class to buttonClass if the button is for the nav
+ if ( $target.is( 'nav' ) ) {
+ buttonClass += ' nav-toggle';
+ }
- // Add toggle buttons to header
- $( '.toggle-buttons' ).prepend( 'Toggle' );
+ // Add toggle buttons to header
+ $( '.toggle-buttons' ).prepend( 'Toggle' );
- // Add target class to nav and widget areas
- $target.addClass( 'toggle-target-' + i );
- });
+ // Add target class to nav and widget areas
+ $target.addClass( 'toggle-target-' + i );
+ });
- // Toggle widget areas and primary nav
- $( '.site-header .toggle-button' ).click( function( event ) {
+ // Toggle widget areas and primary nav
+ $( '.site-header .toggle-button' ).click( function( event ) {
- // Prevent default behavior
- event.preventDefault();
+ // Prevent default behavior
+ event.preventDefault();
- // Scope our variables
- var $button, $target;
+ // Scope our variables
+ var $button, $target;
- // Get toggle button that was clicked
- $button = $( this );
+ // Get toggle button that was clicked
+ $button = $( this );
- //Remove focus
- $button.blur();
+ //Remove focus
+ $button.blur();
- // Match the button to the right target
- $target = $( '.toggle-target-' + $button.attr( 'id' ).match( /\d+/ ) );
+ // Match the button to the right target
+ $target = $( '.toggle-target-' + $button.attr( 'id' ).match( /\d+/ ) );
- // Toggle buttons
- $button.toggleClass( 'open' );
- $( '.site-header .toggle-button' ).not( $button ).removeClass( 'open' );
+ // Toggle buttons
+ $button.toggleClass( 'open' );
+ $( '.site-header .toggle-button' ).not( $button ).removeClass( 'open' );
- // Toggle targets
- $target.toggleClass( 'open' );
- $( '[class^="toggle-target"]' ).not( $target ).removeClass( 'open' );
- });
+ // Toggle targets
+ $target.toggleClass( 'open' );
+ $( '[class^="toggle-target"]' ).not( $target ).removeClass( 'open' );
+ });
- // Mobile navigation icons
- var closedIcon = '+';
- var openIcon = '-';
+ // Mobile navigation icons
+ var closedIcon = '+';
+ var openIcon = '-';
- // Insert the icons into the nav where appropriate
- $( '.nav-primary' ).find( '.genesis-nav-menu .parent:not( .current-menu-item, .current_page_item, .current_page_parent, .current_page_ancestor) > a' ).after( '' + closedIcon + '' );
- $( '.nav-primary' ).find( '.genesis-nav-menu .parent.current-menu-item > a, .genesis-nav-menu .parent.current_page_item > a, .genesis-nav-menu .parent.current_page_parent > a, .genesis-nav-menu .parent.current_page_ancestor > a' ).after( '' + openIcon + '' );
+ // Insert the icons into the nav where appropriate
+ $( '.nav-primary' ).find( '.genesis-nav-menu .parent:not( .current-menu-item, .current_page_item, .current_page_parent, .current_page_ancestor) > a' ).after( '' + closedIcon + '' );
+ $( '.nav-primary' ).find( '.genesis-nav-menu .parent.current-menu-item > a, .genesis-nav-menu .parent.current_page_item > a, .genesis-nav-menu .parent.current_page_parent > a, .genesis-nav-menu .parent.current_page_ancestor > a' ).after( '' + openIcon + '' );
- // Mobile navigation expand/contract functionality
- $( '.sub-icon' ).click( function( event ) {
+ // Mobile navigation expand/contract functionality
+ $( '.sub-icon' ).click( function( event ) {
- // Prevent default behavior
- event.preventDefault();
+ // Prevent default behavior
+ event.preventDefault();
- // Get icon click
- var $icon = $( this );
+ // Get icon click
+ var $icon = $( this );
- // Remove focus
- $icon.blur();
+ // Remove focus
+ $icon.blur();
- // Expand/contract
- $icon.next( 'ul' ).slideToggle().toggleClass( 'open' );
+ // Expand/contract
+ $icon.next( 'ul' ).slideToggle().toggleClass( 'open' );
- // Change the icon to indicate open/closed
- if ( $icon.text().indexOf( closedIcon ) !== -1 ) {
- $icon.text( openIcon );
- } else if ( $icon.text().indexOf( openIcon ) !== -1 ) {
- $icon.text( closedIcon );
- }
- });
+ // Change the icon to indicate open/closed
+ if ( $icon.text().indexOf( closedIcon ) !== -1 ) {
+ $icon.text( openIcon );
+ } else if ( $icon.text().indexOf( openIcon ) !== -1 ) {
+ $icon.text( closedIcon );
+ }
+ });
- // Header widget area expand/contract functionality
- $( '.widget-area-toggle' ).click( function( event ) {
+ // Header widget area expand/contract functionality
+ $( '.widget-area-toggle' ).click( function( event ) {
- // Prevent default behavior
- event.preventDefault();
+ // Prevent default behavior
+ event.preventDefault();
- // Get button clicked
- var $button = $( this );
+ // Get button clicked
+ var $button = $( this );
- // Remove focus
- $button.blur();
+ // Remove focus
+ $button.blur();
- // Expand/contract
- $button.toggleClass( 'open' ).next( '.widget-area' ).slideToggle();
- });
+ // Expand/contract
+ $button.toggleClass( 'open' ).next( '.widget-area' ).slideToggle();
+ });
- // Executes when complete page is fully loaded, including all frames, objects, and images
- $( window ).on( 'load', function() {
+ // Executes when complete page is fully loaded, including all frames, objects, and images
+ $( window ).on( 'load', function() {
- });
+ });
}); /* end of page load scripts */
From 9de3310f116bb4f7dd5323ca40b16f2fe4160dcd Mon Sep 17 00:00:00 2001
From: Braad
Date: Thu, 19 Mar 2015 15:21:54 -0700
Subject: [PATCH 26/31] Update style.css
---
style.css | 89 +++++++++++++++++++++++++++++++++----------------------
1 file changed, 53 insertions(+), 36 deletions(-)
diff --git a/style.css b/style.css
index 144a514..3aaf97d 100644
--- a/style.css
+++ b/style.css
@@ -151,6 +151,10 @@ body {
line-height: 1.625;
}
+body.mce-content-body {
+ width: 100%; /* Used in the editor */
+}
+
body.bubble {
background-color: #f5f5f5;
}
@@ -177,7 +181,7 @@ textarea:focus,
-ms-transition: all 0.1s ease-in-out;
-o-transition: all 0.1s ease-in-out;
transition: all 0.1s ease-in-out;
-
+
-webkit-appearance: none;
-moz-appearance: none;
}
@@ -213,7 +217,9 @@ ul {
}
.site-inner ol,
-.site-inner ul {
+.site-inner ul,
+.mce-content-body ol, /* Used in the editor */
+.mce-content-body ul { /* used in the editor */
margin-left: 40px;
margin-left: 4rem;
margin-bottom: 26px;
@@ -296,12 +302,14 @@ a:hover {
color: #333;
}
-.site-inner a {
+.site-inner a,
+.mce-content-body a { /* Used in the Editor */
border-bottom: 1px solid #ddd;
color: #f15123;
}
-.site-inner a:hover {
+.site-inner a:hover,
+.mce-content-body a:hover { /* Used in the Editor */
color: #333;
}
@@ -442,8 +450,12 @@ button,
.genesis-nav-menu a,
.genesis-nav-menu > .right,
#subscribe-email input, /* Begin Jetpack - Blog Subscription */
-div.gform_wrapper input[type="email"], /* Begin Gravity Forms */
-div.gform_wrapper input[type="text"],
+div.gform_wrapper input[type=text],
+div.gform_wrapper input[type=url],
+div.gform_wrapper input[type=email],
+div.gform_wrapper input[type=tel],
+div.gform_wrapper input[type=number],
+div.gform_wrapper input[type=password],
div.gform_wrapper textarea,
div.gform_wrapper .ginput_complex label {
padding: 15px;
@@ -463,7 +475,8 @@ textarea {
}
input[type="radio"],
-input[type="checkbox"] {
+input[type="checkbox"],
+input[type="image"] {
width: auto;
}
@@ -537,11 +550,6 @@ body .button:hover,
/* Sidebar Forms, Buttons, & Inputs */
-.sidebar input,
-.sidebar select,
-.sidebar textarea,
-.sidebar button,
-.sidebar .button,
.sidebar #subscribe-email input, /* Begin Jetpack - Blog Subscription */
.sidebar div.gform_wrapper input[type="email"], /* Begin Gravity Forms */
.sidebar div.gform_wrapper input[type="text"],
@@ -555,11 +563,6 @@ body .button:hover,
padding: 0.5em;
}
-.sidebar input[type="radio"],
-.sidebar input[type="checkbox"] {
- width: auto !important;
-}
-
.sidebar input[type="file"] {
padding: 0;
}
@@ -593,7 +596,7 @@ body .red:hover {
.genesis-nav-menu .button:hover {
background-color: #555;
- border-color: #555;
+ border-color: #555;
}
body .blue {
@@ -1061,8 +1064,12 @@ div.gform_wrapper {
max-width: 100%;
}
-div.gform_wrapper input[type="email"],
-div.gform_wrapper input[type="text"],
+div.gform_wrapper input[type=text],
+div.gform_wrapper input[type=url],
+div.gform_wrapper input[type=email],
+div.gform_wrapper input[type=tel],
+div.gform_wrapper input[type=number],
+div.gform_wrapper input[type=password],
div.gform_wrapper textarea {
font-size: 16px;
font-size: 1.6rem;
@@ -1169,10 +1176,11 @@ body .mapp-layout {
.simple-section-nav .current_page_item > a,
.simple-section-nav .current_page_ancestor > a {
-
+
}
-.simple-section-nav .current_page_item > a {
+.simple-section-nav .current_page_item > a,
+.simple-section-nav .custom-custom-post-type-parent > a {
font-weight: bold;
}
@@ -1360,9 +1368,14 @@ Site Header
.site-header .widget-area {
width: 100%;
- padding: 20px;
background-color: #eee;
border: 1px solid #ddd;
+ border-width: 0;
+ overflow: hidden;
+}
+
+.site-header .widget-area.open {
+ padding: 20px;
border-width: 1px 0;
}
@@ -1383,7 +1396,6 @@ Site Header
.site-header .toggle-button {
margin-left: 15px;
- outline: none;
}
.site-header .toggle-button.open {
@@ -1404,7 +1416,7 @@ Site Header
.nav-primary,
-.site-header .nav-primary,
+/*.site-header .nav-primary,*/
.site-header .widget-area {
position: absolute;
top: 100%;
@@ -1414,11 +1426,11 @@ Site Header
opacity: 0;
box-shadow: 0 4px 8px 1px rgba(0,0,0,0.4);
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
- -webkit-transition: all .5s ease;
- -moz-transition: all .5s ease;
- -ms-transition: all .5s ease;
- -o-transition: all .5s ease;
- transition: all .5s ease;
+ -webkit-transition: all .5s ease, padding 0s .5s;
+ -moz-transition: all .5s ease, padding 0s .5s;
+ -ms-transition: all .5s ease, padding 0s .5s;
+ -o-transition: all .5s ease, padding 0s .5s;
+ transition: all .5s ease, padding 0s .5s;
}
.site-container > .nav-primary {
@@ -1430,7 +1442,12 @@ Site Header
z-index: 50;
max-height: 9999px;
opacity: 1;
- -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
+ -webkit-transition: opacity .5s ease, padding 0s 0s;
+ -moz-transition: opacity .5s ease, padding 0s 0s;
+ -ms-transition: opacity .5s ease, padding 0s 0s;
+ -o-transition: opacity .5s ease, padding 0s 0s;
+ transition: opacity .5s ease, padding 0s 0s;
}
@@ -2084,19 +2101,19 @@ Media Queries
font-size: 16px;
font-size: 1.6rem;
}
-
+
}
/* Responsive Tables CSS
--------------------------------------------- */
@media (max-width: 600px) {
-
+
table {
clear: both;
}
tr {
- padding: 0.5em;
+ padding: 0.5em;
}
th,
@@ -2387,7 +2404,7 @@ Media Queries
.five-sixths {
width: 82.90598290598291%;
}
-
+
.first,
.footer-widgets .footer-widgets-1 {
clear: both;
@@ -2556,7 +2573,7 @@ Media Queries
/* Plugins
--------------------------------------------- */
-
+
/* Events Manager */
.em-calendar-wrapper .fullcalendar tr {
display: table-row !important;
From 8890f6e41382959d5464f11cfc40aeddf919fa11 Mon Sep 17 00:00:00 2001
From: MickeyKay
Date: Mon, 23 Mar 2015 12:19:09 -0700
Subject: [PATCH 27/31] Fix merge conflict causing PHP error.
---
includes/functions/theme-functions.php | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)
diff --git a/includes/functions/theme-functions.php b/includes/functions/theme-functions.php
index b79732d..eb49a3b 100644
--- a/includes/functions/theme-functions.php
+++ b/includes/functions/theme-functions.php
@@ -462,11 +462,7 @@ function trestle_read_more_link( $default_text ) {
// Get Trestle custom "read more" link text
$custom_text = esc_attr( genesis_get_option( 'trestle_read_more_text' ) );
-<<<<<<< HEAD
- if ( $custom_text ) {
-=======
- if ( $custom_text )
->>>>>>> 9de3310f116bb4f7dd5323ca40b16f2fe4160dcd
+ if ( $custom_text ) {
return '… ' . $custom_text . '';
} else {
return $default_text;
From 189b5fe9951a58bbf0c743084ad6270263b9dbd7 Mon Sep 17 00:00:00 2001
From: MickeyKay
Date: Mon, 23 Mar 2015 12:33:33 -0700
Subject: [PATCH 28/31] Re-add favicon functionality.
---
includes/admin/admin.php | 1 +
includes/admin/customizer.js | 10 ++++++++++
includes/admin/customizer.php | 24 +++++++++++++++++++++++-
3 files changed, 34 insertions(+), 1 deletion(-)
diff --git a/includes/admin/admin.php b/includes/admin/admin.php
index a4a4f76..4fd5bc4 100644
--- a/includes/admin/admin.php
+++ b/includes/admin/admin.php
@@ -35,6 +35,7 @@ function trestle_custom_defaults( $defaults ) {
'trestle_layout' => 'solid',
'trestle_logo_url' => '',
'trestle_logo_url_mobile' => '',
+ 'trestle_favicon_url' => '',
'trestle_nav_primary_location' => 'full',
'trestle_read_more_text' => __( 'Read More »', 'trestle' ),
'trestle_revisions_number' => 3,
diff --git a/includes/admin/customizer.js b/includes/admin/customizer.js
index b6fb4ea..5249096 100644
--- a/includes/admin/customizer.js
+++ b/includes/admin/customizer.js
@@ -42,6 +42,16 @@
});
});
+ // Favicon
+ wp.customize( 'genesis-settings[trestle_favicon_url]', function( value ) {
+ value.bind( function( url ) {
+
+ var $faviconElem = $( 'link[rel="Shortcut Icon"]' );
+ $faviconElem.attr( 'href', url );
+
+ });
+ });
+
// Primary Nav Location
wp.customize( 'genesis-settings[trestle_nav_primary_location]', function( value ) {
value.bind( function( value ) {
diff --git a/includes/admin/customizer.php b/includes/admin/customizer.php
index 39e7526..b8a319e 100644
--- a/includes/admin/customizer.php
+++ b/includes/admin/customizer.php
@@ -108,13 +108,35 @@ function trestle_customizer_controls( $wp_customize ) {
$wp_customize,
'trestle_mobile_logo_control',
array(
- 'label' => __( 'Upload a logo for mobile', 'trestle' ),
+ 'label' => __( 'Upload a mobile logo', 'trestle' ),
'section' => 'trestle_settings_section',
'settings' => 'genesis-settings[trestle_logo_url_mobile]',
)
)
);
+ // Upload a mobile logo
+ $wp_customize->add_setting(
+ 'genesis-settings[trestle_favicon_url]',
+ array(
+ 'default' => genesis_get_option( 'trestle_favicon_url' ),
+ 'type' => 'option',
+ 'transport' => 'postMessage',
+ 'capability' => 'edit_theme_options',
+ )
+ );
+ $wp_customize->add_control(
+ new WP_Customize_Image_Control(
+ $wp_customize,
+ 'trestle_favicon_control',
+ array(
+ 'label' => __( 'Upload a favicon', 'trestle' ),
+ 'section' => 'trestle_settings_section',
+ 'settings' => 'genesis-settings[trestle_favicon_url]',
+ )
+ )
+ );
+
// Primary nav style
$wp_customize->add_setting(
'genesis-settings[trestle_nav_primary_location]',
From c8861270e18a9d0da83c0d99e141aedf2d185922 Mon Sep 17 00:00:00 2001
From: MickeyKay
Date: Mon, 23 Mar 2015 12:53:21 -0700
Subject: [PATCH 29/31] Remove nav functionality that now lives in Auto Menu
From Pages plugin.
---
includes/functions/theme-functions.php | 148 +------------------------
1 file changed, 2 insertions(+), 146 deletions(-)
diff --git a/includes/functions/theme-functions.php b/includes/functions/theme-functions.php
index eb49a3b..33a3789 100644
--- a/includes/functions/theme-functions.php
+++ b/includes/functions/theme-functions.php
@@ -14,13 +14,13 @@
===========================================*/
add_action( 'init', 'trestle_load_bfa' );
-/**
+/**
* Initialize the Better Font Awesome Library.
*
* @since 2.0.0
*/
function trestle_load_bfa() {
-
+
// Set the library initialization args
$args = array(
'version' => 'latest',
@@ -202,150 +202,6 @@ function trestle_do_logos( $title, $inside, $wrap ) {
}
-/*===========================================
- * Navigation
-===========================================*/
-
-add_action( 'init', 'trestle_nav_modifications' );
-/**
- * Performs modifications to the primary navigation menu
- *
- * @since 1.0.0
- *
- * @see trestle_add_mobile_nav()
- * @see trestle_auto_nav_items()
- * @see trestle_custom_nav_extras()
- * @see trestle_nav_placeholder()
- */
-function trestle_nav_modifications() {
-
- global $trestle_nav_title;
-
- // Set title for Trestle placeholder navigation menu
- $trestle_nav_title = __( 'Trestle Auto Nav Placeholder', 'trestle' );
-
- // Auto-generate nav if Genesis theme setting is checked
- if ( 1 == genesis_get_option( 'trestle_auto_nav' ) ) {
- add_filter( 'wp_nav_menu_items', 'trestle_auto_nav_items', 9, 2 );
- }
-
- // Do custom nav extras
- if ( 1 == genesis_get_option( 'trestle_custom_nav_extras' ) ) {
- // Remove default nav extras
- remove_filter( 'wp_nav_menu_items', 'genesis_nav_right' );
-
- // Add custom nav extras
- add_filter( 'wp_nav_menu_items', 'trestle_custom_nav_extras', 10, 2 );
- }
-
- // Create placeholder navigation menu object if needed
- trestle_nav_placeholder();
-}
-
-add_action( 'init', 'trestle_nav_primary_location' );
-/**
- * Move primary navigation into the header if need be.
- *
- * @since 1.2.0
- */
-function trestle_nav_primary_location() {
-
- if ( 'header' == genesis_get_option( 'trestle_nav_primary_location' ) ) {
- remove_action( 'genesis_after_header', 'genesis_do_nav' );
- add_action( 'genesis_header', 'genesis_do_nav', 12 );
- }
-
-}
-
-/**
- * Auto-generates list of pages for use in the primary navigation menu.
- *
- * @since 1.0.0
- *
- * @param string $nav_items list of navigation menu items.
- * @param stdClass $menu_args Arguments for the menu.
- * @return string list of (modified) navigation menu items.
- */
-function trestle_auto_nav_items( $nav_items, stdClass $menu_args ) {
-
- if ( 'primary' == $menu_args->theme_location ) {
- $args = array(
- 'depth' => genesis_get_option( 'trestle_auto_nav_depth' ) ? genesis_get_option( 'trestle_auto_nav_depth' ) : 0,
- 'echo' => false,
- 'show_home' => ( genesis_get_option( 'trestle_include_home_link' ) && genesis_get_option( 'trestle_home_link_text' ) ) ? do_shortcode( genesis_get_option( 'trestle_home_link_text' ) ): genesis_get_option( 'trestle_include_home_link' ),
- 'menu_class' => 'auto-menu'
- );
-
- $ul_class = 'menu genesis-nav-menu menu-primary';
-
- $menu_args = new stdClass();
-
- $menu_args->theme_location = 'primary';
-
- $nav_items = wp_page_menu( $args );
-
- // Remove opening
- $nav_items = preg_replace( '/]*>\s*
/', '', $nav_items );
-
- // Remove closing
- $nav_items = preg_replace( '/<\/ul>\s*<\/div>/', '', $nav_items );
- }
-
- return $nav_items;
-}
-
-/**
- * Replaces standard Genesis navigation extras with custom input navigation extras.
- *
- * @since 1.0.0
- *
- * @param string $nav_items - list of menu items.
- * @param stdClass $menu_args Arguments for the menu.
- * @return string
- list of menu items with custom navigation extras
- appended.
- */
-function trestle_custom_nav_extras( $nav_items, stdClass $menu_args ) {
-
- if ( 'primary' == $menu_args->theme_location ) {
- $custom_text = esc_attr( genesis_get_option( 'trestle_custom_nav_extras_text' ) );
- return $nav_items . '
- ' . do_shortcode( genesis_get_option( 'trestle_custom_nav_extras_text' ) ) . '
';
- }
-
- return $nav_items;
-}
-
-/**
- * Generates a placeholder navigation menu object.
- *
- * When using Trestle's auto-generated navigation feature,
- * it is necessary to ensure that some nav menu object is
- * selected as primary otherwise no navigation will be generated.
- *
- * @since 1.0.0
- */
-function trestle_nav_placeholder() {
-
- global $trestle_nav_title;
-
- // Create placeholder menu for 'primary' spot if auto-nav is selected - this ensures that nav extras can be used even when no custom menu is formally set to primary
- if ( 1 == genesis_get_option( 'trestle_auto_nav' ) && ! wp_get_nav_menu_object( $trestle_nav_title ) ) {
- wp_create_nav_menu( $trestle_nav_title );
- }
-
- // Assign placeholder menu to 'primary' if auto-nav is selected and there is no current primary menu
- if ( 1 == genesis_get_option( 'trestle_auto_nav' ) && ! wp_get_nav_menu_object( $trestle_nav_title ) && ! has_nav_menu( 'primary' ) ) {
- $menu_locations = get_theme_mod( 'nav_menu_locations' );
- $menu_locations['primary'] = wp_get_nav_menu_object( $trestle_nav_title )->term_id;
- set_theme_mod( 'nav_menu_locations', $menu_locations );
- }
-
- // Remove placeholder menu if auto-nav is disabled
- $menus = get_registered_nav_menus();
-
- if ( 1 != genesis_get_option( 'trestle_auto_nav' ) && wp_get_nav_menu_object( $trestle_nav_title ) && $trestle_nav_title != $menus['primary'] )
- wp_delete_nav_menu( $trestle_nav_title );
-}
-
-
/*===========================================
* Posts & Pages
===========================================*/
From 8a097c4be21d99371ec51979687e1229859fb88a Mon Sep 17 00:00:00 2001
From: MickeyKay
Date: Mon, 23 Mar 2015 13:32:00 -0700
Subject: [PATCH 30/31] Fix mobile nav CSS and jQuery
---
includes/js/theme-jquery.js | 14 ++++++++------
style.css | 37 +++++++++++++++----------------------
2 files changed, 23 insertions(+), 28 deletions(-)
diff --git a/includes/js/theme-jquery.js b/includes/js/theme-jquery.js
index aacf0df..f51aa81 100644
--- a/includes/js/theme-jquery.js
+++ b/includes/js/theme-jquery.js
@@ -27,7 +27,7 @@ jQuery( document ).ready( function( $ ) {
$( 'li:first-child' ).addClass( 'first' );
$( 'ul, ol' ).parent( 'li' ).addClass( 'parent' );
- // Mobile header toggle buttons
+ // Create mobile header toggle buttons
$( '.site-header .title-area' ).after( '' );
$( '.site-header .widget-area, .nav-primary' ).each( function( i ) {
@@ -58,7 +58,7 @@ jQuery( document ).ready( function( $ ) {
$target.addClass( 'toggle-target-' + i );
});
- // Toggle widget areas and primary nav
+ // A widget areas and primary nav mobile toggle functionality
$( '.site-header .toggle-button' ).click( function( event ) {
// Prevent default behavior
@@ -70,11 +70,9 @@ jQuery( document ).ready( function( $ ) {
// Get toggle button that was clicked
$button = $( this );
- //Remove focus
- $button.blur();
-
// Match the button to the right target
$target = $( '.toggle-target-' + $button.attr( 'id' ).match( /\d+/ ) );
+ console.log( 'Target: ' + $target.attr('class'));
// Toggle buttons
$button.toggleClass( 'open' );
@@ -82,7 +80,11 @@ jQuery( document ).ready( function( $ ) {
// Toggle targets
$target.toggleClass( 'open' );
- $( '[class^="toggle-target"]' ).not( $target ).removeClass( 'open' );
+ $( '[class*="toggle-target"]' ).not( $target ).removeClass( 'open' );
+
+ // Remove focus
+ $button.blur();
+
});
// Mobile navigation icons
diff --git a/style.css b/style.css
index 3aaf97d..68fd7e7 100644
--- a/style.css
+++ b/style.css
@@ -1368,15 +1368,11 @@ Site Header
.site-header .widget-area {
width: 100%;
+ padding: 20px;
background-color: #eee;
border: 1px solid #ddd;
- border-width: 0;
- overflow: hidden;
-}
-
-.site-header .widget-area.open {
- padding: 20px;
border-width: 1px 0;
+ overflow: hidden;
}
.site-header .search-form {
@@ -1414,23 +1410,21 @@ Site Header
content: "\f0c9";
}
-
.nav-primary,
-/*.site-header .nav-primary,*/
.site-header .widget-area {
position: absolute;
+ z-index: -999;
top: 100%;
left: 0;
right: 0;
- max-height: 0;
opacity: 0;
+ filter: alpha(opacity=0);
box-shadow: 0 4px 8px 1px rgba(0,0,0,0.4);
- -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
- -webkit-transition: all .5s ease, padding 0s .5s;
- -moz-transition: all .5s ease, padding 0s .5s;
- -ms-transition: all .5s ease, padding 0s .5s;
- -o-transition: all .5s ease, padding 0s .5s;
- transition: all .5s ease, padding 0s .5s;
+ -webkit-transition: opacity 0.25s ease, z-index 0s 0.25s;
+ -moz-transition: opacity 0.25s ease, z-index 0s 0.25s;
+ -ms-transition: opacity 0.25s ease, z-index 0s 0.25s;
+ -o-transition: opacity 0.25s ease, z-index 0s 0.25s;
+ transition: opacity 0.25s ease, z-index 0s 0.25s;
}
.site-container > .nav-primary {
@@ -1440,14 +1434,13 @@ Site Header
.nav-primary.open,
.widget-area.open {
z-index: 50;
- max-height: 9999px;
opacity: 1;
- -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
- -webkit-transition: opacity .5s ease, padding 0s 0s;
- -moz-transition: opacity .5s ease, padding 0s 0s;
- -ms-transition: opacity .5s ease, padding 0s 0s;
- -o-transition: opacity .5s ease, padding 0s 0s;
- transition: opacity .5s ease, padding 0s 0s;
+ filter: alpha(opacity=100);
+ -webkit-transition: z-index 0s ease, opacity 0.25s 0s;
+ -moz-transition: z-index 0s ease, opacity 0.25s 0s;
+ -ms-transition: z-index 0s ease, opacity 0.25s 0s;
+ -o-transition: z-index 0s ease, opacity 0.25s 0s;
+ transition: z-index 0s ease, opacity 0.25s 0s;
}
From ade79de867e9929001adebccd188c46f41a22dfa Mon Sep 17 00:00:00 2001
From: MickeyKay
Date: Mon, 23 Mar 2015 15:47:56 -0700
Subject: [PATCH 31/31] Update responsive header/full menu behavior.
---
includes/admin/customizer.js | 2 +-
includes/admin/customizer.php | 20 +++++++++++++
includes/functions/theme-functions.php | 39 ++++++++++++++++++++++++++
style.css | 24 ++++++++--------
4 files changed, 72 insertions(+), 13 deletions(-)
diff --git a/includes/admin/customizer.js b/includes/admin/customizer.js
index 5249096..7a44eb4 100644
--- a/includes/admin/customizer.js
+++ b/includes/admin/customizer.js
@@ -79,7 +79,7 @@
wp.customize( 'genesis-settings[trestle_read_more_text]', function( value ) {
value.bind( function( value ) {
- $( 'a.more-link' ).text( value );
+ $( 'a.more-link' ).html( value );
});
});
diff --git a/includes/admin/customizer.php b/includes/admin/customizer.php
index b8a319e..93df40a 100644
--- a/includes/admin/customizer.php
+++ b/includes/admin/customizer.php
@@ -161,6 +161,26 @@ function trestle_customizer_controls( $wp_customize ) {
)
);
+ // Primary nav extras
+ $wp_customize->add_setting(
+ 'genesis-settings[trestle_custom_nav_extras_text]',
+ array(
+ 'default' => genesis_get_option( 'trestle_custom_nav_extras_text' ),
+ 'type' => 'option',
+ 'transport' => 'postMessage',
+ 'capability' => 'edit_theme_options',
+ )
+ );
+ $wp_customize->add_control(
+ 'trestle_custom_nav_extras_text_control',
+ array(
+ 'section' => 'trestle_settings_section',
+ 'settings' => 'genesis-settings[trestle_custom_nav_extras_text]',
+ 'label' => __( 'Add search to mobile navigation', 'trestle' ),
+ 'type' => 'checkbox',
+ )
+ );
+
// Blog post custom read more link text
$wp_customize->add_setting(
'genesis-settings[trestle_read_more_text]',
diff --git a/includes/functions/theme-functions.php b/includes/functions/theme-functions.php
index 33a3789..0946233 100644
--- a/includes/functions/theme-functions.php
+++ b/includes/functions/theme-functions.php
@@ -202,6 +202,45 @@ function trestle_do_logos( $title, $inside, $wrap ) {
}
+/*===========================================
+ * Navigation
+===========================================*/
+
+add_action( 'init', 'trestle_nav_primary_location' );
+/**
+ * Move primary navigation into the header if need be.
+ *
+ * @since 1.2.0
+ */
+function trestle_nav_primary_location() {
+
+ if ( 'header' == genesis_get_option( 'trestle_nav_primary_location' ) ) {
+ remove_action( 'genesis_after_header', 'genesis_do_nav' );
+ add_action( 'genesis_header', 'genesis_do_nav', 12 );
+ }
+
+}
+
+add_filter( 'wp_nav_menu_items', 'trestle_custom_nav_extras', 10, 2 );
+/**
+ * Add custom nav extras.
+ *
+ * @since 1.0.0
+ *
+ * @param string $nav_items - list of menu items.
+ * @param stdClass $menu_args Arguments for the menu.
+ * @return string
- list of menu items with custom navigation extras
- appended.
+ */
+function trestle_custom_nav_extras( $nav_items, stdClass $menu_args ) {
+
+ if ( 'primary' == $menu_args->theme_location && genesis_get_option( 'trestle_custom_nav_extras_text' ) ) {
+ return $nav_items . '
- ' . get_search_form( false ) . '
';
+ }
+
+ return $nav_items;
+}
+
+
/*===========================================
* Posts & Pages
===========================================*/
diff --git a/style.css b/style.css
index 68fd7e7..8c5cdc8 100644
--- a/style.css
+++ b/style.css
@@ -1616,7 +1616,7 @@ Site Navigation
.genesis-nav-menu > .right .search-form {
display: inline-block;
- padding: 0;
+ padding: 8px 0;
}
.genesis-nav-menu > .right input[type="submit"] {
@@ -1675,12 +1675,6 @@ Site Navigation
padding: 0;
}
-.site-header .nav-primary a:hover,
-.site-header .nav-primary [class*="current-"] > a,
-.site-header .nav-primary [class*="current_"] > a {
- color: #333;
-}
-
.site-header .right {
padding-right: 0;
}
@@ -2474,7 +2468,7 @@ Media Queries
--------------------------------------------- */
.genesis-nav-menu > .right {
- display: inline-block;
+ display: none;
float: right;
border-top: none;
}
@@ -2484,10 +2478,6 @@ Media Queries
margin: 0 0 0 2rem;
}
- .genesis-nav-menu > .search form {
- padding-right: 0;
- }
-
.genesis-nav-menu > .right input[type="submit"] {
display: inline-block;
}
@@ -2563,6 +2553,16 @@ Media Queries
padding: 0.6em 1.2em;
}
+ .site-header .nav-primary .menu > li:last-of-type:not(.right) {
+ padding-right: 0;
+ }
+
+ .site-header .nav-primary a:hover,
+ .site-header .nav-primary [class*="current-"] > a,
+ .site-header .nav-primary [class*="current_"] > a {
+ color: #333;
+ }
+
/* Plugins
--------------------------------------------- */