From 1e981179fc999d873000683b869aef01284827af Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Tue, 10 Feb 2026 20:25:11 +0000
Subject: [PATCH] =jakevan latest
---
content/art.php | 178 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 174 insertions(+), 4 deletions(-)
diff --git a/content/art.php b/content/art.php
index 1d308c4..e8b5156 100644
--- a/content/art.php
+++ b/content/art.php
@@ -1,5 +1,7 @@
<?php
// /content/art.php
+use JVBase\meta\Meta;
+
function ajv_art():array
{
return [
@@ -7,40 +9,208 @@
'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',
],
- 'featured_image' => [
- 'type' => 'image',
+ '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' => '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
+ ],
+ 'fulfilled' => [
+ 'type' => 'textarea',
+ 'quill' => true,
+ 'label' => 'How I fulfilled it'
+ ]
+ ]
+ ],
+ 'wants' => [
+ 'type' => 'repeater',
+ 'label' => 'Wants',
+ 'fields'=> [
+ 'need' => [
+ 'type' => 'text',
+ 'label' => 'Want',
+ 'required' => true
+ ],
+ '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
+{
+ $ID = get_the_ID();
+ $meta = Meta::forPost($ID);
+ $fields = $meta->getAll();
+
+ $city = (empty($fields['city'])) ? 'Edmonton' : jvbGetTermLink((int)$fields['city']);
+ $form = (empty($fields['form'])) ? 'art' : jvbGetTermLink((int)$fields['form']);
+
+ $style = (empty($fields['style'])) ? '' : jvbGetTermLink(explode(',',$fields['style'])[0]).' ';
+ $subtitle = '<h2 class="subtitle">'.$city.' handmade '.$style.'<b>'.$form.'</b>.</h2>';
+
+
+ /** INTRO **/
+ $intro = '<section id="intro" class="row"><div class="text">'.apply_filters('wpautop', $fields['post_excerpt']).'</div><div class="images">';
+ $intro .= (!empty($fields['post_thumbnail'])) ? jvbImageCaption($fields['post_thumbnail']) : '';
+ if (!empty($fields['gallery'])) {
+ $images = explode(',',$fields['gallery']);
+ foreach ($images as $image) {
+ $intro .= jvbImageCaption($image, 'tiny', 'medium');
+ }
+ }
+ $intro .= '</section>';
+
+
+ /** META **/
+ $taxonomies = ['city', 'project','form', 'media','style','theme'];
+ $meta = '';
+ foreach ($taxonomies as $taxonomy) {
+ if (!empty($fields[$taxonomy])) {
+ $icon = jvbIcon(JVB_TAXONOMY[$taxonomy]['icon'])??'';
+ $meta .= jvbRenderTermList($fields[$taxonomy], $icon.JVB_TAXONOMY[$taxonomy]['singular']);
+ }
+ }
+ if ($meta !== '') {
+ $meta = '<section class="meta">'.$meta.'</section>';
+ }
+
+ return $subtitle.$meta.$intro.$meta;
+}
\ No newline at end of file
--
Gitblit v1.10.0