| | |
| | | |
| | | use JVBase\managers\Cache; |
| | | use JVBase\meta\Meta; |
| | | use JVBase\utility\Features; |
| | | use JVBase\registrar\Registrar; |
| | | use JVBase\base\Site; |
| | | use WP_Block; |
| | | |
| | | if (!defined('ABSPATH')) { |
| | |
| | | $this->cache->flush(); |
| | | } |
| | | add_action('init', [ $this, 'registerBlock' ]); |
| | | add_action('wp_footer', 'jvbRenderGallery'); |
| | | add_action('wp_footer', [$this, 'renderGallery']); |
| | | } |
| | | |
| | | public function registerBlock() |
| | |
| | | public function render(array $attributes, string $content, WP_Block $block) |
| | | { |
| | | global $post; |
| | | if (!$post || !Features::forContent(jvbNoBase($post->post_type))->has('is_timeline') ) { |
| | | $registrar = Registrar::getInstance($post->post_type); |
| | | if (!$post || !$registrar || !$registrar->hasFeature('is_timeline') ) { |
| | | return ''; |
| | | } |
| | | $this->parentID = $post->ID; |
| | |
| | | } |
| | | $this->content = jvbNoBase($post->post_type); |
| | | |
| | | $this->children = get_children([ |
| | | 'post_parent' => $this->parentID, |
| | | 'post_status' => 'publish', |
| | | 'orderby' => 'date', |
| | | 'order' => 'ASC', |
| | | 'fields' => 'ids' |
| | | ]); |
| | | $this->children = jvbTimelinePoints($this->parentID,$post->post_type); |
| | | $this->total = count($this->children); |
| | | |
| | | ob_start(); |
| | |
| | | { |
| | | $this->renderHeader(); |
| | | $this->renderTimeline(); |
| | | ?> |
| | | <ul class="buttons"><li><a href="<?= get_post_type_archive_link(BASE.$this->content) ?>">See All Before & Afters</a></li></ul> |
| | | <?php |
| | | } |
| | | |
| | | protected function get_field(string $fieldName, array $fields) { |
| | |
| | | if ($value === '' || $slug === 'person') { |
| | | continue; |
| | | } |
| | | $config = JVB_TAXONOMY[$slug]; |
| | | $registrar = Registrar::getInstance($slug); |
| | | $taxSlug = jvbCheckBase($slug); |
| | | $terms = get_the_terms($this->parentID, $taxSlug); |
| | | if ($terms && !is_wp_error($terms)) { |
| | | $many = count($terms) > 1; |
| | | ?> |
| | | <li class="<?=$slug?>"> |
| | | <span title="<?= $config['singular']?>" class="term tldr" data-short="" data-long="<?= $config['singular']?>"> |
| | | <?=jvbIcon($config['icon']??jvbDefaultIcon())?> |
| | | <span title="<?= $registrar->getSingular()?>" class="term tldr" data-short="" data-long="<?= $registrar->getSingular()?>"> |
| | | <?=jvbIcon($registrar->getIcon())?> |
| | | <span></span> |
| | | </span> |
| | | <?php |
| | |
| | | } |
| | | ?> |
| | | </ul> |
| | | <ul class="buttons"><li><a href="<?= get_post_type_archive_link(BASE.$this->content) ?>">See All Before & Afters</a></li></ul> |
| | | </header> |
| | | <section id="info"> |
| | | <?php |
| | | $content = $this->get_field('post_content', $extra); |
| | | if ($content !== '') { |
| | | echo $this->formatContent($content); |
| | | } |
| | | ?> |
| | | </section> |
| | | <section id="at-a-glance" class="row nowrap"> |
| | | <div class="before"> |
| | | <h3>Before</h3> |
| | |
| | | <?php endif; ?> |
| | | </div> |
| | | </section> |
| | | <section id="info"> |
| | | <?php |
| | | $content = $this->get_field('post_content', $extra); |
| | | if ($content !== '') { |
| | | echo $this->formatContent($content); |
| | | } |
| | | ?> |
| | | </section> |
| | | <?php |
| | | } |
| | | |
| | |
| | | $title = ($i === 0) ? 'Before Laser Tattoo Removal' : 'After '.$i.' Treatment'.$plural; |
| | | $title = ($i > 0 && !str_contains('Treatment', $fields['post_title'])) ? $fields['post_title'] : $title; |
| | | ?> |
| | | <section id="<?= $i === 0 ? 'before-treatment' : 'treatment-'.$i ?>" class="timeline-point row a-start nowrap"> |
| | | <section id="<?= $i === 0 ? 'before-treatment' : 'treatment-'.$i ?>" class="timeline-point row top nowrap"> |
| | | <?php |
| | | $img = $this->get_field('post_thumbnail', $fields); |
| | | if (is_int($img)) { |
| | | echo jvbFormatImage($img); |
| | | echo str_replace('<img', '<img data-caption=".info header"', jvbFormatImage($img)); |
| | | } |
| | | ?> |
| | | <div class="info"> |
| | |
| | | return ''; |
| | | } |
| | | $out = '<ul class="term-list">'; |
| | | $registrar = Registrar::getInstance('timeline'); |
| | | foreach ($timeline as $term) { |
| | | $link = get_term_link($term->term_id, BASE.'timeline'); |
| | | $out .= '<li><a href="'.$link.'" rel="tag" title="See more progressions at this timeline">'.jvbIcon(JVB_TAXONOMY['timeline']['icon']??'hourglass').html_entity_decode($term->name).'</a><small>after the treatment</small></li>'; |
| | | $out .= '<li><small><a href="'.$link.'" rel="tag" title="See more progressions at this timeline">'.jvbIcon($registrar->getIcon('hourglass')).html_entity_decode($term->name).'</a> after the treatment</small></li>'; |
| | | } |
| | | $out .='</ul>'; |
| | | return $out; |
| | | } |
| | | |
| | | public function renderGallery():void |
| | | { |
| | | jvbRenderGallery(true); |
| | | } |
| | | } |