Mercurial > defr > DualBlog
view includes/class.post.php @ 52:829d6b0d3d0b
Lorsqu'on édite un billet ou un brouillon, on éplingle la zone.
Cela permet de ne pas voir la zone de texte disparaitre si le curseur
ne survole plus le li correspondant.
A noter que le parentNode.parentNode n'est pas des plus esthétiques,
et qu'il y reste quelques problèmes relatifs à la non suppression
de l'état épinglé.
author | Franck Deroche <webmaster@defr.org> |
---|---|
date | Tue, 29 Jan 2008 11:33:33 +0100 |
parents | c6508503269a |
children | ec0c926a78a6 |
line wrap: on
line source
<?php class Post { private $tpl; private $infos; private $mess; private $dateFormatee = array(); private $url; private $commentLabel; private $mood; private $tags; public function __construct($infos) { $this->infos = (object)$infos; $this->tpl = new Template(Skeleton::getTemplateFile('post')); // Création du document fragment contenant le message $Mess = str_replace( array('<P>', '</P>'), array('<p>', '</p>'), $infos['Message']); $Mess = Factory::getDB()->utf8_ensure($Mess); $this->mess = $this->tpl->getDocumentFragment(); $this->mess->appendXML($Mess); // Formatage de la date $time = strtotime($infos['DatePost']); $this->dateFormatee['human'] = strftime("%A %d %B %Y, %Hh%M", $time); $this->dateFormatee['iso'] = date("c", $time); // On détermine l'url de ce post $strippedTitle = TextUtils::StripTitle($infos['Titre']); $this->url = '/blog/posts/' . $infos['num_mess'] . '-' . $strippedTitle; // On détermine le label du lien vers les commentaires $this->commentLabel = "Un p'tit commentaire ?"; if($infos['NbCommentaires'] > 0) $this->commentLabel .= " (" . $infos['NbCommentaires'] . ")"; // On s'occupe de l'indicateur d'humeur if(!empty($infos['Emot'])) { $mood = array('src' => "/blog/mood/{$infos['Emot']}.png", 'alt' => 'Mood: ' . $infos['Emot']); $this->mood = (object)$mood; } // On détermine les tags du post $db = Factory::getDB(); $nbTags = $db->Query(" SELECT T.Tag FROM Tags T, Lien_Tags_Posts L WHERE L.idMess={$infos['num_mess']} AND L.idTag = T.idTag ORDER BY T.Tag ", 2); $tags = ''; if($nbTags > 0) { while(0 !== ($tag = $db->GetRow(2))) $tags .= " <a href='/blog/tags/{$tag['Tag']}'>{$tag['Tag']}</a> |"; $tags = substr($tags, 0, -1); $this->tags = $this->tpl->getDocumentFragment(); $this->tags->appendXML($tags); } else { $this->tags = 'aucun'; } } public function format() { $this->tpl->setParams($this->getTplParams()); return $this->tpl; } public function getTplParams() { $params = array( '#post@class' => 'PostContent ' . $this->infos->Emot, 'postTitle' => $this->infos->Titre, 'postDate' => $this->dateFormatee['human'], 'postDateISO' => $this->dateFormatee['iso'], 'postContent' => $this->mess, 'postNumber' => $this->infos->num_mess, 'postComments' => $this->commentLabel, '#linkPostNumber@href' => $this->url, '#linkPostComments@href' => $this->url, 'postTags' => $this->tags ); if(!empty($this->mood->src)) { $params['#mood@src'] = $this->mood->src; $params['#mood@alt'] = $this->mood->alt; $params['#mood@class'] = 'mood'; } return $params; } public function getURL() { return $this->url; } } ?>