From 76d68c97f572120dc75d0501cc82acf4022d6b33 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Tue, 23 Dec 2025 20:14:14 +0000
Subject: [PATCH] =legacy rebrand finished

---
 content/faq.php |  167 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 162 insertions(+), 5 deletions(-)

diff --git a/content/faq.php b/content/faq.php
index 645ed34..a43268c 100644
--- a/content/faq.php
+++ b/content/faq.php
@@ -1,14 +1,16 @@
 <?php
-// /content/art.php
+// /content/faq.php
 function altr_faq():array
 {
     return [
-        'singular'       => 'Frequently Asked Question',
-        'plural'       => 'Frequently Asked Questions',
+        'singular'       => 'FAQ',
+        'plural'       => 'FAQs',
         'dash_description' => 'Manage your answers',
+        'capability_type' => ['faq', 'faqs'],
         'breadcrumb'    => 'FAQ',
-        'hide_single'  => true,
+        'dash_title'    => 'FAQs',
         'icon'         => 'question',
+        'rewrite_taxonomy' => 'section',
         'rewrite'      => [
             'slug'       => 'faq',
             'with_front' => false,
@@ -18,7 +20,18 @@
                 'type'  => 'text',
                 'label' => 'Question',
             ],
-            'answer'        => [
+            '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,
@@ -26,5 +39,149 @@
         ],
         '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');
+    }
+}
+
+add_filter('jvbBreadcrumbs', 'altrFAQCrumbs');
+function altrFAQCrumbs(array $crumbs) {
+    if (is_singular(BASE.'faq')) {
+        $ID = get_the_ID();
+        $terms = get_the_terms($ID, BASE.'section');
+        if ($terms && !is_wp_error($terms)) {
+            $last = array_pop($crumbs);
+            $term = $terms[0];
+            $ancestors = get_ancestors($term->term_id, BASE.'section', 'taxonomy');
+            $ancestors = array_reverse($ancestors);
+            foreach ($ancestors as $ancestor) {
+                $aTerm = get_term($ancestor, BASE.'section');
+                if ($aTerm && !is_wp_error($aTerm)) {
+                    $crumbs[] = [
+                        'name' => $aTerm->name,
+                        'url'   => get_term_link($ancestor, BASE.'section')
+                    ];
+                }
+            }
+            $crumbs[] = [
+                'name' => $term->name,
+                'url'   => get_term_link($term, BASE.'section')
+            ];
+            $crumbs[] = $last;
+        }
+    }
+    return $crumbs;
+}
\ No newline at end of file

--
Gitblit v1.10.0