*/ if (! defined('ABSPATH')) { exit; // Exit if accessed directly. } class Wpdirectorykit_Admin { /** * The ID of this plugin. * * @since 1.0.0 * @access private * @var string $plugin_name The ID of this plugin. */ private $plugin_name; /** * The version of this plugin. * * @since 1.0.0 * @access private * @var string $version The current version of this plugin. */ private $version; /** * Initialize the class and set its properties. * * @since 1.0.0 * @param string $plugin_name The name of this plugin. * @param string $version The version of this plugin. */ public function __construct($plugin_name, $version) { $this->plugin_name = $plugin_name; $this->version = $version; } /** * Register the stylesheets for the admin area. * * @since 1.0.0 */ public function enqueue_styles() { /** * This function is provided for demonstration purposes only. * * An instance of this class should be passed to the run() function * defined in Wpdirectorykit_Loader as all of the hooks are defined * in that particular class. * * The Wpdirectorykit_Loader will then create the relationship * between the defined hooks and the functions defined in this * class. */ wp_register_style('wdk-treefield', WPDIRECTORYKIT_URL . 'public/js/wdk_treefield/treefield.css', array(), '1.0.0'); wp_register_style('wdk-modal', WPDIRECTORYKIT_URL . 'public/css/wdk-modal.css', array(), $this->version, 'all'); wp_register_style('wdk-notify', WPDIRECTORYKIT_URL . 'public/css/wdk-notify.css', array(), $this->version, 'all'); wp_register_style('leaflet', WPDIRECTORYKIT_URL . 'public/js/openstreetmap/leaflet.css', array(), '1.7.1', 'all'); wp_register_style('leaflet-cluster-def', WPDIRECTORYKIT_URL . 'public/js/openstreetmap/MarkerCluster.Default.css', array(), '1.7.1', 'all'); wp_register_style('leaflet-cluster', WPDIRECTORYKIT_URL . 'public/js/openstreetmap/MarkerCluster.css', array(), '1.7.1', 'all'); wp_register_style('select2-select2', WPDIRECTORYKIT_URL . 'public/js/select2/css/select2.min.css', array(), '4.0.13', 'all'); wp_register_style('jquery-confirm', WPDIRECTORYKIT_URL . 'public/js/jquery-confirm/css/jquery-confirm.css', array(), '3.3.4', 'all'); wp_register_style('wdk-treefield-dropdown', WPDIRECTORYKIT_URL . 'public/js/wdk_treefield_dropdown/wdk_treefield_dropdown.css', array(), '1.0', 'all'); wp_enqueue_style($this->plugin_name, plugin_dir_url(__FILE__) . 'css/wpdirectorykit-admin.css', array(), $this->version, 'all'); wp_enqueue_style($this->plugin_name . '-responsive', plugin_dir_url(__FILE__) . 'css/wpdirectorykit-admin-responsive.css', array(), $this->version, 'all'); wp_register_style('jquery-ui', WPDIRECTORYKIT_URL . 'public/css/jquery-ui.css', array(), null); // Register and enqueue Tribute.js style wp_register_style( 'tribute-css', 'https://cdn.jsdelivr.net/npm/tributejs@5.1.3/dist/tribute.css', [], '5.1.3' ); } /** * Register the JavaScript for the admin area. * * @since 1.0.0 */ public function enqueue_scripts() { /** * This function is provided for demonstration purposes only. * * An instance of this class should be passed to the run() function * defined in Wpdirectorykit_Loader as all of the hooks are defined * in that particular class. * * The Wpdirectorykit_Loader will then create the relationship * between the defined hooks and the functions defined in this * class. */ // Register and enqueue Tribute.js script wp_register_script( 'tribute-js', 'https://cdn.jsdelivr.net/npm/tributejs@5.1.3/dist/tribute.min.js', [], '5.1.3', true ); wp_register_script('wdk-treefield', WPDIRECTORYKIT_URL . 'public/js/wdk_treefield/treefield.js', array('jquery'), false, false); wp_register_script('wpmediaelement_file', WPDIRECTORYKIT_URL . 'admin/js/jquery.wpmediaelement_file.js', array('jquery'), false, false); wp_register_script('wdk-modal', WPDIRECTORYKIT_URL . 'public/js/wdk-modal.js', array('jquery'), $this->version, false); wp_register_script('wdk-notify', WPDIRECTORYKIT_URL . 'public/js/wdk-notify.js', array('jquery'), $this->version, false); wp_register_script('leaflet', WPDIRECTORYKIT_URL . 'public/js/openstreetmap/leaflet.js', array('jquery'), '1.7.1', false); wp_register_script('leaflet-cluster', WPDIRECTORYKIT_URL . 'public/js/openstreetmap/leaflet.markercluster.js', array('jquery'), '1.7.1', false); wp_register_script('select2-select2', WPDIRECTORYKIT_URL . 'public/js/select2/js/select2.min.js', array('jquery'), '4.0.13', false); wp_register_script('wdk-select2', WPDIRECTORYKIT_URL . 'public/js/wdk-select2.js', array('jquery'), '4.0.13', false); $params = array( 'ajax_url' => admin_url('admin-ajax.php'), 'text' => array( 'errorLoading' => esc_html__('The results could not be loaded.', 'wpdirectorykit'), 'loadingMore' => esc_html__('Loading more results…', 'wpdirectorykit'), 'noResults' => esc_html__('No results found', 'wpdirectorykit'), 'searching' => esc_html__('Searching…', 'wpdirectorykit'), 'removeAllItems' => esc_html__('Remove all items', 'wpdirectorykit'), "read_more"=> esc_html__("Read More", 'wpdirectorykit'), "read_less"=> esc_html__("Read Less", 'wpdirectorykit'), ), 'wpApiSettings' => [ 'root'=> esc_url_raw(rest_url()), 'nonce'=> wp_create_nonce('wp_rest'), 'wdk_secure_nonce'=> wp_create_nonce('wdk_secure_ajax'), ] ); wp_localize_script('wdk-select2', 'wdk_select2_script_parameters', $params); wp_register_script('jquery-confirm', WPDIRECTORYKIT_URL . 'public/js/jquery-confirm/js/jquery-confirm.js', array('jquery'), '3.3.4', false); wp_register_script('wdk-dependfields-submitform', WPDIRECTORYKIT_URL . 'public/js/wdk-dependfields-submitform.js', array('jquery'), false, false); wp_register_script('wdk-treefield-dropdown', WPDIRECTORYKIT_URL . 'public/js/wdk_treefield_dropdown/wdk_treefield_dropdown.js', array('jquery'), '1.0', false); wp_localize_script('wdk-treefield-dropdown', 'script_parameters', $params); wp_localize_script('wdk-treefield-dropdown', 'wdk_script_parameters', $params); wp_register_script('wdk-dependfields-edit', plugin_dir_url(__FILE__) . 'js/wdk-dependfields-edit.js', array('jquery'), $this->version, false); $params = array( 'ajax_url' => admin_url('admin-ajax.php'), ); wp_localize_script('wdk-dependfields-edit', 'script_dependfields_parameters', $params); $params = array( 'ajax_url' => admin_url('admin-ajax.php'), 'format_date' => wdk_convert_date_format_js(get_option('date_format')), 'format_datetime' => wdk_convert_date_format_js(get_option('date_format') . ' ' . get_option('time_format')), 'format_date_js' => wdk_convert_date_format_jquery(get_option('date_format')), 'format_datetime_js' => wdk_convert_date_format_jquery(get_option('date_format') . ' ' . get_option('time_format')), 'text' => array( "read_more"=> esc_html__("Read More", 'wpdirectorykit'), "read_less"=> esc_html__("Read Less", 'wpdirectorykit'), ), 'wpApiSettings' => [ 'root'=> esc_url_raw(rest_url()), 'nonce'=> wp_create_nonce('wp_rest'), 'wdk_secure_nonce'=> wp_create_nonce('wdk_secure_ajax'), ] ); wp_enqueue_script($this->plugin_name, plugin_dir_url(__FILE__) . 'js/wpdirectorykit-admin.js', array('jquery'), $this->version, false); wp_localize_script($this->plugin_name, 'script_parameters', $params); wp_localize_script($this->plugin_name, 'wdk_script_parameters', $params); } /** * Admin AJAX */ public function ajax_admin() { global $Winter_MVC_WDK; $page = ''; $function = ''; if (isset($_POST['page'])) $page = sanitize_text_field($_POST['page']); if (isset($_POST['function'])) $function = sanitize_text_field($_POST['function']); $Winter_MVC_WDK->load_controller($page, $function, array()); } /** * Admin Page Display */ public function admin_page_display() { global $Winter_MVC_WDK, $submenu, $menu; $page = ''; $function = ''; if (isset($_GET['page'])) $page = sanitize_text_field(wp_unslash($_GET['page'])); if (isset($_GET['function'])) $function = sanitize_text_field(wp_unslash($_GET['function'])); if (substr($function, 0, 1) == '_') { exit(esc_html__('blocked for public', 'wpdirectorykit')); } $Winter_MVC_WDK->load_controller($page, $function, array()); } private function multilingual_register_strings() { if (!function_exists('PLL')) return; global $Winter_MVC_WDK; $Winter_MVC_WDK->model('field_m'); $Winter_MVC_WDK->model('category_m'); $Winter_MVC_WDK->model('location_m'); $fields = $Winter_MVC_WDK->field_m->get(); foreach ($fields as $field) { if (!empty($field->field_label)) pll_register_string('wpdirectorykit', $field->field_label, 'wdk-fields'); if (!empty($field->values_list)) pll_register_string('wpdirectorykit', $field->values_list, 'wdk-fields'); if (!empty($field->hint)) pll_register_string('wpdirectorykit', $field->hint, 'wdk-fields'); } $categories = $Winter_MVC_WDK->category_m->get_tree_table(); foreach ($categories as $category) { pll_register_string('wpdirectorykit', $category->category_title, 'wdk-categories'); } $locations = $Winter_MVC_WDK->location_m->get_tree_table(); foreach ($locations as $location) { pll_register_string('wpdirectorykit', $location->location_title, 'wdk-locations'); } } /** * To add Plugin Menu and Settings page */ public function plugin_menu() { ob_start(); $this->multilingual_register_strings(); //require_once WPDIRECTORYKIT_PATH . 'vendor/boo-settings-helper/class-boo-settings-helper.php'; add_menu_page( __('Directory Kit', 'wpdirectorykit'), __('Directory Kit', 'wpdirectorykit'), 'wdk_listings_manage', 'wdk', array($this, 'admin_page_display'), //plugin_dir_url( __FILE__ ) . 'resources/logo.png', 'dashicons-category', 28 ); add_submenu_page( 'wdk', __('Listings', 'wpdirectorykit'), __('Listings', 'wpdirectorykit'), 'wdk_listings_manage', 'wdk', array($this, 'admin_page_display') ); add_submenu_page( 'wdk', __('Add Listing', 'wpdirectorykit'), __('Add Listing', 'wpdirectorykit'), 'wdk_listings_manage', 'wdk_listing', array($this, 'admin_page_display') ); add_submenu_page( 'wdk', __('Fields', 'wpdirectorykit'), __('Fields', 'wpdirectorykit'), 'wdk_listings_manage', 'wdk_fields', array($this, 'admin_page_display') ); if (get_option('wdk_is_category_enabled', FALSE)) add_submenu_page( 'wdk', __('Categories', 'wpdirectorykit'), __('Categories', 'wpdirectorykit'), 'wdk_listings_manage', 'wdk_category', array($this, 'admin_page_display') ); if (get_option('wdk_is_location_enabled', FALSE)) add_submenu_page( 'wdk', __('Locations', 'wpdirectorykit'), __('Locations', 'wpdirectorykit'), 'wdk_listings_manage', 'wdk_location', array($this, 'admin_page_display') ); add_submenu_page( 'wdk', __('Search Form', 'wpdirectorykit'), __('Search Form', 'wpdirectorykit'), 'wdk_listings_manage', 'wdk_searchform', array($this, 'admin_page_display') ); add_submenu_page( 'wdk', __('Result Card', 'wpdirectorykit'), __('Result Card', 'wpdirectorykit'), 'wdk_listings_manage', 'wdk_resultitem', array($this, 'admin_page_display') ); add_submenu_page( 'wdk', __('Change Currency', 'wpdirectorykit'), __('Change Currency', 'wpdirectorykit'), 'wdk_listings_manage', 'wdk_change_currency', array($this, 'admin_page_display') ); add_submenu_page( 'wdk', __('Messages', 'wpdirectorykit'), __('Messages', 'wpdirectorykit'), 'wdk_listings_manage', 'wdk_messages', array($this, 'admin_page_display') ); add_submenu_page( 'wdk', __('Settings', 'wpdirectorykit'), __('Settings', 'wpdirectorykit'), 'wdk_listings_manage', 'wdk_settings', array($this, 'admin_page_display') ); add_submenu_page( 'wdk', __('Documentation', 'wpdirectorykit'), __('Documentation', 'wpdirectorykit'), 'wdk_listings_manage', 'https://wpdirectorykit.com/documentation' ); //if(!file_exists(WPDIRECTORYKIT_PATH . 'premium_functions.php') || defined('WDK_FS_DISABLE')) //{ if (!file_exists(WP_PLUGIN_DIR . '/wdk-currency-conversion') || !is_plugin_active('wdk-currency-conversion/wdk-currency-conversion.php')) add_submenu_page( 'wdk', __('Currencies Addon', 'wpdirectorykit'), __('Currencies Addon', 'wpdirectorykit'), 'wdk_listings_manage', 'wdk_addons_currencies', array($this, 'admin_page_display') ); if (!file_exists(WP_PLUGIN_DIR . '/wdk-membership') || !is_plugin_active('wdk-membership/wdk-membership.php')) add_submenu_page( 'wdk', __('Membership Addon', 'wpdirectorykit'), __('Membership Addon', 'wpdirectorykit'), 'wdk_listings_manage', 'wdk_addons_membership', array($this, 'admin_page_display') ); if (!file_exists(WP_PLUGIN_DIR . '/wdk-bookings') || !is_plugin_active('wdk-bookings/wdk-bookings.php')) add_submenu_page( 'wdk', __('Booking Addon', 'wpdirectorykit'), __('Booking Addon', 'wpdirectorykit'), 'wdk_listings_manage', 'wdk_addons_bookings', array($this, 'admin_page_display') ); add_submenu_page( 'wdk', __('More Addons', 'wpdirectorykit'), __('More Addons', 'wpdirectorykit'), 'wdk_listings_manage', 'wdk_addons', array($this, 'admin_page_display') ); add_submenu_page( 'wdk', __('Support Forum', 'wpdirectorykit'), __('Support Forum', 'wpdirectorykit'), 'wdk_listings_manage', 'https://wordpress.org/support/plugin/wpdirectorykit/' ); add_submenu_page( 'wdk', __('Contact', 'wpdirectorykit'), __('Contact', 'wpdirectorykit'), 'wdk_listings_manage', 'https://wpdirectorykit.com/contact.html' ); //} $current_theme = wp_get_theme(); if (defined('WP_DEBUG') && WP_DEBUG && $current_theme->get('AuthorURI') == 'https://wpdirectorykit.com') add_submenu_page( 'tools.php', esc_html__('WDK Demo Import', 'wpdirectorykit'), esc_html__('WDK Demo Import', 'wpdirectorykit'), 'wdk_listings_manage', 'wdk_demo_import', array($this, 'admin_page_display') ); } }