y_condition' => $document->get_settings('eael_ext_toc_global_display_condition'), 'eael_ext_toc_title' => $document->get_settings('eael_ext_toc_title'), 'eael_ext_toc_title_tag' => $document->get_settings('eael_ext_toc_title_tag'), '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; } }