annotate admin.php @ 74:d9490757a111

Aide pour IE: Classes explicites et pas de syntaxe XHTML. Le selecteur [id^='Gest'], bien que pratique, n'est pas supporter par IE6. En conséquence, j'ai ajouté une classe Gestion sur l'ensemble des div concernés et j'ai remplacé cela par un très classique div.Gestion. D'autre part, visiblement, le <label /> faisait plus que troubler IE, qui ne comprenait par conséquent pas bien ou ce dernier ce finissait. Le problème a été réglé en décompactant la balise.
author Franck Deroche <webmaster@defr.org>
date Mon, 31 Mar 2008 14:53:49 +0200
parents d67a65183100
children 0a57d5321383
rev   line source
webmaster@0 1 <?php
webmaster@0 2 if(!is_null($_SERVER['HTTP_ACCEPT']) && stristr($_SERVER['HTTP_ACCEPT'], 'application/xhtml+xml'))
webmaster@0 3 header('Content-Type: application/xhtml+xml; charset=UTF-8');
webmaster@0 4 else
webmaster@0 5 header('Content-Type: text/html; charset=UTF-8');
webmaster@0 6
webmaster@0 7 include("classes.php");
webmaster@0 8 $Data=new DataAccess;
webmaster@0 9 $Req = new Requete;
webmaster@0 10
webmaster@0 11 $mode = $Req->get('mode');
webmaster@0 12 switch($mode) {
webmaster@0 13 case 'nvBrouillon':
webmaster@0 14 $nvTitre = $Req->get('Titre', 'POST');
webmaster@0 15 $nvContenu = $Req->get('Contenu', 'POST');
webmaster@0 16 $Data->debugQuery("INSERT INTO Brouillons SET Titre='{$nvTitre}', Contenu='{$nvContenu}'");
webmaster@0 17 break;
webmaster@0 18
webmaster@0 19 case 'nvTache':
webmaster@0 20 $nvThing = $Req->get('Tache');
webmaster@0 21 $Data->Query("INSERT INTO ToDo SET Thing='{$nvThing}'");
webmaster@0 22 break;
webmaster@0 23
webmaster@0 24 case 'nvPost':
webmaster@0 25 $id = $Req->get('id', 'POST');
webmaster@0 26 $versionAc = $Req->get('versionAc', 'POST');
webmaster@0 27 $newVersion = $Req->get('newVersion', 'POST');
webmaster@0 28 $mood = $Req->get('mood', 'POST');
webmaster@0 29 $tbAddress = $Req->get('tb', 'POST');
webmaster@0 30 if($versionAc == 'Version 10' && $newVersion != 'Nouvelle version ?' && !empty($newVersion))
webmaster@0 31 $version = $newVersion;
webmaster@0 32 else
webmaster@0 33 $version = $versionAc;
webmaster@0 34 $Data->Query("SELECT * FROM Brouillons WHERE id_brouillon={$id}");
webmaster@0 35 $row = $Data->GetRow();
webmaster@0 36 $row['Titre'] = addslashes($row['Titre']);
webmaster@0 37 $row['Contenu'] = addslashes($row['Contenu']);
webmaster@0 38 $datePost = gmdate("Y-m-d H:i:s", time() + 3600);
webmaster@0 39 $Data->Query("
webmaster@0 40 INSERT INTO Mess(Titre, DatePost, num_version, Message, Emot)
webmaster@0 41 VALUES('{$row['Titre']}', '{$datePost}', '{$version}', '{$row['Contenu']}', '{$mood}')");
webmaster@0 42 $Data->Query("DELETE FROM Brouillons WHERE id_brouillon={$id}");
webmaster@0 43 $Data->Query("SELECT num_mess, Message FROM Mess ORDER BY num_mess DESC LIMIT 0, 1");
webmaster@0 44 $id_row = $Data->GetRow();
webmaster@0 45 // Gestion des tags
webmaster@0 46 $arTags = TextUtils::SplitTags($Req->get('Tags'));
webmaster@0 47 foreach($arTags as $tagAj)
webmaster@0 48 {
webmaster@0 49 $n = $Data->Query("SELECT idTag FROM Tags WHERE Tag='{$tagAj}'");
webmaster@0 50 if($n == 0)
webmaster@0 51 {
webmaster@0 52 // Si le tag n'existe pas, on le crée
webmaster@0 53 $Data->Query("INSERT INTO Tags SET Tag='{$tagAj}'");
webmaster@0 54 $Data->Query("SELECT idTag FROM Tags WHERE Tag='{$tagAj}'");
webmaster@0 55 }
webmaster@0 56 $row_tag = $Data->GetRow();
webmaster@0 57 $Data->Query
webmaster@0 58 ("
webmaster@0 59 INSERT INTO Lien_Tags_Posts
webmaster@0 60 SET idMess={$id_row['num_mess']}, idTag={$row_tag['idTag']}
webmaster@0 61 ");
webmaster@0 62 }
webmaster@0 63 // Génération de trackbacks
webmaster@0 64 if(!empty($tbAddress) && substr($tbAddress, 0, 4)=='http') {
webmaster@0 65 $ar_tbAddress = parse_url($tbAddress);
webmaster@0 66 if(!array_key_exists('port', $ar_tbAddress)) $ar_tbAddress['port'] = 80;
webmaster@0 67 if(!array_key_exists('path', $ar_tbAddress)) $ar_tbAddress['path'] = '/';
webmaster@0 68 if(array_key_exists('query', $ar_tbAddress)) $ar_tbAddress['query'] = '?' . $ar_tbAddress['query'];
webmaster@0 69 $fp = fsockopen($ar_tbAddress['host'], $ar_tbAddress['port'], $errno, $errstr, 15);
webmaster@0 70 if($fp) {
webmaster@0 71 $genToSend = "POST {$ar_tbAddress['path']}{$ar_tbAddress['query']} HTTP/1.0\r\n";
webmaster@0 72 $genToSend .= "Host: {$ar_tbAddress['host']}\r\n";
webmaster@0 73 $genToSend .= "Content-Type: application/x-www-form-urlencoded \n";
webmaster@0 74
webmaster@0 75 // Essai de récuperation de l'encodage...Envoie en iso si pas d'indication d'UTF...
webmaster@0 76 $argToSend = "__info=1";
webmaster@0 77 $toSend = $genToSend . "Content-Length: " . strlen($argToSend) . "\n\n";
webmaster@0 78 $toSend .= $argToSend;
webmaster@0 79 fwrite($fp, $toSend);
webmaster@0 80 while(!feof($fp))
webmaster@0 81 $result .= fgets($fp, 128);
webmaster@0 82 fclose($fp);
webmaster@0 83 if(!preg_match('/<encoding>(UTF-8|utf-8)<\/encoding>/msU',$result)) {
webmaster@0 84 $row['Titre'] = utf8_decode($row['Titre']);
webmaster@0 85 $row['Message'] = utf8_decode($row['Message']);
webmaster@0 86 }
webmaster@0 87
webmaster@67 88 $fp = fsockopen($ar_tbAddress['host'], $ar_tbAddress['port'], $errno, $errstr, 15);
webmaster@0 89 $argToSend = "title=" . htmlentities(urlencode($row['Titre'])) . "&blog_name=Dual+Blog";
webmaster@67 90 $argToSend .= "&url=" . BLOG_URL . "/posts/{$id_row['num_mess']}&excerpt="
webmaster@67 91 . htmlentities(urlencode(substr(strip_tags($id_row['Message']), 0, 255) . "..."));
webmaster@0 92
webmaster@0 93 $toSend = $genToSend . "Content-Length: " . strlen($argToSend) . "\n\n";
webmaster@0 94 $toSend .= $argToSend;
webmaster@0 95 echo("<![CDATA[");
webmaster@0 96 fwrite($fp, $toSend);
webmaster@0 97 while (!feof($fp)) {
webmaster@0 98 echo fgets($fp, 128);
webmaster@0 99 }
webmaster@0 100 echo("]]>");
webmaster@0 101 fclose($fp);
webmaster@0 102 }
webmaster@0 103 }
webmaster@0 104 break;
webmaster@0 105 }
webmaster@0 106 ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
webmaster@0 107
webmaster@0 108 <html xmlns='http://www.w3.org/1999/xhtml'>
webmaster@0 109 <head>
webmaster@0 110 <title>Administration : Conception &amp; Design</title>
webmaster@0 111 <link rel='StyleSheet' type='Text/CSS' href='css/admin.css' />
webmaster@0 112 <script type='text/javascript' src='admin.js'>/* Die IE, diiie */</script>
webmaster@0 113 </head>
webmaster@0 114
webmaster@0 115 <body>
webmaster@0 116 <h3>Administration de Dual Blog</h3>
webmaster@0 117 <ul id='Menu'>
webmaster@0 118 <li><div id='Brouillons'>Brouillons</div></li>
webmaster@0 119 <li><div id='Posts'>Posts publiés</div></li>
webmaster@0 120 <li><div id='Designs'>Designs</div></li>
webmaster@0 121 <li><div id='ToDo'>To-Do</div></li>
webmaster@0 122 </ul>
webmaster@74 123 <div id='GestPosts' class='Gestion'>
webmaster@0 124 <ul>
webmaster@0 125 <?php
webmaster@0 126 $Data->Connect();
webmaster@0 127 $Data->Query("SELECT * FROM Mess ORDER BY num_version, num_mess DESC LIMIT 0, 10");
webmaster@0 128 $versionAc="";
webmaster@0 129 $i=0;
webmaster@0 130 $ar_Version = array();
webmaster@0 131 while(0!==($val=$Data->GetRow())) {
webmaster@0 132 if($val['num_version']!=$versionAc) {
webmaster@0 133 if($i!=0) echo("</ul>\n</li>");
webmaster@0 134 echo(" <li>{$val['num_version']} :\n <ul>");
webmaster@0 135 $versionAc=$val['num_version'];
webmaster@0 136 $ar_Version[] = $versionAc;
webmaster@0 137 $i++;
webmaster@0 138 }
webmaster@53 139 $Titre=TextUtils::EnsureUTF8($val['Titre']);
webmaster@0 140 echo("
webmaster@0 141 \t <li>{$Titre}<span class='Admin'><a href='#id={$val['num_mess']}'>Editer</a> -- <a href='#id={$val['num_mess']}'>Supprimer</a> -- <a href='?id={$val['num_mess']}'>Gérer les commentaires</a></span></li>");
webmaster@0 142 }
webmaster@69 143 if($i > 0) echo("\n </ul>\n </li>\n");
webmaster@0 144 ?>
webmaster@0 145 </ul>
webmaster@0 146 </div>
webmaster@0 147
webmaster@74 148 <div id='GestDesigns' class='Gestion'>
webmaster@0 149 <ul>
webmaster@0 150 <li class='Add'><a href='#'>Ajouter un nouveau design au weblog</a></li>
webmaster@0 151 <li>Modifier les designs déja existants</li>
webmaster@0 152 </ul>
webmaster@0 153 </div>
webmaster@0 154
webmaster@74 155 <div id='GestBrouillons' class='Gestion'>
webmaster@0 156 <ul>
webmaster@0 157 <li class='Add'><a href='#'>Ajouter un nouveau brouillon</a>
webmaster@0 158 <form method='post' action='admin.php'>
webmaster@0 159 <div>
webmaster@0 160 <input type='hidden' name='mode' value='nvBrouillon' />
webmaster@0 161 <input type='text' name='Titre' value='Titre' />
webmaster@0 162 <textarea name='Contenu' rows='10' cols='30'></textarea>
webmaster@0 163 <input type='submit' value='Valider ce brouillon' />
webmaster@0 164 </div>
webmaster@0 165 </form>
webmaster@0 166 </li>
webmaster@0 167 <?
webmaster@0 168 $Data->Query("SELECT * FROM Brouillons ORDER BY id_brouillon DESC");
webmaster@0 169 while(0!==($val=$Data->GetRow())) {
webmaster@0 170 echo("
webmaster@0 171 <li>{$val['Titre']} <span class='Admin'><a href='#id={$val['id_brouillon']}'>Editer</a> -- <a href='#id={$val['id_brouillon']}'>Publier</a> -- <a href='?id={$val['id_brouillon']}'>Supprimer</a></span></li>");
webmaster@0 172 }
webmaster@0 173 ?>
webmaster@0 174 </ul>
webmaster@0 175 </div>
webmaster@0 176
webmaster@74 177 <div id='GestToDo' class='Gestion'>
webmaster@0 178 <ul>
webmaster@0 179 <li class='Add'><a href='#'>Ajouter une nouvelle tâche</a>
webmaster@0 180 <form method='post' action='admin.php'>
webmaster@0 181 <div>
webmaster@0 182 <input type='hidden' name='mode' value='nvTache' />
webmaster@0 183 <input type='text' name='Tache' />
webmaster@0 184 <input type='submit' value='Ajouter cette tâche' />
webmaster@0 185 </div>
webmaster@0 186 </form></li>
webmaster@0 187 <?php
webmaster@0 188 $Data->Query("SELECT * FROM ToDo ORDER By num_thing DESC");
webmaster@0 189 while(0!==($val=$Data->GetRow())) {
webmaster@0 190 echo("
webmaster@0 191 <li>{$val['Thing']} <span class='Admin'><a href='#'>Fait</a> -- <a href='#'>Editer</a> -- <a href='#'>Supprimer</a></span></li>");
webmaster@0 192 }
webmaster@0 193 $Data->Close();
webmaster@0 194 ?>
webmaster@0 195 </ul>
webmaster@0 196 </div>
webmaster@0 197
webmaster@0 198 <form method='post' action='#' id='editPost'>
webmaster@0 199 <div>
webmaster@0 200 <input type='hidden' name='mode' value='editBrouillon' />
webmaster@0 201 <p><input type='text' name='Titre' value='Titre' /></p>
webmaster@0 202 <p><textarea name='Contenu' rows='10' cols='30'></textarea></p>
webmaster@0 203 <p><select name='mood' id='mood'>
webmaster@0 204 <?php
webmaster@0 205 $handle = opendir('mood');
webmaster@0 206 while($file = readdir($handle))
webmaster@0 207 {
webmaster@0 208 if(strlen($file) > 3 && substr($file, -3) == 'png')
webmaster@0 209 {
webmaster@0 210 $short = substr($file, 0, -4);
webmaster@0 211 echo("\t\t<option value='$short'><img src='mood/25/$file' alt='' />" . $short . "</option>\n");
webmaster@0 212 }
webmaster@0 213 }
webmaster@0 214 closedir($handle);
webmaster@0 215 ?>
webmaster@0 216 </select></p>
webmaster@0 217 <p><input type='text' name='Tags' value='Tags' /></p>
webmaster@0 218 <input type='button' name='Save' value='Sauver la modification' />
webmaster@0 219 </div>
webmaster@0 220 </form>
webmaster@0 221
webmaster@0 222 <form method='post' action='admin.php' id='whichVersion'>
webmaster@0 223 <div>
webmaster@0 224 <!--a onclick='javascript:hidePubForm()'>Hide</a-->
webmaster@0 225 <input type='hidden' name='mode' value='nvPost' />
webmaster@0 226 <input type='hidden' name='id' />
webmaster@0 227 <fieldset>
webmaster@0 228 <legend>Catégorie du post</legend>
webmaster@0 229 <label for='vAc'>Pour poster le post dans une catégorie déja existante, veuillez la choisir dans la liste ci-dessous :<br /></label>
webmaster@0 230 <select name='versionAc' id='vAc'>
webmaster@0 231 <option>Version 10</option>
webmaster@0 232 <option>DeFr.org news</option>
webmaster@0 233 </select>
webmaster@0 234 <label for='nvCat'><br />Pour poster le post dans une catégorie n'existant pas encore, veuillez
webmaster@0 235 entrer son nom : <br /></label>
webmaster@0 236 <input type='text' name='newVersion' id='nvCat' value='Nouvelle version ?' />
webmaster@0 237 </fieldset>
webmaster@0 238 <fieldset>
webmaster@0 239 <legend>Tags</legend>
webmaster@0 240 <label for='Tags'>Histoire d'organiser les posts, et de pouvoir filtrer par centres d'interet, veuillez
webmaster@0 241 préciser les <em>tags</em> à attribuer à ce post :<br /></label>
webmaster@0 242 <input type='text' name='Tags' id='Tags' />
webmaster@0 243 </fieldset>
webmaster@0 244 <fieldset>
webmaster@0 245 <legend>Mood / Emots</legend>
webmaster@0 246 <label for='mood'>Pour assurer un minimum d'attrait aux posts, et leur attribuer un aspect graphique
webmaster@0 247 sympathique, veuillez selectionner une emoticone pour le post, dans la liste suivante :<br /></label>
webmaster@0 248 <select name='mood' id='mood'>
webmaster@0 249 <?php
webmaster@0 250 $handle = opendir('mood');
webmaster@0 251 while($file = readdir($handle))
webmaster@0 252 {
webmaster@0 253 if(strlen($file) > 3 && substr($file, -3) == 'png')
webmaster@0 254 {
webmaster@0 255 $short = substr($file, 0, -4);
webmaster@0 256 echo("\t\t\t<option value='$short'><img src='mood/25/$file' alt='' />" . $short . "</option>\n");
webmaster@0 257 }
webmaster@0 258 }
webmaster@0 259 closedir($handle);
webmaster@0 260 ?>
webmaster@0 261 </select>
webmaster@0 262 </fieldset>
webmaster@0 263 <fieldset>
webmaster@0 264 <legend>Trackback</legend>
webmaster@0 265 <label for='tb'>Pour effectuer un trackback vers un autre post, rentrer son URL :<br /></label>
webmaster@0 266 <input type='text' name='tb' id='tb' value='TrackBack ?' />
webmaster@0 267 </fieldset>
webmaster@0 268 <fieldset>
webmaster@0 269 <legend>Publication</legend>
webmaster@74 270 <label id='pubComment' for='pubButton'></label>
webmaster@0 271 <input type='submit' name="pubButton" id="pubButton" value='Publier' />
webmaster@0 272 </fieldset>
webmaster@0 273 </div>
webmaster@0 274 </form>
webmaster@0 275
webmaster@0 276 <div id='Infos'>
webmaster@0 277 Administration de Dual Blog - Par DeFr - Icones &copy; David Lanham - The IconFactory -
webmaster@0 278 Valide <a href="http://validator.w3.org/check?uri=referer">XHTML 1.1</a> et <a href='http://jigsaw.w3.org/css-validator/check/referer'>CSS 3</a>
webmaster@0 279 </div>
webmaster@0 280 </body>
webmaster@0 281 </html>