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
---
assets/icons/logo-right-aligned-jakevan.svg | 17
taxonomies/progress.php | 9
forms/_setup.php | 25
taxonomies/theme.php | 18
taxonomies/_setup.php | 6
assets/icons/logo-right-aligned.svg | 17
content/writing.php | 112 +++
taxonomies/form.php | 15
content/development.php | 113 +++
assets/icons/jakevan.svg | 0
taxonomies/style.php | 19
content/_setup.php | 8
taxonomies/project.php | 138 ++++
seo.php | 134 ++++
content/strategy.php | 112 +++
forms/contact.php | 64 ++
email/_setup.php | 311 ++++++++++
taxonomies/city.php | 16
content/art.php | 178 +++++
login/_setup.php | 40 +
blocks/_setup.php | 122 +++
content/support.php | 1
assets/icons/logo-concentric.svg | 17
ajakevan.php | 146 ++++
/dev/null | 18
taxonomies/media.php | 17
assets/icons/logo-concentric-jakevan.svg | 17
taxonomies/target.php | 12
assets/icons/loading.svg | 17
content/design.php | 126 +++
30 files changed, 1,782 insertions(+), 63 deletions(-)
diff --git a/ajakevan.php b/ajakevan.php
index 34f71b6..670e2e2 100644
--- a/ajakevan.php
+++ b/ajakevan.php
@@ -53,13 +53,16 @@
const AJV_DIR = WP_PLUGIN_DIR . '/ajakevan';
define('AJV_URL', plugin_dir_url(__FILE__));
-require(AJV_DIR . '/content/setup.php');
+require(AJV_DIR . '/blocks/_setup.php');
+require(AJV_DIR . '/content/_setup.php');
//require(AJV_DIR . '/dashboard/setup.php');
-//require(AJV_DIR . '/forms/setup.php');
-require(AJV_DIR . '/login/setup.php');
-require(AJV_DIR . '/taxonomies/setup.php');
+require(AJV_DIR . '/forms/_setup.php');
+require(AJV_DIR . '/email/_setup.php');
+require(AJV_DIR . '/login/_setup.php');
+require(AJV_DIR . '/taxonomies/_setup.php');
//require(AJV_DIR . '/users/setup.php');
//require(AJV_DIR . '/files/fileManagement.php');
+require(AJV_DIR . '/seo.php');
/**
@@ -83,9 +86,10 @@
{
return [
'icons' => 'light',
- 'is_directory' => false, //as in, a membership directory
+ 'is_directory' => true, //as in, a membership directory
+ 'directory_label' => ['List', 'Lists'],
'has_membership' => false,
- 'has_map' => true,
+// 'has_map' => true,
'dashboard' => true,
'support' => true,
'feed_block' => true,
@@ -96,15 +100,16 @@
'facebook' => false,
'maps' => true,
'gmb' => true,
- 'helcim' => false,
+ 'helcim' => true,
'instagram' => false,
- 'square' => true,
+ 'square' => false,
'umami' => true,
+ 'postmark' => true,
],
'is_restaurant' => false,
'limit_hours' => false,
'enthusiast' => true,
- 'favourites' => true, //optional flag to allow enthusiasts, but not favourites
+ 'favourites' => false, //optional flag to allow enthusiasts, but not favourites
];
}
/**
@@ -140,3 +145,126 @@
//{
// return [];
//}
+
+add_filter('jvbLoadingIcon', 'ajv_loading_icon', 999999);
+function ajv_loading_icon():string
+{
+ return 'loading';
+}
+
+add_filter('jvbDrawerItems', 'jvDrawerItems', 10, 2);
+function jvDrawerItems(array $items, string $menuID):array
+{
+ if ($menuID !== 'main') {
+ return $items;
+ }
+ $items = [
+ [
+ 'text' => 'About Jake',
+ 'url' => home_url('/about'),
+ 'icon' => 'user-square',
+ ]
+ ];
+ foreach (JVB_CONTENT as $slug => $config) {
+ if (array_key_exists('public', $config) && !$config['public']) {
+ continue;
+ }
+ $items[] = [
+ 'text' => $config['singular'],
+ 'url' => get_post_type_archive_link(BASE.$slug),
+ 'icon' => $config['icon'],
+ 'class' => $slug,
+ ];
+ }
+ $items[] = [
+ 'text' => 'Contact',
+ 'icon' => 'chat-teardrop',
+ 'url' => home_url('/contact'),
+ ];
+// $items[] = [
+// 'text' => 'Account',
+// 'url' => home_url('/dash'),
+// 'icon' => 'user-circle',
+// ];
+ return $items;
+}
+
+add_filter('jvbBeforeFooter', 'ajv_acknowledgement');
+function ajv_acknowledgement():string
+{
+
+ return '<p>I live and work in 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_filter('jvbRegisterCustomIcons', 'jv_custom_icons');
+function jv_custom_icons(array $icons):array
+{
+ $icons['logo'] = AJV_DIR . '/assets/icons/logo-concentric.svg';
+ $icons['logo-jakevan'] = AJV_DIR . '/assets/icons/logo-concentric-jakevan.svg';
+ $icons['logo-right'] = AJV_DIR . '/assets/icons/logo-right-aligned.svg';
+ $icons['logo-right-jakevan'] = AJV_DIR . '/assets/icons/logo-right-aligned-jakevan.svg';
+ $icons['jakevan'] = AJV_DIR . '/assets/icons/jakevan.svg';
+ $icons['loading'] = AJV_DIR . '/assets/icons/loading.svg';
+ return $icons;
+}
+
+
+
+add_filter('jvbMenuExtra', 'ajv_contact_nav', 10, 3);
+function ajv_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 === '') {
+ $text = '<li><a href="'.jvbTextLink(8258239916,'I have an idea - can you help bring it to life?').'" title="Text Me">'.jvbIcon('chat').'<span class="hide-small">825.823.9916</span></a></li>';
+ $email = '<li><a href="'.jvbMailToLink(
+ 'get@jakevan.ca',
+ '[JakeVan] I have an idea - can you help bring it to life?','Be sure to as much detail as possible, including what your idea is about, when you need it done by, and budget.'
+ ).'" title="Email Me">'.jvbIcon('envelope').'<span class="hide-small">get@jakevan.ca</span></a></li>';
+
+ return $text.$email;
+ }
+
+ return $nav;
+}
+
+add_filter('jvbRandomFooterText', 'ajv_footer_text');
+function ajv_footer_text(string $text):string
+{
+ $privacy = get_privacy_policy_url();
+ $privacy = ($privacy === '') ? '' : ' | <a href="'.$privacy.'">Privacy Policy</a>';
+ return '<p class="font-small">©'.date('Y').' <a href="'.get_home_url().'">'.get_bloginfo('name').'</a>'.$privacy.' | <a href="'.get_home_url(null, '/legal/terms-of-service/').'" title="Terms of Service">Terms of Service</a></p><p class="font-small">Built with ♡ by <a href="https://jakevan.ca">Jake Van</a> <small>(of course!)</small></p>';
+}
+
+
+add_filter('jvbSummaryHeader', 'ajv_summary_header', 10, 2);
+function ajv_summary_header(string $return, string $type):string
+{
+ $extra = match($type) {
+ 'strategy' => 'Edmonton-focused brand',
+ default => 'Edmonton made'
+ };
+ $title = ($type === 'directory') ? 'Directory' : JVB_CONTENT[$type]['singular'];
+ return '<small>'.$extra.'</small>'.$title.'.';
+}
+
+add_filter('jvbSummaryHeaderExtra', 'altr_summary_extra', 10, 2);
+function altr_summary_extra(string $return, string $type):string
+{
+ return ($type === 'directory') ? '' : '<p>Or see <a href="'.JVB()->directories()->getDirectoryList()[$type]['url'].'">alphabetical list</a>.</p>';
+}
+
+function ajv_render_core_post_content(array $block, string $content = ''):string
+{
+ if(!is_singular(array_map(function($item) { return BASE.$item; }, array_keys(JVB_CONTENT)))) {
+ return JVB()->blocks()->render_core_post_content($block, $content);
+ }
+ $postType = jvbNoBase(get_post_type());
+ $function = "ajv_render_{$postType}_content";
+ $base = '';
+ if (function_exists($function)) {
+ $base = call_user_func($function, $block, $content);
+ }
+ return $base.JVB()->blocks()->render_core_post_content($block, $content);
+}
\ No newline at end of file
diff --git a/assets/icons/jakevan-logo.svg b/assets/icons/jakevan.svg
similarity index 100%
rename from assets/icons/jakevan-logo.svg
rename to assets/icons/jakevan.svg
diff --git a/assets/icons/loading.svg b/assets/icons/loading.svg
new file mode 100644
index 0000000..4e14350
--- /dev/null
+++ b/assets/icons/loading.svg
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ width="32"
+ height="32"
+ viewBox="0 0 32 32"
+ version="1.1"
+ xml:space="preserve"
+ style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"
+ id="svg10"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"><defs
+ id="defs10" />
+ <path
+ id="path11"
+ style="baseline-shift:baseline;display:inline;overflow:visible;vector-effect:none;fill:#222222;enable-background:accumulate;stop-color:#000000;stop-opacity:1"
+ d="m 16.621094,1.1425781 c -8.2663232,0 -16.22086738,6.4428095 -15.5859378,14.6855469 0.6013455,7.807308 7.4341264,14.12698 14.9335938,14.943359 8.839845,0.962283 15.505469,-6.376919 15.005859,-14.986328 C 30.4959,7.5362684 24.883397,1.1425781 16.621094,1.1425781 Z m 0,0.6503907 C 26.488786,1.8038645 29.714518,9.5935833 30.302734,15.804688 31.141982,24.666365 22.160459,31.168077 16.039062,30.125 8.8951327,28.907681 2.2613142,23.279376 1.6835938,15.779297 1.0769338,7.9032754 8.7225451,1.7842699 16.621094,1.7929688 Z m -0.06445,1.21875 c -3.610083,0 -7.1547995,1.4010687 -9.7304691,3.703125 C 4.2505023,9.0169002 2.6420372,12.226295 2.9199219,15.833984 3.446935,22.675712 9.4289649,28.198985 15.998047,28.914062 23.714256,29.754023 29.531603,23.3317 29.095703,15.820312 28.677948,8.6213953 23.776686,3.0117188 16.556641,3.0117188 Z m 0,0.1953124 c 7.119134,0 11.93271,5.5081373 12.345703,12.6249998 C 29.332062,23.236896 23.618958,29.545998 16.019531,28.71875 9.5454321,28.014012 3.6341637,22.555143 3.1152344,15.818359 2.8424563,12.276967 4.4184109,9.1283169 6.9570312,6.859375 9.4956516,4.5904331 12.997093,3.2070312 16.556641,3.2070312 Z m -0.07031,1.4160157 c -3.161973,0 -6.263509,1.2258139 -8.5195311,3.2421875 C 5.7107691,9.881608 4.3014542,12.694589 4.5449219,15.855469 5.0065624,21.848554 10.244178,26.686159 15.998047,27.3125 22.757013,28.048261 27.854451,22.420936 27.472656,15.841797 27.106824,9.5376025 22.81016,4.6230469 16.486328,4.6230469 Z m 0,0.1953125 c 6.22292,0 10.429946,4.8130138 10.791016,11.0351566 0.375613,6.472615 -4.617584,11.98672 -11.259766,11.263672 C 10.358685,26.501186 5.1918381,21.727985 4.7382812,15.839844 4.4999201,12.745262 5.8767315,9.9949778 8.0957031,8.0117188 10.314675,6.0284595 13.37489,4.8183594 16.486328,4.8183594 Z m -0.06836,1.4160156 c -2.713877,0 -5.376118,1.0525164 -7.3125002,2.7832031 -1.9363828,1.7306869 -3.1465517,4.1453119 -2.9375,6.8593749 0.3962699,5.14443 4.8894442,9.294429 9.8281252,9.832031 5.801749,0.631562 10.179257,-4.198828 9.851562,-9.845703 C 25.53375,10.453822 21.845616,6.234375 16.417974,6.234375 Z m 0,0.1953125 c 5.32673,0 8.925226,4.1179055 9.234375,9.4453125 0.321513,5.540351 -3.949801,10.259474 -9.634766,9.640625 C 11.173875,24.988362 6.7495143,20.900814 6.3613281,15.861328 6.1573831,13.213563 7.3350431,10.859682 9.234375,9.1621094 11.133707,7.4645372 13.754628,6.4296875 16.417969,6.4296875 Z m -0.06836,1.4160156 c -2.265775,0 -4.488729,0.8792196 -6.105468,2.3242189 -1.6167408,1.444999 -2.6277607,3.461269 -2.4531254,5.728516 0.3308986,4.295768 4.0815964,7.76012 8.2050784,8.208984 4.844525,0.52736 8.500156,-3.506097 8.226562,-8.220703 C 23.960672,11.371996 20.88106,7.8457031 16.349614,7.8457031 Z m 0,0.1953125 c 4.430534,0 7.422461,3.4227994 7.679688,7.8554684 0.267412,4.608082 -3.283978,8.532226 -8.011719,8.017578 C 11.989075,23.475538 8.3071899,20.075593 7.984375,15.884766 7.8148463,13.683819 8.7953105,11.726338 10.375,10.314453 11.954689,8.9025689 14.13437,8.0410156 16.349609,8.0410156 Z m -0.06836,1.4160156 c -1.817672,0 -3.601342,0.7039688 -4.898438,1.8632808 -1.297095,1.15931 -2.1089683,2.779185 -1.9687495,4.59961 0.2655269,3.447111 3.2737505,6.225813 6.5820315,6.585937 3.887295,0.42316 6.823008,-2.815318 6.603515,-6.597656 C 22.389541,12.288222 19.916495,9.4570311 16.28125,9.4570312 Z m 0,0.1953126 c 3.534333,0 5.917742,2.7276962 6.123047,6.2656252 0.213311,3.675814 -2.616208,6.803025 -6.386719,6.392578 -3.213298,-0.349785 -6.1507597,-3.06213 -6.408203,-6.404297 -0.1351122,-1.754127 0.644252,-3.313257 1.904297,-4.439453 1.260045,-1.126196 3.000441,-1.8144533 4.767578,-1.8144532 z m -0.07031,1.4160152 c -1.369572,0 -2.712,0.530675 -3.689454,1.404297 -0.977453,0.873622 -1.590177,2.095145 -1.484375,3.46875 0.200156,2.598452 2.4659,4.689551 4.958985,4.960938 2.93007,0.318958 5.143908,-2.122587 4.978515,-4.972656 -0.158145,-2.725244 -2.024622,-4.861329 -4.763671,-4.861329 z m 0,0.195313 c 2.638135,0 4.414975,2.034544 4.568359,4.677734 0.159211,2.743546 -1.950386,5.073824 -4.763672,4.767578 -2.398102,-0.261047 -4.591131,-2.287741 -4.783203,-4.78125 -0.100696,-1.307308 0.479519,-2.470039 1.419922,-3.310546 0.940403,-0.840508 2.239557,-1.353516 3.558594,-1.353516 z m -0.06836,1.416016 c -0.921472,0 -1.822657,0.355425 -2.480469,0.943359 -0.657811,0.587934 -1.073339,1.41501 -1.001953,2.341797 0.134785,1.749792 1.656095,3.153291 3.333985,3.335937 1.972846,0.214759 3.46676,-1.431809 3.355468,-3.349609 -0.106224,-1.830503 -1.364177,-3.271487 -3.207031,-3.271484 z m 0,0.195312 c 1.741942,0 2.912209,1.33944 3.013672,3.087891 0.10511,1.811276 -1.284562,3.346577 -3.140625,3.144531 -1.582907,-0.172307 -3.033455,-1.513355 -3.160156,-3.158203 -0.06628,-0.86049 0.314785,-1.624868 0.935547,-2.179688 0.620749,-0.554819 1.48062,-0.894531 2.351556,-0.894531 z m -0.06836,1.416016 c -0.473369,0 -0.935271,0.182129 -1.273438,0.484375 -0.338167,0.302246 -0.554546,0.730969 -0.517578,1.210937 0.06941,0.901133 0.848249,1.618981 1.710938,1.712891 1.015616,0.110557 1.789614,-0.741031 1.732421,-1.726563 -0.0543,-0.935766 -0.705691,-1.68164 -1.652343,-1.68164 z m 0,0.195312 c 0.84574,0 1.40749,0.644333 1.457031,1.498047 0.05101,0.879008 -0.616793,1.619329 -1.515625,1.521484 -0.767706,-0.08357 -1.47578,-0.738967 -1.537109,-1.535156 -0.03186,-0.413671 0.150055,-0.779697 0.451172,-1.048828 0.301116,-0.269131 0.721698,-0.435547 1.144531,-0.435547 z" />
+</svg>
diff --git a/assets/icons/logo-concentric-jakevan.svg b/assets/icons/logo-concentric-jakevan.svg
new file mode 100644
index 0000000..0433544
--- /dev/null
+++ b/assets/icons/logo-concentric-jakevan.svg
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ width="32"
+ height="32"
+ viewBox="0 0 32 32"
+ version="1.1"
+ xml:space="preserve"
+ style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:1.5"
+ id="svg14"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"><defs
+ id="defs14" />
+ <path
+ d="M 16.580078,2.1328125 C 8.864845,2.1328125 1.4406021,8.1466216 2.0332031,15.839844 2.5944588,23.126666 8.9712013,29.025155 15.970703,29.787109 24.221224,30.68524 30.440911,23.834277 29.974609,15.798828 29.527813,8.0998656 24.29156,2.1328125 16.580078,2.1328125 Z m 0,0.6074219 h 0.03125 V 29.232422 c -0.190323,-0.01218 -0.381521,-0.02783 -0.574219,-0.04883 C 9.3130457,28.451617 3.1778775,22.793044 2.6386719,15.792969 2.072456,8.442015 9.2081009,2.7402344 16.580078,2.7402344 Z m -0.492187,1.1445312 -0.0918,0.00391 C 12.72156,4.0183413 9.5464743,5.3646877 7.25,7.5 4.9535257,9.6353123 3.5363647,12.56498 3.7890625,15.845703 4.2808668,22.230032 9.8605879,27.383608 15.990234,28.052734 l 0.08984,0.0098 0.01953,-0.181641 -0.08984,-0.0098 C 9.9687389,27.211643 4.4549638,22.116481 3.9707031,15.830078 3.7226491,12.609644 5.1118979,9.7390477 7.375,7.6347656 9.6381021,5.5304836 12.774625,4.198197 16.003906,4.0703125 l 0.08984,-0.00391 z m 0,1.5019531 -0.0918,0.00391 C 13.128054,5.5041971 10.347434,6.6843454 8.3359375,8.5546875 6.3244411,10.42503 5.0813341,12.990827 5.3027344,15.865234 5.7335336,21.457656 10.621265,25.970548 15.990234,26.556641 l 0.08984,0.0098 0.01953,-0.179687 -0.08984,-0.0098 C 10.729419,25.800532 5.9076307,21.346056 5.484375,15.851563 5.2676184,13.037442 6.4828133,10.526812 8.4609375,8.6875 10.439062,6.8481883 13.18112,5.6840528 16.003906,5.5722656 l 0.08984,-0.00391 z m 0,1.5039063 -0.0918,0.00195 C 13.53454,6.9900663 11.1484,8.0040072 9.421875,9.609375 7.6953497,11.214743 6.6282558,13.41668 6.8183594,15.884766 7.1881551,20.685269 11.38196,24.559444 15.990234,25.0625 l 0.08984,0.0098 0.01953,-0.181641 -0.08984,-0.0098 C 11.490114,24.387477 7.3622522,20.573671 7,15.871094 6.8145401,13.463297 7.8537219,11.316525 9.546875,9.7421875 c 1.693153,-1.5743374 4.04073,-2.570326 6.457031,-2.6660156 l 0.08984,-0.00391 z m 0,1.5019531 -0.0918,0.00391 c -2.055073,0.081384 -4.046728,0.9252331 -5.488281,2.2656249 -1.4415547,1.340393 -2.3326354,3.182379 -2.1738286,5.244141 0.3063994,3.97752 3.7579646,7.174877 7.5703126,7.634766 l -0.002,0.01758 0.08789,0.0078 h 0.002 l 0.0098,0.002 0.08008,0.0098 0.02148,-0.181641 h -0.0039 v -0.002 l -0.08984,-0.0098 h -0.002 C 12.249476,22.973565 8.8168155,19.802576 8.515617,15.892571 8.361454,13.891098 9.2246225,12.10623 10.632805,10.796868 12.040985,9.4875054 13.994084,8.6577097 16.003898,8.5781177 l 0.08984,-0.00391 z m 0,1.5019532 -0.0918,0.00391 c -1.648582,0.065287 -3.245766,0.7429427 -4.402344,1.8183597 -1.156578,1.075417 -1.8716503,2.553545 -1.7441406,4.208984 0.2453946,3.18559 3.0031036,5.744381 6.0546876,6.121094 l -0.002,0.01758 0.08789,0.0078 h 0.002 l 0.08789,0.0098 h 0.002 l 0.02148,-0.18164 h -0.0039 l -0.08789,-0.0098 h -0.002 -0.002 c -2.997623,-0.328156 -5.736368,-2.860433 -5.976562,-5.978516 -0.1228659,-1.59515 0.564294,-3.018113 1.6875,-4.0625 1.123206,-1.044386 2.681833,-1.706037 4.285156,-1.769531 l 0.08984,-0.0039 z m 4.121093,1.3203127 h 1.466797 l 1.328125,3.96289 v -3.947265 h 1.103516 v 1.736328 c 0.04639,-0.08742 0.09989,-0.176212 0.160156,-0.263672 0.06031,-0.08746 0.120294,-0.169687 0.177734,-0.248047 l 0.853516,-1.224609 h 3.578125 v 0.867187 h -1.316406 v 0.626953 h 1.21875 v 0.867188 h -1.21875 v 0.753906 h 1.316406 v 0.88086 h -3.638672 l -0.804687,-1.527344 -0.326172,0.191406 v 1.335938 h -2.289063 l -0.201172,-0.748047 h -1.320312 l -0.207031,0.748047 h -1.207032 z m -2.414062,0.01563 h 1.103515 v 3.605469 c 10e-7,0.400905 -0.06117,0.722355 -0.183593,0.96289 -0.122422,0.240535 -0.290813,0.414011 -0.507813,0.521484 -0.216999,0.107513 -0.468255,0.160157 -0.753906,0.160157 -0.124256,0 -0.234465,-0.0057 -0.328125,-0.01758 -0.09366,-0.01177 -0.173578,-0.02446 -0.242188,-0.03906 V 15.58399 c 0.05936,0.01086 0.122674,0.02341 0.189454,0.03711 0.06677,0.0137 0.138936,0.02148 0.216796,0.02148 0.131676,0 0.233361,-0.02723 0.306641,-0.08008 0.07323,-0.05286 0.124617,-0.132611 0.154297,-0.238281 0.02968,-0.10567 0.04492,-0.237919 0.04492,-0.396485 z m 8.667969,0.05469 -1.244141,1.736328 1.244141,2.175782 z m -10.375,0.113282 -0.0918,0.002 c -1.242095,0.04919 -2.4448,0.560652 -3.316406,1.371093 -0.871608,0.810442 -1.41262,1.924712 -1.316407,3.173829 0.18439,2.393654 2.250195,4.312022 4.541016,4.605468 l -0.002,0.01758 0.08789,0.0078 h 0.002 l 0.08789,0.0098 h 0.002 l 0.01953,-0.179687 h -0.002 v -0.002 l -0.07813,-0.0078 -0.0098,-0.002 h -0.002 -0.002 c -2.236961,-0.245121 -4.2837,-2.136731 -4.46289,-4.46289 -0.09157,-1.188826 0.421531,-2.247933 1.259766,-3.027344 0.838234,-0.779411 2.002382,-1.272916 3.199218,-1.320313 l 0.08984,-0.0039 z m 4.861328,0.474609 c -0.01671,0.09111 -0.03972,0.203928 -0.07031,0.337891 -0.0306,0.133922 -0.06128,0.265269 -0.09375,0.396484 -0.03242,0.131175 -0.06185,0.240665 -0.08594,0.328125 l -0.175782,0.65625 h 0.865235 l -0.173828,-0.65625 c -0.01851,-0.07106 -0.04681,-0.172529 -0.08203,-0.304688 -0.03526,-0.132118 -0.06921,-0.268935 -0.103515,-0.410156 -0.0343,-0.141221 -0.06153,-0.256546 -0.08008,-0.347656 z m -4.861328,1.027344 -0.0918,0.0039 c -0.835608,0.03309 -1.643836,0.374456 -2.230469,0.919922 -0.586633,0.545466 -0.951635,1.299786 -0.886719,2.142578 0.123205,1.599378 1.498128,2.859467 3.025391,3.072265 l -0.0039,0.0332 0.08984,0.0098 0.08203,0.0078 0.0078,0.002 h 0.002 l 0.01953,-0.181641 h -0.002 l -0.08789,-0.0098 h -0.002 -0.002 c -1.476337,-0.162041 -2.829076,-1.412996 -2.947265,-2.947266 -0.06027,-0.782503 0.276817,-1.479705 0.830078,-1.994141 0.553261,-0.514435 1.322933,-0.841748 2.113281,-0.873046 l 0.08984,-0.0039 z m 0,1.501953 -0.0918,0.0039 c -0.429118,0.01699 -0.842873,0.192166 -1.144531,0.472656 -0.30166,0.280491 -0.490648,0.670955 -0.457032,1.107422 0.06219,0.80736 0.743801,1.430257 1.509766,1.558594 l -0.0039,0.0332 0.08984,0.0078 h 0.002 l 0.08789,0.0098 0.02148,-0.179687 h -0.002 v -0.002 l -0.07813,-0.0078 -0.0098,-0.002 h -0.002 -0.002 c -0.715675,-0.07901 -1.374455,-0.68929 -1.43164,-1.431641 -0.02897,-0.376179 0.132104,-0.711477 0.400391,-0.960937 0.268286,-0.249461 0.643485,-0.408627 1.027343,-0.423828 l 0.08984,-0.0039 z m 7.041015,0.849609 h 1.261719 l 1.142578,3.414063 v -3.400391 h 1.236328 l 1.275391,2.392578 h 0.01367 c -0.0047,-0.07537 -0.0089,-0.164032 -0.01367,-0.263672 -0.0048,-0.09964 -0.0097,-0.200713 -0.01367,-0.302734 -0.004,-0.10202 -0.0059,-0.191051 -0.0059,-0.269531 v -1.556641 h 0.84375 v 3.441406 h -1.242188 l -1.279297,-2.423828 h -0.02148 c 0.008,0.07377 0.01508,0.162088 0.02148,0.265625 0.0064,0.103579 0.01288,0.208891 0.01758,0.316406 0.0048,0.107474 0.0078,0.204706 0.0078,0.291016 v 1.550781 H 24.513672 L 24.339844,18.0625 h -1.136719 l -0.177734,0.644531 h -1.039063 z m -4.154297,0.01367 h 1.0625 l 0.476563,1.744141 c 0.01754,0.06589 0.03937,0.151107 0.0625,0.253906 0.02317,0.102758 0.04448,0.204661 0.06445,0.30664 0.01997,0.10202 0.03231,0.18562 0.03711,0.25 0.0064,-0.06438 0.01761,-0.147625 0.03516,-0.248046 0.01759,-0.100421 0.03704,-0.201535 0.05859,-0.302735 0.0216,-0.101241 0.04138,-0.18406 0.06055,-0.25 l 0.486328,-1.753906 h 1.060547 l -1.148437,3.441406 h -1.113282 z m 4.791016,0.552734 c -0.01429,0.07844 -0.03421,0.175669 -0.06055,0.291016 -0.02634,0.115347 -0.05406,0.230782 -0.08203,0.34375 -0.02793,0.112969 -0.05147,0.20592 -0.07227,0.28125 l -0.152344,0.564453 h 0.746094 l -0.15039,-0.564453 c -0.01592,-0.06122 -0.03988,-0.147971 -0.07031,-0.261719 -0.03027,-0.113789 -0.06029,-0.231935 -0.08984,-0.353515 -0.02956,-0.12162 -0.05235,-0.222342 -0.06836,-0.300782 z m -3.646484,2.992188 H 20.5625 c 0.174775,0 0.320658,0.02964 0.439453,0.08984 0.118754,0.0602 0.210255,0.148556 0.271484,0.265625 0.06127,0.117069 0.0918,0.261864 0.0918,0.433593 0,0.179807 -0.03301,0.3313 -0.09766,0.453125 -0.06461,0.121826 -0.160477,0.213761 -0.287109,0.275391 -0.12659,0.06167 -0.283965,0.0918 -0.470703,0.0918 H 20.11914 Z m 1.435546,0 h 0.896485 v 0.101562 h -0.78125 v 0.611328 H 22.40625 V 19.625 h -0.736328 v 0.693359 h 0.78125 v 0.101563 h -0.896485 z m 1.083985,0 h 0.398437 c 0.130008,0 0.237229,0.01309 0.324219,0.04102 0.08703,0.02788 0.153166,0.07478 0.197266,0.138672 0.04402,0.06384 0.06641,0.149191 0.06641,0.257813 0,0.08148 -0.01462,0.152587 -0.04492,0.210937 -0.0303,0.05835 -0.07202,0.105178 -0.125,0.142578 -0.0531,0.03748 -0.114154,0.06613 -0.183594,0.08594 l 0.449219,0.732422 H 23.58399 l -0.423828,-0.699219 h -0.40625 v 0.699219 h -0.115234 z m 1.007812,0 h 0.119141 l 0.308594,1.134765 c 0.0081,0.03009 0.01438,0.05879 0.02148,0.08594 0.007,0.02715 0.01353,0.05281 0.01953,0.07813 0.006,0.02534 0.01198,0.05035 0.01758,0.07422 0.0056,0.02383 0.01112,0.04804 0.01563,0.07227 0.0052,-0.02424 0.01043,-0.04925 0.01563,-0.07422 0.0052,-0.02493 0.01128,-0.04855 0.01758,-0.07422 0.0064,-0.02571 0.01233,-0.05256 0.01953,-0.08008 0.007,-0.02752 0.01639,-0.05779 0.02539,-0.08789 l 0.320313,-1.128906 h 0.115234 l 0.333985,1.136719 c 0.009,0.03153 0.01799,0.05997 0.02539,0.08789 0.0075,0.02789 0.01353,0.05474 0.01953,0.08008 0.0059,0.0253 0.01228,0.05035 0.01758,0.07422 0.0052,0.02383 0.01043,0.04808 0.01563,0.07227 0.006,-0.03301 0.01118,-0.06572 0.01758,-0.09766 0.0063,-0.0319 0.01444,-0.06439 0.02344,-0.09961 0.009,-0.03526 0.02,-0.07537 0.03125,-0.117187 l 0.314453,-1.136719 h 0.119141 l -0.447266,1.609375 h -0.111328 l -0.351562,-1.214844 c -0.0083,-0.02567 -0.01508,-0.05109 -0.02148,-0.07422 -0.0063,-0.02313 -0.01188,-0.04354 -0.01758,-0.06445 -0.0056,-0.02092 -0.01073,-0.04185 -0.01563,-0.06055 -0.0048,-0.01869 -0.0087,-0.0354 -0.01172,-0.05078 -0.0029,0.01538 -0.0064,0.03161 -0.0098,0.04883 -0.0034,0.01726 -0.0072,0.03438 -0.01172,0.05273 -0.0045,0.01833 -0.0084,0.03874 -0.01367,0.05859 -0.0052,0.01981 -0.01158,0.03927 -0.01758,0.06055 l -0.349609,1.244141 h -0.113281 z m 2.035157,0 h 0.896484 v 0.101562 h -0.779297 v 0.611328 h 0.736328 V 19.625 h -0.736328 v 0.693359 h 0.779297 v 0.101563 h -0.896484 z m 1.083984,0 h 0.398437 c 0.129926,0 0.239142,0.01309 0.326172,0.04102 0.08699,0.02788 0.151213,0.07478 0.195313,0.138672 0.04402,0.06384 0.06641,0.149191 0.06641,0.257813 0,0.08148 -0.01462,0.152587 -0.04492,0.210937 -0.03026,0.05835 -0.07202,0.105178 -0.125,0.142578 -0.05306,0.03748 -0.114153,0.06613 -0.183594,0.08594 l 0.449219,0.732422 h -0.136719 l -0.421875,-0.699219 h -0.408203 v 0.699219 h -0.115234 z m 1.181641,0 h 0.896484 v 0.101562 H 28.0625 v 0.6875 h 0.738281 v 0.09961 H 28.0625 v 0.720703 h -0.115234 z m -7.712891,0.09961 v 1.410156 h 0.271484 c 0.247261,0 0.432183,-0.0604 0.554688,-0.179687 0.122549,-0.119242 0.183594,-0.298542 0.183594,-0.537109 0,-0.153358 -0.02536,-0.280054 -0.07617,-0.382813 -0.05077,-0.102758 -0.129793,-0.180672 -0.234375,-0.232422 -0.104582,-0.05171 -0.235882,-0.07813 -0.396485,-0.07813 z m 2.519531,0 v 0.708985 h 0.326172 c 0.13376,0 0.23747,-0.03064 0.3125,-0.09375 0.07516,-0.06315 0.113281,-0.15335 0.113281,-0.271485 0,-0.129944 -0.03998,-0.220321 -0.11914,-0.269531 -0.07924,-0.04917 -0.199224,-0.07422 -0.361328,-0.07422 z m 4.126953,0 v 0.708985 h 0.326172 c 0.133759,0 0.239423,-0.03064 0.314453,-0.09375 0.07512,-0.06315 0.111328,-0.15335 0.111328,-0.271485 0,-0.129944 -0.03808,-0.220321 -0.117187,-0.269531 -0.07924,-0.04917 -0.201178,-0.07422 -0.363281,-0.07422 z"
+ style="baseline-shift:baseline;clip-rule:nonzero;display:inline;overflow:visible;vector-effect:none;fill:#222222;fill-rule:nonzero;stroke-linecap:butt;stroke-linejoin:miter;enable-background:accumulate;stop-color:#000000;stop-opacity:1"
+ id="path17" />
+</svg>
diff --git a/assets/icons/logo-concentric.svg b/assets/icons/logo-concentric.svg
new file mode 100644
index 0000000..88522e0
--- /dev/null
+++ b/assets/icons/logo-concentric.svg
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ width="32"
+ height="32"
+ viewBox="0 0 32 32"
+ version="1.1"
+ xml:space="preserve"
+ style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:1.5"
+ id="svg14"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"><defs
+ id="defs14" />
+ <path
+ d="M 16.580078,2.1328125 C 8.8648449,2.1328125 1.4406021,8.1466218 2.0332031,15.839844 2.5944588,23.126666 8.9712012,29.025155 15.970703,29.787109 24.221224,30.68524 30.440911,23.834277 29.974609,15.798828 29.527813,8.0998655 24.29156,2.1328125 16.580078,2.1328125 Z m 0,0.6074219 c 0.01046,0 0.02083,0 0.03125,0 V 29.232422 c -0.190323,-0.01218 -0.381521,-0.02783 -0.574219,-0.04883 C 9.3130453,28.451615 3.1778775,22.793044 2.6386719,15.792969 2.072456,8.4420153 9.2081008,2.7402344 16.580078,2.7402344 Z M 16.091797,3.8847656 16,3.8886719 C 12.725454,4.0183489 9.5523379,5.3646838 7.2558594,7.5 4.9593809,9.6353162 3.5402703,12.564972 3.7929688,15.845703 4.2847739,22.230045 9.8644812,27.383606 15.994141,28.052734 l 0.08984,0.0098 0.02148,-0.181641 -0.0918,-0.0098 C 9.9726749,27.211644 4.4588691,22.116468 3.9746094,15.830078 3.7265559,12.609651 5.1158084,9.7390437 7.3789062,7.6347656 9.6420041,5.5304875 12.778539,4.1981968 16.007812,4.0703125 l 0.0918,-0.00391 z m 0,1.5019531 L 16,5.390625 C 13.131949,5.5042047 10.353298,6.6843415 8.3417969,8.5546875 6.3302962,10.425033 5.0871929,12.990819 5.3085937,15.865234 5.739394,21.457669 10.625161,25.970547 15.994141,26.556641 l 0.08984,0.0098 0.02148,-0.179687 -0.0918,-0.0098 C 10.733354,25.800533 5.9134892,21.346046 5.4902344,15.851563 5.2734784,13.037451 6.4867237,10.526808 8.4648438,8.6875 10.442964,6.8481922 13.185032,5.6840526 16.007812,5.5722656 l 0.0918,-0.00391 z m 0,1.5039063 L 16,6.8925781 c -2.461577,0.097483 -4.845728,1.1114174 -6.5722656,2.7167969 -1.726538,1.60538 -2.7955741,3.807282 -2.6054688,6.275391 0.3697986,4.80054 4.5635334,8.674674 9.1718754,9.177734 l 0.08984,0.0098 0.02148,-0.181641 -0.0918,-0.0098 C 11.494037,24.387481 7.3661557,20.573634 7.0039062,15.871094 6.8184481,13.46332 7.8576405,11.316513 9.5507813,9.7421875 11.243922,8.1678618 13.591529,7.1718608 16.007812,7.0761719 l 0.0918,-0.00391 z m 0,1.5019531 L 16,8.3964844 c -2.055073,0.081384 -4.044775,0.9252334 -5.486328,2.2656246 -1.4415535,1.340393 -2.3345881,3.182379 -2.1757814,5.244141 0.308792,4.008579 3.8086054,7.240136 7.6562504,7.660156 l 0.08984,0.0098 0.0078,-0.06836 v -0.002 l 0.002,-0.0098 c 9.49e-4,-0.0034 0.0035,-0.0062 0.0039,-0.0098 6.42e-4,-0.0067 8.02e-4,-0.01301 0,-0.01953 l 0.0078,-0.07227 -0.0918,-0.0098 C 12.254667,22.974422 8.8207796,19.803231 8.5195313,15.892578 8.3653682,13.891105 9.2285373,12.106237 10.636719,10.796875 12.0449,9.487513 13.997999,8.657717 16.007812,8.578125 l 0.0918,-0.00391 z m 0,1.5019532 L 16,9.8984375 c -1.648588,0.065287 -3.245761,0.7429385 -4.402344,1.8183595 -1.156582,1.075421 -1.8716506,2.553538 -1.7441404,4.208984 0.2477884,3.216669 3.0536414,5.809501 6.1406254,6.146485 l 0.08984,0.0098 0.02148,-0.18164 -0.0918,-0.0098 c -2.998344,-0.327308 -5.738273,-2.859798 -5.978516,-5.978516 -0.1228645,-1.595142 0.564298,-3.018117 1.6875,-4.0625 1.123202,-1.044382 2.681839,-1.706037 4.285156,-1.769531 l 0.0918,-0.0039 z m 0,1.5039067 -0.0918,0.002 c -1.242095,0.04919 -2.4448,0.560652 -3.316406,1.371093 -0.871606,0.810442 -1.412619,1.924713 -1.316406,3.173829 0.186783,2.424732 2.300643,4.376913 4.626953,4.630859 l 0.08984,0.0098 0.02148,-0.18164 -0.0918,-0.0098 c -2.237692,-0.244272 -4.285604,-2.136083 -4.464844,-4.46289 -0.09157,-1.188826 0.421532,-2.247933 1.259766,-3.027344 0.838234,-0.779411 2.002383,-1.272916 3.199218,-1.320313 l 0.0918,-0.0039 z m 0,1.501953 -0.0918,0.0039 c -0.835613,0.03309 -1.643831,0.374452 -2.230469,0.919922 -0.586637,0.54547 -0.951636,1.299778 -0.886718,2.142578 0.12578,1.632821 1.545673,2.94237 3.111328,3.113281 -0.0026,-2.8e-4 -0.0053,2.86e-4 -0.0078,0 0.003,6.03e-4 0.0066,0.0017 0.0098,0.002 0.0031,3.08e-4 0.0067,1.2e-5 0.0098,0 l 0.07813,0.0098 0.02148,-0.181641 -0.0918,-0.0098 c -1.477015,-0.161235 -2.830984,-1.412396 -2.949219,-2.947266 -0.06027,-0.782496 0.276822,-1.479709 0.830078,-1.994141 0.553257,-0.514431 1.322939,-0.841748 2.113281,-0.873046 l 0.0918,-0.0039 z m 0,1.501953 L 16,14.40625 c -0.429117,0.01699 -0.842873,0.192166 -1.144531,0.472656 -0.301659,0.280491 -0.490648,0.670955 -0.457031,1.107422 0.06477,0.840886 0.790729,1.511732 1.595703,1.599609 l 0.08984,0.0098 0.02148,-0.181641 -0.0918,-0.0098 c -0.716357,-0.0782 -1.376362,-0.688681 -1.433594,-1.431641 -0.02897,-0.376179 0.132105,-0.711477 0.400391,-0.960937 0.268286,-0.249461 0.643485,-0.408627 1.027343,-0.423828 l 0.0918,-0.0039 z"
+ style="baseline-shift:baseline;clip-rule:nonzero;display:inline;overflow:visible;vector-effect:none;fill:#222222;fill-rule:nonzero;stroke-linecap:butt;stroke-linejoin:miter;enable-background:accumulate;stop-color:#000000;stop-opacity:1"
+ id="path27" />
+</svg>
diff --git a/assets/icons/logo-right-aligned-jakevan.svg b/assets/icons/logo-right-aligned-jakevan.svg
new file mode 100644
index 0000000..388a241
--- /dev/null
+++ b/assets/icons/logo-right-aligned-jakevan.svg
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ width="32"
+ height="32"
+ viewBox="0 0 32 32"
+ version="1.1"
+ xml:space="preserve"
+ style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:1.5"
+ id="svg10"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"><defs
+ id="defs10" />
+ <path
+ d="M 16.580078,2.1328125 C 8.8648449,2.1328125 1.4406021,8.1466218 2.0332031,15.839844 2.5944588,23.126666 8.9712012,29.025155 15.970703,29.787109 24.221224,30.68524 30.440911,23.834277 29.974609,15.798828 29.527813,8.0998655 24.29156,2.1328125 16.580078,2.1328125 Z m 0,0.6074219 h 0.03125 V 29.232422 c -0.190323,-0.01218 -0.381521,-0.02783 -0.574219,-0.04883 C 9.3130453,28.451615 3.1778775,22.793044 2.6386719,15.792969 2.072456,8.4420153 9.2081008,2.7402344 16.580078,2.7402344 Z m -0.496094,0.2441406 -0.0918,0.00781 c -3.360804,0.2797271 -6.5752134,1.7513778 -8.8886724,4 -2.3134469,2.2486297 -3.7253207,5.278537 -3.4648397,8.660159 0.5058853,6.567331 6.0825465,11.909552 12.3476561,12.884765 l 0.08984,0.01367 0.02734,-0.18164 -0.08984,-0.01367 C 9.8324118,27.393308 4.3188859,22.111081 3.8203125,15.638672 3.5643426,12.315613 4.949063,9.3405142 7.2304687,7.1230469 9.5118745,4.9055796 12.690192,3.4499613 16.007812,3.1738281 l 0.08984,-0.00781 z m -0.0059,0.8339844 -0.0918,0.013672 C 9.9798928,4.695654 4.6864545,9.5629495 5.15625,15.662109 c 0.4546562,5.902443 5.258519,10.752462 10.824219,11.980469 l 0.08984,0.01953 0.03906,-0.177734 -0.08984,-0.01953 C 10.530979,26.253857 5.7855712,21.460319 5.3378906,15.648438 4.8767306,9.6613868 10.087727,4.8637642 16.013672,4.0117187 l 0.08984,-0.013672 z m -0.0078,0.8886718 -0.08984,0.019531 C 10.70938,5.8501602 6.2534845,10.240426 6.67185,15.671875 c 0.4031086,5.233074 4.452576,9.583681 9.302734,11.017578 l 0.08789,0.02539 0.05078,-0.173828 -0.08789,-0.02539 C 11.244982,25.102344 7.2500324,20.805703 6.8535156,15.658203 6.4433459,10.333156 10.822595,6.0120941 16.019531,4.9042969 l 0.08789,-0.017578 z m -0.0078,0.9570313 -0.08789,0.027344 C 11.46198,7.0228927 7.8229814,10.924018 8.1894381,15.681641 c 0.3509983,4.556464 3.6609319,8.396522 7.7773439,9.980468 l 0.08594,0.0332 0.06445,-0.169921 -0.08398,-0.0332 C 11.978398,23.931948 8.7159442,20.144628 8.3710938,15.667969 8.012325,11.01016 11.579907,7.1769128 16.025391,5.8652344 l 0.08789,-0.025391 z m -0.01172,1.0449219 -0.08398,0.035156 c -3.727283,1.4762169 -6.5754769,4.8757646 -6.2617189,8.9492186 0.2979729,3.868073 2.8922249,7.17822 6.2539059,8.84375 l 0.08203,0.04102 0.08203,-0.164063 -0.08203,-0.03906 C 12.732087,22.735595 10.181025,19.47286 9.8886719,15.677734 9.5820005,11.696284 12.365382,8.3647763 16.033203,6.9121094 l 0.08594,-0.033203 z M 16.037109,7.875 15.957029,7.917969 c -2.909987,1.5410877 -4.994006,4.414317 -4.734375,7.785156 0.243357,3.159275 2.145826,5.916634 4.728516,7.576172 l 0.07617,0.04883 0.09961,-0.154297 -0.07813,-0.04883 c -2.53964,-1.63188 -4.406142,-4.340768 -4.644531,-7.435547 -0.253285,-3.288437 1.779573,-6.0952367 4.638672,-7.6093746 l 0.08008,-0.042969 z m -0.01758,1.3515625 -0.07226,0.052734 c -2.053134,1.4973275 -3.409815,3.8008975 -3.207032,6.4335945 0.185778,2.411781 1.425922,4.568675 3.201172,6.101562 l 0.06836,0.05859 0.11914,-0.136719 -0.06836,-0.06055 c -1.743007,-1.505052 -2.957026,-3.618423 -3.138672,-5.976562 -0.197383,-2.562592 1.120588,-4.803991 3.132812,-6.271485 l 0.07227,-0.054687 z m -0.02734,1.6953125 -0.06055,0.06641 c -1.143017,1.280256 -1.815322,2.922689 -1.675782,4.734375 0.121327,1.575008 0.737395,3.030665 1.671875,4.242188 l 0.05664,0.07227 0.142578,-0.111328 -0.05469,-0.07227 c -0.914999,-1.18628 -1.516403,-2.607999 -1.634766,-4.144532 -0.13546,-1.758709 0.515678,-3.348577 1.630859,-4.597656 l 0.06055,-0.06836 z m 4.216796,0.292969 h 1.466797 l 1.328125,3.96289 v -3.947265 h 1.103516 v 1.736328 c 0.04639,-0.08742 0.09989,-0.176212 0.160156,-0.263672 0.06031,-0.08746 0.120294,-0.169687 0.177734,-0.248047 l 0.853516,-1.224609 h 3.578125 v 0.867187 h -1.316406 v 0.626953 h 1.21875 v 0.867188 h -1.21875 v 0.753906 h 1.316406 v 0.88086 h -3.638672 l -0.804687,-1.527344 -0.326172,0.191406 v 1.335938 H 21.81836 l -0.201172,-0.748047 h -1.320312 l -0.207031,0.748047 h -1.207032 z m -2.414062,0.01563 h 1.103515 v 3.605469 c 1e-6,0.400905 -0.06117,0.722355 -0.183593,0.96289 -0.122422,0.240535 -0.290813,0.41401 -0.507813,0.521484 -0.216999,0.107513 -0.468255,0.160157 -0.753906,0.160157 -0.124256,0 -0.234465,-0.0057 -0.328125,-0.01758 -0.09366,-0.01177 -0.173578,-0.02446 -0.242188,-0.03906 V 15.58399 c 0.05936,0.01086 0.122674,0.02341 0.189454,0.03711 0.06677,0.0137 0.138936,0.02148 0.216796,0.02148 0.131676,0 0.233361,-0.02723 0.306641,-0.08008 0.07323,-0.05286 0.124617,-0.132611 0.154297,-0.238281 0.02968,-0.10567 0.04492,-0.237919 0.04492,-0.396485 z m 8.667969,0.05469 -1.244141,1.736328 1.244141,2.175782 z m -5.513672,0.587891 c -0.01671,0.09111 -0.03972,0.203928 -0.07031,0.337891 -0.0306,0.133923 -0.06128,0.265269 -0.09375,0.396484 -0.03242,0.131175 -0.06185,0.240665 -0.08594,0.328125 l -0.175782,0.65625 h 0.865235 l -0.173828,-0.65625 c -0.01851,-0.07106 -0.04681,-0.172529 -0.08203,-0.304688 -0.03526,-0.132118 -0.06921,-0.268935 -0.103515,-0.410156 -0.0343,-0.141221 -0.06153,-0.256546 -0.08008,-0.347656 z m -5.015625,2.058594 -0.02149,0.08789 c -0.132905,0.545109 -0.184404,1.119146 -0.138671,1.712891 0.02435,0.316053 0.06996,0.62746 0.136718,0.93164 l 0.01953,0.08789 0.179687,-0.03906 -0.01953,-0.08789 c -0.06498,-0.29608 -0.111074,-0.598759 -0.134766,-0.90625 -0.04425,-0.574493 0.0043,-1.129325 0.132813,-1.65625 l 0.02148,-0.08789 z m 7.195312,1.320312 h 1.261719 l 1.142578,3.414063 v -3.400391 h 1.236328 l 1.275391,2.392578 h 0.01367 c -0.0047,-0.07537 -0.0089,-0.164032 -0.01367,-0.263672 -0.0048,-0.09964 -0.0097,-0.200713 -0.01367,-0.302734 -0.004,-0.10202 -0.0059,-0.191051 -0.0059,-0.269531 v -1.556641 h 0.84375 v 3.441406 h -1.242188 l -1.279297,-2.423828 h -0.02148 c 0.008,0.07377 0.01508,0.162088 0.02148,0.265625 0.0064,0.103579 0.01288,0.208891 0.01758,0.316406 0.0048,0.107474 0.0078,0.204706 0.0078,0.291016 v 1.550781 H 24.513672 L 24.339844,18.0625 h -1.136719 l -0.177734,0.644531 h -1.039063 z m -4.154297,0.01367 h 1.0625 l 0.476563,1.744141 c 0.01754,0.06589 0.03937,0.151107 0.0625,0.253906 0.02317,0.102758 0.04448,0.204661 0.06445,0.30664 0.01997,0.10202 0.03231,0.18562 0.03711,0.25 0.0064,-0.06438 0.01761,-0.147625 0.03516,-0.248046 0.01759,-0.100421 0.03704,-0.201535 0.05859,-0.302735 0.0216,-0.101241 0.04138,-0.18406 0.06055,-0.25 l 0.486328,-1.753906 h 1.060547 l -1.148437,3.441406 h -1.113282 z m 4.791016,0.552734 c -0.01429,0.07844 -0.03421,0.175669 -0.06055,0.291016 -0.02634,0.115347 -0.05406,0.230782 -0.08203,0.34375 -0.02793,0.112969 -0.05147,0.20592 -0.07227,0.28125 l -0.152344,0.564453 h 0.746094 l -0.15039,-0.564453 c -0.01592,-0.06122 -0.03988,-0.147971 -0.07031,-0.261719 -0.03027,-0.113789 -0.06029,-0.231935 -0.08984,-0.353515 -0.02956,-0.12162 -0.05235,-0.222342 -0.06836,-0.300782 z m -3.646484,2.992188 H 20.5625 c 0.174775,0 0.320658,0.02964 0.439453,0.08984 0.118754,0.0602 0.210255,0.148556 0.271484,0.265625 0.06127,0.117069 0.0918,0.261864 0.0918,0.433593 0,0.179807 -0.03301,0.3313 -0.09766,0.453125 -0.06461,0.121826 -0.160477,0.213761 -0.287109,0.275391 -0.12659,0.06167 -0.283965,0.0918 -0.470703,0.0918 H 20.11914 Z m 1.435546,0 h 0.896485 v 0.101562 h -0.78125 v 0.611328 H 22.40625 V 19.625 h -0.736328 v 0.693359 h 0.78125 v 0.101563 h -0.896485 z m 1.083985,0 h 0.398437 c 0.130008,0 0.237229,0.01309 0.324219,0.04102 0.08703,0.02788 0.153166,0.07478 0.197266,0.138672 0.04402,0.06384 0.06641,0.149191 0.06641,0.257813 0,0.08148 -0.01462,0.152587 -0.04492,0.210937 -0.0303,0.05835 -0.07202,0.105178 -0.125,0.142578 -0.0531,0.03748 -0.114154,0.06613 -0.183594,0.08594 l 0.449219,0.732422 h -0.136719 l -0.423828,-0.699219 h -0.40625 v 0.699219 h -0.115234 z m 1.007812,0 h 0.119141 l 0.308594,1.134765 c 0.0081,0.03009 0.01438,0.05879 0.02148,0.08594 0.007,0.02715 0.01353,0.05282 0.01953,0.07813 0.006,0.02534 0.01198,0.05035 0.01758,0.07422 0.0056,0.02383 0.01112,0.04804 0.01563,0.07227 0.0052,-0.02424 0.01043,-0.04925 0.01563,-0.07422 0.0052,-0.02493 0.01128,-0.04855 0.01758,-0.07422 0.0064,-0.02571 0.01233,-0.05256 0.01953,-0.08008 0.007,-0.02752 0.01639,-0.05779 0.02539,-0.08789 l 0.320313,-1.128906 h 0.115234 l 0.333985,1.136719 c 0.009,0.03153 0.01799,0.05997 0.02539,0.08789 0.0075,0.02789 0.01353,0.05474 0.01953,0.08008 0.0059,0.0253 0.01228,0.05035 0.01758,0.07422 0.0052,0.02383 0.01043,0.04808 0.01563,0.07227 0.006,-0.03301 0.01118,-0.06572 0.01758,-0.09766 0.0063,-0.0319 0.01444,-0.06439 0.02344,-0.09961 0.009,-0.03526 0.02,-0.07537 0.03125,-0.117187 l 0.314453,-1.136719 h 0.119141 L 25.13283,20.41994 H 25.021502 L 24.66994,19.205096 c -0.0083,-0.02567 -0.01508,-0.05109 -0.02148,-0.07422 -0.0063,-0.02313 -0.01188,-0.04354 -0.01758,-0.06445 -0.0056,-0.02092 -0.01073,-0.04185 -0.01563,-0.06055 -0.0048,-0.01869 -0.0087,-0.0354 -0.01172,-0.05078 -0.0029,0.01538 -0.0064,0.03161 -0.0098,0.04883 -0.0034,0.01726 -0.0072,0.03437 -0.01172,0.05273 -0.0045,0.01833 -0.0084,0.03874 -0.01367,0.05859 -0.0052,0.01981 -0.01158,0.03927 -0.01758,0.06055 l -0.349609,1.244141 H 24.08787 Z m 2.035157,0 h 0.896484 v 0.101562 h -0.779297 v 0.611328 h 0.736328 V 19.625 h -0.736328 v 0.693359 h 0.779297 v 0.101563 h -0.896484 z m 1.083984,0 h 0.398437 c 0.129926,0 0.239142,0.01309 0.326172,0.04102 0.08699,0.02788 0.151213,0.07478 0.195313,0.138672 0.04402,0.06384 0.06641,0.149191 0.06641,0.257813 0,0.08148 -0.01462,0.152587 -0.04492,0.210937 -0.03026,0.05835 -0.07202,0.105178 -0.125,0.142578 -0.05306,0.03748 -0.114154,0.06613 -0.183594,0.08594 l 0.449219,0.732422 h -0.136719 l -0.421875,-0.699219 h -0.408203 v 0.699219 h -0.115234 z m 1.181641,0 h 0.896484 v 0.101562 H 28.0625 v 0.6875 h 0.738281 v 0.09961 H 28.0625 v 0.720703 h -0.115234 z m -7.712891,0.09961 v 1.410156 h 0.271484 c 0.247261,0 0.432183,-0.0604 0.554688,-0.179687 0.122549,-0.119242 0.183594,-0.298542 0.183594,-0.537109 0,-0.153358 -0.02536,-0.280054 -0.07617,-0.382813 -0.05077,-0.102758 -0.129793,-0.180672 -0.234375,-0.232422 -0.104582,-0.05171 -0.235882,-0.07813 -0.396485,-0.07813 z m 2.519531,0 v 0.708985 h 0.326172 c 0.13376,0 0.23747,-0.03064 0.3125,-0.09375 0.07516,-0.06315 0.113281,-0.15335 0.113281,-0.271485 0,-0.129944 -0.03998,-0.220321 -0.11914,-0.269531 -0.07924,-0.04917 -0.199224,-0.07422 -0.361328,-0.07422 z m 4.126953,0 v 0.708985 h 0.326172 c 0.133759,0 0.239423,-0.03064 0.314453,-0.09375 0.07512,-0.06315 0.111328,-0.15335 0.111328,-0.271485 0,-0.129944 -0.03808,-0.220321 -0.117187,-0.269531 -0.07924,-0.04917 -0.201178,-0.07422 -0.363281,-0.07422 z"
+ style="baseline-shift:baseline;clip-rule:nonzero;display:inline;overflow:visible;vector-effect:none;fill:#222222;fill-rule:nonzero;stroke-linecap:butt;stroke-linejoin:miter;enable-background:accumulate;stop-color:#000000;stop-opacity:1"
+ id="path19" />
+</svg>
diff --git a/assets/icons/logo-right-aligned.svg b/assets/icons/logo-right-aligned.svg
new file mode 100644
index 0000000..e8c59e7
--- /dev/null
+++ b/assets/icons/logo-right-aligned.svg
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ width="32"
+ height="32"
+ viewBox="0 0 32 32"
+ version="1.1"
+ xml:space="preserve"
+ style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:1.5"
+ id="svg10"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"><defs
+ id="defs10" />
+ <path
+ id="path11"
+ style="clip-rule:nonzero;fill:#222222;fill-rule:nonzero;stroke-linecap:butt;stroke-linejoin:miter"
+ d="M 16.580078,2.1328125 C 8.864845,2.1328125 1.4406021,8.1466216 2.0332031,15.839844 2.5944588,23.126666 8.9712013,29.025155 15.970703,29.787109 24.221224,30.68524 30.440911,23.834277 29.974609,15.798828 29.527813,8.0998656 24.29156,2.1328125 16.580078,2.1328125 Z m 0,0.6074219 h 0.03125 V 29.232422 c -0.190323,-0.01218 -0.381521,-0.02783 -0.574219,-0.04883 C 9.3130457,28.451617 3.1778775,22.793044 2.6386719,15.792969 2.072456,8.442015 9.2081009,2.7402344 16.580078,2.7402344 Z m -0.492187,0.2441406 -0.0918,0.00781 c -3.360778,0.279725 -6.5752313,1.7513954 -8.8886721,4 -2.3134319,2.2486121 -3.7253191,5.27857 -3.4648408,8.660159 0.5058813,6.567277 6.0825943,11.907606 12.3476559,12.882812 l 0.08984,0.01563 0.02734,-0.179687 -0.08984,-0.01563 C 9.8362859,27.393301 4.3227963,22.111134 3.8242188,15.638672 3.5682463,12.31558 4.9529511,9.3405318 7.234375,7.1230469 9.5157989,4.905562 12.694072,3.4499633 16.011719,3.1738281 l 0.08984,-0.00781 z m -0.0059,0.8339844 -0.08984,0.013672 C 9.9858192,4.6956504 4.6903636,9.5629845 5.1601562,15.662109 5.6148104,21.564524 10.4187,26.414576 15.984375,27.642578 l 0.08984,0.01953 0.03906,-0.177734 -0.08984,-0.01953 C 10.534864,26.253852 5.7894797,21.460349 5.3417969,15.648438 4.8806342,9.6613517 10.091609,4.8637678 16.017578,4.0117188 l 0.08984,-0.013672 z m -0.0078,0.8886718 -0.08984,0.019531 C 10.713379,5.8501575 6.2574174,10.240446 6.6757812,15.671875 7.0788887,20.904933 11.128371,25.25556 15.978516,26.689453 l 0.08789,0.02539 0.05078,-0.173828 -0.08789,-0.02539 C 11.24886,25.10234 7.2539399,20.805719 6.8574219,15.658203 6.4472506,10.333136 10.826488,6.012097 16.023438,4.9042969 l 0.08789,-0.017578 z m -0.0078,0.9570313 -0.08789,0.027344 c -4.512594,1.33148 -8.1516109,5.2326425 -7.7851566,9.9902345 0.3509963,4.55644 3.6609516,8.396529 7.7773436,9.980468 l 0.08594,0.0332 0.06445,-0.169921 -0.08398,-0.0332 C 11.982316,23.931941 8.7198525,20.144653 8.375,15.667969 8.0162291,11.010129 11.583793,7.176919 16.029297,5.8652344 l 0.08789,-0.025391 z m -0.01172,1.0449219 -0.08398,0.035156 C 12.243442,8.220344 9.3971715,11.619957 9.7109255,15.693359 c 0.2979705,3.868032 2.8903015,7.178234 6.2519535,8.84375 l 0.08203,0.04102 0.08203,-0.164063 -0.08203,-0.03906 C 12.735992,22.73558 10.184935,19.472901 9.8925781,15.677734 9.5859027,11.696232 12.369254,8.3647896 16.037109,6.9121094 l 0.08594,-0.033203 z M 16.042969,7.875 15.960939,7.917969 c -2.90996,1.5410724 -4.994003,4.414363 -4.734376,7.785156 0.243355,3.159239 2.14585,5.91665 4.728516,7.576172 l 0.07617,0.04883 0.09961,-0.154297 -0.07813,-0.04883 C 13.513072,21.493104 11.646595,18.784269 11.408203,15.689453 11.154915,12.40097 13.187747,9.5942312 16.046875,8.0800781 l 0.08008,-0.042969 z m -0.01953,1.3515625 -0.07227,0.052734 c -2.053119,1.4973165 -3.409812,3.8009245 -3.207031,6.4335945 0.185776,2.411761 1.425933,4.568685 3.201171,6.101562 l 0.06836,0.05859 0.11914,-0.136719 -0.06836,-0.06055 c -1.743027,-1.505063 -2.957024,-3.618403 -3.138672,-5.976562 -0.197385,-2.562618 1.120571,-4.80398 3.132813,-6.271485 L 16.13086,9.37304 Z m -0.02734,1.6953125 -0.06055,0.06641 c -1.143012,1.28025 -1.813368,2.922699 -1.673828,4.734375 0.121326,1.575001 0.735445,3.03067 1.669922,4.242188 l 0.05664,0.07227 0.144531,-0.111328 -0.05664,-0.07227 c -0.91501,-1.18628 -1.514449,-2.607992 -1.632813,-4.144532 -0.13546,-1.758719 0.51372,-3.348572 1.628907,-4.597656 l 0.06055,-0.06836 z m -0.05859,3.009766 -0.02148,0.08789 c -0.132906,0.545109 -0.184404,1.119146 -0.138672,1.712891 0.02435,0.316053 0.07191,0.62746 0.138672,0.93164 l 0.01953,0.08789 0.177734,-0.03906 -0.01953,-0.08789 c -0.06498,-0.29608 -0.111073,-0.598759 -0.134766,-0.90625 -0.04425,-0.574493 0.0043,-1.129325 0.132813,-1.65625 l 0.02148,-0.08789 z" />
+</svg>
diff --git a/blocks/_setup.php b/blocks/_setup.php
new file mode 100644
index 0000000..4142256
--- /dev/null
+++ b/blocks/_setup.php
@@ -0,0 +1,122 @@
+<?php
+use JVBase\utility\Image;
+
+function ajv_render_core_site_logo(array $block, string $content):string
+{
+ $open = $close = '';
+
+ if (!is_home() && !is_front_page()) {
+ $open = '<a href="'.get_home_url().'" rel="home">';
+ $close = '</a>';
+ }
+ $icons = (array_key_exists('className', $block['attrs']) && str_contains($block['attrs']['className'], 'is-text')) ? jvbIcon('logo-jakevan') : jvbIcon('logo').jvbIcon('jakevan');
+ return $open.$icons.$close;
+}
+
+function ajv_render_core_cover(array $block, string $content):string
+{
+ $types = array_map(function($type) {
+ return BASE.$type;
+ }, array_keys(JVB_CONTENT));
+ if (!is_post_type_archive($types)) {
+ return JVB()->blocks()->render_core_cover($block);
+ }
+ $obj = get_queried_object();
+ foreach ($types as $type) {
+ if ($type === $obj->name) {
+ $type = jvbNoBase($type);
+ $function = 'ajv_render_'.$type.'_cover';
+ return '<section class="align-full cover alt '.$type.'">'.call_user_func($function).'</section>';
+ }
+ }
+ return JVB()->blocks()->render_core_cover($block);
+}
+
+function ajv_get_limited_posts(string $type, int $limit):array {
+ $posts = new WP_Query([
+ 'post_type' => jvbCheckBase($type),
+ 'posts_per_page' => $limit,
+ 'post_status' => 'publish',
+ 'fields' => 'ids',
+ ]);
+ return array_map(function($item) {
+ return jvbFormatImage(get_post_thumbnail_id($item), 'tiny', 'large', false);
+ },$posts->posts);
+}
+
+function ajv_render_art_cover():string
+{
+ $get = 4;
+ $images = ajv_get_limited_posts('art', $get);
+ $out = '';
+
+ $halftone = '<div class="halftone"></div>';
+ for ($i=0; $i<$get; $i++) {
+ $img = (array_key_exists($i, $images)) ? $images[$i] : '';
+// if ($i%4===2) {
+// $before = $halftone;
+// $after = '';
+// } elseif($i%4 === 0) {
+// $before = '';
+// $after = $halftone;
+// }
+ $img = ($i%2===0) ? '<div class="img halftone">'.$img.'</div>' : $img;
+ $class = ($i%2===0) ? ' class="has-img"' :'';
+ $out .= '<div'.$class.'>'.$img. '</div>';
+ }
+
+ return $out;
+}
+function ajv_render_strategy_cover():string
+{
+ $get = 7;
+ $images = ajv_get_limited_posts('strategy', $get);
+ $out = '';
+ for ($i=0; $i<$get; $i++) {
+ $img = (array_key_exists($i, $images)) ? $images[$i] : '';
+ $out .= '<div>'.$img. '</div>';
+ }
+ return $out;
+}
+function ajv_render_development_cover():string
+{
+ $get = 2;
+ $images = ajv_get_limited_posts('development', $get);
+ $out = '';
+ for ($i=0; $i<$get; $i++) {
+ $img = (array_key_exists($i, $images)) ? $images[$i] : '';
+ $out .= '<div><div>'.$img. '</div></div>';
+ }
+ $get = 3;
+ for ($i=0; $i<$get; $i++) {
+ $out .= '<div class="radial"></div>';
+ }
+ return $out;
+}
+function ajv_render_design_cover():string
+{
+ $get = 4;
+ $images = ajv_get_limited_posts('design', $get);
+ $out = '';
+ for ($i=0; $i<$get; $i++) {
+ $out.= '<div><div>';
+ $out .= (array_key_exists($i, $images)) ? $images[$i] : '';
+ $out .= '</div></div>';
+ }
+ return $out;
+}
+function ajv_render_support_cover():string
+{
+ return '';
+}
+function ajv_render_writing_cover():string
+{
+ $get = 7;
+ $images = ajv_get_limited_posts('writing', $get);
+ $out = '';
+ for ($i=0; $i<$get; $i++) {
+ $img = (array_key_exists($i, $images)) ? $images[$i] : '';
+ $out .= '<div>'.$img. '</div>';
+ }
+ return $out;
+}
\ No newline at end of file
diff --git a/content/setup.php b/content/_setup.php
similarity index 91%
rename from content/setup.php
rename to content/_setup.php
index 069e0d3..04aafb0 100644
--- a/content/setup.php
+++ b/content/_setup.php
@@ -46,4 +46,12 @@
'writing' => ajv_writing(),
'support' => ajv_support(),
];
+}
+
+add_filter('wp_footer', 'ajv_gallery_output');
+function ajv_gallery_output():void
+{
+ if (is_singular(array_map(function($item) { return BASE.$item; }, array_keys(JVB_CONTENT)))) {
+ jvbRenderGallery();
+ }
}
\ No newline at end of file
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
diff --git a/content/design.php b/content/design.php
index a4a1fb5..a0948d0 100644
--- a/content/design.php
+++ b/content/design.php
@@ -3,30 +3,105 @@
function ajv_design():array
{
return [
- 'singular' => 'Graphic Design',
+ 'singular' => 'Design',
'plural' => 'Designs',
- 'hide_single' => false,
- 'redirectToAuthor'=> false,
+ 'directory' => 'Design',
'show_feed' => true,
+ 'show_directory'=> true,
'favouritable' => true,
'karma' => false,
- 'icon' => 'artwork',
+ 'icon' => 'scribble',
'rewrite' => [
'slug' => 'design',
'with_front' => false,
],
+ // design.php
+ 'seo' => [
+ 'schema' => [
+ 'type' => 'CreativeWork',
+ 'name' => '{{post_title}}',
+ 'description' => '{{post_excerpt}}',
+ 'about' => ['@id' => '{{site_url}}/#design'],
+ 'associatedMedia' => '{{post_thumbnail}}',
+ 'dateCreated' => '{{post_date}}',
+ 'keywords' => '{{style.name}}',
+ ],
+ 'meta' => [
+ 'title' => '{{post_title}} | Human-made Design',
+ 'description' => '{{post_excerpt}}',
+ ],
+ 'archive' => [
+ 'type' => 'CollectionPage',
+ 'name' => 'Canadian Design. Made in Edmonton, Alberta.',
+ ],
+ ],
+ 'feed' => [
+ 'single' => [
+ 'pre_title' => 'Canadian Design. Made in Edmonton, Alberta.',
+ ],
+ 'archive' => [
+
+ ],
+ 'config' => [
+ 'is_gallery' => false,
+ 'content' => 'design',
+ 'context' => 'design',
+ 'id' => [],
+ 'class' => [],
+ ]
+ ],
'fields' => [
+ 'post_status' => [
+ 'type' => 'radio',
+ 'label' => 'Status',
+ 'options' => [
+ 'publish' => 'Show',
+ 'draft' => 'Hide',
+ 'trash' => 'Scrap',
+ 'delete' => 'Permanently Delete'
+ ],
+ 'hidden' => true,
+ ],
+ 'post_date' => [
+ 'type' => 'date',
+ 'label' => 'Date',
+ ],
'post_title' => [
'type' => 'text',
'label' => 'Title',
],
- 'featured_image' => [
- 'type' => 'image',
+ 'post_thumbnail' => [
+ 'type' => 'upload',
'label' => 'Image',
],
+ 'project' => [
+ 'type' => 'taxonomy',
+ 'taxonomy' => 'project',
+ 'autocomplete' => true,
+ 'label' => 'Project',
+ ],
+ 'city' => [
+ 'type' => 'taxonomy',
+ 'autocomplete' => true,
+ 'taxonomy' => 'city',
+ 'label' => 'City',
+ ],
+ 'style' => [
+ 'type' => 'taxonomy',
+ 'taxonomy' => 'style',
+ 'autocomplete' => true,
+ 'label' => 'Styles',
+ ],
+ 'theme' => [
+ 'type' => 'taxonomy',
+ 'taxonomy' => 'theme',
+ 'autocomplete' => true,
+ 'label' => 'Theme',
+ ],
'gallery' => [
- 'type' => 'gallery',
- 'label' => 'Gallery',
+ 'type' => 'upload',
+ 'multiple' => true,
+ 'label' => 'Gallery',
],
'price' => [
'type' => 'number',
@@ -36,7 +111,40 @@
'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',
diff --git a/content/development.php b/content/development.php
index 2067b95..0b7ba3c 100644
--- a/content/development.php
+++ b/content/development.php
@@ -6,8 +6,10 @@
return [
'singular' => 'Development',
'plural' => 'Developments',
+ 'directory' => 'Development',
'hide_single' => false,
'redirectToAuthor'=> false,
+ 'show_directory'=> true,
'show_feed' => true,
'favouritable' => true,
'karma' => false,
@@ -16,18 +18,86 @@
'slug' => 'development',
'with_front' => false,
],
+
+ 'seo' => [
+ 'schema' => [
+ 'type' => 'CreativeWork',
+ 'name' => '{{post_title}}',
+ 'description' => '{{post_excerpt}}',
+ 'about' => ['@id' => '{{site_url}}/#development'],
+ 'associatedMedia' => '{{post_thumbnail}}',
+ 'dateCreated' => '{{post_date}}',
+ ],
+ 'meta' => [
+ 'title' => '{{post_title}} | Custom Website Development',
+ 'description' => '{{post_excerpt}}',
+ ],
+ 'archive' => [
+ 'type' => 'CollectionPage',
+ 'name' => 'Custom Canadian Website Development. Made in Edmonton, Alberta.',
+ ],
+ ],
+ 'feed' => [
+ 'single' => [
+ 'pre_title' => 'Custom Canadian Website Development. Made in Edmonton, Alberta.',
+ ],
+ 'archive' => [
+
+ ],
+ 'config' => [
+ 'is_gallery' => false,
+ 'content' => 'development',
+ 'context' => 'development',
+ 'id' => [],
+ 'class' => [],
+ ]
+ ],
'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',
+ ],
+ 'post_thumbnail' => [
+ 'type' => 'upload',
'label' => 'Image',
],
+ 'project' => [
+ 'type' => 'taxonomy',
+ 'taxonomy' => 'project',
+ 'autocomplete' => true,
+ 'label' => 'Project',
+ ],
+ 'target' => [
+ 'type' => 'taxonomy',
+ 'taxonomy' => 'target',
+ 'autocomplete' => true,
+ 'label' => 'Target Audience',
+ ],
+ 'city' => [
+ 'type' => 'taxonomy',
+ 'autocomplete' => true,
+ 'taxonomy' => 'city',
+ 'label' => 'City',
+ ],
'gallery' => [
- 'type' => 'gallery',
- 'label' => 'Gallery',
+ 'type' => 'upload',
+ 'multiple' => true,
+ 'label' => 'Gallery',
],
'price' => [
'type' => 'number',
@@ -37,7 +107,40 @@
'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',
diff --git a/content/strategy.php b/content/strategy.php
index bc1092a..f0e0c83 100644
--- a/content/strategy.php
+++ b/content/strategy.php
@@ -7,6 +7,8 @@
'plural' => 'Strategies',
'hide_single' => false,
'redirectToAuthor'=> false,
+ 'show_directory'=> true,
+ 'directory' => 'Strategy',
'show_feed' => true,
'favouritable' => true,
'karma' => false,
@@ -15,18 +17,85 @@
'slug' => 'strategy',
'with_front' => false,
],
+ 'seo' => [
+ 'schema' => [
+ 'type' => 'CreativeWork',
+ 'name' => '{{post_title}}',
+ 'description' => '{{post_excerpt}}',
+ 'about' => ['@id' => '{{site_url}}/#strategy'],
+ 'associatedMedia' => '{{post_thumbnail}}',
+ 'dateCreated' => '{{post_date}}',
+ ],
+ 'meta' => [
+ 'title' => '{{post_title}} | Brand Strategy in Canada',
+ 'description' => '{{post_excerpt}}',
+ ],
+ 'archive' => [
+ 'type' => 'CollectionPage',
+ 'name' => 'Brand Strategy in Canada. Made in Edmonton, Alberta.',
+ ],
+ ],
+ 'feed' => [
+ 'single' => [
+ 'pre_title' => 'Brand Strategy in Canada. Made in Edmonton, Alberta.',
+ ],
+ 'archive' => [
+
+ ],
+ 'config' => [
+ 'is_gallery' => false,
+ 'content' => 'strategy',
+ 'context' => 'strategy',
+ 'id' => [],
+ 'class' => [],
+ ]
+ ],
'fields' => [
+ 'post_status' => [
+ 'type' => 'radio',
+ 'label' => 'Status',
+ 'options' => [
+ 'publish' => 'Show',
+ 'draft' => 'Hide',
+ 'trash' => 'Scrap',
+ 'delete' => 'Permanently Delete'
+ ],
+ 'hidden' => true,
+ ],
+ 'post_date' => [
+ 'type' => 'date',
+ 'label' => 'Date',
+ ],
'post_title' => [
'type' => 'text',
'label' => 'Title',
],
- 'featured_image' => [
- 'type' => 'image',
+ 'post_thumbnail' => [
+ 'type' => 'upload',
'label' => 'Image',
],
+ 'project' => [
+ 'type' => 'taxonomy',
+ 'taxonomy' => 'project',
+ 'autocomplete' => true,
+ 'label' => 'Project',
+ ],
+ 'target' => [
+ 'type' => 'taxonomy',
+ 'taxonomy' => 'target',
+ 'autocomplete' => true,
+ 'label' => 'Target Audience',
+ ],
+ 'city' => [
+ 'type' => 'taxonomy',
+ 'autocomplete' => true,
+ 'taxonomy' => 'city',
+ 'label' => 'City',
+ ],
'gallery' => [
- 'type' => 'gallery',
- 'label' => 'Gallery',
+ 'type' => 'upload',
+ 'multiple' => true,
+ 'label' => 'Gallery',
],
'price' => [
'type' => 'number',
@@ -36,7 +105,40 @@
'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',
diff --git a/content/support.php b/content/support.php
index 3ea1c3e..87cb6b3 100644
--- a/content/support.php
+++ b/content/support.php
@@ -8,6 +8,7 @@
'hide_single' => false,
'show_feed' => false,
'icon' => 'question',
+ 'public' => false,
'rewrite' => [
'slug' => 'support',
'with_front' => false,
diff --git a/content/writing.php b/content/writing.php
index 7039d9c..737966e 100644
--- a/content/writing.php
+++ b/content/writing.php
@@ -8,6 +8,8 @@
'hide_single' => false,
'redirectToAuthor'=> false,
'show_feed' => true,
+ 'show_directory'=> true,
+ 'directory' => 'Writing',
'favouritable' => true,
'karma' => false,
'icon' => 'pen-nib',
@@ -15,18 +17,86 @@
'slug' => 'writing',
'with_front' => false,
],
+
+ 'seo' => [
+ 'schema' => [
+ 'type' => 'CreativeWork',
+ 'name' => '{{post_title}}',
+ 'description' => '{{post_excerpt}}',
+ 'about' => ['@id' => '{{site_url}}/#writing'],
+ 'associatedMedia' => '{{post_thumbnail}}',
+ 'dateCreated' => '{{post_date}}',
+ ],
+ 'meta' => [
+ 'title' => '{{post_title}} | Human-made Writing',
+ 'description' => '{{post_excerpt}}',
+ ],
+ 'archive' => [
+ 'type' => 'CollectionPage',
+ 'name' => 'Canadian Content Writing. From Edmonton, Alberta.',
+ ],
+ ],
+ 'feed' => [
+ 'single' => [
+ 'pre_title' => 'Canadian Content Writing. From Edmonton, Alberta.',
+ ],
+ 'archive' => [
+
+ ],
+ 'config' => [
+ 'is_gallery' => false,
+ 'content' => 'writing',
+ 'context' => 'writing',
+ 'id' => [],
+ 'class' => [],
+ ]
+ ],
'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',
+ ],
+ 'post_thumbnail' => [
+ 'type' => 'upload',
'label' => 'Image',
],
+ 'project' => [
+ 'type' => 'taxonomy',
+ 'taxonomy' => 'project',
+ 'autocomplete' => true,
+ 'label' => 'Project',
+ ],
+ 'target' => [
+ 'type' => 'taxonomy',
+ 'taxonomy' => 'target',
+ 'autocomplete' => true,
+ 'label' => 'Target Audience',
+ ],
+ 'city' => [
+ 'type' => 'taxonomy',
+ 'autocomplete' => true,
+ 'taxonomy' => 'city',
+ 'label' => 'City',
+ ],
'gallery' => [
- 'type' => 'gallery',
- 'label' => 'Gallery',
+ 'type' => 'upload',
+ 'multiple' => true,
+ 'label' => 'Gallery',
],
'price' => [
'type' => 'number',
@@ -36,7 +106,39 @@
'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',
diff --git a/email/_setup.php b/email/_setup.php
new file mode 100644
index 0000000..50a4c04
--- /dev/null
+++ b/email/_setup.php
@@ -0,0 +1,311 @@
+<?php
+
+$jvbEmail = add_filter('jvb_email', 'ajv_email');
+
+function ajv_email(array $defaults):array
+{
+ return [
+ 'colours' => [
+ 'action-0' => '#ef767a',
+ 'action-50' => '#f28d90',
+ 'action-100' => '#f4a4a6',
+ 'action-200' => '#f7bbbd',
+ 'secondary-0' => '#329dcb',
+ 'secondary-50' => '#5ab1d6',
+ 'secondary-100' => '#83c4e0',
+ 'secondary-200' => '#acd8ea',
+ 'light' => '#ededf4',
+ 'light-50' => '#e3e3ee',
+ 'light-100' => '#dadae8',
+ 'light-200' => '#d1d1e3',
+ 'dark' => '#2a2b2a',
+ 'dark-50' => '#2f302f',
+ 'dark-100' => '#393a39',
+ 'dark-200' => '#3e403e',
+ 'action-contrast'=> '#ededf4',
+ 'secondary-contrast'=> '#ededf4',
+ ],
+ 'content' => [
+ 'title' => get_bloginfo('name'),
+ 'subjectPrefix' => '['.get_bloginfo('name').']',
+ 'signature' => '<p>  — ♡ Jake</p>',
+ 'footer' => [
+ '<p>© ' . date('Y') . ' JakeVan — Bringing ideas to life.</p>',
+ '<p><a href="' . get_home_url() . '">JakeVan</a></p>'
+ ]
+ ],
+ 'types' => [
+ 'newUser' => [
+ 'subject' => 'Welcome to JakeVan! Finish creating your account.',
+ 'showPrefix' => true,
+ ],
+ 'resetPass' => [
+ 'subject' => 'Reset your Password'
+ ],
+ 'emailChange' => [
+ 'subject' => 'Successfully Changed Email'
+ ],
+ 'passwordChange' => [
+ 'subject' => 'Successfully Changed Password',
+ ]
+ ]
+ ];
+}
+
+add_filter('jvb_form_email_to', function() {
+ return 'get@jakevan.ca';
+});
+
+
+add_filter('jvb_form_email_subject', 'ajv_form_email_subject', 10, 3);
+function ajv_form_email_subject(string $subject, $formType, $formData):string
+{
+ $base = '[JakeVan]';
+ switch ($formType) {
+ case 'contact':
+ return $base.' Contact';
+ case 'get_an_estimate':
+ return $base.' Estimate';
+ case 'nlp':
+ return $base.' NLP Request';
+ case 'partner':
+ return $base.' Partner Intro';
+ }
+ return $subject;
+}
+/*
+ * EXTEND WITH:
+ * {string} $message: email content
+* {WP_User} $user: user
+ * apply_filters
+ * jvbNewUserEmail -> New user email content
+ * add_filter('jvbNewUserEmail', 'customFunction', 10, 2);
+ * jvbNewUserAdminEmail -> New User notification for admin
+ * add_filter('jvbNewUserAdminEmail', 'customFunction', 10, 2);
+ * jvbPasswordResetEmail -> Password Reset Email
+ * {string} $message: email content
+ * {string} $key
+ * {string} $user_login,
+ * {WP_User} $user_data
+ * add_filter('jvbPasswordResetEmail', 'customFunction', 10, 4);
+ * jvbEmailChangeRequestEmail -> Request for email change
+ * {string} $message
+ * {array} $oldUser
+ * {array} newUser
+ * add_filter('jvbEmailChangeRequestEmail', 'customFunction', 10, 3);
+ * jvbEmailChangedEmail -> Notification that email successfully changed
+ * {string} $message
+ * {string} $confirm_url
+ add_filter('jvbEmailChangedEmail', 'customFunction', 10, 2);
+ * jvbPasswordChangeEmail -> Request for password change
+ * {string} $message
+ * {array} $oldUser
+ * {array} $newUser
+ * add_filter('jvbPasswordChangeEmail', 'customFunction', 10, 3);
+ * jvbPersonalDataExport -> Request for User Data
+ * {string} $message
+ * {string} $request_type
+ * {string} $confirmation_url
+ * {array} $emailData, from the original filter
+ * add_filter('jvbPersonalDataExport', 'customFunction', 10, 4);
+ * jvbPersonalDataExported -> Notification that data is ready for download
+ * {string} $message
+ * {string} $downloadURL
+ * {string} $expiresAt
+ * {array} $emailData, from the original filter
+ * add_filter('jvbPersonalDataExported', 'customFunction', 10, );
+ *
+ */
+
+add_filter('jvbNewUserEmail', 'ajv_new_user_email', 10, 2);
+function ajv_new_user_email(string $message, WP_User $user):string
+{
+
+ $user_login = $user->user_login;
+
+ // Only create the password key if the user can change their password
+ $key = get_password_reset_key($user);
+ if (!is_wp_error($key)) {
+ $reset_url = network_site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user_login), 'login');
+
+ $message = sprintf(
+ '<p>Hey %s!</p>
+ <p>Thanks for signing up for our referral program at Legacy.</p>
+ <p><b>Login with your email: </b> %s</p>
+ <p>To set your password and access your account, click the button below:</p>%s
+ <p>Or copy and paste this link into your browser: %s</p>
+ <p>Or go passwordless, and just sign on with a magic link.</p>
+ <div class="divider"></div>
+ <p>If you didn\'t create this account, just ignore this email and the link will expire.</p>',
+ $user->display_name,
+ $user->user_login,
+ JVB()->email()->button($reset_url, 'Set Your Password'),
+ JVB()->email()->link($reset_url)
+ );
+ }
+ return $message;
+}
+
+
+/*** EDMONTON INK VERSIONS: ***/
+function eink_new_user_email(string $message, WP_User $user):string
+{
+ $user_login = $user->user_login;
+
+ // Only create the password key if the user can change their password
+ $key = get_password_reset_key($user);
+ if (!is_wp_error($key)) {
+ $reset_url = network_site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user_login), 'login');
+
+ $message = sprintf('<p>Hey %s!</p>', $user->first_name);
+ $message .= '<p>Thanks for joining Edmonton\'s tattoo scene. Here\'s your login information:</p>';
+ $message .= sprintf('<p><strong>Username:</strong> %s</p>', $user_login);
+ $message .= '<p>To set your password and access your account, click the button below:</p>';
+ $message .= sprintf('<p style="text-align: center;"><a href="%s" class="button">Set Your Password</a></p>', $reset_url);
+ $message .= '<p>Or copy and paste this link into your browser:</p>';
+ $message .= sprintf('<p style="user-select:all;">%s</p>', $reset_url);
+ $message .= '<p>This link will expire in 24 hours, for security reasons.</p>';
+ if (in_array('jvb_artist', array_values($user->roles))) {
+ $message .= '<div class="divider"></div>';
+ $message .= '<h3>NOTE:</h3>
+ <p>Once you set your password, you\'ll have access to your custom dashboard where you can:</p>
+ <ul>
+ <li>Manage your profile information</li>
+ <li>Upload tattoos/piercings, and artwork</li>
+ </ul>
+ <p>Nothing will be published until you\'ve been approved by 3 already approved artists, or the admin.</p>
+ <p>Admins check every day or three, but, if you are in a rush, you can contact us directly by replying to this email, or texting us at 825-925-9916.</p>';
+ } elseif (in_array('jvb_partner', array_values($user->roles))) {
+ $message .= '<div class="divider"></div>';
+ $message .= '<h3>NOTE:</h3>
+ <p>Once you set your password, you\'ll have access to your custom dashboard where you can:</p>
+ <ul>
+ <li>Manage your profile information</li>
+ <li>Create offers for enthusiasts or partners or both</li>
+ </ul>
+ <p>Nothing will be published until you\'ve been approved by the admin.</p>
+ <p>Admins check every day or three, but, if you are in a rush, you can contact us directly by replying to this email, or texting us at 825-925-9916.</p>
+ <p><strong>Note:</strong>Even after approval by admin, your ability to publish depends on your karmic standing by artists. Artists each have a vote they can cast (UP or DOWN) - if your karmic score dips too far in the negative, you account is subject to reconsideration or even a ban.</p>';
+ }
+ $message .= '<div class="divider"></div>';
+
+
+ $message .= '<p>If you didn\'t create this account, please ignore this email and the link will expire.</p>';
+ $message .= sprintf('<p>Ink on, %s</p>', $user->first_name);
+ }
+
+ return $message;
+}
+
+function eink_new_user_admin_email(string $message, WP_User $user):string
+{
+ $message .= sprintf(
+ '<p><strong>Role:</strong> %s</p>',
+ str_replace(BASE, '', array_values($user->roles)[0])
+ );
+ return $message;
+}
+function eink_password_reset_email(string $message, string $user_login, WP_User $user, string $resetUrl):string
+{
+ return sprintf(
+ '<p>Hi bud,</p>
+ <p>We received a request to reset the password for an account associated with this email:</p>
+ <p><strong>Username:</strong> %s</p>
+ <p>If you didn\'t make this request, you can safely ignore this email and nothing will happen to your account.</p>
+ <p>To reset your password, click the button below:</p>
+ %s
+ <p>Or copy and paste this link into your browser:</p>
+ %s
+ <div class="divider"></div>
+ <p>This password reset link is only valid for 24 hours.</p>',
+ $user_login,
+ JVB()->email()->button($resetUrl,'Reset Password'),
+ JVB()->email()->link($resetUrl)
+ );
+}
+
+function eink_email_change_request_email(string $message, array $oldUser, array $newUser)
+{
+ return sprintf(
+ '<p>Hi %s,</p>
+ <p>Ideally you already know this: someone asked to change your email, and here we are.</p>
+ <p><strong>Old Email:</strong> %s</p>
+ <p><strong>New Email:</strong> %s</p>
+ <div class="divider"></div>
+ <p>If this is news to you, or you did not request this - please contact us immediately. You can <a href="sms:+18258239916">text us</a> or reply to this email."></a></p>
+ %s',
+ $newUser['first_name'],
+ $oldUser['user_email'],
+ $newUser['user_email'],
+ JVB()->email()->button(wp_login_url(), 'Log In To Your Account')
+ );
+}
+
+function eink_email_changed_email(string $message, string $confirmURL):string
+{
+ return sprintf(
+ '<p>Hey human,</p>
+ <p>Seems you want to change the email associated with your account.</p>
+ <p>If you really want this, please confirm this change by clicking the button below:</p>
+ %s
+ <p>Or copy and paste this link into your browser:</p>
+ %s',
+ JVB()->email()->button($confirmURL, 'Confirm this Email'),
+ JVB()->email()->link($confirmURL)
+ );
+}
+
+function eink_password_changed_email(string $message, array $oldUser, array $newUser):string
+{
+ return sprintf(
+ '<p>Hey bud,</p>
+ <p>This is a confirmation email to let you know your password has successfully been changed.</p>
+ <p>Ideally, you\'re expecting this email. You wanted to change your password, and this is to let you know that it\'s definitely updated.</p>
+ <p>If you\'re not expecting this email, and did not change your password - please <strong>contact us immediately</strong></p>
+ <p>You can <a href="sms:+18259257398">text us</a>, or reply to this email.</p>
+ %s',
+ JVB()->email()->button(wp_login_url(), 'Log In to Your Account')
+ );
+}
+
+function eink_personal_data_export(string $message, string $requestType, string $confirmURL, array $emailData):string
+{
+ switch ($requestType) {
+ case 'export_personal_data':
+ $request_name = 'Export Personal Data';
+ break;
+ case 'remove_personal_data':
+ $request_name = 'Erase Personal Data';
+ break;
+ default:
+ $request_name = 'Data Request';
+ }
+ return sprintf(
+ '<p>Hi privacy enthusiast,</p>
+ <p>You\'re receiving this email because a request has been made to <strong>%s</strong></p>
+ <p>If you\'re the one who made this request, you can confirm it by clicking the button below:</p>
+ %s
+ <p>Or copy and paste this link into your browser:</p>
+ %s',
+ $request_name,
+ JVB()->email()->button($confirmURL, 'Confirm'),
+ JVB()->email()->link($confirmURL)
+ );
+}
+
+function eink_personal_data_exported_email(string $message, string $downloadURL, string $expiresAt, array $emailData):string
+{
+ return sprintf(
+ '<p>Hi again,</p>
+ <p>You\'re receiving this email because you requested an export of your personal data.</p>
+ <p>You can download your personal data by clicking the button below:</p>
+ %s
+ <p>Or you can copy and paste this link into your browser:</p>
+ %s
+ <div class="divider"></div>
+ <p><strong>Important:</strong> For privacy and security, this link will expire at %s.</p>',
+ JVB()->email()->button($downloadURL, 'Download Your Data'),
+ JVB()->email()->link($downloadURL),
+ $expiresAt
+ );
+}
\ No newline at end of file
diff --git a/forms/_setup.php b/forms/_setup.php
new file mode 100644
index 0000000..03578e7
--- /dev/null
+++ b/forms/_setup.php
@@ -0,0 +1,25 @@
+<?php
+
+/*************************************************************
+ *
+ * Filters the forms for the form block
+ * Must contain an array with:
+ * 'title' => {string} optional
+ * 'description => {array} of strings, each entry becoming its own <p></p>
+ * 'submit' => {string} submit button text
+ * 'success_title' => {string} a custom heading for the success message
+ * 'success_message'=> {array} of strings, each entry becoming its own <p></p>
+ * 'email_subject' => {string} subject for admin's email
+ * 'fields' => {array} as per MetaManager.php
+ * 'sections' => {array} optional array of sections, as per MetaManager.php, for a tabbed form
+ *
+ ************************************************************/
+
+require(AJV_DIR . '/forms/contact.php');
+
+add_filter('jvb_register_forms', 'ajv_register_forms');
+
+function ajv_register_forms($forms) {
+ $forms['contact'] = ajv_contact();
+ return $forms;
+}
\ No newline at end of file
diff --git a/forms/contact.php b/forms/contact.php
new file mode 100644
index 0000000..d7fa440
--- /dev/null
+++ b/forms/contact.php
@@ -0,0 +1,64 @@
+<?php
+
+function ajv_contact():array
+{
+ return [
+ 'title' => 'Contact',
+ 'description' => [
+ 'You can always text, call, or email.',
+ 'Or you can fill out this form and we\'ll get back to you as soon as we can.',
+ ],
+ 'submit' => 'Contact',
+ 'success_title' => 'Success!',
+ 'success_description' => [
+ 'We got it.',
+ 'We\'ll get back to you as soon as we can - usually pretty quick (unless it\'s a Monday or a Tuesday)'
+ ],
+ 'email_subject' => '[CONTACT]',
+ 'fields' => [
+ 'first_name' => [
+ 'type' => 'text',
+ 'label' => 'First Name',
+ 'autocomplete' => 'given-name',
+ 'required' => true,
+ 'section' => 'about_you',
+ ],
+ 'last_name' => [
+ 'type' => 'text',
+ 'label' => 'Last Name',
+ 'required' => true,
+ 'autocomplete'=> 'family-name',
+ 'section' => 'about_you',
+ ],
+ 'email' => [
+ 'type' => 'email',
+ 'label' => 'Email',
+ 'autocomplete' => 'email',
+ 'required' => true,
+ 'section' => 'about_you',
+ ],
+ 'phone' => [
+ 'type' => 'tel',
+ 'label' => 'Phone',
+ 'required' => true,
+ 'autocomplete' => 'tel',
+ 'section' => 'about_you',
+ ],
+ 'contact' => [
+ 'type' => 'checkbox',
+ 'label' => 'Preferred Contact',
+ 'options' => [
+ 'text' => 'Text',
+ 'email' => 'Email',
+ 'call' => 'Call',
+ ],
+ 'section' => 'about_you',
+ ],
+ 'message' => [
+ 'type' => 'textarea',
+ 'label' => 'What\'s your idea?',
+ 'hint' => 'Include general information about your idea, as well as details such as timeline, budget, location - the more the better!'
+ ]
+ ]
+ ];
+}
\ No newline at end of file
diff --git a/forms/setup.php b/forms/setup.php
deleted file mode 100644
index b3d9bbc..0000000
--- a/forms/setup.php
+++ /dev/null
@@ -1 +0,0 @@
-<?php
diff --git a/login/_setup.php b/login/_setup.php
new file mode 100644
index 0000000..f214760
--- /dev/null
+++ b/login/_setup.php
@@ -0,0 +1,40 @@
+<?php
+// /login/setup.php
+add_filter('jvb_login', 'ajv_setup_login');
+function ajv_setup_login():array
+{
+ return [
+ 'login' => [
+ 'title' => 'Log in',
+ 'description' => ['Log in to your account to see your referral balance and get your unique code!'],
+ 'submit' => 'Log in',
+ ],
+ 'favourites' => [
+ 'title' => 'Save your favourites'
+ ],
+ 'lostpassword' => [
+ 'title' => 'Forgot Your Password?',
+ 'description' => 'No worries, we\'ll send you a reset link to your email.'
+ ],
+ 'register' => [
+ 'title' => 'Create your Account',
+ 'submit' => 'Create Account',
+ 'email' => [
+ 'subject' => '[JakeVan] Finish Creating Your Account'
+ ],
+ 'success' => [
+ 'title' => 'Success!',
+ 'description' => [
+ 'See your email for next steps.',
+ '(If you can\'t find it, check your junk!)',
+ ],
+ ]
+ ],
+ 'magic' => [
+ 'title' => 'Log in, auto-magically!',
+ 'description' => [
+ 'Enter your email, click the link in your email, and bibbity bobbity boo - you\'re logged in!'
+ ],
+ ]
+ ];
+}
diff --git a/login/setup.php b/login/setup.php
deleted file mode 100644
index b2932d9..0000000
--- a/login/setup.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-// /login/setup.php
-add_filter('jvb_login', 'ajv_setup_login');
-function ajv_setup_login():array
-{
- return [
- 'login_from_favourite_header' => 'Join the scene; <small>keep your collection.</small>',
- 'login_header' => 'Log in',
- 'join_header' => 'Join in',
- 'from_favourites_benefits' => [
- 'Save designs you love',
- 'Get personalized recommendations',
- 'Connect with artists',
- 'Build your inspiration collection',
- 'Bonus: It\'s all free!'
- ]
- ];
-}
diff --git a/seo.php b/seo.php
new file mode 100644
index 0000000..7a5097a
--- /dev/null
+++ b/seo.php
@@ -0,0 +1,134 @@
+<?php
+add_filter('jvb_schema', function($schema) {
+ return array_merge($schema, [
+ 'organization' => [
+ 'type' => 'LocalBusiness',
+ 'name' => 'JakeVan',
+ 'url' => get_home_url(),
+ 'description' => 'Artist. Designer. Developer. Brand Strategy. I’m a multidisciplinary Canadian artist and tech wizard in Edmonton, Alberta.',
+ 'slogan' => 'Let\'s bring your idea to life.',
+ 'logo' => get_theme_mod('custom_logo'),
+ 'foundingDate' => '2022-02-15',
+
+ 'founders' => [
+ ['name' => 'Jake Vanderwerf', 'url' => 'https://jakevan.ca'],
+ ],
+
+ 'sameAs' => [
+ [ 'url' => 'https://bsky.app/profile/jakevan.ca']
+ ],
+
+ // Contact
+ 'telephone' => '+1-825-832-9916',
+ 'email' => 'get@jakevan.ca',
+
+ // Address - note the key names
+ 'address' => [
+ 'street' => '6551 111 St NW', // was 'street_address'
+ 'city' => 'Edmonton', // was 'locality'
+ 'province' => 'AB', // was 'region'
+ 'postal_code' => 'T6H 4R5',
+ 'country' => 'CA',
+ ],
+
+ // Geo - note the key names
+ 'geo' => [
+ 'lat' => '53.5035125', // was 'latitude'
+ 'lng' => '-113.5188023', // was 'longitude'
+ ],
+
+ // Business details
+ 'priceRange' => '$$',
+ 'paymentAccepted' => ['Cash', 'Credit Card', 'Debit Card', 'E-Transfer'],
+ 'currenciesAccepted' => ['CAD'],
+ 'areaServed' => [
+ ['name' => 'Edmonton'],
+ ['name' => 'St. Albert'],
+ ['name' => 'Sherwood Park'],
+ ['name' => 'Leduc'],
+ ['name' => 'Spruce Grove'],
+ ],
+
+ // Hours - note the key names
+ 'openingHours' => [
+ 'monday' => ['opens' => '9:00', 'closes' => '17:00'],
+ 'tuesday' => ['opens' => '9:00', 'closes' => '17:00'],
+ 'wednesday' => ['opens' => '9:00', 'closes' => '17:00'],
+ 'thursday' => ['opens' => '9:00', 'closes' => '17:00'],
+ 'friday' => ['opens' => '9:00', 'closes' => '17:00'],
+ 'saturday' => ['opens' => '9:00', 'closes' => '17:00'],
+ 'sunday' => ['opens' => '9:00', 'closes' => '17:00'],
+ ],
+
+ // Services as offer catalog
+ 'hasOfferCatalog' => [
+ 'source' => 'manual',
+ 'manual_items' => [
+ [
+ 'type' => 'Product',
+ 'name' => 'Sculpture',
+ 'description' => 'Canadian, human made sculpture',
+ ],
+ [
+ 'type' => 'Product',
+ 'name' => 'Kinetic Sculpture',
+ 'description' => 'Canadian, human made sculpture that moves!',
+ ],
+ [
+ 'type' => 'Product',
+ 'name' => 'Copper Jewellery',
+ 'description' => 'Canadian, human made copper jewellery, inspired by nature.',
+ ],
+ [
+ 'type' => 'Service',
+ 'name' => 'Graphic Design',
+ 'description' => 'From logos to book covers and print media',
+ ],
+ [
+ 'type' => 'Service',
+ 'name' => 'Web Development',
+ 'description' => 'From custom website development to basic landing pages - I make a website for you that works while you sleep.',
+ ],
+ [
+ 'type' => 'Service',
+ 'name' => 'Content Writing',
+ 'description' => 'Know what you want to say, but not how to say it? I can help!',
+ ],
+ [
+ 'type' => 'Service',
+ 'name' => 'Brand Strategy',
+ 'description' => 'Whether you\'re getting started with a business plan, or wanting to take a step back to determine your best steps moving forward - I can help.',
+ ],
+ ]
+ ],
+
+ // Rating - note the structure
+// 'aggregateRating' => [
+// 'value' => 5,
+// 'count' => 103,
+// 'best' => 5,
+// 'worst' => 1,
+// ],
+ ],
+
+ // Website settings (optional overrides)
+ 'website' => [
+ 'name' => 'JakeVan',
+ 'description' => 'Let\'s bring your idea to life.',
+ 'inLanguage' => 'en-CA',
+ 'potentialAction' => [
+ [
+ 'name' => 'Search',
+ 'type' => 'searchAction',
+ 'target' => '/?s={query}',
+ ],
+ [
+ 'type' => 'communicateAction',
+ 'name' => 'Contact Us',
+ 'target' => '/contact/',
+ 'description' => 'Get in touch with our team',
+ ],
+ ],
+ ],
+ ]);
+});
\ No newline at end of file
diff --git a/taxonomies/setup.php b/taxonomies/_setup.php
similarity index 92%
rename from taxonomies/setup.php
rename to taxonomies/_setup.php
index fb46b2e..029cae3 100644
--- a/taxonomies/setup.php
+++ b/taxonomies/_setup.php
@@ -24,11 +24,12 @@
require(AJV_DIR . '/taxonomies/form.php');
require(AJV_DIR . '/taxonomies/media.php');
require(AJV_DIR . '/taxonomies/progress.php');
+require(AJV_DIR . '/taxonomies/project.php');
require(AJV_DIR . '/taxonomies/style.php');
require(AJV_DIR . '/taxonomies/target.php');
require(AJV_DIR . '/taxonomies/theme.php');
-//add_filter('jvb_taxonomy', 'ajv_taxonomy');
+add_filter('jvb_taxonomy', 'ajv_taxonomy');
function ajv_taxonomy():array
{
return [
@@ -36,8 +37,9 @@
'style' => ajv_style(),
'theme' => ajv_theme(),
'form' => ajv_form(),
- 'medium' => ajv_media(),
+ 'media' => ajv_media(),
'target' => ajv_target(),
'progress' => ajv_progress(),
+ 'project' => ajv_project(),
];
}
\ No newline at end of file
diff --git a/taxonomies/city.php b/taxonomies/city.php
index 3604bf6..d612fa2 100644
--- a/taxonomies/city.php
+++ b/taxonomies/city.php
@@ -25,6 +25,22 @@
'strategy',
'writing',
],
+ 'seo' => [
+ 'schema' => [
+ 'type' => 'City',
+ 'name' => '{{term_name}}',
+ 'description' => '{{term_description}}',
+ 'containedInPlace' => '{{site_url}}/#organization',
+ ],
+ 'meta' => [
+ 'title' => 'Projects in {{term_name}} | JakeVan',
+ 'description' => 'Art, design, development, and strategy projects in {{term_name}}.',
+ ],
+ 'archive' => [
+ 'type' => 'CollectionPage',
+ 'name' => 'Projects in {{term_name}}',
+ ],
+ ],
'fields' => [
'term_name' => [
'label' => 'Name',
diff --git a/taxonomies/form.php b/taxonomies/form.php
index 7f50b8e..57e6d9e 100644
--- a/taxonomies/form.php
+++ b/taxonomies/form.php
@@ -20,6 +20,21 @@
'art',
'design',
],
+ 'seo' => [
+ 'schema' => [
+ 'type' => 'DefinedTerm',
+ 'name' => '{{term_name}}',
+ 'description' => '{{term_description}}',
+ ],
+ 'meta' => [
+ 'title' => '{{term_name}} | Art Forms',
+ 'description' => '{{term_description}}',
+ ],
+ 'archive' => [
+ 'type' => 'CollectionPage',
+ 'name' => '{{term_name}} Art',
+ ],
+ ],
'fields' => [
'term_name' => [
'label' => 'Name',
diff --git a/taxonomies/media.php b/taxonomies/media.php
index 1bf734c..ceb4a5e 100644
--- a/taxonomies/media.php
+++ b/taxonomies/media.php
@@ -9,7 +9,7 @@
'<b>What it\'s made of.</b>',
'From clay to oil paints'
],
- 'icon' => 'media',
+ 'icon' => 'diamonds-four',
'show_feed' => true,
'show_directory' => true,
'approve_new' => true,
@@ -22,6 +22,21 @@
'for_content' => [
'art'
],
+ 'seo' => [
+ 'schema' => [
+ 'type' => 'DefinedTerm',
+ 'name' => '{{term_name}}',
+ 'description' => '{{term_description}}',
+ ],
+ 'meta' => [
+ 'title' => '{{term_name}} Art | JakeVan',
+ 'description' => '{{term_description}}',
+ ],
+ 'archive' => [
+ 'type' => 'CollectionPage',
+ 'name' => '{{term_name}} Artwork',
+ ],
+ ],
'fields' => [
'term_name' => [
'label' => 'Name',
diff --git a/taxonomies/progress.php b/taxonomies/progress.php
index 6c6e290..2539a6f 100644
--- a/taxonomies/progress.php
+++ b/taxonomies/progress.php
@@ -22,6 +22,15 @@
'strategy',
'writing',
],
+ 'seo' => [
+ 'meta' => [
+ 'title' => '{{term_name}} Projects | JakeVan',
+ ],
+ 'archive' => [
+ 'type' => 'CollectionPage',
+ 'name' => '{{term_name}} Projects',
+ ],
+ ],
'fields' => [
'term_name' => [
'label' => 'Name',
diff --git a/taxonomies/project.php b/taxonomies/project.php
new file mode 100644
index 0000000..4f570f2
--- /dev/null
+++ b/taxonomies/project.php
@@ -0,0 +1,138 @@
+<?php
+// /taxonomies/progress.php
+function ajv_project():array
+{
+ return [
+ 'singular' => 'Project',
+ 'plural' => 'Projects',
+ 'icon' => 'cards-three',
+ 'show_feed' => true,
+ 'show_directory' => true,
+ 'approve_new' => false,
+ 'rewrite' => [
+ 'slug' => 'projects',
+ 'with_front' => false,
+ 'hierarchical' => true,
+ ],
+ 'hierarchical' => true,
+ 'for_content' => [
+ 'art',
+ 'design',
+ 'development',
+ 'strategy',
+ 'writing',
+ ],
+ 'seo' => [
+ 'schema' => [
+ 'type' => 'CreativeWork',
+ 'name' => '{{term_name}}',
+ 'description' => '{{term_description}}',
+ 'dateCreated' => '{{started}}',
+ 'keywords' => '{{target.name}}',
+ ],
+ 'meta' => [
+ 'title' => '{{term_name}} | Project by JakeVan',
+ 'description' => '{{term_description}}',
+ ],
+ 'archive' => [
+ 'type' => 'CollectionPage',
+ 'name' => '{{term_name}}',
+ 'description' => '{{term_description}}',
+ ],
+ ],
+ 'fields' => [
+ 'term_name' => [
+ 'label' => 'Name',
+ 'type' => 'text',
+ 'quickEdit' => true,
+ ],
+ 'city' => [
+ 'type' => 'taxonomy',
+ 'taxonomy_type' => 'reference',
+ 'taxonomy' => 'city',
+ 'autocomplete' => true,
+ 'quickEdit' => true,
+ 'label' => 'City',
+ ],
+ 'target' => [
+ 'type' => 'taxonomy',
+ 'taxonomy_type' => 'reference',
+ 'taxonomy' => 'target',
+ 'autocomplete' => true,
+ 'quickEdit' => true,
+ 'label' => 'Target Audience',
+ ],
+ 'started' => [
+ 'type' => 'date',
+ 'label' => 'Started',
+ 'quickEdit' => true,
+ ],
+ 'ended' => [
+ 'type' => 'date',
+ 'label' => 'Ended',
+ 'quickEdit' => true,
+ ],
+ 'budget' => [
+ 'type' => 'radio',
+ 'label' => 'Budget',
+ 'options' => [
+ 'low' => '$',
+ 'medium-low'=> '$$',
+ 'medium' => '$$$',
+ 'medium-high'=> '$$$$',
+ 'high' => '$$$$$',
+ ]
+ ],
+ 'timeline' => [
+ 'type' => 'text',
+ 'label' => 'Timeline',
+ 'quickEdit' => true,
+ ],
+ 'url' => [
+ 'type' => 'url',
+ 'label' => 'Project URL',
+ 'quickEdit' => true,
+ ],
+ 'description' => [
+ 'type' => 'textarea',
+ 'quill' => true,
+ 'quickEdit' => true,
+ 'label' => 'Project Description',
+ ],
+ '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'
+ ]
+ ]
+ ],
+
+ 'common' => [ 'wiki' ]
+ ]
+ ];
+}
diff --git a/taxonomies/style.php b/taxonomies/style.php
index bf4475d..d86c3ac 100644
--- a/taxonomies/style.php
+++ b/taxonomies/style.php
@@ -4,9 +4,6 @@
{
return [
'directory' => 'Styles',
- 'description' => [
- 'From American Traditional to Japanese.'
- ],
'singular' => 'Style',
'plural' => 'Styles',
'show_directory' => true,
@@ -27,6 +24,22 @@
'strategy',
'writing',
],
+ 'seo' => [
+ 'schema' => [
+ 'type' => 'DefinedTerm',
+ 'name' => '{{term_name}}',
+ 'description' => '{{term_description}}',
+ 'alternateName' => '{{alternate_name}}',
+ ],
+ 'meta' => [
+ 'title' => '{{term_name}} Style | JakeVan',
+ 'description' => '{{term_description}}',
+ ],
+ 'archive' => [
+ 'type' => 'CollectionPage',
+ 'name' => '{{term_name}} Projects',
+ ],
+ ],
'fields' => [
'term_name' => [
'label' => 'Name',
diff --git a/taxonomies/target.php b/taxonomies/target.php
index 2fd2a07..9f870f2 100644
--- a/taxonomies/target.php
+++ b/taxonomies/target.php
@@ -6,7 +6,8 @@
'singular' => 'Target Audience',
'plural' => 'Target Audiences',
'icon' => 'crosshair-simple',
- 'show_feed' => false,
+ 'show_feed' => true,
+ 'show_directory' => true,
'rewrite' => [
'slug' => 'target',
'with_front' => false,
@@ -20,6 +21,15 @@
'strategy',
'writing',
],
+ 'seo' => [
+ 'meta' => [
+ 'title' => '{{term_name}} Projects | JakeVan',
+ ],
+ 'archive' => [
+ 'type' => 'CollectionPage',
+ 'name' => '{{term_name}} Projects',
+ ],
+ ],
'fields' => [
'term_name' => [
'label' => 'Name',
diff --git a/taxonomies/theme.php b/taxonomies/theme.php
index 9c8583c..0c03cb0 100644
--- a/taxonomies/theme.php
+++ b/taxonomies/theme.php
@@ -12,7 +12,7 @@
],
'singular' => 'Theme',
'plural' => 'Themes',
- 'icon' => 'hashtag',
+ 'icon' => 'hash',
'favouritable' => true,
'show_feed' => true,
'approve_new' => false,
@@ -29,6 +29,22 @@
'strategy',
'writing',
],
+ 'seo' => [
+ 'schema' => [
+ 'type' => 'DefinedTerm',
+ 'name' => '{{term_name}}',
+ 'description' => '{{description}}',
+ 'alternateName' => '{{alternate_name}}',
+ ],
+ 'meta' => [
+ 'title' => '{{term_name}} | Themes',
+ 'description' => '{{description}}',
+ ],
+ 'archive' => [
+ 'type' => 'CollectionPage',
+ 'name' => '{{term_name}} Projects',
+ ],
+ ],
'fields' => [
'term_name' => [
'label' => 'Name',
--
Gitblit v1.10.0