Forum ZitePLUS

La communauté des utilisateurs du CMS ZitePLUS

Vous n'êtes pas identifié(e).

#1 24/07/2011 12:04:43

Super_chemist
Membre
Inscription : 27/05/2011
Messages : 417

Conception d'un module

Bonjour à tous

Je suis en train de coder un module de diaporama, pour lequel je m'inspire du module photoshow.

Question 1: Question de licence
Bon, j'y connais pas grand chose en licences libres, alors ma question est simple : Ais-je le droit de m'inspirer fortement du module photoshow et de mettre comme licence

/*
module:	diaporama
Copyright Adrien POREAUX 2011
Licence : Creative Commons CC-NC-SA

Adapté de : module Gestion album photo de Jean-Paul GIAUSSERAND (http://www.giausserand.fr/index.php?perma=ziteplus)

v1.0: Ce module permet de simplement faire défiler les images d'une rubrique dans le CMS ziteplus. Il intègre le code javascript dans le header de la page via les fonctions du CMS, et il intègre le code html à l'endroit où ce module est appelé dans la page.
*/

sachant que le photoshow original a pour licence

/*
module:	Gestion album photo
Copyright Jean-Paul GIAUSSERAND 2010-2011
Licence : Creative Commons CC-NC-SA
Site: http://www.giausserand.fr/index.php?perma=ziteplus
	v1.3: Tri des vignettes par description par défaut
	v1.2: correction si blanc dans nom de l'image
	v1.1: ajout navigation photo suivante/précédente
	v1.0: création du module
*/

???
Je n'ai pas l'intention de m'approprier ni de piller le travail de qui que ce soit. Je veux juste faire les choses proprement.

Question 2: Question d'installation du module dans zite
J'ai mon fichier .php et mon fichier .ini
Est-ce qu'il suffit de les mettre dans le répertoire module pour que ça marche ?

Question 3: Gestion de l'urlrewriting et du multiview
J'ai pour le moment codé mon module avec les url multiview (site chez free), mais je me rend compte que ce n'est pas une très bonne idée, car mon module ne marchera que si le multiview est activé...
Y a-t-il une fonction du CMS qui permette d'avoir la bonne url en fonction du type d'urlrewriting utilisé ? Dans la discussion sur TinyMCE versus multiview, j'ai remarqué que c'était une petite usine à gaz pour gérer correctement les url (et source de bugs!)... Comment faire?


Merci

Hors ligne

#2 25/07/2011 11:33:12

jpg
Administrateurs
Inscription : 19/11/2008
Messages : 2 086
Site Web

Re : Conception d'un module

Bonjour,

Super_chemist a écrit :

Question 1: Question de licence

Alors tout d'abord une précision, il y a une erreur dans l'en-tête du fichier, il s'agit de la licence CC-BY-NC-SA. Il faudra que je corrige ...
Après, pour répondre à ta question, tout dépend de ce que veut dire "s'inspirer fortement" wink
Si c'est juste l'idée, aucun problème ... surtout que je ne dois pas être le premier à avoir pensé à faire un album photo wink
Si tu reprends du code, la réponse est ici: http://creativecommons.org/licenses/by-nc-sa/2.0/fr/
ps: tu as choisi le seul module ou presque qui n'est pas libre wink

Super_chemist a écrit :

Question 2: Question d'installation du module dans zite

Non, il faut que tu fasses un zip avec les bons chemins d'accès.
Le plus simple est de télécharger un module (ici: http://www.giausserand.fr/index.php?per … oduleplus) est de voir comment est fait le zip.

Super_chemist a écrit :

Question 3: Gestion de l'urlrewriting et du multiview

Puisque tu t'inspires tu module PHOTOSHOW, tu auras remarqué qu'il fonctionne en permalien, en urlrewriting et en multiview ...
... sans s'en soucier
... et ça marche
cool

a+
Jean-Paul

Hors ligne

#3 25/07/2011 15:35:12

Super_chemist
Membre
Inscription : 27/05/2011
Messages : 417

Re : Conception d'un module

Question 1 :
J'ai repris quelques blocs de code (notamment la portion qui liste les images d'une rubrique), quasi copié-collé je l'avoue. Mais justement, je n'ai pas trouvé la réponse à ma question sur la mauvaise traduction du site creativecommons... Si je comprend bien, je suis libre de "remixer" l'oeuvre (comprendre modifier?) tant que je la redistribue sous CC-BY-NC-SA, non?
Le module n'est pas libre? Ca veux dire que je n'ai pas le droit de faire ce que j'ai fait?

Question 2:
Je vais voir ça.

Question 3:
J'essaierai de désactiver le multiview alors, pour voir...


Merci d'éclaircir mes idées sur la question 1. Si je n'ai pas le droit de faire ça, j'annule tout, pas de soucis.

Adrien

Hors ligne

#4 25/07/2011 23:06:08

jpg
Administrateurs
Inscription : 19/11/2008
Messages : 2 086
Site Web

Re : Conception d'un module

Super_chemist a écrit :

Question 1 :
J'ai repris quelques blocs de code (notamment la portion qui liste les images d'une rubrique), quasi copié-collé je l'avoue. Mais justement, je n'ai pas trouvé la réponse à ma question sur la mauvaise traduction du site creativecommons... Si je comprend bien, je suis libre de "remixer" l'oeuvre (comprendre modifier?) tant que je la redistribue sous CC-BY-NC-SA, non?

Tout à fait, il faut redistribuer ton module sous la licence CC-BY-NC-SA
En simplifiant un peu un texte de licence un peu long:
- BY: Paternité de l'auteur du programme initial
- NC: Utilisation non commerciale uniquement
- SA: Le module modifié/transformé ne peut-être distribué que sous la licence CC-BY-NC-SA

Donc en résumé, cette licence te permet de modifier, arranger, et adapter le module (ce que tu veux faire), et cela à des fins non commerciales,
tant que tu cites l'auteur initial et que tu lui attribue son travail et que le nouveau Module est distribué sous une licence identique


Super_chemist a écrit :

Le module n'est pas libre? Ca veux dire que je n'ai pas le droit de faire ce que j'ai fait?
Merci d'éclaircir mes idées sur la question 1. Si je n'ai pas le droit de faire ça, j'annule tout, pas de soucis.

Pas besoin d'annuler wink
Cela veut simplement dire, que ce module est distribué, pour l'instant, sous une licence différente de celle de ZitePLUS.
La principale différence tient à l'utilisation non commerciale de ce module Photoshow
alors que ZitePLUS lui-même n'a pas cette restriction et peut-être utilisé pour une application commerciale ... et c'est d'ailleurs le cas wink

a+
Jean-Paul


ps: Pour mémoire ZitePLUS est distribué sous licence CeCILL-B
Les seules obligations (on simplifie un peu):
- La distribution des programmes modifiés sous une licence identique (ou compatible)
- Pour un site internet: La citation du produit (voir exemple en bas de la page: http://www.giausserand.fr/index.php?perma=ziteplus_logo)
- Pour un programme: La citation du/des auteurs avec leur modifications: voir par exemple les en-têtes du module contact ou xmenu ou plusieurs personnes sont intervenues

Hors ligne

#5 31/07/2011 16:38:45

Super_chemist
Membre
Inscription : 27/05/2011
Messages : 417

Re : Conception d'un module

Merci pour toutes ces infos.

Je crée le site d'une association loi 1901 (donc à but NON lucratif, mais ça n’empêche pas que de l'argent rentre pour équilibrer la caisse!).
Nous proposons des locations (payantes) de notre matériel aux personnes intéressées. Cet argent ne sert que pour l'assos, et n'est pas reversée aux dirigeants ni à d'obscurs actionnaires.
Dois-je considérer qu'il s'agit d'une utilisation commerciale ?
Plus d'infos sur http://test.lpc.free.fr/ , notre site de test (attention, en chantier !)

Pour l'histoire du multiview, je ne m'explique pas comment, mais en effet, mon script tourne même avec le multiview désactivé... Tant mieux !!!

Pour le zip, c'est bon, j'ai compris le truc, et ça marche !


Une dernière question : le module photoshow est intégré à tinyMCE. Comment l'auteur a-t-il fait? Je n'ai pas trouvé le fichier zip du module photoshow, j'imagine qu'il n'existe pas, sachant que ce module est installé de base...
Est-ce facile à faire?


Adrien

Hors ligne

#6 02/08/2011 23:26:37

jpg
Administrateurs
Inscription : 19/11/2008
Messages : 2 086
Site Web

Re : Conception d'un module

Super_chemist a écrit :

Merci pour toutes ces infos.

Je crée le site d'une association loi 1901 (donc à but NON lucratif, mais ça n’empêche pas que de l'argent rentre pour équilibrer la caisse!).
Nous proposons des locations (payantes) de notre matériel aux personnes intéressées. Cet argent ne sert que pour l'assos, et n'est pas reversée aux dirigeants ni à d'obscurs actionnaires.
Dois-je considérer qu'il s'agit d'une utilisation commerciale ?

Oui

Super_chemist a écrit :

Plus d'infos sur http://test.lpc.free.fr/ , notre site de test (attention, en chantier !)

Au vu de l'utilisation que tu comptes en faire sur ce site, je peux te donner sans problème l'autorisation d'utiliser le code de photoshow dans un module qui en serait inspirée/dérivée.
Sous condition que ton module (si tu le distribue) suive les changements de licences futures du module photoshow.
Pour être clair, le module Photoshow sera distribué dans sa version finale sous la même licence que ZitePLUS et à ce moment là, tu devras faire de même avec ton module.
Comme tu le vois ma condition n'est pas trop draconienne wink

Super_chemist a écrit :

Pour l'histoire du multiview, je ne m'explique pas comment, mais en effet, mon script tourne même avec le multiview désactivé... Tant mieux !!!

Pour le zip, c'est bon, j'ai compris le truc, et ça marche !

big_smile

Super_chemist a écrit :

Une dernière question : le module photoshow est intégré à tinyMCE. Comment l'auteur a-t-il fait?

ça fait tout drôle d'entendre parler de soi à la troisième personne lol

Super_chemist a écrit :

Je n'ai pas trouvé le fichier zip du module photoshow, j'imagine qu'il n'existe pas, sachant que ce module est installé de base...
Est-ce facile à faire?

Effectivement, il n'existe pas de zip pour les modules livrés de base.

Pour la facilité: Oui et non hmm
Le plus dur c'est de faire le premier plugins pour tinymce ...
... et puis on découvre que c'est aussi amusant wink de faire en sorte qu'il marche encore dans la version suivante de tinymce (passage de la version 2 à la version 3 pour les connaisseurs )

a+
Jean-Paul

Hors ligne

#7 03/08/2011 11:30:52

Super_chemist
Membre
Inscription : 27/05/2011
Messages : 417

Re : Conception d'un module

Merci pour ces infos.

Pour le plugin TinyMCE, j'ai regardé les codes, et franchement, j'ai pleuré! Ca dépasse de loin ce dont je suis capable. Tant pis.

Je posterai ici le code de mon plugin, quand j'aurai fini de le fignoler (j'arrive pas à faire un code valide, ça m'énerve). IL sera bien évidement disponible si quelqu'un veux se lancer dans l'aventure TinyMCE. wink



Adrien

Hors ligne

#8 03/08/2011 13:37:01

Super_chemist
Membre
Inscription : 27/05/2011
Messages : 417

Re : Conception d'un module

Bon, voici en exclusivité mondiale la v1.0 de mon module zdiaporama !!!

Il est fonctionnel. Je suis preneur bien entendu de toute remarque positive ou négative.

<?php
/*
module:	zdiaporama
Copyright Adrien POREAUX 2011
Licence : Creative Commons CC-BY-NC-SA

Adapté de : module Gestion album photo de Jean-Paul GIAUSSERAND (http://www.giausserand.fr/index.php?perma=ziteplus)

v1.0: Ce module permet de simplement faire défiler les images d'une rubrique dans le CMS ziteplus. Il intègre le code javascript dans le header de la page via les fonctions du CMS, et il intègre le code html à l'endroit où ce module est appelé dans la page.
Chaque variable et fonction javascript est préfixée du nom de la catégorie. On peut donc mettre plusieurs diaporamas de catégories différentes dans une page. Par contre, on ne peut pas mettre plusieurs fois la même catégorie. Seule le premier appel pour cette catégorie sera pris en compte.
Le code HTML obtenu est encadré d'un <div> class="zdiapo" et class="catégorie1_zdiapo"

Syntaxe:
<?php echo $this->page_module("zdiaporama","ng=catégorie1&h=256px&w=256px&t=5")?>

Arguments:
ng = catégorie des images à faire défiler
h = hauteur max de l'image. Défini dans un <style> intégré au HTML. Si 0 pas de <style> (permet d'utiliser un CSS perso plus précis). Si absent, par défaut 256px. Exprimé en %, px, em...
w = largeur max de l'image. Idem.
t = délai en seconde entre deux images. Si absent, par défaut 5 sec. Doit être >0.
*/

class Tzdiaporama extends Tmodule
{
	function dojob($opt="")
	{
		parent::dojob();
		static $zdiapo= array();
		$zprubs = new Trubs(self::$cms->cpath.'/rubs.dta');
		require_once('zite/tdocs.php');
		$docs = new Tdocs(self::$cms->cpath.'/docs.dta');
		$docs->sort();
		parse_str($opt, $param); // Prendre valeur des paramètres
		$out='';
		
		// Le module ne peut être appelé qu'une fois par catégorie et par page (sinon le script ne s'exécute pas, je ne sais pas pourquoi)
		if (!isset($zdiapo[$param['ng']]))
		{
			$zdiapo[$param['ng']] = 1;
			
			// On met dans $liste[] les images de la catégorie $param['ng']
			foreach ($docs as $docname => $doc) 
			{
				if ($docs->isDocAuth($docname) && !empty($doc[cDocRub]) &&  (in_array($param['ng'],$doc[cDocRub])) &&($doc[cDocType]=='img')) 
				{
					$liste[] = $docname;
				}
			}
			
			// On inclut le code CSS dans la page via la fonction du CMS: max-height et max-width pour img, height et width pour le div
			self::$cms->content['dftcss'].=".".$param['ng']."_zdiapo img { ";
			if (isset($param['h']))
			{
				if($param['h']==0)
				{
				}else{
					self::$cms->content['dftcss'].="max-height :".$param['h']."; ";
				}
			}else{
				self::$cms->content['dftcss'].="max-height :256px; ";
			}
			if (isset($param['w']))
			{
				if($param['w']==0)
				{
				}else{
					self::$cms->content['dftcss'].="max-width :".$param['w']."; ";
				}
			}else{
				self::$cms->content['dftcss'].="max-width :256px; ";
			}
			self::$cms->content['dftcss'].="} .".$param['ng']."_zdiapo { ";
			if (isset($param['h']))
			{
				if($param['h']==0)
				{
				}else{
					self::$cms->content['dftcss'].="height :".$param['h']."; ";
				}
			}else{
				self::$cms->content['dftcss'].="height :256px; ";
			}
			if (isset($param['w']))
			{
				if($param['w']==0)
				{
				}else{
					self::$cms->content['dftcss'].="width :".$param['w']."; ";
				}
			}else{
				self::$cms->content['dftcss'].="width :256px; ";
			}
			self::$cms->content['dftcss'].="}";
			
			// On inclut le code javascript dans le head via la fonction du CMS. 		
			self::$cms->content['js'].='<script language="javascript" type="text/javascript">';
			if (isset($param['t']))
			{
				if($param['t']>0)
				{
					self::$cms->content['js'].='var '.$param['ng'].'_timeDelay = '.$param['t'].';';
				}else{
					self::$cms->content['js'].='var '.$param['ng'].'_timeDelay = 5;';
				}
			}else{
				self::$cms->content['js'].='var '.$param['ng'].'_timeDelay = 5;';
			}
			self::$cms->content['js'].='
				var '.$param['ng'].'_Pix = new Array
				(';
			foreach ($liste as $image)
			{
				$a.='"view.php/'.$image.'",';
			}
			self::$cms->content['js'].= rtrim($a, ",");//on vire la dernière virgule
			self::$cms->content['js'].=');';
				//("view.php/mon_image_01.jpg",
				//"view.php/mon_image_02.jpg",
				//"view.php/mon_image_03.jpg", 
				//"view.php/mon_image_04.jpg");
				
			self::$cms->content['js'].='var '.$param['ng'].'_howMany = '.$param['ng'].'_Pix.length;
				'.$param['ng'].'_timeDelay *= 1000;
				var '.$param['ng'].'_PicCurrentNum = 0;
				var '.$param['ng'].'_PicCurrent = new Image();
				'.$param['ng'].'_PicCurrent.src = '.$param['ng'].'_Pix['.$param['ng'].'_PicCurrentNum];';
			self::$cms->content['js'].='function '.$param['ng'].'_startzdiapo() {
				setTimeout("'.$param['ng'].'_slideshow()", '.$param['ng'].'_timeDelay);
				}
				function '.$param['ng'].'_slideshow() {
				'.$param['ng'].'_PicCurrentNum++;
				if ('.$param['ng'].'_PicCurrentNum == '.$param['ng'].'_howMany) {
				'.$param['ng'].'_PicCurrentNum = 0;
				}
				'.$param['ng'].'_PicCurrent.src = '.$param['ng'].'_Pix['.$param['ng'].'_PicCurrentNum];
				document["'.$param['ng'].'_zdiapo"].src = '.$param['ng'].'_PicCurrent.src;
				}';
			self::$cms->content['js'].='</script>';
			
			// On inclut la balise img dans le html
			$out.='<div class="zdiapo '.$param['ng'].'_zdiapo"><img onload="'.$param['ng'].'_startzdiapo()" name="'.$param['ng'].'_zdiapo" alt="diaporama" src="view.php/'.$liste[0].'"/></div>'; // 1re image pour les pas droles qui ont désactivé javascript
		
		}
		//fin du code unique

		return $out;		
	}
}
?>

Seul souci, j'utilise un attribut "onload" dans la balise <img>, et il paraît que c'est pas valide... Je ne connais pas suffisamment le javascript pour faire autrement, mais si le coeur vous en dit...

Autre souci, rien ne s'affiche sous TinyMCE (mais celui ci respecte la balise php). C'est probablement la prochaine étape d'évolution de ce module. L'idéal je pense serait que un plugin tinymce insère la balise <img></img> avec l'appel php au milieu. Et le php se contenterai d'insérer le javascript dans le header...
Mais j'ai baissé les bras quand j'ai vu les codes des plugins de tinymce!!!

A vous les studios!

Hors ligne

#9 04/08/2011 12:21:20

Super_chemist
Membre
Inscription : 27/05/2011
Messages : 417

Re : Conception d'un module

Je me permet de reposter, car j'ai fait une petite modif assez pratique.

v1.1: ajout d'un argument float
Ca permet d'intégrer dans le CSS de la page, pour le diaporama en question, l'attribut css float à left ou right. Pratique pour alterner sur une page, sans devoir refaire un CSS spécifique à chaque changement.

<?php
/*
module:	zdiaporama
Copyright Adrien POREAUX 2011
Licence : Creative Commons BY-CC-NC-SA

Adapté de : module Gestion album photo de Jean-Paul GIAUSSERAND (http://www.giausserand.fr/index.php?perma=ziteplus)

v1.1: Ajout de l'argument float et remplacement de toutes les occurences de "catégorie" par "Rubrique" pour coller au vocabulaire du CMS.
v1.0: Ce module permet de simplement faire défiler les images d'une Rubrique dans le CMS ziteplus. Il intègre le code javascript dans le header de la page via les fonctions du CMS, et il intègre le code html à l'endroit où ce module est appelé dans la page.
Chaque variable et fonction javascript est préfixée du nom de la Rubrique. On peut donc mettre plusieurs diaporamas de Rubriques différentes dans une page. Par contre, on ne peut pas mettre plusieurs fois la même Rubrique. Seule le premier appel pour cette Rubrique sera pris en compte.
Le code HTML obtenu est encadré d'un <div> class="zdiapo" et class="Rubrique1_zdiapo"

Syntaxe:
<?php echo $this->page_module("zdiaporama","ng=Rubrique1&h=256px&w=256px&t=5&float=right")?>

Il n'y a pas d'ordre obligatoire pour les arguments.

Arguments:
ng = Rubrique des images à faire défiler. Argument obligatoire.
h = hauteur max de l'image. Défini dans un <style> intégré au HTML. Si 0 pas de <style> (permet d'utiliser un CSS perso plus précis). Si absent, par défaut 256px. Exprimé en %, px, em...
w = largeur max de l'image. Idem.
t = délai en seconde entre deux images. Si absent, par défaut 5 sec. Doit être >0.
float = attribut css "float" du div. Défini dans un <style> intégré au HTML. Accepte "left", "right" et "none". Si absent pas de <style>, permet d'utiliser un css perso. 
*/

class Tzdiaporama extends Tmodule
{
	function dojob($opt="")
	{
		parent::dojob();
		static $zdiapo= array();
		$zprubs = new Trubs(self::$cms->cpath.'/rubs.dta');
		require_once('zite/tdocs.php');
		$docs = new Tdocs(self::$cms->cpath.'/docs.dta');
		$docs->sort();
		parse_str($opt, $param); // Prendre valeur des paramètres
		$out='';
		
		// Le module ne peut être appelé qu'une fois par Rubrique et par page (sinon le script ne s'exécute pas, je ne sais pas pourquoi)
		if (!isset($zdiapo[$param['ng']]))
		{
			$zdiapo[$param['ng']] = 1;
			
			// On met dans $liste[] les images de la Rubrique $param['ng']
			foreach ($docs as $docname => $doc) 
			{
				if ($docs->isDocAuth($docname) && !empty($doc[cDocRub]) &&  (in_array($param['ng'],$doc[cDocRub])) &&($doc[cDocType]=='img')) 
				{
					$liste[] = $docname;
				}
			}
			
			// On inclut le code CSS dans la page via la fonction du CMS: max-height et max-width pour img, height et width pour le div
			self::$cms->content['dftcss'].=".".$param['ng']."_zdiapo img { ";
			if (isset($param['h']))
			{
				if($param['h']==0)
				{
				}else{
					self::$cms->content['dftcss'].="max-height :".$param['h']."; ";
				}
			}else{
				self::$cms->content['dftcss'].="max-height :256px; ";
			}
			if (isset($param['w']))
			{
				if($param['w']==0)
				{
				}else{
					self::$cms->content['dftcss'].="max-width :".$param['w']."; ";
				}
			}else{
				self::$cms->content['dftcss'].="max-width :256px; ";
			}
			self::$cms->content['dftcss'].="} .".$param['ng']."_zdiapo { ";
			if (isset($param['h']))
			{
				if($param['h']==0)
				{
				}else{
					self::$cms->content['dftcss'].="height :".$param['h']."; ";
				}
			}else{
				self::$cms->content['dftcss'].="height :256px; ";
			}
			if (isset($param['w']))
			{
				if($param['w']==0)
				{
				}else{
					self::$cms->content['dftcss'].="width :".$param['w']."; ";
				}
			}else{
				self::$cms->content['dftcss'].="width :256px; ";
			}
			if (isset($param['float']))
			{
				if($param['float']=='left')
				{
					self::$cms->content['dftcss'].="float :left; ";
				}elseif($param['float']=='right'){
					self::$cms->content['dftcss'].="float :right; ";
				}elseif($param['float']=='none'){
					self::$cms->content['dftcss'].="float :none; ";
				}
			}
			self::$cms->content['dftcss'].="}";
			
			// On inclut le code javascript dans le head via la fonction du CMS. 		
			self::$cms->content['js'].='<script language="javascript" type="text/javascript">';
			if (isset($param['t']))
			{
				if($param['t']>0)
				{
					self::$cms->content['js'].='var '.$param['ng'].'_timeDelay = '.$param['t'].';';
				}else{
					self::$cms->content['js'].='var '.$param['ng'].'_timeDelay = 5;';
				}
			}else{
				self::$cms->content['js'].='var '.$param['ng'].'_timeDelay = 5;';
			}
			self::$cms->content['js'].='
				var '.$param['ng'].'_Pix = new Array
				(';
			foreach ($liste as $image)
			{
				$a.='"view.php/'.$image.'",';
			}
			self::$cms->content['js'].= rtrim($a, ",");//on vire la dernière virgule
			self::$cms->content['js'].=');';
				//("view.php/mon_image_01.jpg",
				//"view.php/mon_image_02.jpg",
				//"view.php/mon_image_03.jpg", 
				//"view.php/mon_image_04.jpg");
				
			self::$cms->content['js'].='var '.$param['ng'].'_howMany = '.$param['ng'].'_Pix.length;
				'.$param['ng'].'_timeDelay *= 1000;
				var '.$param['ng'].'_PicCurrentNum = 0;
				var '.$param['ng'].'_PicCurrent = new Image();
				'.$param['ng'].'_PicCurrent.src = '.$param['ng'].'_Pix['.$param['ng'].'_PicCurrentNum];';
			self::$cms->content['js'].='function '.$param['ng'].'_startzdiapo() {
				setTimeout("'.$param['ng'].'_slideshow()", '.$param['ng'].'_timeDelay);
				}
				function '.$param['ng'].'_slideshow() {
				'.$param['ng'].'_PicCurrentNum++;
				if ('.$param['ng'].'_PicCurrentNum == '.$param['ng'].'_howMany) {
				'.$param['ng'].'_PicCurrentNum = 0;
				}
				'.$param['ng'].'_PicCurrent.src = '.$param['ng'].'_Pix['.$param['ng'].'_PicCurrentNum];
				document["'.$param['ng'].'_zdiapo"].src = '.$param['ng'].'_PicCurrent.src;
				}';
			self::$cms->content['js'].='</script>';
			
			// On inclut la balise img dans le html
			$out.='<div class="zdiapo '.$param['ng'].'_zdiapo"><img onload="'.$param['ng'].'_startzdiapo()" name="'.$param['ng'].'_zdiapo" alt="diaporama" src="view.php/'.$liste[0].'"/></div>'; // 1re image pour les pas droles qui ont désactivé javascript
		
		}
		//fin du code unique

		return $out;		
	}
}
?>

Si vous avez des retours, n'hésitez pas.

A+

Hors ligne

#10 05/08/2011 03:02:44

snypi
Moderateurs
Inscription : 11/03/2008
Messages : 1 235
Site Web

Re : Conception d'un module

je me test ceci dès mon retour de vacances
merci pour le partage


un zite+ associatif http://asso.gard.a.toi.free.fr
création de site internet dans le Gard et Ardèche http://www.creation-site-internet-gard.com/

Hors ligne

#11 01/09/2011 00:10:37

snypi
Moderateurs
Inscription : 11/03/2008
Messages : 1 235
Site Web

Re : Conception d'un module

félicitation pour le petit module fonctionne nickel sur un zite de base (sans jquery en pagaille smile
je me suis poser la question "pourquoi l'absence d'un fichier conf" mais cela aurais limiter la mise en page du diapo sur tous le site donc bien jouer
le fait de l'intégrer dans le php nous permet de créer des diaporama sur différentes pages avec une présentation personnalisable sur chaque page

l'intégration dans tinymce aurais été un luxe mais je comprend ton désespoirs
du fait cela reste un module compliquer pour un utilisateur lambda

moi qui y connais rien à tous cela je vais pouvoir bidouillé ton code et le torturer car j'adore jquery et il manque le fading à mon gout à ton javascript

en tous cas merci pour ton module et ce partage


un zite+ associatif http://asso.gard.a.toi.free.fr
création de site internet dans le Gard et Ardèche http://www.creation-site-internet-gard.com/

Hors ligne

#12 01/09/2011 14:16:45

Super_chemist
Membre
Inscription : 27/05/2011
Messages : 417

Re : Conception d'un module

Sous quelle configuration l'as-tu testé?
Je n'ai testé que avec le multiview activé.

J'aimerai bien savoir si ça passe avec un zite sans urlrewriting du tout, et avec un zite avec urlrewriting simple...

Merci
Adrien

Hors ligne

#13 03/09/2011 13:16:08

snypi
Moderateurs
Inscription : 11/03/2008
Messages : 1 235
Site Web

Re : Conception d'un module

salutation
testé sous wampserveur avec  et sans urlrewriting ok
sous 1&1 avec urlrewriting dans un sous répertoire ok


un zite+ associatif http://asso.gard.a.toi.free.fr
création de site internet dans le Gard et Ardèche http://www.creation-site-internet-gard.com/

Hors ligne

#14 04/09/2011 14:06:04

snypi
Moderateurs
Inscription : 11/03/2008
Messages : 1 235
Site Web

Re : Conception d'un module

intégration de zdiaporama dans tinymce la bidouille de snypi
j'ai juste réussi à insérer un bouton dans tinymce en dupliquant le dossier photoshow dans \tinymce\plugins\photoshow
en le renommant \tinymce\plugins\zdiaporama
renommer et éditer les fichier et remplacer photoshow par zdiaporama
dans le dossier zite éditer le fichier tinymce et rajouté à coté de photoshow en respectant la syntax zdiaporama

et la du coup j'ai un bouton qui s'appelle zdiaporama mais qui marche comme un photoshow mais pas de bug ( je pense qu'il faut juste renseigner correctement les variables )
je vais creuser et allez un peu plus loin mais je trouve que Jpg ne documente pas assez sont boulot ;p mois qui ne connais pas le php c'est une galère pas possible

edit : je pense que les deux éléments clé sont dans
\tinymce\plugins\zdiaporama\js\zdiaporama.js
\tinymce\plugins\zdiaporama\zdiaporama.php

Dernière modification par snypi (04/09/2011 14:20:11)


un zite+ associatif http://asso.gard.a.toi.free.fr
création de site internet dans le Gard et Ardèche http://www.creation-site-internet-gard.com/

Hors ligne

#15 04/09/2011 17:03:53

snypi
Moderateurs
Inscription : 11/03/2008
Messages : 1 235
Site Web

Re : Conception d'un module

ça ma l'air tous con mais je galère
y'a juste avec c deux fichiers à ce qu'il nous ecrive un truc comme cela

<?php echo $this->page_module("zdiaporama","ng=Rubrique1&h=256px&w=256px&t=5&float=right")?>

avec la possibilité dans le bouton de choisir la rubrique avec aperçue (ca j'y arrive avec la duplication de photoshow)
le fait de rentré les valeur largeur et hauteur (y'a cette fonction dans photoshow, mais la moi je rame pour la rendre compatible)
et cette identificateur unique qui ma l'air d’être important smile

allez je sort prendre des cours de php ++

Dernière modification par snypi (04/09/2011 17:05:12)


un zite+ associatif http://asso.gard.a.toi.free.fr
création de site internet dans le Gard et Ardèche http://www.creation-site-internet-gard.com/

Hors ligne

#16 04/09/2011 21:35:21

Super_chemist
Membre
Inscription : 27/05/2011
Messages : 417

Re : Conception d'un module

J'avais effectivement regardé tout ça. Mais moi, le javascript mélangé à du php mélangé à du HTML, ça me dépasse !!!
Lol. Bon courage si tu souhaites te lancer là dedans (et merci!).

Pour info, je n'utilise pas l'identificateur unique dans mon module. A la place, j'utilise le nom de la rubrique.
C'est pour ça que toutes mes fonctions js sont préfixées par le nom de la rubrique.
C'est aussi probablement pour ça que tout plante si on insère deux fois le même diaporama dans une page (du coup j'ai mis une protection dans mon php).

Si je ne m'abuse, c'est pas des cours de php qu'il faut, mais du javascript ! Sinon j'aurai pu me dépatouiller avec...

Là je n'ai vraiment plus le temps d'apprendre un nouveau langage, c'est la rentrée !


Encore merci de te pencher là dessus.

Adrien

Hors ligne

#17 06/09/2011 13:27:36

Super_chemist
Membre
Inscription : 27/05/2011
Messages : 417

Re : Conception d'un module

Et sache que si besoin, je peux modifier la syntaxe de mon module, ou sa sortie HTML...

Hors ligne

#18 07/09/2011 19:09:35

jpg
Administrateurs
Inscription : 19/11/2008
Messages : 2 086
Site Web

Re : Conception d'un module

Super_chemist a écrit :

J'avais effectivement regardé tout ça. Mais moi, le javascript mélangé à du php mélangé à du HTML, ça me dépasse !!!

Ajoute de faire du javascript bien compatible tout navigateur et c'est presque complet wink

Super_chemist a écrit :

Pour info, je n'utilise pas l'identificateur unique dans mon module. A la place, j'utilise le nom de la rubrique.
C'est pour ça que toutes mes fonctions js sont préfixées par le nom de la rubrique.
C'est aussi probablement pour ça que tout plante si on insère deux fois le même diaporama dans une page (du coup j'ai mis une protection dans mon php).

Je pense aussi, même si je n'ai pas (encore wink) vraiment regarder le source.
Par contre, j'avoue ne pas bien voir pourquoi préfixer les fonctions avec le nom de la rubrique ?
Si tu inclus deux diaporamas dans la page (ou dans une page et un panneau latéral par exemple), les fonctions javascripts ne devrait existait qu'une seule fois.
C'est d'ailleurs le cas pour le module PhotoShow

a+
Jean-Paul

ps: bon courage snypi smile

Hors ligne

#19 07/09/2011 22:12:14

Super_chemist
Membre
Inscription : 27/05/2011
Messages : 417

Re : Conception d'un module

jpg a écrit :

Par contre, j'avoue ne pas bien voir pourquoi préfixer les fonctions avec le nom de la rubrique ?
Si tu inclus deux diaporamas dans la page (ou dans une page et un panneau latéral par exemple), les fonctions javascripts ne devrait existait qu'une seule fois.
C'est d'ailleurs le cas pour le module PhotoShow

Je voulais que chaque diaporama soit indépendant des autres. Si par exemple, on met un diaporama dans un panneau latéral, et un autre sur une page...
Bref, que le timing, la rubrique... ne soient pas nécessairement identiques entre tous mes diaporamas.

Donc je dois pouvoir différencier par exemple la variable timer du diaporama 1 de celle du diaporama 2. D'ou l'idée du préfixe.
Souci, la variable est appelée par son nom dans des fonctions js, donc la variable est préfixée. Je dois donc avoir 1 fonction pour le diaporama 1 et une fonction pour le diaporama 2. Donc je préfixe aussi les fonctions.
etc etc...

Au final, c'est le mécanisme qui m'a parut le plus simple. Tout préfixer, tout en double mais c'est pas trop grave...
Pas forcément le plus académique, mais ça marche sur mon site, c'est tout ce que je demande smile

(d'ailleurs, c'est pas à ça que sert l'"identificateur unique" ? )

Maintenant, si un maître es javascript/php/html veux se pencher là dessus, pas de soucis !!!
J'ajouterai même que les sources sont ouvertes, c'est fait pour ça.


Bon courage.

Hors ligne

#20 07/09/2011 22:43:01

jpg
Administrateurs
Inscription : 19/11/2008
Messages : 2 086
Site Web

Re : Conception d'un module

Super_chemist a écrit :

Je voulais que chaque diaporama soit indépendant des autres. Si par exemple, on met un diaporama dans un panneau latéral, et un autre sur une page...
Bref, que le timing, la rubrique... ne soient pas nécessairement identiques entre tous mes diaporamas.

Effectivement smile

Super_chemist a écrit :

Donc je dois pouvoir différencier par exemple la variable timer du diaporama 1 de celle du diaporama 2. D'ou l'idée du préfixe.
Souci, la variable est appelée par son nom dans des fonctions js, donc la variable est préfixée. Je dois donc avoir 1 fonction pour le diaporama 1 et une fonction pour le diaporama 2. Donc je préfixe aussi les fonctions.
etc etc...

Au final, c'est le mécanisme qui m'a parut le plus simple. Tout préfixer, tout en double mais c'est pas trop grave...
Pas forcément le plus académique, mais ça marche sur mon site, c'est tout ce que je demande smile

Je comprends tout à fait wink

Super_chemist a écrit :

(d'ailleurs, c'est pas à ça que sert l'"identificateur unique" ? )

Oui et non: le code des fonctions javascript n'est pas dupliqué.
Je pense qu'on doit pouvoir faire en sorte (avec ou sans identificateur unique wink) de ne pas le dupliquer non plus pour ce module.

Super_chemist a écrit :

Maintenant, si un maître es javascript/php/html veux se pencher là dessus, pas de soucis !!!
J'ajouterai même que les sources sont ouvertes, c'est fait pour ça.
Bon courage.

Pour l'instant mon temps libre va sur le dev. de la 092alpha, donc ...

... bon courage à toi et à snypy smile

en attendant une intégration dans les modules Ziteplus cool

a+
Jean-Paul

Hors ligne

#21 22/10/2011 14:45:55

snypi
Moderateurs
Inscription : 11/03/2008
Messages : 1 235
Site Web

Re : Conception d'un module

salut juste histoire de dire que je suis à la ramasse mais que cela avance smile
zdiaporama.jpg

il me reste plus qu'une chose super simple lol le zdiaporama.js lol


un zite+ associatif http://asso.gard.a.toi.free.fr
création de site internet dans le Gard et Ardèche http://www.creation-site-internet-gard.com/

Hors ligne

#22 22/10/2011 18:40:04

Super_chemist
Membre
Inscription : 27/05/2011
Messages : 417

Re : Conception d'un module

Waou !
Alors là, chapeau ! Ce genre de boite modale est exactement ce qu'il faut pour rendre le module utilisable par des non-informaticiens.
Je regrette vraiment de ne pas avoir le temps (ni les capacités) de faire tout ça.

Merci, et surtout, bon courage !

Hors ligne

#23 22/10/2011 19:35:36

snypi
Moderateurs
Inscription : 11/03/2008
Messages : 1 235
Site Web

Re : Conception d'un module

merci pour les encouragement j'en ai besoin lol
mais y'aurais pas plus simple que tinymce


un zite+ associatif http://asso.gard.a.toi.free.fr
création de site internet dans le Gard et Ardèche http://www.creation-site-internet-gard.com/

Hors ligne

#24 22/10/2011 23:08:35

snypi
Moderateurs
Inscription : 11/03/2008
Messages : 1 235
Site Web

Re : Conception d'un module

alors la ma maitrise du copier coller et interpréter les codes php et javascript à c limite smile (parceque je sais pas les écrires, j'ai pas appris smile
photoshow est un sacrée morceau à interprété en tous cas chapeau à celui qui la fait !!!! wink
moi j'ai pas opté pour la pilule bleu alors la matrice j'ai un peu du mal lol

mais en lisant le code on voit bien que y'a toute les réponse dedans smile grrrrr!!!!

 
 <!--?php echo $this->page_module("zdiaporama","'+paramv+'")?-->

si j'arrivais à virer tous le superflux (qu'on à pas besoins pour zdiapo) et récup les variables de paramv ca serait super
bon j'ai le cerveau en compote je suis juste venu crier mon désespoire smile
affaire à suivre....


un zite+ associatif http://asso.gard.a.toi.free.fr
création de site internet dans le Gard et Ardèche http://www.creation-site-internet-gard.com/

Hors ligne

#25 23/10/2011 23:36:06

snypi
Moderateurs
Inscription : 11/03/2008
Messages : 1 235
Site Web

Re : Conception d'un module

lol c bon ca marche wink
j'essaye de paufiné pour le rendre éditable
bon j'ai rien fait de grandiose juste passé 3 jours à trifouillé torturer cela dans tous les sens pour reprendre les fichiers racine de photoshow et placer nos arguments pour zdiapo
par contre point positif on peut mettre plusieur zdiapo sur une page smile

faut que j'arrive à rendre la div éditable grrrrr
@jpg c dans tinymce ou dans le plugin???

Dernière modification par snypi (23/10/2011 23:46:20)


un zite+ associatif http://asso.gard.a.toi.free.fr
création de site internet dans le Gard et Ardèche http://www.creation-site-internet-gard.com/

Hors ligne

Pied de page des forums