• 0
micka260

La galerie photo

Question

32 réponses à cette question

Messages recommandés

  • 0
micka260    108

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 :)

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0
Invité simon511000   
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
  • 0
Invité   
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
  • 0
micka260    108
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
  • 0
Invité   
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
  • 0
micka260    108
à 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
  • 0
omega    32
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
  • 0
Invité   
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
  • 0
omega    32

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

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant