| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218 |
- <?php
- /**
- * Slider Revolution
- *
- * @package Essential_Grid
- * @author ThemePunch <info@themepunch.com>
- * @link http://revolution.themepunch.com/
- * @copyright 2015 ThemePunch
- */
- /**
- * @package RevSliderExtension
- * @author ThemePunch <info@themepunch.com>
- */
-
- if( !defined( 'ABSPATH') ) exit();
- class RevSliderExtension {
-
- public function __construct() {
-
- $this->init_essential_grid_extensions();
-
- }
-
-
- /***************************
- * Setup part for Revslider inclusion into Essential Grid
- ***************************/
-
- /**
- * Do all initializations for RevSlider integration
- */
- public function init_essential_grid_extensions(){
-
- if(!class_exists('Essential_Grid')) return false; //only add if Essential Grid is installed
-
- add_filter('essgrid_set_ajax_source_order', array($this, 'add_slider_to_eg_ajax'));
- add_filter('essgrid_handle_ajax_content', array($this, 'set_slider_values_to_eg_ajax'), 10, 4);
- add_action('essgrid_add_meta_options', array($this, 'add_eg_additional_meta_field'));
- add_action('essgrid_save_meta_options', array($this, 'save_eg_additional_meta_field'), 10, 2);
-
- //only do on frontend
-
- add_action('admin_head', array($this, 'add_eg_additional_inline_javascript'));
- add_action('wp_head', array($this, 'add_eg_additional_inline_javascript'));
-
- }
-
-
- /**
- * Add Slider to the List of choosable media
- */
- public function add_slider_to_eg_ajax($media){
-
- $media['revslider'] = array('name' => __('Slider Revolution', 'revslider'), 'type' => 'ccw');
-
- return $media;
- }
-
-
- /**
- * Add Slider to the List of choosable media
- */
- public function set_slider_values_to_eg_ajax($handle, $media_sources, $post, $grid_id){
-
- if($handle !== 'revslider') return false;
-
- $slider_source = '';
-
- $values = get_post_custom($post['ID']);
-
- if(isset($values['eg_sources_revslider'])){
- if(isset($values['eg_sources_revslider'][0]))
- $slider_source = (isset($values['eg_sources_revslider'][0])) ? $values['eg_sources_revslider'][0] : '';
- else
- $slider_source = (isset($values['eg_sources_revslider'])) ? $values['eg_sources_revslider'] : '';
- }
-
- if($slider_source === ''){
- return false;
- }else{
- return ' data-ajaxtype="'.$handle.'" data-ajaxsource="'.$slider_source.'"';
- }
-
- }
-
-
- /**
- * Adds custom meta field into the essential grid meta box for post/pages
- */
- public function add_eg_additional_meta_field($values){
-
- $sld = new RevSlider();
- $sliders = $sld->getArrSliders();
- $shortcodes = array();
- if(!empty($sliders)){
- $first = true;
- foreach($sliders as $slider){
- $name = $slider->getParam('shortcode','false');
- if($name != 'false'){
- $shortcodes[$slider->getID()] = $name;
- $first = false;
- }
- }
- }
-
- $selected_slider = (isset($values['eg_sources_revslider'])) ? $values['eg_sources_revslider'] : '';
- if($selected_slider == ''){
- $selected_slider = array();
- $selected_slider[0] = '';
- }
- ?>
- <p>
- <strong style="font-size:14px"><?php _e('Choose Revolution Slider', 'revslider'); ?></strong>
- </p>
- <p>
- <select name="eg_sources_revslider" id="eg_sources_revslider">
- <option value=""<?php selected($selected_slider[0], ''); ?>><?php _e('--- Choose Slider ---', 'revslider'); ?></option>
- <?php
- if(!empty($shortcodes)){
- foreach($shortcodes as $id => $name){
- ?>
- <option value="<?php echo $id; ?>"<?php selected($selected_slider[0], $id); ?>><?php echo $name; ?></option>
- <?php
- }
- }
- ?>
- </select>
- </p>
- <?php
-
- }
-
- /**
- * Adds custom meta field into the essential grid meta box for post/pages
- */
- public function save_eg_additional_meta_field($metas, $post_id){
-
- if(isset($metas['eg_sources_revslider']))
- update_post_meta($post_id, 'eg_sources_revslider', $metas['eg_sources_revslider']);
-
- }
-
-
- /**
- * Adds needed javascript to the DOM
- */
- public function add_eg_additional_inline_javascript(){
- ?>
- <script type="text/javascript">
- var ajaxRevslider;
-
- jQuery(document).ready(function() {
- // CUSTOM AJAX CONTENT LOADING FUNCTION
- ajaxRevslider = function(obj) {
-
- // obj.type : Post Type
- // obj.id : ID of Content to Load
- // obj.aspectratio : The Aspect Ratio of the Container / Media
- // obj.selector : The Container Selector where the Content of Ajax will be injected. It is done via the Essential Grid on Return of Content
-
- var content = "";
- data = {};
-
- data.action = 'revslider_ajax_call_front';
- data.client_action = 'get_slider_html';
- data.token = '<?php echo wp_create_nonce("RevSlider_Front"); ?>';
- data.type = obj.type;
- data.id = obj.id;
- data.aspectratio = obj.aspectratio;
-
- // SYNC AJAX REQUEST
- jQuery.ajax({
- type:"post",
- url:"<?php echo admin_url('admin-ajax.php'); ?>",
- dataType: 'json',
- data:data,
- async:false,
- success: function(ret, textStatus, XMLHttpRequest) {
- if(ret.success == true)
- content = ret.data;
- },
- error: function(e) {
- console.log(e);
- }
- });
-
- // FIRST RETURN THE CONTENT WHEN IT IS LOADED !!
- return content;
- };
-
- // CUSTOM AJAX FUNCTION TO REMOVE THE SLIDER
- var ajaxRemoveRevslider = function(obj) {
- return jQuery(obj.selector+" .rev_slider").revkill();
- };
- // EXTEND THE AJAX CONTENT LOADING TYPES WITH TYPE AND FUNCTION
- var extendessential = setInterval(function() {
- if (jQuery.fn.tpessential != undefined) {
- clearInterval(extendessential);
- if(typeof(jQuery.fn.tpessential.defaults) !== 'undefined') {
- jQuery.fn.tpessential.defaults.ajaxTypes.push({type:"revslider",func:ajaxRevslider,killfunc:ajaxRemoveRevslider,openAnimationSpeed:0.3});
- // type: Name of the Post to load via Ajax into the Essential Grid Ajax Container
- // func: the Function Name which is Called once the Item with the Post Type has been clicked
- // killfunc: function to kill in case the Ajax Window going to be removed (before Remove function !
- // openAnimationSpeed: how quick the Ajax Content window should be animated (default is 0.3)
- }
- }
- },30);
- });
- </script>
- <?php
- }
-
- }
- ?>
|