Changeset 3457266
- Timestamp:
- 02/09/2026 04:29:14 PM (8 weeks ago)
- Location:
- luxe-gallery
- Files:
-
- 8 edited
- 33 copied
-
tags/2.0.2 (copied) (copied from luxe-gallery/trunk)
-
tags/2.0.2/CREDITS.md (copied) (copied from luxe-gallery/trunk/CREDITS.md)
-
tags/2.0.2/Icon.png (copied) (copied from luxe-gallery/trunk/Icon.png)
-
tags/2.0.2/LICENSE (copied) (copied from luxe-gallery/trunk/LICENSE)
-
tags/2.0.2/admin/class-luxe-gallery-admin.php (copied) (copied from luxe-gallery/trunk/admin/class-luxe-gallery-admin.php)
-
tags/2.0.2/admin/class-luxe-gallery-settings.php (copied) (copied from luxe-gallery/trunk/admin/class-luxe-gallery-settings.php) (4 diffs)
-
tags/2.0.2/admin/css/luxe-gallery-admin.css (copied) (copied from luxe-gallery/trunk/admin/css/luxe-gallery-admin.css)
-
tags/2.0.2/admin/js/luxe-gallery-admin.js (copied) (copied from luxe-gallery/trunk/admin/js/luxe-gallery-admin.js)
-
tags/2.0.2/blocks/block.json (copied) (copied from luxe-gallery/trunk/blocks/block.json)
-
tags/2.0.2/blocks/class-luxe-gallery-gutenberg.php (copied) (copied from luxe-gallery/trunk/blocks/class-luxe-gallery-gutenberg.php)
-
tags/2.0.2/blocks/js/luxe-gallery-block.js (copied) (copied from luxe-gallery/trunk/blocks/js/luxe-gallery-block.js)
-
tags/2.0.2/blocks/render.php (copied) (copied from luxe-gallery/trunk/blocks/render.php)
-
tags/2.0.2/builders/beaver/module-luxe-gallery/includes/frontend.php (copied) (copied from luxe-gallery/trunk/builders/beaver/module-luxe-gallery/includes/frontend.php)
-
tags/2.0.2/builders/beaver/module-luxe-gallery/module-luxe-gallery.php (copied) (copied from luxe-gallery/trunk/builders/beaver/module-luxe-gallery/module-luxe-gallery.php)
-
tags/2.0.2/builders/bricks/class-luxe-gallery-bricks.php (copied) (copied from luxe-gallery/trunk/builders/bricks/class-luxe-gallery-bricks.php)
-
tags/2.0.2/builders/bricks/element-luxegallery.php (copied) (copied from luxe-gallery/trunk/builders/bricks/element-luxegallery.php)
-
tags/2.0.2/builders/divi/class-luxe-gallery-divi.php (copied) (copied from luxe-gallery/trunk/builders/divi/class-luxe-gallery-divi.php)
-
tags/2.0.2/builders/divi/module-luxe-gallery.php (copied) (copied from luxe-gallery/trunk/builders/divi/module-luxe-gallery.php)
-
tags/2.0.2/builders/elementor/class-luxe-gallery-elementor.php (copied) (copied from luxe-gallery/trunk/builders/elementor/class-luxe-gallery-elementor.php)
-
tags/2.0.2/builders/elementor/widget-luxe-gallery.php (copied) (copied from luxe-gallery/trunk/builders/elementor/widget-luxe-gallery.php)
-
tags/2.0.2/includes/class-luxe-gallery-cpt.php (copied) (copied from luxe-gallery/trunk/includes/class-luxe-gallery-cpt.php)
-
tags/2.0.2/includes/class-luxe-gallery-optimizer.php (copied) (copied from luxe-gallery/trunk/includes/class-luxe-gallery-optimizer.php)
-
tags/2.0.2/includes/class-luxe-gallery-shortcode.php (copied) (copied from luxe-gallery/trunk/includes/class-luxe-gallery-shortcode.php) (2 diffs)
-
tags/2.0.2/includes/class-luxe-gallery-wpml.php (copied) (copied from luxe-gallery/trunk/includes/class-luxe-gallery-wpml.php)
-
tags/2.0.2/languages/luxe-gallery-de_DE.mo (copied) (copied from luxe-gallery/trunk/languages/luxe-gallery-de_DE.mo)
-
tags/2.0.2/languages/luxe-gallery-de_DE.po (copied) (copied from luxe-gallery/trunk/languages/luxe-gallery-de_DE.po) (4 diffs)
-
tags/2.0.2/languages/luxe-gallery.pot (copied) (copied from luxe-gallery/trunk/languages/luxe-gallery.pot)
-
tags/2.0.2/luxe-gallery.php (copied) (copied from luxe-gallery/trunk/luxe-gallery.php) (2 diffs)
-
tags/2.0.2/public/css/luxe-gallery-public.css (copied) (copied from luxe-gallery/trunk/public/css/luxe-gallery-public.css) (6 diffs)
-
tags/2.0.2/public/js/luxe-gallery-public.js (copied) (copied from luxe-gallery/trunk/public/js/luxe-gallery-public.js) (2 diffs)
-
tags/2.0.2/public/partials/gallery-display.php (copied) (copied from luxe-gallery/trunk/public/partials/gallery-display.php)
-
tags/2.0.2/readme.txt (copied) (copied from luxe-gallery/trunk/readme.txt) (4 diffs)
-
tags/2.0.2/uninstall.php (copied) (copied from luxe-gallery/trunk/uninstall.php)
-
trunk/admin/class-luxe-gallery-settings.php (modified) (4 diffs)
-
trunk/includes/class-luxe-gallery-shortcode.php (modified) (2 diffs)
-
trunk/languages/luxe-gallery-de_DE.mo (modified) (previous)
-
trunk/languages/luxe-gallery-de_DE.po (modified) (4 diffs)
-
trunk/luxe-gallery.php (modified) (2 diffs)
-
trunk/public/css/luxe-gallery-public.css (modified) (6 diffs)
-
trunk/public/js/luxe-gallery-public.js (modified) (2 diffs)
-
trunk/readme.txt (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
luxe-gallery/tags/2.0.2/admin/class-luxe-gallery-settings.php
r3456001 r3457266 349 349 array( 350 350 'field' => 'enable_lightbox', 351 'description' => __( 'Enable the PhotoSwipelightbox for galleries by default.', 'luxe-gallery' )351 'description' => __( 'Enable the lightbox for galleries by default.', 'luxe-gallery' ) 352 352 ) 353 353 ); … … 433 433 $output = array(); 434 434 435 if ( isset( $input['enable_webp'] ) ) { 436 $output['enable_webp'] = (bool) $input['enable_webp']; 437 } 435 $output['enable_webp'] = ! empty( $input['enable_webp'] ); 438 436 439 437 if ( isset( $input['webp_quality'] ) ) { … … 458 456 } 459 457 460 if ( isset( $input['lazy_loading'] ) ) { 461 $output['lazy_loading'] = (bool) $input['lazy_loading']; 462 } 463 464 if ( isset( $input['preload_hero_images'] ) ) { 465 $output['preload_hero_images'] = (bool) $input['preload_hero_images']; 466 } 467 468 if ( isset( $input['show_image_count'] ) ) { 469 $output['show_image_count'] = (bool) $input['show_image_count']; 470 } 471 472 if ( isset( $input['enable_image_titles'] ) ) { 473 $output['enable_image_titles'] = (bool) $input['enable_image_titles']; 474 } 458 $output['lazy_loading'] = ! empty( $input['lazy_loading'] ); 459 460 $output['preload_hero_images'] = ! empty( $input['preload_hero_images'] ); 461 462 $output['show_image_count'] = ! empty( $input['show_image_count'] ); 463 464 $output['enable_image_titles'] = ! empty( $input['enable_image_titles'] ); 475 465 476 466 if ( isset( $input['nav_height'] ) ) { … … 502 492 } 503 493 504 if ( isset( $input['enable_lightbox'] ) ) { 505 $output['enable_lightbox'] = (bool) $input['enable_lightbox']; 506 } 507 508 if ( isset( $input['enable_sharing'] ) ) { 509 $output['enable_sharing'] = (bool) $input['enable_sharing']; 510 } 494 $output['enable_lightbox'] = ! empty( $input['enable_lightbox'] ); 495 496 $output['enable_sharing'] = ! empty( $input['enable_sharing'] ); 511 497 512 498 // Branding options. -
luxe-gallery/tags/2.0.2/includes/class-luxe-gallery-shortcode.php
r3457250 r3457266 267 267 268 268 // Single CSS file (includes slider + lightbox styles — no external libraries). 269 wp_enqueue_style( 'luxe-gallery-public', plugin_dir_url( __FILE__ ) . '../public/css/luxe-gallery-public.css', array(), '2.0. 1', 'all' );269 wp_enqueue_style( 'luxe-gallery-public', plugin_dir_url( __FILE__ ) . '../public/css/luxe-gallery-public.css', array(), '2.0.2', 'all' ); 270 270 271 271 // Single JS file (includes custom slider + lightbox — no jQuery, Swiper, or PhotoSwipe). 272 wp_enqueue_script( 'luxe-gallery-public-js', plugin_dir_url( __FILE__ ) . '../public/js/luxe-gallery-public.js', array(), '2.0. 1', true );272 wp_enqueue_script( 'luxe-gallery-public-js', plugin_dir_url( __FILE__ ) . '../public/js/luxe-gallery-public.js', array(), '2.0.2', true ); 273 273 274 274 // Pass translatable strings to JavaScript. … … 332 332 if ( ! empty( $settings['border_radius'] ) ) { 333 333 $inline_css .= sprintf( 334 ' #luxe-gallery-%s .hero-image-item img, #luxe-gallery-%s .grid-image-item img { border-radius: %dpx; }',334 ' #luxe-gallery-%s .hero-image-item, #luxe-gallery-%s .grid-image-item { border-radius: %dpx; overflow: hidden; }', 335 335 esc_attr( $gallery_id ), 336 336 esc_attr( $gallery_id ), -
luxe-gallery/tags/2.0.2/languages/luxe-gallery-de_DE.po
r3434264 r3457266 4 4 msgid "" 5 5 msgstr "" 6 "Project-Id-Version: Luxe Gallery 1.1.0\n"6 "Project-Id-Version: Luxe Gallery 2.0.2\n" 7 7 "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/luxe-gallery\n" 8 8 "POT-Creation-Date: 2025-01-07 10:00+0000\n" … … 297 297 #: admin/class-luxe-gallery-settings.php:343 298 298 msgid "Enable the PhotoSwipe lightbox for galleries by default." 299 msgstr "PhotoSwipe-Lightbox für Galerien standardmäßig aktivieren." 299 msgstr "Lightbox für Galerien standardmäßig aktivieren." 300 301 #: admin/class-luxe-gallery-settings.php 302 msgid "Enable the lightbox for galleries by default." 303 msgstr "Lightbox für Galerien standardmäßig aktivieren." 300 304 301 305 #: admin/class-luxe-gallery-settings.php:350 … … 305 309 #: admin/class-luxe-gallery-settings.php:355 306 310 msgid "Enable social sharing buttons in the lightbox by default." 307 msgstr " SozialeTeilen-Buttons in der Lightbox standardmäßig aktivieren."311 msgstr "Teilen-Buttons in der Lightbox standardmäßig aktivieren." 308 312 309 313 #: admin/class-luxe-gallery-settings.php:362 … … 410 414 msgid "Gallery Settings" 411 415 msgstr "Galerie-Einstellungen" 416 417 #: public/partials/gallery-display.php 418 msgid "photo" 419 msgid_plural "photos" 420 msgstr[0] "Foto" 421 msgstr[1] "Fotos" 422 423 #: admin/class-luxe-gallery-settings.php:216 424 msgid "Show Image Count" 425 msgstr "Anzahl der Bilder anzeigen" 426 427 #: admin/class-luxe-gallery-settings.php:222 428 msgid "Displays the number of images in each category." 429 msgstr "Zeigt die Anzahl der Bilder in jeder Kategorie an." 430 431 #: includes/class-luxe-gallery-shortcode.php 432 msgid "Link copied to clipboard!" 433 msgstr "Link in die Zwischenablage kopiert!" 434 435 #: includes/class-luxe-gallery-shortcode.php 436 msgid "Image lightbox" 437 msgstr "Bild-Lightbox" 438 439 #: includes/class-luxe-gallery-shortcode.php 440 msgid "Close" 441 msgstr "Schließen" 442 443 #: includes/class-luxe-gallery-shortcode.php 444 msgid "Previous image" 445 msgstr "Vorheriges Bild" 446 447 #: includes/class-luxe-gallery-shortcode.php 448 msgid "Next image" 449 msgstr "Nächstes Bild" 450 451 #: includes/class-luxe-gallery-shortcode.php 452 msgid "Share" 453 msgstr "Teilen" 454 455 #: includes/class-luxe-gallery-shortcode.php 456 msgid "Go to slide" 457 msgstr "Gehe zu Folie" 458 459 #: includes/class-luxe-gallery-shortcode.php 460 msgid "Image could not be loaded" 461 msgstr "Bild konnte nicht geladen werden" -
luxe-gallery/tags/2.0.2/luxe-gallery.php
r3457250 r3457266 4 4 * Plugin URI: https://jajasolutions.de/luxe-gallery 5 5 * Description: Premium gallery with category management - Ideal for real estate, vacation rentals and portfolios. Features customizable hero grid, automatic categorization, WebP optimization and immersive fullscreen view for professional presentations. 6 * Version: 2.0. 16 * Version: 2.0.2 7 7 * Author: Janni Hares 8 8 * Author URI: https://jajasolutions.de … … 29 29 * Load plugin textdomain for internationalization 30 30 * 31 * Note: Commented out as WordPress.org handles this automatically since WP 4.632 * Uncomment if distributing outside of WordPress.org33 *34 31 * @since 1.0.0 35 32 * @return void 36 33 */ 37 //function luxe_gallery_load_textdomain() {38 //load_plugin_textdomain( 'luxe-gallery', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );39 //}40 // add_action( 'plugins_loaded', 'luxe_gallery_load_textdomain' );34 function luxe_gallery_load_textdomain() { 35 load_plugin_textdomain( 'luxe-gallery', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' ); 36 } 37 add_action( 'init', 'luxe_gallery_load_textdomain' ); 41 38 42 39 // Include all plugin classes -
luxe-gallery/tags/2.0.2/public/css/luxe-gallery-public.css
r3457250 r3457266 2 2 * Luxe Gallery Frontend Styles - Optimized Build 3 3 * Includes custom slider + lightbox styles (replaces Swiper CSS + PhotoSwipe CSS) 4 * @version 2.0. 14 * @version 2.0.2 5 5 */ 6 6 … … 59 59 .luxe-gallery-hero-grid .hero-image-item { overflow: hidden; } 60 60 .luxe-gallery-hero-grid .hero-image-item a { display: block; width: 100%; height: 100%; } 61 .luxe-gallery-hero-grid .hero-image-item img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.3s ease; } 61 .luxe-gallery-hero-grid .hero-image-item .luxe-gallery-image-wrapper { width: 100%; height: 100%; } 62 .luxe-gallery-hero-grid .hero-image-item picture { display: block; width: 100%; height: 100%; } 63 .luxe-gallery-hero-grid .hero-image-item img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform 0.3s ease; } 62 64 .luxe-gallery-hero-grid .hero-image-item a:hover img { transform: scale(1.05); } 63 65 … … 116 118 117 119 .luxe-slider-dot { 118 width: 8px; height: 8px; border-radius: 50%; border: none; 120 width: 8px; height: 8px; border-radius: 50%; 121 border: 1px solid rgba(0, 0, 0, 0.4); 119 122 background: rgba(255, 255, 255, 0.5); cursor: pointer; padding: 0; 120 transition: background 0.2s, transform 0.2s; 121 } 122 .luxe-slider-dot.active { background: #fff; transform: scale(1.25); } 123 transition: background 0.2s, transform 0.2s, opacity 0.2s; 124 } 125 .luxe-slider-dot.active { background: #fff; transform: scale(1.25); border-color: rgba(0, 0, 0, 0.6); } 126 .luxe-slider-dot.luxe-dot-hidden { display: none; } 123 127 124 128 .luxe-gallery-mobile-slider .show-all-photos-mobile { … … 153 157 /* Category Navigation */ 154 158 .luxe-gallery-category-nav { 155 position: sticky; top: 0; background: #fff; border-bottom: 1px solid #ddd; 156 margin-bottom: 32px; z-index: 100; padding-top: 16px; margin-top: -16px; 157 } 158 .luxe-gallery-category-nav.is-sticky { box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); } 159 background: #fff; border-bottom: 1px solid #ddd; 160 margin-bottom: 32px; z-index: 100; padding-top: 16px; 161 } 159 162 160 163 .luxe-gallery-category-nav ul { … … 184 187 .luxe-gallery-category-section h6 { font-size: 24px; margin-bottom: 24px; } 185 188 .luxe-gallery-category-section .image-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 16px; } 186 .luxe-gallery-category-section .grid-image-item { display: block; width: 100%; aspect-ratio: 4 / 3; overflow: hidden; border-radius: 8px; text-decoration: none; } 189 .luxe-gallery-category-section .grid-image-item { display: block; width: 100%; aspect-ratio: 4 / 3; overflow: hidden; border-radius: 8px; text-decoration: none; cursor: pointer; } 190 .luxe-gallery-category-section .grid-image-item:hover img { transform: scale(1.05); } 191 .luxe-gallery-category-section .grid-image-item img { transition: transform 0.3s ease; } 187 192 .luxe-gallery-category-section .grid-image-item .luxe-gallery-image-wrapper { width: 100%; height: 100%; } 193 .luxe-gallery-category-section .grid-image-item picture { display: block; width: 100%; height: 100%; } 188 194 .luxe-gallery-category-section .grid-image-item img { width: 100%; height: 100%; object-fit: cover; display: block; } 189 195 … … 401 407 .luxe-gallery-full-view { background: #1a1a1a; color: #f0f0f0; } 402 408 .luxe-gallery-category-nav { background: #1a1a1a; border-bottom-color: #333; } 403 .luxe-gallery-category-nav.is-sticky { box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3); }404 409 .luxe-gallery-category-nav a { color: #999; } 405 410 .luxe-gallery-category-nav a:hover, .luxe-gallery-category-nav a.active { color: #fff; border-bottom-color: #fff; } -
luxe-gallery/tags/2.0.2/public/js/luxe-gallery-public.js
r3457250 r3457266 2 2 * Luxe Gallery Public JavaScript - Zero-Dependency Optimized Build 3 3 * Custom slider (replaces Swiper 151KB) + Custom lightbox (replaces PhotoSwipe 68KB) 4 * @version 2.0. 14 * @version 2.0.2 5 5 */ 6 6 … … 65 65 updatePagination() { 66 66 if (!this.dots) return; 67 this.dots.forEach((dot, i) => dot.classList.toggle('active', i === this.currentIndex)); 67 const total = this.dots.length; 68 const maxVisible = 5; 69 this.dots.forEach((dot, i) => { 70 dot.classList.toggle('active', i === this.currentIndex); 71 if (total > maxVisible) { 72 const half = Math.floor(maxVisible / 2); 73 let start = Math.max(0, this.currentIndex - half); 74 let end = start + maxVisible; 75 if (end > total) { end = total; start = Math.max(0, end - maxVisible); } 76 dot.classList.toggle('luxe-dot-hidden', i < start || i >= end); 77 } 78 }); 68 79 } 69 80 -
luxe-gallery/tags/2.0.2/readme.txt
r3457250 r3457266 6 6 Tested up to: 6.9 7 7 Requires PHP: 7.4 8 Stable tag: 2.0. 18 Stable tag: 2.0.2 9 9 License: GPLv2 or later 10 10 License URI: https://www.gnu.org/licenses/gpl-2.0.html … … 19 19 20 20 * **🎨 Visual Grid Editor**: Create custom hero layouts with drag & drop - uniquely customizable for each gallery 21 * **📱 Mobile-First Design**: Responsive design with Swiperslider for mobile devices21 * **📱 Mobile-First Design**: Responsive design with custom slider for mobile devices 22 22 * **🗂️ Category-Based Organization**: Organize images in custom categories 23 * **💡 PhotoSwipeLightbox**: Modern, touch-friendly lightbox experience23 * **💡 Lightbox**: Modern, touch-friendly lightbox experience 24 24 * **⚡ WebP Optimization**: Automatic WebP conversion for better performance 25 25 * **🎨 Drag & Drop Interface**: Intuitive admin interface for managing images … … 151 151 2. Mobile Slider - Optimized display for mobile devices 152 152 3. Category-Based Gallery - Organized image display with navigation 153 4. PhotoSwipeLightbox - Modern lightbox experience153 4. Lightbox - Modern lightbox experience 154 154 5. Admin Interface - Intuitive drag & drop management 155 155 6. Plugin Settings - Comprehensive configuration options 156 156 157 157 == Changelog == 158 159 = 2.0.2 = 160 * Fixed category navigation no longer scrolls sticky with page 161 * Fixed show_image_count setting being ignored when unchecked 162 * Fixed all checkbox settings not saving correctly when unchecked 163 * Fixed German translations not loading (enabled load_plugin_textdomain) 164 * Added German translations for plural photo/photos, settings descriptions, and lightbox strings 165 * Fixed grid images not filling full height (picture element + wrapper height) 166 * Fixed hover removing rounded borders on grid images 167 * Added black border to slider pagination dots for better visibility 168 * Slider pagination now shows max 5 dots with sliding window navigation 169 * Updated settings description to remove outdated PhotoSwipe reference 170 * Regenerated .mo translation file 171 172 = 2.0.1 = 173 * Fixed critical SyntaxError caused by ES module export statement 174 * Fixed grid image display issues 175 * Fixed button icon alignment 176 * Added proper version bumping for WordPress update detection 158 177 159 178 = 2.0.0 = … … 240 259 = Used Libraries = 241 260 242 * PhotoSwipe 5.4.4 (MIT License) 243 * Swiper.js 12.0.2 (MIT License) 244 * All licenses are GPL-compatible 261 * No external JavaScript libraries — all components are custom-built 262 * Zero dependencies for optimal performance 245 263 246 264 = Support = -
luxe-gallery/trunk/admin/class-luxe-gallery-settings.php
r3456001 r3457266 349 349 array( 350 350 'field' => 'enable_lightbox', 351 'description' => __( 'Enable the PhotoSwipelightbox for galleries by default.', 'luxe-gallery' )351 'description' => __( 'Enable the lightbox for galleries by default.', 'luxe-gallery' ) 352 352 ) 353 353 ); … … 433 433 $output = array(); 434 434 435 if ( isset( $input['enable_webp'] ) ) { 436 $output['enable_webp'] = (bool) $input['enable_webp']; 437 } 435 $output['enable_webp'] = ! empty( $input['enable_webp'] ); 438 436 439 437 if ( isset( $input['webp_quality'] ) ) { … … 458 456 } 459 457 460 if ( isset( $input['lazy_loading'] ) ) { 461 $output['lazy_loading'] = (bool) $input['lazy_loading']; 462 } 463 464 if ( isset( $input['preload_hero_images'] ) ) { 465 $output['preload_hero_images'] = (bool) $input['preload_hero_images']; 466 } 467 468 if ( isset( $input['show_image_count'] ) ) { 469 $output['show_image_count'] = (bool) $input['show_image_count']; 470 } 471 472 if ( isset( $input['enable_image_titles'] ) ) { 473 $output['enable_image_titles'] = (bool) $input['enable_image_titles']; 474 } 458 $output['lazy_loading'] = ! empty( $input['lazy_loading'] ); 459 460 $output['preload_hero_images'] = ! empty( $input['preload_hero_images'] ); 461 462 $output['show_image_count'] = ! empty( $input['show_image_count'] ); 463 464 $output['enable_image_titles'] = ! empty( $input['enable_image_titles'] ); 475 465 476 466 if ( isset( $input['nav_height'] ) ) { … … 502 492 } 503 493 504 if ( isset( $input['enable_lightbox'] ) ) { 505 $output['enable_lightbox'] = (bool) $input['enable_lightbox']; 506 } 507 508 if ( isset( $input['enable_sharing'] ) ) { 509 $output['enable_sharing'] = (bool) $input['enable_sharing']; 510 } 494 $output['enable_lightbox'] = ! empty( $input['enable_lightbox'] ); 495 496 $output['enable_sharing'] = ! empty( $input['enable_sharing'] ); 511 497 512 498 // Branding options. -
luxe-gallery/trunk/includes/class-luxe-gallery-shortcode.php
r3457250 r3457266 267 267 268 268 // Single CSS file (includes slider + lightbox styles — no external libraries). 269 wp_enqueue_style( 'luxe-gallery-public', plugin_dir_url( __FILE__ ) . '../public/css/luxe-gallery-public.css', array(), '2.0. 1', 'all' );269 wp_enqueue_style( 'luxe-gallery-public', plugin_dir_url( __FILE__ ) . '../public/css/luxe-gallery-public.css', array(), '2.0.2', 'all' ); 270 270 271 271 // Single JS file (includes custom slider + lightbox — no jQuery, Swiper, or PhotoSwipe). 272 wp_enqueue_script( 'luxe-gallery-public-js', plugin_dir_url( __FILE__ ) . '../public/js/luxe-gallery-public.js', array(), '2.0. 1', true );272 wp_enqueue_script( 'luxe-gallery-public-js', plugin_dir_url( __FILE__ ) . '../public/js/luxe-gallery-public.js', array(), '2.0.2', true ); 273 273 274 274 // Pass translatable strings to JavaScript. … … 332 332 if ( ! empty( $settings['border_radius'] ) ) { 333 333 $inline_css .= sprintf( 334 ' #luxe-gallery-%s .hero-image-item img, #luxe-gallery-%s .grid-image-item img { border-radius: %dpx; }',334 ' #luxe-gallery-%s .hero-image-item, #luxe-gallery-%s .grid-image-item { border-radius: %dpx; overflow: hidden; }', 335 335 esc_attr( $gallery_id ), 336 336 esc_attr( $gallery_id ), -
luxe-gallery/trunk/languages/luxe-gallery-de_DE.po
r3434264 r3457266 4 4 msgid "" 5 5 msgstr "" 6 "Project-Id-Version: Luxe Gallery 1.1.0\n"6 "Project-Id-Version: Luxe Gallery 2.0.2\n" 7 7 "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/luxe-gallery\n" 8 8 "POT-Creation-Date: 2025-01-07 10:00+0000\n" … … 297 297 #: admin/class-luxe-gallery-settings.php:343 298 298 msgid "Enable the PhotoSwipe lightbox for galleries by default." 299 msgstr "PhotoSwipe-Lightbox für Galerien standardmäßig aktivieren." 299 msgstr "Lightbox für Galerien standardmäßig aktivieren." 300 301 #: admin/class-luxe-gallery-settings.php 302 msgid "Enable the lightbox for galleries by default." 303 msgstr "Lightbox für Galerien standardmäßig aktivieren." 300 304 301 305 #: admin/class-luxe-gallery-settings.php:350 … … 305 309 #: admin/class-luxe-gallery-settings.php:355 306 310 msgid "Enable social sharing buttons in the lightbox by default." 307 msgstr " SozialeTeilen-Buttons in der Lightbox standardmäßig aktivieren."311 msgstr "Teilen-Buttons in der Lightbox standardmäßig aktivieren." 308 312 309 313 #: admin/class-luxe-gallery-settings.php:362 … … 410 414 msgid "Gallery Settings" 411 415 msgstr "Galerie-Einstellungen" 416 417 #: public/partials/gallery-display.php 418 msgid "photo" 419 msgid_plural "photos" 420 msgstr[0] "Foto" 421 msgstr[1] "Fotos" 422 423 #: admin/class-luxe-gallery-settings.php:216 424 msgid "Show Image Count" 425 msgstr "Anzahl der Bilder anzeigen" 426 427 #: admin/class-luxe-gallery-settings.php:222 428 msgid "Displays the number of images in each category." 429 msgstr "Zeigt die Anzahl der Bilder in jeder Kategorie an." 430 431 #: includes/class-luxe-gallery-shortcode.php 432 msgid "Link copied to clipboard!" 433 msgstr "Link in die Zwischenablage kopiert!" 434 435 #: includes/class-luxe-gallery-shortcode.php 436 msgid "Image lightbox" 437 msgstr "Bild-Lightbox" 438 439 #: includes/class-luxe-gallery-shortcode.php 440 msgid "Close" 441 msgstr "Schließen" 442 443 #: includes/class-luxe-gallery-shortcode.php 444 msgid "Previous image" 445 msgstr "Vorheriges Bild" 446 447 #: includes/class-luxe-gallery-shortcode.php 448 msgid "Next image" 449 msgstr "Nächstes Bild" 450 451 #: includes/class-luxe-gallery-shortcode.php 452 msgid "Share" 453 msgstr "Teilen" 454 455 #: includes/class-luxe-gallery-shortcode.php 456 msgid "Go to slide" 457 msgstr "Gehe zu Folie" 458 459 #: includes/class-luxe-gallery-shortcode.php 460 msgid "Image could not be loaded" 461 msgstr "Bild konnte nicht geladen werden" -
luxe-gallery/trunk/luxe-gallery.php
r3457250 r3457266 4 4 * Plugin URI: https://jajasolutions.de/luxe-gallery 5 5 * Description: Premium gallery with category management - Ideal for real estate, vacation rentals and portfolios. Features customizable hero grid, automatic categorization, WebP optimization and immersive fullscreen view for professional presentations. 6 * Version: 2.0. 16 * Version: 2.0.2 7 7 * Author: Janni Hares 8 8 * Author URI: https://jajasolutions.de … … 29 29 * Load plugin textdomain for internationalization 30 30 * 31 * Note: Commented out as WordPress.org handles this automatically since WP 4.632 * Uncomment if distributing outside of WordPress.org33 *34 31 * @since 1.0.0 35 32 * @return void 36 33 */ 37 //function luxe_gallery_load_textdomain() {38 //load_plugin_textdomain( 'luxe-gallery', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );39 //}40 // add_action( 'plugins_loaded', 'luxe_gallery_load_textdomain' );34 function luxe_gallery_load_textdomain() { 35 load_plugin_textdomain( 'luxe-gallery', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' ); 36 } 37 add_action( 'init', 'luxe_gallery_load_textdomain' ); 41 38 42 39 // Include all plugin classes -
luxe-gallery/trunk/public/css/luxe-gallery-public.css
r3457250 r3457266 2 2 * Luxe Gallery Frontend Styles - Optimized Build 3 3 * Includes custom slider + lightbox styles (replaces Swiper CSS + PhotoSwipe CSS) 4 * @version 2.0. 14 * @version 2.0.2 5 5 */ 6 6 … … 59 59 .luxe-gallery-hero-grid .hero-image-item { overflow: hidden; } 60 60 .luxe-gallery-hero-grid .hero-image-item a { display: block; width: 100%; height: 100%; } 61 .luxe-gallery-hero-grid .hero-image-item img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.3s ease; } 61 .luxe-gallery-hero-grid .hero-image-item .luxe-gallery-image-wrapper { width: 100%; height: 100%; } 62 .luxe-gallery-hero-grid .hero-image-item picture { display: block; width: 100%; height: 100%; } 63 .luxe-gallery-hero-grid .hero-image-item img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform 0.3s ease; } 62 64 .luxe-gallery-hero-grid .hero-image-item a:hover img { transform: scale(1.05); } 63 65 … … 116 118 117 119 .luxe-slider-dot { 118 width: 8px; height: 8px; border-radius: 50%; border: none; 120 width: 8px; height: 8px; border-radius: 50%; 121 border: 1px solid rgba(0, 0, 0, 0.4); 119 122 background: rgba(255, 255, 255, 0.5); cursor: pointer; padding: 0; 120 transition: background 0.2s, transform 0.2s; 121 } 122 .luxe-slider-dot.active { background: #fff; transform: scale(1.25); } 123 transition: background 0.2s, transform 0.2s, opacity 0.2s; 124 } 125 .luxe-slider-dot.active { background: #fff; transform: scale(1.25); border-color: rgba(0, 0, 0, 0.6); } 126 .luxe-slider-dot.luxe-dot-hidden { display: none; } 123 127 124 128 .luxe-gallery-mobile-slider .show-all-photos-mobile { … … 153 157 /* Category Navigation */ 154 158 .luxe-gallery-category-nav { 155 position: sticky; top: 0; background: #fff; border-bottom: 1px solid #ddd; 156 margin-bottom: 32px; z-index: 100; padding-top: 16px; margin-top: -16px; 157 } 158 .luxe-gallery-category-nav.is-sticky { box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); } 159 background: #fff; border-bottom: 1px solid #ddd; 160 margin-bottom: 32px; z-index: 100; padding-top: 16px; 161 } 159 162 160 163 .luxe-gallery-category-nav ul { … … 184 187 .luxe-gallery-category-section h6 { font-size: 24px; margin-bottom: 24px; } 185 188 .luxe-gallery-category-section .image-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 16px; } 186 .luxe-gallery-category-section .grid-image-item { display: block; width: 100%; aspect-ratio: 4 / 3; overflow: hidden; border-radius: 8px; text-decoration: none; } 189 .luxe-gallery-category-section .grid-image-item { display: block; width: 100%; aspect-ratio: 4 / 3; overflow: hidden; border-radius: 8px; text-decoration: none; cursor: pointer; } 190 .luxe-gallery-category-section .grid-image-item:hover img { transform: scale(1.05); } 191 .luxe-gallery-category-section .grid-image-item img { transition: transform 0.3s ease; } 187 192 .luxe-gallery-category-section .grid-image-item .luxe-gallery-image-wrapper { width: 100%; height: 100%; } 193 .luxe-gallery-category-section .grid-image-item picture { display: block; width: 100%; height: 100%; } 188 194 .luxe-gallery-category-section .grid-image-item img { width: 100%; height: 100%; object-fit: cover; display: block; } 189 195 … … 401 407 .luxe-gallery-full-view { background: #1a1a1a; color: #f0f0f0; } 402 408 .luxe-gallery-category-nav { background: #1a1a1a; border-bottom-color: #333; } 403 .luxe-gallery-category-nav.is-sticky { box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3); }404 409 .luxe-gallery-category-nav a { color: #999; } 405 410 .luxe-gallery-category-nav a:hover, .luxe-gallery-category-nav a.active { color: #fff; border-bottom-color: #fff; } -
luxe-gallery/trunk/public/js/luxe-gallery-public.js
r3457250 r3457266 2 2 * Luxe Gallery Public JavaScript - Zero-Dependency Optimized Build 3 3 * Custom slider (replaces Swiper 151KB) + Custom lightbox (replaces PhotoSwipe 68KB) 4 * @version 2.0. 14 * @version 2.0.2 5 5 */ 6 6 … … 65 65 updatePagination() { 66 66 if (!this.dots) return; 67 this.dots.forEach((dot, i) => dot.classList.toggle('active', i === this.currentIndex)); 67 const total = this.dots.length; 68 const maxVisible = 5; 69 this.dots.forEach((dot, i) => { 70 dot.classList.toggle('active', i === this.currentIndex); 71 if (total > maxVisible) { 72 const half = Math.floor(maxVisible / 2); 73 let start = Math.max(0, this.currentIndex - half); 74 let end = start + maxVisible; 75 if (end > total) { end = total; start = Math.max(0, end - maxVisible); } 76 dot.classList.toggle('luxe-dot-hidden', i < start || i >= end); 77 } 78 }); 68 79 } 69 80 -
luxe-gallery/trunk/readme.txt
r3457250 r3457266 6 6 Tested up to: 6.9 7 7 Requires PHP: 7.4 8 Stable tag: 2.0. 18 Stable tag: 2.0.2 9 9 License: GPLv2 or later 10 10 License URI: https://www.gnu.org/licenses/gpl-2.0.html … … 19 19 20 20 * **🎨 Visual Grid Editor**: Create custom hero layouts with drag & drop - uniquely customizable for each gallery 21 * **📱 Mobile-First Design**: Responsive design with Swiperslider for mobile devices21 * **📱 Mobile-First Design**: Responsive design with custom slider for mobile devices 22 22 * **🗂️ Category-Based Organization**: Organize images in custom categories 23 * **💡 PhotoSwipeLightbox**: Modern, touch-friendly lightbox experience23 * **💡 Lightbox**: Modern, touch-friendly lightbox experience 24 24 * **⚡ WebP Optimization**: Automatic WebP conversion for better performance 25 25 * **🎨 Drag & Drop Interface**: Intuitive admin interface for managing images … … 151 151 2. Mobile Slider - Optimized display for mobile devices 152 152 3. Category-Based Gallery - Organized image display with navigation 153 4. PhotoSwipeLightbox - Modern lightbox experience153 4. Lightbox - Modern lightbox experience 154 154 5. Admin Interface - Intuitive drag & drop management 155 155 6. Plugin Settings - Comprehensive configuration options 156 156 157 157 == Changelog == 158 159 = 2.0.2 = 160 * Fixed category navigation no longer scrolls sticky with page 161 * Fixed show_image_count setting being ignored when unchecked 162 * Fixed all checkbox settings not saving correctly when unchecked 163 * Fixed German translations not loading (enabled load_plugin_textdomain) 164 * Added German translations for plural photo/photos, settings descriptions, and lightbox strings 165 * Fixed grid images not filling full height (picture element + wrapper height) 166 * Fixed hover removing rounded borders on grid images 167 * Added black border to slider pagination dots for better visibility 168 * Slider pagination now shows max 5 dots with sliding window navigation 169 * Updated settings description to remove outdated PhotoSwipe reference 170 * Regenerated .mo translation file 171 172 = 2.0.1 = 173 * Fixed critical SyntaxError caused by ES module export statement 174 * Fixed grid image display issues 175 * Fixed button icon alignment 176 * Added proper version bumping for WordPress update detection 158 177 159 178 = 2.0.0 = … … 240 259 = Used Libraries = 241 260 242 * PhotoSwipe 5.4.4 (MIT License) 243 * Swiper.js 12.0.2 (MIT License) 244 * All licenses are GPL-compatible 261 * No external JavaScript libraries — all components are custom-built 262 * Zero dependencies for optimal performance 245 263 246 264 = Support =
Note: See TracChangeset
for help on using the changeset viewer.