1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
| <?php
| namespace JVBase\managers\SEO\render\Traits\_Properties;
|
| use JVBase\base\SchemaHelper;
| use JVBase\inc\managers\SEO\render\Thing\Intangible\ItemList\OfferCatalog;
| use JVBase\registrar\Registrar;
|
| if (!defined('ABSPATH')) {
| exit;
| }
| trait hasOfferCatalogTrait {
| /**
| * @var OfferCatalog Indicates an OfferCatalog listing for this Organization, Person, or Service.
| */
| protected OfferCatalog $hasOfferCatalog;
|
| public function getHasOfferCatalog():?OfferCatalog
| {
| return $this->hasOfferCatalog??null;
| }
| public function setHasOfferCatalog(OfferCatalog|array $hasOfferCatalog):void
| {
| if (is_array($hasOfferCatalog)){
| if (array_key_exists('generate', $hasOfferCatalog) && $hasOfferCatalog['generate']) {
| $this->generateOfferCatalog($hasOfferCatalog);
| } else {
| if (!array_key_exists('type', $hasOfferCatalog)) {
| $hasOfferCatalog['type'] = 'JVBase\inc\managers\SEO\render\Thing\Intangible\ItemList\OfferCatalog';
| }
| $items = [];
| if (array_key_exists('items', $hasOfferCatalog)) {
| $items = $hasOfferCatalog['items'];
| unset($hasOfferCatalog['items']);
| }
| $hasOfferCatalog = SchemaHelper::classFromConfig($hasOfferCatalog);
| if (!empty($items)) {
| $hasOfferCatalog->setItemListElement($items);
| }
| }
| }
| $this->hasOfferCatalog = $hasOfferCatalog;
| }
|
| public function getHasOfferCatalogFieldConfig():array
| {
| return [
| 'type' => 'group',
| 'label' => 'Offer Catalog',
| 'wrap' => 'details',
| 'fields' => [
| 'generate' => [
| 'type' => 'true_false',
| 'label' => 'Generate from Content type?',
| 'default' => false,
| ],
| 'content_type' => [
| 'type' => 'checkbox',
| 'label' => 'Select Type to generate from',
| 'options' => Registrar::getRegistered(),
| 'condition' => [
| 'field' => 'generate',
| 'value' => 1,
| 'operator' => '=='
| ]
| ],
| 'offer_catalog' => [
| 'type' => 'repeater',
| 'label' => 'Manually Enter Offer Catalog',
| 'condition' => [
| 'field' => 'generate',
| 'value' => 1,
| 'operator' => '!='
| ],
| 'fields' => [
| 'type' => [
| 'type' => 'select',
| 'label' => 'Type',
| 'options' => [
| 'product' => 'Product',
| 'service' => 'Service'
| ]
| ],
| 'name' => [
| 'type' => 'text',
| 'label' => 'Name',
| ],
| 'description' => [
| 'type' => 'textarea',
| 'label' => 'Description'
| ],
| 'price' => [
| 'type' => 'number',
| 'label' => 'Price'
| ]
| ]
| ]
| ]
| ];
| }
| }
|
|