<?php if ( !defined( 'ABSPATH' ) ) exit;//PHPの宣言と直接アクセスの拒否

//plugin Checkで以下のメッセージが出ないようにするコメント
//Functions declared in the global namespace by a theme/plugin should start with the theme/plugin prefix. Found: "hautility_input_html_js_code_editor".
// phpcs:disable WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedFunctionFound
// ここから警告が無視される↓↓

/* チェックボックスをトグルに変えるCSS */
/* https://getbutterfly.com/on-off-toggle-replacement-for-wordpress-checkboxes/ */
/* inputタグにclass="wppd-ui-toggle"を付与するとトグル化 */
function haup_admin_toggle_design_init(){
	$custom_css_pre = hau_sanitize_css("
/* HAUP Check Switch */
input[type='checkbox'].wppd-ui-toggle {
	-webkit-appearance: none;
	-moz-appearance: none;
	appearance: none;
	-webkit-tap-highlight-color: transparent;
	width: auto;
	height: auto;
	vertical-align: middle;
	position: relative;
	border: 0;
	outline: 0;
	cursor: pointer;
	margin: 0 4px;
	background: none;
	box-shadow: none;
	border-radius:72px;
}
input[type='checkbox'].wppd-ui-toggle:focus {
	box-shadow: none;
}
input[type='checkbox'].wppd-ui-toggle:after {
	content: '';
	font-size: 16px;
	font-weight: 400;
	line-height: 20px;
	text-indent: 12px;
	color: #ffffff;
	width: 60px;
	height: 22px;
	display: inline-block;
	background-color: #a7aaad;
	border-radius: 72px;
	box-shadow: 0 0 12px rgb(0 0 0 / 15%) inset;
}
input[type='checkbox'].wppd-ui-toggle:checked:after {
	text-indent: -14px;
}
input[type='checkbox'].wppd-ui-toggle:before {
	content: '';
	width: 18px;
	height: 18px;
	display: block;
	position: absolute;
	top: 2px;
	left: 2px;
	margin: 0;
	border-radius: 50%;
	background-color: #ffffff;
}
input[type='checkbox'].wppd-ui-toggle:checked:before {
	left: 40px;
}
input[type='checkbox'].wppd-ui-toggle:checked:after {
	content: 'ON';
	background-color: #04ab04;
}
input[type='checkbox'].wppd-ui-toggle:after {
	content: 'OFF';
	background-color: #a7aaad;
}
input[type='checkbox'].wppd-ui-toggle,
input[type='checkbox'].wppd-ui-toggle:before,
input[type='checkbox'].wppd-ui-toggle:after,
input[type='checkbox'].wppd-ui-toggle:checked:before,
input[type='checkbox'].wppd-ui-toggle:checked:after {
	transition: ease .15s;
}
");

//スタイルコードを改行なしで整形する
$custom_css = str_replace(PHP_EOL, '', $custom_css_pre);

	wp_add_inline_style( 'haup-only-admin-style', $custom_css );//インラインでCSS出力
}
add_action('admin_enqueue_scripts','haup_admin_toggle_design_init');



/***** detailsタグのアニメーション表示・フォーム半角変換 *****/
/* https://codepen.io/ddryo-the-encoder/pen/oNdmerr */
function haup_details_add_animation(){
	wp_register_script(
		'details_animation_script',
		plugin_dir_url( __DIR__ ). 'js/detail-animation.min.js' ,//.min.jsを読み込むことに注意
		array(),
		haup_plugin_version(),
		true
	);

	wp_enqueue_script( 'details_animation_script');

	wp_register_script(
		'text_transform_script',
		plugin_dir_url( __DIR__ ) . 'js/text-transform.min.js',//.min.jsを読み込むことに注意
		array(),
		haup_plugin_version(),
		true
	);

	wp_enqueue_script( 'text_transform_script');
}
add_action( 'admin_enqueue_scripts', 'haup_details_add_animation' );

/*** ha-js-input、ha-css-input、ha-html-inputクラスを付けたフォームをコードミラー化 ***/
/*** コードミラーの必要な入力窓が増えたら適用させるページの$hook_suffixを増やすこと ***/
/* $hook_suffixを調べたい時のみ有効化 */
//add_action('admin_notices', 'current_pagehook');

/*** Hima Art Utility: 各種コードエディタの一括読み込み ***/
function hautility_enqueue_all_code_editors( $hook_suffix ) {
	// 1. エディタを使用する可能性がある全てのページIDを一つの配列にまとめる
	$allowed_pages = [
		'ha-utilitiy_page_haumenu_page_security',
		'ha-utilitiy_page_haumenu_page_optimize',
		'ha-utilitiy_page_haumenu_page_ana_ad',
		'ha-utilitiy_page_haumenu_page_utility',
		'ha-utilitiy_page_haumenu_page_media',
		'ha-utilitiy_page_haumenu_page_blocktheme',
		'ha-utilitiy_page_haumenu_page_addcontent',
		'ha-utilitiy_page_haumenu_page_blockoption',
	];

	// 2. 該当しないページなら即座に終了（ガード句）
	if ( ! in_array( $hook_suffix, $allowed_pages, true ) ) {
		return;
	}

	// 3. 各言語の設定を個別に取得（干渉しないようユニークな変数名で）
    
	// PHP/HTML混合モード
	$html_settings = wp_enqueue_code_editor( [ 'type' => 'application/x-httpd-php' ] );

	if ( $html_settings ) {
		wp_localize_script( 'jquery', 'haUtilityHtmlSettings', $html_settings );
		hautility_print_editor_scripts( '.ha-html-input', 'haUtilityHtmlSettings' );
	}

	// JSモード
	$js_settings = wp_enqueue_code_editor( [ 'type' => 'application/javascript' ] );

	if ( $js_settings ) {
		wp_localize_script( 'jquery', 'haUtilityJsSettings', $js_settings );
		hautility_print_editor_scripts( '.ha-js-input', 'haUtilityJsSettings' );
	}

    // CSSモード
	$css_settings = wp_enqueue_code_editor( [ 'type' => 'text/css' ] );

	if ( $css_settings ) {
		wp_localize_script( 'jquery', 'haUtilityCssSettings', $css_settings );
		hautility_print_editor_scripts( '.ha-css-input', 'haUtilityCssSettings' );
	}
}
// 1つのフックで3種類を管理
add_action( 'admin_enqueue_scripts', 'hautility_enqueue_all_code_editors' );

/* 共通のスクリプト出力用ヘルパー関数*/
function hautility_print_editor_scripts( $selector, $l10n_name ) {
	wp_enqueue_script( 'wp-theme-plugin-editor' );
	wp_enqueue_style( 'wp-codemirror' );
	wp_add_inline_script(
		'wp-theme-plugin-editor',
		sprintf(
			'jQuery(document).ready(function($) { $( "%1$s" ).each(function(i, el) { wp.codeEditor.initialize(el, %2$s); }); });',
			$selector,
			$l10n_name
		)
	);
}

// ここまで警告が無視される↑↑
// phpcs:enable WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedFunctionFound
