PluginProbe
Yatra – Travel Booking & Tour Operator Software / 3.0.17
Yatra – Travel Booking & Tour Operator Software v3.0.17
3.0.17 3.0.16 3.0.15 3.0.14 3.0.14.1 3.0.14.2 3.0.12 3.0.13 3.0.11 3.0.10 3.0.9 3.0.8 3.0.7 3.0.6 3.0.5 3.0.5.1 3.0.4 3.0.3 3.0.2.9 3.0.2.7 3.0.2.8 3.0.2.6 trunk 1.0.0 2.0.0 All 85 releases
← All changes | templates/partials/single-trip/content-itinerary.php +18 -2 3.0.4 → 3.0.17 View file →
@@ -129,8 +129,20 @@
129 129 </div>
130 130
131 131 <p class="yatra-entry-description"><?php echo esc_html($entry['description']); ?></p>
132 132
133 + <?php if (!empty($entry['notes'])): ?>
134 + <div class="yatra-entry-notes" role="note" aria-label="<?php esc_attr_e('Note', 'yatra'); ?>">
135 + <div class="yatra-entry-notes__head">
136 + <svg width="14" height="14" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true">
137 + <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"/>
138 + </svg>
139 + <span class="yatra-entry-notes__label"><?php esc_html_e('Note', 'yatra'); ?></span>
140 + </div>
141 + <div class="yatra-entry-notes__body"><?php echo wp_kses_post(wpautop($entry['notes'])); ?></div>
142 + </div>
143 + <?php endif; ?>
144 +
133 145 <?php if (!empty($entry['cost']) && $entry['cost'] > 0): ?>
134 146 <div class="yatra-entry-cost">
135 147 <span class="yatra-cost-amount">
136 148 <?php echo yatra_format_price($entry['cost']); ?>
@@ -239,9 +251,13 @@
239 251 data-image-index="<?php echo esc_attr($global_index + $index); ?>">
240 252 <div class="yatra-media-card">
241 253 <img src="<?php echo esc_url($media['thumbnail_url'] ?? $media['url'] ?? ''); ?>"
242 254 data-full-size="<?php echo esc_url($media['url'] ?? ''); ?>"
243 - alt="<?php echo esc_attr($media['alt_text'] ?? $media['caption'] ?? $media['title'] ?? sprintf(__('Itinerary Gallery Image %d', 'yatra'), $global_index + $index + 1)); ?>"
255 + alt="<?php echo esc_attr($media['alt_text'] ?? $media['caption'] ?? $media['title'] ?? sprintf(
256 + /* translators: %d: gallery image sequence number. */
257 + __('Itinerary Gallery Image %d', 'yatra'),
258 + $global_index + $index + 1
259 + )); ?>"
244 260 loading="lazy">
245 261 <?php if (isset($media['type']) && $media['type'] === 'video'): ?>
246 262 <div class="yatra-media-overlay">
247 263 <svg width="32" height="32" fill="white" viewBox="0 0 24 24">
@@ -266,9 +282,9 @@
266 282
267 283 // Extract video ID and thumbnail
268 284 if (strpos($video_url, 'youtube.com') !== false || strpos($video_url, 'youtu.be') !== false) {
269 285 // YouTube thumbnail extraction
270 - preg_match('/(?:youtube\.com\/watch\?v=|youtu\.be\/|youtube\.com\/embed\/)([^&\n?#]+)/', $video_url, $matches);
286 + preg_match('/(?:youtube\.com\/watch\?v=|youtu\.be\/|youtube\.com\/embed\/|youtube\.com\/shorts\/|youtube\.com\/live\/)([^&\n?#\/]+)/', $video_url, $matches);
271 287 $video_id = $matches[1] ?? '';
272 288 $thumbnail_url = "https://img.youtube.com/vi/{$video_id}/maxresdefault.jpg";
273 289 } elseif (strpos($video_url, 'vimeo.com') !== false) {
274 290 // Vimeo thumbnail extraction