Jake Vanderwerf
2026-05-11 aa974bf5954d0cca2506003a3cd9ec4eb89ed0bc
content/faq.php
@@ -1,161 +1,252 @@
<?php
// /content/faq.php
function altr_faq():array
use JVBase\registrar\Registrar;
if (!defined('ABSPATH')) {
    exit;
}
add_action('jvbDefineRegistrar', 'altr_faq');
add_action('jvbDefineRegistrarFields', 'altr_faq_fields');
add_action('plugins_loaded', 'altr_faq',1);
//Add fields later so we can verify taxonomies/post types exist
add_action('plugins_loaded', 'altr_faq_fields', 2);
add_filter('altr_FaqSchemaDefault', 'altr_faq_schema');
add_filter('altr_FaqMetaDefault', 'altr_faq_meta');
add_filter('altr_FaqArchiveDefault', 'altr_faq_archive');
function altr_faq(){
    if (!class_exists('JVBase\registrar\Registrar')) {
        return;
    }
    $faq = Registrar::forPost('faq', 'FAQ', 'FAQs')
        ->setIcon('question')
        ->make([
            'rewrite'   => [
                'slug'          => 'faq',
                'with_front'    => false,
            ],
            'taxonomies'    => [
                'section',
            ],
            'rewrite_taxonomy' => 'section'
        ])
        ->setAll([
            'show_directory',
            'is_faq'
        ]);
//$directory = $faq->getConfig('directory');
}
function altr_faq_fields():void
{
    if (!class_exists('JVBase\registrar\Registrar')) {
        return;
    }
    $faq = Registrar::getInstance('faq');
    $breadcrumbs = $faq->config('breadcrumbs');
    $breadcrumbs->setCrumb('section');
    $fields = $faq->fields();
    $fields->addField('section', [
        'type'      => 'selector',
        'subtype'   => 'taxonomy',
        'taxonomy'  => 'section',
        'label'     => 'FAQ Section',
    ]);
}
function altr_faq_schema():array
{
    return [
        'singular'       => 'FAQ',
        'plural'       => 'FAQs',
        'dash_description' => 'Manage your answers',
        'capability_type' => ['faq', 'faqs'],
        'breadcrumb'    => 'FAQ',
        'addCrumb'      => 'section',
        'show_directory'=> true,
        'directory_extra'=> ['section'],
        'dash_title'    => 'FAQs',
        'icon'         => 'question',
        'rewrite_taxonomy' => 'section',
        'rewrite'      => [
            'slug'       => 'faq',
            'with_front' => false,
        ],
        'fields'       => [
            'post_title'     => [
                'type'  => 'text',
                'label' => 'Question',
            ],
            'post_status'         => [
                'type'      => 'radio',
                'label'     => 'Status',
                'hidden'    => true,
                'options'   => [
                    'publish'   => 'Show',
                    'draft'     => 'Hide',
                    'trash'     => 'Scrap',
                    'delete'    => 'Permanently Delete'
                ]
            ],
            'post_content'        => [
                'type'  => 'textarea',
                'label' => 'Answer',
                'quill' => true,
            ],
        ],
        'single_image' => false,
        'upload_title' => 'Upload Before & Afters',
        'seo'   => [
            'meta'  => [
                'title'         => '{{post_title}} | FAQ',
                'description'   => '{{post_excerpt}}'
            ],
            'schema' => [
                'type'      => 'FAQPage',
                'question'   => '{{post_title}}',
                'answer'    => '{{post_excerpt}}',
            ],
            'archive' => [
                'type'  => 'FAQPage',
                'name'  => 'Common Questions about Laser Tattoo Removal',
            ],
        ]
        'type'              => 'JVBase\managers\SEO\render\Thing\CreativeWork\WebPage\QAPage',
        'name'              => '{{post_title}} | FAQs on {{section.name}}',
    ];
}
add_action('wp_enqueue_scripts', 'nebDashScripts', 9999);
function nebDashScripts() {
    global $wp;
    $page = str_replace('dash/', '', $wp->request);
    if ($page === 'settings') {
        wp_enqueue_script('jvb-form');
        wp_enqueue_script('jvb-tabs');
        wp_enqueue_script('jvb-populate-form');
        wp_enqueue_script('jvb-copy-hours');
        wp_enqueue_script('jvb-quill');
        wp_enqueue_script('jvb-store');
        $script = 'function loadSettingsPage() {
            let tabs = new window.jvbTabs(document.querySelector(".replace"));
                  let store = new window.jvbStore({
                     name: "options",
                     endpoint: "options",
                     headers: {
                            "action_nonce": jvbSettings.dash,
                            }
                  });
                  let form = new window.jvbForm(store);
                  let forms = [ "#hours", "#menu-sections"];
                  let setForms = {};
                  forms.forEach(f => {
                      let gotF = document.querySelector(`form${f}`);
                      setForms[f] = form.registerForm(gotF);
                  });
                  form.subscribe((event, data) => {
                            switch (event) {
                                case "form-submit":
                                case "form-autosave":
                                    window.jvbQueue.addToQueue({
                                        endpoint: "options",
                                        headers: {
                                            "action_nonce": jvbSettings.dash,
                                        },
                                        data: data.changes,
                                        popup: `Saving options...`,
                                        title: "Saving Options"
                                    });
                                    break;
                            }
                        });
               }
               document.addEventListener("DOMContentLoaded", ()=>{
                       loadSettingsPage()
                    });
               ';
        $output = wp_add_inline_script('jvb-form', $script, 'after');
    } elseif ($page === 'dash') {
        wp_enqueue_script('jvb-form');
        wp_enqueue_script('jvb-store');
        $script = 'function loadDashPage() {
                let store = new window.jvbStore({
                    name: "options",
                    endpoint: "options",
                    headers: {
                        "action_nonce": jvbSettings.dash,
                    }
                });
                let form = new window.jvbForm(store);
                let forms = [ "#options"];
                let setForms = {};
                forms.forEach(f => {
                    let gotF = document.querySelector(`form${f}`);
                    setForms[f] = form.registerForm(gotF);
                });
                form.subscribe((event, data) => {
                    switch (event) {
                        case "form-submit":
                        case "form-autosave":
                            window.jvbQueue.addToQueue({
                                endpoint: "options",
                                headers: {
                                    "action_nonce": jvbSettings.dash,
                                },
                                data: data.changes,
                                popup: `Saving options...`,
                                title: "Saving Options"
                            });
                            break;
                    }
                });
            }
            document.addEventListener("DOMContentLoaded", ()=>{
               loadDashPage()
            });
            ';
//        $output = wp_add_inline_script('jvb-form', $script, 'after');
    }
function altr_faq_meta():array
{
    return[
        'name' => '{{post_title}} | FAQs {{section.name}}',
    ];
}
function altr_faq_archive(array $defaults):array
{
    return array_merge($defaults, [
        'name' => 'Frequently Asked Questions',
        'description' => 'Common Questions about Laser Tattoo Removal.'
    ]);
}
function altr_faq_reference_schema(array $defaults):array
{
    return $defaults;
}
//function altr_faq():array
//{
//    return [
//        'singular'       => 'FAQ',
//        'plural'       => 'FAQs',
//        'dash_description' => 'Manage your answers',
//        'capability_type' => ['faq', 'faqs'],
//        'breadcrumb'    => 'FAQ',
//        'addCrumb'      => 'section',
//        'show_directory'=> true,
//        'directory_extra'=> ['section'],
//        'dash_title'    => 'FAQs',
//        'icon'         => 'question',
//        'rewrite_taxonomy' => 'section',
//        'rewrite'      => [
//            'slug'       => 'faq',
//            'with_front' => false,
//        ],
//        'fields'       => [
//            'post_title'     => [
//                'type'  => 'text',
//                'label' => 'Question',
//            ],
//            'post_status'         => [
//                'type'      => 'radio',
//                'label'     => 'Status',
//                'hidden'    => true,
//                'options'   => [
//                    'publish'   => 'Show',
//                    'draft'     => 'Hide',
//                    'trash'     => 'Scrap',
//                    'delete'    => 'Permanently Delete'
//                ]
//            ],
//            'post_content'        => [
//                'type'  => 'textarea',
//                'label' => 'Answer',
//                'quill' => true,
//            ],
//        ],
//        'single_image' => false,
//        'upload_title' => 'Upload Before & Afters',
//        'seo'   => [
//            'meta'  => [
//                'title'         => '{{post_title}} | FAQ',
//                'description'   => '{{post_excerpt}}'
//            ],
//            'schema' => [
//                'type'      => 'FAQPage',
//                'question'   => '{{post_title}}',
//                'answer'    => '{{post_excerpt}}',
//            ],
//            'archive' => [
//                'type'  => 'FAQPage',
//                'name'  => 'Common Questions about Laser Tattoo Removal',
//            ],
//        ]
//    ];
//}
//
//
//add_action('wp_enqueue_scripts', 'nebDashScripts', 9999);
//function nebDashScripts() {
//    global $wp;
//    $page = str_replace('dash/', '', $wp->request);
//    if ($page === 'settings') {
//        wp_enqueue_script('jvb-form');
//        wp_enqueue_script('jvb-tabs');
//        wp_enqueue_script('jvb-populate-form');
//        wp_enqueue_script('jvb-copy-hours');
//        wp_enqueue_script('jvb-quill');
//        wp_enqueue_script('jvb-store');
//        $script = 'function loadSettingsPage() {
//            let tabs = new window.jvbTabs(document.querySelector(".replace"));
//                let store = new window.jvbStore({
//                   name: "options",
//                   endpoint: "options",
//                   headers: {
//                          "action_nonce": jvbSettings.dash,
//                            }
//                });
//
//                let form = new window.jvbForm(store);
//                let forms = [ "#hours", "#menu-sections"];
//                let setForms = {};
//                forms.forEach(f => {
//                    let gotF = document.querySelector(`form${f}`);
//                    setForms[f] = form.registerForm(gotF);
//
//                });
//
//                form.subscribe((event, data) => {
//                            switch (event) {
//                                case "form-submit":
//                                case "form-autosave":
//                                    window.jvbQueue.addToQueue({
//                                        endpoint: "options",
//                                        headers: {
//                                            "action_nonce": jvbSettings.dash,
//                                        },
//                                        data: data.changes,
//                                        popup: `Saving options...`,
//                                        title: "Saving Options"
//                                    });
//                                    break;
//                            }
//                        });
//             }
//             document.addEventListener("DOMContentLoaded", ()=>{
//                       loadSettingsPage()
//                    });
//             ';
//        $output = wp_add_inline_script('jvb-form', $script, 'after');
//    } elseif ($page === 'dash') {
//        wp_enqueue_script('jvb-form');
//        wp_enqueue_script('jvb-store');
//        $script = 'function loadDashPage() {
//
//                let store = new window.jvbStore({
//                    name: "options",
//                    endpoint: "options",
//                    headers: {
//                        "action_nonce": jvbSettings.dash,
//                    }
//                });
//
//                let form = new window.jvbForm(store);
//                let forms = [ "#options"];
//                let setForms = {};
//                forms.forEach(f => {
//                    let gotF = document.querySelector(`form${f}`);
//                    setForms[f] = form.registerForm(gotF);
//
//                });
//
//                form.subscribe((event, data) => {
//                    switch (event) {
//                        case "form-submit":
//                        case "form-autosave":
//                            window.jvbQueue.addToQueue({
//                                endpoint: "options",
//                                headers: {
//                                    "action_nonce": jvbSettings.dash,
//                                },
//                                data: data.changes,
//                                popup: `Saving options...`,
//                                title: "Saving Options"
//                            });
//                            break;
//                    }
//                });
//            }
//            document.addEventListener("DOMContentLoaded", ()=>{
//               loadDashPage()
//            });
//            ';
////        $output = wp_add_inline_script('jvb-form', $script, 'after');
//    }
//}