' . __('Settings', 'essential-addons-for-elementor-lite') . ''); // go pro if (!$this->pro_enabled) { $links[] = sprintf('' . __('Go Pro', 'essential-addons-for-elementor-lite') . ''); } return $links; } /** * Extending plugin row meta * * @since 3.0.0 */ public function insert_plugin_row_meta($links, $file) { if (EAEL_PLUGIN_BASENAME == $file) { // docs & faq $links[] = sprintf('' . __('Docs & FAQs', 'essential-addons-for-elementor-lite') . ''); // video tutorials $links[] = sprintf('' . __('Video Tutorials', 'essential-addons-for-elementor-lite') . ''); } return $links; } /** * Redirect to options page * * @since v1.0.0 */ public function redirect_on_activation() { if (get_transient('eael_do_activation_redirect')) { delete_transient('eael_do_activation_redirect'); if (!isset($_GET['activate-multi'])) { wp_redirect("admin.php?page=eael-settings"); } } } /** * Check if elementor plugin is activated * * @since v1.0.0 */ public function elementor_not_loaded() { if (!current_user_can('activate_plugins')) { return; } $elementor = 'elementor/elementor.php'; if ($this->is_plugin_installed($elementor)) { $activation_url = wp_nonce_url('plugins.php?action=activate&plugin=' . $elementor . '&plugin_status=all&paged=1&s', 'activate-plugin_' . $elementor); $message = sprintf(__('%1$sEssential Addons for Elementor%2$s requires %1$sElementor%2$s plugin to be active. Please activate Elementor to continue.', 'essential-addons-for-elementor-lite'), "", ""); $button_text = __('Activate Elementor', 'essential-addons-for-elementor-lite'); } else { $activation_url = wp_nonce_url(self_admin_url('update.php?action=install-plugin&plugin=elementor'), 'install-plugin_elementor'); $message = sprintf(__('%1$sEssential Addons for Elementor%2$s requires %1$sElementor%2$s plugin to be installed and activated. Please install Elementor to continue.', 'essential-addons-for-elementor-lite'), '', ''); $button_text = __('Install Elementor', 'essential-addons-for-elementor-lite'); } $button = '

' . esc_html( $button_text ) . '

'; printf('

%1$s

%2$s
', __($message), $button); } /** * Optional usage tracker * * @since v1.0.0 */ public function start_plugin_tracking() { $tracker = Plugin_Usage_Tracker::get_instance( EAEL_PLUGIN_FILE, [ 'opt_in' => true, 'goodbye_form' => true, 'item_id' => '760e8569757fa16992d8' ] ); $tracker->set_notice_options(array( 'notice' => __( 'Want to help make Essential Addons for Elementor even more awesome? You can get a 10% discount coupon for Pro upgrade if you allow.', 'essential-addons-for-elementor-lite' ), 'extra_notice' => __( 'We collect non-sensitive diagnostic data and plugin usage information. Your site URL, WordPress & PHP version, plugins & themes and email address to send you the discount coupon. This data lets us make sure this plugin always stays compatible with the most popular plugins and themes. No spam, I promise.', 'essential-addons-for-elementor-lite' ), )); $tracker->init(); } /** * Save default values to db * * @since v3.0.0 */ public function set_default_values() { $defaults = array_fill_keys(array_keys(array_merge($GLOBALS['eael_config']['elements'], $GLOBALS['eael_config']['extensions'])), 1); $values = get_option('eael_save_settings'); return update_option('eael_save_settings', wp_parse_args($values, $defaults)); } /** * Save setup wizard data * * @since v4.0.0 */ public function enable_setup_wizard() { if ( !get_option( 'eael_version' ) && !get_option( 'eael_setup_wizard' ) ) { update_option( 'eael_setup_wizard', 'redirect' ); } } /** * Save default values to db * * @since v3.0.0 */ public function save_global_values($post_id, $editor_data) { if (wp_doing_cron()) { return; } $document = Plugin::$instance->documents->get($post_id, false); $global_settings = get_option('eael_global_settings'); if ($document->get_settings('eael_ext_reading_progress_global') == 'yes' && $document->get_settings('eael_ext_reading_progress') == 'yes') { $global_settings['reading_progress'] = [ 'post_id' => $post_id, 'enabled' => true, 'eael_ext_reading_progress_global_display_condition' => $document->get_settings('eael_ext_reading_progress_global_display_condition'), 'eael_ext_reading_progress_position' => $document->get_settings('eael_ext_reading_progress_position'), 'eael_ext_reading_progress_height' => $document->get_settings('eael_ext_reading_progress_height'), 'eael_ext_reading_progress_bg_color' => $document->get_settings('eael_ext_reading_progress_bg_color'), 'eael_ext_reading_progress_fill_color' => $document->get_settings('eael_ext_reading_progress_fill_color'), 'eael_ext_reading_progress_animation_speed' => $document->get_settings('eael_ext_reading_progress_animation_speed'), ]; } else { if (isset($global_settings['reading_progress']['post_id']) && $global_settings['reading_progress']['post_id'] == $post_id) { $global_settings['reading_progress'] = [ 'post_id' => null, 'enabled' => false, ]; } } //save table of contents global value if ($document->get_settings('eael_ext_toc_global') == 'yes' && $document->get_settings('eael_ext_table_of_content') == 'yes') { $typography_fields = [ 'font_family', 'font_weight', 'text_transform', 'font_style', 'text_decoration', 'font_size', 'letter_spacing', 'line_height', ]; $global_settings['eael_ext_table_of_content'] = [ 'post_id' => $post_id, 'enabled' => ($document->get_settings('eael_ext_toc_global') == 'yes'), 'eael_ext_toc_global_display_condition' => $document->get_settings('eael_ext_toc_global_display_condition'), 'eael_ext_toc_title' => $document->get_settings('eael_ext_toc_title'), 'eael_ext_toc_position' => $document->get_settings('eael_ext_toc_position'), 'eael_ext_toc_supported_heading_tag' => $document->get_settings('eael_ext_toc_supported_heading_tag'), 'eael_ext_toc_content_selector' => $document->get_settings('eael_ext_toc_content_selector'), 'eael_toc_exclude_selector' => $document->get_settings('eael_toc_exclude_selector'), 'eael_ext_toc_collapse_sub_heading' => $document->get_settings('eael_ext_toc_collapse_sub_heading'), 'eael_ext_toc_use_title_in_url' => $document->get_settings('eael_ext_toc_use_title_in_url'), 'eael_ext_toc_word_wrap' => $document->get_settings('eael_ext_toc_word_wrap'), 'eael_ext_toc_table_box_shadow_box_shadow' => $document->get_settings('eael_ext_toc_table_box_shadow_box_shadow'), 'eael_ext_toc_auto_collapse' => $document->get_settings('eael_ext_toc_auto_collapse'), 'eael_ext_toc_auto_highlight' => $document->get_settings('eael_ext_toc_auto_highlight'), 'eael_ext_toc_auto_highlight_single_item_only' => $document->get_settings('eael_ext_toc_auto_highlight_single_item_only'), 'eael_ext_toc_hide_in_mobile' => $document->get_settings('eael_ext_toc_hide_in_mobile'), 'eael_ext_toc_border_border' => $document->get_settings('eael_ext_toc_border_border'), 'eael_ext_toc_border_width' => $document->get_settings('eael_ext_toc_border_width'), 'eael_ext_toc_border_color' => $document->get_settings('eael_ext_toc_border_color'), 'eael_ext_toc_box_border_radius' => $document->get_settings('eael_ext_toc_box_border_radius'), 'eael_ext_toc_sticky_offset' => $document->get_settings('eael_ext_toc_sticky_offset'), 'eael_ext_toc_sticky_scroll' => $document->get_settings('eael_ext_toc_sticky_scroll'), 'eael_ext_toc_sticky_z_index' => $document->get_settings('eael_ext_toc_sticky_z_index'), //toc header setting 'eael_ext_table_of_content_header_bg' => $document->get_settings('eael_ext_table_of_content_header_bg'), 'eael_ext_table_of_content_header_text_color' => $document->get_settings('eael_ext_table_of_content_header_text_color'), 'eael_ext_table_of_content_header_icon' => $document->get_settings('eael_ext_table_of_content_header_icon'), 'eael_ext_toc_header_padding' => $document->get_settings('eael_ext_toc_header_padding'), 'eael_ext_toc_width' => $document->get_settings('eael_ext_toc_width'), //close button setting 'eael_ext_table_of_content_close_button_bg' => $document->get_settings('eael_ext_table_of_content_close_button_bg'), 'eael_ext_table_of_content_close_button_text_color' => $document->get_settings('eael_ext_table_of_content_close_button_text_color'), 'eael_ext_toc_close_button_text_style' => $document->get_settings('eael_ext_toc_close_button_text_style'), 'eael_ext_table_of_content_close_button_icon_size' => $document->get_settings('eael_ext_table_of_content_close_button_icon_size'), 'eael_ext_table_of_content_close_button_size' => $document->get_settings('eael_ext_table_of_content_close_button_size'), 'eael_ext_table_of_content_close_button_line_height' => $document->get_settings('eael_ext_table_of_content_close_button_line_height'), 'eael_ext_table_of_content_close_button_border_radius' => $document->get_settings('eael_ext_table_of_content_close_button_border_radius'), 'eael_ext_table_of_content_close_button_box_shadow' => $document->get_settings('eael_ext_table_of_content_close_button_box_shadow_box_shadow'), //toc body setting 'eael_ext_table_of_content_body_bg' => $document->get_settings('eael_ext_table_of_content_body_bg'), 'eael_ext_toc_body_padding' => $document->get_settings('eael_ext_toc_body_padding'), //list style setting 'eael_ext_table_of_content_list_style' => $document->get_settings('eael_ext_table_of_content_list_style'), 'eael_ext_toc_top_level_space' => $document->get_settings('eael_ext_toc_top_level_space'), 'eael_ext_toc_subitem_level_space' => $document->get_settings('eael_ext_toc_subitem_level_space'), 'eael_ext_toc_list_icon' => $document->get_settings('eael_ext_toc_list_icon'), 'eael_ext_table_of_content_list_text_color' => $document->get_settings('eael_ext_table_of_content_list_text_color'), 'eael_ext_table_of_content_list_text_color_active' => $document->get_settings('eael_ext_table_of_content_list_text_color_active'), 'eael_ext_table_of_list_hover_color' => $document->get_settings('eael_ext_table_of_list_hover_color'), 'eael_ext_table_of_content_list_separator_style' => $document->get_settings('eael_ext_table_of_content_list_separator_style'), 'eael_ext_table_of_content_list_separator_color' => $document->get_settings('eael_ext_table_of_content_list_separator_color'), 'eael_ext_toc_box_list_bullet_size' => $document->get_settings('eael_ext_toc_box_list_bullet_size'), 'eael_ext_toc_box_list_top_position' => $document->get_settings('eael_ext_toc_box_list_top_position'), 'eael_ext_toc_indicator_size' => $document->get_settings('eael_ext_toc_indicator_size'), 'eael_ext_toc_indicator_position' => $document->get_settings('eael_ext_toc_indicator_position'), ]; foreach ($typography_fields as $typography_field) { $header_fields_attr = 'eael_ext_table_of_content_header_typography_' . $typography_field; $list_fields_attr = 'eael_ext_table_of_content_list_typography_normal_' . $typography_field; $global_settings['eael_ext_table_of_content'][$header_fields_attr] = $document->get_settings($header_fields_attr); $global_settings['eael_ext_table_of_content'][$list_fields_attr] = $document->get_settings($list_fields_attr); } } else { if (isset($global_settings['eael_ext_table_of_content']['post_id']) && $global_settings['eael_ext_table_of_content']['post_id'] == $post_id) { $global_settings['eael_ext_table_of_content'] = []; } } //Scroll to Top global settings : updated on elementor/editor/after_save action $global_settings['eael_ext_scroll_to_top'] = $this->get_ext_scroll_to_top_global_settings($post_id, $document, $global_settings); // set editor time update_option('eael_editor_updated_at', strtotime('now')); // update options update_option('eael_global_settings', $global_settings); } /** * Save default values to db while trashing a post * * @since 3.0.0 */ public function save_global_values_trashed_post($post_id) { if (wp_doing_cron()) { return; } if ( ! $this->is_activate_elementor() ) { return false; } $document = Plugin::$instance->documents->get($post_id, false); $global_settings = get_option('eael_global_settings'); // Reading Progress Bar if ( isset($global_settings['reading_progress']['post_id']) && $global_settings['reading_progress']['post_id'] == $post_id ) { $global_settings['reading_progress'] = [ 'post_id' => null, 'enabled' => false, ]; } // Table of Contents if ( isset($global_settings['eael_ext_table_of_content']['post_id']) && $global_settings['eael_ext_table_of_content']['post_id'] == $post_id ) { $global_settings['eael_ext_table_of_content'] = []; } // Scroll to Top if ( isset($global_settings['eael_ext_scroll_to_top']['post_id']) && $global_settings['eael_ext_scroll_to_top']['post_id'] == $post_id ) { $global_settings['eael_ext_scroll_to_top'] = [ 'post_id' => null, 'enabled' => false, ]; } // set editor time update_option('eael_editor_updated_at', strtotime('now')); // update options update_option('eael_global_settings', $global_settings); } /** * Get global settings of Scroll to Top extension * * @return array * @since v5.0.0 */ public function get_ext_scroll_to_top_global_settings($post_id, $document, $global_settings){ $global_settings_scroll_to_top = !empty($global_settings['eael_ext_scroll_to_top']) ? $global_settings['eael_ext_scroll_to_top'] : array(); $document_settings = $document->get_settings(); if ($document->get_settings('eael_ext_scroll_to_top_global') == 'yes' && $document->get_settings('eael_ext_scroll_to_top') == 'yes') { $global_settings_scroll_to_top = [ 'post_id' => $post_id, 'enabled' => true, 'eael_ext_scroll_to_top_global_display_condition' => $document->get_settings('eael_ext_scroll_to_top_global_display_condition'), 'eael_ext_scroll_to_top_position_text' => $document->get_settings('eael_ext_scroll_to_top_position_text'), 'eael_ext_scroll_to_top_position_bottom' => $document->get_settings('eael_ext_scroll_to_top_position_bottom'), 'eael_ext_scroll_to_top_position_left' => $document->get_settings('eael_ext_scroll_to_top_position_left'), 'eael_ext_scroll_to_top_position_right' => $document->get_settings('eael_ext_scroll_to_top_position_right'), 'eael_ext_scroll_to_top_button_width' => $document->get_settings('eael_ext_scroll_to_top_button_width'), 'eael_ext_scroll_to_top_button_height' => $document->get_settings('eael_ext_scroll_to_top_button_height'), 'eael_ext_scroll_to_top_z_index' => $document->get_settings('eael_ext_scroll_to_top_z_index'), 'eael_ext_scroll_to_top_button_opacity' => $document->get_settings('eael_ext_scroll_to_top_button_opacity'), 'eael_ext_scroll_to_top_button_icon_image' => $document->get_settings('eael_ext_scroll_to_top_button_icon_image'), 'eael_ext_scroll_to_top_button_icon_size' => $document->get_settings('eael_ext_scroll_to_top_button_icon_size'), 'eael_ext_scroll_to_top_button_icon_svg_size' => $document->get_settings('eael_ext_scroll_to_top_button_icon_svg_size'), 'eael_ext_scroll_to_top_button_icon_color' => $this->eael_ext_stt_fetch_color_or_global_color($document_settings, 'eael_ext_scroll_to_top_button_icon_color'), 'eael_ext_scroll_to_top_button_bg_color' => $this->eael_ext_stt_fetch_color_or_global_color($document_settings, 'eael_ext_scroll_to_top_button_bg_color'), 'eael_ext_scroll_to_top_button_border_radius' => $document->get_settings('eael_ext_scroll_to_top_button_border_radius'), ]; } else { if ( ( isset($global_settings['eael_ext_scroll_to_top']['post_id']) && $global_settings['eael_ext_scroll_to_top']['post_id'] == $post_id ) || ( isset($global_settings['eael_ext_scroll_to_top']['post_id']) && 'publish' !== get_post_status($global_settings['eael_ext_scroll_to_top']['post_id']) ) ) { $global_settings_scroll_to_top = [ 'post_id' => null, 'enabled' => false, ]; } } return $global_settings_scroll_to_top; } public function eael_ext_stt_fetch_color_or_global_color($settings, $control_name=''){ if( !isset($settings[$control_name])) { return ''; } $color = $settings[$control_name]; if(!empty($settings['__globals__']) && !empty($settings['__globals__'][$control_name])){ $color = $settings['__globals__'][$control_name]; $color_arr = explode('?id=', $color); //E.x. 'globals/colors/?id=primary' $color_name = count($color_arr) > 1 ? $color_arr[1] : ''; if( !empty($color_name) ) { $color = "var( --e-global-color-$color_name )"; } } return $color; } }