From 5fe601cd1962dca79c0765a54ce864af5abb7d40 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Sun, 26 Apr 2026 22:37:14 +0000
Subject: [PATCH] =test
---
content/art.php | 525 +++++++++++++++++++++++++++++++++++++++-------------------
1 files changed, 353 insertions(+), 172 deletions(-)
diff --git a/content/art.php b/content/art.php
index 9b4abaa..af748ee 100644
--- a/content/art.php
+++ b/content/art.php
@@ -1,189 +1,333 @@
<?php
// /content/art.php
use JVBase\meta\Meta;
+use JVBase\registrar\Registrar;
-function ajv_art():array
-{
- return [
- 'singular' => 'Art',
- 'plural' => 'Art',
- 'dash_title' => 'Art',
- 'dash_description' => 'Manage your art posts',
- 'directory' => 'Art',
- 'breadcrumb' => 'Art',
- 'addCrumb' => 'form',
- 'hide_single' => false,
- 'show_feed' => true,
- 'show_directory'=> true,
- 'favouritable' => true,
- 'karma' => false,
- 'icon' => 'palette',
- 'seo' => [
- 'schema' => [
- 'type' => 'VisualArtwork',
- 'name' => '{{post_title}}',
- 'description' => '{{post_excerpt}}',
- 'about' => ['@id' => '{{site_url}}/#art'],
- 'associatedMedia' => '{{post_thumbnail}}',
- 'dateCreated' => '{{post_date}}',
- // artform, artMedium, creator, keywords auto-enriched by VisualArtworkResolver
- ],
- 'meta' => [
- 'title' => '{{post_title}} — {{form.name}} Art | Handmade. Human.',
- 'description' => '{{post_excerpt}}',
- ],
- 'archive' => [
- 'type' => 'CollectionPage',
- 'name' => 'Canadian Art. Made in Edmonton, Alberta.',
- 'description' => 'Handmade sculpture, jewelry, and more from Edmonton, Alberta.',
- ],
- ],
- 'feed' => [
- 'single' => [
- 'pre_title' => 'Canadian Art. Made in Edmonton, Alberta.',
- ],
- 'archive' => [
+if (!defined('ABSPATH')) {
+ exit;
+}
+
+add_action('plugins_loaded', 'ajv_art',1);
+//Add fields later so we can verify taxonomies/post types exist
+add_action('plugins_loaded', 'ajv_art_fields', 2);
+
+add_filter('ajv_ArtSchemaDefault', 'ajv_art_schema');
+add_filter('ajv_ArtMetaDefault', 'ajv_art_meta');
+add_filter('ajv_ArtArchiveDefault', 'ajv_art_archive');
+
+function ajv_art(){
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $art = Registrar::forPost('art', 'Art', 'Art')
+ ->setIcon('palette')
+ ->make([
+ 'rewrite' => [
+ 'slug' => 'art',
+ 'with_front' => false,
],
- 'config' => [
- 'is_gallery' => false,
- 'content' => 'art',
- 'context' => 'art',
- 'id' => [],
- 'class' => [],
+ 'taxonomies' => [
+ 'project',
+ 'form',
+ 'city',
+ 'media',
+ 'style',
+ 'theme'
]
- ],
- 'rewrite' => [
- 'slug' => 'art',
- 'with_front' => false,
- ],
+ ])
+ ->setAll([
+ 'show_feed',
+ 'show_directory',
+ 'favouritable'
+ ]);
- 'fields' => [
- 'post_status' => [
- 'type' => 'radio',
- 'label' => 'Status',
- 'options' => [
- 'publish' => 'Show',
- 'draft' => 'Hide',
- 'trash' => 'Scrap',
- 'delete' => 'Permanently Delete'
- ],
- 'hidden' => true,
+//$directory = $art->getConfig('directory');
+
+}
+
+function ajv_art_fields():void
+{
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $art = Registrar::getInstance('art');
+ $breadcrumbs = $art->config('breadcrumbs');
+ $breadcrumbs->setCrumb(['project', 'form']);
+
+ $fields = $art->fields();
+ $fields->addField('project', [
+ 'type' => 'selector',
+ 'subtype' => 'taxonomy',
+ 'taxonomy' => 'project',
+ 'label' => 'Project',
+ ]);
+ $fields->addField('form', [
+ 'type' => 'selector',
+ 'subtype' => 'taxonomy',
+ 'taxonomy' => 'form',
+ 'label' => 'Form',
+ ]);
+ $fields->addField('city', [
+ 'type' => 'selector',
+ 'subtype' => 'taxonomy',
+ 'taxonomy' => 'city',
+ 'label' => 'City',
+ ]);
+ $fields->addField('media', [
+ 'type' => 'selector',
+ 'subtype' => 'taxonomy',
+ 'taxonomy' => 'media',
+ 'label' => 'Media',
+ ]);
+ $fields->addField('style', [
+ 'type' => 'selector',
+ 'subtype' => 'taxonomy',
+ 'taxonomy' => 'style',
+ 'label' => 'Style',
+ ]);
+ $fields->addField('theme', [
+ 'type' => 'selector',
+ 'subtype' => 'taxonomy',
+ 'taxonomy' => 'theme',
+ 'label' => 'Theme',
+ ]);
+ $fields->addField('gallery', [
+ 'type' => 'upload',
+ 'multiple' => true,
+ 'label' => 'Gallery',
+ ]);
+ $fields->addField('price', [
+ 'type' => 'number',
+ 'label' => 'Price',
+ ]);
+ $fields->addField('needs', [
+ 'type' => 'repeater',
+ 'label' => 'Needs',
+ 'fields' => [
+ 'need' => [
+ 'type' => 'text',
+ 'label' => 'Need',
+ 'required' => true
],
- 'post_title' => [
- 'type' => 'text',
- 'label' => 'Title',
- ],
- 'post_date' => [
- 'type' => 'date',
- 'label' => 'Date',
- ],
- 'city' => [
- 'type' => 'taxonomy',
- 'taxonomy' => 'city',
- 'autocomplete' => true,
- 'label' => 'City',
- ],
- 'form' => [
- 'type' => 'taxonomy',
- 'taxonomy' => 'form',
- 'autocomplete' => true,
- 'label' => 'Art Form',
- ],
- 'media' => [
- 'type' => 'taxonomy',
- 'taxonomy' => 'media',
- 'autocomplete' => true,
- 'label' => 'Media',
- ],
- 'style' => [
- 'type' => 'taxonomy',
- 'taxonomy' => 'style',
- 'autocomplete' => true,
- 'label' => 'Style',
- ],
- 'theme' => [
- 'type' => 'taxonomy',
- 'taxonomy' => 'theme',
- 'autocomplete' => true,
- 'label' => 'Theme',
- ],
- 'project' => [
- 'type' => 'taxonomy',
- 'taxonomy' => 'project',
- 'autocomplete' => true,
- 'label' => 'Project',
- ],
- 'post_thumbnail' => [
+ 'image' => [
'type' => 'upload',
- 'label' => 'Image',
+ 'multiple' => true,
+ 'label' => 'Example Image'
],
- 'gallery' => [
- 'type' => 'upload',
- 'multiple'=> 'true',
- 'label' => 'Gallery',
- ],
- 'price' => [
- 'type' => 'number',
- 'label' => 'Price',
- ],
- 'post_excerpt' => [
- 'type' => 'textarea',
- 'label' => 'Short Blurb',
- ],
- 'post_content' => [
+ 'fulfilled' => [
'type' => 'textarea',
'quill' => true,
- 'label' => 'Notes'
+ 'label' => 'How I fulfilled it'
+ ]
+ ]
+ ]);
+ $fields->addField('wants', [
+ 'type' => 'repeater',
+ 'label' => 'Wants',
+ 'fields' => [
+ 'need' => [
+ 'type' => 'text',
+ 'label' => 'Need',
+ 'required' => true
],
- 'needs' => [
- 'type' => 'repeater',
- 'label' => 'Needs',
- 'fields'=> [
- 'need' => [
- 'type' => 'text',
- 'label' => 'Need',
- 'required' => true
- ],
- 'image' => [
- 'type' => 'upload',
- 'multiple' => true,
- 'label' => 'Example Image'
- ],
- 'fulfilled' => [
- 'type' => 'textarea',
- 'quill' => true,
- 'label' => 'How I fulfilled it'
- ]
- ]
+ 'image' => [
+ 'type' => 'upload',
+ 'multiple' => true,
+ 'label' => 'Example Image'
],
- 'wants' => [
- 'type' => 'repeater',
- 'label' => 'Wants',
- 'fields'=> [
- 'need' => [
- 'type' => 'text',
- 'label' => 'Want',
- 'required' => true
- ],
- 'image' => [
- 'type' => 'upload',
- 'multiple' => true,
- 'label' => 'Example Image'
- ],
- 'fulfilled' => [
- 'type' => 'textarea',
- 'quill' => true,
- 'label' => 'How I fulfilled it'
- ]
- ]
- ],
- ],
- 'single_image' => false,
- 'upload_title' => 'Upload Artwork',
- ];
+ 'fulfilled' => [
+ 'type' => 'textarea',
+ 'quill' => true,
+ 'label' => 'How I fulfilled it'
+ ]
+ ]
+ ]);
}
+
+//function ajv_art():array
+//{
+// return [
+// 'singular' => 'Art',
+// 'plural' => 'Art',
+// 'dash_title' => 'Art',
+// 'dash_description' => 'Manage your art posts',
+// 'directory' => 'Art',
+// 'breadcrumb' => 'Art',
+// 'addCrumb' => 'form',
+// 'hide_single' => false,
+// 'show_feed' => true,
+// 'show_directory'=> true,
+// 'favouritable' => true,
+// 'karma' => false,
+// 'icon' => 'palette',
+// 'seo' => [
+// 'schema' => [
+// 'type' => 'VisualArtwork',
+// 'name' => '{{post_title}}',
+// 'description' => '{{post_excerpt}}',
+// 'about' => ['@id' => '{{site_url}}/#art'],
+// 'associatedMedia' => '{{post_thumbnail}}',
+// 'dateCreated' => '{{post_date}}',
+// // artform, artMedium, creator, keywords auto-enriched by VisualArtworkResolver
+// ],
+// 'meta' => [
+// 'title' => '{{post_title}} — {{form.name}} Art | Handmade. Human.',
+// 'description' => '{{post_excerpt}}',
+// ],
+// 'archive' => [
+// 'type' => 'CollectionPage',
+// 'name' => 'Canadian Art. Made in Edmonton, Alberta.',
+// 'description' => 'Handmade sculpture, jewelry, and more from Edmonton, Alberta.',
+// ],
+// ],
+// 'feed' => [
+// 'single' => [
+// 'pre_title' => 'Canadian Art. Made in Edmonton, Alberta.',
+// ],
+// 'archive' => [
+//
+// ],
+// 'config' => [
+// 'is_gallery' => false,
+// 'content' => 'art',
+// 'context' => 'art',
+// 'id' => [],
+// 'class' => [],
+// ]
+// ],
+// 'rewrite' => [
+// 'slug' => 'art',
+// 'with_front' => false,
+// ],
+//
+// 'fields' => [
+// 'post_status' => [
+// 'type' => 'radio',
+// 'label' => 'Status',
+// 'options' => [
+// 'publish' => 'Show',
+// 'draft' => 'Hide',
+// 'trash' => 'Scrap',
+// 'delete' => 'Permanently Delete'
+// ],
+// 'hidden' => true,
+// ],
+// 'post_title' => [
+// 'type' => 'text',
+// 'label' => 'Title',
+// ],
+// 'post_date' => [
+// 'type' => 'date',
+// 'label' => 'Date',
+// ],
+// 'city' => [
+// 'type' => 'taxonomy',
+// 'taxonomy' => 'city',
+// 'autocomplete' => true,
+// 'label' => 'City',
+// ],
+// 'form' => [
+// 'type' => 'taxonomy',
+// 'taxonomy' => 'form',
+// 'autocomplete' => true,
+// 'label' => 'Art Form',
+// ],
+// 'media' => [
+// 'type' => 'taxonomy',
+// 'taxonomy' => 'media',
+// 'autocomplete' => true,
+// 'label' => 'Media',
+// ],
+// 'style' => [
+// 'type' => 'taxonomy',
+// 'taxonomy' => 'style',
+// 'autocomplete' => true,
+// 'label' => 'Style',
+// ],
+// 'theme' => [
+// 'type' => 'taxonomy',
+// 'taxonomy' => 'theme',
+// 'autocomplete' => true,
+// 'label' => 'Theme',
+// ],
+// 'project' => [
+// 'type' => 'taxonomy',
+// 'taxonomy' => 'project',
+// 'autocomplete' => true,
+// 'label' => 'Project',
+// ],
+// 'post_thumbnail' => [
+// 'type' => 'upload',
+// 'label' => 'Image',
+// ],
+// 'gallery' => [
+// 'type' => 'upload',
+// 'multiple'=> true,
+// 'label' => 'Gallery',
+// ],
+// 'price' => [
+// 'type' => 'number',
+// 'label' => 'Price',
+// ],
+// 'post_excerpt' => [
+// 'type' => 'textarea',
+// 'label' => 'Short Blurb',
+// ],
+// 'post_content' => [
+// 'type' => 'textarea',
+// 'quill' => true,
+// 'label' => 'Notes'
+// ],
+// 'needs' => [
+// 'type' => 'repeater',
+// 'label' => 'Needs',
+// 'fields'=> [
+// 'need' => [
+// 'type' => 'text',
+// 'label' => 'Need',
+// 'required' => true
+// ],
+// 'image' => [
+// 'type' => 'upload',
+// 'multiple' => true,
+// 'label' => 'Example Image'
+// ],
+// 'fulfilled' => [
+// 'type' => 'textarea',
+// 'quill' => true,
+// 'label' => 'How I fulfilled it'
+// ]
+// ]
+// ],
+// 'wants' => [
+// 'type' => 'repeater',
+// 'label' => 'Wants',
+// 'fields'=> [
+// 'need' => [
+// 'type' => 'text',
+// 'label' => 'Want',
+// 'required' => true
+// ],
+// 'image' => [
+// 'type' => 'upload',
+// 'multiple' => true,
+// 'label' => 'Example Image'
+// ],
+// 'fulfilled' => [
+// 'type' => 'textarea',
+// 'quill' => true,
+// 'label' => 'How I fulfilled it'
+// ]
+// ]
+// ],
+// ],
+// 'single_image' => false,
+// 'upload_title' => 'Upload Artwork',
+// ];
+//}
+
function ajv_render_art_content(array $block, string $content):string
{
$out = '';
@@ -196,7 +340,7 @@
if (array_key_exists('post_excerpt', $fields) && !empty($fields['post_excerpt'])) {
$bits[] = sprintf(
'<section id="excerpt"><h2>At a Glance</h2>%s</section>',
- apply_filters('the_content', $fields['post_excerpt'])
+ jvb_filter_content($fields['post_excerpt'])
);
}
@@ -205,7 +349,7 @@
$gallery = array_map(function ($imgID) {
$out = '<figure>'.jvbFormatImage($imgID,'tiny','medium');
$caption = wp_get_attachment_caption($imgID);
- $out .= ($caption && $caption !== '') ? '<figcaption>'.apply_filters('the_content', $caption).'</figcaption>' : '';
+ $out .= ($caption && $caption !== '') ? '<figcaption>'.jvb_filter_content($caption).'</figcaption>' : '';
$out .= '</figure>';
return $out;
@@ -220,7 +364,7 @@
if (array_key_exists('post_content', $fields) && !empty($fields['post_content'])) {
$bits[] = sprintf(
'<section id="content">%s</section>',
- apply_filters('the_content', $fields['post_content'])
+ $fields['post_content']
);
}
@@ -237,4 +381,41 @@
return $out;
+}
+
+
+function ajv_art_schema():array
+{
+ return [
+ 'type' => 'JVBase\managers\SEO\render\Thing\CreativeWork\VisualArtwork\VisualArtwork',
+ 'name' => '{{post_title}} | Canadian Art',
+ 'artist' => '{{post_author}}',
+ 'description' => '{{post_excerpt}}',
+ 'thumbnail' => '{{post_thumbnail}}',
+ 'dateCreated' => '{{post_date}}',
+ 'dateModified' => '{{post_modified}}',
+ 'artform' => '{{form.name}}',
+ 'artMedium' => '{{medium.name}}',
+ 'keywords' => '{{style.name}}',
+ ];
+}
+
+function ajv_art_meta():array
+{
+ return[
+ 'name' => '{{post_title}} - {{form.name}} | Handmade. Human Art',
+ ];
+}
+
+function ajv_art_archive(array $defaults):array
+{
+ return array_merge($defaults, [
+ 'name' => 'Canadian Art. Made in Edmonton, Alberta.',
+ 'description' => 'Handmade sculpture, jewellery, and more from Edmonton, Alberta.'
+ ]);
+}
+
+function ajv_art_reference_schema(array $defaults):array
+{
+ return $defaults;
}
\ No newline at end of file
--
Gitblit v1.10.0