<?php class Woofilters_WidgetWpf extends ModuleWpf { public function init() { parent::init(); add_action('widgets_init', array($this, 'registerWidget')); if (did_action('elementor/loaded')) { add_action('elementor/widgets/register', array($this, 'registerElementorWidget')); } add_action( 'elementor/editor/before_enqueue_scripts', array($this, 'woofiltersElementorEditorScripts') ); } public function registerWidget() { require_once __DIR__ . '/elementor/widget.php'; return register_widget('WpfWoofiltersWidget'); } private function includeElementorWidgetsFiles() { require_once __DIR__ . '/elementor/woofilters.php'; } public function registerElementorWidget() { $this->includeElementorWidgetsFiles(); \Elementor\Plugin::instance()->widgets_manager->register( new Woofilters_ElementorWidgetWpf() ); } public function woofiltersElementorEditorScripts() { if ( \Elementor\Plugin::$instance->editor->is_edit_mode() ) { $isPro = FrameWpf::_()->isPro(); $modPath = FrameWpf::_()->getModule('woofilters')->getModPath(); $modPathW = FrameWpf::_()->getModule('woofilters_widget')->getModPath(); FrameWpf::_()->getModule('templates')->loadCoreJs(); FrameWpf::_()->getModule('templates')->loadAdminCoreJs(); wp_enqueue_style( 'wp-color-picker' ); FrameWpf::_()->getModule('templates')->loadCoreCss(); FrameWpf::_()->getModule('templates')->loadChosenSelects(); FrameWpf::_()->addScript('notify-js', WPF_JS_PATH . 'notify.js', array(), false, true); FrameWpf::_()->addScript('chosen.order.jquery.min.js', $modPath . 'js/chosen.order.jquery.min.js'); FrameWpf::_()->addJSVar('wp-color-picker', 'wpColorPickerL10n', array()); FrameWpf::_()->addScript('admin.filters', $modPath . 'js/admin.woofilters.js', array('wp-color-picker')); FrameWpf::_()->addScript('admin.wp.colorpicker.alhpa.js', WPF_JS_PATH . 'admin.wp.colorpicker.alpha.js', array('wp-color-picker'), WPF_VERSION); FrameWpf::_()->addStyle('admin.filters', $modPath . 'css/admin.woofilters.css'); FrameWpf::_()->addStyle('frontend.multiselect', $modPath . 'css/frontend.multiselect.css'); FrameWpf::_()->addScript('frontend.multiselect', $modPath . 'js/frontend.multiselect.js'); if ( $isPro ) { $modPathPRO = FrameWpf::_()->getModule('woofilterpro')->getModPath(); $modDirPRO = FrameWpf::_()->getModule('woofilterpro')->getModDir(); FrameWpf::_()->addScript('admin.filters.pro', $modPathPRO . 'js/admin.woofilters.pro.js', array('jquery')); FrameWpf::_()->addStyle('admin.filters.pro', $modPathPRO . 'css/admin.woofilters.pro.css'); $jsData = file_exists($modDirPRO . 'files/fontAwesomeList.txt') ? file($modDirPRO . 'files/fontAwesomeList.txt') : array(); if (!empty($jsData)) { $jsData = array_map(function( $item ) { return 'fa-' . trim($item); }, $jsData); } FrameWpf::_()->addJSVar('admin.filters.pro', 'FONT_AWESOME_DATA', $jsData); } FrameWpf::_()->addStyle('admin.woofilters.elementor', $modPathW . 'css/admin.woofilters.elementor.css', false, WPF_VERSION); FrameWpf::_()->addScript('admin.woofilters.elementor', $modPathW . 'js/admin.woofilters.elementor.js', array('admin.filters'), WPF_VERSION, true); FrameWpf::_()->addJSVar('admin.filters', 'isElementorEditMode', '1'); FrameWpf::_()->addJSVar('admin.filters', 'url', admin_url('admin-ajax.php')); list( $filtersOpts, $filtersSettings ) = $this->getFiltersSettings(); FrameWpf::_()->addJSVar('admin.filters', 'filtersSettings', $filtersSettings); FrameWpf::_()->addJSVar('admin.filters', 'wpfNonce', wp_create_nonce('wpf-save-nonce')); } } protected function getFiltersSettings() { $filters = FrameWpf::_()->getModule('woofilters')->getModel()->getFromTbl(); $filtersOpts = array(); $filtersOpts[0] = 'Select'; $filtersOpts['new'] = 'Create New'; $filtersSettings = array(); foreach ($filters as $filter) { $filtersOpts[ $filter['id'] ] = $filter['title']; $filtersSettings[ $filter['id'] ] = unserialize($filter['setting_data']); } return array( $filtersOpts, $filtersSettings ); } }