push_to_stack('Generate level 1 gallery'); $layout = $short_code['layout']; $columns = !empty($short_code['columns']) && ($layout !== 'random' && $layout !== 'mosaic') ? $short_code['columns'] : 'auto'; $display = !empty($short_code['display']) ? $short_code['display'] : 'in-page'; $more = !empty($short_code['more']) ? esc_attr($short_code['more']) : ''; $more = (empty($more) && !empty($short_code['photo_more'])) ? esc_attr($short_code['photo_more']) : $more; $panel = !empty($short_code['panel']) ? $short_code['panel'] : ''; $title_position = empty($short_code['title_position']) ? $options['title_position'] : $short_code['title_position']; $row_constraints = isset($options['row_constraints']) && is_array($options['row_constraints']) ? $options['row_constraints'] : []; $sizes = isset($options['sizes']) && is_array($options['sizes']) ? $options['sizes'] : []; $show_lightbox = !isset($options['show_lightbox']) ? true: $options['show_lightbox']; $type = !empty($options['type']) ? $options['type'] : 'photo'; $parent = !empty($options['parent']) ? $options['parent'] : 'stream'; $pagination = isset($options['level_2_meta']) && is_array($options['level_2_meta']) ? $options['level_2_meta'] : []; $indent = !isset($options['indent']) ? "\t" : $options['indent']; list($container_id, $container_end) = $this->get_container_details($short_code, $module); $non_standard = $layout == 'random' || $layout == 'masonry' || $layout == 'mosaic'; $col_class = ''; if (absint($columns)) { $col_class = 'photonic-gallery-'.$columns.'c'; } if ($col_class == '' && $row_constraints['constraint-type'] == 'padding') { $col_class = 'photonic-pad-photos'; } else if ($col_class == '') { $col_class = 'photonic-gallery-'.$row_constraints['count'].'c'; } $col_class .= ' photonic-level-1 photonic-thumb photonic-thumb-'.$layout; $link_attributes = $this->get_lightbox_attributes($show_lightbox, $panel, $module); $link_attributes_text = $this->get_text_from_link_attributes($link_attributes); $effect = $this->get_thumbnail_effect($short_code, $layout, $title_position); $ul_class = "class='title-display-$title_position photonic-level-1-container ".($non_standard ? 'photonic-'.$layout.'-layout' : 'photonic-standard-layout')." photonic-thumbnail-effect-$effect'"; if ($display == 'popup') { $ul_class = "class='slideshow-grid-panel lib-{$this->library} photonic-level-1-container title-display-$title_position'"; } $ret = ''; if (!$non_standard && $display != 'popup') { $container_tag = 'ul'; $element_tag = 'li'; } else { $container_tag = 'div'; $element_tag = 'div'; } list($pagination_data, $pagination, $columns_data) = $this->get_gallery_data_attributes($short_code, $module, $pagination, $columns); $start_with = "$indent<$container_tag $container_id $ul_class $pagination_data $columns_data>\n"; $ret .= $start_with; global $photonic_external_links_in_new_tab; if (!empty($photonic_external_links_in_new_tab)) { $target = " target='_blank' "; } else { $target = ''; } $counter = 0; $thumbnail_class = " class='$layout' "; $element_start = "$indent\t<".$element_tag.' class="photonic-'.$module->provider.'-image photonic-'.$module->provider.'-'.$type.' '.$col_class.'">'."\n"; $default_lightbox_text = apply_filters('photonic_default_lightbox_text', esc_attr__('View', 'photonic')); foreach ($photos as $photo) { $counter++; $thumb = ($non_standard && $display == 'in-page') ? (isset($photo['tile_image']) ? $photo['tile_image'] : $photo['main_image']) : $photo['thumbnail']; $orig = empty($photo['video']) ? $photo['main_image'] : $photo['video']; // $orig = $photo['main_image']; $url = isset($photo['main_page']) ? $photo['main_page'] : ''; $title = esc_attr($photo['title']); $description = esc_attr($photo['description']); $alt = esc_attr($photo['alt_title']); $orig = ($this->library == 'none' || !$show_lightbox) ? $url : $orig; $title = empty($title) ? ((empty($alt) && $module->link_lightbox_title && $this->library != 'thickbox') ? $default_lightbox_text : $alt) : $title; $ret .= $element_start; $deep_value = 'gallery[photonic-'.$module->provider.'-'.$parent.'-'.(empty($panel) ? $module->gallery_index : $panel).']/'.(empty($photo['id']) ? $counter : $photo['id']).'/'; $deep_link = ' data-photonic-deep="'.$deep_value.'" '; $buy = ''; if (!empty($photo['buy_link']) && $module->show_buy_link) { $buy = ' data-photonic-buy="'.$photo['buy_link'].'" '; } $style = []; if (!empty($sizes['thumb-width'])) $style[] = 'width:'.$sizes['thumb-width'].'px'; if (!empty($sizes['thumb-height'])) $style[] = 'height:'.$sizes['thumb-height'].'px'; if (!empty($style)) $style = 'style="'.implode(';', $style).'"'; else $style = ''; if ($module->link_lightbox_title && $this->library != 'thickbox' && !empty($url)) { $title_link_start = esc_attr(""); $title_link_end = esc_attr(""); } else { $title_link_start = ''; $title_link_end = ''; } if (!empty($short_code['caption']) && ($short_code['caption'] == 'desc' || ($short_code['caption'] == 'title-desc' && empty($title)) || ($short_code['caption'] == 'desc-title' && !empty($description)))) { $title = $description; } else if (empty($short_code['caption']) || (($short_code['caption'] == 'desc-title' && empty($title)) || $short_code['caption'] == 'none')) { $title = ''; } if (!empty($title)) { $title_markup = $title_link_start.esc_attr($title).$title_link_end; $title_markup = apply_filters('photonic_lightbox_title_markup', $title_markup); } else { $title_markup = ''; } if ($module->link_lightbox_title && $this->library != 'thickbox' && !empty($photo['buy_link']) && $module->show_buy_link) { $buy_link = esc_attr('
'); $title_markup .= $buy_link; } $shown_title = ''; if (in_array($title_position, ['below', 'hover-slideup-show', 'hover-slidedown-show', 'slideup-stick']) && !empty($title)) { $shown_title = '
'.wp_specialchars_decode($title, ENT_QUOTES).'
'; } $photo_data = ['title' => $title_markup, 'deep' => $deep_value, 'raw_title' => $title, 'href' => $orig]; if (!empty($photo['download'])) { $photo_data['download'] = $photo['download']; } if (!empty($photo['video'])) { $photo_data['video'] = $photo['video']; } else { $photo_data['image'] = $photo['main_image']; } $photo_data['provider'] = $module->provider; $photo_data['gallery_index'] = $module->gallery_index; $photo_data['id'] = $photo['id']; $lb_specific_data = $this->get_lightbox_specific_photo_data($photo_data, $module); if (!empty($photo['video'])) { $lb_specific_data .= ' data-photonic-media-type="video" '; } else { $lb_specific_data .= ' data-photonic-media-type="image" '; } if (!empty($photo['video']) && $this->library == 'lightgallery') { $video_id = $module->provider.'-'.$module->gallery_index.'-'.$photo['id']; $ret .= $indent."\t\t".''."\n"; $orig = ''; // href should be blank } else if (!empty($photo['video']) && (in_array($this->library, ['colorbox', 'fancybox', 'fancybox2', 'magnific', 'photoswipe', 'swipebox',]) || (in_array($this->library, ['fancybox3']) && in_array($module->provider, ['flickr', 'google'])) )) { $video_id = $module->provider.'-'.$module->gallery_index.'-'.$photo['id']; $ret .= $indent."\t\t".'
'."\n"; $ret .= $indent."\t\t\t".''."\n"; $ret .= $indent."\t\t".'
'."\n"; $orig = '#photonic-video-'.$video_id; } if ($this->library == 'magnific') { $magnific = !empty($photo['video']) ? 'mfp-inline' : 'mfp-image'; $link_attributes['class']['magnific'] = $magnific; $link_attributes_text = $this->get_text_from_link_attributes($link_attributes); } if ($title_position == 'tooltip') { $tooltip = 'data-photonic-tooltip="'.esc_attr($title).'" '; } else { $tooltip = ''; } $ret .= $indent."\t\t".'\n"; $ret .= $indent."\t\t\t".''.$alt.'\n"; $ret .= $indent."\t\t\t".$shown_title."\n"; $ret .= $indent."\t\t"."\n"; $ret .= $indent."\t"."\n"; } $ret = trim($ret); if ($ret != $start_with) { $trailing = strlen($element_tag) + 3; if (substr($ret, -$trailing) != "" && $short_code['popup'] == 'show' && !$non_standard) { $ret .= "\n$indent"; } $ret .= "\n$indent \n"; $ret .= ""; if (!empty($pagination) && isset($pagination['end']) && isset($pagination['total']) && $pagination['total'] > $pagination['end']) { $ret .= !empty($more) ? "$more\n" : ''; } } else { $ret = ''; } if (is_archive() || is_home()) { global $photonic_archive_thumbs; if (!empty($photonic_archive_thumbs) && $counter < $photonic_archive_thumbs) { $module->is_more_required = false; } } $module->pop_from_stack(); return $ret; } /** * Generates the HTML for a group of level-2 items, i.e. Photosets (Albums) and Galleries for Flickr, Albums for Google Photos, * Albums for SmugMug, and Photosets (Galleries and Collections) for Zenfolio. No concept of albums * exists in native WP and Instagram. * * @param $objects * @param $options * @param $short_code * @param $module Core * @return string */ function generate_level_2_gallery($objects, $options, $short_code, $module) { $module->push_to_stack('Generate Level 2 Gallery'); $row_constraints = isset($options['row_constraints']) && is_array($options['row_constraints']) ? $options['row_constraints'] : []; $type = $options['type']; $singular_type = $options['singular_type']; $title_position = empty($short_code['title_position']) ? $options['title_position'] : $short_code['title_position']; $level_1_count_display = $options['level_1_count_display']; $indent = !isset($options['indent']) ? '' : $options['indent']; $provider = $module->provider; $columns = $short_code['columns']; $layout = !isset($short_code['layout']) ? 'square' : $short_code['layout']; $popup = ' data-photonic-popup="'.$short_code['popup'].'"'; $non_standard = $layout == 'random' || $layout == 'masonry' || $layout == 'mosaic'; $effect = $this->get_thumbnail_effect($short_code, $layout, $title_position); $ul_class = "class='title-display-$title_position photonic-level-2-container ".($non_standard ? 'photonic-'.$layout.'-layout' : 'photonic-standard-layout')." photonic-thumbnail-effect-$effect'"; list($container_id, $container_end) = $this->get_container_details($short_code, $module); $pagination = isset($options['pagination']) && is_array($options['pagination']) ? $options['pagination'] : []; $more = !empty($short_code['more']) ? esc_attr($short_code['more']) : ''; list($pagination_data, $pagination, $columns_data) = $this->get_gallery_data_attributes($short_code, $module, $pagination, $columns); $ret = "\n$indent