/*
Theme Name: Flatsome Child
Description: This is a child theme for Flatsome Theme
Author: UX Themes
Template: flatsome
Version: 3.0
*/

/*************** ADD CUSTOM CSS HERE.   ***************/


@media only screen and (max-width: 48em) {
/*************** ADD MOBILE ONLY CSS HERE  ***************/


}

add_filter( 'rest_authentication_errors', function( $result ) {
    if ( ! is_user_logged_in() ) {
        return new WP_Error(
            'rest_disabled',
            'REST API disabled',
            array( 'status' => 401 )
        );
    }
    return $result;
});

/**
 * WooCommerce: "Werbeartikel hinzufügen"
 * - als Button neben "Produkt hinzufügen"
 * - als Untermenüpunkt unter "Produkte"
 * - direkt unter "Produkt hinzufügen"
 * - setzt beim Neuanlegen direkt den Produkttyp "werbeartikel"
 */

/**
 * Untermenü unter Produkte hinzufügen.
 */
add_action('admin_menu', 'wsk_register_werbeartikel_submenu', 99);
function wsk_register_werbeartikel_submenu() {
	add_submenu_page(
		'edit.php?post_type=product',
		'Werbeartikel hinzufügen',
		'Werbeartikel hinzufügen',
		'edit_products',
		'post-new.php?post_type=product&wsk_product_type=werbeartikel'
	);
}

/**
 * Menüpunkt direkt unter "Produkt hinzufügen" einsortieren.
 */
add_action('admin_menu', 'wsk_reorder_werbeartikel_submenu', 999);
function wsk_reorder_werbeartikel_submenu() {
	global $submenu;

	$parent = 'edit.php?post_type=product';

	if (empty($submenu[$parent]) || !is_array($submenu[$parent])) {
		return;
	}

	$target_slug = 'post-new.php?post_type=product&wsk_product_type=werbeartikel';
	$target_item = null;
	$new_menu = array();

	foreach ($submenu[$parent] as $item) {
		if (!empty($item[2]) && $item[2] === $target_slug) {
			$target_item = $item;
			continue;
		}
		$new_menu[] = $item;
	}

	if (!$target_item) {
		return;
	}

	$result = array();
	$inserted = false;

	foreach ($new_menu as $item) {
		$result[] = $item;

		if (
			!$inserted &&
			!empty($item[2]) &&
			$item[2] === 'post-new.php?post_type=product'
		) {
			$result[] = $target_item;
			$inserted = true;
		}
	}

	if (!$inserted) {
		array_unshift($result, $target_item);
	}

	$submenu[$parent] = $result;
}

/**
 * Zusätzlichen Header-Button auf der Produktübersicht einfügen.
 */
add_action('admin_footer-edit.php', 'wsk_add_werbeartikel_header_button');
function wsk_add_werbeartikel_header_button() {
	global $typenow;

	if ($typenow !== 'product') {
		return;
	}

	if (!function_exists('get_current_screen')) {
		return;
	}

	$screen = get_current_screen();
	if (!$screen || $screen->id !== 'edit-product') {
		return;
	}

	$url = admin_url('post-new.php?post_type=product&wsk_product_type=werbeartikel');
	?>
	<script>
	document.addEventListener('DOMContentLoaded', function () {
		var addButton = document.querySelector('.wrap .page-title-action');
		if (!addButton) {
			return;
		}

		if (document.getElementById('wsk-werbeartikel-button')) {
			return;
		}

		var btn = document.createElement('a');
		btn.id = 'wsk-werbeartikel-button';
		btn.className = 'page-title-action';
		btn.href = <?php echo wp_json_encode($url); ?>;
		btn.textContent = 'Werbeartikel hinzufügen';

		addButton.insertAdjacentElement('afterend', btn);
	});
	</script>
	<?php
}

/**
 * Produkttyp "werbeartikel" auf der Produkt-Neuanlage vorauswählen.
 */
add_action('admin_footer-post-new.php', 'wsk_preselect_werbeartikel_product_type');
function wsk_preselect_werbeartikel_product_type() {
	global $typenow;

	if ($typenow !== 'product') {
		return;
	}

	if (empty($_GET['wsk_product_type']) || $_GET['wsk_product_type'] !== 'werbeartikel') {
		return;
	}
	?>
	<script>
	document.addEventListener('DOMContentLoaded', function () {
		var productTypeField = document.getElementById('product-type');

		if (!productTypeField) {
			return;
		}

		productTypeField.value = 'werbeartikel';
		productTypeField.dispatchEvent(new Event('change', { bubbles: true }));
	});
	</script>
	<?php
}
