From f383c3a4325bc173b6f9676274bc19694be6f9c0 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Fri, 05 Jun 2026 16:49:44 +0000
Subject: [PATCH] =Modified the Feed Fields config in Registrar, to utilize the built in functionality there
---
alegacy.php | 397 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 391 insertions(+), 6 deletions(-)
diff --git a/alegacy.php b/alegacy.php
index cc46d58..3416d05 100644
--- a/alegacy.php
+++ b/alegacy.php
@@ -43,7 +43,8 @@
exit;
}
-use JVBase\managers\CacheManager;
+use JVBase\base\Site;
+use JVBase\registrar\Registrar;
add_filter('jvb_base', function () {
return 'altr_';
@@ -53,15 +54,85 @@
const AJV_DIR = WP_PLUGIN_DIR . '/alegacy';
define('AJV_URL', plugin_dir_url(__FILE__));
+add_filter('jvbChildDir', function() {
+ return AJV_DIR;
+});
+add_filter('jvbChildUrl', function() {
+ return AJV_URL;
+});
+
require(AJV_DIR . '/content/_setup.php');
-//require(AJV_DIR . '/dashboard/_setup.php');
-//require(AJV_DIR . '/forms/_setup.php');
+require(AJV_DIR . '/dashboard/_setup.php');
+require(AJV_DIR . '/email/_setup.php');
+require(AJV_DIR . '/forms/_setup.php');
require(AJV_DIR . '/login/_setup.php');
require(AJV_DIR . '/taxonomies/_setup.php');
-//require(AJV_DIR . '/users/_setup.php');
+require(AJV_DIR . '/users/_setup.php');
+require(AJV_DIR . '/blocks/_setup.php');
+require(AJV_DIR . '/seo.php');
//require(AJV_DIR . '/files/fileManagement.php');
+add_action('plugins_loaded', 'aei_siteDefinition', 2);
+add_action('jvbLoadDefinitions', 'aei_siteDefinition');
+function aei_siteDefinition():void
+{
+ if (!class_exists('JVBase\base\Site')) {
+ return;
+ }
+ $site = Site::getInstance();
+ $site->set('icons', 'light');
+ $site->setAll([
+ 'is_directory',
+ 'dashboard',
+ 'magic_link',
+ 'feed_block',
+// 'faq',
+ 'referrals'
+// 'has_map',
+// 'referrals',
+ ]);
+ $site->setIntegrations([
+ 'cloudflare',
+ 'facebook',
+ 'gmb',
+ 'maps',
+ 'helcim',
+ 'postmark',
+ 'instagram',
+ 'umami'
+ ]);
+
+ $login = $site->login();
+ $site->setDirectorySingular('List');
+ $site->setDirectoryPlural('Lists');
+
+
+}
+
+//add_action('plugins_loaded', 'aei_membership_settings', 10);
+//function aei_membership_settings():void
+//{
+// if (!class_exists('JVBase\base\Site')) {
+// return;
+// }
+// $site = Site::getInstance();
+// $membership = $site->membership();
+// $membership->setAll([
+// 'invitable',
+// 'term_approval',
+// 'member_verified'
+// ]);
+//
+// $membership->setInvitable([
+// 'artist' => ['artist', 'enthusiast'],
+// 'enthusiast' => ['enthusiast']
+// ]);
+//
+// $membership->setApprovers(['artist']);
+// $membership->setCanSeeForum(['artist']);
+//}
+
/**
* Defines base options like:
* - directory & Membership
@@ -78,18 +149,22 @@
* - rewrite rules
* - archive title
*/
-add_filter('jvb_site', 'altr_setup_site');
+//add_filter('jvb_site', 'altr_setup_site');
function altr_setup_site():array
{
return [
'icons' => 'light',
'is_directory' => true, //as in, a membership directory
+ 'directory_label' => ['List', 'Lists'],
'has_membership' => false,
'has_map' => true,
'dashboard' => true,
+ 'faq' => true,
+ 'referrals' => true,
+ 'magicLink' => true,
'support' => false,
'feed_block' => true,
- 'email_notifications' => false,
+ 'email_notifications' => true,
'integrations' => [
'bluesky' => true,
'cloudflare' => true,
@@ -97,6 +172,7 @@
'maps' => true,
'gmb' => true,
'helcim' => false,
+ 'postmark' => true,
'instagram' => true,
'square' => false,
'umami' => true,
@@ -140,3 +216,312 @@
//{
// return [];
//}
+
+
+add_filter('jvbAboveHeader', 'altr_legacy_header');
+function altr_legacy_header(string $header):string
+{
+ return '<p><b>WED - SUN</b> <span class="hide-small"> </span>11<span class="hide-small">:00</span>AM - 6<span class="hide-small">:00</span>PM</p><p>By Appointment<span class="hide-small"> Only</span></p>';
+}
+
+
+
+add_filter('jvbMenuExtra', 'altr_contact_nav', 10, 3);
+function altr_contact_nav(string $nav, string $menuName, array $block):string
+{
+ if (array_key_exists('attrs', $block)
+ && array_key_exists('className', $block['attrs'])
+ && $block['attrs']['className'] === 'is-style-fixed'
+ && $nav === '') {
+ $call = '<li class="call"><a href="'.jvbPhoneLink(8259257398).'" title="Call Us">'.jvbIcon('phone').'<span class="screen-reader-text">Call Us</span></a></li>';
+ $text = '<li><a href="'.jvbTextLink(8259257398).'" title="Text Us">'.jvbIcon('chat').'<span class="hide-small">825.925.7398</span><sup class="hide-small">PEWU</sup></a></li>';
+ $email = '<li><a href="'.jvbMailToLink(
+ 'info@legacytattooremoval.ca',
+ 'Contact from Our Website'
+ ).'" title="Email Us">'.jvbIcon('envelope').'<span class="hide-small">info@legacytattooremoval.ca</span></a></li>';
+
+ return $call.$text.$email;
+ }
+ if (array_key_exists('attrs', $block)
+ && array_key_exists('className', $block['attrs'])
+ && $block['attrs']['className'] === 'is-style-floating'
+ ) {
+ return $nav.'<li><ul class="socials">
+ <li>
+ <a href="https://www.facebook.com/LegacyTattooRemoval/" target="_blank" rel="nofollow" title="Find us on Facebook">
+ '.jvbIcon('facebook-logo').'
+ <span class="screen-reader-text">
+ Find us on Facebook
+ </span>
+ </a>
+ </li>
+ <li>
+ <a href="https://www.instagram.com/LegacyTattooRemoval/" target="_blank" rel="nofollow" title="Find us on Instagram">
+ '.jvbIcon('instagram-logo').'
+ <span class="screen-reader-text">
+ Find us on Instagram
+ </span>
+ </a>
+ </li>
+ <li>
+ <a href="https://bsky.app/profile/legacytattooremoval.ca" target="_blank" rel="nofollow" title="Find us on Bluesky">
+ '.jvbIcon('butterfly').'
+ <span class="screen-reader-text">
+ Find us on Bluesky
+ </span>
+ </a>
+ </li>
+ </ul></li>';
+ }
+
+ return $nav;
+}
+
+add_filter('jvbBeforeFooter', 'altr_acknowledgement');
+function altr_acknowledgement():string
+{
+
+ return '<p>amiskwacîwâskahikan ᐊᒥᐢᑲᐧᒋᐋᐧᐢᑲᐦᐃᑲᐣ</p><p><a href="https://www.treatysix.org/#comp-lkljqlw1" title="Learn More">Treaty 6 territory</a></p><p>Edmonton, Alberta, Canada</p>';
+}
+
+
+add_action('jvbBlockStyles', 'altr_blockStyles');
+function altr_blockStyles()
+{
+ register_block_style(
+ 'core/list',
+ [
+ 'name'=>'blocky',
+ 'label' => __('Blocky', 'altr')
+ ]
+ );
+ register_block_style(
+ 'core/group',
+ [
+ 'name'=>'triangle',
+ 'label' => __('Triangle', 'altr')
+ ]
+ );
+}
+
+
+
+
+add_action( 'init', 'altr_add_excerpts_to_pages' );
+function altr_add_excerpts_to_pages() {
+ add_post_type_support( 'page', 'excerpt' );
+}
+
+add_filter('jvbRegisterCustomIcons', 'altr_custom_icons');
+function altr_custom_icons(array $icons):array
+{
+ $icons['logo-triangle'] = AJV_DIR . '/assets/icons/triangle.svg';
+ $icons['logo-triangle-fill'] = AJV_DIR . '/assets/icons/triangle-fill.svg';
+ $icons['logo-text'] = AJV_DIR . '/assets/icons/text.svg';
+ $icons['logo-text-only'] = AJV_DIR . '/assets/icons/text-only.svg';
+ $icons['logo-complete'] = AJV_DIR . '/assets/icons/triangle text back.svg';
+ return $icons;
+}
+
+add_filter('jvbLoadingIcon', 'altr_loading_icon');
+function altr_loading_icon():string
+{
+ return 'logo-triangle';
+}
+
+function altr_title_generator(?string $type = null):string
+{
+ if (!$type) {
+ $obj = get_queried_object();
+
+ if (is_tax()) {
+ $type = $obj->taxonomy;
+ } elseif (is_post_type_archive()) {
+ $type = $obj->name;
+ } elseif (is_singular()) {
+ $type = $obj->post_type;
+ } else {
+ error_log('Could not determine type: '.print_r($obj, true));
+ return '';
+ }
+ }
+
+
+ $registrar = Registrar::getInstance($type);
+ if (!$registrar) {
+ error_log('Could not find registrar for '.$type);
+ return '';
+ }
+
+ switch($registrar->getSlug()) {
+ case 'progress':
+ return $registrar->getPlural();
+ case 'skin_type':
+ $name = get_queried_object()->name;
+ $basic = match($name) {
+ 'i','ii','iii','iv type 1' => 'Lighter Skin',
+ 'iv type 2', 'v', 'vi' => 'Darker Skin'
+ };
+ return '<small>How We Remove Tattoos On </small> '.$basic.' <small>(FitzPatrick Skin Type '.$name.')</small>';
+ case 'age':
+ $name = strtolower(get_queried_object()->name);
+ if (str_contains($name, 'years')) {
+ $name = str_replace('years', 'year', $name);
+ }
+ if (str_contains($name, 'months')) {
+ $name = str_replace('months', 'month', $name);
+ }
+ if (str_contains($name, 'weeks')) {
+ $name = str_replace('weeks', 'week', $name);
+ }
+ return '<small>How We Remove </small>'.ucwords($name).' Old<small> Tattoos</small>';
+
+ case 'timeline':
+ $name = strtolower(get_queried_object()->name);
+ return '<small>Laser Tattoo Removal </small>'.ucwords($name).' Later';
+ case 'goal':
+ $name = get_queried_object()->name;
+ $name = match($name) {
+ 'Complete Removal' => 'Completely Remove Tattoos',
+ 'Cover Up Tattoo' => 'Fade Tattoos for a Cover Up',
+ default => 'Clean Up Tattoo Blowout'
+ };
+ return '<small>How we </small>'.$name;
+ case 'style':
+ case 'body_part':
+ case 'theme':
+ $name = get_queried_object()->name;
+ return '<small>How We Remove </small>'.ucwords($name).' Tattoos';
+ default:
+ error_log('No title preset found for '.$registrar->getSlug());
+ return '';
+ }
+}
+
+add_filter('get_the_archive_title', 'altr_archive_title', 10, 1);
+function altr_archive_title(string $title):string
+{
+ return altr_title_generator();
+}
+
+add_filter('the_seo_framework_title_from_generation', 'altr_title_filter', 10, 2);
+function altr_title_filter(string $title, $args):string
+{
+ $newTitle = '';
+
+ $tsf = tsf();
+
+ $type = null;
+ if (null === $args) {
+ // We're in the loop
+ if ($tsf->query()->is_tax()) {
+ $type = $tsf->query()->get_current_taxonomy();
+ }
+ } else {
+ if (!empty($args['taxonomy']??'')) {
+ $type = $args['taxonomy'];
+ }
+ }
+
+ if ($type) {
+ $newTitle = altr_title_generator(jvbNoBase($type));
+ }
+
+ return empty($newTitle) ? $title : wp_strip_all_tags($newTitle);
+}
+
+
+//add_filter('jvbSummaryHeader', 'altr_progress_summary_header', 10, 2);
+//
+//function altr_progress_summary_header(string $title, string $type):string
+//{
+// $pre = $singular = '';
+// $registrar = Registrar::getInstance($type);
+//
+// switch ($type) {
+//
+//
+// }
+// $pre = 'Before & After Laser Tattoo Removal';
+// if (is_tax()) {
+// return '<small>Before & After </small>'.get_queried_object()->name.'<small> Tattoo Removal</small>';
+// } elseif (is_post_type_archive()) {
+// $singular = Registrar::getInstance($type)->getSingular();
+// } elseif (is_singular()) {
+// global $post;
+// $singular = $post->post_title;
+// }
+// return '<small>Before & After Laser Tattoo Removal</small>'.$singular;
+//}
+add_filter('jvbSummaryHeaderExtra', 'altr_progress_summary_header_extra', 10, 2);
+
+function altr_progress_summary_header_extra(string $title, string $type):string
+{
+ switch ($type) {
+ case 'progress':
+ return '<p>See real results of tattoos before and after laser tattoo removal.</p><p>Filter results by number of treatments, age of original tattoo, location on body, fading goal, skin type, timeline between treatments, tattoo style, or tattoo subject matter.</p>';
+ }
+ return $title;
+}
+
+//add_filter('jvbSummaryDetails', 'altr_summary_details', 10, 2);
+//function altr_summary_details(array $sections, string $type):array
+//{
+// switch ($type) {
+// case 'progress':
+// $sections = [
+// 'summary' => '<p>We recommend spacing treatments out at least 12 weeks apart for best results.</p><p>See the difference at Legacy.</p>'
+// ];
+// break;
+// }
+// return $sections;
+//}
+
+add_filter('the_seo_framework_meta_render_data', 'altr_no_next_archive', 10, 1);
+function altr_no_next_archive($tags) {
+ if (is_tax() || is_post_type_archive('altr_progress') || is_post_type_archive('altr_terms') || is_post_type_archive('altr_faq')) {
+ if (array_key_exists('next', $tags)) {
+ unset($tags['next']);
+ }
+ }
+ return $tags; // Keep the link for other pages
+}
+
+add_filter('jvb_referral_booking_url', 'altr_consult_link');
+function altr_consult_link(string $link):string
+{
+ return 'https://legacytattooremoval.janeapp.com/#/staff_member/2/treatment/15/';
+}
+
+add_filter('jvb_referral_estimate_url', 'altr_estimate_link');
+function altr_estimate_link(string $link):string
+{
+ return 'https://legacytattooremoval.ca/get-an-estimate/';
+}
+
+add_filter('jvbLogoIcon', 'altr_logostring');
+function altr_logostring():string
+{
+ return 'logo-triangle';
+}
+
+add_filter('jvbDefaultIcon', 'altr_default_icon');
+function altr_default_icon():string
+{
+ return 'triangle';
+}
+
+add_action('init', 'altr_RegisterScripts', 5);
+
+function altr_RegisterScripts() {
+ wp_enqueue_script(
+ 'altr-base',
+ AJV_URL.'assets/js/legacy.js',
+ [],
+ '1.0',
+ [
+ 'strategy' => 'defer',
+ 'in_footer' => true
+ ]
+ );
+}
\ No newline at end of file
--
Gitblit v1.10.0