HEX
Server: Apache
System: Windows NT MAGNETO-ARM 10.0 build 22000 (Windows 10) AMD64
User: Michel (0)
PHP: 7.4.7
Disabled: NONE
Upload Files
File: C:/Apache24/htdocs/wp-content/plugins/echo-knowledge-base/includes/system/scripts-registration.php
<?php

/**  Register JS and CSS files  */

/**
 * FRONT-END pages using our plugin features
 */
function epkb_load_public_resources() {
    global $eckb_kb_id;
	
	epkb_register_public_resources();
	
    // if this is not KB Main Page or Article Page or Category Archive page then do not load public resources
    if ( empty($eckb_kb_id) ) {
        return;
    }

	epkb_enqueue_public_resources();

	if ( current_user_can( 'manage_options' ) ) {
		epkb_load_front_end_editor( $eckb_kb_id );
	}
}
add_action( 'wp_enqueue_scripts', 'epkb_load_public_resources' );

/**
 * Register for FRONT-END pages using our plugin features
 */
function epkb_register_public_resources() {

	$suffix = ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) ? '' : '.min';

	wp_register_style( 'epkb-public-styles', Echo_Knowledge_Base::$plugin_url . 'css/public-styles' . $suffix . '.css', array(), Echo_Knowledge_Base::$version );
	wp_register_script( 'epkb-public-scripts', Echo_Knowledge_Base::$plugin_url . 'js/public-scripts' . $suffix . '.js', array('jquery'), Echo_Knowledge_Base::$version );
	wp_register_script( 'epkb-materialize', Echo_Knowledge_Base::$plugin_url . 'js/vendor/materialize' . $suffix . '.js', array('jquery'), Echo_Knowledge_Base::$version );
	wp_localize_script( 'epkb-public-scripts', 'epkb_vars', array(
		'msg_try_again'         => esc_html__( 'Please try again later.', 'echo-knowledge-base' ),
		'error_occurred'        => esc_html__( 'Error occurred', 'echo-knowledge-base' ) . ' (16)',
		'not_saved'             => esc_html__( 'Error occurred - configuration NOT saved (6).', 'echo-knowledge-base' ),
		'unknown_error'         => esc_html__( 'Unknown error', 'echo-knowledge-base' ) . ' (17)',
		'reload_try_again'      => esc_html__( 'Please reload the page and try again.', 'echo-knowledge-base' ),
		'save_config'           => esc_html__( 'Saving configuration', 'echo-knowledge-base' ),
		'input_required'        => esc_html__( 'Input is required', 'echo-knowledge-base' ),
		'reduce_name_size'      => esc_html__( 'Warning: Please reduce your name size. Tab will only show first 25 characters', 'echo-knowledge-base' ),
		'load_template'         => esc_html__('Loading Template...', 'echo-knowledge-base' )
	));
}

/**
 * Queue for FRONT-END pages using our plugin features
 */
function epkb_enqueue_public_resources() {
	wp_enqueue_style( 'epkb-public-styles' );
	wp_enqueue_script( 'epkb-public-scripts' );
	wp_enqueue_script( 'epkb-materialize' );  // scrollSpy for TOC
}
add_action( 'epkb_enqueue_scripts', 'epkb_enqueue_public_resources' ); // use this action in any place to add scripts $kb_id as a parameter

/**
 * BACK-END: KB Config page needs front-page CSS resources
 */
function epkb_kb_config_load_public_css() {

	$suffix = ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) ? '' : '.min';

	wp_enqueue_style( 'epkb-public-styles', Echo_Knowledge_Base::$plugin_url . 'css/public-styles' . $suffix . '.css', array(), Echo_Knowledge_Base::$version );

	$kb_id = EPKB_KB_Handler::get_current_kb_id();
	if ( empty($kb_id) ) {
		return;
	}

	$kb_config = epkb_get_instance()->kb_config_obj->get_kb_config( $kb_id );
	if ( is_wp_error( $kb_config ) ) {
		return;
	}

	echo epkb_frontend_kb_theme_styles_now( $kb_config );
}

/**
 * ADMIN-PLUGIN MENU PAGES (Plugin settings, reports, lists etc.)
 */
function epkb_load_admin_plugin_pages_resources() {
	
	global $pagenow;
	
	$suffix = ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) ? '' : '.min';

	wp_enqueue_style( 'epkb-admin-plugin-pages-styles', Echo_Knowledge_Base::$plugin_url . 'css/admin-plugin-pages' . $suffix . '.css', array(), Echo_Knowledge_Base::$version );
	wp_enqueue_style( 'wp-color-picker' ); //Color picker

	wp_enqueue_script( 'epkb-admin-plugin-pages-scripts', Echo_Knowledge_Base::$plugin_url . 'js/admin-plugin-pages' . $suffix . '.js',
					array('jquery', 'jquery-ui-core','jquery-ui-dialog','jquery-effects-core','jquery-effects-bounce', 'jquery-ui-sortable'), Echo_Knowledge_Base::$version );
	wp_localize_script( 'epkb-admin-plugin-pages-scripts', 'epkb_vars', array(
					'msg_try_again'         => esc_html__( 'Please try again later.', 'echo-knowledge-base' ),
					'error_occurred'        => esc_html__( 'Error occurred', 'echo-knowledge-base' ) . ' (11)',
					'not_saved'             => esc_html__( 'Error occurred - configuration NOT saved (12).', 'echo-knowledge-base' ),
					'unknown_error'         => esc_html__( 'Unknown error', 'echo-knowledge-base' ) . ' (13)',
					'reload_try_again'      => esc_html__( 'Please reload the page and try again.', 'echo-knowledge-base' ),
					'save_config'           => esc_html__( 'Saving configuration', 'echo-knowledge-base' ),
					'input_required'        => esc_html__( 'Input is required', 'echo-knowledge-base' ),
					'sending_feedback'      => esc_html__('Sending feedback ...', 'echo-knowledge-base' ),
					'changing_debug'        => esc_html__('Changing debug ...', 'echo-knowledge-base' ),
					'help_text_coming'      => esc_html__('Help text is coming soon.', 'echo-knowledge-base' ),
					'load_template'         => esc_html__('Loading Template...', 'echo-knowledge-base' )
				));
	
	// used by WordPress color picker  ( wpColorPicker() )
	wp_localize_script( 'wp-color-picker', 'wpColorPickerL10n',
			array(
				'clear'            =>   __( 'Reset', 'echo-knowledge-base' ),
				'clearAriaLabel'   =>   __( 'Reset color', 'echo-knowledge-base' ),
				'defaultString'    =>   __( 'Default', 'echo-knowledge-base' ),
				'defaultAriaLabel' =>   __( 'Select default color', 'echo-knowledge-base' ),
				'pick'             =>   '',
				'defaultLabel'     =>   __( 'Color value', 'echo-knowledge-base' ),
			));
	wp_enqueue_script( 'wp-color-picker' );
	wp_enqueue_style( 'wp-jquery-ui-dialog' );

	// add for Category icon upload
	if ( $pagenow == 'term.php' || $pagenow == 'edit-tags.php' ) {
		wp_enqueue_media();
	}
}

// Old Wizards
function epkb_load_admin_kb_config_script() {
	
	global $pagenow;
	
	$suffix = ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) ? '' : '.min';

	wp_enqueue_script( 'epkb-admin-kb-config-menu-script', Echo_Knowledge_Base::$plugin_url . 'js/admin-kb-config-menu-script' . $suffix . '.js',
		array('jquery',	'jquery-ui-core', 'jquery-ui-dialog', 'jquery-effects-core', 'jquery-effects-bounce', 'wp-color-picker'), Echo_Knowledge_Base::$version );
	wp_localize_script( 'epkb-admin-kb-config-menu-script', 'epkb_vars', array(
		'msg_try_again'         => esc_html__( 'Please try again later.', 'echo-knowledge-base' ),
		'error_occurred'        => esc_html__( 'Error occurred', 'echo-knowledge-base' ) . ' (13)',
		'not_saved'             => esc_html__( 'Error occurred - configuration NOT saved (5).', 'echo-knowledge-base' ),
		'unknown_error'         => esc_html__( 'Unknown error', 'echo-knowledge-base' ) . ' (15)',
		'reload_try_again'      => esc_html__( 'Please reload the page and try again.', 'echo-knowledge-base' ),
		'save_config'           => esc_html__( 'Saving configuration', 'echo-knowledge-base' ),
		'input_required'        => esc_html__( 'Input is required', 'echo-knowledge-base' ),
		'reduce_name_size'      => esc_html__( 'Warning: Please reduce your name size. Tab will only show first 25 characters', 'echo-knowledge-base' ),
		'archive_page'          => esc_html__( 'Archive Page configuration is available only for KB Template. Switch on KB Template to continue.', 'echo-knowledge-base' ),
		'updating_preview'      => esc_html__( 'Updating page preview ...', 'echo-knowledge-base' ),
		'changing_config'       => esc_html__('Changing to selected configuration...', 'echo-knowledge-base' ),
		'switching_article_seq' => esc_html__('Switching article sequence ...', 'echo-knowledge-base' ),
		'preview'               => esc_html__('Preview', 'echo-knowledge-base' ),
		'load_template'         => esc_html__('Loading Template...', 'echo-knowledge-base' )
	));

	wp_enqueue_script( 'epkb-admin-kb-wizard-script', Echo_Knowledge_Base::$plugin_url . 'js/admin-kb-wizard-script' . $suffix . '.js',
		array('jquery',	'jquery-ui-core', 'jquery-ui-dialog', 'jquery-effects-core', 'jquery-effects-bounce'), Echo_Knowledge_Base::$version );
	wp_enqueue_script( 'epkb-materialize', Echo_Knowledge_Base::$plugin_url . 'js/vendor/materialize' . $suffix . '.js', array('jquery'), Echo_Knowledge_Base::$version );
	wp_localize_script( 'epkb-admin-kb-wizard-script', 'epkb_vars', array(
		'msg_try_again'         => esc_html__( 'Please try again later.', 'echo-knowledge-base' ),
		'error_occurred'        => esc_html__( 'Error occurred', 'echo-knowledge-base' ) . ' (14)',
		'not_saved'             => esc_html__( 'Error occurred - configuration NOT saved (5).', 'echo-knowledge-base' ),
		'unknown_error'         => esc_html__( 'Unknown error', 'echo-knowledge-base' ) . ' (15)',
		'reload_try_again'      => esc_html__( 'Please reload the page and try again.', 'echo-knowledge-base' ),
		'input_required'        => esc_html__( 'Input is required', 'echo-knowledge-base' ),
		'load_template'         => esc_html__('Loading Preview...', 'echo-knowledge-base' ),
		'wizard_help_images_path' => Echo_Knowledge_Base::$plugin_url . 'img/',
		'asea_wizard_help_images_path' => class_exists( 'Echo_Advanced_Search' ) && ! empty(Echo_Advanced_Search::$plugin_url) ? Echo_Advanced_Search::$plugin_url . 'img/' : '',
		'elay_wizard_help_images_path' => class_exists( 'Echo_Elegant_Layouts' ) && ! empty(Echo_Elegant_Layouts::$plugin_url) ? Echo_Elegant_Layouts::$plugin_url . 'img/' : '',
		'eprf_wizard_help_images_path' => class_exists( 'Echo_Article_Rating_And_Feedback' ) && ! empty(Echo_Article_Rating_And_Feedback::$plugin_url) ? Echo_Article_Rating_And_Feedback::$plugin_url . 'img/' : ''
	));

	if ( $pagenow == 'edit.php' && isset($_GET['wizard-text']) && class_exists('Echo_Elegant_Layouts') ) {
		wp_enqueue_editor();
	}
	
	add_filter('admin_body_class', 'epkb_admin_wizard_body_class' );
}

// Setup Wizard
function epkb_load_admin_kb_setup_wizard_script() {
	
	$suffix = ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) ? '' : '.min';

	wp_enqueue_style( 'epkb-admin-plugin-pages-styles', Echo_Knowledge_Base::$plugin_url . 'css/admin-plugin-pages' . $suffix . '.css', array(), Echo_Knowledge_Base::$version );
	wp_enqueue_script( 'epkb-admin-kb-setup-wizard-script', Echo_Knowledge_Base::$plugin_url . 'js/admin-kb-setup-wizard-script' . $suffix . '.js',
		array('jquery',	'jquery-ui-core', 'jquery-ui-dialog', 'jquery-effects-core', 'jquery-effects-bounce'), Echo_Knowledge_Base::$version );
	wp_localize_script( 'epkb-admin-kb-setup-wizard-script', 'epkb_vars', array(
		'msg_try_again'         => esc_html__( 'Please try again later.', 'echo-knowledge-base' ),
		'error_occurred'        => esc_html__( 'Error occurred', 'echo-knowledge-base' ) . ' (14)',
		'not_saved'             => esc_html__( 'Error occurred - configuration NOT saved (5).', 'echo-knowledge-base' ),
		'unknown_error'         => esc_html__( 'Unknown error', 'echo-knowledge-base' ) . ' (15)',
		'reload_try_again'      => esc_html__( 'Please reload the page and try again.', 'echo-knowledge-base' ),
		'input_required'        => esc_html__( 'Input is required', 'echo-knowledge-base' ),
		'load_template'         => esc_html__('Loading Preview...', 'echo-knowledge-base' ),
		'wizard_help_images_path' => Echo_Knowledge_Base::$plugin_url . 'img/',
	));
}

// Article Edit Page
function epkb_load_admin_article_edit_script() {

	if ( EPKB_Utilities::get('post') == '' || EPKB_Utilities::get('action') != 'edit' ) {
		return;
	}

	$post_type = get_post_type( EPKB_Utilities::get('post') );
	
	//Added only for KB Core
	if ( ! empty($post_type) && EPKB_KB_Handler::is_kb_post_type( $post_type ) && ! EPKB_Utilities::is_amag_on() ) {

		$suffix = ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) ? '' : '.min';
		$depends = array(
				'wp-plugins',
				'wp-element',
				'wp-components'
			);
		
		if ( ! EPKB_Utilities::is_classic_editor_plugin_active() ) {
			$depends[] = 'wp-edit-post';
		}
		
		wp_enqueue_script('epkb-admin-kb-article-edit-script', Echo_Knowledge_Base::$plugin_url . 'js/admin-kb-article-edit-script' . $suffix . '.js', $depends	);
	}
}
//add_action('admin_enqueue_scripts','epkb_load_admin_article_edit_script');

// remove wordpress strings on certain pages
function epkb_admin_wizard_body_class( $classes ) {
	// Note: Add a leading space and a trailing space.
	$classes .= ' epkb-configuration-page ';
	return $classes;
}

/**
 * Add style for current KB theme
 */
function epkb_frontend_kb_theme_styles() {
	global $eckb_kb_id;

	$kb_id = empty($eckb_kb_id) ? EPKB_KB_Handler::get_kb_id_from_kb_main_shortcode() : $eckb_kb_id;
	if ( empty( $kb_id ) ) {
		return;
	}

	$kb_config = epkb_get_instance()->kb_config_obj->get_kb_config_or_default( $kb_id );

	echo epkb_frontend_kb_theme_styles_now( $kb_config );
}
add_action( 'wp_head', 'epkb_frontend_kb_theme_styles' );

/**
 * Certain styles need to be inserted in the header.
 *
 * @param $kb_config
 * @return string
 */
function epkb_frontend_kb_theme_styles_now( $kb_config ) {

	global $eckb_is_kb_main_page;

	$is_kb_main_page = ! empty($eckb_is_kb_main_page);

	// get any style from add-ons
	$add_on_output = apply_filters( 'eckb_frontend_kb_theme_style', '', $kb_config['id'], $is_kb_main_page );
	if ( empty($add_on_output) || ! is_string($add_on_output) )  {
		$add_on_output = '';
	}

	$output = '<style type="text/css" id="epkb-advanced-style">
		/* KB Core 
		-----------------------------------------------------------------------*/
		#epkb-content-container .epkb-nav-tabs .active:after {
			border-top-color: ' . $kb_config['tab_nav_active_background_color'] . '!important
		}
		#epkb-content-container .epkb-nav-tabs .active {
			background-color: ' . $kb_config['tab_nav_active_background_color'] . '!important
		}
		#epkb-content-container .epkb-nav-tabs .active .epkb-category-level-1,
		#epkb-content-container .epkb-nav-tabs .active p {
			color: ' . $kb_config['tab_nav_active_font_color'] . '!important
		}
		#epkb-content-container .epkb-nav-tabs .active:before {
			border-top-color: ' . $kb_config['tab_nav_border_color'] . '!important
		}		
	';

	$output .= $add_on_output;

	$output .= '</style>';

	return $output;
}

/**
 * Load TOC classes to counter theme issues
 * @param $classes
 * @return array
 */
function epkb_front_end_body_classes( $classes ) {
	global $eckb_kb_id;

	// load only on article pages
	if ( empty($eckb_kb_id) )  {
		return $classes;
	}

	$kb_config = epkb_get_instance()->kb_config_obj->get_kb_config_or_default( $eckb_kb_id );

	// load only if TOC is active
	if ( 'on' != $kb_config['article_toc_enable'] ) {
		return $classes;
	}

	// get current post
	$post = isset($GLOBALS['post']) ? $GLOBALS['post'] : '';
	if ( empty($post) || ! $post instanceof WP_Post ) {
		return $classes;
	}

	// is this KB Main Page ?
	$eckb_is_kb_main_page = false;
	$all_kb_configs = epkb_get_instance()->kb_config_obj->get_kb_configs( true );
	foreach ( $all_kb_configs as $one_kb_config ) {
		if ( ! empty($one_kb_config['kb_main_pages']) && is_array($one_kb_config['kb_main_pages']) &&
		     in_array($post->ID, array_keys($one_kb_config['kb_main_pages']) ) ) {
			$eckb_is_kb_main_page = true;
			break;  // found matching KB Main Page
		}
	}

	if ( $eckb_is_kb_main_page ) {
		return $classes;
	}

	$classes[] = 'eckb-front-end-body';

	return $classes;

}
add_filter( 'body_class','epkb_front_end_body_classes' );

// load style for Admin Article Page
function epkb_load_admin_article_page_styles() {
	$suffix = ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) ? '' : '.min';
	wp_enqueue_style( 'epkb-admin-plugin-pages-styles', Echo_Knowledge_Base::$plugin_url . 'css/admin-article-page' . $suffix . '.css', array(), Echo_Knowledge_Base::$version );
}

/**
 * Register KB areas for widgets to be added to
 */
function epkb_register_kb_sidebar() {

	$kb_ids = epkb_get_instance()->kb_config_obj->get_kb_ids();
	foreach( $kb_ids as $kb_id ) {

		$widget_seq_num = count($kb_ids) > 1 ? ' #' . $kb_id : '';
		$widget_id = $kb_id == 1 ? 'eckb_articles_sidebar' : 'eckb_articles_sidebar_' . $kb_id;

		// add KB sidebar area
		register_sidebar(array(
			'name' => __('Echo KB' . $widget_seq_num . ' Articles Sidebar' , 'echo-knowledge-base'),
			'id' => $widget_id,
			'before_widget' => '<div id="eckb-%1$s" class="eckb-article-widget-sidebar-body__widget">',
			'after_widget' => '</div> <!-- end Widget -->',
			'before_title' => '<h4>',
			'after_title' => '</h4>'
		));
	}
}
add_action( 'widgets_init', 'epkb_register_kb_sidebar' );

/**
 * Add KB filters for other plugins to use
 */
add_filter( 'kb_core/kb_config/get_kb_configs', function() {
	return epkb_get_instance()->kb_config_obj->get_kb_configs();
} );

/**
 * Add KB filters for other plugins to use
 */
add_filter( 'kb_core/kb_config/get_kb_config', function( $kb_id ) {
	return epkb_get_instance()->kb_config_obj->get_kb_config_or_default( $kb_id );
} );

/**
 * Add KB filters for other plugins to use
 */
add_filter( 'kb_core/kb_icons/get_category_icon', function( $term_id, $categories_icons ) {
	return EPKB_KB_Config_Category::get_category_icon( $term_id, $categories_icons );
}, 10, 2 );


/**************  Frontend Editor  *****************/

/**
 * Load scripts for Frontend Editor
 * @param $kb_id
 */
function epkb_load_front_end_editor( $kb_id ) {
	
	global $wp_scripts, $post;
	
	if ( empty($post->post_type) || // not a page
		defined( 'DOING_AJAX' ) && DOING_AJAX || // return if we get page by ajax 
		! empty( $_REQUEST['elementor-preview'] ) || // elementor preview
		! empty( $_REQUEST['et_fb'] ) // if we are on DIVI page 
	) {
		return;
	}

	$kb_config = epkb_get_instance()->kb_config_obj->get_kb_config_or_default( $kb_id );

	if ( EPKB_Config_Menu::check_editor_compatibility( $kb_config ) != '' ) {
		return;
	}

	// is this KB page?
	$page_type = epkb_front_end_editor_type();
	if ( $page_type != 'main-page' && $page_type != 'article-page' && $page_type != 'archive-page' ) {
		return;
	}

	// add config from addons 
	$kb_config = apply_filters( 'eckb_kb_config', $kb_config );
	if ( empty($kb_config)  || is_wp_error($kb_config) ) {
		return;
	}

	// get Editor settings
	if ( $page_type == 'main-page' ) {
		$editor_config = new EPKB_Editor_Main_Page_Config( $kb_config );
	} else if ( $page_type == 'article-page' ) {
		$editor_config = new EPKB_Editor_Article_Page_Config( $kb_config );
	} else if ( $page_type == 'archive-page' ) {
		$editor_config = new EPKB_Editor_Archive_Page_Config( $kb_config );
	} else {
		return;
	}

	$config_settings = $editor_config->get_config( $kb_config );
	$editor_settings = $editor_config->get_editor_panel_config( $kb_config );
	
	// Only styles and zones for preview iframe of the actual page
	if ( ! empty( $_REQUEST['epkb-editor'] ) ) {
		wp_enqueue_style( 'epkb-editor', Echo_Knowledge_Base::$plugin_url . 'css/editor.css', array(), Echo_Knowledge_Base::$version );
		wp_localize_script( 'epkb-public-scripts', 'epkb_editor_config', $config_settings );
		return;
	}
	
	// Check wordpress color picker lib; register if not already (on front end)
	if ( ! isset( $wp_scripts->registered['iris'] ) ) {
		wp_register_script( 'iris', admin_url('js/iris.min.js'), array('jquery-ui-draggable', 'jquery-ui-slider', 'jquery-touch-punch' ), '1.0.7', true );
	}

	// styles
	wp_register_style( 'wp-color-picker', admin_url( 'css/color-picker.css'), array(), '', true );
	wp_deregister_script( 'wp-color-picker' );
	// scripts
	if ( isset( $wp_scripts->registered['wp-i18n'] ) ) {
		wp_register_script( 'wp-color-picker', admin_url('js/color-picker.js'), array('iris', 'wp-i18n'), null, true );
	} else {
		wp_register_script( 'wp-color-picker', admin_url('js/color-picker.js'), array('iris'), null, true );
	}
	
	// enqueue
	wp_enqueue_style('wp-color-picker');
	wp_enqueue_style( 'epkb-editor', Echo_Knowledge_Base::$plugin_url . 'css/editor.css', array(), Echo_Knowledge_Base::$version );

	wp_enqueue_script( 'epkb-editor', Echo_Knowledge_Base::$plugin_url . 'js/editor.js', array('jquery'), Echo_Knowledge_Base::$version );

	wp_localize_script( 'epkb-editor', 'epkb_editor_config', $config_settings );
	wp_localize_script( 'epkb-editor', 'epkb_editor_settings', $editor_settings );

	wp_localize_script( 'epkb-editor', 'epkb_editor', array(
		'_wpnonce_apply_editor_changes' => wp_create_nonce( '_wpnonce_apply_editor_changes' ),
		'ajaxurl' =>        admin_url( 'admin-ajax.php' ),
		'kb_url' =>        admin_url( 'edit.php?post_type=' . EPKB_KB_Handler::KB_POST_TYPE_PREFIX . $kb_id ),
		'epkb_editor_kb_id' => $kb_id,
		'page_type' => $page_type,
		'turned_on'         => __( 'Hide KB Settings', 'echo-knowledge-base' ),
		'loading'           => __( 'Loading...', 'echo-knowledge-base' ),
		'turned_off'        => epkb_front_end_editor_title(),
		'default_header'    => __( 'Settings panel', 'echo-knowledge-base' ),
		'epkb_name'              => __( 'Echo Knowledge Base', 'echo-knowledge-base' ),
		'tab_content'       => __( 'Content', 'echo-knowledge-base' ),
		'tab_style'         => __( 'Style', 'echo-knowledge-base' ),
		'tab_features'      => __( 'Features', 'echo-knowledge-base' ),
		'tab_advanced'      => __( 'Advanced', 'echo-knowledge-base' ),
		'tab_global'      => __( 'General Settings', 'echo-knowledge-base' ),
		'tab_hidden'      => __( 'Deactivated Items', 'echo-knowledge-base' ),
		'save_button'       => __( 'Save', 'echo-knowledge-base' ),
		'exit_button'       => __( 'Exit Editor', 'echo-knowledge-base' ),
		'clear_modal_notice' => __( 'Click within any Knowledge Base page element to change its settings', 'echo-knowledge-base' ),
		'no_settings'     => __( 'This zone have no settings yet', 'echo-knowledge-base' ),
		'checkbox_on'    => __( 'Yes', 'echo-knowledge-base' ),
		'checkbox_off'    => __( 'No', 'echo-knowledge-base' ),
		'wrong_dimensions' => __( 'Invalid dimensions', 'echo-knowledge-base' ),
		'left_panel' => __( 'Left Panel', 'echo-knowledge-base' ),
		'right_panel' => __( 'Right Panel', 'echo-knowledge-base' ),
		'edit_button' => __( 'Edit', 'echo-knowledge-base' ),
		'preopen' => empty ( $_REQUEST['preopen'] ) ? '' : $_REQUEST['preopen'],
		'settings_html' => EPKB_Editor_View::get_editor_settings_html(),
		'menu_links_html' => EPKB_Editor_View::get_editor_madal_menu_lnks( $page_type, $kb_config ),
	) );

	// used by WordPress color picker  ( wpColorPicker() ) before 5.5.0
	wp_localize_script( 'wp-color-picker', 'wpColorPickerL10n',
		array(
			'clear'            =>   __( 'Reset', 'echo-knowledge-base' ),
			'clearAriaLabel'   =>   __( 'Reset color', 'echo-knowledge-base' ),
			'defaultString'    =>   __( 'Default', 'echo-knowledge-base' ),
			'defaultAriaLabel' =>   __( 'Select default color', 'echo-knowledge-base' ),
			'pick'             =>   '',
			'defaultLabel'     =>   __( 'Color value', 'echo-knowledge-base' ),
		));
		
	wp_enqueue_script( 'jquery-ui-slider' );
	wp_enqueue_script( 'wp-color-picker' );
	
	// add Frontend Editor button to the admin panel
	add_action( 'admin_bar_menu', 'epkb_add_admin_bar_button', 1000 );

	// add editor tinimce for rich text
	add_action( 'wp_head', [ 'EPKB_Editor_View', 'get_editor_html' ] );
}

/**
 * Add Frontend Editor option in the WordPress admin bar.
 * Fired by `admin_bar_menu` filter.
 * @param WP_Admin_Bar $wp_admin_bar
 */
function epkb_add_admin_bar_button( WP_Admin_Bar $wp_admin_bar ) {

	$title = epkb_front_end_editor_title();
	$wp_admin_bar->add_menu( array( 'id' => 'epkb-edit-mode-button', 'title' => $title, 'href' => '#' ) );
}

function epkb_front_end_editor_title() {
	
	$title = '';
	
	switch ( epkb_front_end_editor_type() ) {
		case 'article-page':
			$title = __( 'Edit Article Page Configuration', 'echo-knowledge-base' );
			break;
		case 'main-page':
			$title = __( 'Edit Main Page Configuration', 'echo-knowledge-base' );
			break;
		case 'archive-page':
			$title = __( 'Edit Archive Page Configuration', 'echo-knowledge-base' );
			break;
	}
	
	return $title;
}

function epkb_front_end_editor_type() {
	global $post;

	if ( EPKB_KB_Handler::is_kb_post_type( $post->post_type ) && ! is_archive() ) {
		return 'article-page';
	}
	
	if ( $post->post_type == 'page' ) {
		return 'main-page';
	} 
	
	if ( EPKB_KB_Handler::is_kb_post_type( $post->post_type ) && is_archive() ) {
		return 'archive-page';
	} 
	
	return '';
}