| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422 |
- <?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('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 {}
- ?>
|