<?php
if ( ! defined( 'ABSPATH' ) ) { exit; }
add_action('init','lt_theme_register_page_meta');
add_action('add_meta_boxes_page','lt_theme_page_options_box');
add_action('save_post_page','lt_theme_save_page_options');

function lt_theme_page_meta_schema(){return array(
    'lt_page_hide_title'=>'bool','lt_page_hero_layout'=>'text','lt_page_hero_image'=>'int','lt_page_hero_color'=>'color','lt_page_heading'=>'text','lt_page_intro'=>'textarea','lt_page_breadcrumbs'=>'select','lt_page_layout'=>'select','lt_page_header_style'=>'select','lt_page_footer_style'=>'select','lt_page_transparent_header'=>'bool','lt_page_cta'=>'select','lt_page_cta_id'=>'cta'
);}
function lt_theme_register_page_meta(){foreach(lt_theme_page_meta_schema() as $key=>$type)register_post_meta('page',$key,array('single'=>true,'show_in_rest'=>true,'type'=>in_array($type,array('bool','int','cta'),true)?'integer':'string','sanitize_callback'=>function($v)use($type){if(in_array($type,array('bool','int','cta'),true))return absint($v);if('textarea'===$type)return sanitize_textarea_field($v);if('color'===$type)return sanitize_hex_color($v)?:'';return sanitize_text_field($v);},'auth_callback'=>function(){return current_user_can('edit_pages');}));}
function lt_theme_page_options_box(){add_meta_box('lt-page-options',__('Law Firm Page Options','law-temple-theme'),'lt_theme_page_options_render','page','side','default');}
function lt_theme_page_options_render($post){
    wp_nonce_field('lt_page_options','lt_page_nonce');
    $fields=array(
        'lt_page_hide_title'=>array(__('Hide page title','law-temple-theme'),'checkbox'),
        'lt_page_hero_layout'=>array(__('Hero layout','law-temple-theme'),'select',array('default'=>__('Default','law-temple-theme'),'none'=>__('None','law-temple-theme'),'minimal'=>__('Minimal','law-temple-theme'),'image'=>__('Image background','law-temple-theme'),'split'=>__('Split image / text','law-temple-theme'))),
        'lt_page_hero_image'=>array(__('Hero image','law-temple-theme'),'media'),
        'lt_page_hero_color'=>array(__('Hero background colour','law-temple-theme'),'color'),
        'lt_page_heading'=>array(__('Custom heading','law-temple-theme'),'text'),
        'lt_page_intro'=>array(__('Intro text','law-temple-theme'),'textarea'),
        'lt_page_breadcrumbs'=>array(__('Breadcrumbs','law-temple-theme'),'select',array('inherit'=>__('Inherit','law-temple-theme'),'show'=>__('Show','law-temple-theme'),'hide'=>__('Hide','law-temple-theme'))),
        'lt_page_layout'=>array(__('Page layout','law-temple-theme'),'select',array('default'=>__('Default','law-temple-theme'),'full'=>__('Full width','law-temple-theme'),'builder'=>__('Builder Canvas','law-temple-theme'),'sidebar'=>__('Sidebar','law-temple-theme'))),
        'lt_page_header_style'=>array(__('Header style','law-temple-theme'),'select',array('inherit'=>__('Inherit','law-temple-theme'),'standard'=>__('Standard','law-temple-theme'),'transparent'=>__('Transparent','law-temple-theme'),'dark'=>__('Dark','law-temple-theme'))),
        'lt_page_footer_style'=>array(__('Footer style','law-temple-theme'),'select',array('inherit'=>__('Inherit','law-temple-theme'),'standard'=>__('Standard','law-temple-theme'),'minimal'=>__('Minimal','law-temple-theme'),'dark'=>__('Dark','law-temple-theme'))),
        'lt_page_transparent_header'=>array(__('Transparent header','law-temple-theme'),'checkbox'),
        'lt_page_cta'=>array(__('Global CTA','law-temple-theme'),'select',array('inherit'=>__('Inherit','law-temple-theme'),'show'=>__('Show','law-temple-theme'),'hide'=>__('Hide','law-temple-theme'))),'lt_page_cta_id'=>array(__('Specific reusable CTA','law-temple-theme'),'cta'),
    );
    foreach($fields as $key=>$f){$v=get_post_meta($post->ID,$key,true);echo '<p><label><strong>'.esc_html($f[0]).'</strong><br>';
        if('checkbox'===$f[1])echo '<input type="checkbox" name="lt_page['.esc_attr($key).']" value="1" '.checked($v,1,false).'>';
        elseif('textarea'===$f[1])echo '<textarea style="width:100%" rows="4" name="lt_page['.esc_attr($key).']">'.esc_textarea($v).'</textarea>';
        elseif('select'===$f[1]){echo '<select style="width:100%" name="lt_page['.esc_attr($key).']">';foreach($f[2] as $a=>$b)echo '<option value="'.esc_attr($a).'" '.selected($v,$a,false).'>'.esc_html($b).'</option>';echo '</select>';}
        elseif('color'===$f[1])echo '<input style="width:100%" type="color" name="lt_page['.esc_attr($key).']" value="'.esc_attr($v?:'#FBFAF7').'">';
        elseif('media'===$f[1]){$img=$v?wp_get_attachment_image(absint($v),'thumbnail'):'';echo '<div class="lt-media-field"><div class="lt-media-preview">'.$img.'</div><input type="hidden" name="lt_page['.esc_attr($key).']" value="'.esc_attr(absint($v)).'"><button type="button" class="button lt-media-select">'.esc_html__('Choose image','law-temple-theme').'</button> <button type="button" class="button-link-delete lt-media-remove">'.esc_html__('Remove','law-temple-theme').'</button></div>';}
        elseif('cta'===$f[1]){$items=get_posts(array('post_type'=>'lt_cta','post_status'=>array('publish','draft'),'posts_per_page'=>-1,'orderby'=>'menu_order title','order'=>'ASC'));echo '<select style="width:100%" name="lt_page['.esc_attr($key).']"><option value="0">'.esc_html__('Use global CTA','law-temple-theme').'</option>';foreach($items as $item)echo '<option value="'.esc_attr($item->ID).'" '.selected(absint($v),$item->ID,false).'>'.esc_html($item->post_title).'</option>';echo '</select>';}
        else echo '<input style="width:100%" name="lt_page['.esc_attr($key).']" value="'.esc_attr($v).'">';
        echo '</label></p>';
    }
}
function lt_theme_save_page_options($id){if(!isset($_POST['lt_page_nonce'])||!wp_verify_nonce(sanitize_text_field(wp_unslash($_POST['lt_page_nonce'])),'lt_page_options')||!current_user_can('edit_page',$id))return;$raw=isset($_POST['lt_page'])&&is_array($_POST['lt_page'])?wp_unslash($_POST['lt_page']):array();foreach(lt_theme_page_meta_schema() as $key=>$type){$v=$raw[$key]??(in_array($type,array('bool','int'),true)?0:'');if(in_array($type,array('bool','int','cta'),true))$v=absint($v);elseif('textarea'===$type)$v=sanitize_textarea_field($v);elseif('color'===$type)$v=sanitize_hex_color($v)?:'';else$v=sanitize_text_field($v);update_post_meta($id,$key,$v);}}

function lt_theme_page_body_classes($classes){if(!is_page())return $classes;$id=get_queried_object_id();$header=get_post_meta($id,'lt_page_header_style',true);$footer=get_post_meta($id,'lt_page_footer_style',true);if(!$header||'inherit'===$header)$header=lt_theme_option('page_default_header_style','standard');if(!$footer||'inherit'===$footer)$footer=lt_theme_option('page_default_footer_style','standard');if($header)$classes[]='lt-page-header-'.sanitize_html_class($header);if($footer)$classes[]='lt-page-footer-'.sanitize_html_class($footer);if('transparent'===$header||get_post_meta($id,'lt_page_transparent_header',true))$classes[]='lt-has-transparent-header';return $classes;}add_filter('body_class','lt_theme_page_body_classes',20);
