Aller au contenu
Support de Zwii et Yocto
micka260

La galerie photo

Messages recommandés

Merci beaucoup @simon511000 j'ai trouvé la réponse suivante :

 

Le 30/11/2017 à 08:54, MAllus a dit :

Il fallait en effet chercher dans le module gallery :)

Il suffit de rajouter une ligne dans le fichier gallery/gallery.php

 

Remplacer :


<?php $picturesNb = count($module::$pictures); ?>
<?php foreach($module::$pictures as $picture => $legend): ?>

Par :


<?php $picturesNb = count($module::$pictures); ?>
<?php ksort($module::$pictures); ?>
<?php foreach($module::$pictures as $picture => $legend): ?>

 

Pour faire un tri inverse, vous pouvez remplacer ksort par krsort

 

Je voulais également intégrer cette modification de Peter :

Le 02/12/2017 à 08:58, PeterRabbit a dit :

Une petite amélioration du module "Gallery" pour éviter l'affichage d'un bandeau vide — pas forcément inesthétique au demeurant — si aucune légende n'est renseignée :

 

blob.png.1cd6117a5fac94c9509b8369c57d582b.png

 

Remplacez la ligne 25 de "module/gallery/view/gallery/gallery.php" — ça va pour le chemin, @Roger nounours ? xD


<div class="galleryGalleryName"><?php echo $legend; ?></div>

par ces trois lignes .


<?php if ($legend !=""): ?>
<div class="galleryGalleryName"><?php echo $legend; ?></div>
<?php endif; ?>

Le bandeau ne s'affichera plus que s'il y a une légende :

blob.png.aa70ef4449c725ec91835f05eb92f1aa.png

 

Le problème c'est que lorsque j'ouvre mon fichier :

/module/gallery/gallery.php je n'ai pas ces informations ... voici son contenue :

 

<?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-2017, Rémi Jean
 * @license GNU General Public License, version 3
 * @link http://zwiicms.com/
 */

class gallery extends common {

	public static $actions = [
		'config' => self::GROUP_MODERATOR,
		'delete' => self::GROUP_MODERATOR,
		'dirs' => self::GROUP_MODERATOR,
		'edit' => self::GROUP_MODERATOR,
		'index' => self::GROUP_VISITOR
	];

	public static $directories = [];

	public static $firstPictures = [];

	public static $galleries = [];

	public static $pictures = [];

	/**
	 * Configuration
	 */
	public function config() {
		// Liste des galeries
		$galleries = $this->getData(['module', $this->getUrl(0)]);
		if($galleries) {
			ksort($galleries);
			foreach($galleries as $galleryId => $gallery) {
				// Erreur dossier vide
				if(is_dir($gallery['config']['directory'])) {
					if(count(scandir($gallery['config']['directory'])) === 2) {
						$gallery['config']['directory'] = '<span class="galleryConfigError">' . $gallery['config']['directory'] . ' (' . helper::translate('dossier vide') . ')</span>';
					}
				}
				// Erreur dossier supprimé
				else {
					$gallery['config']['directory'] = '<span class="galleryConfigError">' . $gallery['config']['directory'] . ' (' . helper::translate('dossier introuvable') . ')</span>';
				}
				// Met en forme le tableau
				self::$galleries[] = [
					$gallery['config']['name'],
					$gallery['config']['directory'],
					template::button('galleryConfigEdit' . $galleryId, [
						'href' => helper::baseUrl() . $this->getUrl(0) . '/edit/' . $galleryId,
						'value' => template::ico('pencil')
					]),
					template::button('galleryConfigDelete' . $galleryId, [
						'class' => 'galleryConfigDelete buttonRed',
						'href' => helper::baseUrl() . $this->getUrl(0) . '/delete/' . $galleryId,
						'value' => template::ico('cancel')
					])
				];
			}
		}
		// Soumission du formulaire
		if($this->isPost()) {
			$galleryId = helper::increment($this->getInput('galleryConfigName', helper::FILTER_ID, true), (array) $this->getData(['module', $this->getUrl(0)]));
			$this->setData(['module', $this->getUrl(0), $galleryId, [
				'config' => [
					'name' => $this->getInput('galleryConfigName'),
					'directory' => $this->getInput('galleryConfigDirectory', helper::FILTER_STRING_SHORT, true)
				],
				'legend' => []
			]]);
			// Valeurs en sortie
			$this->addOutput([
				'redirect' => helper::baseUrl() . $this->getUrl(),
				'notification' => 'Modifications enregistrées',
				'state' => true
			]);
		}
		// Valeurs en sortie
		$this->addOutput([
			'title' => 'Configuration du module',
			'view' => 'config'
		]);
	}

	/**
	 * Suppression
	 */
	public function delete() {
		// La galerie n'existe pas
		if($this->getData(['module', $this->getUrl(0), $this->getUrl(2)]) === null) {
			// Valeurs en sortie
			$this->addOutput([
				'access' => false
			]);
		}
		// 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' => galleriesHelper::scanDir('site/file/source')
		]);
	}

	/**
	 * Édition
	 */
	public function edit() {
		// La galerie n'existe pas
		if($this->getData(['module', $this->getUrl(0), $this->getUrl(2)]) === null) {
			// Valeurs en sortie
			$this->addOutput([
				'access' => false
			]);
		}
		// La galerie existe
		else {
			// Soumission du formulaire
			if($this->isPost()) {
				// Si l'id a changée
				$galleryId = $this->getInput('galleryEditName', helper::FILTER_ID, true);
				if($galleryId !== $this->getUrl(2)) {
					// Incrémente la nouvelle id de la gallery pour éviter les doublons
					$galleryId = helper::increment($galleryId, $this->getData(['module', $this->getUrl(0)]));
					// Supprime l'ancienne galerie
					$this->deleteData(['module', $this->getUrl(0), $this->getUrl(2)]);
				}
				$legends = [];
				foreach((array) $this->getInput('legend', null) as $file => $legend) {
					$legends[$file] = helper::filter($legend, helper::FILTER_STRING_SHORT);
				}

				$this->setData(['module', $this->getUrl(0), $galleryId, [
					'config' => [
						'name' => $this->getInput('galleryEditName', helper::FILTER_STRING_SHORT, true),
						'directory' => $this->getInput('galleryEditDirectory', helper::FILTER_STRING_SHORT, true)
					],
					'legend' => $legends
				]]);
				// Valeurs en sortie
				$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), $this->getUrl(2), 'config', 'directory']);
			if(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(),
							template::text('legend[' . $fileInfos->getFilename() . ']', [
								'value' => $this->getData(['module', $this->getUrl(0), $this->getUrl(2), 'legend', $fileInfos->getFilename()])
							])
						];
					}
				}
			}
			// Valeurs en sortie
			$this->addOutput([
				'title' => $this->getData(['module', $this->getUrl(0), $this->getUrl(2), 'config', 'name']),
				'view' => 'edit'
			]);
		}
	}

	/**
	 * Accueil (deux affichages en un pour éviter une url à rallonge)
	 */
	public function index() {
		// Images d'une galerie
		if($this->getUrl(1)) {
			// La galerie n'existe pas
			if($this->getData(['module', $this->getUrl(0), $this->getUrl(1)]) === null) {
				// Valeurs en sortie
				$this->addOutput([
					'access' => false
				]);
			}
			// La galerie existe
			else {
				// Images de la galerie
				$directory = $this->getData(['module', $this->getUrl(0), $this->getUrl(1), 'config', 'directory']);
				if(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()] = $this->getData(['module', $this->getUrl(0), $this->getUrl(1), 'legend', $fileInfos->getFilename()]);
						}
					}
				}
				// Affichage du template
				if(self::$pictures) {
					// Valeurs en sortie
					$this->addOutput([
						'editButton' => true,
						'title' => $this->getData(['module', $this->getUrl(0), $this->getUrl(1), 'config', 'name']),
						'vendor' => [
							'simplelightbox'
						],
						'view' => 'gallery'
					]);
				}
				// Pas d'image dans la galerie
				else {
					// Valeurs en sortie
					$this->addOutput([
						'access' => false
					]);
				}
			}

		}
		// Liste des galeries
		else {
			foreach((array) $this->getData(['module', $this->getUrl(0)]) as $galleryId => $gallery) {
				if(is_dir($gallery['config']['directory'])) {
					$iterator = new DirectoryIterator($gallery['config']['directory']);
					foreach($iterator as $fileInfos) {
						if($fileInfos->isDot() === false AND $fileInfos->isFile() AND @getimagesize($fileInfos->getPathname())) {
							self::$galleries[$galleryId] = $gallery;
							self::$firstPictures[$galleryId] = $gallery['config']['directory'] . '/' . $fileInfos->getFilename();
							continue(2);
						}
					}

				}
			}
			// Valeurs en sortie
			$this->addOutput([
				'editButton' => true,
				'pageContent' => true,
				'view' => 'index'
			]);
		}
	}

}

class galleriesHelper extends helper {

	/**
	 * Scan le contenu d'un dossier et de ses sous-dossiers
	 * @param string $dir Dossier à scanner
	 * @return array
	 */
	public static function scanDir($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, self::scanDir($dir . '/' . $fileInfos->getBasename()));
			}
		}
		return $dirContent;
	}

}

 

 

Merci :)

  • J'aime 1

Partager ce message


Lien à poster
Partager sur d’autres sites
Invité simon511000
Il y a 2 heures, micka260 a dit :

Le problème c'est que lorsque j'ouvre mon fichier :

/module/gallery/gallery.php je n'ai pas ces informations ... voici son contenue :

Il faut que tu ouvre le fichier /module/gallery/view/gallery/gallery.php ^^

 

Partager ce message


Lien à poster
Partager sur d’autres sites
Invité
il y a 3 minutes, simon511000 a dit :

Il faut que tu ouvre le fichier /module/gallery/view/gallery/gallery.php

 

Bien relevé Simon l'erreur de chemin qu'à suivi Mickael pour chercher les fameuses lignes dans le fichier à modifier :)

 

Ne reste plus à micka que de reprendre cette information importante pour aller modifier les fameuses lignes de codes en question. 

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a 6 minutes, simon511000 a dit :

Il faut que tu ouvre le fichier /module/gallery/view/gallery/gallery.php ^^

 

 

Merci Simon, je fais les modifications, et je l'upload ici pour les futurs qui chercherons la solution au problème ;)

 

Partager ce message


Lien à poster
Partager sur d’autres sites
Invité

Tu vois Mickael pourquoi il est important de bien lire les chemins vers les fichiers dans un tuto d'explication, et heureusement que Simon était dans le coin pour te répondre au plus tôt :)

Partager ce message


Lien à poster
Partager sur d’autres sites
à l’instant, Roger nounours a dit :

Tu vois Mickael pourquoi il est important de bien lire les chemins vers les fichiers dans un tuto d'explication, et heureusement que Simon était dans le coin pour te répondre au plus tôt :)

 

Oui j'ai voulu aller trop vite ...

Partager ce message


Lien à poster
Partager sur d’autres sites
Le 05/02/2018 à 23:51, Rémi a dit :

Pour info pour la légende il suffit juste de faire <?php if($legend): ?>, le != '' n'est pas nécessaire, je vais corriger le problème ;).

 

Bonsoir Rémi , j 'ai installé la derniere version , mais je ne vois pas ce correctif , est il prévu dans la prochaine version ?

Salutations

Bruno

Modifié par omega

Partager ce message


Lien à poster
Partager sur d’autres sites
Invité
il y a 47 minutes, Rémi a dit :

Ah bon, je l'ai intégré normalement, tu as encore des barres vides quand tu n'as pas de légende ?

 

il est parfaitement intégré dans la dernière version en ligne ici : /module/gallery/view/gallery/gallery.php

 

Citation

        <div class="col3">
            <a
                href="<?php echo helper::baseUrl(false) . $picture; ?>"
                class="galleryGalleryPicture"
                style="background-image:url('<?php echo helper::baseUrl(false) . $picture; ?>')"
                data-caption="<?php echo $legend; ?>"
            >
                <div class="galleryGalleryName"><?php echo $legend; ?></div>
            </a>
        </div>

 

@omega

regardes ton n° de version utilisé pour ton cms et juste suis le chemin indiqué vers le fichier en question :)

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonsoir Remi Je confirme

 

je suis bien en version 8.2.5 et j 'ai bien le code ci dessous dans gallery.php

 

<div class="col3">
            <a
                href="<?php echo helper::baseUrl(false) . $picture; ?>"
                class="galleryGalleryPicture"
                style="background-image:url('<?php echo helper::baseUrl(false) . $picture; ?>')"
                data-caption="<?php echo $legend; ?>

 

 

Modifié par omega

Partager ce message


Lien à poster
Partager sur d’autres sites
Invité
il y a 14 minutes, Rémi a dit :

Bon effectivement le bug est toujours présent en 8.2.5, je me le suis noté pour la roadmap de la 8.2.6.

 ce n'était pas vraiment un bug, juste faire disparaître avec l'astuce de PeterRabbit le petit bandeau de couleur au cas ou une image n'aurait pas eu de légende, cette astuce vous donnera l'occasion provisoire de la supprimer au besoin :

le code css qui donne la couleur de ce petit bandeau:

Citation

.galleryGalleryName {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    padding: 10px;
    background: rgba(0, 0, 0, .6); <======= là c'est la couleur de la tite bande pour la légende des images
    color: #FFF;
    text-align: center;
}

vous pouvez le faire disparaître simplement avec le css perso joint au version de zwii et me en profiter pour mettre des légende avec une couleur personnalisée...

 

Je pense que l'auteur du site le reconnaîtra, en live ce que l'on peut obtenir ( soit en supprimant definitivement ) soit en se servant du css person fourni avec le zwii

( totalement transparent :background: rgba(0, 0, 0, 0); )

tra.thumb.png.d2d81414fa5de6b90503bbe56bbd26e7.png

 

 

en rouge hihihi pour le fun visuel...

tra1.thumb.png.fa810b96ff26e2526271a318e3768cae.png

 

et pour coller avec la couleur de fond du site ( si bien entendu il y avait eu une légende à afficher )

tra2.thumb.png.054b85fc62b4f6f082cb1275382b7180.png

Partager ce message


Lien à poster
Partager sur d’autres sites

@Roger nounours yes mais le pb avec ta solution c'est que si certaines images ont des légendes alors elles disparaissent elles aussi. En réalité c'est réellement un bug que je pensais avoir corrigé :/, dans module/gallery/view/gallery/gallery.php il faut remplacer :

 

<div class="galleryGalleryName"><?php echo $legend; ?></div>

 

par :

 

<?php if($legend): ?>
  <div class="galleryGalleryName"><?php echo $legend; ?></div>
<?php endif; ?>

 

EDIT : Ah je viens de voir le "cette astuce vous donnera l'occasion provisoire de la supprimer au besoin", autant pour moi alors !

  • Merci 1

Partager ce message


Lien à poster
Partager sur d’autres sites
Invité
il y a une heure, Rémi a dit :

@Roger nounours yes mais le pb avec ta solution c'est que si certaines images ont des légendes alors elles disparaissent elles aussi.

 hihihihi tu as tout faux, sur la fameuse 8.2.5 explique moi alors ceci :

Et avec en prime, ma galerie en utilisant le css perso les images y sont en plus responsives...et j'ai les titres de chaque image affichées là où je le veux ( car c'est moche un titre sur une image surtout si cette image c'est le portrait de brigitte bardo ) 

 

tra5.png.18385bf3fef8ffe31e4f74abdca5cba3.png

 

Tout est personnalisable avec les bons outils et surtout cet excellent css perso que tu a intégré dans le zwii pour nous faciliter un peu plus la tache

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites
à l’instant, Roger nounours a dit :

 hihihihi tu as tout faux, sur la fameuse 8.2.5 explique moi alors ceci :

Et avec en prime, ma galerie en utilisant le css perso les images y sont en plus responsives...et j'ai les titres de chaque image affichées là où je le veux ( car c'est moche un titre sur une image surtout si cette image c'est le portrait de brigitte bardo ) 

 

tra5.png.18385bf3fef8ffe31e4f74abdca5cba3.png

 

Tout est personnalisable avec les bons outils et surtout cet excellent css perso que tu a intégré dans le zwii pour nous faciliter un peu plus la tache

 

 

 

Oh c'est moche :joy:

Partager ce message


Lien à poster
Partager sur d’autres sites
Invité
il y a 1 minute, Rémi a dit :

 

Oh c'est moche :joy:

 mais non pleure pas je t'adore, c'est vrai que si les utilisateurs du cms utilisaient tout les outils que tu as mis dispos dans le zwii et bien me s'ils manquait une fonction pas intégrée, ils leur est facile en attendant d'y remédier grâce à ton fameux fichier perso css qui aide beaucoup pour le faire.

 

Et crois moi, rien qu'avec ta version officielle et si on se sert des réglages avancés dans la config du zwii, on peut exactement arriver aux me résultat qu'avec une Ultimate

Rémy, tu as fais un boulot formidable en pas deux mois et Zwii un sacré bond en avant tu sais :)

 

Et je fayote pas nan!!!!

Partager ce message


Lien à poster
Partager sur d’autres sites
Invité

@omega et encore, tu n'as fait qu'appliquer mes conseils, tu verras le jour ou tu fera " joujou " avec l'une de mes versions spéciale développée pour chaque version nouvelle d'un zwii, là c'est un vrai régal car là ce sont les modules du zwii qui sont améliorés en tenant compte de comment Rémi à recoder le cœur de son cms car des codes qui fonctionnent dans une version ne peuvent pas forcément fonctionner dans l'autre même si les deux versions ont été pondu à deux semaine intervalle

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour ,

 

Je cherche à améliorer la galerie photo , y a t il un moyen de redimensionner les photos des vignettes en % de l 'image original , pour mon cas j ' ai redéfini dans mon css perso la taille par défaut (450x200 et 215x150) des vignettes pour que les images des vignettes soit le moins tronquées possible.

mais ce n 'est pas l ' idéal.

je souhaite donc que les photos de ces vignettes soit un % de l 'image original , les images originales auront toutes les mêmes dimensions pour que l 'on ai quelque chose d ' homogène   (nota, après se posera également le format paysage/portrait)

% que l 'on peut paramétrer , ou ?

actuellement ou est défini la taille de la miniature ?


Illustration en image de l ' état actuel.

pour les albums (images tronquées)
http://www.passionbois.eu/?ornemental
pour les images d 'un album (images tronquées)

http://www.passionbois.eu/?ornemental/spheres

 

si vous avez des pistes pour faire cela , par avance merci

 

Bruno

Modifié par omega

Partager ce message


Lien à poster
Partager sur d’autres sites
Invité
il y a une heure, omega a dit :

Je cherche à améliorer la galerie photo , y a t il un moyen de redimensionner les photos des vignettes en % de l 'image original , pour mon cas j ' ai redéfini dans mon css perso la taille par défaut (450x200 et 215x150) des vignettes pour que les images des vignettes soit le moins tronquées possible.

mais ce n 'est pas l ' idéal.

 

 omega la réponse à ta demande se trouve déjà au dessus de l'endroit où se trouve ta citation xD

 

Là tu auras les images de tes galeries totalement responsives, comme celle de ton blog d'ailleurs car ceci respecte vraiment à la réduction des images où qu'elles soient placée la même hauteur/largeur en adaptant la taille de l'image en conséquence avec justement un pourcentage et pas des px ou seulement un %  uniquement sur la largeur...

Le 07/03/2018 à 20:12, Roger nounours a dit :

@omega et encore, tu n'as fait qu'appliquer mes conseils, tu verras le jour ou tu fera " joujou " avec l'une de mes versions spéciale développée pour chaque version nouvelle d'un zwii, là c'est un vrai régal car là ce sont les modules du zwii qui sont améliorés

 

 essaie donc celle ci et adaptes là à ton goût :

 

http://forum.zwiicms.com/index.php?/files/file/72-ultimate-tinymce-2018-v823/

 lis bien surtout le descriptif, tu verras tout le bénéfice des vers Ultimates de nounours ( suis en train aussi de préparer une ultimate en 8.2.5 )

Modifié par Invité

Partager ce message


Lien à poster
Partager sur d’autres sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.


×
×
  • Créer...