Forum ZitePLUS

La communauté des utilisateurs du CMS ZitePLUS

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

#76 19/10/2010 18:43:36

pydou
Membre
Lieu : Caluire
Inscription : 01/04/2010
Messages : 110
Site Web

Re : Module de gestion de l'actualité

Pour ceux qui l'auraient déjà essayé, je suis sur qu'ils ont vu qu'il manquait un "}"   donc : remplacer

        if (!$show_rdar) {
          if ($clas_rdar!='') $out.='<span class='.$clas_rdar.'>'.$this->get_message('read_art').'</span>';
          else                $out.='<font size='.$size_rdar.'> ('.$this->get_message('read_art').')</font>';
        if (!$show_open) $out.= '</a>';

par

        if (!$show_rdar) {
          if ($clas_rdar!='') $out.='<span class='.$clas_rdar.'>'.$this->get_message('read_art').'</span>';
          else                $out.='<font size='.$size_rdar.'> ('.$this->get_message('read_art').')</font>';
          }
        if (!$show_open) $out.= '</a>';
Michael79 a écrit :

c'est pas mieux de mettre "none" : "block" au lieu de "none" : "" ?

n'étant pas expert en javascript, j'ai copié bêtement un code trouvé sur le net et qui marche. Je vais essayer et si c'est mieux, je conserve !  smile:)

PYDou


Consultant en sécurité informatique (ISO 27001 Lead Auditor, ISO 27005 Risk Manager)
Amateur de JAZZ, Voile, Bridge

Hors ligne

#77 20/10/2010 00:18:51

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

Re : Module de gestion de l'actualité

Bonsoir,
je voyais un truc plus léger pour le css.
Si l'utilisateur ne défini pas son css, c'est celui par défaut qui est utilisé.
Par contre, il peut toujours redéfinir celui-ci.
Par exemple, s'il veut des news sur font vert avec des titre en rouges (même si c'est pas beau wink), il mettra dans son fichier de style:
.news{background-color:#00ff00}
.news_title {color:#ff0000}


Sinon, voici le code de la fonction do_show() correspondant:


Exemple:

	function doshow($opt=""){
		static $isfirst=0;
		if ($isfirst++==0) {
			self::$cms->content['js'].='<script language="Javascript" type="text/javascript">
				function toggle(obj) {
				  var el = document.getElementById(obj);
	  			el.style.display = (el.style.display != "none" ? "none" : "" );
				}
				</script>';
      	self::$cms->content['localcss'].=
					"\n.news {}".
					"\n.news_date {font-size:xx-small;}".
					"\n.news_title {font-size:small; color:#FF6600;}".
					"\n.news_read {font-size:xx-small;}".
					"\n.news_body {}".
					"\n"
					;
		}
		$out='<div class="news">';
		if (empty(self::$cms->news)) self::$cms->news = (array)unserialize(@file_get_contents(self::$cms->cpath.'/news.dta'));
		$fnews = & self::$cms->news;
		ksort($fnews);
		$xbr='';
		if ($opt=='d') $out.='<marquee behavior="scroll" direction="up" width="100%" height="100" scrollamount="1" scrolldelay="0" onmouseover="this.stop()" onmouseout="this.start()">';
		foreach ($fnews as $clef => $valeur	) {
			if  ((($_SESSION['zite_user']!='') and ($valeur[6])) or (($_SESSION['zite_user']=='') and ($valeur[5]))) {
  			$out.= $xbr.'<span class="news_date">'.substr($valeur[3],0,10).' : </span><a style="text-decoration: none" href="javascript:toggle(\'P'.$clef.'\')"><span class="news_title"><strong>'.$valeur[1].'</strong></span><span class="news_read"> (lire l'article)</span></a>';
				$xbr=$opt!='d'?'<br />':'<hr />';
			  $out.='<div class="news_body" id="P'.$clef.'" '.($opt!='t'?' style="display:none;"':'').'><br />'.$valeur[2].'<br /><hr /></div>';
			}
		}
		if ($opt=='d') $out.='<hr /></marquee>';
		$out.="</div>";
		return $out;
	}

Cela me semble plus simple comme code et si j'ai pas oublié de span ou de div, cela devrait faire la même chose.
A une exception près: le nom des classes est fixé par défaut par le développeur (mais, ça je ne trouve pas que ce soit un inconvénient wink)

a+
Jean-Paul

ps: la syntaxe d'appel totalement expérimentale wink
Pour avoir les news fermées:   <?php echo $this->page_module('news','','show');?>
Pour avoir les news ouvertes:   <?php echo $this->page_module('news','t','show');?>
Pour avoir des news défilantes:   <?php echo $this->page_module('news','d','show');?>

Hors ligne

#78 20/10/2010 08:14:18

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

Re : Module de gestion de l'actualité

salut
je trouve cela pas mal du tout !!
j'y rajouterai pour la news une <div id="dnews" class="news">
cela permet un attribut suplémentaire !!


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

#79 20/10/2010 19:06:29

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

Re : Module de gestion de l'actualité

Une petite évolution pour les dates,
avec un petit exemple intégré pour illustrer la puissance du css (juste pour le plaisir wink)
La démo permet d'afficher la date sous forme de pavé (année dessus et jour mois dessous)
   

	function doshow($opt=""){
		static $isfirst=0;
		if ($isfirst++==0) {
			self::$cms->content['js'].='<script language="Javascript" type="text/javascript">
				function toggle(obj) {
				  var el = document.getElementById(obj);
	  			el.style.display = (el.style.display != "none" ? "none" : "block" );
				}
				</script>';
      	self::$cms->content['localcss'].=
					"\n.news {}".// les styles vides peuvent être supprimés: c'est juste pour démo
					"\n.news_line {}".
					"\n.news_date {font-size:xx-small;}".
					"\n.news_datejj {}".
					"\n.news_datemm {}".
					"\n.news_dateaa {}".
					"\n.news_datesep1 {}".
					"\n.news_datesep2 {}".
					"\n.news_title {font-size:small; color:#FF6600;font-weight: bold}".
					"\n.news_read {font-size:xx-small;}".
					"\n.news_body {}".
					"\n"
// démo démo démo !!!!!!!!!! à supprimer dans la version de prod: pas beau, mais pour démo: création d'un bloc avec année dessus et jj/mm dessous
					."\n.news_line {clear:both}".
					"\n.news_date {display:inline-block; float:left;height:40px;width:60px;background-color:#9ecfff;text-align:center;font-weight:bold;margin-bottom:10px}".
					"\n.news_datejj{font-size:medium;position:relative;top:20px}.news_datemm{font-size:medium;position:relative;top:20px}".
					"\n.news_dateaa{position:relative;top:-20px;float:left;width:100%;height:50%;background-color:#ffcc00;font-size:small;}".
					"\n.news_datesep1 {font-size:medium;position:relative;top:20px}".
					"\n.news_datesep2 {display:none} .news_body{clear:both}"
//fin démo - fin démo
     			;
		}
		$out='<div class="news">';
		if (empty(self::$cms->news)) self::$cms->news = (array)unserialize(@file_get_contents(self::$cms->cpath.'/news.dta'));
		$fnews = & self::$cms->news;
		ksort($fnews);
		$xbr='';
		if ($opt=='d') $out.='<marquee behavior="scroll" direction="up" width="100%" height="100" scrollamount="1" scrolldelay="0" onmouseover="this.stop()" onmouseout="this.start()">';
		foreach ($fnews as $clef => $valeur	) {
			if  ((($_SESSION['zite_user']!='') and ($valeur[6])) or (($_SESSION['zite_user']=='') and ($valeur[5]))) {
  			$out.= $xbr.'<div class="news_line"><span class="news_date"><span class="news_datejj">'.substr($valeur[3],0,2).'</span><span class="news_datesep1">/</span><span class="news_datemm">'.substr($valeur[3],3,2).'</span><span class="news_datesep2">/</span><span class="news_dateaa">'.substr($valeur[3],6,4).'</span>'.'</span> <a style="text-decoration: none" href="javascript:toggle(\'P'.$clef.'\')"><span class="news_title">'.$valeur[1].'</span><span class="news_read"> (lire l'article)</span></a>';
				$xbr=$opt!='d'?'<br />':'<hr />';
			  $out.='<div class="news_body" id="P'.$clef.'" '.($opt!='t'?' style="display:none;"':'').'><br />'.$valeur[2].'<br /><hr /></div></div>';
			}
		}
		if ($opt=='d') $out.='<hr /></marquee>';
		$out.="</div>";
		return $out;
	}

a+
Jean-Paul

Hors ligne

#80 20/10/2010 20:53:47

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

Re : Module de gestion de l'actualité

heu on le met ou le code smile
j'ai essayé dans une page php marche po sad


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

#81 20/10/2010 21:00:01

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

Re : Module de gestion de l'actualité

snypi a écrit :

heu on le met ou le code smile
j'ai essayé dans une page php marche po sad

Dans le module de news à la place de la fonction doshow() actuelle
Sinon, plus simple, le code complet du module (de news.php) ci-dessous.
Et dans une page php, tu mets:
Pour avoir les news fermées:   <?php echo $this->page_module('news','','show');?>
Pour avoir les news ouvertes:   <?php echo $this->page_module('news','o','show');?>
Pour avoir des news défilantes:   <?php echo $this->page_module('news','d','show');?>


<?php
/*
module:	Gestion des news
Copyright Pierre-Yves DUCAS 2010
Licence : CeCILL-B, http://www.cecill.info

Historique:
  Version et Date    version Zite+ mini    Description
  =================  ==================    ===========
  1.0 du 08/10/2010  0.9.1 A 26            Création du module
  1.1 du 14/10/2010  0.9.1 A 26            JPG: intégration tinymce.php de ZitePLUS
																								intégration code affichage news (doshow)
																								optimisation diverses du code
																								changement valeur on,off => 1,0
	1.2 du 20/10/2010                         JPG: intégration class CSS

Le module principal se trouve dans    zite/module/news.php
Les données ini sont  dans            zite/module/news.ini
Les données news sont dans            zdata/news.dta
Il nécessite l'image                  deco/x0.png
Il nécessite l'image                  deco/x1.png
*/
/*Pour avoir les news fermées:   < ?php echo $this->page_module('news','','show');? >
Pour avoir les news ouvertes:   < ?php echo $this->page_module('news','o','show');? >
Pour avoir des news défilantes:   < ?php echo $this->page_module('news','d','show');? >
*/
class Tnews extends Tmodule {
	function doshow($opt=""){
		static $isfirst=0;
		if ($isfirst++==0) {
			self::$cms->content['js'].='<script language="Javascript" type="text/javascript">
				function toggle(obj) {
				  var el = document.getElementById(obj);
	  			el.style.display = (el.style.display != "none" ? "none" : "block" );
				}
				</script>';
      	self::$cms->content['localcss'].=
					"\n.news {}".// les styles vides peuvent être supprimés: c'est juste pour démo
					"\n.news_line {}".
					"\n.news_date {font-size:xx-small;}".
					"\n.news_datejj {}".
					"\n.news_datemm {}".
					"\n.news_dateaa {}".
					"\n.news_datesep1 {}".
					"\n.news_datesep2 {}".
					"\n.news_title {font-size:small; color:#FF6600;font-weight: bold}".
					"\n.news_read {font-size:xx-small;}".
					"\n.news_author {}".
					"\n.news_body {}".
					"\n"
// démo démo démo !!!!!!!!!! à supprimer dans la version de prod: pas beau, mais pour démo: création d'un bloc avec année dessus et jj/mm dessous
					."\n.news_line {clear:both}".
					"\n.news_date {display:inline-block; float:left;height:40px;width:60px;background-color:#9ecfff;text-align:center;font-weight:bold;margin-bottom:10px}".
					"\n.news_datejj{font-size:medium;position:relative;top:20px}.news_datemm{font-size:medium;position:relative;top:20px}".
					"\n.news_dateaa{position:relative;top:-20px;float:left;width:100%;height:50%;background-color:#ffcc00;font-size:small;}".
					"\n.news_datesep1 {font-size:medium;position:relative;top:20px}".
					"\n.news_datesep2 {display:none} .news_body{clear:both}"
//fin démo - fin démo
     			;
		}
		$out='<div class="news">';
		if (empty(self::$cms->news)) self::$cms->news = (array)unserialize(@file_get_contents(self::$cms->cpath.'/news.dta'));
		$fnews = & self::$cms->news;
		ksort($fnews);
		$xbr='';
		if ($opt=='d') $out.='<marquee behavior="scroll" direction="up" width="100%" height="100" scrollamount="1" scrolldelay="0" onmouseover="this.stop()" onmouseout="this.start()">';
		foreach ($fnews as $clef => $valeur	) {
			if  ((($_SESSION['zite_user']!='') and ($valeur[6])) or (($_SESSION['zite_user']=='') and ($valeur[5]))) {
  			$out.= $xbr.'<div class="news_line"><span class="news_date"><span class="news_datejj">'.substr($valeur[3],0,2).'</span><span class="news_datesep1">/</span><span class="news_datemm">'.substr($valeur[3],3,2).'</span><span class="news_datesep2">/</span><span class="news_dateaa">'.substr($valeur[3],6,4).'</span>'.'</span> <a style="text-decoration: none" href="javascript:toggle(\'P'.$clef.'\')"><span class="news_title">'.$valeur[1].'</span><span class="news_read"> (lire l\'article)</span></a>';
				$xbr=$opt!='d'?'<br />':'<hr />';
			  $out.='<div class="news_body" id="P'.$clef.'" '.($opt!='o'?' style="display:none;"':'').'><br />'.$valeur[2].'<br /><hr /></div></div>';
			}
		}
		if ($opt=='d') $out.='<hr /></marquee>';
		$out.="</div>";
		return $out;
	}
	function dojob($opt="") {
		parent::dojob();
//==============================================================================		

	$out ="";

//
//  Actualité (stockée dans le fichier dta)
//
$file2 = self::$cms->cpath.'/news.dta';
self::$cms->news = (array)unserialize(@file_get_contents($file2));
$fnews = & self::$cms->news;
/* Code pour conversion ancien format -> nouveau format (à lancer une fois)
foreach ($fnews as $clef => $valeur	) {
	  	$fnews[$clef][5] = ($fnews[$clef][5]=='on'?'1':'0');
	  	$fnews[$clef][6] = ($fnews[$clef][6]=='on'?'1':'0');
	  	$fnews[$clef][7] = ($fnews[$clef][7]=='on'?'1':'0');
}
self::$cms->writedata($file2, $fnews);*/


	if (isset($_POST['news_id'])) {//valeur renvoyé par le formulaire
	  $news_id =      $_POST['news_id'];
		$news_title =   stripslashes($_POST['news_title']);
		$news_content = stripslashes($_POST['source']);
		$news_date =    $_POST['news_date'];
		$news_author =  $_POST['news_author'];
		$news_public=   $_POST['news_public'];
		$news_private=  $_POST['news_private'];
		$news_scroll=   $_POST['news_scroll'];
		$news_date=     $_POST['news_date'];
	} elseif ((isset(self::$cms->args[2])) and (self::$cms->args[2]!="new")) {//valeur initiale du formulaire
  	$news_id =      self::$cms->args[1];
		$news_title =   $fnews[$news_id][1];
		$news_content = str_replace('\\"','\"',$fnews[$news_id][2]);
		$news_date =    $fnews[$news_id][3];
		$news_author =  $fnews[$news_id][4];
		$news_public =  $fnews[$news_id][5];
		$news_private = $fnews[$news_id][6];
		$news_scroll=   $fnews[$news_id][7];
	} else {// formulaire vierge
	  $news_id=0;
	  $news_title = $this->get_message('news_ini_title');
	  $news_content = $this->get_message('news_ini_cont');
	  $news_date = date ("d/m/Y H:i",time());
	  $news_author=$_SESSION['zite_user'];
	  $news_public="0";
	  $news_private="0";
	  $news_scroll="0";
	}
	//
//if (!in_array('logon',$group)) $group[]='logon';  // Tous les utilisateurs font partie de ce groupe
	if (isset($_POST['abort'])) {
  	self::$cms->args[2]='';
	} elseif (isset($_POST['save']) && ($_POST['save']==1)) {
		if (isset($_POST['newsdelete'])) {  // effacement de la proposition
	  	if (isset($fnews[$news_id]))	unset($fnews[$news_id]);
	  } else {
  	  if (isset($_POST["mod_date"])) {
			    if (isset($fnews[$news_id]))	unset($fnews[$news_id]);
  	    $news_date = date ("d/m/Y H:i",time());
    	  $news_author=$_SESSION['zite_user'];
	    }
	    $unenews=array(1 => $news_title,$news_content,$news_date,$news_author,($news_public?'1':'0'),($news_private?'1':'0'),($news_scroll?'0':'1'));
	    if ($news_id==0) {
				array_unshift($fnews, $unenews);
			} else {
				$fnews[$news_id]=$unenews;
			}
		}
		$fnews=array_values($fnews);
		self::$cms->writedata($file2, $fnews);
	  self::$cms->args[2]='';
	}
/*			$fnews[$news_id][1] = $news_title;
	  	$fnews[$news_id][2] = str_replace('\\"','"',$news_content);
	  	$fnews[$news_id][3] = $news_date;
	  	$fnews[$news_id][4] = $news_author;
	  	$fnews[$news_id][5] = ($news_public=='on'?'on':'off');
	  	$fnews[$news_id][6] = ($news_private=='on'?'on':'off');
	  	$fnews[$news_id][7] = ($news_scroll=='on'?'on':'off');
*/
//
// formulaire de paramétrage général
//
$action = self::$cms->args[2];
$del = self::$cms->args[2]=='delete';  // Mode suppression actif

$out .= '<form method="post" action="'.self::$cms->base.implode('|',self::$cms->args).'" enctype="multipart/form-data"><table class="ztable">';
$out .= '<tr><td><h2><center>'.$this->get_message('title');
if (self::$cms->args[2])
  $out .= '<br>'.$this->get_message( $del ? 'confirmdel' : 
                   (self::$cms->args[2]=='new' ? $this->get_message('news_add') : 
                         (self::$cms->args[2]=='modif' ? $this->get_message('news_mod') : 
                               $this->get_message('news_right'))));
$out .='</center></h2><td></tr></table><table class="ztable">';
if ( ($action=='togpub') or ($action=='togpriv') or ($action=='togscrl') or ($action=='mupnews') or ($action=='mdwnews')) {
  if     ($action=='togpub')  { $fnews[$news_id][5] = ($news_public?'0':'1'); }
  elseif ($action=='togpriv') { $fnews[$news_id][6] = ($news_private?'0':'1'); }
  elseif ($action=='togscrl') { $fnews[$news_id][7] = ($news_scroll?'0':'1'); }
  elseif ($action=='mupnews') { $fnews[99999]=$fnews[$news_id];    $fnews[$news_id]=$fnews[$news_id-1];    $fnews[$news_id-1]=$fnews[99999];  unset($fnews[99999]);  }
  elseif ($action=='mdwnews') { $fnews[99999]=$fnews[$news_id];    $fnews[$news_id]=$fnews[$news_id+1];    $fnews[$news_id+1]=$fnews[99999];  unset($fnews[99999]);  }
  self::$cms->writedata($file2, $fnews);
  self::$cms->news  = (array)unserialize(@file_get_contents($file2));
  self::$cms->args[2]='';
} elseif (self::$cms->args[2])  {
  	$out .= '<tr><td>';
  	$out .= '<input name="news_id" type="hidden"  id="news_id" value="'.$news_id.'" />';
    $out .= '</td></tr>';
  	$out .= '<tr><td align="right">'.$this->get_message('news_author').' : </td><td><input name="news_author" type="text" readonly size=30 id="news_author" value="'.$news_author.'" /></td>';
  	$out .= '    <td align="right">'.$this->get_message('news_date').' : </td><td><input name="news_date" type="text" readonly id="news_date" value="'.$news_date.'" /></td></tr>';
  	$out .= '<tr><td align="right">'.$this->get_message('news_title').' : </td><td colspan=3><input name="news_title" type="text" '.($del ? ' readonly':'').' id="news_title" size="80%" value="'.$news_title.'" /></td></tr>';
  	if (!$del) {
      $out .= '<tr><td align="left">';
      $out .= '<input name="news_public"  type="hidden" id="news_public"  value='.$news_public. ' />';
  	  $out .= '<input name="news_private" type="hidden" id="news_private" value='.$news_private.' />';
  	  $out .= '<input name="news_scroll"  type="hidden" id="news_scroll"  value='.$news_scroll. ' />';
      $out .= '</td></tr>';
					// Chargement de l'éditeur
			$r_in = array('<?', '<?php', '?'.'>', '<?=');
			$r_out = array('<!--?', '<!--?php', '?-->', '<!--?=');
			$edfile = self::$cms->zpath. '/'.self::$cms->get_data('editor').'.php';
			$content = $news_content;
			if (file_exists($edfile)) {
				// Editeur externe
	  	  $out .= '<tr><td colspan="4">';
				@ob_start();
				include($edfile);
				$out .= @ob_get_clean();
  	  	$out .= '</td></tr>';
		   	$out .= '<tr><td colspan="4"><input type="submit" name="submit" value="'.$this->get_message('send').'" />';
		    if (self::$cms->args[2]=="modif")	$out .= '<input type="submit" name="mod_date" value="'.$this->get_message('mod_date').'" />';
			}//Fin chargement éditeur
  	}	else {
			$out .= '<tr><td colspan="4"><div width=90% style="border:1px solid #000000">'.$news_content.'</div><br /></td></tr>';
	   	$out .= '<tr><td colspan="4"><input type="submit" name="newsdelete" value="'.$this->get_message('delete').'" />';
		}
    $out .= '<input type="submit" name="abort" value="'.self::$cms->get_message('abort').'" />';
    $out .= '<input name="save" type="hidden" value="1" />';
    $out .= '</td></tr>';
  	$out .= '</table></form>';
}
//
// liste de tous les articles
//
$out .= '<table class="ztable">';
$out .= '<tr><td colspan=6 align="left">'.count($fnews).' '.$this->get_message('subtitle').'</td><td colspan=2 align="right"><a href="'.self::$cms->base.'news||new"><img src="deco/a.png" />'.$this->get_message('add_news').'</a></td></tr>';
$out .= '<tr class="headcolor">';
$out .= '<td>N°</td>';
$out .= '<td>'.$this->get_message('news_title').'</td>';
$out .= '<td>'.$this->get_message('news_date').'</td>';
$out .= '<td>'.$this->get_message('news_author').'</td>';
$out .= '<td align="center">'.$this->get_message('tab_public').'</td>';
$out .= '<td align="center">'.$this->get_message('tab_private').'</td>';
$out .= '<td align="center">'.$this->get_message('tab_scroll').'</td>';
$out .= '<td align="center">'.$this->get_message('tab_actions').'</td>';
$out .= '</tr>';

//ksort($f2);
$fc=count($fnews);

$i=0;foreach ($fnews as $clef => $valeur	) {
	$out .= '<tr class="'.(++$i%2 ? 'oddcolor' : 'evencolor').'">';
  $out .= '<td>'.$clef.'</td>';
	if (($_SESSION['zite_admin']>1) or ($_SESSION['zite_user']==$valeur[4]))
        $out .= '<td><a href="'.self::$cms->base.'news|'.$clef.'|modif">'.$valeur[1].'</a></td>';
  else  $out .= '<td>'.$valeur[1].'</td>';
  $out .= '<td>'.$valeur[3].'</td>';
  $out .= '<td>'.$valeur[4].'</td>';
	if (($_SESSION['zite_admin']>1) or ($_SESSION['zite_user']==$valeur[4])) {
  	$out .= '<td align="center"><a href="'.self::$cms->base.'news|'.$clef.'|togpub"><img src="deco/s'.$valeur[5].'.png" /></a></td>';
  	$out .= '<td align="center"><a href="'.self::$cms->base.'news|'.$clef.'|togpriv"><img src="deco/s'.$valeur[6].'.png" /></a></td>';
  	$out .= '<td align="center"><a href="'.self::$cms->base.'news|'.$clef.'|togscrl"><img src="deco/s'.$valeur[7].'.png" /></a></td>';
  	$out .= '<td align="center">'.(($clef)?  '<a href="'.self::$cms->base.'news|'.$clef.'|mupnews"><img src="deco/u1.png" /></a> ':'<img src="deco/u0.png" /> ');
  	$out .=                       (($clef!=$fc-1)?'<a href="'.self::$cms->base.'news|'.$clef.'|mdwnews"><img src="deco/d1.png" /></a> ':'<img src="deco/d0.png" /> ');
  	$out .=                                     '<a href="'.self::$cms->base.'news|'.$clef.'|delete"><img src="deco/e1.png" /></a></td>';
  }
  else {
    $out .= '<td align="center"><img src="deco/x'.$valeur[5].'.png" /></td>';
    $out .= '<td align="center"><img src="deco/x'.$valeur[6].'.png" /></td>';
    $out .= '<td align="center"><img src="deco/x'.$valeur[7].'.png" /></td>';
    $out .= '<td align="center"><img src="deco/u0.png" /> <img src="deco/d0.png" /> <img src="deco/e0.png" /></td>';
  }  
  $out .= '</tr>';
}
$out .= '</table>';

return $out;

}

}

?>

a+
Jean-Paul

ps: j'ai laissé, le code de démo css: normalement il faut le virer

Dernière modification par jpg (20/10/2010 23:22:40)

Hors ligne

#82 20/10/2010 21:06:23

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

Re : Module de gestion de l'actualité

je revient sur l'option de pouvoir modifier la date !!
cela me semble important car lorsque l'on créer un site on peut utiliser la date de la news comme une date de rendez vous ou d'événement !!

edit : j'ai modifier le tous le code de news.php ci dessus et mon site est tous blanc smile

Dernière modification par snypi (20/10/2010 21:15:28)


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

#83 20/10/2010 21:38:27

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

Re : Module de gestion de l'actualité

snypi a écrit :

edit : j'ai modifier le tous le code de news.php ci dessus et mon site est tous blanc smile

Je viens de vérifier avec une b3: ça marche.
Tu as fait une manip particulière ?

Hors ligne

#84 20/10/2010 22:02:36

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

Re : Module de gestion de l'actualité

nouvelle installe sous wamp
j'active news poll codemiror xmenu via le menu module
j'insère une news avec le menu actualité
je créer la page php en panneau haut (position 7) avec le code <?php echo $this->page_module('news','','show');?>
puis copy colle le code donnée à la place de news.php rien d'autre (j'ai pas décommenté)
j'actualise ma page sous wamp et oups c'est blanc wink


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

#85 20/10/2010 22:05:27

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

Re : Module de gestion de l'actualité

oui, c'est la manip que j'ai fait moi aussi pour tester.
Par contre, tu vas rire, j'ai eu aussi une page blanche car j'avais oublié de mettre public et login roll
Tu n'aurais pas fait la même chose ?

Hors ligne

#86 20/10/2010 22:41:02

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

Re : Module de gestion de l'actualité

non j'avais bien les 3 d'activé !!!


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

#87 20/10/2010 22:44:32

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

Re : Module de gestion de l'actualité

Est-ce que tu as des messages d'erreurs en passant site_debug à dev. ?

Hors ligne

#88 20/10/2010 23:18:48

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

Re : Module de gestion de l'actualité

excuse j'ai pas le réflex mais c'est noté à la prochaine page blanche j'y passe !!
alors pour celle ci j'ai ceci

Parse error: parse error in C:\wamp\www\ziteplus\zite\module\news.php on line 69

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

#89 20/10/2010 23:24:38

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

Re : Module de gestion de l'actualité

Ok, j'ai vu le problème: c'est lors du couper/coller.
j'ai modifié le message précédent.
Soit tu refait une copie complète, soit tu change la ligne

href="javascript:toggle(\'P'.$clef.'\')"><span class="news_title">'.$valeur[1].'</span><span class="news_read"> (lire l'article)</span></a>';

par

href="javascript:toggle(\'P'.$clef.'\')"><span class="news_title">'.$valeur[1].'</span><span class="news_read"> (lire l\'article)</span></a>';

D'ailleurs, c'est un bon bug: cela a permis de voir qu'il reste du texte non paramétré dans le code wink
a+
jp

Dernière modification par jpg (20/10/2010 23:25:14)

Hors ligne

#90 20/10/2010 23:37:52

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

Re : Module de gestion de l'actualité

nickel !!! c'était mon idée de départ pour designé les dates mais quand j'ai découvert l'autre script je me suis acharné dessus!!
celui ci vas répondre à 99% des utilisateur smile

sinon quand pensez vous de laissé la date modifiable ??


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

#91 20/10/2010 23:46:46

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

Re : Module de gestion de l'actualité

snypi a écrit :

nickel !!! c'était mon idée de départ pour designé les dates mais quand j'ai découvert l'autre script je me suis acharné dessus!!
celui ci vas répondre à 99% des utilisateur smile

big_smile

snypi a écrit :

sinon quand pensez vous de laissé la date modifiable ??

à priori que du bien wink

mais on va voir avec PYDou s'il y a une raison pour mettre une date non modifiable directement.

a+
Jean-Paul

Finalement, j'en vois peut-être une: trouver un bon gestionnaire de date (un peu comme celui qui permet de choisir une couleur dans le module photoshow) wink

Hors ligne

#92 21/10/2010 13:47:29

pydou
Membre
Lieu : Caluire
Inscription : 01/04/2010
Messages : 110
Site Web

Re : Module de gestion de l'actualité

2 jours d'absence et çà discute ferme ... smile:):)

1)date modifiable : pas d'état d'âme... je n'ai pas de raison d'interdire la modification, mais il me semble important de conserver les 2 boutons existants pour plus de simplicité pour ceux qui le désirent. j'ai un très bon gestionnaire de date en JS qui 'appelle tigra-calendar pour mon site, avec code js, CSS et exemples html, paramétrable us/eu, ....

2) sur le CSS par défaut incorporé au code, pas d'état d'âme non plus mais dans mon cas (regardez mon site par exemple) j'ai plusieurs  modes d'affichage avec des différences importantes
- affichage ou non de la date
- défilant ou non
- fermé ou ouvert par défaut (si ouvert, pas de javascript sur le div, reste ouvert)
- taille des polices différentes
- affichage différent si on est logué ou pas et entre défilant ou pas

il me faut donc plus de paramètres que le simple  'd' ou 'o' ...

Dans tous les cas, l'idée d'intégrer du CSS lors de l'ajout d'un module me semble nécessaire, mais ou et comment ??? Toutes les idées sont bonnes et la meilleure sera celle que le concepteur juge la mieux adaptée à l'existant.

Je vais fabriquer un fichier news.css qui sera livré avec le module, la façon de l'intégrer restera entre les mains de JPG

A plusieurs, on y arrivera, car je sens arriver mes limites en php dans vos posts (ou à défaut une connaissance insuffisante de ZITE+ pour bien intégrer ces concepts)


PYDou

Dernière modification par pydou (21/10/2010 13:58:35)


Consultant en sécurité informatique (ISO 27001 Lead Auditor, ISO 27005 Risk Manager)
Amateur de JAZZ, Voile, Bridge

Hors ligne

#93 21/10/2010 14:51:01

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

Re : Module de gestion de l'actualité

heu tu parle de limite en php mais tu est un dieu à mes yeux !! j'arrive à peine à le lire wink

il me faut donc plus de paramètres que le simple  'd' ou 'o' ...

peut être la possibilité d'ajouté une classe à la div (P0 , P1 , P2)
exemple un champ par défault remplis avec la classe .news (ce qui fait que l'utilisateur à déjà un design de base configurer)
avec la possibilité de le modifier .news2 et avec un css approprier comme en css on peut cumuler les classes cela peut faire pas mal de possibilité


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

#94 21/10/2010 15:08:23

pydou
Membre
Lieu : Caluire
Inscription : 01/04/2010
Messages : 110
Site Web

Re : Module de gestion de l'actualité

non, il faut 2 choses
1) choisir les champs que l'on affiche (le CSS ne le peut pas à mon sens)
2) formater (le CSS est là pour çà)

Je retravaille le sujet qui devrait donner ceci pour le paramétrage

// valeur par défaut des paramètres
    $show_open=$show_scrl=$show_rdar=$show_date=$show_auth=false;
    $size_scrl=100;
    $css_base="news";


// lecture des paramètres d'appel
    while (strlen($opt)>0) {
      $p=(strpos($opt,";")?substr($opt,0,strpos($opt,";")):$opt);  
      $opt=(strpos($opt,";")?substr($opt,strpos($opt,";")+1,255):'');
      $po=(strpos($p,":")?substr($p,0,strpos($p,":")):$p); 
      $pa=(strpos($p,":")?substr($p,strpos($p,":")+1,255):'');
      switch ($po) {
        case "SCROLL"  : $show_open=true; break;                               // SCROLL TOGGLE 
        case "SCSIZE"  : $show_scrl=true; if($pa=='') $size_scrl=$pa;  break;  // SCROLL SIZE 
        case "SHREAD"  : $show_rdar=true; break;                               // "A LIRE"  TOGGLE
        case "SHDATE"  : $show_date=true; break;                               // DATE TOGGLE
        case "SHAUTH"  : $show_auth=true; break;                               // AUTHOR TOGGLE
        case "CSS" : $css_base=$pa; break;                                        // Base des éléments du CSS
        }

ceci pour la syntaxe du paramètre d'appel :    "CSS:news_perso;SCROLL;SCSIZE:100;SHDATE;SHAUTH"   (chacun est optionnel)
et un exemple (pour voir si çà marche) de css associé

/* CSS Document */
/* Css des news par défaut */
.news {}
.news_line {}
.news_date {font-size:xx-small;}
.news_datejj {}
.news_datemm {}
.news_dateaa {}
.news_datesep1 {}
.news_datesep2 {}
.news_title {font-size:small; color:#66FF00;font-weight: bold}
.news_read {font-size:xx-small;}
.news_author {}
.news_body {}

/* CSS des news si appelé avec le paramètre css:newsd;  */
.news_d {background-color:#234567}
.news_d_line { color : #ff00ff}
.news_d_date { font-size:xx-small;}
.news_d_datejj { font-size : 1}
.news_d_datemm { font-size : 2 }
.news_d_dateaa { font-size : 3 }
.news_d_datesep1 {color : #ff0000}
.news_d_datesep2 {color : #00ff00}
.news_d_title {font-size:small; color:#FF6600;font-weight: bold}
.news_d_read {font-size:xx-small;}
.news_d_author { color : #00ffff}
.news_d_body { color : #ffff00 }

çà permet d'avoir tout plein de possibilités d'appel en ne précisant que la base du CSS  ("news"  ou "news_d" dans mon cas), et par défaut : "news"

PYDou

Dernière modification par pydou (21/10/2010 15:13:06)


Consultant en sécurité informatique (ISO 27001 Lead Auditor, ISO 27005 Risk Manager)
Amateur de JAZZ, Voile, Bridge

Hors ligne

#95 21/10/2010 15:51:27

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

Re : Module de gestion de l'actualité

oui mais la tu limitte les possibilités (quoique c'est déja énorme ce que tu propose)
mais imaginons que je veut un code couleur par rapport à une news (exemple : culturelle, cinéma, sportif , etc )
je ne peut pas alors qu'avec une balise à remplir on fait les codes qu'on veut !!!
mais bon je donne un avis et il n'est pas à prendre à la lettre
c'est déja un très gros boulot que vous faite et je suis conscient des limittes au dévellopement d'un module dans un forum !!


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

#96 21/10/2010 17:01:35

pydou
Membre
Lieu : Caluire
Inscription : 01/04/2010
Messages : 110
Site Web

Re : Module de gestion de l'actualité

C'est encore une nouvelle demande, çà de pouvoir changer le css en fonction de la catégorie d'article ... A ce jour, il n'y a pas de catégories.
Je pense que le module est suffisamment paramétrable comme çà, la seule chose que j'y ajouterai volontiers est la gestion des utilisateurs pouvant lire un article (idée de JPG).

En attendant, essaye le code suivant pour la fonction doshow
(fichier news.css et syntaxe d'appel vus dans le précédent post à placer dans le répertoire zite/module/ )

l'inconvénient d'utiliser  self::$cms->content['localcss']  est que çà charge le CSS dans html à chaque clic ... JPG y aurait-il moyen de faire autrement ?

	function doshow($opt=""){
		static $isfirstnewsjs=0;
		if ($isfirstnewsjs++==0) {
			self::$cms->content['js'].='<script language="Javascript" type="text/javascript">
				function toggle(obj) {
				  var el = document.getElementById(obj);
	  			el.style.display = (el.style.display != "none" ? "none" : "" );
				}
				</script>';
		}

// valeur par défaut des paramètres
    $show_open=$show_scrl=$show_rdar=$show_date=$show_auth=false;
    $size_scrl=100;
    $css_base="news";
    
// chargement du CSS spécifique au module
static $isfirstnewscss=0;
if ($isfirstnewscss++==0) {
  $cssfile="zite/module/news.css"; 
  $css=file($cssfile); 
  self::$cms->content['localcss'].=chr(10).chr(13);
  for( $i = 1 ; $i < count($css) ; $i++ ) self::$cms->content['localcss'].=$css[$i];
  }

// lecture des paramètres d'appel
    while (strlen($opt)>0) {
      $p=(strpos($opt,";")?substr($opt,0,strpos($opt,";")):$opt);  
      $opt=(strpos($opt,";")?substr($opt,strpos($opt,";")+1,255):'');
      $po=(strpos($p,":")?substr($p,0,strpos($p,":")):$p); 
      $pa=(strpos($p,":")?substr($p,strpos($p,":")+1,255):'');
      switch ($po) {
        case "SCROLL"  : $show_open=true; break;                               // SCROLL TOGGLE 
        case "SCSIZE"  : $show_scrl=true; if($pa=='') $size_scrl=$pa;  break;  // SCROLL SIZE 
        case "SHREAD"  : $show_rdar=true; break;                               // "A LIRE"  TOGGLE
        case "SHDATE"  : $show_date=true; break;                               // DATE TOGGLE
        case "SHAUTH"  : $show_auth=true; break;                               // AUTHOR TOGGLE
        case "CSS"     : $css_base=$pa; break;                                 // Base des éléments du CSS
        }
/* */
    }
    if ($show_scrl) $show_open=true;  // forcer ouvert si scrolling !!!

    $out='<div class="'.$css_base.'">';

		if (empty(self::$cms->news)) self::$cms->news = (array)unserialize(@file_get_contents(self::$cms->cpath.'/news.dta'));
		$fnews = & self::$cms->news;
		ksort($fnews);
		$xbr='';
		if ($show_scrl) $out.='<marquee behavior="scroll" direction="up" width="100%" height="'.$size_scrl.'" scrollamount="1" scrolldelay="0" onmouseover="this.stop()" onmouseout="this.start()">';
		foreach ($fnews as $clef => $valeur	) {
			if(   ((!$show_open) or ($valeur[7]))    
         and(  (($_SESSION['zite_user']!='') and ($valeur[6])) 
             or(($_SESSION['zite_user']=='') and ($valeur[5])))) {
        $out.= $xbr.'<div class="'.$css_base.'line">';
        if (!$show_date) {
          $out.= '<span class="'.$css_base.'_date">';
          $out.= '<span class="'.$css_base.'_datejj">'.substr($valeur[3],0,2).'</span>';
          $out.= '<span class="'.$css_base.'_datesep1">/</span>';
          $out.= '<span class="'.$css_base.'_datemm">'.substr($valeur[3],3,2).'</span>';
          $out.= '<span class="'.$css_base.'_datesep2">/</span>';
          $out.= '<span class="'.$css_base.'_dateaa">'.substr($valeur[3],6,4).'</span>';
          $out.= '</span>';
        }
        if (!$show_open) $out.= '<a style="text-decoration: none" href="javascript:toggle(\'P'.$clef.'\')">';
        $out.= '<span class="'.$css_base.'_title">'.$valeur[1].'</span>';
        if (!$show_rdar) $out.= '<span class="'.$css_base.'_read"> (lire l\'article)</span>';
        if (!$show_open) $out.= '</a>';
        $out.='<div class="'.$css_base.'_body" id="P'.$clef.'" '.($opt!='o'?' style="display:none;"':'').'><br />'.$valeur[2].'<br /><hr />';
        $out.= '</div></div>';
			}
		}
		if ($show_scrl) $out.='</marquee>';
    $out.="</div>";
		return $out;
	}

Pour dépasser les standards, le mieux est souvent de prendre le code de base et de se faire soi même son code.


Consultant en sécurité informatique (ISO 27001 Lead Auditor, ISO 27005 Risk Manager)
Amateur de JAZZ, Voile, Bridge

Hors ligne

#97 21/10/2010 17:37:15

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

Re : Module de gestion de l'actualité

pydou a écrit :

2 jours d'absence et çà discute ferme ... smile:):)

1)date modifiable : pas d'état d'âme... je n'ai pas de raison d'interdire la modification, mais il me semble important de conserver les 2 boutons existants pour plus de simplicité pour ceux qui le désirent. j'ai un très bon gestionnaire de date en JS qui 'appelle tigra-calendar pour mon site, avec code js, CSS et exemples html, paramétrable us/eu, ....

Il est visible en démo ?
D'ailleurs, si quelqu'un en connait d'autres, cela m'intéresse au plus haut point smile pour une future intégration dans ZitePLUS 092

pydou a écrit :

2) sur le CSS par défaut incorporé au code, pas d'état d'âme non plus mais dans mon cas (regardez mon site par exemple) j'ai plusieurs  modes d'affichage avec des différences importantes
- affichage ou non de la date
- défilant ou non
- fermé ou ouvert par défaut (si ouvert, pas de javascript sur le div, reste ouvert)
- taille des polices différentes
- affichage différent si on est logué ou pas et entre défilant ou pas

il me faut donc plus de paramètres que le simple  'd' ou 'o' ...

Dans tous les cas, l'idée d'intégrer du CSS lors de l'ajout d'un module me semble nécessaire, mais ou et comment ??? Toutes les idées sont bonnes et la meilleure sera celle que le concepteur juge la mieux adaptée à l'existant.

Je vais fabriquer un fichier news.css qui sera livré avec le module, la façon de l'intégrer restera entre les mains de JPG

A plusieurs, on y arrivera, car je sens arriver mes limites en php dans vos posts (ou à défaut une connaissance insuffisante de ZITE+ pour bien intégrer ces concepts)


PYDou

Il y a un peu des deux ... non je blague wink

Pour ma part je pense que transmettre le css en paramètre n'est pas la bonne solution.
On peut (ou très exactement ou va pouvoir) tout faire ou presque avec peu de paramètre et du css bien fait wink
car on peut tout à fait afficher ou non des champs via css.
Le point qui te manque ... c'est les évolutions prochaines de zitePLUS wink et celles déjà faite en 091 wink
Je crois que c'est Stefpei (pardon si je me trompe roll) qui avait suggéré une évolution qui va être faite prochainement: un css possible pour une page (ou un panneau) donnée.
Cela me semble une façon "élégante" et efficace de résoudre cette problématique tout en gardant une structure de module simple à comprendre (en particulier au niveau des paramètre d'appel)

Mais même en 091, il est tout à fait possible de le faire via css.
Dans ta page ou tu appelles la fonction doshow(), tu mets aussi la référence à ton css particulier
par exemple avec le code:

$this->content['css'].='<link href="news.css" rel="stylesheet" type="text/css" />';

C'est pas simple ça ?
Et si tu as trois pages avec trois affichage différents, tu peux avoir trois css différents et un seul sera chargé.

Cela fait partie des grosses évolutions de la 091, mais qui ne sont pas encore documentés...
... mais qui sont faites pour simplifié la vie du développeur wink

a+
Jean-Paul

Hors ligne

#98 21/10/2010 18:20:49

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

Re : Module de gestion de l'actualité

ha bah oui mais on nous dit pas tout !!!!

je trouve cette évolution fort sympathique et qui vas réglé pas mal de détail en design

A ce jour, il n'y a pas de catégories.

pas besoin d'en créer la liberté du css te le permet ! mais faut pouvoir lui assigné une classe css!
néanmoins on trouve toujours le moyen de faire ce que l'on veut et il y a déja en vue du code fournie une panoplie très très large et fortement exploitable

jpg : avec ta dernière version de code fournie les news n'apparaisse pas à la personne non logué j'ai un message Désolé...
Vous n'avez pas accès à cette section.

Dernière modification par snypi (21/10/2010 18:24:02)


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

#99 21/10/2010 18:32:49

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

Re : Module de gestion de l'actualité

snypi a écrit :

jpg : avec ta dernière version de code fournie les news n'apparaisse pas à la personne non logué j'ai un message Désolé...
Vous n'avez pas accès à cette section.

Bon, je présume que "public" est coché wink
Est-ce que tes visiteurs ont le droit d'utiliser le module ?

a+
jp

ps: @PYDou: D'ailleurs, cela ne serait pas plutôt "publique" ?

Hors ligne

#100 21/10/2010 19:30:06

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

Re : Module de gestion de l'actualité

salut
public coché et la page est accessible à tous le monde mais message "désolé"
pourquoi ton code marche chez toi ????


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