Vous n'êtes pas identifié(e).
Pages : 1
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> ':'<img src="deco/u0.png" /> ');
$out .= (($clef!=$fc-1)?'<a href="'.self::$cms->base.'news|'.$clef.'|movdn"><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;
}
}
?>
Adrien
Hors ligne
Pages : 1