| | |
| | | <?php |
| | | namespace JVBase\registrar; |
| | | |
| | | use JVBase\managers\SEO\render\Thing\Organization\LocalBusiness\LocalBusiness; |
| | | use JVBase\managers\SEO\render\Thing\Thing; |
| | | use JVBase\registrar\fields\Field; |
| | | use JVBase\registrar\fields\GroupedField; |
| | | use JVBase\registrar\fields\OptionsField; |
| | |
| | | |
| | | public function addPostFields():void |
| | | { |
| | | $statuses = [ |
| | | // 'all' => [ |
| | | // 'icon' => 'infinity', |
| | | // 'label' => 'Everything', |
| | | // ], |
| | | 'publish' => [ |
| | | 'icon' => 'eye', |
| | | 'label' => 'Live', |
| | | ], |
| | | 'draft' => [ |
| | | 'icon' => 'eye-closed', |
| | | 'label' => 'Hidden', |
| | | ], |
| | | 'trash' => [ |
| | | 'label' => 'Scrapped', |
| | | 'icon' => 'trash', |
| | | ], |
| | | // 'delete' => [ |
| | | // 'label' => 'Permanently Delete', |
| | | // 'icon' => 'trash' |
| | | // ] |
| | | ]; |
| | | if ($this->registrar->hasFeature('is_calendar')) { |
| | | $statuses = [ |
| | | 'future' => [ |
| | | 'icon' => '', |
| | | 'label' => 'Upcoming', |
| | | ], |
| | | 'past' => [ |
| | | 'icon' => '', |
| | | 'label' => 'Past', |
| | | ], |
| | | 'repeat' => [ |
| | | 'icon' => '', |
| | | 'label' => 'Repeating', |
| | | ], |
| | | 'draft' => [ |
| | | 'icon' => 'eye-closed', |
| | | 'label' => 'Hidden', |
| | | ], |
| | | 'trash' => [ |
| | | 'label' => 'Scrapped', |
| | | 'icon' => 'trash', |
| | | ], |
| | | ]; |
| | | } |
| | | $fields = [ |
| | | 'post_thumbnail' => [ |
| | | 'type' => 'upload', |
| | | 'subtype' => 'image', |
| | | 'multiple'=> false, |
| | | 'label' => 'Main Image', |
| | | ], |
| | |
| | | 'type' => 'radio', |
| | | 'label' => 'Status', |
| | | 'default' => 'draft', |
| | | 'options' => [ |
| | | 'all' => [ |
| | | 'icon' => 'infinity', |
| | | 'label' => 'Everything', |
| | | ], |
| | | 'publish' => [ |
| | | 'icon' => 'eye', |
| | | 'label' => 'Live', |
| | | ], |
| | | 'draft' => [ |
| | | 'icon' => 'eye-closed', |
| | | 'label' => 'Hidden', |
| | | ], |
| | | 'trash' => [ |
| | | 'label' => 'Scrapped', |
| | | 'icon' => 'trash', |
| | | ], |
| | | 'delete' => [ |
| | | 'label' => 'Permanently Delete', |
| | | 'icon' => 'trash' |
| | | ] |
| | | ] |
| | | 'options' => $statuses |
| | | ] |
| | | ]; |
| | | |
| | |
| | | |
| | | protected function addReviewField(?string $label = null):void |
| | | { |
| | | $this->addField( |
| | | 'reviews', |
| | | [ |
| | | 'type' => 'repeater', |
| | | 'add_label' => 'name', |
| | | 'label' => $label ?: 'Reviews', |
| | | 'fields' => [ |
| | | 'name' => [ |
| | | 'type' => 'text', |
| | | 'label' => 'Reviewer Name', |
| | | ], |
| | | 'review' => [ |
| | | 'type' => 'textarea', |
| | | 'quill' => false, |
| | | 'label' => 'Review', |
| | | ], |
| | | 'rating' => [ |
| | | 'type' => 'select', |
| | | 'label' => 'Rating', |
| | | 'options' => [ |
| | | 'none' => 'Not Given', |
| | | '0.5' => '0.5', |
| | | '1' => '1', |
| | | '1.5' => '1.5', |
| | | '2' => '2', |
| | | '2.5' => '2.5', |
| | | '3' => '3', |
| | | '3.5' => '3.5', |
| | | '4' => '4', |
| | | '4.5' => '4.5', |
| | | '5' => '5', |
| | | ], |
| | | 'default' => 'none' |
| | | ], |
| | | 'date' => [ |
| | | 'type' => 'date', |
| | | 'label' => 'Date of Review', |
| | | ], |
| | | 'url' => [ |
| | | 'type' => 'url', |
| | | 'label' => 'Link to Review (optional)', |
| | | ], |
| | | ], |
| | | 'section' => 'seo' |
| | | ] |
| | | ); |
| | | $biz = new LocalBusiness(); |
| | | $biz->setReviewField($this); |
| | | } |
| | | |
| | | protected function addAlternateNameField():void |
| | | { |
| | | $this->addField( |
| | | 'alternate_name', |
| | | [ |
| | | 'type' => 'repeater', |
| | | 'label' => 'Alternate Name', |
| | | 'fields' => [ |
| | | 'name' => [ |
| | | 'type' => 'text', |
| | | 'label' => 'Name', |
| | | ] |
| | | ], |
| | | 'section' => 'seo' |
| | | ] |
| | | ); |
| | | $thing = new Thing(); |
| | | $thing->setAlternateNameField($this); |
| | | } |
| | | protected function addKeywordsField():void |
| | | { |
| | | $this->addField( |
| | | 'keywords', |
| | | [ |
| | | 'type' => 'repeater', |
| | | 'label' => 'Keywords', |
| | | 'fields' => [ |
| | | 'keyword' => [ |
| | | 'type' => 'text', |
| | | 'label' => 'Keyword', |
| | | ], |
| | | ], |
| | | 'default' => $labels ?? [ 'Edmonton tattoos', 'Edmonton tattoo artist', 'Edmonton tattooist' ], |
| | | 'section' => 'seo', |
| | | 'quickEdit' => true, |
| | | ] |
| | | ); |
| | | $thing = new LocalBusiness(); |
| | | $thing->setKeywordsField($this); |
| | | } |
| | | |
| | | protected function addOutsidePhotoField():void |
| | | { |
| | | $this->addField( |
| | | 'outside_photo', |
| | | [ |
| | | 'type' => 'image', |
| | | 'limit' => 1, |
| | | 'label' => __('Outside Photo', 'jvb') |
| | | ] |
| | | ); |
| | | $business = new LocalBusiness(); |
| | | $business->setPhotoField($this); |
| | | } |
| | | |
| | | protected function addSloganField():void |
| | | { |
| | | $this->addField( |
| | | 'slogan', |
| | | [ |
| | | 'type' => 'text', |
| | | 'label' => __('Tagline or Slogan', 'jvb') |
| | | ] |
| | | ); |
| | | $business = new LocalBusiness(); |
| | | $business->setSloganField($this); |
| | | } |
| | | |
| | | protected function addPaymentField():void |
| | | { |
| | | $this->addField( |
| | | 'payment_accepted', |
| | | [ |
| | | 'type' => 'set', |
| | | 'label' => __('Payment Accepted', 'jvb'), |
| | | 'options' => [ |
| | | 'Cash' => 'Cash', |
| | | 'Credit Card' => 'Credit Card', |
| | | 'Debit' => 'Debit', |
| | | 'Google Pay' => 'Google Pay', |
| | | 'Apple Pay' => 'Apple Pay', |
| | | 'PayPal' => 'PayPal', |
| | | 'Interac' => 'Interac', |
| | | 'AMEX' => 'AMEX', |
| | | ], |
| | | ] |
| | | ); |
| | | $business = new LocalBusiness(); |
| | | $business->setPaymentAcceptedField($this); |
| | | } |
| | | |
| | | protected function addAmenitiesField():void |
| | | { |
| | | $business = new LocalBusiness(); |
| | | $business->setAmenityFeatureField($this); |
| | | } |
| | | protected function addCredentialsField():void |
| | | { |
| | | $this->addField( |
| | | 'amenities', |
| | | 'credentials', |
| | | [ |
| | | 'type' => 'set', |
| | | 'label' => __('Amenities', 'jvb'), |
| | | 'options' => [ |
| | | 'Wheelchair Accessible' => 'Wheelchair Accessible', |
| | | 'Free Parking' => 'Free Parking', |
| | | 'Private Rooms' => 'Private Rooms', |
| | | 'Air Conditioning' => 'Air Conditioning', |
| | | 'WiFi' => 'WiFi', |
| | | 'Gender Neutral Restroom' => 'Gender Neutral Restroom', |
| | | 'LGBTQ+ Friendly' => 'LGBTQ+ Friendly', |
| | | 'Sterilization Room' => 'Sterilization Room', |
| | | 'Refreshments Available' => 'Refreshments Available', |
| | | 'Street Level Access' => 'Street Level Access', |
| | | 'Single Use Needles' => 'Single Use Needles', |
| | | 'Consultation Room' => 'Consultation Room', |
| | | 'Aftercare Products Available' => 'Aftercare Products Available', |
| | | 'Walk-Ins Welcome' => 'Walk-Ins Welcome', |
| | | 'label' => __('Credentials', 'jvb'), |
| | | 'options'=> [ |
| | | 'WHMIS 2015' => 'WHMIS 2015', |
| | | 'Tattoo and Piercing Safety Standards' => 'Tattoo and Piercing Safety Standards', |
| | | 'Bloodborne Pathogens and Infection Control' => 'Bloodborne Pathogens and Infection Control', |
| | | 'First Aid Training' => 'First Aid Training', |
| | | ] |
| | | ] |
| | | ); |
| | | } |
| | | protected function addPermanentlyCloseField():void |
| | | { |
| | | $business = new LocalBusiness(); |
| | | $business->setDissolutionDateField($this); |
| | | } |
| | | |
| | | protected function addHoursField():void |
| | | { |
| | | $business = new LocalBusiness(); |
| | | $business->setOpeningHoursSpecificationField($this); |
| | | } |
| | | |
| | | protected function addRateField():void |
| | | { |
| | | $this->addField('rate', |
| | | [ |
| | | 'type' => 'text', |
| | | 'subtype' => 'number', |
| | | 'label' => __('Hourly Rate', 'jvb') |
| | | ]); |
| | | } |
| | | |
| | | protected function addAwardsField():void |
| | | { |
| | | $business = new LocalBusiness(); |
| | | $business->setAwardField($this); |
| | | } |
| | | |
| | | protected function addRatingsField():void |
| | | { |
| | | $business = new LocalBusiness(); |
| | | $business->setAggregateRatingField($this); |
| | | } |
| | | |
| | | protected function addServicesField():void |
| | | { |
| | | $business = new LocalBusiness(); |
| | | $business->setHasOfferCatalogField($this); |
| | | } |
| | | } |