<?php

/**

 * @author    ThemePunch <info@themepunch.com>

 * @link      http://www.themepunch.com/

 * @copyright 2015 ThemePunch

 */

 

if( !defined( 'ABSPATH') ) exit();



class RevSliderTinyBox {

	

	protected static $instanceIndex = 1;

	

    public function __construct(){

		

    }

	

	/**

	 * Add interface for custom shortcodes to tinymce

	 * @since: 5.1.1

	 */

	public static function add_tinymce_editor(){

		global $typenow, $pagenow;

		

		// check user permissions

		if (!current_user_can('edit_posts') && !current_user_can('edit_pages')) return;

		

		$post_types = get_post_types();

		if(!is_array($post_types)) $post_types = array( 'post', 'page' );

		// verify the post type

		if(!in_array($typenow, $post_types)) return;

		if((isset($_GET['action']) && $_GET['action'] == 'edit') || (isset($_GET['vc_action']) && $_GET['vc_action'] == 'vc_inline') || $pagenow == 'post-new.php'){

			// check if WYSIWYG is enabled

			if(get_user_option('rich_editing') == 'true'){

				add_filter('mce_external_plugins', array('RevSliderTinyBox', 'add_tinymce_shortcode_editor_plugin'));

				add_filter('mce_buttons', array('RevSliderTinyBox', 'add_tinymce_shortcode_editor_button'));

			}

			

			add_action('in_admin_footer', array('RevSliderTinyBox', 'add_tiny_mce_shortcode_dialog'));

		}else{

			return;

		}

	}

	

	

	/**

	 * Allow for VC to use this plugin

	 */

	public static function visual_composer_include(){

		if(@is_user_logged_in()){

			

			if(!function_exists('vc_map') || !function_exists('vc_action')) return false;

			

			if('true' === vc_request_param('vc_editable') || 'vc_inline' === vc_action() || is_admin()){

				add_action( 'init', array('RevSliderTinyBox', 'add_to_VC' ));

			}

		}

	}

	

	

	public static function add_to_VC() {

		

		//wp_enqueue_script('revslider-admin-script', RS_PLUGIN_URL.'admin/assets/js/admin.js', array('jquery'), RevSliderGlobals::SLIDER_REVISION );

		wp_enqueue_script('wpdialogs', 'jquery-ui-sortable', 'jquery-ui-dialog');

		wp_enqueue_style('wp-jquery-ui-dialog');

		

		vc_map( array(

			'name' => __('Revolution Slider 5', 'revslider'),

			'base' => 'rev_slider',

			'icon' => 'icon-wpb-revslider',

			'category' => __('Content', 'revslider'),

			'show_settings_on_create' => false,

			'js_view' => 'VcSliderRevolution',

			'admin_enqueue_js' => RS_PLUGIN_URL.'admin/assets/js/vc.js',

			'front_enqueue_js' => RS_PLUGIN_URL.'admin/assets/js/vc.js',

			'params' => array(

				array(

					'type' => 'rev_slider_shortcode',

					'heading' => __('Alias', 'revslider'),

					'param_name' => 'alias',

					'admin_label' => true,

					'value' => ''

				),

				array(

					'type' => 'rev_slider_shortcode',

					'heading' => __('Order', 'revslider'),

					'param_name' => 'order',

					'admin_label' => true,

					'value' => ''

				)

			)

		) );

		

		if(version_compare(WPB_VC_VERSION, '4.4', '>=')){ //use if 4.4 or newer

			vc_add_shortcode_param('rev_slider_shortcode', array('RevSliderTinyBox', 'revslider_shortcode_settings_field'));

		}else{ //use if older than 4.4

			add_shortcode_param('rev_slider_shortcode', array('RevSliderTinyBox', 'revslider_shortcode_settings_field'));

		}

		

		//if ( vc_is_frontend_ajax() || vc_is_frontend_editor() ) {

		//	remove_filter( 'vc_revslider_shortcode', array( 'Vc_Vendor_Revslider', 'setId' ) );

		//}

		

	}

	

	//public function setId( $output ) {

	//	return preg_replace( '/rev_slider_(\d+)_(\d+)/', 'rev_slider_$1_$2' . time() . '_' . self::$instanceIndex ++, $output );

	//}



	

	/**

	 * The Dialog for Visual Composer

	 * @since: 5.1.1

	 */

	public static function revslider_shortcode_settings_field($settings, $value) {

		

		return '<div class="rev_slider_shortcode_block">'

			.'<input id="rs-vc-input-'.$settings['param_name'].'" name="'.$settings['param_name']

			.'" class="wpb_vc_param_value wpb-textinput '

			.$settings['param_name'].' '.$settings['type'].'_field" type="text" value="'

			.$value.'" />'

			.'</div>';

		

	}

	

	

	/**

	 * add script tinymce shortcode script

	 * @since: 5.1.1

	 */

	public static function add_tinymce_shortcode_editor_plugin($plugin_array){

	

		$plugin_array['revslider_sc_button'] = RS_PLUGIN_URL . 'admin/assets/js/tinymce-shortcode-script.js';

		

		return $plugin_array;

		

	}

	

	/**

	 * Add button to tinymce

	 * @since: 5.1.1

	 */

	public static function add_tinymce_shortcode_editor_button($buttons){

	

		array_push($buttons, "revslider_sc_button");

		

		return $buttons;

		

	}



	

	/**

	 * Add dialog for shortcode generator

	 * @since: 5.1.1

	 */

	public static function add_tiny_mce_shortcode_dialog(){

		?>

		<div id="revslider-tiny-mce-dialog" tabindex="-1" action="" title="" style="display: none; ">

			<form id="revslider-tiny-mce-settings-form" action="">

				<!-- STEP 1 -->

				<div id="revslider-tiny-dialog-step-1">					

					<p class="revslider-quicktitle"></p>

					<?php

						self::add_step_1_markup();

					?>

					<div class="revslider-stepnavigator">

						<span class="revslider-currentstep"><strong><?php _e('STEP 1', 'revslider'); ?></strong><?php _e('Select / Create Slider', 'revslider'); ?></span>

						<span class="revslider-step-actions-wrapper">

							<a href="javascript:void(0);" class="button-primary nonclickable" id="rs-modify-predefined-slider"><span class="dashicons dashicons-admin-generic"></span><?php _e('Quick Modify Slider', 'revslider'); ?></a>

							<a href="javascript:void(0);" class="button-primary nonclickable" id="rs-add-predefined-slider"><span class="dashicons dashicons-migrate"></span><?php _e('Add Selected Slider', 'revslider'); ?></a>							

						</span>

						<span style="clear:both;width:100%;display:block"></span>

					</div>

				</div>

				

				<!-- STEP 1.5 -->

				<div id="revslider-tiny-dialog-step-1-5" style="display: none;">

					<p class="revslider-quicktitle"></p>

					<div id="revslider-tiny-settings-wrap" class="revslider-quick-inner-wrapper" style="padding-right:0px;padding-bottom:0px;">

							<ul class="rs-mod-slides-wrapper">

								

							</ul>

					</div>					

					<div class="revslider-stepnavigator"><span class="revslider-currentstep"><strong><?php _e('STEP 2', 'revslider'); ?></strong><?php _e('Quick Modify / Add Slider', 'revslider'); ?></span>

						<span class="revslider-step-actions-wrapper">

							<a href="javascript:void(0);" class="button-primary  rs-goto-step-1"><span class="dashicons dashicons-arrow-left-alt"></span><?php _e('Select Slider', 'revslider'); ?></a>

							<a href="javascript:void(0);" class="button-primary " id="revslider-add-custom-shortcode-modify"><span class="dashicons dashicons-migrate"></span><?php _e('Add Selected Slider', 'revslider'); ?></a>							

						</span>

					</div>

				</div>

			</form>

		</div>



		<script>

			jQuery("document").ready(function() {

				jQuery('body').on('click', '.slide-published.pubclickable', function(){

					var li = jQuery(this).closest('li');						

					li.find('.slide-published').removeClass("pubclickable");

					li.find('.slide-unpublished').addClass("pubclickable");

				});		

				jQuery('body').on('click', '.slide-unpublished.pubclickable', function(){

					var li = jQuery(this).closest('li');

					li.find('.slide-published').addClass("pubclickable");

					li.find('.slide-unpublished').removeClass("pubclickable");

				});

				

				jQuery('body').on('click', '.slide-hero-published.pubclickable', function(){

					var li = jQuery(this).closest('li');

					jQuery('.slide-link-published-wrapper').each(function(){

						jQuery(this).find('.slide-hero-published').addClass("pubclickable");

						jQuery(this).find('.slide-hero-unpublished').removeClass("pubclickable");

					});

					li.find('.slide-hero-published').removeClass("pubclickable");

					li.find('.slide-hero-unpublished').addClass("pubclickable");

				});		

				jQuery('body').on('click', '.slide-hero-unpublished.pubclickable', function(){

					var li = jQuery(this).closest('li');

					jQuery('.slide-link-published-wrapper').each(function(){

						jQuery(this).find('.slide-hero-published').addClass("pubclickable");

						jQuery(this).find('.slide-hero-unpublished').removeClass("pubclickable");

					});

					li.find('.slide-hero-published').addClass("pubclickable");

					//li.find('.slide-hero-unpublished').removeClass("pubclickable");

				});	

			});		

		</script>



		

		<script type="text/html" id="tmpl-rs-modify-slide-wrap">

			<li id="slidelist_item_{{ data.id }}" class="rs-slide-modify-li">

				<span class="mini-transparent mini-as-bg"></span>

				<div class="rs-slide-modify-container {{ data.bg_extraClass }}" {{{ data.bg_fullstyle }}}></div>

				<i class="slide-link-forward eg-icon-forward"></i>

				

				<span class="slide-link-published-wrapper">

					<# if(data.slider_type !== 'hero'){ #>

						<# if(data.state == 'published'){ #>

							<span class="slide-published" ></span>

							<span class="slide-unpublished pubclickable"></span>

						<# }else{ #>

							<span class="slide-unpublished"></span>

							<span class="slide-published pubclickable"></span>

						<# } #>

					<# }else{ #>

						<# if(data.active_slide == data.id || data.active_slide == -1){ #> <?php /* || data.active_slide == -1 */ ?>

							<span class="slide-hero-published"></span>

							<span class="slide-hero-unpublished pubclickable"></span>

						<# }else{ #>

							<span class="slide-hero-published pubclickable"></span>

							<span class="slide-hero-unpublished"></span>

						<# } #>

					<# } #>

				</span>

				<span class="rs-slide-modify-title">{{ data.title }}</span>

			</li>

		</script>

		<?php

	}

	

	public static function add_step_1_markup(){

		$sld = new RevSlider();

		$sliders = $sld->getArrSliders();

		?>

		<div class="revslider-quick-inner-wrapper" style="padding-right:0px;padding-bottom:0px;">

			<select name="revslider-existing-slider" id="revslider-existing-slider">

				<option value="-1" selected="selected"><?php _e('--- Choose Slider ---', 'revslider'); ?></option>

				<?php

				$sl = array();

				$sliders_info = array();

				if(!empty($sliders)){

					foreach($sliders as $slider){

						$alias = $slider->getParam('alias','false');

						$title = $slider->getTitle();

						$type = $slider->getParam('source_type','gallery');

						$slider_type = $slider->getParam('slider-type','standard');

						$active_slide = $slider->getParam('hero_active', -1);

						$sliderID = $slider->getID();

						

						if($type == 'gallery'){

							$slides = $slider->getSlides();

						}elseif($type == 'specific_posts' || $type == 'current_post'){

							$slides = $slider->getSlidesFromPosts();

						}

						

						if(!empty($slides)){

							$sliders_info[$sliderID] = array();

							

							foreach($slides as $slide){

								$bg_extraClass = '';

								$bg_fullstyle = '';

								

								$urlImageForView = $slide->getThumbUrl();

								

								$bgt = $slide->getParam('background_type', 'transparent');

								if($type == 'woocommerce'){

								}

								if($bgt == 'image' || $bgt == 'streamvimeo' || $bgt == 'streamyoutube' || $bgt == 'streaminstagram'){

									switch($type){

										case 'posts':

											$urlImageForView = RS_PLUGIN_URL.'public/assets/assets/sources/post.png';

										break;

										case 'woocommerce':

											$urlImageForView = RS_PLUGIN_URL.'public/assets/assets/sources/wc.png';

										break;

										case 'facebook':

											$urlImageForView = RS_PLUGIN_URL.'public/assets/assets/sources/fb.png';

										break;

										case 'twitter':

											$urlImageForView = RS_PLUGIN_URL.'public/assets/assets/sources/tw.png';

										break;

										case 'instagram':

											$urlImageForView = RS_PLUGIN_URL.'public/assets/assets/sources/ig.png';

										break;

										case 'flickr':

											$urlImageForView = RS_PLUGIN_URL.'public/assets/assets/sources/fr.png';

										break;

										case 'youtube':

											$urlImageForView = RS_PLUGIN_URL.'public/assets/assets/sources/yt.png';

										break;

										case 'vimeo':

											$urlImageForView = RS_PLUGIN_URL.'public/assets/assets/sources/vm.png';

										break;

									}

								}

								

								if ($bgt == 'image' || $bgt == 'vimeo' || $bgt == 'youtube' || $bgt == 'html5' || $bgt == 'streamvimeo' || $bgt == 'streamyoutube' || $bgt == 'streaminstagram'){

									$bg_style = ' ';

									if($slide->getParam('bg_fit', 'cover') == 'percentage'){

										$bg_style .= "background-size: ".$slide->getParam('bg_fit_x', '100').'% '.$slide->getParam('bg_fit_y', '100').'%;';

									}else{

										$bg_style .= "background-size: ".$slide->getParam('bg_fit', 'cover').";";

									}

									if($slide->getParam('bg_position', 'center center') == 'percentage'){

										$bg_style .= "background-position: ".intval($slide->getParam('bg_position_x', '0')).'% '.intval($slide->getParam('bg_position_y', '0')).'%;';

									}else{

										$bg_style .= "background-position: ".$slide->getParam('bg_position', 'center center').";";

									}

									$bg_style .= "background-repeat: ".$slide->getParam('bg_repeat', 'no-repeat').";";

									$bg_fullstyle =' style="background-image:url('.$urlImageForView.');'.$bg_style.'" ';

								}

								

								if ($bgt == 'solid') $bg_fullstyle =' style="background-color:'.$slide->getParam('slide_bg_color', 'transparent').';" ';

								if ($bgt == 'trans') $bg_extraClass = 'mini-transparent';

								if ($slide->getParam('thumb_for_admin', 'off') == "on") $bg_fullstyle =' style="background-image:url('.$slide->getParam('slide_thumb','').');background-size:cover;background-position:center center" ';

								

								$sliders_info[$sliderID][] = array( 'id' => $slide->getID(),

																	'slider_type' => $slider_type,

																	'title' => $slide->getTitle(),

																	'slidertitle' => $title,

																	'slideralias' => $alias,

																	'sliderid' => $sliderID,

																	'state' => $slide->getParam('state', 'published'),

																	'slide_thumb' => $slide->getParam('slide_thumb', ''),

																	'bg_fullstyle' => $bg_fullstyle,

																	'bg_extraClass' => $bg_extraClass,

																	'active_slide' => $active_slide

																	);

																	

								if($active_slide == -1) $active_slide = -99; //do this so that we are hero, only the first slide will be active if no hero slide was yet set

							}

						}

						

						$sl[$type][] = array('alias' => $alias, 'title' => $title, 'id' => $sliderID);

					}

					

					if(!empty($sl)){

						foreach($sl as $type => $slider){

							$mtype = ($type == 'specific_posts') ? 'Specific Posts' : $type;

							$mtype = ($type == 'current_post') ? 'Current Post' : $type;

							echo '<option disabled="disabled">--- '.ucfirst(esc_attr($mtype)).' ---</option>';

							foreach($slider as $values){

								if($values['alias'] != 'false'){

									echo '<option data-sliderid="'.esc_attr($values['id']).'" data-slidertype="'.esc_attr($type).'" value="'.esc_attr($values['alias']).'">'.esc_attr($values['title']).'</option>'."\n";

								}

							}

						}

					}

				}

				?>

			</select>



			<ul id="rs-shortcode-select-wrapper">

				<li class="rs-slider-modify-li rs-slider-modify-new-slider">								

					<a href="<?php echo RevSliderBaseAdmin::getViewUrl(RevSliderAdmin::VIEW_SLIDER); ?>" target="_blank" class="button-primary revgreen" id="rs-create-predefined-slider"><span class="dashicons dashicons-plus"></span><span class="rs-slider-modify-title"><?php _e('Create Slider', 'revslider'); ?></span></a>

				</li>

				<?php

				if(!empty($sliders_info)){

					foreach($sliders_info as $type => $slider){

						foreach($slider as $values){

							?>

							<li id="slider_list_item_<?php echo $values['sliderid']; ?>" class="rs-slider-modify-li" data-sliderid="<?php echo esc_attr($values['sliderid']); ?>" data-slideralias="<?php echo esc_attr($values['slideralias']); ?>">

								<span class="mini-transparent mini-as-bg"></span>

								<div class="rs-slider-modify-container <?php echo $values['bg_extraClass']; ?>"  <?php echo $values['bg_fullstyle']; ?>></div>

								<i class="slide-link-forward eg-icon-forward"></i>



								<span class="rs-slider-modify-title">#<?php echo $values['sliderid'].' '.$values['slidertitle']; ?></span>

							</li>

							<?php

							break;

						}

					}

				}

				?>

				

				<span style="clear:both;width:100%;display:block"></span>



			</ul>

			<span style="clear:both;width:100%;display:block"></span>

			<script type="text/javascript">

				var rev_sliders_info = jQuery.parseJSON(<?php echo RevSliderFunctions::jsonEncodeForClientSide($sliders_info); ?>);

			</script>

		</div>

		<?php

	}

}



/**

 * old classname extends new one (old classnames will be obsolete soon)

 * @since: 5.0

 **/

class RevSlider_TinyBox extends RevSliderTinyBox {}

?>