Forum ZitePLUS

La communauté des utilisateurs du CMS ZitePLUS

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

#1 01/06/2014 12:13:39

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

Amélioration du module news

Salut à tous

Une petite amélioration, à intégrer si vous le souhaitez dans le module news.
J'ai fait en sorte que en mode "news ouvertes", la case "défilement" (qui normalement ne sert à rien) contrôle l'affichage par défaut de la news. On peux ainsi masquer les vieilles news par défaut.

[== Indéfini ==]
<?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.1a26           PYD: Création du module
  1.1 du 14/10/2010  0.9.1a26           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  0.9.1b2            JPG: intégration class CSS
	1.3 du 21/10/2010                     PYD: Correction si fichier news.dta vide
	1.4 du 24/10/2010                     JPG: correction erreurs
	1.5 du 25/10/2010  0.9.1b2            PYD: ajout calendrier et affichage auteur
                                             hauteur du marquee dans l'appel
                                             script ouverture/fermeture modifié pour
                                             élimination du paramètre "o"
	1.6 du 26/10/2010 0.9.1b4             JPG: intégration calendrier modifié ziteplus + gestion cas sans date
	                                           doshow: reprise 1.4 avec affichage auteur
	1.7 du 27/10/2010 0.9.1b4             PYD: doshow: paramétrage permettant option déroulante ET ouverte
	1.8 du 28/10/2010 0.9.1b4             JPG: doshow: retouches mineures au code
	1.9 du 18/02/2012 0.9.2.rc3           JPG: suite changement tinymce.php
	proposition 1.10 du 01/06/14		Super_chemist: doshow: En mode 'o', la case défilement contrôle si la news est ouverte par défaut.

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');? >
Pour avoir des news défilantes et ouvertes:   < ?php echo $this->page_module('news','do','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 news_toggle(obj) {
				  var el = document.getElementById(obj);
	  			el.style.display = (el.style.display != "none" ? "none" : "block" );
				}
				</script>';
		}
		$out='<div class="news">';
		if (empty(self::$cms->news)) self::$cms->news = (array)unserialize(@file_get_contents(self::$cms->cpath.'/news.dta'));
		$opt=strtolower($opt);		$optd=strpos($opt,'d')!==false;		$opto=strpos($opt,'o')!==false;
		if ($optd) $out.='<marquee behavior="scroll" direction="up" width="100%" height="100" scrollamount="1" scrolldelay="0" onmouseover="this.stop()" onmouseout="this.start()">';
		foreach (self::$cms->news as $clef => $valeur	) {
			if  ( ((!empty($_SESSION['zite_usergroup']) && ($valeur[6])) || (empty($_SESSION['zite_usergroup']) && ($valeur[5]))) && (!$optd||$valeur[7])) {
  			$out.= '<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> '
							.'<span class="news_title"><a style="text-decoration:none" href="javascript:news_toggle(\'P'.$clef.'\')">'.$valeur[1].'</a></span>'
							.'<span class="news_author"> '.$this->get_message('from_author').' '.$valeur[4].'</span>'
							.'<span class="news_read"><a style="text-decoration: none" href="javascript:news_toggle(\'P'.$clef.'\')"> '.$this->get_message('read_art').'</a></span>'
			  			.'<div class="news_body" id="P'.$clef.'" '.($opto?($valeur[7]?'':' style="display:none;"'):' style="display:none;"').'><br />'.$valeur[2].'<br /><hr /></div></div>';
			}
		}
		if ($optd) $out.='</marquee>';
		$out.="</div>";
		return $out;
	}
//==============================================================================
	function dojob($opt="") {
		parent::dojob();
		if (!$this->isModuleChg()) return self::$cms->get_message('not_allowed');
		$out ="";
//
//  Actualité (stockée dans le fichier dta)
//
$file2 = self::$cms->cpath.'/news.dta';
self::$cms->news = file_exists($file2)?(array)unserialize(@file_get_contents($file2)):array();
$fnews = & self::$cms->news;
	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])) && (self::$cms->args[2]!="new")) {//valeur initiale du formulaire
  	$news_id =      self::$cms->args[1];
		$news_title =   $fnews[$news_id][1];
		$news_content = $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=-1;
	  $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 (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'];
	    }
      if (empty($news_date)) $news_date=date("d/m/Y H:i",time());
	    $unenews=array(1 => $news_title,$news_content,$news_date,$news_author,($news_public?'1':'0'),($news_private?'1':'0'),($news_scroll?'1':'0'));
	    if ($news_id==-1) {
				array_unshift($fnews, $unenews);
			} else {
				$fnews[$news_id]=$unenews;
			}
		}
		$fnews=array_values($fnews);
		self::$cms->writedata($file2, $fnews);
	  self::$cms->args[2]='';
	}
//
// 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" id="news_form" 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') || ($action=='togpriv') || ($action=='togscrl') || ($action=='movup') || ($action=='movdn')) {
  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=='movup') { $xnews=$fnews[$news_id]; $fnews[$news_id]=$fnews[$news_id-1]; $fnews[$news_id-1]=$xnews;  }
  elseif ($action=='movdn') { $xnews=$fnews[$news_id]; $fnews[$news_id]=$fnews[$news_id+1]; $fnews[$news_id+1]=$xnews;  }
  self::$cms->writedata($file2, $fnews);
  self::$cms->news  = (array)unserialize(@file_get_contents($file2));
  self::$cms->args[2]='';
} elseif (self::$cms->args[2])  {
		if (!$del){
			self::$cms->content['js'].='<script type="text/javascript" src="js/tigra_calendar/calendar.js"></script>';
			self::$cms->content['css'].='<link href="js/tigra_calendar/calendar.css" rel="stylesheet" type="text/css" />';
		}
  	$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" id="news_date" value="'.$news_date.'" class="date" readonly /></td></tr>';
//  	$out .= '    <td align="right">'.$this->get_message('news_date').' : </td><td><input name="news_date" type="text" id="news_date" value="'.$news_date.'" class="date" '.($del ? ' readonly':'').'/></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;
			$content = htmlentities(str_replace($r_in, $r_out, $content));  //jpg-092rc3
			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>';
//
$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) || ($_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) || ($_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.'|movup"><img src="deco/u1.png" /></a>&nbsp;':'<img src="deco/u0.png" /> ');
  	$out .=                       (($clef!=$fc-1)?'<a href="'.self::$cms->base.'news|'.$clef.'|movdn"><img src="deco/d1.png" /></a>&nbsp;':'<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" />&nbsp;<img src="deco/d0.png" />&nbsp;<img src="deco/e0.png" /></td>';
  }  
  $out .= '</tr>';
}
	$out .= '</table>';
	return $out;
	}
}
?>

Adrien

Hors ligne

Pied de page des forums