<?php
if (!defined('ABSPATH'))
die('No direct access allowed');
final class WOOF_SLIDEOUT extends WOOF_EXT {
public $type = 'application';
public $folder_name = 'slideout';
public $html_type_dynamic_recount_behavior = 'none';
public $options = array();
public function __construct() {
parent::__construct();
$this->init();
}
public function get_ext_path() {
return plugin_dir_path(__FILE__);
}
public function get_ext_override_path() {
return get_stylesheet_directory() . DIRECTORY_SEPARATOR . "woof" . DIRECTORY_SEPARATOR . "ext" . DIRECTORY_SEPARATOR . $this->folder_name . DIRECTORY_SEPARATOR;
}
public function get_ext_link() {
return plugin_dir_url(__FILE__);
}
public function init() {
add_action('woof_print_applications_tabs_anvanced', array($this, 'woof_print_applications_tabs'), 10, 1);
add_action('woof_print_applications_tabs_content_advanced', array($this, 'woof_print_applications_tabs_content'), 10, 1);
add_action('wp_footer', array($this, 'wp_footer'), 10);
add_shortcode("woof_slideout", array($this, "woof_slideout"));
add_action('wp_ajax_woof_slideout_shortcode_gen', array($this, 'generate_shortcode_ajax'));
$this->options = array(
'slideout_img' => array(
'type' => 'textinput',
'default' => 'woo2',
'title' => esc_html__('Image', 'woocommerce-products-filter'),
'placeholder' => 'Select image',
'description' => esc_html__('', 'woocommerce-products-filter')
)
);
}
public function wp_head() {
}
public function wp_footer() {
wp_enqueue_script('woof-slideout-js', $this->get_ext_link() . 'js/jquery.tabSlideOut.js', array('jquery'), WOOF_VERSION);
wp_enqueue_style('woof-slideout-tab-css', $this->get_ext_link() . 'css/jquery.tabSlideOut.css', [], WOOF_VERSION);
wp_enqueue_style('woof-slideout-css', $this->get_ext_link() . 'css/slideout.css', [], WOOF_VERSION);
wp_enqueue_script('woof-slideout-init', $this->get_ext_link() . 'js/slideout.js', array('jquery'), WOOF_VERSION);
if (isset($this->woof_settings['woof_slideout_show']) AND $this->woof_settings['woof_slideout_show'] AND is_woocommerce()) {
$this->woof_settings['woof_slideout_class'] = 'woof_slideout_default';
if (!isset($this->woof_settings['woof_slideout_width']) OR!$this->woof_settings['woof_slideout_width']) {
$this->woof_settings['woof_slideout_width'] = "350";
$this->woof_settings['woof_slideout_width_t'] = "px";
}
$shortcode = $this->generate_shortcode($this->woof_settings, "[woof]");
echo do_shortcode(wp_kses_post(wp_unslash($shortcode)));
}
$css_data = '';
if (WOOF_REQUEST::get('woof_slideout_styles')) {
if (isset(WOOF_REQUEST::get('woof_slideout_styles')['image_w']) AND isset(WOOF_REQUEST::get('woof_slideout_styles')['image_h'])) {
$style = "background-size: " . intval(WOOF_REQUEST::get('woof_slideout_styles')['image_w']) . "px " . intval(WOOF_REQUEST::get('woof_slideout_styles')['image_h']) . "px !important;";
$css_data = ".woof-slide-out-div .woof-handle{
" . $style . "
}";
}
if (isset(WOOF_REQUEST::get('woof_slideout_styles')['key']) AND isset(WOOF_REQUEST::get('woof_slideout_styles')['height']) AND isset(WOOF_REQUEST::get('woof_slideout_styles')['width'])) {
$height = esc_attr(WOOF_REQUEST::get('woof_slideout_styles')['height']);
$key = sanitize_key(WOOF_REQUEST::get('woof_slideout_styles')['key']);
$width = esc_attr(WOOF_REQUEST::get('woof_slideout_styles')['width']);
$style_cont = "";
if ($height != "auto") {
$style_cont .= "height:" . $height . ";";
}
if ($width != "auto") {
$style_cont .= "width:" . $width . ";";
}
if ($style_cont) {
$css_data .= PHP_EOL . ".woof-slide-content.woof-slide-" . $key . "{
" . $style_cont . "
}";
}
}
}
if ($css_data) {
wp_add_inline_style('woof-slideout-css', $css_data);
}
}
public function woof_print_applications_tabs() {
?>
<li>
<a href="#tabs-slideout">
<span class="icon-truck"></span>
<span><?php esc_html_e("Slideout", 'woocommerce-products-filter') ?></span>
</a>
</li>
<?php
}
public function woof_print_applications_tabs_content() {
//***
$data = array();
$data['woof_settings'] = $this->woof_settings;
wp_enqueue_script('woof_slideout_admin', $this->get_ext_link() . 'js/admin.js', array(), WOOF_VERSION);
wp_enqueue_style('woof_slideout_admin', $this->get_ext_link() . 'css/admin.css', array(), WOOF_VERSION);
woof()->render_html_e($this->get_ext_path() . 'views/tabs_content.php', $data);
}
public function woof_slideout($atts, $content) {
$image = $this->get_ext_link() . 'img' . DIRECTORY_SEPARATOR . 'filter.png';
if (isset($this->woof_settings['woof_slideout_img']) AND $this->woof_settings['woof_slideout_img']) {
$image = $this->woof_settings['woof_slideout_img'];
}
$atts = shortcode_atts(array(
'image' => $image,
'image_h' => (isset($this->woof_settings['woof_slideout_img_h'])) ? $this->woof_settings['woof_slideout_img_h'] : 50,
'image_w' => (isset($this->woof_settings['woof_slideout_img_w'])) ? $this->woof_settings['woof_slideout_img_w'] : 50,
'action' => 'click',
'location' => 'right',
'speed' => '100',
'offset' => '100px',
'onloadslideout' => true,
'mobile_behavior' => '0',
'width' => 'auto',
'height' => 'auto',
'text' => esc_html__('Filter', 'woocommerce-products-filter'),
'class' => ""
), $atts);
if (!empty($content)) {
$atts['content'] = $content;
} else {
$atts['content'] = "[woof]";
}
$show = true;
if ($atts['mobile_behavior'] == 1 AND!wp_is_mobile()) {
$show = false;
}
if ($atts['mobile_behavior'] == 2 AND wp_is_mobile()) {
$show = false;
}
$atts['key'] = uniqid("woof_");
WOOF_REQUEST::set('woof_slideout_styles', array(
'key' => $atts['key'],
'image_w' => $atts['image_w'],
'image_h' => $atts['image_h'],
'height' => $atts['height'],
'width' => $atts['width'],
));
if ($show) {
if (file_exists($this->get_ext_override_path() . 'views' . DIRECTORY_SEPARATOR . 'shortcodes' . DIRECTORY_SEPARATOR . 'woof_slideout.php')) {
return woof()->render_html($this->get_ext_override_path() . 'views' . DIRECTORY_SEPARATOR . 'shortcodes' . DIRECTORY_SEPARATOR . 'woof_slideout.php', $atts);
}
return woof()->render_html($this->get_ext_path() . 'views' . DIRECTORY_SEPARATOR . 'shortcodes' . DIRECTORY_SEPARATOR . 'woof_slideout.php', $atts);
} else {
return "";
}
}
public function generate_shortcode($attr, $content = "") {
$deff_attr = array(
'woof_slideout_img' => "image=",
'woof_slideout_img_h' => "image_h=",
'woof_slideout_img_w' => "image_w=",
'woof_slideout_position' => "location=",
'woof_slideout_speed' => "speed=",
'woof_slideout_action' => "action=",
'woof_slideout_offset' => "offset=",
'woof_slideout_open' => "onloadslideout=",
'woof_slideout_mobile' => "mobile_behavior=",
'woof_slideout_height' => "height=",
'woof_slideout_width' => "width=",
'woof_slideout_class' => "class="
);
if (isset($attr['woof_slideout_type_btn']) AND $attr['woof_slideout_type_btn'] == 1) {
$attr['woof_slideout_img'] = 'null';
$deff_attr['woof_slideout_txt'] = "text=";
}
foreach ($deff_attr as $key => $data) {
if (isset($attr[$key]) AND!empty($attr[$key])) {
$deff_attr[$key] .= $attr[$key];
if ($key == "woof_slideout_offset") {
$type = "px";
if (isset($attr[$key . "_t"]) AND!empty($attr[$key] . "_t")) {
$type = $attr[$key . "_t"];
}
$deff_attr[$key] .= $type;
}
if ($key == "woof_slideout_width") {
$type = "px";
if (isset($attr[$key . "_t"]) AND!empty($attr[$key] . "_t")) {
$type = $attr[$key . "_t"];
}
$deff_attr[$key] .= $type;
}
if ($key == "woof_slideout_height") {
$type = "px";
if (isset($attr[$key . "_t"]) AND!empty($attr[$key] . "_t")) {
$type = $attr[$key . "_t"];
}
$deff_attr[$key] .= $type;
}
} else {
unset($deff_attr[$key]);
}
}
return "[woof_slideout " . implode(" ", $deff_attr) . " ]" . $content . "[/woof_slideout]";
}
public function generate_shortcode_ajax() {
$shortcode = $this->generate_shortcode(wc_clean($_POST));
die($shortcode);
}
}
WOOF_EXT::$includes['applications']['slideout'] = new WOOF_SLIDEOUT();