diff -Nur dotclear-2.4.0/admin/media_item.php dotclear/admin/media_item.php
--- dotclear-2.4.0/admin/media_item.php	2011-11-13 16:23:55.000000000 +0100
+++ dotclear/admin/media_item.php	2011-11-20 11:04:31.000000000 +0100
@@ -56,12 +56,60 @@
 	$core_media_writable = $core->media->writable();
 	
 	# Prepare directories combo box
-	$dirs_combo = array();
-	foreach ($core->media->getRootDirs() as $v) {
-		if ($v->w) {
-			$dirs_combo['/'.$v->relname] = $v->relname;
+	/*
+	 * Liste les sous-rÃ©pertoires d'un rÃ©pertoire du gestionnaire de media
+	 *
+	 * @param $base Le chemin de base vers la racine du gestionnaire de media
+	 * @param $path Le rÃ©pertoire de dÃ©part du listing
+	 * @param $profondeur La profondeur d'exploration maximal (illimitÃ© si valeur nÃ©gative)
+	 */
+	function listDirs($base, $path, $profondeur) {
+		$retval = Array();
+		// Fin de la rÃ©curssion
+		if ($profondeur == 0) {
+			return $retval;
+		}
+		if (!file_exists("$base/$path")) {
+			return $retval;
+		}
+		// Ajout du chemin jusqu'Ã  la racine
+		$retval["/"] = "";
+		if ($path != "") {
+			$tmpPath = "$base/$path";
+			while ($tmpPath != $base) {
+				$relPath = str_replace($base."/", "", $tmpPath);
+				$retval["/$relPath"] = $relPath;
+				$tmpPath = dirname($tmpPath);
+			}
+		}
+		// Recherche des sous-rÃ©pertoires
+		$dirListing = scandir("$base/$path");
+		if ($dirListing === false) {
+			return $retval;
+		}
+		$nbElem = sizeof($dirListing);
+		for ($i = 0; $i < $nbElem; $i++) {
+			$file = $dirListing[$i];
+			if ($file == "." || $file == "..") {
+				continue;
+			}
+			else if(is_dir("$base/$path/$file")) {
+				if ($path == "") {
+					$newPath = $file;
+				}
+				else {
+					$newPath = "$path/$file";
+				}
+				$retval["/$newPath"] = $newPath;
+				$retval = array_merge($retval, listDirs($base, $newPath, $profondeur - 1));
+			}
 		}
+		return $retval;
 	}
+	// Ajout des rÃ©pertoires contenus Ã  la racine
+	$dirs_combo = listDirs($core->blog->public_path, '', 1);
+	// Ajout des sous-rÃ©pertoires du rÃ©pertoire courant
+	$dirs_combo = array_merge(listDirs($core->blog->public_path, dirname($file->relname), 2), $dirs_combo);
 	ksort($dirs_combo);
 }
 catch (Exception $e)
@@ -525,4 +573,4 @@
 '</div>';
 
 call_user_func($close_f);
-?>
\ Pas de fin de ligne à la fin du fichier.
+?>
