| 
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 & 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 © 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> |