stuart-d
10/10/2012 - 1:52 PM

Ninja Javascript HomeWork

Ninja Javascript HomeWork

<?php
/*
1. Assuming we have "jquery.flexslider-min.js" and "jquery.flexslider-loader.js" as two JavaScript files in our theme's root directory, construct the necessary WordPress action to register and enqueue both of these scripts, ensuring that "jquery.flexslider-loader.js" is enqueued and dependent on "jquery.flexslider-min.js".
*/

add_action( 'wp_enqueue_scripts', 'woo_ninja_javascript_loader' );

function woo_ninja_javascript_loader() {

	wp_register_script( 'flexslider', get_stylesheet_directory_uri() . 'jquery.flexslider-min.js', array( 'jquery' ), '1.0.0', false);
	wp_register_script( 'flexslider-loader', get_stylesheet_directory_uri() . 'jquery.flexslider-loader.js', array( 'jquery', 'flexslider' ), '1.0.0', false);
	
	wp_enqueue_script( 'flexslider-loader' );

}

/*
2. Using the provided JavaScript code as a starting point ( http://pastie.org/pastes/4549538/text ), create a "common.js" file inside an "assets/js" folder within your theme. Enqueue this new JavaScript file only on pages using a conditional tag.

(We need only see the WordPress enqueue action itself... the JavaScript has been provided for testing purposes to test if your enqueue is working.)
*/


add_action( 'wp_enqueue_scripts', 'woo_ninja_javascript_loader' );

function woo_ninja_javascript_loader() {

	wp_register_script( 'common', get_stylesheet_directory_uri() . '/assets/js/common.js', array( 'jquery' ), '3.0.0', false);
	wp_register_script( 'flexslider', get_stylesheet_directory_uri() . 'jquery.flexslider-min.js', array( 'jquery' ), '1.0.0', false);
	wp_register_script( 'flexslider-loader', get_stylesheet_directory_uri() . 'jquery.flexslider-loader.js', array( 'jquery', 'flexslider' ), '1.0.0', false);	

	if ( is_page() ) {
	wp_enqueue_script( 'common' );
	}
	
	wp_enqueue_script( 'flexslider-loader' );	
	
}

/*
3. Following on from the "common.js" file in question 2, send a localized string through to "common.js" and use that text in place of the existing "Back to Top" code.

(We need only see the adjusted JavaScript itself... question 2 determines whether or not the WordPress enqueue is working.)
*/

add_action( 'wp_enqueue_scripts', 'woo_ninja_javascript_loader' );

function woo_ninja_javascript_loader() {

	wp_register_script( 'common', get_stylesheet_directory_uri() . '/assets/js/common.js', array( 'jquery' ), '3.0.0', false);
	wp_register_script( 'flexslider', get_stylesheet_directory_uri() . 'jquery.flexslider-min.js', array( 'jquery' ), '1.0.0', false);
	wp_register_script( 'flexslider-loader', get_stylesheet_directory_uri() . 'jquery.flexslider-loader.js', array( 'jquery', 'flexslider' ), '1.0.0', false);	
	
	if ( is_page() ) {
	wp_enqueue_script( 'common');
	}
	
	$data = array( 'backtotop' => __( 'Back To Start', 'woothemes') );
	wp_localize_script( 'common', 'wooLi8n', $data );	
	
	wp_enqueue_script( 'flexslider-loader' );	
	
}

/*----------------------- [ Back To Top Javascript ] ----------------------*/

jQuery( document ).ready( function ( e ) {
	jQuery( '<a href="#wrapper" class="back-to-top button">&uarr; 'var(wooL18n.backtotop);'</a>' ).appendTo( 'body' );
});

jQuery( window ).scroll( function ( e ) {
	if ( 0 >= jQuery( window ).scrollTop() ) {
		jQuery( 'a.back-to-top' ).fadeOut( 'slow' );
	} else {
		jQuery( 'a.back-to-top' ).fadeIn( 'slow' );
	}
});

?>