module Carrousel

This commit is contained in:
Fred Tempez 2023-07-24 21:18:56 +02:00
parent 3e53329646
commit 016a809022
30 changed files with 1747 additions and 0 deletions

6
module/slider/changes.md Normal file
View File

@ -0,0 +1,6 @@
# Version 6.0
- Gestion des permissions intégrée dans le module
# Version 5.1
- Bug d'initialisation, $directory vide
# Version 5.0
- Remise à la norme ZWII - suppression des modifications réalisées par SL.

1
module/slider/enum.json Normal file
View File

@ -0,0 +1 @@
{"name":"slider","realName":"Carrousel","version":"5.1","update":"0.0","delete":true,"dataDirectory":""}

View File

@ -0,0 +1,69 @@
{
"A l'ouverture de la galerie, la première image est affichée en plein écran.": "Bei der Öffnung der Galerie wird das erste Bild im Vollbildmodus angezeigt.",
"Afficher le contenu de la page avec la galerie": "Zeigen Sie den Inhalt der Seite mit der Galerie an",
"Alignement": "Ausrichtung",
"Alignement du bouton de retour": "Return -Taste -Ausrichtung",
"Alphabétique ": "Alphabetisch",
"Alphabétique inverse": "Alphabetik umgekehrt",
"Au-dessus": "Über",
"Aucun": "Keiner",
"Aucune": "Keiner",
"Aucune galerie": "Keine Galerie",
"Bordure": "Bordüre",
"Cette option est active lorsque le module ne contient qu'une seule galerie, elle permet d'éviter la page listant toutes les galeries et affiche directement la galerie": "Diese Option ist aktiv, wenn das Modul nur eine Galerie enthält. Sie vermeidet die Seiten, die alle Galerien auflistet, und zeigt die Galerie direkt an",
"Configuration de la galerie %s ": "Galeriekonfiguration %s",
"Configuration des galeries": "Die Konfiguration der Galer",
"Couleur de l'ombre": "Schattenfarbe",
"Couleur de la bordure": "Randfarbe",
"Couverture": "Decke",
"Création d'une galerie": "Schaffung einer Galerie",
"Discrète": "Diskret",
"Distribué avec marges": "Verteilt",
"Distribué sans marge": "Ohne Rand verteilt",
"Dossier cible": "Zieldatei",
"En dessous": "Unter",
"Epaisse": "Dick",
"Fine": "Bußgeld",
"Forte": "Stärke",
"Galerie ajoutée": "Galerie hinzugefügt",
"Galerie effacée": "Gelobte Galerie",
"Grande": "Grande",
"Image": "Bild",
"Important": "Wichtig",
"Importante": "Wichtig",
"Le contenu de la page est toujours affiché dans la liste des galeries. Quand une seule galerie est disponible, il est possible de l'afficher directement, cette option est utile dans ce cas précis.": "Der Inhalt der Seite wird immer in der Liste der Galerien angezeigt. Wenn nur eine Galerie verfügbar ist, ist es möglich, sie direkt anzuzeigen. Diese Option ist in diesem speziellen Fall nützlich.",
"Le curseur horizontal règle le niveau de transparence.": "Der horizontale Cursor reguliert das Transparenzniveau.",
"Légende": "Legende",
"Légendes": "Legenden",
"Léger": "Licht",
"Légère": "Licht",
"Manuel": "Manuel",
"Marge": "Marge",
"Masquer l'index des galeries lorsque le module ne contient qu'une seule galerie": "Verstecken Sie den Galerienindex, wenn das Modul nur eine Galerie enthält",
"Masqué": "Maske",
"Mode plein écran automatique": "Automatischer Vollmodus",
"Moyen": "DURCHSCHNITT",
"Moyenne": "Bedeuten",
"Opacité au survol": "Opazität im Überflug",
"Options de configuration": "Optionen de Konfiguration",
"Options de la galerie %s ": "Galerieoptionen %s",
"Petite": "Zierlich",
"Position du bouton de retour à l'index des galeries": "Position des Rückgastes zum Galerien -Index",
"Proportionnelle": "Proportional",
"Supprimer cette galerie ?": "Diese Galerie entfernen?",
"Tri des images": "Bilder sortieren",
"Tri manuel : déplacez le images dans le tableau ci-dessous. L'ordre est sauvegardé automatiquement.": "Sortierhandbuch: Verschieben Sie die Bilder in der folgenden Tabelle. Die Bestellung wird automatisch gespeichert.",
"Très Discrète": "Sehr diskret",
"Très fine": "Sehr gut",
"Très forte": "Sehr stark",
"Très grande": "Sehr groß",
"Très important": "Sehr wichtig",
"Très importante": "Sehr wichtig",
"Très léger": "Sehr leicht",
"Très légère": "Sehr leicht",
"Très petite": "Sehr klein",
"Très épaisse": "Sehr dick",
"Vignettes": "Vignetten",
"À droite": "Nach rechts",
"À gauche": "Nach links"
}

View File

@ -0,0 +1,69 @@
{
"A l'ouverture de la galerie, la première image est affichée en plein écran.": "At the opening of the gallery, the first image is displayed in full screen.",
"Afficher le contenu de la page avec la galerie": "Show the content of the page with the gallery",
"Alignement": "Alignment",
"Alignement du bouton de retour": "Return button alignment",
"Alphabétique ": "Alphabetical",
"Alphabétique inverse": "Reverse alphabetics",
"Au-dessus": "Above",
"Aucun": "None",
"Aucune": "None",
"Aucune galerie": "No gallery",
"Bordure": "Border",
"Cette option est active lorsque le module ne contient qu'une seule galerie, elle permet d'éviter la page listant toutes les galeries et affiche directement la galerie": "This option is active when the module contains only one gallery, it avoids the page listing all the galleries and displays the gallery directly",
"Configuration de la galerie %s ": "Gallery settings %s ",
"Configuration des galeries": "Galleries's settings",
"Couleur de l'ombre": "Shadow color",
"Couleur de la bordure": "Border color",
"Couverture": "Cover",
"Création d'une galerie": "Creation of a gallery",
"Discrète": "Discreet",
"Distribué avec marges": "Distributed with margins",
"Distribué sans marge": "Distributed without margin",
"Dossier cible": "Target file",
"En dessous": "Below",
"Epaisse": "Thick",
"Fine": "Fine",
"Forte": "Forte",
"Galerie ajoutée": "Gallery added",
"Galerie effacée": "Erased gallery",
"Grande": "Grande",
"Image": "Picture",
"Important": "Important",
"Importante": "Important",
"Le contenu de la page est toujours affiché dans la liste des galeries. Quand une seule galerie est disponible, il est possible de l'afficher directement, cette option est utile dans ce cas précis.": "The content of the page is always displayed in the list of galleries. When only one gallery is available, it is possible to display it directly, this option is useful in this specific case.",
"Le curseur horizontal règle le niveau de transparence.": "The horizontal cursor regulates the level of transparency.",
"Légende": "Caption",
"Légendes": "Legends",
"Léger": "Light",
"Légère": "Light",
"Manuel": "Manuel",
"Marge": "Marge",
"Masquer l'index des galeries lorsque le module ne contient qu'une seule galerie": "Hide the index of galleries when the module contains only one gallery",
"Masqué": "Mask",
"Mode plein écran automatique": "Automatic full mode",
"Moyen": "Medium",
"Moyenne": "Medium",
"Opacité au survol": "Opacity in overflight",
"Options de configuration": "Configuration options",
"Options de la galerie %s ": "",
"Petite": "Petite",
"Position du bouton de retour à l'index des galeries": "Position of the return button to the galleries index",
"Proportionnelle": "Proportional",
"Supprimer cette galerie ?": "Remove this gallery?",
"Tri des images": "Sorting images",
"Tri manuel : déplacez le images dans le tableau ci-dessous. L'ordre est sauvegardé automatiquement.": "Sorting manual: Move the images in the table below. The order is automatically saved.",
"Très Discrète": "Very discreet",
"Très fine": "Very fine",
"Très forte": "Very strong",
"Très grande": "Very tall",
"Très important": "Very important",
"Très importante": "Very important",
"Très léger": "Very light",
"Très légère": "Very light",
"Très petite": "Very small",
"Très épaisse": "Very thick",
"Vignettes": "Vignettes",
"À droite": "Right",
"À gauche": "Left"
}

View File

@ -0,0 +1,69 @@
{
"A l'ouverture de la galerie, la première image est affichée en plein écran.": "Al abrir la galería se muestra la primera imagen a pantalla completa.",
"Afficher le contenu de la page avec la galerie": "Mostrar contenido de página con galería",
"Alignement": "Alineación",
"Alignement du bouton de retour": "Alineación del botón Atrás",
"Alphabétique ": "Alfabético",
"Alphabétique inverse": "Alfabético inverso",
"Au-dessus": "Encima",
"Aucun": "Ninguno",
"Aucune": "Ninguno",
"Aucune galerie": "Sin galería",
"Bordure": "Bordillo",
"Cette option est active lorsque le module ne contient qu'une seule galerie, elle permet d'éviter la page listant toutes les galeries et affiche directement la galerie": "Esta opción está activa cuando el módulo contiene solo una galería, evita la página que enumera todas las galerías y muestra la galería directamente",
"Configuration de la galerie %s ": "Configuración de la galería %s ",
"Configuration des galeries": "Configuración de la galería",
"Couleur de l'ombre": "Color de sombra",
"Couleur de la bordure": "Color del bordillo",
"Couverture": "Portada ",
"Création d'une galerie": "Creación de una galería",
"Discrète": "Discreto",
"Distribué avec marges": "Distribuido con márgenes",
"Distribué sans marge": "Distribuido sin margen",
"Dossier cible": "Carpeta de destino",
"En dessous": "Debajo",
"Epaisse": "grueso",
"Fine": "Fino",
"Forte": "Fuerte",
"Galerie ajoutée": "Galería añadida",
"Galerie effacée": "Galería eliminada",
"Grande": "Grande",
"Image": "Imagen",
"Important": "Importante",
"Importante": "Importante",
"Le contenu de la page est toujours affiché dans la liste des galeries. Quand une seule galerie est disponible, il est possible de l'afficher directement, cette option est utile dans ce cas précis.": "El contenido de la página siempre se muestra en la lista de galerías. Cuando solo hay una galería disponible, es posible mostrarla directamente, esta opción es útil en este caso específico",
"Le curseur horizontal règle le niveau de transparence.": "El control deslizante horizontal ajusta el nivel de transparencia",
"Légende": "Pie",
"Légendes": "Leyendas",
"Léger": "Ligero",
"Légère": "Ligero",
"Manuel": "Manual",
"Marge": "Margen",
"Masquer l'index des galeries lorsque le module ne contient qu'une seule galerie": "Ocultar índice de galería cuando el módulo contiene solo una galería",
"Masqué": "Máscara",
"Mode plein écran automatique": "Modo automático de pantalla completa",
"Moyen": "Mediano",
"Moyenne": "Mediana",
"Opacité au survol": "Opacidad de desplazamiento",
"Options de configuration": "Opciones de configuración",
"Options de la galerie %s ": "",
"Petite": "Pequeña",
"Position du bouton de retour à l'index des galeries": "Posición del botón Atrás del índice de galería",
"Proportionnelle": "Proporcional",
"Supprimer cette galerie ?": "¿Borrar esta galería?",
"Tri des images": "Ordenar imágenes",
"Tri manuel : déplacez le images dans le tableau ci-dessous. L'ordre est sauvegardé automatiquement.": "Ordenación manual: mueve las imágenes en la siguiente tabla. El orden se guarda automáticamente.",
"Très Discrète": "Muy discreto",
"Très fine": "Muy fino",
"Très forte": "Muy fuerte",
"Très grande": "Muy grande",
"Très important": "Muy importante",
"Très importante": "Muy importante",
"Très léger": "Muy ligero",
"Très légère": "Muy ligero",
"Très petite": "Muy pequeña",
"Très épaisse": "Muy grueso",
"Vignettes": "Viñetas",
"À droite": "A la derecha",
"À gauche": "A la izquierda"
}

View File

@ -0,0 +1,69 @@
{
"A l'ouverture de la galerie, la première image est affichée en plein écran.": "",
"Afficher le contenu de la page avec la galerie": "",
"Alignement": "",
"Alignement du bouton de retour": "",
"Alphabétique ": "",
"Alphabétique inverse": "",
"Au-dessus": "",
"Aucun": "",
"Aucune": "",
"Aucune galerie": "",
"Bordure": "",
"Cette option est active lorsque le module ne contient qu'une seule galerie, elle permet d'éviter la page listant toutes les galeries et affiche directement la galerie": "",
"Configuration de la galerie %s ": "",
"Configuration des galeries": "",
"Couleur de l'ombre": "",
"Couleur de la bordure": "",
"Couverture": "",
"Création d'une galerie": "",
"Discrète": "",
"Distribué avec marges": "",
"Distribué sans marge": "",
"Dossier cible": "",
"En dessous": "",
"Epaisse": "",
"Fine": "",
"Forte": "",
"Galerie ajoutée": "",
"Galerie effacée": "",
"Grande": "",
"Image": "",
"Important": "",
"Importante": "",
"Le contenu de la page est toujours affiché dans la liste des galeries. Quand une seule galerie est disponible, il est possible de l'afficher directement, cette option est utile dans ce cas précis.": "",
"Le curseur horizontal règle le niveau de transparence.": "",
"Légende": "",
"Légendes": "",
"Léger": "",
"Légère": "",
"Manuel": "",
"Marge": "",
"Masquer l'index des galeries lorsque le module ne contient qu'une seule galerie": "",
"Masqué": "",
"Mode plein écran automatique": "",
"Moyen": "",
"Moyenne": "",
"Opacité au survol": "",
"Options de configuration": "",
"Options de la galerie %s ": "",
"Petite": "",
"Position du bouton de retour à l'index des galeries": "",
"Proportionnelle": "",
"Supprimer cette galerie ?": "",
"Tri des images": "",
"Tri manuel : déplacez le images dans le tableau ci-dessous. L'ordre est sauvegardé automatiquement.": "",
"Très Discrète": "",
"Très fine": "",
"Très forte": "",
"Très grande": "",
"Très important": "",
"Très importante": "",
"Très léger": "",
"Très légère": "",
"Très petite": "",
"Très épaisse": "",
"Vignettes": "",
"À droite": "",
"À gauche": ""
}

View File

@ -0,0 +1,69 @@
{
"A l'ouverture de la galerie, la première image est affichée en plein écran.": "Όταν ανοίγει η γκαλερί, η πρώτη εικόνα εμφανίζεται σε πλήρη οθόνη.",
"Afficher le contenu de la page avec la galerie": "Εμφάνιση περιεχομένου σελίδας με γκαλερί",
"Alignement": "Στοίχιση",
"Alignement du bouton de retour": "Ευθυγράμμιση κουμπιού πίσω",
"Alphabétique ": "Αλφαβητική Ταξινόμηση",
"Alphabétique inverse": "Αντίστροφη αλφαβητική",
"Au-dessus": "Πάνω",
"Aucun": "Χωρίς",
"Aucune": "Χωρίς",
"Aucune galerie": "Δεν υπάρχει συλλογή εικόνων",
"Bordure": "κάδρο γύρω",
"Cette option est active lorsque le module ne contient qu'une seule galerie, elle permet d'éviter la page listant toutes les galeries et affiche directement la galerie": "Αυτή η επιλογή είναι ενεργή όταν η ενότητα περιέχει μόνο μία γκαλερί, αποφεύγει τη σελίδα που απαριθμεί όλες τις γκαλερί και εμφανίζει απευθείας τη γκαλερί.",
"Configuration de la galerie %s ": "Διαμόρφωση της γκαλερί %s ",
"Configuration des galeries": "Διαμόρφωση γκαλερί",
"Couleur de l'ombre": "Χρώμα σκιάς",
"Couleur de la bordure": "Χρώμα γραμμής",
"Couverture": "Κάλυψη ",
"Création d'une galerie": "Δημιουργία γκαλερί",
"Discrète": "διακριτικό",
"Distribué avec marges": "Διανομή με περιθώρια",
"Distribué sans marge": "Διανομή χωρίς περιθώριο",
"Dossier cible": "Φάκελος στόχος",
"En dessous": "Κάτω",
"Epaisse": "Παχιά γραμμή",
"Fine": "Λεπτή γραμμή ",
"Forte": "Ισχυρή αδιαφάνεια",
"Galerie ajoutée": "Προστέθηκε γκαλερί",
"Galerie effacée": "Γκαλερί διαγράφηκε",
"Grande": "Μεγάλη",
"Image": "Εικόνα",
"Important": "Σημαντικό",
"Importante": "Σημαντική",
"Le contenu de la page est toujours affiché dans la liste des galeries. Quand une seule galerie est disponible, il est possible de l'afficher directement, cette option est utile dans ce cas précis.": "Το περιεχόμενο της σελίδας εμφανίζεται πάντα στη λίστα των γκαλερί. Όταν είναι διαθέσιμη μόνο μία γκαλερί, είναι δυνατόν να την εμφανίσετε απευθείας, αυτή η επιλογή είναι χρήσιμη σε αυτή την περίπτωση.",
"Le curseur horizontal règle le niveau de transparence.": "Το οριζόντιο ρυθμιστικό ρυθμίζει το επίπεδο διαφάνειας.",
"Légende": "Λεζάντα εικόνας",
"Légendes": "",
"Léger": "ελαφρύ",
"Légère": "ελαφριά",
"Manuel": "Χειροκίνητη ",
"Marge": "Περιθώριο",
"Masquer l'index des galeries lorsque le module ne contient qu'une seule galerie": "Απόκρυψη του ευρετηρίου της γκαλερί όταν η ενότητα περιέχει μόνο μία γκαλερί",
"Masqué": "κρυμμένο",
"Mode plein écran automatique": "Αυτόματη λειτουργία πλήρους οθόνης",
"Moyen": "Μέσος",
"Moyenne": "Μεσαίο",
"Opacité au survol": "Αδιαφάνεια στο mouse-over",
"Options de configuration": "Επιλογές διαμόρφωσης",
"Options de la galerie %s ": "",
"Petite": "μικρή ",
"Position du bouton de retour à l'index des galeries": "Θέση του κουμπιού Ευθυγράμμιση κουμπιού πίσω στο ευρετήριο της γκαλερί",
"Proportionnelle": "Αναλογική",
"Supprimer cette galerie ?": "",
"Tri des images": "Ταξινόμηση εικόνων",
"Tri manuel : déplacez le images dans le tableau ci-dessous. L'ordre est sauvegardé automatiquement.": "Μη αυτόματη ταξινόμηση: μετακινήστε τις εικόνες στον παρακάτω πίνακα. Η παραγγελία αποθηκεύεται αυτόματα.",
"Très Discrète": "Πολύ διακριτικό",
"Très fine": "Πολύ λεπτή γραμμή ",
"Très forte": "Πολύ Ισχυρή αδιαφάνεια",
"Très grande": "Πολύ μεγάλη",
"Très important": "Πολύ σημαντικό",
"Très importante": "Πολύ Σημαντική",
"Très léger": "Πολύ ελαφρύ",
"Très légère": "Πολύ ελαφριά",
"Très petite": "Πολύ μικρή ",
"Très épaisse": "πολύ παχιά γραμμή",
"Vignettes": "",
"À droite": "Δεξιά",
"À gauche": "Αριστερά"
}

View File

@ -0,0 +1,69 @@
{
"A l'ouverture de la galerie, la première image est affichée en plein écran.": "All'apertura della galleria, la prima immagine viene visualizzata a schermo intero.",
"Afficher le contenu de la page avec la galerie": "Mostra il contenuto della pagina con la galleria",
"Alignement": "Allineamento",
"Alignement du bouton de retour": "Allineamento del pulsante di ritorno",
"Alphabétique ": "Alfabetico",
"Alphabétique inverse": "Alfabetico inverso",
"Au-dessus": "Al di sopra",
"Aucun": "Nessuno",
"Aucune": "Nessuno",
"Aucune galerie": "Nessuna galleria",
"Bordure": "Bordo",
"Cette option est active lorsque le module ne contient qu'une seule galerie, elle permet d'éviter la page listant toutes les galeries et affiche directement la galerie": "Questa opzione è attiva quando il modulo contiene solo una galleria, evita la pagina che elenca tutte le gallerie e visualizza la galleria direttamente",
"Configuration de la galerie %s ": "Configurazione della galleria %s ",
"Configuration des galeries": "Configurazione di Galler",
"Couleur de l'ombre": "Colore ombra",
"Couleur de la bordure": "Colore del bordo",
"Couverture": "Copertina",
"Création d'une galerie": "Creazione di una galleria",
"Discrète": "Discreto",
"Distribué avec marges": "Distribuito con margini",
"Distribué sans marge": "Distribuito senza margine",
"Dossier cible": "File di destinazione",
"En dessous": "Qui di seguito",
"Epaisse": "Spesso",
"Fine": "Bene",
"Forte": "Forte",
"Galerie ajoutée": "Galleria aggiunta",
"Galerie effacée": "Galleria cancellata",
"Grande": "Grande",
"Image": "Immagine",
"Important": "Importante",
"Importante": "Importante",
"Le contenu de la page est toujours affiché dans la liste des galeries. Quand une seule galerie est disponible, il est possible de l'afficher directement, cette option est utile dans ce cas précis.": "Il contenuto della pagina viene sempre visualizzato nell'elenco delle gallerie. Quando è disponibile solo una galleria, è possibile visualizzarla direttamente, questa opzione è utile in questo caso specifico.",
"Le curseur horizontal règle le niveau de transparence.": "Il cursore orizzontale regola il livello di trasparenza.",
"Légende": "Didascalia",
"Légendes": "Leggende",
"Léger": "Leggero",
"Légère": "Leggera",
"Manuel": "Manuel",
"Marge": "Marge",
"Masquer l'index des galeries lorsque le module ne contient qu'une seule galerie": "Nascondi l'indice delle gallerie quando il modulo contiene solo una galleria",
"Masqué": "Maschera",
"Mode plein écran automatique": "Modalità completa automatica",
"Moyen": "Medio",
"Moyenne": "medio",
"Opacité au survol": "Opacità in luce eccessiva",
"Options de configuration": "Opzioni di configurazione",
"Options de la galerie %s ": "",
"Petite": "Petite",
"Position du bouton de retour à l'index des galeries": "Posizione del pulsante di ritorno all'indice delle gallerie",
"Proportionnelle": "Proporzionale",
"Supprimer cette galerie ?": "Rimuovere questa galleria?",
"Tri des images": "Ordinamento delle immagini",
"Tri manuel : déplacez le images dans le tableau ci-dessous. L'ordre est sauvegardé automatiquement.": "Manuale di ordinamento: spostare le immagini nella tabella sottostante. L'ordine viene salvato automaticamente.",
"Très Discrète": "Molto discreto",
"Très fine": "Molto bene",
"Très forte": "Molto forte",
"Très grande": "Molto alto",
"Très important": "Molto importante",
"Très importante": "Molto importante",
"Très léger": "Molto leggero",
"Très légère": "Molto leggero",
"Très petite": "Molto piccolo",
"Très épaisse": "Molto spesso",
"Vignettes": "Vignette",
"À droite": "A destra",
"À gauche": "A sinistra"
}

View File

@ -0,0 +1,69 @@
{
"A l'ouverture de la galerie, la première image est affichée en plein écran.": "Na abertura da galeria, a primeira imagem é exibida em tela cheia.",
"Afficher le contenu de la page avec la galerie": "Mostre o conteúdo da página com a galeria",
"Alignement": "Alinhamento",
"Alignement du bouton de retour": "Retornar alinhamento do botão",
"Alphabétique ": "Alfabético",
"Alphabétique inverse": "Alfabético reverso",
"Au-dessus": "Acima de",
"Aucun": "Nenhum",
"Aucune": "Nenhum",
"Aucune galerie": "Sem galeria",
"Bordure": "Fronteira",
"Cette option est active lorsque le module ne contient qu'une seule galerie, elle permet d'éviter la page listant toutes les galeries et affiche directement la galerie": "Esta opção está ativa quando o módulo contém apenas uma galeria, evita a página listando todas as galerias e exibe a galeria diretamente",
"Configuration de la galerie %s ": "Configuração da galeria %s ",
"Configuration des galeries": "Configuração de Galler",
"Couleur de l'ombre": "Cor da sombra",
"Couleur de la bordure": "Cor da borda",
"Couverture": "Capa",
"Création d'une galerie": "Criação de uma galeria",
"Discrète": "Discreto",
"Distribué avec marges": "Distribuído com margens",
"Distribué sans marge": "Distribuído sem margem",
"Dossier cible": "Arquivo de destino",
"En dessous": "Abaixo de",
"Epaisse": "Espesso",
"Fine": "Multar",
"Forte": "Forte",
"Galerie ajoutée": "Galeria adicionada",
"Galerie effacée": "Galeria apagada",
"Grande": "Grande",
"Image": "Imagem",
"Important": "Importante",
"Importante": "Importante",
"Le contenu de la page est toujours affiché dans la liste des galeries. Quand une seule galerie est disponible, il est possible de l'afficher directement, cette option est utile dans ce cas précis.": "O conteúdo da página é sempre exibido na lista de galerias. Quando apenas uma galeria está disponível, é possível exibi -lo diretamente, essa opção é útil neste caso específico.",
"Le curseur horizontal règle le niveau de transparence.": "O cursor horizontal regula o nível de transparência.",
"Légende": "Legenda",
"Légendes": "Legendas",
"Léger": "Claro",
"Légère": "Claro",
"Manuel": "Manuel",
"Marge": "Marge",
"Masquer l'index des galeries lorsque le module ne contient qu'une seule galerie": "Ocultar o índice de galerias quando o módulo contém apenas uma galeria",
"Masqué": "mascarar",
"Mode plein écran automatique": "Modo completo automático",
"Moyen": "Médio",
"Moyenne": "Médio",
"Opacité au survol": "Opacidade em Overflight",
"Options de configuration": "",
"Options de la galerie %s ": "Opções de galeria %s",
"Petite": "Petite",
"Position du bouton de retour à l'index des galeries": "Posição do botão de retorno para o índice de galerias",
"Proportionnelle": "Proporcional",
"Supprimer cette galerie ?": "Remover esta galeria?",
"Tri des images": "Classificando imagens",
"Tri manuel : déplacez le images dans le tableau ci-dessous. L'ordre est sauvegardé automatiquement.": "Manual de classificação: mova as imagens na tabela abaixo. O pedido é salvo automaticamente.",
"Très Discrète": "Muito discreto",
"Très fine": "Muito bem",
"Très forte": "Muito forte",
"Très grande": "Muito alto",
"Très important": "Muito importante",
"Très importante": "Muito importante",
"Très léger": "Muita luz",
"Très légère": "Muita luz",
"Très petite": "Muito pequeno",
"Très épaisse": "Muito espesso",
"Vignettes": "Vinhetas",
"À droite": "Para a direita",
"À gauche": "Para a esquerda"
}

View File

@ -0,0 +1,69 @@
{
"A l'ouverture de la galerie, la première image est affichée en plein écran.": "Galeri açılırken ilk resim tam ekranda gösteriliyor.",
"Afficher le contenu de la page avec la galerie": "Sayfa içeriğini galeri ile görüntüle",
"Alignement": "Hizalama",
"Alignement du bouton de retour": "Geri düğmesi hizalaması",
"Alphabétique ": "Alfabetik",
"Alphabétique inverse": "Ters alfabetik",
"Au-dessus": "Üstünde",
"Aucun": "Hiçbiri",
"Aucune": "Hiçbiri",
"Aucune galerie": "Galeri Yok",
"Bordure": "Çerçeve",
"Cette option est active lorsque le module ne contient qu'une seule galerie, elle permet d'éviter la page listant toutes les galeries et affiche directement la galerie": "Bu seçenek, modül yalnızca bir galeri içerdiğinde etkindir, tüm galerilerin listelendiği sayfadan kaçınır ve galeriyi doğrudan görüntüler",
"Configuration de la galerie %s ": "%s galeri yapılandırması",
"Configuration des galeries": "Galerilerin yapılandırması",
"Couleur de l'ombre": "Gölge rengi",
"Couleur de la bordure": "Çerçeve rengi",
"Couverture": "Kapak",
"Création d'une galerie": "Galeri oluşturma",
"Discrète": "Silik",
"Distribué avec marges": "Kenar boşluklarıyla dağıtıldı",
"Distribué sans marge": "Marjsız dağıtıldı",
"Dossier cible": "Hedef klasör",
"En dessous": "Altında",
"Epaisse": "Kalın",
"Fine": "İnce",
"Forte": "Güçlü",
"Galerie ajoutée": "Galeri eklendi",
"Galerie effacée": "Galeri silindi",
"Grande": "Büyük",
"Image": "Resim",
"Important": "Önemli",
"Importante": "Önemli",
"Le contenu de la page est toujours affiché dans la liste des galeries. Quand une seule galerie est disponible, il est possible de l'afficher directement, cette option est utile dans ce cas précis.": "Sayfanın içeriği her zaman galeriler listesinde görüntülenir. Yalnızca bir galeri mevcut olduğunda, onu doğrudan görüntülemek mümkündür, bu seçenek bu özel durumda kullanışlıdır.",
"Le curseur horizontal règle le niveau de transparence.": "Yatay kaydırıcı şeffaflık seviyesini ayarlar.",
"Légende": "Başlık",
"Légendes": "Başlıklar",
"Léger": "Light",
"Légère": "Light",
"Manuel": "Manuel",
"Marge": "Kenar boşluğu",
"Masquer l'index des galeries lorsque le module ne contient qu'une seule galerie": "Modül yalnızca bir galeri içerdiğinde galeri dizinini gizle",
"Masqué": "Gizli",
"Mode plein écran automatique": "Otomatik tam ekran modu",
"Moyen": "Orta",
"Moyenne": "Orta",
"Opacité au survol": "Hover opaklığı",
"Options de configuration": "Yapılandırma seçenekleri",
"Options de la galerie %s ": "%s galeri seçenekleri",
"Petite": "Küçük",
"Position du bouton de retour à l'index des galeries": "Galeri dizini geri düğmesi konumu",
"Proportionnelle": "Orantılı",
"Supprimer cette galerie ?": "Bu galeri silinsin mi?",
"Tri des images": "Resimleri sıralama",
"Tri manuel : déplacez le images dans le tableau ci-dessous. L'ordre est sauvegardé automatiquement.": "Manuel sıralama: aşağıdaki tablodaki resimleri taşıyın. Sıra otomatik olarak kaydedilir.",
"Très Discrète": "Çok silik",
"Très fine": "Çok ince",
"Très forte": "Çok güçlü",
"Très grande": "Çok büyük",
"Très important": "Çok önemli",
"Très importante": "Çok önemli",
"Très léger": "Çok hafif",
"Très légère": "Çok hafif",
"Très petite": "Çok küçük",
"Très épaisse": "Çok kalın",
"Vignettes": "Küçük resim",
"À droite": "Sağa",
"À gauche": "Sola"
}

View File

@ -0,0 +1,7 @@
<?php $moduleData['slider'] = [
'delete' => $this->getInput('profilAddSliderDelete', helper::FILTER_BOOLEAN),
'theme' => $this->getInput('profilAddSliderTheme', helper::FILTER_BOOLEAN),
'config' => $this->getInput('profilAddSliderEdit', helper::FILTER_BOOLEAN) ||
$this->getInput('profilAddSliderDelete', helper::FILTER_BOOLEAN) ||
$this->getInput('profilAddSliderTheme', helper::FILTER_BOOLEAN)
];

View File

@ -0,0 +1,7 @@
<?php $moduleData['slider'] = [
'delete' => $this->getInput('profilEditSliderDelete', helper::FILTER_BOOLEAN),
'theme' => $this->getInput('profilEditSliderTheme', helper::FILTER_BOOLEAN),
'config' => $this->getInput('profilEditSliderEdit', helper::FILTER_BOOLEAN) ||
$this->getInput('profilEditSliderDelete', helper::FILTER_BOOLEAN) ||
$this->getInput('profilEditSliderTheme', helper::FILTER_BOOLEAN)
];

View File

@ -0,0 +1,22 @@
<div class="row">
<div class="col12">
<div class="block">
<h4>
<?php echo helper::translate('Permissions sur le module') . ' ' . helper::translate('Carrousel'); ?>
</h4>
<div class="row">
<div class="col6">
<?php echo template::checkbox('profilAddSliderTheme', true, 'Thème', [
'checked' => $this->getData(['profil', $this->getUrl(2), $this->getUrl(3), 'slider', 'theme'])
]); ?>
</div>
<div class="col6">
<?php echo template::checkbox('profilAddSliderDelete', true, 'Effacer', [
'checked' => $this->getData(['profil', $this->getUrl(2), $this->getUrl(3), 'slider', 'delete'])
]); ?>
</div>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,22 @@
<div class="row">
<div class="col12">
<div class="block">
<h4>
<?php echo helper::translate('Permissions sur le module') . ' ' . helper::translate('Carrousel'); ?>
</h4>
<div class="row">
<div class="col6">
<?php echo template::checkbox('profilEditSliderTheme', true, 'Thème', [
'checked' => $this->getData(['profil', $this->getUrl(2), $this->getUrl(3), 'slider', 'theme'])
]); ?>
</div>
<div class="col6">
<?php echo template::checkbox('profilEditSliderDelete', true, 'Effacer', [
'checked' => $this->getData(['profil', $this->getUrl(2), $this->getUrl(3), 'slider', 'delete'])
]); ?>
</div>
</div>
</div>
</div>
</div>

462
module/slider/slider.php Normal file
View File

@ -0,0 +1,462 @@
<?php
/**
* This file is part of Zwii.
*
* For full copyright and license information, please see the LICENSE
* file that was distributed with this source code.
*
* @author Rémi Jean <remi.jean@outlook.com>
* @copyright Copyright (C) 2008-2018, Rémi Jean
* @author Frédéric Tempez <frederic.tempez@outlook.com>
* @copyright Copyright (C) 2018-2020, Frédéric Tempez
* @license GNU General Public License, version 3
* @link http://zwiicms.com/
*
*/
class slider extends common
{
public static $actions = [
'config' => self::GROUP_MODERATOR,
'update' => self::GROUP_MODERATOR,
'theme' => self::GROUP_MODERATOR,
'delete' => self::GROUP_MODERATOR,
'dirs' => self::GROUP_MODERATOR,
'index' => self::GROUP_VISITOR
];
const VERSION = '6.0';
const REALNAME = 'Carrousel';
const DELETE = true;
const UPDATE = '0.0';
const DATADIRECTORY = ''; // Contenu localisé inclus par défaut (page.json et module.json)
public static $directories = [];
public static $firstPictures = [];
public static $galleries = [];
public static $pictures = [];
public static $pageList = [];
//Visibilité des boutons de navigation
public static $namespace = [
'white-btns' => 'Blancs',
'centered-btns' => 'Noirs',
'transparent-btns' => 'Bandes invisibles',
'large-btns' => 'Bandes grises',
];
// Pager
public static $pager = [
true => 'Puces visibles',
false => 'Puces invisibles'
];
public static $auto = [
true => 'Active',
false => 'Inactive'
];
// Largeur
public static $screenWidth = [
640 => '640 pixels',
720 => '720 pixels',
768 => '768 pixels',
800 => '800 pixels',
854 => '854 pixels',
1024 => '1024 pixels',
1280 => '1280 pixels',
1400 => '1400 pixels',
1600 => '1600 pixels',
1920 => '1920 pixels',
0 => 'Largeur de l\'écran'
];
public static $selectedMaxwidth = 0;
// Transition
public static $speed = [
'500' => '500 ms',
'1000' => '1 s',
'1500' => '1.5 s',
'2000' => '2 s',
'2500' => '2.5 s',
'3000' => '3 s',
'3500' => '3.5 s'
];
// Imeout
public static $timeout = [
'500' => '500 ms',
'1000' => '1 s',
'1500' => '1.5 s',
'2000' => '2 s',
'3000' => '3 s',
'5000' => '5 s',
'7000' => '7 s',
'10000' => '10 s'
];
//Visibilité de la légende
public static $visibilite_legende = [
'survol' => 'Au survol',
'toujours' => 'Toujours visible',
'jamais' => 'Jamais visible'
];
//Position de la légende
public static $position_legende = [
'haut' => 'En haut',
'bas' => 'En bas'
];
//Temps d'apparition légende et boutons
public static $apparition = [
'opacity 0.2s ease-in' => '0.2s',
'opacity 0.5s ease-in' => '0.5s',
'opacity 1s ease-in' => '1s',
'opacity 2s ease-in' => '2s'
];
//Choix du tri
public static $sort = [
'asc' => 'Alphabétique naturel',
'dsc' => 'Alphabétique naturel inverse',
'rand' => 'Aléatoire',
'none' => 'Par défaut, sans tri',
];
/**
* Mise à jour du dossier
*/
public function update()
{
// Soumission du formulaire
if ($this->isPost()) {
$this->setData([
'module',
$this->getUrl(0),
'directory',
$this->getInput('galleryUpdateDirectory', helper::FILTER_STRING_SHORT, true)
]);
$this->addOutput([
'redirect' => helper::baseUrl() . $this->getUrl(0) . '/config',
'notification' => 'Modifications enregistrées',
'state' => true
]);
}
// Valeurs en sortie
$this->addOutput([
'title' => 'Configuration de la galerie',
'view' => 'update'
]);
}
/**
* Configuration
*/
public function config()
{
// Initialise le module
$this->init();
// Liste des pages active à l'exclusion des barres latérales
$pagesId = $this->getHierarchy(null, false, null);
$excludeBar = $this->getHierarchy(null, false, true);
$pagesId = array_diff_key($pagesId, $excludeBar);
// Construit le tableau pour le select du formulaire
foreach ($pagesId as $parentKey => $parentValue) {
self::$pageList[$parentKey] = $this->getData(['page', $parentKey, 'title']);
foreach ($parentValue as $childKey) {
self::$pageList[$childKey] = $this->getData(['page', $childKey, 'title']);
}
}
// Aucun choix
self::$pageList = array_merge([0 => ''], self::$pageList);
// Soumission du formulaire
if ($this->isPost()) {
$inputs['legends'] = $this->getInput('legends', null);
$inputs['uri'] = $this->getInput('sliderHref', null);
// Supprime les points devant les extensions des clés à cause du système de BDD
foreach ($inputs as $keyinputs => $valuesinputs) {
foreach ($valuesinputs as $keyinput => $valueinput) {
$datas[$keyinputs][str_replace('.', '', $keyinput)] = $valueinput;
}
}
$this->setData([
'module',
$this->getUrl(0),
[
'directory' => $this->getData(['module', $this->getUrl(0), 'directory']),
'theme' => $this->getData(['module', $this->getUrl(0), 'theme']),
'legends' => $datas['legends'],
'uri' => $datas['uri']
]
]);
$this->addOutput([
'redirect' => helper::baseUrl() . $this->getUrl(0) . '/config',
'notification' => 'Modifications enregistrées',
'state' => true
]);
}
// Met en forme le tableau
$directory = $this->getData(['module', $this->getUrl(0), 'directory']);
if ($directory && is_dir($directory)) {
$iterator = new DirectoryIterator($directory);
foreach ($iterator as $fileInfos) {
if ($fileInfos->isDot() === false and $fileInfos->isFile() and @getimagesize($fileInfos->getPathname())) {
self::$pictures[$fileInfos->getFilename()] = [
$fileInfos->getFilename(),
template::text('legends[' . $fileInfos->getFilename() . ']', [
'value' => empty($this->getData(['module', $this->getUrl(0), 'legends', str_replace('.', '', $fileInfos->getFilename())]))
? ''
: $this->getData(['module', $this->getUrl(0), 'legends', str_replace('.', '', $fileInfos->getFilename())])
]),
template::select('sliderHref[' . $fileInfos->getFilename() . ']', self::$pageList, [
'selected' => empty($this->getData(['module', $this->getUrl(0), 'uri', str_replace('.', '', $fileInfos->getFilename())]))
? ''
: $this->getData(['module', $this->getUrl(0), 'uri', str_replace('.', '', $fileInfos->getFilename())])
]),
'<a href="' . str_replace('source', 'thumb', $directory) . '/' . self::THUMBS_SEPARATOR . $fileInfos->getFilename() . '" rel="data-lity" data-lity=""><img src="' . str_replace('source', 'thumb', $directory) . '/' . $fileInfos->getFilename() . '"></a>'
];
}
}
// Tri des images pour affichage de la liste dans la page d'édition
switch ($this->getData(['module', $this->getUrl(0), 'theme', 'tri'])) {
case 'dsc':
krsort(self::$pictures, SORT_NATURAL | SORT_FLAG_CASE);
break;
case 'asc':
ksort(self::$pictures, SORT_NATURAL | SORT_FLAG_CASE);
break;
case 'rand':
case 'none':
default:
break;
}
}
// Valeurs en sortie
$this->addOutput([
'title' => 'Configuration du module',
'view' => 'config'
]);
}
/**
* Suppression
*/
public function delete()
{
// $url prend l'adresse sans le token
// La galerie n'existe pas
if ($this->getData(['module', $this->getUrl(0), $this->getUrl(2)]) === null) {
// Valeurs en sortie
$this->addOutput([
'access' => false
]);
}
// Jeton incorrect
if ($this->getUrl(3) !== $_SESSION['csrf']) {
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl() . $this->getUrl(0) . '/config',
'notification' => 'Suppression non autorisée'
]);
}
// Suppression
else {
$this->deleteData(['module', $this->getUrl(0), $this->getUrl(2)]);
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl() . $this->getUrl(0) . '/config',
'notification' => 'Galerie supprimée',
'state' => true
]);
}
}
/**
* Liste des dossiers
*/
public function dirs()
{
// Valeurs en sortie
$this->addOutput([
'display' => self::DISPLAY_JSON,
'content' => $this->scanSubDir(self::FILE_DIR . 'source')
]);
}
/**
* Édition
*/
public function theme()
{
// Soumission du formulaire
if ($this->isPost()) {
// Adapte la largeur à celle de l'écran :
$maxWidth = $this->getInput('sliderThememaxWidth', helper::FILTER_INT) === 0
? intval(trim($this->getData(['theme', 'site', 'width']), 'px')) - 40
: $this->getInput('sliderThememaxWidth', helper::FILTER_INT);
// Equilibrer les durées
$speed = $this->getInput('sliderThemespeed', helper::FILTER_INT);
$timeout = $this->getInput('sliderThemeDiapoTime', helper::FILTER_INT);
if ($speed >= $timeout) {
// Valeurs en sortie
$notification = 'La durée de transition doit inférieure à la durée de l`\'image fixe';
$state= false;
} else {
$this->setData([
'module',
$this->getUrl(0),
[
'theme' => [
'pager' => $this->getInput('sliderThemePager', helper::FILTER_BOOLEAN),
'auto' => $this->getInput('sliderThemeAuto', helper::FILTER_BOOLEAN),
'maxWidth' => $maxWidth,
'speed' => $speed,
'timeout' => $timeout,
'namespace' => $this->getInput('sliderThemeNameSpace', helper::FILTER_STRING_SHORT),
'sort' => $this->getInput('sliderThemeTri', helper::FILTER_STRING_SHORT),
],
'directory' => $this->getData(['module', $this->getUrl(0), 'directory']),
'legends' => $this->getData(['module', $this->getUrl(0), 'legends']),
'uri' => $this->getData(['module', $this->getUrl(0), 'uri']),
]
]);
$notification = 'Modifications enregistrées';
$state = true;
}
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl() . $this->getUrl(0) . '/theme',
'notification' => $notification,
'state' => $state
]);
}
// Sélection largeur de l'écran
self::$selectedMaxwidth = array_key_exists($this->getData(['module', $this->getUrl(0), 'theme', 'maxWidth']), self::$screenWidth)
? $this->getData(['module', $this->getUrl(0), 'theme', 'maxWidth'])
: 0;
// Valeurs en sortie
$this->addOutput([
'title' => 'Thème',
'view' => 'theme'
]);
}
/**
* Fonction index() modifiée par rapport au module Gallery
*/
public function index()
{
$galleryId = $this->getUrl(0);
$directory = $this->getData(['module', $galleryId, 'directory']);
// Images de la galerie
if ($directory && is_dir($directory)) {
$iterator = new DirectoryIterator($directory);
foreach ($iterator as $fileInfos) {
if ($fileInfos->isDot() === false and $fileInfos->isFile() and @getimagesize($fileInfos->getPathname())) {
self::$pictures[$directory . '/' . $fileInfos->getFilename()] = [
'legend' => $this->getData(['module', $galleryId, 'legends', str_replace('.', '', $fileInfos->getFilename())]),
'uri' => $this->getData(['module', $galleryId, 'uri', str_replace('.', '', $fileInfos->getFilename())]),
];
//self::$pictures['uri'][$directory . '/' . $fileInfos->getFilename()] = ;
}
}
// Tri des images par ordre alphabétique, alphabétique inverse, aléatoire ou pas
switch ($this->getData(['module', $galleryId, 'config', 'tri'])) {
case 'SORT_DSC':
krsort(self::$pictures, SORT_NATURAL | SORT_FLAG_CASE);
break;
case 'SORT_ASC':
ksort(self::$pictures, SORT_NATURAL | SORT_FLAG_CASE);
break;
case 'RAND':
break;
case 'NONE':
break;
default:
break;
}
}
// Valeurs en sortie
$this->addOutput([
'showBarEditButton' => true,
'showPageContent' => true,
'vendor' => [
'slider'
],
'view' => 'index'
]);
}
/**
* Scan le contenu d'un dossier et de ses sous-dossiers
* @param string $dir Dossier à scanner
* @return array
*/
private function scanSubDir($dir)
{
$dirContent = [];
$iterator = new DirectoryIterator($dir);
foreach ($iterator as $fileInfos) {
if ($fileInfos->isDot() === false and $fileInfos->isDir()) {
$dirContent[] = $dir . '/' . $fileInfos->getBasename();
$dirContent = array_merge($dirContent, $this->scanSubDir($dir . '/' . $fileInfos->getBasename()));
}
}
return $dirContent;
}
private function init()
{
if (is_null($this->getData(['module', $this->getUrl(0), 'theme']))) {
$this->setData([
'module',
$this->getUrl(0),
[
'theme' => [
'pager' => true,
'auto' => true,
'maxWidth' => '1280',
'speed' => 1000,
'timeout' => 3000,
'namespace' => 'centered-btns',
'tri' => 'RAND',
],
'directory' => null,
'legends' => [],
'uri' => [],
]
]);
}
}
}

3
module/slider/vendor/slider/inc.json vendored Normal file
View File

@ -0,0 +1,3 @@
[
"slider.js"
]

10
module/slider/vendor/slider/slider.js vendored Normal file
View File

@ -0,0 +1,10 @@
/*! http://responsiveslides.com v1.55 by @arielsalminen */
(function(c,K,C){c.fn.responsiveSlides=function(m){var a=c.extend({auto:!0,speed:500,timeout:4E3,pager:!1,nav:!1,random:!1,pause:!1,pauseControls:!0,prevText:"Previous",nextText:"Next",maxwidth:"",navContainer:"",manualControls:"",namespace:"rslides",before:c.noop,after:c.noop},m);return this.each(function(){C++;var f=c(this),u,t,v,n,q,r,p=0,e=f.children(),D=e.length,h=parseFloat(a.speed),E=parseFloat(a.timeout),w=parseFloat(a.maxwidth),g=a.namespace,d=g+C,F=g+"_nav "+d+"_nav",x=g+"_here",k=d+"_on",
y=d+"_s",l=c("<ul class='"+g+"_tabs "+d+"_tabs' />"),z={"float":"left",position:"relative",opacity:1,zIndex:2},A={"float":"none",position:"absolute",opacity:0,zIndex:1},G=function(){var b=(document.body||document.documentElement).style,a="transition";if("string"===typeof b[a])return!0;u=["Moz","Webkit","Khtml","O","ms"];var a=a.charAt(0).toUpperCase()+a.substr(1),c;for(c=0;c<u.length;c++)if("string"===typeof b[u[c]+a])return!0;return!1}(),B=function(b){a.before(b);G?(e.removeClass(k).css(A).eq(b).addClass(k).css(z),
p=b,setTimeout(function(){a.after(b)},h)):e.stop().fadeOut(h,function(){c(this).removeClass(k).css(A).css("opacity",1)}).eq(b).fadeIn(h,function(){c(this).addClass(k).css(z);a.after(b);p=b})};a.random&&(e.sort(function(){return Math.round(Math.random())-.5}),f.empty().append(e));e.each(function(a){this.id=y+a});f.addClass(g+" "+d);m&&m.maxwidth&&f.css("max-width",w);e.hide().css(A).eq(0).addClass(k).css(z).show();G&&e.show().css({"-webkit-transition":"opacity "+h+"ms ease-in-out","-moz-transition":"opacity "+
h+"ms ease-in-out","-o-transition":"opacity "+h+"ms ease-in-out",transition:"opacity "+h+"ms ease-in-out"});if(1<e.length){if(E<h+100)return;if(a.pager&&!a.manualControls){var H=[];e.each(function(a){a+=1;H+="<li><a href='#' class='"+y+a+"'>"+a+"</a></li>"});l.append(H);m.navContainer?c(a.navContainer).append(l):f.after(l)}a.manualControls&&(l=c(a.manualControls),l.addClass(g+"_tabs "+d+"_tabs"));(a.pager||a.manualControls)&&l.find("li").each(function(a){c(this).addClass(y+(a+1))});if(a.pager||a.manualControls)r=
l.find("a"),t=function(a){r.closest("li").removeClass(x).eq(a).addClass(x)};a.auto&&(v=function(){q=setInterval(function(){e.stop(!0,!0);var b=p+1<D?p+1:0;(a.pager||a.manualControls)&&t(b);B(b)},E)},v());n=function(){a.auto&&(clearInterval(q),v())};a.pause&&f.hover(function(){clearInterval(q)},function(){n()});if(a.pager||a.manualControls)r.bind("click",function(b){b.preventDefault();a.pauseControls||n();b=r.index(this);p===b||c("."+k).queue("fx").length||(t(b),B(b))}).eq(0).closest("li").addClass(x),
a.pauseControls&&r.hover(function(){clearInterval(q)},function(){n()});if(a.nav){g="<a href='#' class='"+F+" prev'>"+a.prevText+"</a><a href='#' class='"+F+" next'>"+a.nextText+"</a>";m.navContainer?c(a.navContainer).append(g):f.after(g);var d=c("."+d+"_nav"),I=d.filter(".prev");d.bind("click",function(b){b.preventDefault();b=c("."+k);if(!b.queue("fx").length){var d=e.index(b);b=d-1;d=d+1<D?p+1:0;B(c(this)[0]===I[0]?b:d);(a.pager||a.manualControls)&&t(c(this)[0]===I[0]?b:d);a.pauseControls||n()}});
a.pauseControls&&d.hover(function(){clearInterval(q)},function(){n()})}}if("undefined"===typeof document.body.style.maxWidth&&m.maxwidth){var J=function(){f.css("width","100%");f.width()>w&&f.css("width",w)};J();c(K).bind("resize",function(){J()})}})}})(jQuery,this,0);

View File

@ -0,0 +1,22 @@
/**
* This file is part of Zwii.
*
* For full copyright and license information, please see the LICENSE
* file that was distributed with this source code.
*
* @author Rémi Jean <remi.jean@outlook.com>
* @copyright Copyright (C) 2008-2018, Rémi Jean
* @author Frédéric Tempez <frederic.tempez@outlook.com>
* @copyright Copyright (C) 2018-2023, Frédéric Tempez
* @license CC Attribution-NonCommercial-NoDerivatives 4.0 International
* @link http://zwiicms.fr/
*/
/** NE PAS EFFACER
* admin.css
*/
.galleryConfigError {
color: #F3674A;
font-weight: bold;
}

View File

@ -0,0 +1,54 @@
<?php echo template::formOpen('galleryConfigForm'); ?>
<div class="row">
<div class="col1">
<?php echo template::button('galleryConfigBack', [
'class' => 'buttonGrey',
'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(0),
'value' => template::ico('left')
]); ?>
</div>
<div class="col1 offset7">
<?php echo template::button('galleryConfigTheme', [
'href' => helper::baseUrl() . $this->getUrl(0) . '/theme',
'value' => template::ico('brush')
]); ?>
</div>
<div class="col1">
<?php echo template::button('galleryConfigUpdate', [
'href' => helper::baseUrl() . $this->getUrl(0) . '/update',
'value' => template::ico('folder')
]); ?>
</div>
<div class="col2">
<?php echo template::submit('galleryConfigSubmit'); ?>
</div>
</div>
<div class="row">
<div class="col12">
<div class="block">
<h4>Galerie
<?php
echo $this->getData(['module', $this->getUrl(0), 'directory']);
?>
</h4>
<div class="row">
<div class="col12">
</div>
</div>
<div class="row">
<div class="col12">
<?php if ($module::$pictures): ?>
<?php echo template::table([3, 4, 4, 1], $module::$pictures, ['Image', 'Texte alternatif', 'Hyperlien vers une page', '']); ?>
<?php else: ?>
<?php echo template::speech('Aucune image dans ce dossier'); ?>
<?php endif; ?>
</div>
</div>
</div>
</div>
</div>
<?php echo template::formClose(); ?>
<div class="moduleVersion">Module Slider version
<?php echo $module::VERSION; ?>
</div>

Binary file not shown.

After

Width:  |  Height:  |  Size: 359 B

View File

@ -0,0 +1,236 @@
/**
* This file is part of Zwii.
*
* For full copyright and license information, please see the LICENSE
* file that was distributed with this source code.
*
* @author Rémi Jean <remi.jean@outlook.com>
* @copyright Copyright (C) 2008-2018, Rémi Jean
* @author Frédéric Tempez <frederic.tempez@outlook.com>
* @copyright Copyright (C) 2018-2023, Frédéric Tempez
* @license CC Attribution-NonCommercial-NoDerivatives 4.0 International
* @link http://zwiicms.fr/
*/
/*! http://responsiveslides.com v1.55 by @arielsalminen */
.rslides {
position: relative;
list-style: none;
overflow: hidden;
width: 100%;
padding: 0;
margin: 0 auto;
}
.rslides li {
-webkit-backface-visibility: hidden;
position: absolute;
display: none;
width: 100%;
left: 0;
top: 0;
}
.rslides li:first-child {
position: relative;
display: block;
float: left;
}
.rslides img {
display: block;
height: auto;
float: left;
width: 100%;
border: 0;
}
#wrapper {
margin: 0 auto;
width: 100%;
margin-bottom: 50px;
}
h1 {
font: 600 28px/36px sans-serif;
margin: 50px 0;
}
h3 {
font: 600 18px/24px sans-serif;
color: #999;
margin: 0 0 20px;
}
a {
color: #222;
}
.rslides {
margin: 0 auto;
}
.rslides_container {
margin-bottom: 50px;
position: relative;
float: left;
width: 100%;
}
.centered-btns_nav {
z-index: 3;
position: absolute;
-webkit-tap-highlight-color: rgba(0,0,0,0);
top: 50%;
left: 0;
opacity: 0.7;
text-indent: -9999px;
overflow: hidden;
text-decoration: none;
height: 61px;
width: 38px;
background: transparent url("module/slider/view/index/black.gif") no-repeat left top;
margin-top: -45px;
}
.centered-btns_nav:active {
opacity: 1.0;
}
.centered-btns_nav.next {
left: auto;
background-position: right top;
right: 0;
}
.transparent-btns_nav {
z-index: 3;
position: absolute;
-webkit-tap-highlight-color: rgba(0,0,0,0);
top: 0;
left: 0;
display: block;
background: #fff; /* Fix for IE6-9 */
opacity: 0;
filter: alpha(opacity=1);
width: 48%;
text-indent: -9999px;
overflow: hidden;
height: 91%;
}
.transparent-btns_nav.next {
left: auto;
right: 0;
}
.large-btns_nav {
z-index: 3;
position: absolute;
-webkit-tap-highlight-color: rgba(0,0,0,0);
opacity: 0.6;
text-indent: -9999px;
overflow: hidden;
top: 0;
bottom: 0;
left: 0;
background: #000 url("module/slider/view/index/black.gif") no-repeat left 50%;
width: 38px;
}
.large-btns_nav:active {
opacity: 1.0;
}
.large-btns_nav.next {
left: auto;
background-position: right 50%;
right: 0;
}
/**
Boutons blancs
*/
.white-btns_nav {
z-index: 3;
position: absolute;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
opacity: 0.6;
text-indent: -9999px;
overflow: hidden;
top: 0;
bottom: 0;
left: 0;
background: transparent url("module/slider/view/index/white.gif") no-repeat left 50%;
width: 38px;
}
.white-btns_nav:active {
opacity: 1.0;
}
.white-btns_nav.next {
left: auto;
background-position: right 50%;
right: 0;
}
/**
Boutons blancs
*/
.centered-btns_nav:focus,
.transparent-btns_nav:focus,
.large-btns_nav:focus,
.white-btns_nav:focus {
outline: none;
}
.centered-btns_tabs,
.transparent-btns_tabs,
.large-btns_tabs,
.white-btns_tabs {
margin-top: 10px;
text-align: center;
}
.centered-btns_tabs li,
.transparent-btns_tabs li,
.large-btns_tabs li,
.white-btns_tabs li {
display: inline;
float: none;
_float: left;
*float: left;
margin-right: 5px;
}
.centered-btns_tabs a,
.transparent-btns_tabs a,
.large-btns_tabs a,
.white-btns_tabs a {
text-indent: -9999px;
overflow: hidden;
-webkit-border-radius: 15px;
-moz-border-radius: 15px;
border-radius: 15px;
background: #ccc;
background: rgba(0, 0, 0, .2);
display: inline-block;
_display: block;
*display: block;
-webkit-box-shadow: inset 0 0 2px 0 rgba(0, 0, 0, .3);
-moz-box-shadow: inset 0 0 2px 0 rgba(0, 0, 0, .3);
box-shadow: inset 0 0 2px 0 rgba(0, 0, 0, .3);
width: 9px;
height: 9px;
}
.centered-btns_here a,
.transparent-btns_here a,
.large-btns_here a,
.white-btns_here a {
background: #222;
background: rgba(0,0,0, .8);
}

View File

@ -0,0 +1,61 @@
/**
* This file is part of Zwii.
*
* For full copyright and license information, please see the LICENSE
* file that was distributed with this source code.
*
* @author Rémi Jean <remi.jean@outlook.com>
* @copyright Copyright (C) 2008-2018, Rémi Jean
* @author Frédéric Tempez <frederic.tempez@outlook.com>
* @copyright Copyright (C) 2018-2023, Frédéric Tempez
* @license CC Attribution-NonCommercial-NoDerivatives 4.0 International
* @link http://zwiicms.fr/
*/
/**
*
auto: true, // Boolean: Animate automatically, true or false
speed: 500, // Integer: Speed of the transition, in milliseconds
timeout: 4000, // Integer: Time between slide transitions, in milliseconds
pager: false, // Boolean: Show pager, true or false
nav: false, // Boolean: Show navigation, true or false
random: false, // Boolean: Randomize the order of the slides, true or false
pause: false, // Boolean: Pause on hover, true or false
pauseControls: true, // Boolean: Pause when hovering controls, true or false
prevText: "Previous", // String: Text for the "previous" button
nextText: "Next", // String: Text for the "next" button
maxwidth: "", // Integer: Max-width of the slideshow, in pixels
navContainer: "", // Selector: Where controls should be appended to, default is after the 'ul'
manualControls: "", // Selector: Declare custom pager navigation
namespace: "rslides", // String: Change the default namespace used
before: function(){}, // Function: Before callback
after: function(){} // Function: After callback
*/
$(document).ready(function() {
var maxWidth = "<?php echo $this->getData(['module', $this->getUrl(0),'theme', 'maxWidth']); ?>";
var sort = "<?php echo $this->getData(['module', $this->getUrl(0),'theme', 'sort']); ?>";
// Réduction de la taille maximale selon la largeur de la section
var screenSize = $("section").width() - 40;
maxWidth = maxWidth < screenSize ? maxWidth : screenSize;
$("#wrapper").css('width', maxWidth);
$(function() {
$("#sliders").responsiveSlides({
pager: "<?php echo (bool)$this->getData(['module', $this->getUrl(0), 'theme', 'pager']); ?>",
auto: "<?php echo (bool)$this->getData(['module', $this->getUrl(0), 'theme', 'auto']); ?>",
maxwidth: maxWidth,
speed: "<?php echo $this->getData(['module', $this->getUrl(0), 'theme', 'speed']); ?>",
timeout: "<?php echo $this->getData(['module', $this->getUrl(0), 'theme', 'timeout']); ?>",
namespace: "<?php echo $this->getData(['module', $this->getUrl(0), 'theme', 'namespace']); ?>",
nav: true,
random: sort == "random" ? true : false,
});
});
});

View File

@ -0,0 +1,26 @@
<?php if ($module::$pictures): ?>
<div id="wrapper">
<div class="rslides_container">
<ul class="rslides" id="sliders">
<!--id="<?php echo $this->getData(['module', $this->getUrl(0), 'config', 'boutonsVisibles']); ?>"> -->
<?php foreach ($module::$pictures as $picture => $options): ?>
<?php if (!empty($options['uri'])): ?>
<a href="<?php echo helper::baseUrl() . $options['uri']; ?>">
<?php endif; ?>
<li>
<img src="<?php echo helper::baseUrl(false) . $picture; ?>" alt="<?php echo $options['legend']; ?>">
</li>
<?php if (!empty($options['uri'])): ?>
</a>
<?php endif; ?>
<?php endforeach; ?>
</ul>
</div>
</div>
</div>
<?php else: ?>
<?php echo template::speech('Aucune image dans le dossier sélectionné.'); ?>
<?php endif; ?>
<div id="div1">
</div>
<!--Pour liaison entre variables php et javascript-->

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -0,0 +1,17 @@
/**
* This file is part of Zwii.
*
* For full copyright and license information, please see the LICENSE
* file that was distributed with this source code.
*
* @author Rémi Jean <remi.jean@outlook.com>
* @copyright Copyright (C) 2008-2018, Rémi Jean
* @author Frédéric Tempez <frederic.tempez@outlook.com>
* @copyright Copyright (C) 2018-2023, Frédéric Tempez
* @license CC Attribution-NonCommercial-NoDerivatives 4.0 International
* @link http://zwiicms.fr/
*/
/** NE PAS EFFACER
* admin.css
*/

View File

@ -0,0 +1,51 @@
/**
* This file is part of Zwii.
*
* For full copyright and license information, please see the LICENSE
* file that was distributed with this source code.
*
* @author Rémi Jean <remi.jean@outlook.com>
* @copyright Copyright (C) 2008-2018, Rémi Jean
* @license GNU General Public License, version 3
* @link http://zwiicms.com/
*/
/**
* Liste des dossiers
*/
var oldResult = [];
var directoryDOM = $("#galleryEditDirectory");
var directoryOldDOM = $("#galleryEditDirectoryOld");
function dirs() {
$.ajax({
type: "POST",
url: "<?php echo helper::baseUrl() . $this->getUrl(0); ?>/dirs",
success: function(result) {
if($(result).not(oldResult).length !== 0 || $(oldResult).not(result).length !== 0) {
directoryDOM.empty();
for(var i = 0; i < result.length; i++) {
directoryDOM.append(function(i) {
var option = $("<option>").val(result[i]).text(result[i]);
if(directoryOldDOM.val() === result[i]) {
option.prop("selected", true);
}
return option;
}(i))
}
oldResult = result;
}
}
});
}
dirs();
// Actualise la liste des dossiers toutes les trois secondes
setInterval(function() {
dirs();
}, 3000);
/**
* Stock le dossier choisi pour le re-sélectionner en cas d'actualisation ajax de la liste des dossiers
*/
directoryDOM.on("change", function() {
directoryOldDOM.val($(this).val());
});

View File

@ -0,0 +1,78 @@
<?php echo template::formOpen('sliderThemeForm'); ?>
<div class="row">
<div class="col1">
<?php echo template::button('sliderThemeBack', [
'class' => 'buttonGrey',
'href' => helper::baseUrl() . $this->getUrl(0) . '/config',
'value' => template::ico('left')
]); ?>
</div>
<div class="col2 offset9">
<?php echo template::submit('sliderThemeSubmit'); ?>
</div>
</div>
<div class="row">
<div class="col12">
<div class="block">
<h4>Paramètres</h4>
<div class="row">
<div class="col3">
<?php echo template::select('sliderThememaxWidth', $module::$screenWidth, [
'label' => 'Largeur',
'selected' => $module::$selectedMaxwidth,
]); ?>
</div>
<div class="col3">
<?php echo template::select('sliderThemeAuto', $module::$auto, [
'label' => 'Automatisation',
'selected' => $this->getData(['module', $this->getUrl(0), 'theme', 'auto']),
]); ?>
</div>
<div class="col3">
<?php echo template::select('sliderThemeDiapoTime', $module::$timeout, [
'label' => 'Image fixe',
'selected' => $this->getData(['module', $this->getUrl(0), 'theme', 'timeout'])
]); ?>
</div>
<div class="col3">
<?php echo template::select('sliderThemespeed', $module::$speed, [
'label' => 'Transition ',
'help' => 'Cette durée doit être inférieure au temps fixe',
'selected' => $this->getData(['module', $this->getUrl(0), 'theme', 'speed'])
]); ?>
</div>
</div>
<div class="row">
</div>
</div>
</div>
</div>
<div class="row">
<div class="col12">
<div class="block">
<h4>Navigation</h4>
<div class="row">
<div class="col4">
<?php echo template::select('sliderThemeTri', $module::$sort, [
'label' => 'Tri des images',
'selected' => $this->getData(['module', $this->getUrl(0), 'theme', 'sort'])
]); ?>
</div>
<div class="col4">
<?php echo template::select('sliderThemePager', $module::$pager, [
'label' => 'Puces horizontales',
'selected' => $this->getData(['module', $this->getUrl(0), 'theme', 'pager']),
]); ?>
</div>
<div class="col4">
<?php echo template::select('sliderThemeNameSpace', $module::$namespace, [
'label' => 'Boutons latéraux',
'selected' => $this->getData(['module', $this->getUrl(0), 'theme', 'namespace'])
]); ?>
</div>
</div>
</div>
</div>
</div>
<?php echo template::formClose(); ?>

View File

@ -0,0 +1,22 @@
/**
* This file is part of Zwii.
*
* For full copyright and license information, please see the LICENSE
* file that was distributed with this source code.
*
* @author Rémi Jean <remi.jean@outlook.com>
* @copyright Copyright (C) 2008-2018, Rémi Jean
* @author Frédéric Tempez <frederic.tempez@outlook.com>
* @copyright Copyright (C) 2018-2023, Frédéric Tempez
* @license CC Attribution-NonCommercial-NoDerivatives 4.0 International
* @link http://zwiicms.fr/
*/
/** NE PAS EFFACER
* admin.css
*/
.galleryConfigError {
color: #F3674A;
font-weight: bold;
}

View File

@ -0,0 +1,52 @@
/**
* This file is part of Zwii.
*
* For full copyright and license information, please see the LICENSE
* file that was distributed with this source code.
*
* @author Rémi Jean <remi.jean@outlook.com>
* @copyright Copyright (C) 2008-2018, Rémi Jean
* @license GNU General Public License, version 3
* @link http://zwiicms.com/
*/
/**
* Liste des dossiers
*/
var oldResult = [];
var directoryDOM = $("#galleryUpdateDirectory");
var directoryOldDOM = $("#galleryUpdateDirectoryOld");
function dirs() {
$.ajax({
type: "POST",
url: "<?php echo helper::baseUrl() . $this->getUrl(0); ?>/dirs",
success: function(result) {
if($(result).not(oldResult).length !== 0 || $(oldResult).not(result).length !== 0) {
directoryDOM.empty();
for(var i = 0; i < result.length; i++) {
directoryDOM.append(function(i) {
var option = $("<option>").val(result[i]).text(result[i]);
if(directoryOldDOM.val() === result[i]) {
option.prop("selected", true);
}
return option;
}(i))
}
oldResult = result;
}
}
});
}
dirs();
// Actualise la liste des dossiers toutes les trois secondes
setInterval(function() {
dirs();
}, 3000);
/**
* Stock le dossier choisi pour le re-sélectionner en cas d'actualisation ajax de la liste des dossiers
*/
directoryDOM.on("change", function() {
directoryOldDOM.val($(this).val());
});

View File

@ -0,0 +1,36 @@
<?php echo template::formOpen('galleryUpdateForm'); ?>
<div class="row">
<div class="col1">
<?php echo template::button('galleryUpdateBack', [
'class' => 'buttonGrey',
'href' => helper::baseUrl() . $this->getUrl(0) . '/config',
'value' => template::ico('left')
]); ?>
</div>
<div class="col2 offset9">
<?php echo template::submit('galleryUpdateSubmit'); ?>
</div>
</div>
<div class="row">
<div class="col12">
<div class="block">
<h4>Dossier de la galerie</h4>
<div class="row">
<div class="col12">
<?php echo template::hidden('galleryUpdateDirectoryOld', [
'noDirty' => true, // Désactivé à cause des modifications en ajax
]); ?>
<?php echo template::select('galleryUpdateDirectory', [], [
'label' => 'Dossier cible',
'noDirty' => true, // Désactivé à cause des modifications en ajax,
]); ?>
</div>
</div>
</div>
</div>
</div>
<?php echo template::formClose(); ?>
<div class="moduleVersion">Module Slider version
<?php echo $module::VERSION; ?>
</div>