Jake Vanderwerf
9 days ago ed57c386db34d8693ca75311972d0929ebe5f488
inc/registrar/Fields.php
@@ -1,6 +1,8 @@
<?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;
@@ -48,9 +50,56 @@
   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',
         ],
@@ -77,28 +126,7 @@
            '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
         ]
      ];
@@ -267,159 +295,97 @@
   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);
   }
}