diff --git a/functions.php b/functions.php index f544cd7..518c66e 100644 --- a/functions.php +++ b/functions.php @@ -22,7 +22,7 @@ function trestle_theme_setup() { define( 'CHILD_THEME_VERSION', '1.0' ); // Load theme text domain - load_theme_textdomain( 'trestle', get_template_directory() . '/languages'); + load_theme_textdomain( 'trestle', get_stylesheet_directory() . '/languages'); // Add HTML5 markup structure add_theme_support( 'html5' ); @@ -58,13 +58,6 @@ function trestle_theme_setup() { add_action( 'wp_enqueue_scripts', 'trestle_header_actions'); - /*=========================================== - * Admin styles and scripts - ===========================================*/ - - add_action( 'init', 'trestle_admin_actions' ); - - /*=========================================== * Load Required/Suggested Plugins * @@ -82,13 +75,16 @@ function trestle_theme_setup() { // Implement auto-nav and mobile nav button add_action( 'init', 'trestle_nav_modifications' ); + // Create / remove placeholder menu for Trestle auto nav + add_action( 'init', 'trestle_nav_placeholder' ); + /*=========================================== * Actions & Filters ===========================================*/ - // Add jquery class to body for styling nav if jQuery isn't enabled (jQuery will remove this class if enabled) - add_filter('body_class','no_jquery'); + // Add body classes + add_filter( 'body_class', 'trestle_body_classes' ); /*=========================================== @@ -98,4 +94,20 @@ function trestle_theme_setup() { // Add Trestle custom footer attribute to Mm add_filter( 'genesis_footer_output', 'trestle_custom_footer' ); + /*=========================================== + * Admin Functionality + ===========================================*/ + + // Trestle admin scripts and styles + add_action( 'admin_enqueue_scripts', 'trestle_admin_actions' ); + + // Trestle default settings + add_filter( 'genesis_theme_settings_defaults', 'trestle_custom_defaults' ); + + // Sanitize settings + add_action( 'genesis_settings_sanitizer_init', 'trestle_register_social_sanitization_filters' ); + + // Register Trestle settings metabox + add_action( 'genesis_theme_settings_metaboxes', 'trestle_register_settings_box' ); + } \ No newline at end of file diff --git a/lib/admin/admin.php b/lib/admin/admin.php index d03ffdd..5c97efe 100644 --- a/lib/admin/admin.php +++ b/lib/admin/admin.php @@ -5,20 +5,40 @@ * Modified from: http://www.billerickson.net/genesis-theme-options/ ===========================================*/ + +/*=========================================== + * Admin styles and scripts +===========================================*/ + +// Add admin scripts and styles +function trestle_admin_actions() { + + // Add admin jQuery + wp_enqueue_script( 'trestle-admin-jquery', get_stylesheet_directory_uri() . '/lib/admin/admin.js', array( 'jquery' ), '1.0', true ); + + // Add admin jQuery + wp_enqueue_style( 'trestle-admin', get_stylesheet_directory_uri() . '/lib/admin/admin.css' ); + + // Add admin CSS (doesn't exist at present) + add_editor_style( get_stylesheet_directory_uri() . '/lib/admin/editor.css' ); + +} + /** - * Register Defaults - * - * @param array $defaults - * @return array $defaults updated defaults + * Do Trestle default settings + * + * @param array $defaults default Genesis settings + * @return array modified Genesis defaults array */ - function trestle_custom_defaults( $defaults ) { // Trestle default key/value pairs $trestle_defaults = array( - 'trestle_auto_nav' => '0', - 'trestle_include_home_link' => '0', + 'trestle_layout' => 'solid', + 'trestle_auto_nav' => 0, + 'trestle_include_home_link' => 0, 'trestle_nav_button_text' => __( '[icon name="icon-list-ul"] Navigation', 'trestle' ), + 'trestle_link_icons' => 0, ); // Populate Trestle settings with default values if they don't yet exist @@ -34,21 +54,15 @@ function trestle_custom_defaults( $defaults ) { } update_option( GENESIS_SETTINGS_FIELD, $options ); - - // // Return modified default array return $defaults; } -add_filter( 'genesis_theme_settings_defaults', 'trestle_custom_defaults' ); -// Also perform - /** - * Sanitization + * Add sanitization functionality to Trestle options */ - function trestle_register_social_sanitization_filters() { // No HTML @@ -56,8 +70,8 @@ function trestle_register_social_sanitization_filters() { 'no_html', GENESIS_SETTINGS_FIELD, array( - 'auto_nav', - 'include_home_link', + 'trestle_auto_nav', + 'trestle_include_home_link', ) ); @@ -66,39 +80,40 @@ function trestle_register_social_sanitization_filters() { 'safe_html', GENESIS_SETTINGS_FIELD, array( - 'nav_button_text', + 'trestle_nav_button_text', ) ); } -add_action( 'genesis_settings_sanitizer_init', 'trestle_register_social_sanitization_filters' ); /** - * Register Metabox - * - * @param string $_genesis_theme_settings_pagehook + * Register Trestle metabox */ - function trestle_register_settings_box( $_genesis_theme_settings_pagehook ) { global $_genesis_admin_settings; - // Remove default Genesis nav metabox - remove_meta_box('genesis-theme-settings-nav', $_genesis_admin_settings->pagehook, 'main'); - - // Call our own custom nav metabox which combines our own settings with Genesis' - add_meta_box('mm-navigation-settings', __( 'Navigation', 'trestle' ), 'trestle_navigation_settings_box', $_genesis_theme_settings_pagehook, 'main', 'high'); + // Create Trestle settings metabox + add_meta_box( 'trestle-settings', __( 'Trestle Settings', 'trestle' ), 'trestle_settings_box', $_genesis_theme_settings_pagehook, 'main', 'high' ); } -add_action('genesis_theme_settings_metaboxes', 'trestle_register_settings_box'); /** - * Create Navigation Metabox + * Output Trestle metabox */ - -function trestle_navigation_settings_box() { +function trestle_settings_box() { + + $img_path = get_stylesheet_directory_uri() . '/images/admin/'; + ?> +

+

+ /> + /> + /> + /> +

/>
@@ -108,30 +123,10 @@ function trestle_navigation_settings_box() {

+

+

+ />
+ +

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( 'auto_nav' ) && wp_get_nav_menu_object( $trestle_nav_title ) && $trestle_nav_title != $menus['primary'] ) - wp_delete_nav_menu( $trestle_nav_title ); - - // Output default Genesis nav options - $genesis_settings_object = new Genesis_Admin_Settings; - $genesis_settings_object->nav_box(); - } \ No newline at end of file diff --git a/lib/functions/trestle-functions.php b/lib/functions/trestle-functions.php index 249de78..6a2358a 100644 --- a/lib/functions/trestle-functions.php +++ b/lib/functions/trestle-functions.php @@ -15,21 +15,11 @@ function trestle_header_actions() { wp_enqueue_style( 'google-fonts', '//fonts.googleapis.com/css?family=Lato:300,700,900' ); // Custom jQuery - wp_enqueue_script( 'trestle_jquery', get_stylesheet_directory_uri() . '/lib/js/trestle-jquery.js', array( 'jquery' ), '1.0', true ); + wp_enqueue_script( 'trestle-jquery', get_stylesheet_directory_uri() . '/lib/js/jquery.js', array( 'jquery' ), '1.0', true ); } -/*=========================================== - * Admin styles and scripts -===========================================*/ - -// Add admin stylesheet (doesn't yet exist) -function trestle_admin_actions() { - add_editor_style( get_stylesheet_directory_uri() . '/lib/admin/admin.css' ); -} - - /*=========================================== * Load Required/Suggested Plugins * @@ -271,15 +261,54 @@ function trestle_add_mobile_nav() { } +// Generate / remove Trestle Auto Nav placeholder menu as needed (necessary to enable Nav Extras) +function trestle_nav_placeholder() { + + $trestle_nav_title = __( 'Trestle Auto Nav Placeholder', 'trestle' ); + + // 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 ) && !has_nav_menu( 'primary' ) ) { + + // Create placholder menu + wp_create_nav_menu( $trestle_nav_title ); + + // Assign placeholder menu to '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 ); + +} + /*=========================================== * Actions & Filters ===========================================*/ -// Add jquery class to body for styling nav if jQuery isn't enabled (jQuery will remove this class if enabled) -function no_jquery( $classes ) { +// Add body classes +function trestle_body_classes( $classes ) { + + // Add 'no-jquery' class to be removed by jQuery if enabled $classes[] = 'no-jquery'; + + // Add 'bubble' class + if ( 'bubble' == genesis_get_option( 'trestle_layout' ) ) + $classes[] = 'bubble'; + + // Add 'link-icons' class + if ( genesis_get_option('trestle_link_icons') ) + $classes[] = 'link-icons'; + + return $classes; + } diff --git a/lib/js/trestle-jquery.js b/lib/js/trestle-jquery.js deleted file mode 100644 index a3d58cd..0000000 --- a/lib/js/trestle-jquery.js +++ /dev/null @@ -1,54 +0,0 @@ -// Executes when the document is ready -jQuery(document).ready(function() { - - // Remove .no-jquery body class - jQuery('body').removeClass('no-jquery'); - - // Get our URL - var h = window.location.host.toLowerCase(); - - // External Links - jQuery('[href^="http://"],[href^="https://"]').not('[href*="' + h + '"], .button, .menu-primary a').addClass('externalLink').attr("target", "_blank"); - - // Add classes to different types of media links - jQuery('a[href^="mailto:"]:not(.button)').addClass('emailLink'); - jQuery('a[href*=".pdf"]:not(.button)').attr({"target":"_blank"}).addClass('pdfLink'); - jQuery('a[href*=".doc"]:not(.button)').attr({"target":"_blank"}).addClass('docLink'); - jQuery('img').parent('a:not(.button)').addClass('imageLink').removeClass('externalLink'); - - // Add classes to parts of lists - jQuery('li:last-child').addClass('last'); - jQuery('li:first-child').addClass('first'); - jQuery('ul, ol').parent('li').addClass('parent'); - - // Mobile navigation button - jQuery('#menu-button').click(function() { - var button = jQuery(this); - button.toggleClass('open'); - jQuery('.menu-primary').slideToggle(); - }); - - // Mobile navigation icons - var closedIcon = '+'; - var openIcon = '-'; - - jQuery('.genesis-nav-menu .parent:not(.current-menu-item, .current_page_item, .current_page_parent, .current_page_ancestor) > a').after('' + closedIcon + ''); - jQuery('.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 - jQuery('.sub-icon').click(function() { - var icon = jQuery(this); - icon.next('ul').slideToggle(); - if ( icon.text().indexOf( closedIcon ) !== -1 ) - icon.text(openIcon); - else if ( icon.text().indexOf( openIcon ) !== -1 ) - icon.text(closedIcon); - }); - -}); /* end of as page load scripts */ - - -// Executes when complete page is fully loaded, including all frames, objects, and images -jQuery(window).load(function() { - -}); \ No newline at end of file diff --git a/style.css b/style.css index 8956d86..8eaeef4 100644 --- a/style.css +++ b/style.css @@ -155,6 +155,15 @@ textarea:focus, -moz-appearance: none; } + +input[type=checkbox] { + -webkit-appearance: checkbox; +} + +input[type=radio] { + -webkit-appearance: radio; +} + ::-moz-selection { background-color: #333; color: #fff; @@ -175,25 +184,27 @@ a img { margin-bottom: -0.4rem; } -a.emailLink:before { +/* Link Icons */ + +.link-icons a.emailLink:before { content: url(/wp-content/themes/trestle/images/email.png); margin: 0 4px 0 0; white-space: nowrap; } -a.pdfLink:before { +.link-icons a.pdfLink:before { content: url(/wp-content/themes/trestle/images/pdf.png); margin: 0 4px 0 0; white-space: nowrap; } -a.docLink:before { +.link-icons a.docLink:before { content: url(/wp-content/themes/trestle/images/doc.png); margin: 0 4px 0 0; white-space: nowrap; } -a.externalLink:after { +.link-icons a.externalLink:after { content: url(/wp-content/themes/trestle/images/external.png); margin: 0 0 0 4px; white-space: nowrap; @@ -1137,7 +1148,6 @@ Site Navigation position: absolute; z-index: 99; top: 0; - bottom: 0; right: 0; width: 50px; padding-left: 0; @@ -1580,10 +1590,6 @@ Media Queries } @media (min-width: 768px) { - - body { - background-color: #f5f5f5; - } .title-area { text-align: left; @@ -1644,28 +1650,29 @@ Media Queries width: 17.25%; } - /* Padding - remove padding in rules below for solid background */ - .entry, - .sidebar .widget, - .author-box, - .comment-respond, - .entry-comments, - .entry-pings { + /* Bubble Layout - padding and margins + --------------------------------------------- */ + + body.bubble { + background-color: #f5f5f5; + } + + .bubble .entry, + .bubble .sidebar .widget, + .bubble .author-box, + .bubble .comment-respond, + .bubble .entry-comments, + .bubble .entry-pings { padding: 30px 40px; padding: 3rem 4rem; } - .footer-widgets-1 { - margin-right: 40px; - margin-right: 4rem; - } - - .archive-description { + .bubble .archive-description { padding: 40px 40px 24px; padding: 4rem 4rem 2.4rem; } - .entry-footer .entry-meta { + .bubble .entry-footer .entry-meta { border-top: 2px solid #f5f5f5; margin: 0 -40px; margin: 0 -4rem; @@ -1682,6 +1689,11 @@ Media Queries width: 30%; } + .footer-widgets-1, + .footer-widgets-2 { + margin-right: 5%; + } + .five-sixths, .four-sixths, .one-fourth,