'stainedglass_portfolio', 'description' => __('Display Portfolio Projects.', 'stainedglass' )); /* Widget control settings. */ $control_ops = array( 'width' => 250, 'height' => 250, 'id_base' => 'stainedglass_portfolio_widget'); /* Create the widget. */ parent::__construct( 'stainedglass_portfolio_widget', __( 'GL Portfolio Projects (GLASS)', 'stainedglass' ), $widget_ops, $control_ops ); add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_styles' ) ); add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ) ); } /** * Widget styles * * @since Stained Glass 1.0.0 * */ public function enqueue_styles() { wp_enqueue_style( 'stainedglass-image', get_template_directory_uri() . '/inc/css/image.css'); wp_enqueue_script( 'stainedglass-image-script', get_template_directory_uri() . '/inc/js/image-widget.js', array('jquery'), '20151012', true ); } /** * Widget scripts * * @since Stained Glass 1.0.0 * */ public function enqueue_scripts( $hook_suffix ) { if ( 'widgets.php' !== $hook_suffix ) { return; } wp_enqueue_media(); wp_enqueue_script( 'stainedglass-upload-image', get_template_directory_uri() . '/inc/js/meta-box-image.js', array('jquery') ); } /** * Widget output * * @since Stained Glass 1.0.0 * */ function widget( $args, $instance ) { // Widget output extract($args); $sidebar_id = ( isset($args['id']) ? $args['id'] : '' ); // Set up some default widget settings. $instance = wp_parse_args( (array) $instance, $this->defaults( $instance ) ); preg_match_all('!\d+!', $instance['columns'], $matches); $width = $this->get_width($sidebar_id, absint(implode(' ', $matches[0])), $instance['padding_right'], $instance['padding_left']); $args = array(); $tax = 'jetpack-portfolio-type'; global $post; $not_in = array(); if( is_singular() ) { $not_in []= $post->ID; } $not_in = array_merge ( $not_in, get_option( 'sticky_posts' ) ); if( '0' != $instance['project'] ) { $args = array( array( 'taxonomy' => $tax, 'terms' => array( $instance['project'] ), 'field' => 'term_id', 'operator' => 'IN', ), ); } $query = new WP_Query( array( 'order' => 'DESC', 'posts_per_page' => $instance['count'], 'no_found_rows' => true, 'post_status' => 'publish', 'post__not_in' => $not_in, 'post_type' => 'jetpack-portfolio', 'tax_query' => $args, ) ); if ( $query->have_posts() ) : $tmp_content_width = $GLOBALS['content_width']; $GLOBALS['content_width'] = $width; //print the widget for the sidebar echo $before_widget; if(trim($instance['title']) !== '') echo $before_title.esc_html($instance['title']).$after_title; $pos_class = ''; if( 0 != $instance['is_has_description'] ) { $pos_class = ( 1 == ($instance['is_right']) ? ' right' : ' left' ); } ?>

name);?>

have_posts() ) : $query->the_post(); ?>
0 ? $new_instance['count'] : 1); $possible_values = array('post-thumbnail', 'thumbnail', 'large', 'full'); $instance['image_size'] = ( in_array( $new_instance['image_size'], $possible_values ) ? $new_instance['image_size'] : 'post-thumbnail'); $instance['title'] = esc_html($new_instance['title']); $instance['project'] = absint($new_instance['project']); $possible_values = array('column-1', 'column-2', 'column-3', 'column-4'); $instance['columns'] = ( in_array( $new_instance['columns'], $possible_values ) ? $new_instance['columns'] : 'column-1'); if( isset($new_instance['is_step']) ) $instance['is_step'] = 1; if( isset($new_instance['is_hover_all'])) $instance['is_hover_all'] = 1; if( isset($new_instance['is_has_description'])) $instance['is_has_description'] = 1; if( isset($new_instance['is_right'])) $instance['is_right'] = 1; if( isset($new_instance['is_margin_0']) ) $instance['is_margin_0'] = 1; $instance['padding_right'] = 0; $instance['padding_left'] = 0; $instance['padding_top'] = ( 1 == $new_instance['is_margin_0'] ? 0 : 20); $instance['padding_bottom'] = ( 1 == $new_instance['is_margin_0'] ? 0 : 20); $instance['padding_top'] = absint($new_instance['padding_top']); $instance['padding_bottom'] = absint($new_instance['padding_bottom']); $possible_values = array('effect-1', 'effect-2', 'effect-3', 'effect-4', 'effect-5', 'effect-6', 'effect-7', 'effect-8', 'effect-9', 'effect-10', 'effect-11', 'effect-12', 'effect-14', 'effect-15', 'effect-16'); $instance['effect_id'] = ( in_array( $new_instance['effect_id'], $possible_values ) ? $new_instance['effect_id'] : 'effect-1'); if( isset($new_instance['is_animate']) ) $instance['is_animate'] = 1; if( isset($new_instance['is_animate_once']) ) $instance['is_animate_once'] = 1; return $instance; } /** * Widget form * * @since Stained Glass 1.0.0 * * @param array $instance Array of widget options. */ function form( $instance ) { // Output admin widget options form // Set up some default widget settings. $instance = wp_parse_args( (array) $instance, $this->defaults( $instance ) ); stainedglass_echo_input_text( $this, 'title', $instance, __( 'Title: ', 'stainedglass' ), 0); $tax = 'jetpack-portfolio-type'; $terms = get_terms( $tax ); if ( $terms && ! is_wp_error( $terms ) ) : esc_html_e('Project:', 'stainedglass'); ?> '', 'project' => '0', 'count' => '3', 'columns' => 'column-3', 'image_size' => 'post-thumbnail', 'is_step' => '', 'is_hover_all' => '', 'is_margin_0' => ($instance == null ? 1 : ''), 'effect_id' => 'effect-1', 'is_animate' => '', 'is_animate_once' => ($instance == null ? 1 : ''), 'link_caption' => __('More Info', 'stainedglass'), 'padding_right' => '0', 'padding_left' => '0', 'padding_top' => '0', 'padding_bottom' => '0', 'is_has_description' => 0, 'is_right' => ($instance == null ? 1 : ''), ); return $defaults; } /* widget column width * @param int $sidebar_id sidebar id. * @param int $columns number of $columns. * @param int $i1 widget left margin. * @param int $i2 widget right margin. * @return int width. * @since Stained Glass 1.0.0 */ function get_width( $sidebar_id, $columns, $i1 = 0, $i2 = 0 ) { if($columns <= 0) $columns = 1; $width = stainedglass_get_sidebar_width($sidebar_id); $width = ($width - $width*$i1/100 - $width*$i2/100)/$columns; return $width; } } /** * Register widget * * @since Stained Glass 1.0.0 */ function stainedglass_register_portfolio_widgets() { register_widget( 'stainedglass_portfolio' ); } add_action( 'widgets_init', 'stainedglass_register_portfolio_widgets' );