'true', ]; /** * [$settings_page_config description] * @var [type] */ public $settings_page_config = []; /** * Init page */ public function init() { add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_scripts' ), 0 ); add_action( 'admin_menu', array( $this, 'register_page' ), 99 ); foreach ( glob( jet_elements()->plugin_path( 'includes/addons/' ) . '*.php' ) as $file ) { $data = get_file_data( $file, array( 'class'=>'Class', 'name' => 'Name', 'slug'=>'Slug' ) ); $slug = basename( $file, '.php' ); $this->avaliable_widgets[ $slug ] = $data['name']; } $this->generate_frontend_config_data(); add_action( 'jet-styles-manager/compatibility/register-plugin', array( $this, 'register_for_styles_manager' ) ); } /** * Register jet-elements plugin for styles manager * * @param object $compatibility_manager JetStyleManager->compatibility instance * @return void */ public function register_for_styles_manager( $compatibility_manager ) { $compatibility_manager->register_plugin( 'jet-elements', (int) $this->get( 'widgets_load_level', 100 ) ); } /** * [generate_frontend_config_data description] * @return [type] [description] */ public function generate_frontend_config_data() { $default_active_widgets = []; foreach ( $this->avaliable_widgets as $slug => $name ) { $avaliable_widgets[] = [ 'label' => $name, 'value' => $slug, ]; $default_active_widgets[ $slug ] = 'true'; } $active_widgets = $this->get( 'avaliable_widgets', $default_active_widgets ); $avaliable_extensions = [ [ 'label' => esc_html__( 'Section Parallax Extension', 'jet-elements' ), 'value' => 'section_parallax', ], ]; $active_extensions = $this->get( 'avaliable_extensions', $this->default_avaliable_extensions ); $rest_api_url = apply_filters( 'jet-elements/rest/frontend/url', get_rest_url() ); $this->settings_page_config = [ 'messages' => [ 'saveSuccess' => esc_html__( 'Saved', 'jet-elements' ), 'saveError' => esc_html__( 'Error', 'jet-elements' ), ], 'settingsApiUrl' => $rest_api_url . 'jet-elements-api/v1/plugin-settings', 'settingsData' => [ 'svg_uploads' => [ 'value' => $this->get( 'svg_uploads', 'enabled' ), ], 'jet_templates' => [ 'value' => $this->get( 'jet_templates', 'enabled' ), ], 'widgets_load_level' => [ 'value' => $this->get( 'widgets_load_level', 100 ), 'options' => [ [ 'label' => 'None', 'value' => 0, ], [ 'label' => 'Low', 'value' => 25, ], [ 'label' => 'Medium', 'value' => 50, ], [ 'label' => 'Advanced', 'value' => 75, ], [ 'label' => 'Full', 'value' => 100, ], ], ], 'api_key' => [ 'value' => $this->get( 'api_key', '' ), ], 'disable_api_js' => [ 'value' => $this->get( 'disable_api_js', [ 'disable' => 'false' ] ), ], 'mailchimp-api-key' => [ 'value' => $this->get( 'mailchimp-api-key', '' ), ], 'mailchimp-list-id' => [ 'value' => $this->get( 'mailchimp-list-id', '' ), ], 'mailchimp-double-opt-in' => [ 'value' => $this->get( 'mailchimp-double-opt-in', false ), ], 'insta_access_token' => [ 'value' => $this->get( 'insta_access_token', '' ), ], 'weather_api_key' => [ 'value' => $this->get( 'weather_api_key', '' ), ], 'avaliable_widgets' => [ 'value' => $active_widgets, 'options' => $avaliable_widgets, ], 'avaliable_extensions' => [ 'value' => $active_extensions, 'options' => $avaliable_extensions, ], ], ]; } /** * Initialize page builder module if required * * @return void */ public function admin_enqueue_scripts() { if ( isset( $_REQUEST['page'] ) && $this->key === $_REQUEST['page'] ) { $module_data = jet_elements()->module_loader->get_included_module_data( 'cherry-x-vue-ui.php' ); $ui = new CX_Vue_UI( $module_data ); $ui->enqueue_assets(); wp_enqueue_style( 'jet-elements-admin-css', jet_elements()->plugin_url( 'assets/css/jet-elements-admin.css' ), false, jet_elements()->get_version() ); wp_enqueue_script( 'jet-elements-admin-script', jet_elements()->plugin_url( 'assets/js/jet-elements-admin.js' ), array( 'cx-vue-ui' ), jet_elements()->get_version(), true ); wp_localize_script( 'jet-elements-admin-script', 'JetElementsSettingsPageConfig', apply_filters( 'jet-elements/admin/settings-page-config', $this->settings_page_config ) ); } } /** * Return settings page URL * * @return string */ public function get_settings_page_link() { return add_query_arg( array( 'page' => $this->key, ), esc_url( admin_url( 'admin.php' ) ) ); } /** * [get description] * @param [type] $setting [description] * @param boolean $default [description] * @return [type] [description] */ public function get( $setting, $default = false ) { if ( null === $this->settings ) { $this->settings = get_option( $this->key, array() ); } return isset( $this->settings[ $setting ] ) ? $this->settings[ $setting ] : $default; } /** * Register add/edit page * * @return void */ public function register_page() { add_submenu_page( 'jet-dashboard', esc_html__( 'JetElements Settings', 'jet-elements' ), esc_html__( 'JetElements Settings', 'jet-elements' ), 'manage_options', $this->key, array( $this, 'render_page' ) ); } /** * Render settings page * * @return void */ public function render_page() { include jet_elements()->get_template( 'admin-templates/settings-page.php' ); } /** * Returns the instance. * * @since 1.0.0 * @access public * @return object */ public static function get_instance() { // If the single instance hasn't been set, set it now. if ( null == self::$instance ) { self::$instance = new self; } return self::$instance; } } } /** * Returns instance of Jet_Elements_Settings * * @return object */ function jet_elements_settings() { return Jet_Elements_Settings::get_instance(); } jet_elements_settings()->init();