| | |
| | | protected static ?int $currentQueryId = null; |
| | | protected static array $counters = []; |
| | | protected static ?WP_Query $originalQuery = null; |
| | | protected array $ignore = ['align','alt','area','aspectRatio','backgroundColor','borderColor','buttonText','buttonPosition','buttonUseIcon','categories','className','columns','contentPosition','customOverlayColor','dimRatio','displayAsDropdown','displayAuthor','displayFeaturedImage','displayPostContent','displayPostContentRadio','displayPostDate','excerptLength','featuredImageAlign','fontSize','gradient','hasFixedLayout','hasParallax','height','iconColor','iconColorValue','iconColorValue','iconBackgroundColor','iconBackgroundColorValue','id','imageFill','isDark','isLink','isObjectPosition','isRepeated','isSearchFieldHidden','isStackedOnMobile','isUserOverlayColor','kind','label','largestFontSize','layout','lightbox','linkDestination','linkTo','level','mediaId','mediaLink','mediaPosition','mediaSizeSlug','mediaType','mediaWidth','metadata','minHeight','minHeightUnit','opacity','opensInNewTab','order','orderBy','ordered','overlayColor','overlayMenu','placeholder','postLayout','postsToShow','query', 'queryId','ref','rel','scale','shouldSyncIcon','showContent','showEmpty','showHierarchy','showLabel','showLabels','showOnlyTopLevel','showPostCounts','showTagCounts','size','sizeSlug','slug','smallestFontSize','tagName','taxonomy','term','textAlign','textColor','theme','title','type','url','useFeaturedImage','verticalAlignment','width','widthUnit',]; |
| | | protected array $ignore = ['align','alt','area','aspectRatio','backgroundColor','borderColor','buttonText','buttonPosition','buttonUseIcon','categories','className','columns','contentPosition','customOverlayColor','datetime','dimRatio','displayAsDropdown','displayAuthor','displayFeaturedImage','displayPostContent','displayPostContentRadio','displayPostDate','excerptLength','featuredImageAlign','fontSize','gradient','hasFixedLayout','hasParallax','height','iconColor','iconColorValue','iconColorValue','iconBackgroundColor','iconBackgroundColorValue','id','imageFill','isDark','isLink','isObjectPosition','isRepeated','isSearchFieldHidden','isStackedOnMobile','isUserOverlayColor','kind','label','largestFontSize','layout','lightbox','linkDestination','linkTo','level','mediaId','mediaLink','mediaPosition','mediaSizeSlug','mediaType','mediaWidth','metadata','minHeight','minHeightUnit','opacity','opensInNewTab','order','orderBy','ordered','overlayColor','overlayMenu','placeholder','postLayout','postsToShow','query', 'queryId','ref','rel','scale','shouldSyncIcon','showContent','showEmpty','showHierarchy','showLabel','showLabels','showOnlyTopLevel','showPostCounts','showTagCounts','size','sizeSlug','slug','smallestFontSize','tagName','taxonomy','term','textAlign','textColor','theme','title','type','url','useFeaturedImage','verticalAlignment','width','widthUnit',]; |
| | | |
| | | //For custom style output for nested links, etc |
| | | protected static array $pendingStyles = []; |
| | |
| | | 'label' => __('With Logo', 'jvb') |
| | | ] |
| | | ); |
| | | register_block_style( |
| | | 'core/gallery', |
| | | [ |
| | | 'name' =>'hexagon', |
| | | 'label' => __('Hexagonal', 'jvb') |
| | | ] |
| | | ); |
| | | register_block_style( |
| | | 'core/gallery', |
| | | [ |
| | | 'name' =>'diamond', |
| | | 'label' => __('Diamond', 'jvb') |
| | | ] |
| | | ); |
| | | register_block_style( |
| | | 'core/gallery', |
| | | [ |
| | | 'name' =>'cut', |
| | | 'label' => __('Cut Corners', 'jvb') |
| | | ] |
| | | ); |
| | | } |
| | | protected function checkMethods(?string $content, array $block, ?WP_Block $parent = null, bool $isPrerender = false):?string |
| | | { |
| | |
| | | } else if (method_exists($this, $method)) { |
| | | $content = $this->$method($block, $content, $parent); |
| | | return $isPrerender ? $this->maybeOutputCustomStyles().$content : $content; |
| | | } elseif (!empty($blockName) && JVB_TESTING) { |
| | | } elseif (JVB_TESTING && !empty($blockName)) { |
| | | if (!in_array($block['blockName'], $this->getIgnore($isPrerender))) { |
| | | jvbDump('No method found for '.print_r($block['blockName'], true)); |
| | | } |
| | |
| | | { |
| | | //Ignore for both |
| | | $base = [ |
| | | 'core/null' |
| | | 'core/null', |
| | | 'core/list-item', |
| | | 'core/post-content', |
| | | 'jvb/drawer-menu', |
| | | 'jvb/summary', |
| | | 'jvb/feed', |
| | | 'jvb/forms', |
| | | 'jvb/gmbreviews', |
| | | 'jvb/timeline', |
| | | 'jvb/video', |
| | | 'jvb/faq', |
| | | 'jvb/glossary' |
| | | ]; |
| | | if ($isPrerender) { |
| | | $base = array_merge($base, [ |
| | |
| | | |
| | | public function render(string $content, array $block):string |
| | | { |
| | | if ($block['blockName'] === 'jvb/feed') { |
| | | // Enqueue the feed block script (it will automatically load dependencies) |
| | | $this->localize_feedblock(); |
| | | switch ($block['blockName']) { |
| | | case 'jvb/feed': |
| | | $this->localize_feedblock(); |
| | | break; |
| | | case 'jvb/forms': |
| | | wp_enqueue_style('jvb-form'); |
| | | break; |
| | | case 'jvb/timeline': |
| | | wp_enqueue_script('jvb-gallery'); |
| | | add_action('wp_footer', 'jvbRenderGallery'); |
| | | break; |
| | | } |
| | | if ($block['blockName'] === 'jvb/forms') { |
| | | wp_enqueue_style('jvb-form'); |
| | | } |
| | | |
| | | |
| | | |
| | | return $this->checkMethods($content, $block); |
| | | } |
| | |
| | | |
| | | public function prerender_core_columns(array $block, ?string $content, ?WP_Block $parent):?string |
| | | { |
| | | jvbDump($block, 'columns'); |
| | | // jvbDump($block, 'columns'); |
| | | $attrs = $block['attrs']??[]; |
| | | $tagName = array_key_exists('tagName', $attrs) ? $attrs['tagName'] : 'section'; |
| | | |
| | |
| | | |
| | | public function prerender_core_paragraph(array $block, ?string $content, ?WP_Block $parent):?string |
| | | { |
| | | jvbDump($block, 'paragraph'); |
| | | // jvbDump($block, 'paragraph'); |
| | | // jvbDump($parent, 'Parent'); |
| | | $inside = $this->inside($block); |
| | | return empty($inside) ? '' : sprintf( |
| | |
| | | '<table%s', |
| | | $this->getClassesAndStyles($attrs) |
| | | ), $table); |
| | | $caption = str_replace(strtok($parts[1], '>'), '<figcaption', $parts[1]); |
| | | $caption = ''; |
| | | if (array_key_exists(1, $parts)) { |
| | | $caption = str_replace(strtok($parts[1], '>'), '<figcaption', $parts[1]); |
| | | } |
| | | |
| | | |
| | | return sprintf( |
| | | '<figure%s>%s%s</figure>', |
| | |
| | | $inner = ''; |
| | | |
| | | if (!static::$currentLoop) { |
| | | jvbDump('No loop stored'); |
| | | |
| | | if (JVB_TESTING) { |
| | | jvbDump('No loop stored'); |
| | | } |
| | | return $content; |
| | | } |
| | | if (static::$currentLoop->have_posts()) { |
| | |
| | | ); |
| | | } |
| | | } |
| | | |
| | | return sprintf( |
| | | '<ul%s>%s</ul>', |
| | | $this->getClassesAndStyles($block['attrs']??[], ['loop']), |
| | |
| | | protected function buildQueryArgs(array $attrs): array |
| | | { |
| | | $queryID = $attrs['queryId'] ?? null; |
| | | $args = []; |
| | | $args = [ |
| | | 'post_status' => 'publish', |
| | | ]; |
| | | foreach (($attrs['query'] ?? []) as $key => $value) { |
| | | if (empty($value)) continue; |
| | | switch ($key) { |
| | |
| | | |
| | | public function prerender_core_query_title(array $block, ?string $content, ?WP_Block $parent):?string |
| | | { |
| | | jvbDump($block, 'query title'); |
| | | // jvbDump($block, 'query title'); |
| | | $attr = $block['attrs']; |
| | | $name = ''; |
| | | $showPrefix = $attr['showPrefix']??false; |
| | |
| | | //core_archives |
| | | public function render_core_archives(array $block, string $content):string |
| | | { |
| | | jvbDump($block, 'archives'); |
| | | // jvbDump($block, 'archives'); |
| | | $attrs = $block['attrs']??[]; |
| | | $isDropdown = $this->checkAttrs('displayAsDropdown', $attrs); |
| | | |
| | |
| | | } |
| | | $inside = []; |
| | | foreach($pages->posts as $page) { |
| | | jvbDump($page); |
| | | $inside[] = sprintf( |
| | | '<li><a href="%s">%s</a>', |
| | | get_the_permalink($page->ID), |
| | |
| | | |
| | | $type = 'row'; |
| | | $isRow = true; |
| | | |
| | | //Determine type |
| | | if ((array_key_exists('type', $value) && !in_array($value['type'], ['flex', 'grid'])) || |
| | | if ((array_key_exists('type', $value) && !in_array($value['type'], ['flex', 'grid', 'default'])) || |
| | | (array_key_exists('orientation', $value) && $value['orientation'] === 'vertical')) { |
| | | $type = 'col'; |
| | | $isRow = false; |
| | |
| | | $styles['color'] = $this->getColor($v['text']); |
| | | } |
| | | if (isset($v['gradient'])) { |
| | | jvbDump($v, 'Gradient'); |
| | | |
| | | if (JVB_TESTING) { |
| | | jvbDump($v, 'Gradient'); |
| | | } |
| | | } |
| | | break; |
| | | |
| | |
| | | if ($sk === 'minHeight') { |
| | | $styles['min-height'] = $sv; |
| | | } else { |
| | | jvbDump('No config set for dimension '.$sk.': '.print_r($sv, true)); |
| | | if (JVB_TESTING) { |
| | | jvbDump('No config set for dimension '.$sk.': '.print_r($sv, true)); |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | unset($border['style']); |
| | | unset($border['color']); |
| | | if (!empty($border)) { |
| | | jvbDump($border,'[getBorderStyle] Leftover styles:'); |
| | | jvbDump($border, '[getBorderStyle] Leftover styles:'); |
| | | } |
| | | } |
| | | |
| | |
| | | break; |
| | | case 'textAlign': |
| | | $styles['text-align'] = $value; |
| | | break; |
| | | default: |
| | | if (JVB_TESTING) { |
| | | jvbDump($value,'[getTypographyStyle] No property set for '.$property.': '); |
| | |
| | | }, $selectors); |
| | | $fullSelector = implode(',', $fullSelector); |
| | | |
| | | jvbDump($state, 'state'); |
| | | jvbDump($rules, 'rules'); |
| | | |
| | | if (JVB_TESTING) { |
| | | jvbDump($state, 'state'); |
| | | jvbDump($rules, 'rules'); |
| | | } |
| | | |
| | | if (isset($rules['color']['text']) || isset($rules['text'])) { |
| | | $css['color'] = $this->getColor($rules['color']['text'] ?? $rules['text']); |