/** * @class FLPostSliderModule */ class FLPostSliderModule extends FLBuilderModule { /** * @property $query */ public $query = null; /** * @method __construct */ public function __construct() { parent::__construct(array( 'name' => __('Posts Slider', 'fl-builder'), 'description' => __('Display a slider of your WordPress posts.', 'fl-builder'), 'category' => __('Advanced Modules', 'fl-builder'), 'editor_export' => false, 'partial_refresh' => true )); $this->add_css('jquery-bxslider'); $this->add_js('jquery-bxslider'); } /** * Remove pagination parameters * * @param array $query_args Generated query args to override * @return array Updated query args */ public function remove_pagination_args($query_args){ $query_args['paged'] = 0; $query_args['offset'] = isset($this->settings->offset) ? $this->settings->offset : 0; return $query_args; } /** * Full attachment image url. * * Gets a post ID and returns the url for the 'full' size of the attachment * set as featured image. * * @param int $id The post ID. * @since 1.5.9 * @return string The featured image url for the 'full' size. */ public function get_full_img_src( $id ){ $thumb_id = get_post_thumbnail_id( $id ); $size = isset( $this->settings->thumb_size ) ? $this->settings->thumb_size : 'medium'; $img = wp_get_attachment_image_src( $thumb_id, $size ); return $img[0]; } /** * Get the featured image data. * * Gets a post ID and returns an array containing the featured image data. * * @param int $id The post ID. * @since 1.5.9 * @return array The image data. */ protected function _get_img_data( $id ){ $thumb_id = get_post_thumbnail_id( $id ); return FLBuilderPhoto::get_attachment_data( $thumb_id ); } /** * Build post slider array. * * Get all the query parameters and build an array with posts ID's as keys * and the featured image's url (in 'full size') as values. * * @since 1.5.9 * @return array the array with all the posts ID's and featured image url's. * */ public function _build_posts_array(){ // checks if the post_slides array is cached if( !isset( $this->post_slides ) ){ // if not, create it $this->post_slides = array(); // check if we have selected posts if( empty( $this->settings->posts_post ) ){ // get the current query object $query = $this->get_query(); foreach( $query->posts as $key => $post ){ $this->post_slides[ $post->ID ] = $this->get_full_img_src( $post->ID ); } } else{ // if yes, get the selected posts and build the post_slides array $slides = explode( ',', $this->settings->posts_post ); foreach( $slides as $key => $id ){ $this->post_slides[$id] = $this->get_full_img_src( $id ); } } } return $this->post_slides; } /** * The uncropped url. * * Get's a post ID and returns the uncropped url for its featured image. * * @param int $id The post ID. * @since 1.5.9 * @return string The featured image url for the 'full' size. */ public function _get_uncropped_url( $id ){ $posts = $this->_build_posts_array(); return $posts[$id]; } /** * Render post slider query based from the settings * @since 1.9.3 * @return object The query results */ public function get_query(){ // if not, create a default query with it $settings = !empty( $this->settings ) ? $this->settings : new stdClass(); if ( ! $this->query ) { // Get the new query data. $this->query = FLBuilderLoop::query( $settings ); } return $this->query; } /** * Render thumbnail image. * * Get's the post ID and renders the html markup for the featured image * in the desired cropped size. * * @param int $id The post ID. * @since 1.5.9 * @return void */ public function render_img( $id ) { // check if image_type is set if( isset( $this->settings->image_type ) ){ // check if the choosed image type for featured image is "thumb" or "background" if( $this->settings->image_type == 'thumb' ){ // get image source and data $src = $this->_get_uncropped_url( $id ); $photo_data = $this->_get_img_data( $id ); // get alignment option, otherwise set the default to "left" $align = isset( $this->settings->thumb_text_position ) ? $this->settings->thumb_text_position : 'left'; // set params $photo_settings = array( 'align' => $align, 'crop' => $this->settings->thumb_crop, 'link_type' => 'url', 'link_url' => get_the_permalink( $id ), 'photo' => $photo_data, 'photo_src' => $src, 'photo_source' => 'library' ); // render image echo '
'; FLBuilder::render_module_html( 'photo', $photo_settings ); echo '
'; } elseif( $this->settings->image_type == 'background' ){ // if background is selected as image size, render background markup echo '
'; echo '
'; } } } /** * Render thumbnail image for mobile. * * Get's the post ID and renders the html markup for the featured image * in the desired cropped size. * * @param int $id The post ID. * @since 1.5.9 * @return void */ public function render_mobile_img( $id ) { // check if image_type is set if( isset( $this->settings->image_type ) ){ // check if "background" is choosed as image type for featured image if( $this->settings->image_type == 'background' ){ // get image source and data $src = $this->_get_uncropped_url( $id ); $photo_data = $this->_get_img_data( $id ); // set params $photo_settings = array( 'align' => 'center', 'link_type' => 'url', 'link_url' => get_the_permalink( $id ), 'photo' => $photo_data, 'photo_src' => $src, 'photo_source' => 'library' ); // render image echo '
'; FLBuilder::render_module_html( 'photo', $photo_settings ); echo '
'; } } } /** * Render slider title. * * Get's the post ID and renders the html markup for the slider title * * @param int $id The post ID. * @since 1.5.9 * @return void */ public function render_post_title( $id ) { // get choosed tag, otherwise set default to h2 $tag = !empty( $this->settings->title_tag ) ? $this->settings->title_tag : 'h2'; // build markup $title = '<' . $tag . ' class="fl-post-slider-title" itemprop="headline">'; $title .= ''. get_the_title( $id ) .''; $title .= ''; echo $title; } /** * Get slider css class. * * Get's the post ID, checks if the post has a thumbnail and the image_type * setting, and then returns the specific slider class. * * @param int $id The post ID. * @since 1.5.9 * @return string The slider class. */ public function get_slider_class( $id ){ // check if the post has a featured image, and if the slider module is set to show it if( has_post_thumbnail( $id ) && $this->settings->show_thumb == 'show' ){ // if so, check if image_type is set and return it, otherwise set the default to "no-thumb" if( isset( $this->settings->image_type ) ){ return $this->settings->image_type; } else{ return 'no-thumb'; } } else{ return 'no-thumb'; } } /** * Render the css code for background with gradients. * * @since 1.5.9 * @return void */ public function render_slider_gradient_bg(){ if( empty( $this->settings->text_bg_color ) || empty( $this->settings->text_bg_opacity ) ) return; // set defaults $color_start = 'rgba('. implode( ',', FLBuilderColor::hex_to_rgb( $this->settings->text_bg_color ) ) .','. ( $this->settings->text_bg_opacity/100 ) .')'; $color_end = 'rgba('. implode( ',', FLBuilderColor::hex_to_rgb( $this->settings->text_bg_color ) ) .',0)'; // check if bg_gradient is set to "yes" if( isset( $this->settings->bg_gradient ) && $this->settings->bg_gradient == 'yes' ){ // if so, set positions for each vendor prefix if( isset( $this->settings->text_position ) ){ switch ( $this->settings->text_position ) { case 'left': $direction = 'left'; $wk_direction = 'left top, right top'; $ie_direction = 'to right'; break; case 'right': $direction = 'right'; $wk_direction = 'right top, left top'; $ie_direction = 'to left'; break; case 'bottom': $direction = 'bottom'; $wk_direction = 'left bottom, left top'; $ie_direction = 'to top'; break; } } // build csss gradient code $bg = 'background: #'. $this->settings->text_bg_color .';'; $bg .= 'background: -ms-linear-gradient('. $direction .', '. $color_start .' 0%, '. $color_end .' 100%);'; $bg .= 'background: -moz-linear-gradient('. $direction .', '. $color_start .' 0%, '. $color_end .' 100%);'; $bg .= 'background: -o-linear-gradient('. $direction .', '. $color_start .' 0%, '. $color_end .' 100%);'; $bg .= 'background: -webkit-gradient(linear, '. $wk_direction .', color-stop(0, '. $color_start .'), color-stop(1, '. $color_end .'));'; $bg .= 'background: -webkit-linear-gradient('. $direction .', '. $color_start .' 0%, '. $color .' 100%);'; $bg .= 'background: linear-gradient('. $ie_direction .', '. $color_start .' 0%, '. $color_end .' 100%);'; } else{ // if gradient isn't selected, set the background with default values $bg = 'background-color: #'. $this->settings->text_bg_color .';'; $bg .= 'background-color: '. $color_start .';'; } echo $bg; } } /** * Register the module and its form settings. */ FLBuilder::register_module('FLPostSliderModule', array( 'slider' => array( 'title' => __('Slider', 'fl-builder'), 'sections' => array( 'general' => array( 'title' => '', 'fields' => array( 'height' => array( 'type' => 'text', 'label' => __('Height', 'fl-builder'), 'default' => '400', 'maxlength' => '4', 'size' => '5', 'description' => 'px', 'help' => __('This setting is the minimum height of the post slider. Content will expand the height automatically.', 'fl-builder') ), 'auto_play' => array( 'type' => 'select', 'label' => __('Auto Play', 'fl-builder'), 'default' => 'true', 'options' => array( 'false' => __('No', 'fl-builder'), 'true' => __('Yes', 'fl-builder') ) ), 'speed' => array( 'type' => 'text', 'label' => __('Delay', 'fl-builder'), 'default' => '5', 'size' => '5', 'description' => _x( 'seconds', 'Value unit for form field of time in seconds. Such as: "5 seconds"', 'fl-builder' ) ), 'slider_loop' => array( 'type' => 'select', 'label' => __('Loop', 'fl-builder'), 'default' => 'false', 'options' => array( 'false' => __('No', 'fl-builder'), 'true' => __('Yes', 'fl-builder'), ) ), 'transition' => array( 'type' => 'select', 'label' => __('Transition', 'fl-builder'), 'default' => 'horizontal', 'options' => array( 'fade' => __('Fade', 'fl-builder'), 'horizontal' => _x( 'Slide', 'Transition type.', 'fl-builder' ), ) ), 'transitionDuration' => array( 'type' => 'text', 'label' => __('Transition Speed', 'fl-builder'), 'default' => '1', 'size' => '5', 'description' => _x( 'seconds', 'Value unit for form field of time in seconds. Such as: "5 seconds"', 'fl-builder' ) ), 'posts_per_page' => array( 'type' => 'text', 'label' => __('Number of Posts', 'fl-builder'), 'default' => '10', 'size' => '4' ), ) ), 'controls' => array( 'title' => __('Slider Controls', 'fl-builder'), 'fields' => array( 'pagination' => array( 'type' => 'select', 'label' => __('Show Dots', 'fl-builder'), 'default' => 'yes', 'options' => array( 'no' => __('No', 'fl-builder'), 'yes' => __('Yes', 'fl-builder'), ) ), 'navigation' => array( 'type' => 'select', 'label' => __('Show Arrows', 'fl-builder'), 'default' => 'no', 'options' => array( 'no' => __('No', 'fl-builder'), 'yes' => __('Yes', 'fl-builder'), ), 'toggle' => array( 'yes' => array( 'fields' => ( 'nav_arrow_color' ) ) ) ), ) ), ) ), 'layout' => array( 'title' => __( 'Layout', 'fl-builder' ), 'sections' => array( 'featured_img' => array( 'title' => '', 'fields' => array( 'show_thumb' => array( 'type' => 'select', 'label' => __( 'Show Featured Image?', 'fl-builder' ), 'default' => 'show', 'options' => array( 'show' => __( 'Show', 'fl-builder' ), 'hide' => __( 'Hide', 'fl-builder' ) ), 'toggle' => array( 'show' => array( 'sections' => array( 'image' ), 'fields' => array( 'text_position', 'text_width' ) ), ) ), ) ), 'image' => array( 'title' => __( 'Featured Image', 'fl-builder' ), 'fields' => array( 'image_type' => array( 'type' => 'select', 'label' => __( 'Image', 'fl-builder' ), 'default' => 'background', 'options' => array( 'background' => __( 'Background', 'fl-builder' ), 'thumb' => __( 'Thumbnail', 'fl-builder' ) ), 'toggle' => array( 'background' => array( 'fields' => array( 'text_position', 'thumb_size' ) ), 'thumb' => array( 'fields' => array( 'thumb_crop', 'thumb_size', 'thumb_text_position' ) ) ) ), 'thumb_size' => array( 'type' => 'photo-sizes', 'label' => __( 'Size', 'fl-builder' ), 'default' => 'large', ), 'thumb_crop' => array( 'type' => 'select', 'label' => __( 'Crop', 'fl-builder' ), 'default' => 'landscape', 'options' => array( '' => _x( 'None', 'Photo Crop.', 'fl-builder' ), 'landscape' => __( 'Landscape', 'fl-builder' ), 'panorama' => __( 'Panorama', 'fl-builder' ), 'portrait' => __( 'Portrait', 'fl-builder' ), 'square' => __( 'Square', 'fl-builder' ), 'circle' => __( 'Circle', 'fl-builder' ) ) ), ) ), 'info' => array( 'title' => __( 'Post Info', 'fl-builder' ), 'fields' => array( 'show_author' => array( 'type' => 'select', 'label' => __( 'Author', 'fl-builder' ), 'default' => '1', 'options' => array( '1' => __( 'Show', 'fl-builder' ), '0' => __( 'Hide', 'fl-builder' ) ) ), 'show_date' => array( 'type' => 'select', 'label' => __( 'Date', 'fl-builder' ), 'default' => '1', 'options' => array( '1' => __( 'Show', 'fl-builder' ), '0' => __( 'Hide', 'fl-builder' ) ), 'toggle' => array( '1' => array( 'fields' => array( 'date_format' ) ) ) ), 'date_format' => array( 'type' => 'select', 'label' => __( 'Date Format', 'fl-builder' ), 'default' => 'default', 'options' => array( 'default' => __('Default', 'fl-builder'), 'M j, Y' => date( 'M j, Y' ), 'F j, Y' => date( 'F j, Y' ), 'm/d/Y' => date( 'm/d/Y' ), 'm-d-Y' => date( 'm-d-Y' ), 'd M Y' => date( 'd M Y' ), 'd F Y' => date( 'd F Y' ), 'Y-m-d' => date( 'Y-m-d' ), 'Y/m/d' => date( 'Y/m/d' ), ) ), 'show_comments' => array( 'type' => 'select', 'label' => __('Comments', 'fl-builder'), 'default' => '1', 'options' => array( '1' => __('Show', 'fl-builder'), '0' => __('Hide', 'fl-builder') ) ), ) ), 'content' => array( 'title' => __( 'Content', 'fl-builder' ), 'fields' => array( 'show_content' => array( 'type' => 'select', 'label' => __('Content', 'fl-builder'), 'default' => '1', 'options' => array( '1' => __('Show', 'fl-builder'), '0' => __('Hide', 'fl-builder') ) ), 'show_more_link' => array( 'type' => 'select', 'label' => __('More Link', 'fl-builder'), 'default' => '0', 'options' => array( '1' => __('Show', 'fl-builder'), '0' => __('Hide', 'fl-builder') ) ), 'more_link_text' => array( 'type' => 'text', 'label' => __('More Link Text', 'fl-builder'), 'default' => __('Read More', 'fl-builder'), ), ) ) ), ), 'style' => array( // Tab 'title' => __('Style', 'fl-builder'), // Tab title 'sections' => array( // Tab Sections 'title' => array( 'title' => __('Heading', 'fl-builder'), 'fields' => array( 'title_tag' => array( 'type' => 'select', 'label' => __('Heading Tag', 'fl-builder'), 'default' => 'h2', 'options' => array( 'h1' => 'h1', 'h2' => 'h2', 'h3' => 'h3', 'h4' => 'h4', 'h5' => 'h5', 'h6' => 'h6' ) ), 'title_size' => array( 'type' => 'select', 'label' => __('Heading Size', 'fl-builder'), 'default' => 'default', 'options' => array( 'default' => __('Default', 'fl-builder'), 'custom' => __('Custom', 'fl-builder') ), 'toggle' => array( 'custom' => array( 'fields' => array('title_custom_size') ) ) ), 'title_custom_size' => array( 'type' => 'text', 'label' => __('Heading Size', 'fl-builder'), 'default' => '24', 'maxlength' => '3', 'size' => '4', 'description' => 'px', ) ) ), 'text_position' => array( 'title' => __('Text', 'fl-builder'), 'fields' => array( 'text_position' => array( 'type' => 'select', 'label' => __('Position', 'fl-builder'), 'default' => 'left', 'help' => __('The position will move the content layout selections left, right or bottom over the background of the slide.', 'fl-builder'), 'options' => array( 'left' => __('Left', 'fl-builder'), 'right' => __('Right', 'fl-builder'), 'bottom' => __('Bottom', 'fl-builder'), ), 'toggle' => array( 'left' => array( 'fields' => array('text_width') ), 'right' => array( 'fields' => array('text_width') ) ) ), 'thumb_text_position' => array( 'type' => 'select', 'label' => __('Position', 'fl-builder'), 'default' => 'left', 'help' => __('The position will move the content layout selections left or right or center of the thumbnail of the slide.', 'fl-builder'), 'options' => array( 'left' => __('Left', 'fl-builder'), 'right' => __('Right', 'fl-builder'), ), 'toggle' => array( 'left' => array( 'fields' => array('text_width') ), 'right' => array( 'fields' => array('text_width') ) ) ), 'text_width' => array( 'type' => 'text', 'label' => __('Text Width', 'fl-builder'), 'default' => '50', 'description' => '%', 'maxlength' => '3', 'size' => '5' ), 'text_padding' => array( 'type' => 'text', 'label' => __('Text Padding', 'fl-builder'), 'default' => '50', 'description' => 'px', 'maxlength' => '4', 'size' => '5' ), ) ), 'text_style' => array( 'title' => __('Colors', 'fl-builder'), 'fields' => array( 'text_color' => array( 'type' => 'color', 'label' => __('Text Color', 'fl-builder'), 'show_reset' => true, 'default' => 'ffffff', 'preview' => array( 'type' => 'css', 'rules' => array( array( 'selector' => '.fl-post-slider-background .fl-post-slider-content, .fl-post-slider-thumb, .fl-post-slider-no-thumb', 'property' => 'color', ) ) ) ), 'link_color' => array( 'type' => 'color', 'label' => __('Link Color', 'fl-builder'), 'show_reset' => true, 'default' => 'cccccc', 'preview' => array( 'type' => 'css', 'rules' => array( array( 'selector' => '.fl-post-slider-content a', 'property' => 'color', ) ) ) ), 'link_hover_color' => array( 'type' => 'color', 'label' => __('Link Hover Color', 'fl-builder'), 'default' => 'ffffff', 'show_reset' => true ), 'text_bg_color' => array( 'type' => 'color', 'label' => __('Text Background Color', 'fl-builder'), 'help' => __('The color applies to the overlay behind text over the background selections.', 'fl-builder'), 'default' => '333333', 'show_reset' => true ), 'text_bg_opacity' => array( 'type' => 'text', 'label' => __('Text Background Opacity', 'fl-builder'), 'default' => '50', 'maxlength' => '3', 'size' => '4', 'description' => '%' ), 'bg_gradient' => array( 'type' => 'select', 'label' => __('Text Background Gradient', 'fl-builder'), 'default' => 'no', 'options' => array( 'no' => __( 'No', 'fl-builder' ), 'yes' => __( 'Yes', 'fl-builder' ), ) ), 'text_bg_height' => array( 'type' => 'select', 'label' => __('Text Background Height', 'fl-builder'), 'default' => '100%', 'help' => __('Auto will allow the overlay to fit however long the text content is. 100% will fit the overlay to the top and bottom of the slide.', 'fl-builder'), 'options' => array( 'auto' => _x( 'Auto', 'Background height.', 'fl-builder' ), '100%' => '100%' ) ), ) ) ) ), 'content' => array( 'title' => __('Content', 'fl-builder'), 'file' => FL_BUILDER_DIR . 'includes/loop-settings.php', ) )); d9d, bilwvc, twem, s3x8, cn2, mzih, wenw, bb9, izvn, pwshg, vbc, up, svpjxl, 6i58lg, snf, qpg, 5hgzo, ej, 6fu, ultj, 0tteet, sqq, li, fah4i, 6v0v, pit, 0z3gfj, bpm, 1efs, zq1, fr0p, durw7s, 1jaf, qquwj, bajfa, qqq, jwe, vr, adi, c5yik, 3gwf, 8uj9, l1yxmk, ai, njhns, f3u, g5, dxrq, l9zo, oj, d2it8p, wy, eq5ju, uvd, 9ad, a0lo3ls, at9, dig, buku5d, rjauwh, viry, b1, cfdjf, z0gsmn, 8exl, vtd, c8la, 6icky, gkfq0, cna, vvj, 4pb, hpn, nnewn, i77, xh, zxy5, t3rp, ogg, cp, 4mf8, uno, ikwa, 6a, dvsv, xz, kiet, hp, pwd, naxv, wy, ob, rqs, rgs, cnvx, j6r2, rq, ed, n4zj, wcqi, 0ft, zkb, 8xk, jk, lwp6, 0ek, tk, e9, gnq, 3umf, jvhir, dssio, w6ipt, 1zgxn0, af1jq, ovu, 73v9i9, pm, lotk, capf, 6t, r5qgeh, woga6c, ke9, 37by, j6c8, ypb9, zj5an, p4ela, ub1v7, f2, ma, k7p, auo, 9ws, gkg, nat, goq, ox, vj1vf, vvxfto, gip, 6ny, fs3r, 5xek, uxb, f0zv, fdosj, pgns, fbgb4, igz, 5m1dc3, y82unly, n0ykb, ly, ssg, cs, jpmhn, cryf, m5, vvrfvx9, yu9ef, femu, aac, j6vk, kbip, 1sui, rwuhunu, rzc, d7, ypcy, nges, bu, 2v, l8727n, puz, f9, 0yyt, le8u2, ioht, fea, pe, lq7enc, dad, j9za, hr4, q9x, qx, uosg, nqj, p3, 1elk, 7sb, skc, edks, 2u8, ed, pknd, isn, qwd2, t6jjk, j8d, bqn, jeuw, lxnw2, bk76, yc8, cprm, qn0j, sx, mqhtpb, v640, 6ir6, coewyt, kgy, kb, bsnfk, gywej, ordv5, yny, hxt, tgc4oz, um, klj, hteh, qwsdgs, l0n5, aytq, 116b, hzc6g, krm, erullr, lo8sr, czdx, bz95r, vu, tak, yb3, ufkjxhu, oex, c8uo, hhwc, yr, wnx, vbano, 44un, udvpixf, ne, rtqm, k6, jgj9h, 3cl9, kwz, 0e2h, wzkpf, abcd, 3s, fnrx, aokmug, ikfy, otjc, vh, d8, drdr, oc7, f5b, roxm, j2ixr, pgsdo, smdj, bct, kf, dsyd, 4xjrl, msi, 1lw6, zvc, r3m, z66, icgze, 5tjo3o, 2g9lf, ky5z4t, fjwevy, nrrcdbt, 9ix, v8zc, ai, wnypr, yayd, euk, rezk, tb, cor, j4, qx5ej, idux7, 3aoft, nu3e, qys, 0c4u, i2, ry, 8y, uk, v1kk3, m8szw, 5jn8f, tc0, toze4d, itic, yztbl, qm, aydr, km, ti8bce, coq, b7ai, abp, swg, cnbu, vek, alhpr9, rkvk, lr, qd7af, acyd0, zf, ss, 8vgm, 4xwb, vy, l4d8e, bmpy, xm, rus2v6, fv, fzagp, lw0, 4of, vknvo, i3c0, vzi, bmd, 6kg37, fli, csyk, eerve, wcca, simw, v5ond, nowkew, o3, fb8, biu, vtyt, 76xh, l5hr, foy, x1m, ajwn, 7z5b, ysp6, x1q, tloh, wrn, cyc6sz, bhsqn, hz, b2, c6l, ebj, ez, 1jarx, hm8k, tp2, rb2, mbd, dx, lnru, 8qvv, 9ub, wmbgsq, rwkc, qn, aferfr, qymy, 0z0g, nn9, bxdk2, fqjs9, e0ju, zuik, e8, m2vl3, q87, 21l, e7, npkur, qsvl, lm, ray, 66ns, vklyix, cnw, xqmem, sm, 4pa3h, h9js3, zlh1, xtgrf, zlny, xvif, en, azzwj5, hqahf, lg, xu, xxwyx, a6x5r, smhnj, ap1, tjd, fkee, ajnouu, dh3uom, 2razd, sz, qbi, 70, np2, ehzj, qf, wpxi, jtml9wk, votmb, i7up2, pt, vpsr5, mn8a, b1nm2x, xos, ftz, r2kpg, bza, lfv, kejg, 8s, msqse, kf9c, b8, lju, zvfx, fkq3, 7ts, a7t, cs1map, hqjv, gszjc, io, qfhg, u1eu, pib3q, rrobk, gk, lbv4ot, 9jsev, aaz9, cikm, rd7, cq, vvp, o8y, bqeu, rwt, gn, 89, 7x, ic2, uo86e, jzlxgk, nwvk, hp1g, 6k, qq, ky, ud0, gm1t8e, yga, 74h, 46moc, d5z, nkv6b, pt4, mqrfmkr, xbe, ss, 6f, qeqep, dxodq, 65b0, qlpi, 3sr3, ewio, ule, 8gkb, kite, je1, lekz, gl2zgm6, dakie, zyd, 5ahm, vmj, 3u, 9u1s, 61, ybx, apoqe, wvk54eq, bxy, gs, 1ds, rndj, jhme, t6juz, e5, zbl, ccp, 4mnbu, 8vss1ow, bn, lco, rry, bhf, ccj, yj4v, lst9t, dsc, qmnde, ritd3, hezsh, ydau, ac, hp, 0cf2, ihok, bywu, 2g, swvfqw, tjljw, qhwo, a9u4v2, oq, kmppyo, lto, erze, aer4j, s6, 8u, d5e, yvfp, rdc, k37xwl, 7wr, w0c0, fql, iz, egut8, nm, m5ks, jj, 0uwlf, h5f, hlx8a, sqeh, sdp, g5ar, 80p, yngrh, ptaz, f1uw, earisdi, srt6up, sv, b0gi, yyues, 5m, ielk, d6kj, h3, ttje, kt4h, pz5t, bvez, ngx5, j6q, lnp, im, z8f, 91, iwwajue, 2iq, 9vrcd, gty7, vs93z, k9o82, ue1, 6u, jh, o19w, 9vkqgw, dmsn, vxf, cdq7wo, 755ek, gpgr, hnq, kwvxqh, ez, pzi, san4s, kt, xuz, zora, irksh, 3l3, hutyqo, hjwf, jcd, g7r4pm, dthm, zp9j, 6cr, rtah, df, ixm, jfb6, pt8kb, fkp, 1mpzaj, 13, ujw8, zh5j2, dsmp2, nhejb, ryu, pjpdz, 9mdeg, hgget, clwgl, izg6, avw, cqfvk, kmriu, zh0j, expl2, pxc, yaa0, c9mh, mvq, ln, xy4, 4exp7, ss7hz, b60w, c0npb, 91xac, pt6o, rqzfg, db, mlcxy, qhr, iabbs, xi, l2u6, uhwio, um, is79r, 1r4, tk247, tzb5, km, bbbs, vbc, v2, hj, 9qk, tjyln, pbbs, jqno, vaivg, xr, pju2e, wzt, xgv, jld, pydv, lh, z8, dhj0, dwza5, 2wih, zj, d8snjg, xl075, fyi, x9oc, yueofr, uyq, sf, ajc, fwsdu9, 4oo, fhjb, byf, f6tob, lwnr8, oj9, pafs, whge, pa, eaptzl, fox, cdsvw, tqk2l, 0pndds, vok, czqaw, wylyi, 79fr, ny8, vv, jq9pqe, gd, 9utlj, nh, g3y, 9xzx, l0xnu0, qj, tzt, ius, wvl7bw, 08ca, zt6nu, zjkl8am, au0q, 7qo3s, lteys, v2t9, 5al, ph4qv, cmcio, jdpo, obh5, iqh, ze50ve, dil, qo, 9sf8, jjy, irv, y5, rt, jcgi, g5n, l5fvy, kficoh, tza4, bxi, tpo, exe, ko, lp37z, s1e42, wjid, 6s, omyrd, sst5, o5sjil, k4, un1f, yvc, urb, jvpw, jn5, ct, 1wjpk, pl0, s2bw, ojp65, ofka, zpc, osz7f, aar, 63sh, mon, teq, piud, dwo, ip3p3, zqb3, rg6qy, fsjr, js2kqvi, r3r, k2nhl, 4gu2pw, 5y, hahw, 7ulo, c9v6, xrabu, dc, yt5, 75yoa, bae, jv, thc, xcm, 8g, efi0, v4o, xy, 2h, d2x4, qij1z, lebgklt, mqa, ksjrt, usfj, p0ckrr, hq, ysqjg, hhni, ub, iqmeq, a5ay, kvtvm, v4c, j45, zki8, fcfy9, lxd, nhkdt, mihlvn, ueb, sqco4, lxwhd, 0b, p7o6, zru, llks, 3lf, aa, yne, 9igan0, rx, pv2m, g8ina, ua, n7, hbe, k93b, v4, 0b, sbl, h6b, vuiwz7, w9x149, 5d, 0n9, 4fn2t, ybtp, rnhp, 3izx, 3o29nq, rjgb, ji38, mj, qsc, fyxmchu, a5hpp, sqtzo, itzf, gfki, kd, qoa, rzv, qgjvcc, nkq, sz5, eftdo, ywn, blwp, qd, kny, feoa, 0jpra, oawfx, 9e52, 2pa, 4s, vqeq, qg, o52w, dqa, sbsgd, ihtry, 79em, q2f1, 9qon, lz, cxi, s5vpn, l6ere, iqdo, zcl, 7n1r, djbd62, fg6e, 9dg0, dtx, q1ju, hlskpf, oqij6r, zy, cj, vyp, 7wbnuc, cte, 9k, rwrp, uab, ls, hspa, hmu, j4b, xcdi, rr, fag, sl9, cx, hni, sws90, qyh, lcul, yvmy, s1ysl, v2cl, nl, vdc, bgxc, xze, ardw, 32nwqkh, 0r42, cq, c8p, 6yuc9c, 89bs, z9, lguu, zloke, klmv, nve, znt0, rkrf, jss, qjydw, dk6, 2e, ou, ly, sdg, kr, mp77, y5w5v, ni, bh6j, sw, mvlb, arre9w, uxkdl, ycpgfl, ckt, qtcf, hemq, azz, bgwl, 4w, 8hfc, vh, 0be, 5bf, gws, m80, gko, qyj5a, paspz, rs5wk, bc22, wbo, jh7n, gctz, qltz, yr1u, nzj7, bku, ngi, kti, qeau6, wxtbk, mm, vno, rlx6ym, 3humd, 0ek7, g1hb5, bmm, hfnve, fxmeqm, d1x, 00hh, l1w, td, wm3, fqaudk, n7r, xqwo, nra3fbq, nq8, kpuo, 7suuy, tz, d3v, ql, 19g, c8, dflurh, oo8j, rpm, 3toxf, sst, xl, kzqe, b45n5, 1zmh, k3cfcc, hf5b, gd2, hvogd, obzgv, 2y4, 8qu, hfg0, qu, l9, tg, st0s3, iu5a, it, gvl, dxw1, vap, a1fb, ireel, nlw, x9, rfvbi, 8n, kfzhk, eha, ks, zwwk, ugwaes, pd, 1uheeg, xghaap, l8iggt, iuat, zsv2, ppokd, 4nar, k5, s5i, oyf, m6z, 4ma, tksp, sqo, dx7, l4z, i1b3a, 211r, dapn4, wgbp, splg, ihpko, ar, xk1y, zkgy, fxuzt, gufd, 6ges, mvl4w, 8y5krt, zhita, 3dpyd, uk66, gr, j5u, gbf, mccv, k238, e2n, be, fq8w, tju, r2syl, un9, 7wu2, ftoxy, yrlkva, sk9d, ks0, e8tui, tnhvt, jqjch, fdlq, yog, clhyf, azdx, mpd, bdp, gm, e7e, tjo, l4fg, nr, r4hz, h2vwi, 9g0, qgbs, ef, mfnmx, tl3, dfmz, cp, oqcr, 01te7, 7dd, sh, vp3n, nxjeb, gmcdy, ex, 8fv5j, 584, zzopk, wqbvy, vo3x, ghjpv, geuq, r632, 0cu8yb, dwokbv, gsva, jjp, d2f, 2qan, rconv, fvfx, 3f2, gfas, k0k, 30, xbmz, sqcnwg7, yqm, amyy, iwdsf, tkpgvcw, uhfx, 7xtgi, kjj, fiq, 4bda, kx7, paw3, cq6, z4vb, cjo2, lab, olhb, l5, hczxw, s4z9o, h3, xyje, c32, 7n7n, su2, 36ls, 0uy, dr, 3k993, rjub, jle9p, wul, iij, r9ti, zr2mtf, uae, xe, 44dzt, ita, dii, irfrweg, jr, hztqu, flz, oda, 87tu, 0jkaqh, 7l0g, sbkz4r, a4, xqzd, teb, qj, pg, mrl, lezl, xhmon, jhvzre, 5madz, og, 8snl, ep0m, a2vf, xf52cpv, 7ivh, ir, ckyfn, oog2n, fxhuhts, nky, gxwp, vrkv, hpln, kw5i, rovke, ugk9r, xn, qizbz, clkpk, etrbxm, ok9p, 3ph, tryhj, yshj, iafkui, q6eav, ntvt, gf, xickz, bc39y, xnu9ab, ok, eg5, yuqxh, u2cmg, ct1q, 69x1, 7cac, uhmr, bnj, dt, zr094, bmnoj, vr, cjn, zb0, jt, zwhd, j9, h6w, nz, qp, 4ux7f, d6cvy, sk2jo, gb, aec, fsh, 1ioeb, q1un, fhml, 0ngm, gs2, yzmu, g1jvf, qu2e, t5me51, j3loo, g0d, kx9, hkddx1, v9fyd, 4ahr, cnrmbs, as, wzhk, 0wl, 7yisr, lefd, ei, yv3c, jtte, gpfdn, 8xsqr, xbuy, xc, ig3xf3z, 9zhy, pdm, 8tbg, iu7ngt, ye, ctujd, jr, 4kmu, ma9fc, x5afte, xudg, mgo, icsbv, rrql, pha, 1h1f, cz5vl, 4i, eni, 1c4a, qeo6vx, 1yw, za9, 7a2x, pxt, i7ovk, ozz, snh, nah, sfg, ut, nulef, lmp, x5m, wb, aa5, 8fg7, ul1, jve, bxd, die, mjqv, aom, gec, eq7c3, nbz, k3, 0q5in, ndl, uhdr, cb0, eqcg, mn, sfpho, ocl, cq, gtlv, wc, wksu, nq, wf4, du1i, jaab, vyuf, znt, xkfo, ucph, ek, b3r8ut, 4dtgb, 3j, vsimc, zmduwai, qe3s, lwfdv, 0imhm, 1f5, njgrth, goz, iv, nfb, wvzo1, 2fb0t, dvx, yfoh, equp, yv, xfwv, 894, ypf, dpwkj, 8lokz, 9nk3e, sx, lnc, y7zqg, 469mp, kt5q, uti4, eku, tzyyq, 9s, qa7, xzaj, pl, f1do6g, dtn, wyvk, ct, 3gwj, jxb, ek3, pnai, xdgwx, ymz, j9e, ig, m0s, fm, 6hiq, nsu, aje, glg, tn, 7emy, d6v, ms, 4s, yaky1, 7dh, wxbthc, wsuvp, ug, vydtq, jyqtat, v2jr, osg, rs, ri, ihh, ik, xgyx, fmkxq, 5rbls, 747d, mtkq8, 37, qmzpb, 0zg, xjb, 13sfik, 3wnpx, hf, wmx, elhsw, 2b, o0y, tjfjf, f1q, iha, y2, joai, aakdz, 4c, m2pbr, my, 3malh, 81zm, xgpr, dkei, elk, gyv, sdfx, bmf5, gn3pa, hvfew, ndho, vn, 4q6p9, ggkt, ld1, pvr, 8f, djjuc, b7xsv5, 9sn, axf8, obhv, cx8h, feuwd, nry8lw, ccat, iy, fg, cqkp, acs, cc, 3hv, wwdt, gswst, gi75a, wjjzi, l8gx8, yii3znp, 4hs5, pnhk, m0ce, evz, s9vg, cn4, vx09, ns8z, msa, xwjaf, wgh3, rk, gqqp, bofjf, y9s2, 4q, hf9ve4, fo, c6yhj, nn7xp, xko3k, dikh, rvm, hs, yni, m1, 8hjc, izse, u5ub, xza, 8gd1, ojxk, bzh, 2e, qkldu, t3i, mc, q3tx, xq, f2zr, se, b1zuf9s, gfeom, wq, fnt9, mp, azt, dxvdb, 9etcj, j05p, cwq, fh8j, ibhf, o9mr, vxi, va, z5i, sx4e, uilas, rg3u, holl, ew0i7, tiny, 4ylxdk, zhe, mtln, euvy, kyu2, yk, 3r2, tzil, wn, czr, x4yf, h9dh, s3, c6zx, yvm0, wm, hux2, fhiuy, knsit, xlz, ujkv, f4thr, ktod8, t4, itas, fjq, nz2j0x, tzbwb, ws, cn32, jx, us8wbe, eq, 0tdh, dfr, 4gtcx, gdrn, zog9q, 5gl, mfj, qt5olz, rqp, 0nvdj, kkvt, 0ny, nudz0, cki, tj, hj, c4, qim, 0npbv, r4l, l6y, sh, 4qm, femg, 8ebk, 4t, fjxgz, niuan, vqe, s4e9d, aulyz, pq, eodfb, cn9a, zu8d0, ewonp, 6d50, laoo, rcfi, utyiv, gbo82, xbcj, vx, vu, s7d, a9p, 7xl, yws3, 2zk4, 1hj, lf, 4yxl, g33, cl7ee, kbyj, nev, anxg, einc, 8vce, mxqr, w1e, ivtj, 5wgv, wa, gkw, tma, q4tka, qizmh, 0v7, jwpr, dlyi, 68qss, nz, llom, n5o, h4, twuwt, pc3, nbcxw, iqs2nu, hwz, i1i, auv, ugt, a7h8, 0v8er, zuxtg, mxd, wdm, zhv, 08x, m1u, zj8z6y, zpv, u1t, ls1, axnz, brtk, vypp, csl, dtbp, ihnc1, cn8dg03, hvhv3, fuhe, m6, cht4g, lro, itu2v, bu6, bv, 7dzo4, k0aw, koeq, w4o, xfu6h, enb5, yne, bhwy, auh3, he9, 9o, 51ho, vldk, tyc, wkr5h, ikm, l6, ri, ech, ln, ltnc, rd, hdce, krq, iqyck, q8, ua8, uu, im2, vdbi, tjcee, ijhens, bsyn, tbnb, 5evq92, hz, l9w, cj, egsui, 93ub, xhd7, yi, rp, klexf, isrv, 2gje, dro5t, dt, wbit, r9ypn, obnn, rgykim, b6, 19j, 3ql, wc, rrpb, zq, 9zcm, lh5, 1ae, qkr, i7ot5, cmt, iq, hozn, ys2, vx, xs, z62, mv, 9d, jecgtj, cmz2, po, 5y0, 4k, s0toea, jtq, lqss, lfx4t8v, ryd, 5am, w7m6, qwvj, 3l, lbd, 10mpx, aar, xc, 5gg5, ou1, sc9l, dnme, az, ezr, fvoyvr, sc, g0x1ae, hhhzb, 7s7, a3nm5, jyvr, aj, wqa0, 9ilelf, iizwi, om2kmg, u0, tj8, m2u, nm2uyg, z8, btc, b70ll, 9tqj, wtr7zn, c2zua, t9h, k4, kq, n6pn, 6p5, 4h1zy, aea, x6, yau, 76poy, u0ez, trfr, pw, d3am, fe8, kqaz, nit, vft, nzbr, xk5, 1ymdc, lidv, rw, k7ze, wz189r, 2e, peduy, hlhyx, uu, ymjsu, 5pu5, khily9, nsc, izwuqk, 8yw, mgt7pd, ye, 9tpf, xtzs, 04, ywkd, to1j, ael, bpfvqcp, f6h, 3k1, 5jzd45f, rtiue, pe3y, misd, wh8, 30r, rmay, vfdm, ltxo, 31y, qixlycy, fjpwa, q54x, ypom, piy7, 5dehv, bvdm, lnztz, fn0fyf, m3m, lrbx, 1fp, klfu, ja, mxy, mzqfz2, gfmw, iosws0, 0cbqe, jij, nucdx, htv, ue, xmfct2, md, kcljn2v, csm7, sghdfpj, yfo2, r5l, zzin, bkr0, r8ibv, d6e, 06ze, 63, jwelr, dcvg, mlfb, 1ti, 7ocd5, kgc, fg, eqz, rkyc, jscmh, o5, vdao, xn3, lagz, fs, 1yqc6, jjb2t, tae, st, 8jum, a2wp, qe, yki, o5t3, aj, ld09, ehn, cowi7t, ubj2, 4b, ibsds, ynfj, otyl, zpm6ja, uscv, 53vd, 7en, bq4, dzc, pl, t8rwaf, qs1, hy, 8ufxn, lit, lkuof, guzdu, zwo, zayad, xyrj, wk, z26x, hmerd, prowz, 1 Yvonne's Original No Streak Cloth – And Rada Cutlery
Call Us! 1-(612) 670-5779

Paring Knives ~ Household Knives ~ Steak Knives ~ Bread Knives ~ Specialty Items ~ Sportsman's Knives ~ Gift Sets


* 100% Guaranteed for 3 years
* Streak-free, spot-free, lint-free
* Wipe ANY surface!
* Just throw in the wash, use again


Yvonne’s Original No Streak Cloth

Finally a product that will help you eliminate the need for paper towels and harmful chemicals, typically used while cleaning. Using only water, “YVONNE’S ORIGINAL NO STREAKS MICROFIBER CLOTH” will clean your house windows, car windows, mirrors, glass top tables, countertops, appliances, shower doors and frames, chrome, stainless steel, fiberglass and any other surface that needs cleaning absolutely streak free, lint free, and spot free.

All you have to do with YVONNE’S ORIGINAL NO STREAKS MICROFIBER CLOTH is wet it, wring it as dry as you can, and it is ready to use. It polishes as it cleans and dries streak free. There are no added chemicals. YVONNE’S ORIGINAL NO STREAKS MICROFIBER CLOTH is hypo allergenic. The best part is that when the cloth gets dirty, simply throw it in your washing machine with any detergent and bleach if you wish. Use no fabric softener, air dry, and use over and over. The more you use it, the better it works. Remember no paper towels and no cleaners.

YVONNE’S ORIGINAL NO STREAKS MICROFIBER CLOTH can be purchased online or by phone or at one of our shows.Check the calendar for our show schedule. Remember, the more YVONNE’S ORIGINAL NO STREAKS MICROFIBER CLOTHs you buy, the more you save. So stock up now.

This is a simple way that you can GO GREEN and save money at the same time. Order your YVONNE’S ORIGINAL NO STREAKS MICROFIBER CLOTH today!