Your IP : 216.73.217.143


Current Path : /home/ereika83/www/wp-content/plugins/genesis-tabs/includes/
Upload File :
Current File : /home/ereika83/www/wp-content/plugins/genesis-tabs/includes/class-genesis-tabs-widget.php

<?php
/**
 * Genesis Tabs Widget file.
 *
 * @package genesis-tabs
 */

/**
 * Widget Class. Handles the widget form and output.
 *
 * @package genesis-tabs
 * @since 0.9.0
 */
class Genesis_Tabs_Widget extends WP_Widget {

	/**
	 * Constructor
	 */
	public function __construct() {
		$widget_ops  = array(
			'classname'   => 'ui-tabs',
			'description' => __( 'Displays featured posts in Tabs', 'genesis-tabs' ),
		);
		$control_ops = array(
			'width'   => 505,
			'height'  => 350,
			'id_base' => 'tabs',
		);
		parent::__construct( 'tabs', __( 'Featured Tabs', 'genesis-tabs' ), $widget_ops, $control_ops );
	}

	/**
	 * Load textdomain.
	 */
	public function load_textdomain() {
		load_plugin_textdomain( 'genesis-tabs', false, SIMPLE_URLS_DIR . '/languages' );
	}

	/**
	 * Widget Output
	 *
	 * @param array $args Args.
	 * @param array $instance Instance.
	 */
	public function widget( $args, $instance ) {

		// Defaults for a new widget.
		$instance = wp_parse_args(
			(array) $instance,
			array(
				'title'           => '',
				'posts_cat_1'     => '',
				'posts_cat_2'     => '',
				'posts_cat_3'     => '',
				'posts_cat_4'     => '',
				'posts_cat_5'     => '',
				'posts_cat_6'     => '',
				'posts_cat_7'     => '',
				'posts_cat_8'     => '',
				'posts_cat_9'     => '',
				'posts_cat_10'    => '',
				'show_image'      => 0,
				'image_alignment' => '',
				'image_size'      => '',
				'show_title'      => 0,
				'show_byline'     => 0,
				'post_info'       => '[post_date] ' . __( 'By', 'genesis-tabs' ) . ' [post_author_posts_link] [post_comments]',
				'show_content'    => 'excerpt',
				'content_limit'   => '',
				'more_text'       => __( '[Read More...]', 'genesis-tabs' ),
			)
		);

		echo wp_kses_post( $args['before_widget'] );

		// Output Widget Title.
		if ( ! empty( $instance['title'] ) ) {
			echo wp_kses_post( $args['before_title'] . apply_filters( 'widget_title', $instance['title'], $instance, $this->id_base ) . $args['after_title'] );
		}

		// Pull the chosen categories into an array.
		$cats = array( $instance['posts_cat_1'], $instance['posts_cat_2'], $instance['posts_cat_3'], $instance['posts_cat_4'], $instance['posts_cat_5'], $instance['posts_cat_6'], $instance['posts_cat_7'], $instance['posts_cat_8'] );

		// Display the tab links.
		echo '<ul class="ui-tabs-nav">';
		foreach ( (array) $cats as $cat ) {
			if ( $cat ) {
				echo '<li><a href="#cat-' . esc_attr( $cat ) . '">' . esc_html( get_cat_name( $cat ) ) . '</a></li>';
			}
		}
			echo '</ul>';

		// Loop through all chosen categories.
		foreach ( (array) $cats as $cat ) {

			if ( ! $cat ) {
				continue; // Skip iteration if $cat is empty.
			}

			// Custom loop.
			$tabbed_posts = new WP_Query(
				array(
					'cat'       => $cat,
					'showposts' => 1,
					'orderby'   => 'date',
					'order'     => 'DESC',
				)
			);
			if ( $tabbed_posts->have_posts() ) {
				while ( $tabbed_posts->have_posts() ) {
					$tabbed_posts->the_post();

					echo '<div id="cat-' . esc_attr( $cat ) . '" ';
					post_class( 'ui-tabs-hide' );
					echo '>';

					if ( ! empty( $instance['show_image'] ) ) {
						printf(
							'<a href="%s" title="%s" class="%s">%s</a>',
							esc_attr( get_permalink() ),
							the_title_attribute( 'echo=0' ),
							esc_attr( $instance['image_alignment'] ),
							wp_kses_post(
								genesis_get_image(
									array(
										'format' => 'html',
										'size'   => $instance['image_size'],
									)
								)
							)
						);
					}

					if ( ! empty( $instance['show_title'] ) ) {
						printf( '<h2><a href="%s" title="%s">%s</a></h2>', esc_attr( get_permalink() ), the_title_attribute( 'echo=0' ), esc_html( get_the_title() ) );
					}

					if ( ! empty( $instance['show_byline'] ) && ! empty( $instance['post_info'] ) ) {
						printf( '<p class="byline post-info">%s</p>', do_shortcode( esc_html( $instance['post_info'] ) ) );
					}

					if ( ! empty( $instance['show_content'] ) ) {

						if ( 'excerpt' === $instance['show_content'] ) {
							the_excerpt();
						} elseif ( 'content-limit' === $instance['show_content'] ) {
								the_content_limit( (int) $instance['content_limit'], esc_html( $instance['more_text'] ) );
						} else {
								the_content( esc_html( $instance['more_text'] ) );
						}
					}

					echo '</div><!--end post_class()-->' . "\n\n";
				}
			}
		}

		echo wp_kses_post( $args['after_widget'] );
		wp_reset_postdata();
	}

	/**
	 * Update data.
	 *
	 * @param array $new_instance New instance.
	 * @param array $old_instance Old instance.
	 */
	public function update( $new_instance, $old_instance ) {
		return $new_instance;
	}

	/**
	 * Form output
	 *
	 * @param array $instance Instance.
	 */
	public function form( $instance ) {

		// Ensure value exists.
		$instance = wp_parse_args(
			(array) $instance,
			array(
				'title'           => '',
				'posts_cat_1'     => '',
				'posts_cat_2'     => '',
				'posts_cat_3'     => '',
				'posts_cat_4'     => '',
				'posts_cat_5'     => '',
				'posts_cat_6'     => '',
				'posts_cat_7'     => '',
				'posts_cat_8'     => '',
				'posts_cat_9'     => '',
				'posts_cat_10'    => '',
				'show_image'      => 0,
				'image_alignment' => '',
				'image_size'      => '',
				'show_title'      => 0,
				'show_byline'     => 0,
				'post_info'       => '[post_date] ' . __( 'By', 'genesis-tabs' ) . ' [post_author_posts_link] [post_comments]',
				'show_content'    => 'excerpt',
				'content_limit'   => '',
				'more_text'       => __( '[Read More...]', 'genesis-tabs' ),
			)
		);
		?>

	<p><label for="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>"><?php esc_html_e( 'Title', 'genesis-tabs' ); ?>:</label>
	<input type="text" id="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'title' ) ); ?>" value="<?php echo esc_attr( $instance['title'] ); ?>" style="width:95%;" /></p>

	<div class="genesis-widget-column">

		<div class="genesis-widget-column-box genesis-widget-column-box-top">

		<p><span class="description">Choose up to 8 categories to pull posts from. Each category you choose will represent a single tab.</span></p>

		<p>
		<?php
		wp_dropdown_categories(
			array(
				'name'            => $this->get_field_name( 'posts_cat_1' ),
				'selected'        => $instance['posts_cat_1'],
				'orderby'         => 'Name',
				'hierarchical'    => 1,
				'show_option_all' => __( '- None Selected -', 'genesis-tabs' ),
				'hide_empty'      => '0',
			)
		);
		?>
		</p>

		<p>
		<?php
		wp_dropdown_categories(
			array(
				'name'            => $this->get_field_name( 'posts_cat_2' ),
				'selected'        => $instance['posts_cat_2'],
				'orderby'         => 'Name',
				'hierarchical'    => 1,
				'show_option_all' => __( '- None Selected -', 'genesis-tabs' ),
				'hide_empty'      => '0',
			)
		);
		?>
		</p>

		<p>
		<?php
		wp_dropdown_categories(
			array(
				'name'            => $this->get_field_name( 'posts_cat_3' ),
				'selected'        => $instance['posts_cat_3'],
				'orderby'         => 'Name',
				'hierarchical'    => 1,
				'show_option_all' => __( '- None Selected -', 'genesis-tabs' ),
				'hide_empty'      => '0',
			)
		);
		?>
		</p>

		<p>
		<?php
		wp_dropdown_categories(
			array(
				'name'            => $this->get_field_name( 'posts_cat_4' ),
				'selected'        => $instance['posts_cat_4'],
				'orderby'         => 'Name',
				'hierarchical'    => 1,
				'show_option_all' => __( '- None Selected -', 'genesis-tabs' ),
				'hide_empty'      => '0',
			)
		);
		?>
		</p>

		<p>
		<?php
		wp_dropdown_categories(
			array(
				'name'            => $this->get_field_name( 'posts_cat_5' ),
				'selected'        => $instance['posts_cat_5'],
				'orderby'         => 'Name',
				'hierarchical'    => 1,
				'show_option_all' => __( '- None Selected -', 'genesis-tabs' ),
				'hide_empty'      => '0',
			)
		);
		?>
		</p>

		<p>
		<?php
		wp_dropdown_categories(
			array(
				'name'            => $this->get_field_name( 'posts_cat_6' ),
				'selected'        => $instance['posts_cat_6'],
				'orderby'         => 'Name',
				'hierarchical'    => 1,
				'show_option_all' => __( '- None Selected -', 'genesis-tabs' ),
				'hide_empty'      => '0',
			)
		);
		?>
		</p>

		<p>
		<?php
		wp_dropdown_categories(
			array(
				'name'            => $this->get_field_name( 'posts_cat_7' ),
				'selected'        => $instance['posts_cat_7'],
				'orderby'         => 'Name',
				'hierarchical'    => 1,
				'show_option_all' => __( '- None Selected -', 'genesis-tabs' ),
				'hide_empty'      => '0',
			)
		);
		?>
		</p>

		<p>
		<?php
		wp_dropdown_categories(
			array(
				'name'            => $this->get_field_name( 'posts_cat_8' ),
				'selected'        => $instance['posts_cat_8'],
				'orderby'         => 'Name',
				'hierarchical'    => 1,
				'show_option_all' => __( '- None Selected -', 'genesis-tabs' ),
				'hide_empty'      => '0',
			)
		);
		?>
			</p>

		<p>
		<?php
		wp_dropdown_categories(
			array(
				'name'            => $this->get_field_name( 'posts_cat_9' ),
				'selected'        => $instance['posts_cat_9'],
				'orderby'         => 'Name',
				'hierarchical'    => 1,
				'show_option_all' => __( '- None Selected -', 'genesis-tabs' ),
				'hide_empty'      => '0',
			)
		);
		?>
			</p>

		<p>
		<?php
		wp_dropdown_categories(
			array(
				'name'            => $this->get_field_name( 'posts_cat_10' ),
				'selected'        => $instance['posts_cat_10'],
				'orderby'         => 'Name',
				'hierarchical'    => 1,
				'show_option_all' => __( '- None Selected -', 'genesis-tabs' ),
				'hide_empty'      => '0',
			)
		);
		?>
			</p>

		</div>

	</div>

	<div class="genesis-widget-column genesis-widget-column-right">

		<div class="genesis-widget-column-box genesis-widget-column-box-top">

		<p><input id="<?php echo esc_attr( $this->get_field_id( 'show_image' ) ); ?>" type="checkbox" name="<?php echo esc_attr( $this->get_field_name( 'show_image' ) ); ?>" value="1" <?php checked( 1, $instance['show_image'] ); ?>/> <label for="<?php echo esc_attr( $this->get_field_id( 'show_image' ) ); ?>"><?php esc_html_e( 'Show Featured Image', 'genesis-tabs' ); ?></label></p>

		<p><label for="<?php echo esc_attr( $this->get_field_id( 'image_size' ) ); ?>"><?php esc_html_e( 'Image Size', 'genesis-tabs' ); ?>:</label>
		<?php $sizes = wp_get_additional_image_sizes(); ?>
		<select id="<?php echo esc_attr( $this->get_field_id( 'image_size' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'image_size' ) ); ?>">
			<option value="thumbnail">thumbnail (<?php echo esc_html( get_option( 'thumbnail_size_w' ) ); ?>x<?php echo esc_html( get_option( 'thumbnail_size_h' ) ); ?>)</option>
			<?php
			foreach ( (array) $sizes as $name => $size ) {
				echo '<option value="' . esc_attr( $name ) . '" ' . selected( $name, $instance['image_size'], false ) . '>' . esc_html( $name ) . ' (' . esc_html( $size['width'] ) . 'x' . esc_html( $size['height'] ) . ')</option>';
			}
			?>
		</select></p>

		<p><label for="<?php echo esc_attr( $this->get_field_id( 'image_alignment' ) ); ?>"><?php esc_html_e( 'Image Alignment', 'genesis-tabs' ); ?>:</label>
		<select id="<?php echo esc_attr( $this->get_field_id( 'image_alignment' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'image_alignment' ) ); ?>">
			<option value="">- <?php esc_html_e( 'None', 'genesis-tabs' ); ?> -</option>
			<option value="alignleft" <?php selected( 'alignleft', $instance['image_alignment'] ); ?>><?php esc_html_e( 'Left', 'genesis-tabs' ); ?></option>
			<option value="alignright" <?php selected( 'alignright', $instance['image_alignment'] ); ?>><?php esc_html_e( 'Right', 'genesis-tabs' ); ?></option>
		</select></p>

		</div>

		<div class="genesis-widget-column-box">

		<p><input id="<?php echo esc_attr( $this->get_field_id( 'show_title' ) ); ?>" type="checkbox" name="<?php echo esc_attr( $this->get_field_name( 'show_title' ) ); ?>" value="1" <?php checked( 1, $instance['show_title'] ); ?>/> <label for="<?php echo esc_attr( $this->get_field_id( 'show_title' ) ); ?>"><?php esc_html_e( 'Show Post Title', 'genesis-tabs' ); ?></label></p>

		<p><input id="<?php echo esc_attr( $this->get_field_id( 'show_byline' ) ); ?>" type="checkbox" name="<?php echo esc_attr( $this->get_field_name( 'show_byline' ) ); ?>" value="1" <?php checked( 1, $instance['show_byline'] ); ?>/> <label for="<?php echo esc_attr( $this->get_field_id( 'show_byline' ) ); ?>"><?php esc_html_e( 'Show Post Info', 'genesis-tabs' ); ?></label>

		<input type="text" id="<?php echo esc_attr( $this->get_field_id( 'post_info' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'post_info' ) ); ?>" value="<?php echo esc_attr( $instance['post_info'] ); ?>" class="widefat" />

		</p>

		<p><label for="<?php echo esc_attr( $this->get_field_id( 'show_content' ) ); ?>"><?php esc_html_e( 'Content Type', 'genesis-tabs' ); ?>:</label>
		<select id="<?php echo esc_attr( $this->get_field_id( 'show_content' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'show_content' ) ); ?>">
			<option value="content" <?php selected( 'content', $instance['show_content'] ); ?>><?php esc_html_e( 'Show Content', 'genesis-tabs' ); ?></option>
			<option value="excerpt" <?php selected( 'excerpt', $instance['show_content'] ); ?>><?php esc_html_e( 'Show Excerpt', 'genesis-tabs' ); ?></option>
			<option value="content-limit" <?php selected( 'content-limit', $instance['show_content'] ); ?>><?php esc_html_e( 'Show Content Limit', 'genesis-tabs' ); ?></option>
			<option value="" <?php selected( '', $instance['show_content'] ); ?>><?php esc_html_e( 'No Content', 'genesis-tabs' ); ?></option>
		</select>

		<br /><label for="<?php echo esc_attr( $this->get_field_id( 'content_limit' ) ); ?>"><?php esc_html_e( 'Limit content to', 'genesis-tabs' ); ?></label> <input type="text" id="<?php echo esc_attr( $this->get_field_id( 'image_alignment' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'content_limit' ) ); ?>" value="<?php echo esc_attr( intval( $instance['content_limit'] ) ); ?>" size="3" /> <?php esc_html_e( 'characters', 'genesis-tabs' ); ?></p>

		<p><label for="<?php echo esc_attr( $this->get_field_id( 'more_text' ) ); ?>"><?php esc_html_e( 'More Text (if applicable)', 'genesis-tabs' ); ?>:</label>
		<input type="text" id="<?php echo esc_attr( $this->get_field_id( 'more_text' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'more_text' ) ); ?>" value="<?php echo esc_attr( $instance['more_text'] ); ?>" /></p>

		</div>

	</div>

		<?php
	}
}