Add optional auto-slide feature to SlideshowExt
							parent
							
								
									76abfa5c8d
								
							
						
					
					
						commit
						1d7feaf4a5
					
				|  | @ -27,4 +27,9 @@ | |||
| ## Entfernt | ||||
| * Abhängigkeiten, ungenutztes CSS und JavaScript der Original-Website | ||||
| * Nicht zum Theme gehörende Bilder | ||||
| * Twig-Funktion dirFiles | ||||
| * Twig-Funktion dirFiles | ||||
| 
 | ||||
| # v0.2.1 (16.09.2023) | ||||
| 
 | ||||
| ## Hinzugefügt | ||||
| * SlideshowExt kann die Slideshow zusätzlich zur Benutzerinteraktion auch über JavaScript automatisch abspielen | ||||
|  | @ -17,7 +17,7 @@ Die folgenden Module können einer modularen Website hinzugefügt werden: | |||
| | -------- | -------- | | ||||
| | Autoslideshow | Automatisch ablaufende, einfache Bilder-Slideshow | | ||||
| | Boxlist | Zeile aus Kästchen mit Bildern, Links, Titeln und kurzen Beschreibungstexten, für den Abschnitt "Unser Weltenverbund" der Startseite genutzt | | ||||
| | Slideshowext | Erweiterte Slideshow mit Bildern, Texten und Links, die manuell durchschritten werden kann | | ||||
| | Slideshowext | Erweiterte Slideshow mit Bildern, Texten und Links, die manuell durchschritten werden kann. Kann zusätzlich auch automatisch ablaufen (JavaScript benötigt). | | ||||
| | Textbg | Normaler Text (Markdown) mit Hintergrundbild und/oder -Farbe | | ||||
| 
 | ||||
| ### Optionale Komponenten | ||||
|  |  | |||
|  | @ -13,6 +13,14 @@ form: | |||
|       validate: | ||||
|         required: true | ||||
|         type: int | ||||
|     header.autoslideinterval: | ||||
|       type: text | ||||
|       label: Anzeigedauer (AutoSlide) | ||||
|       help: 'Zeit in Sekunden, bis automatisch zum nächsten Bild gewechselt wird. 0, um automatische Wechsel zu deaktivieren.' | ||||
|       default: 0 | ||||
|       validate: | ||||
|         required: true | ||||
|         type: int | ||||
|     header.slides: | ||||
|       type: list | ||||
|       style: vertical | ||||
|  |  | |||
|  | @ -0,0 +1,31 @@ | |||
| let intervs = {}; | ||||
| 
 | ||||
| function autoslide(el) { | ||||
|     let children = el.children('input:checked'); | ||||
|     let next = children.next('input'); | ||||
|     if(next.length == 0) { | ||||
|         next = el.children('input').first(); | ||||
|     } | ||||
|     next.prop('checked', true); | ||||
| } | ||||
| 
 | ||||
| $(function() { | ||||
|     $('.slideshow-ext').each((index, vel) => { | ||||
|         let el = $(vel); | ||||
|         let interval = Number(el.data('autoslide-interval')); | ||||
|         if (interval <= 0) { | ||||
|             return; | ||||
|         } | ||||
| 
 | ||||
|         intervs[el] = setInterval(autoslide, interval * 1000, el); | ||||
|     }); | ||||
| 
 | ||||
|     $('.slideshow-ext label').on('click', function(event) { | ||||
|         let el = event.currentTarget(); | ||||
|         let interval = Number(el.data('autoslide-interval')); | ||||
|         if(interval > 0) { | ||||
|             clearInterval(intervs[el]); | ||||
|             intervs[el] = setInterval(autoslide, interval * 1000, el); | ||||
|         }  | ||||
|     }); | ||||
| }, ); | ||||
|  | @ -40,11 +40,12 @@ | |||
|         } | ||||
|     {% endset %} | ||||
|     {% do assets.addInlineCss(slideStyle, 90) %} | ||||
|     {% if page.header.autoslideinterval > 0 %}{% do assets.addJs('theme://js/slideshowext.js', 90) %}{% endif %} | ||||
| {% endblock %} | ||||
| <div class="page-cell-fullwidth"> | ||||
|     <div class="text-tab-content grid-prop current-tab"> | ||||
|         <div class="text-inner"> | ||||
|             <div class="slideshow-ext"> | ||||
|             <div class="slideshow-ext"{% if page.header.autoslideinterval > 0 %} data-autoslide-interval="{{ page.header.autoslideinterval }}"{% endif %}> | ||||
|                 {% for image in slides %} | ||||
|                     <input type="radio" name="slide" id="slide{{ loop.index }}"{% if loop.index == 1 %} checked{% endif %} /> | ||||
|                 {% endfor %} | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Anonymous Contributor
						Anonymous Contributor