Index: .hgignore
===================================================================
--- .hgignore	(revision 358)
+++ .hgignore	(revision 503)
@@ -1,4 +1,7 @@
 cache
-public
 inc/config.php
 \.htaccess
+public/filters
+themes/ductile/_work
+themes/ductile-work
+themes/ductile/default-templates
Index: admin/blog_theme.php
===================================================================
--- admin/blog_theme.php	(revision 500)
+++ admin/blog_theme.php	(revision 503)
@@ -156,9 +156,5 @@
 	
 	$radio_id = 'theme_'.html::escapeHTML($id);
-	if (preg_match('#^http(s)?://#',$core->blog->settings->system->themes_url)) {
-		$theme_url = http::concatURL($core->blog->settings->system->themes_url,'/'.$id);
-	} else {
-		$theme_url = http::concatURL($core->blog->url,$core->blog->settings->system->themes_url.'/'.$id);
-	}
+	$theme_url = http::concatURL($core->blog->url,$core->blog->settings->system->themes_url.'/'.$id);
 	$has_conf = file_exists(path::real($core->blog->themes_path.'/'.$id).'/_config.php');
 	$has_css = file_exists(path::real($core->blog->themes_path.'/'.$id).'/style.css');
@@ -216,5 +212,5 @@
 {
 	echo
-	'<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <span class="page-title">'.__('Blog appearance').'</span></h2>';
+	'<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; '.__('Blog appearance').'</h2>';
 	
 	if (!empty($_GET['upd'])) {
@@ -333,23 +329,22 @@
 	echo
 	'<h2>'.html::escapeHTML($core->blog->name).
-	' &rsaquo; <a href="blog_theme.php">'.__('Blog appearance').'</a> &rsaquo; <span class="page-title">'.__('Theme configuration').'<span class="page-title"></h2>'.
+	' &rsaquo; <a href="blog_theme.php">'.__('Blog appearance').'</a> &rsaquo; '.__('Theme configuration').'</h2>'.
 	'<p><a class="back" href="blog_theme.php">'.__('back').'</a></p>';
 	
 	try
 	{
-		# Let theme configuration set their own form(s) if required
-		$standalone_config = (boolean) $core->themes->moduleInfo($core->blog->settings->system->theme,'standalone_config');
-
-		if (!$standalone_config)
+		# Let theme configuration set their own form(s)
+		$managed = (boolean) $core->callBehavior('adminThemeConfigManaged');
+		
+		if (!$managed)
 			echo '<form id="theme_config" action="blog_theme.php?conf=1" method="post" enctype="multipart/form-data">';
 
 		include $theme_conf_file;
 
-		if (!$standalone_config)
+		if (!$managed)
 			echo
 			'<p class="clear"><input type="submit" value="'.__('Save').'" />'.
 			$core->formNonce().'</p>'.
 			'</form>';
-
 	}
 	catch (Exception $e)
Index: admin/index.php
===================================================================
--- admin/index.php	(revision 510)
+++ admin/index.php	(revision 500)
@@ -191,10 +191,12 @@
 );
 
-echo '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <span class="page-title">'.__('Dashboard').'</span></h2>';
+echo '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <span class="page-title">'.__('Dashboard').'</span>';
 
 if ($core->auth->getInfo('user_default_blog') != $core->blog->id && $core->auth->blog_count > 1) {
 	echo
-	'<p><a href="index.php?default_blog=1" class="button">'.__('Make this blog my default blog').'</a></p>';
-}
+	' - <a href="index.php?default_blog=1" class="button">'.__('Make this blog my default blog').'</a>';
+}
+
+echo '</h2>';
 
 if ($core->blog->status == 0) {
Index: admin/media.php
===================================================================
--- admin/media.php	(revision 505)
+++ admin/media.php	(revision 500)
@@ -278,15 +278,6 @@
 }
 
-echo '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; ';
-if (!isset($core->media)) {
-	echo '<span class="page-title">'.__('Media manager').'</span></h2>';
-} else {
-	$breadcrumb = $core->media->breadCrumb(html::escapeURL($page_url).'&amp;d=%s','<span class="page-title">%s</span>');
-	if ($breadcrumb == '') {
-		echo '<span class="page-title">'.__('Media manager').'</span></h2>';
-	} else {
-		echo '<a href="'.html::escapeURL($page_url.'&d=').'">'.__('Media manager').'</a>'.' / '.$breadcrumb.'</h2>';
-	}
-}
+echo '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <a href="'.html::escapeURL($page_url.'&d=').'">'.__('Media manager').'</a>'.
+' / '.(isset($core->media) ? $core->media->breadCrumb(html::escapeURL($page_url).'&amp;d=%s') : '').'</h2>';
 
 if (!$dir) {
Index: admin/style/default.css
===================================================================
--- admin/style/default.css	(revision 579)
+++ admin/style/default.css	(revision 503)
@@ -78,21 +78,13 @@
 }
 
+
 /* LAYOUT
 -------------------------------------------------------- */
-/* header */
-#header {
-	background: #575859;
-	height: 3em;
-	position: relative;
-}
+/* prelude */
 #prelude {
 	background: #575859;
-	line-height: 1.5em;
-	margin: 0;
-	padding: 0 1.7em 0 1em;
+	line-height: 1.8em;
+	margin: 0;
 	overflow: hidden;
-	position: absolute;
-	top: 1.2em;
-	left: 0;
 	}
 #prelude li {
@@ -101,7 +93,13 @@
 	background:transparent;
 	}
-#prelude li a {
+#prelude a {
 	color:#fff;
 	}
+/* header */
+#header {
+	background: #575859;
+	height: 3em;
+	position: relative;
+}
 #top {
 	margin: 0;
@@ -141,5 +139,5 @@
 #info-box2 {
 	margin: .1em 0 0 0;
-	padding: .5em 1.3em 4px 0;
+	padding: .5em 1em 4px 0;
 	color: #fff;
 	float: right;
@@ -190,5 +188,5 @@
 }
 #content {
-	margin: 1.5em 1.5em 4em 13em;
+	margin: .5em 1.5em 4em 13em;
 	padding: 1em;
 	background: #fff;
@@ -324,5 +322,6 @@
 }
 #favorites-menu a {
-	color: #333;
+	color: #000;
+	font-weight: normal;
 }
 #favorites-menu .active {
@@ -332,5 +331,4 @@
 #favorites-menu .active a {
 	font-weight: bold;
-	color: #666;
 }
 /* ------------------------------------------------------------------ footer */
@@ -426,18 +424,4 @@
 	text-decoration: underline;
 }
-/* test
-#icons img {
-	padding: 8px;
-	background: #e5e5e5;
-	border: 1px solid #d9d9d9;
-	border-radius: 5px;
-	-webkit-box-shadow: 0px 1px 3px #ccc;
-	-moz-box-shadow: 0px 1px 3px #ccc;
-	box-shadow: 0px 1px 3px #ccc;
-}
-#icons a:hover img {
-	background: #bbb;
-}*/
-
 #quick {
 	clear: left;
@@ -1195,5 +1179,5 @@
 p.field {
 	position: relative;
-
+	
 }
 p.field label {
Index: admin/trackbacks.php
===================================================================
--- admin/trackbacks.php	(revision 510)
+++ admin/trackbacks.php	(revision 270)
@@ -95,5 +95,5 @@
 }
 
-echo '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <span class="page-title">'.$page_title.'</span></h2>';
+echo '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; '.$page_title.'</h2>';
 
 echo '<p><a class="back" href="'.$core->getPostAdminURL($post->post_type,$id).'">'.
Index: inc/core/class.dc.media.php
===================================================================
--- inc/core/class.dc.media.php	(revision 505)
+++ inc/core/class.dc.media.php	(revision 407)
@@ -175,21 +175,14 @@
 	
 	@param	href		<b>string</b>		URL pattern
-	@param	last		<b>string</b>		Last item pattern
 	@return	<b>string</b> HTML code
 	*/
-	public function breadCrumb($href,$last='')
+	public function breadCrumb($href)
 	{
 		$res = '';
 		if ($this->relpwd && $this->relpwd != '.') {
 			$pwd = '';
-			$arr = explode('/',$this->relpwd);
-			$count = count($arr);
-			foreach ($arr as $v) {
-				if (($last != '') && (0 === --$count)) {
-					$res .= sprintf($last,$v);
-				} else {
-					$pwd .= rawurlencode($v).'/';
-					$res .= '<a href="'.sprintf($href,$pwd).'">'.$v.'</a> / ';
-				}
+			foreach (explode('/',$this->relpwd) as $v) {
+				$pwd .= rawurlencode($v).'/';
+				$res .= '<a href="'.sprintf($href,$pwd).'">'.$v.'</a> / ';
 			}
 		}
Index: inc/public/prepend.php
===================================================================
--- inc/public/prepend.php	(revision 270)
+++ inc/public/prepend.php	(revision 420)
@@ -113,4 +113,10 @@
 $core->themes->loadNsFile($__theme,'public');
 
+# Loading translations for selected theme
+if ($__parent_theme) {
+	$core->themes->loadModuleL10N($__parent_theme,$_lang,'main');
+}
+$core->themes->loadModuleL10N($__theme,$_lang,'main');
+
 # --BEHAVIOR-- publicPrepend
 $core->callBehavior('publicPrepend',$core);
Index: locales/pl/main.po
===================================================================
--- locales/pl/main.po	(revision 516)
+++ locales/pl/main.po	(revision 261)
@@ -9,6 +9,6 @@
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2011-05-13 19:36+0200\n"
-"PO-Revision-Date: 2011-06-26 20:18+0100\n"
-"Last-Translator: \n"
+"PO-Revision-Date: 2008-07-13 15:08+0200\n"
+"Last-Translator: Nnidŷu <nnidyu@asylumeternity.net>\n"
 "Language-Team: Polish\n"
 "Language: \n"
@@ -49,15 +49,18 @@
 msgstr "Hasła nie pasują do siebie"
 
+#, fuzzy
 msgid "You didn't change your password."
-msgstr "Nie zmieniłeś hasła."
-
+msgstr "Zmień swoje hasło"
+
+#, fuzzy
 msgid "You have to change your password before you can login."
-msgstr "Musisz zmienić hasło zanim się zalogujesz."
+msgstr "Jeżeli chcesz zmienić swój e-mail lub hasło, musisz podać swoje aktualne hasło."
 
 msgid "In order to login, you have to change your password now."
-msgstr "Aby zalogować się, musisz zmienić teraz hasło."
-
+msgstr ""
+
+#, fuzzy
 msgid "Safe Mode can only be used for super administrators."
-msgstr "Tryb bezpieczny może być używany tylko przez Super-administratorów."
+msgstr "Nie masz uprawień super administratora."
 
 msgid "Wrong username or password"
@@ -85,21 +88,23 @@
 msgstr "Potwierdź hasło:"
 
+#, fuzzy
 msgid "change"
-msgstr "zmień"
+msgstr "anuluj"
 
 msgid "Safe mode login"
-msgstr "Logowanie w trybie bezpiecznym"
+msgstr ""
 
 msgid "This mode allows you to login without activating any of your plugins. This may be useful to solve compatibility problems"
-msgstr "Ten tryb pozwala na zalogowanie bez aktywowania wtyczek. Jest to pomocne w rozwiązywaniu problemów z kompatybilnością."
+msgstr ""
 
 msgid "Disable or delete any plugin suspected to cause trouble, then log out and log back in normally."
-msgstr "Wyłącz lub usuń jakąkolwiek wtyczkę podejrzaną o powodowanie problemów a następnie wyloguj się i zaloguj ponownie."
+msgstr ""
 
 msgid "Remember my ID on this computer"
 msgstr "Zapamiętaj moje ID na tym komputerze"
 
+#, fuzzy
 msgid "log in"
-msgstr "zaloguj się"
+msgstr "Nazwa bloga"
 
 msgid "You must accept cookies in order to use the private area."
@@ -107,8 +112,8 @@
 
 msgid "Get back to normal authentication"
-msgstr "Wróć do normalnego uwierzytelniania"
+msgstr ""
 
 msgid "Connection issue?"
-msgstr "Problemy z połączeniem?"
+msgstr ""
 
 msgid "I forgot my password"
@@ -116,5 +121,5 @@
 
 msgid "I want to log in in safe mode"
-msgstr "Chcę zalogować sie w trybie bezpiecznym"
+msgstr ""
 
 msgid "New blog"
@@ -212,9 +217,11 @@
 msgstr "Chcę, aby wyszukiwarki i archiwizery indeksowały ale nie archiwizowały zawartości mojego bloga."
 
+#, fuzzy
 msgid "I would like to prevent search engines and archivers from indexing or archiving my blog's content."
 msgstr "Chcę, aby wyszukiwarki i archiwizery nie indeksowały i nie archiwizowały zawartości mojego bloga."
 
+#, fuzzy
 msgid "That blog Id is already in use."
-msgstr "Ten identyfikator bloga jest już używany."
+msgstr "Dotclear jest już zainstalowany."
 
 msgid "Invalid language code"
@@ -225,8 +232,8 @@
 
 msgid "Warning: except for special configurations, it is generally advised to have a trailing \"/\" in your blog URL in PATH_INFO mode."
-msgstr "Ostrzeżenie: pomijając specjalne konfiguracje, radzimy w Twoim blogu używać na końcu URL znaku \"/\" w trybie PATH_INFO."
+msgstr ""
 
 msgid "Warning: except for special configurations, it is generally advised to have a trailing \"?\" in your blog URL in QUERY_STRING mode."
-msgstr "Ostrzeżenie: pomijając specjalne konfiguracje, radzimy w Twoim blogu używać na końcu URL znaku \"?\" w trybie QUERY_STRING."
+msgstr ""
 
 msgid "Blog has been successfully created."
@@ -347,5 +354,5 @@
 
 msgid "This defines image tag title when you insert it in a post from the media manager. It is retrieved from the picture's metadata."
-msgstr "Definiuje atrybut title obrazu, gdy wstawiasz go do wpisu za pomocą menedżera plików. Generowany jest z metadanych obrazu."
+msgstr "Definiuje atrybut title obrazu, gdy wstawiasz go do wpisu za pomocą menedżera mediów. Generowany jest z metadanych obrazu."
 
 msgid "Search engines robots policy"
@@ -361,4 +368,5 @@
 msgstr "Interfejs XML/RPC jest nieaktywny. Zmień ustawienia, aby go włączyć."
 
+#, fuzzy
 msgid "XML/RPC interface is active. You should set the following parameters on your XML/RPC client:"
 msgstr "Interfejs XML/RPC jest aktywny. Powinieneś ustawić następujące parametry w Twoim kliencie XML/RPC:"
@@ -389,5 +397,5 @@
 
 msgid "Super administrator"
-msgstr "Super-administrator"
+msgstr "Super administrator"
 
 msgid "You can't remove default theme."
@@ -400,6 +408,7 @@
 msgstr "Nie można przenieść wysłanego pliku."
 
+#, fuzzy
 msgid "An error occurred while downloading the file."
-msgstr "Wystąpił błąd podczas pobierania pliku."
+msgstr "Podczas ściągania pliku wystąpił błąd."
 
 #, php-format
@@ -407,18 +416,18 @@
 msgstr "przez %s"
 
-#, php-format
+#, fuzzy, php-format
 msgid "version %s"
-msgstr "wersja %s"
+msgstr "Wersja"
 
 #, php-format
 msgid "(built on \"%s\")"
-msgstr "(oparty na \"%s\")"
+msgstr ""
 
 #, php-format
 msgid "(requires \"%s\")"
-msgstr "(wymaga \"%s\")"
+msgstr ""
 
 msgid "Stylesheet"
-msgstr "Arkusz stylów"
+msgstr ""
 
 msgid "Theme configuration"
@@ -428,6 +437,7 @@
 msgstr "Motywy bloga"
 
+#, fuzzy
 msgid "Blog appearance"
-msgstr "Wygląd bloga"
+msgstr "Nazwa bloga"
 
 msgid "Theme has been successfully changed."
@@ -445,8 +455,8 @@
 #, php-format
 msgid "You can find additional themes for your blog on %s."
-msgstr "Możesz znaleźć więcej motywów dla Twojego bloga na %s."
+msgstr ""
 
 msgid "To install or upgrade a theme you generally just need to upload it in \"Install or upgrade a theme\" section."
-msgstr "Aby zainstalowac lub ulepszyć motyw, musisz wrzucic plik w sekcji \"Instalacja lub ulepszenie motywu\"."
+msgstr ""
 
 msgid "Themes"
@@ -455,5 +465,5 @@
 #, php-format
 msgid "You are currently using \"%s\""
-msgstr "Aktualnie używasz \"%s\""
+msgstr ""
 
 msgid "use selected theme"
@@ -521,5 +531,5 @@
 
 msgid "Order by:"
-msgstr "Sortuj wg:"
+msgstr "Sortuj wg.:"
 
 msgid "Sort:"
@@ -532,6 +542,7 @@
 msgstr "Blogów na stronę"
 
+#, fuzzy
 msgid "Apply filters"
-msgstr "Zastosuj filtry"
+msgstr "Dodaj pliki"
 
 msgid "No blog"
@@ -539,5 +550,5 @@
 
 msgid "Page(s)"
-msgstr "Strona"
+msgstr "Stron(a)"
 
 msgid "Entries"
@@ -558,6 +569,7 @@
 msgstr "Przełącz do bloga %s"
 
+#, fuzzy
 msgid "This category does not exist."
-msgstr "Taka kategoria nie istnieje."
+msgstr "Ten wpis nie istnieje."
 
 msgid "Categories"
@@ -565,24 +577,29 @@
 
 msgid "The category has been successfully created."
-msgstr "Kategoria została utworzona."
-
+msgstr "Kategoria została pomyślnie utworzona."
+
+#, fuzzy
 msgid "The category has been successfully removed."
-msgstr "Kategoria została usunięta."
-
+msgstr "Kategoria została pomyślnie utworzona."
+
+#, fuzzy
 msgid "Categories have been successfully reordered."
-msgstr "Kolejność kategorii została zapisana."
-
+msgstr "Kategorie zostały pomyślnie usunięte."
+
+#, fuzzy
 msgid "The category has been successfully moved."
-msgstr "Kategoria została przeniesiona."
-
+msgstr "Kategoria została pomyślnie utworzona."
+
+#, fuzzy
 msgid "No category yet."
 msgstr "Brak kategorii."
 
+#, fuzzy
 msgid "Categories list"
-msgstr "Lista kategorii"
+msgstr "Kategorie"
 
 #, php-format
 msgid "%d entries"
-msgstr "%d wpisy(-ów)"
+msgstr "%d wpisów"
 
 #, php-format
@@ -591,38 +608,44 @@
 
 msgid "total:"
-msgstr "ogółem:"
+msgstr ""
 
 msgid "URL:"
 msgstr "URL:"
 
+#, fuzzy
 msgid "Add a new category"
-msgstr "Dodaj nową kategorię"
+msgstr "Utwórz nową kategorię"
 
 msgid "Title:"
 msgstr "Tytuł:"
 
+#, fuzzy
 msgid "Parent:"
-msgstr "Kategoria nadrzędna:"
+msgstr "Przeszukaj wpis:"
 
 msgid "Top level"
-msgstr "Najwyższy poziom"
-
+msgstr ""
+
+#, fuzzy
 msgid "Remove a category"
-msgstr "Usuń kategorię"
-
+msgstr "Brak kategorii."
+
+#, fuzzy
 msgid "Choose a category to remove:"
-msgstr "Wybierz kategorię do usunięcia:"
+msgstr "Zmień kategorię dla wpisów"
 
 msgid "ok"
-msgstr "Ok"
-
+msgstr "ok"
+
+#, fuzzy
 msgid "Reorder categories"
-msgstr "Usuń hierarchię"
+msgstr "zarządzaj kategoriami"
 
 msgid "This will relocate all categories on the top level"
-msgstr "Umieść wszystkie kategorie na jednym poziomie"
-
+msgstr ""
+
+#, fuzzy
 msgid "Reorder"
-msgstr "Wykonaj"
+msgstr "Zapisz kolejność"
 
 msgid "New category"
@@ -632,6 +655,7 @@
 msgstr "Kategoria została pomyślnie zaktualizowana"
 
+#, fuzzy
 msgid "Category information"
-msgstr "Informacje o kategorii"
+msgstr "więcej informacji"
 
 msgid "Warning: If you set the URL manually, it may conflict with another category."
@@ -641,24 +665,30 @@
 msgstr "Opis:"
 
+#, fuzzy
 msgid "Move this category"
-msgstr "Przenieś kategorię"
-
+msgstr "Brak kategorii."
+
+#, fuzzy
 msgid "Category parent"
-msgstr "Wybierz kategorię nadrzędną"
-
+msgstr "Kategoria"
+
+#, fuzzy
 msgid "Category sibling"
-msgstr "Kategorie równorzędne"
-
+msgstr "Kategoria"
+
+#, fuzzy
 msgid "Move current category"
-msgstr "Przenieś bieżącą kategorię"
-
+msgstr "Rozpakuj w bieżącym katalogu"
+
+#, fuzzy
 msgid "after"
-msgstr "za"
+msgstr "filtruj"
 
 msgid "before"
-msgstr "przed"
-
+msgstr ""
+
+#, fuzzy
 msgid "position: "
-msgstr "pozycja:"
+msgstr "Dyspozycja MP3"
 
 msgid "Entry does not exist."
@@ -679,5 +709,5 @@
 #, php-format
 msgid "Your comment on my blog %s"
-msgstr "Twój komentarz na moim blogu %s"
+msgstr ""
 
 #, php-format
@@ -690,13 +720,7 @@
 "\n"
 msgstr ""
-"Cześć!\n"
-"\n"
-"Napisałeś komentarz na temat:\n"
-"%s\n"
-"\n"
-"\n"
 
 msgid "Send an e-mail"
-msgstr "Wyślij e-email"
+msgstr ""
 
 #, php-format
@@ -747,5 +771,5 @@
 
 msgid "mark as pending"
-msgstr "oznacz jako w przygotowaniu"
+msgstr "oznacz jako oczekujący"
 
 msgid "mark as junk"
@@ -780,6 +804,7 @@
 msgstr "Akcja dla wybranych komentarzy:"
 
+#, fuzzy
 msgid "action: "
-msgstr "akcja:"
+msgstr "Opis:"
 
 msgid "Comments"
@@ -797,9 +822,11 @@
 msgstr "Nowy wpis"
 
+#, fuzzy
 msgid "My preferences"
-msgstr "Moje ustawienia"
-
+msgstr "Ustawienia uzytkownika"
+
+#, fuzzy
 msgid "Documentation and support"
-msgstr "Dokumentacja i wsparcie"
+msgstr "Dokumentacja"
 
 msgid "Latest news"
@@ -827,22 +854,24 @@
 msgstr "Następujące wtyczki nie zostały zainstalowane:"
 
-#, php-format
+#, fuzzy, php-format
 msgid "Dotclear %s is available!"
-msgstr "Dotclear %s jest już dostępny!"
+msgstr "Dotclear jest już zainstalowany."
 
 msgid "Upgrade now"
-msgstr "Ulepsz teraz"
+msgstr ""
 
 msgid "Remind me later"
-msgstr "Przypomnij mi później"
+msgstr ""
 
 msgid "information about this version"
-msgstr "informacje o tej wersji"
-
+msgstr ""
+
+#, fuzzy
 msgid "Some plugins are installed twice:"
-msgstr "Niektóre wtyczki zostały zainstalowane podwójnie:"
-
+msgstr "Następujące wtyczki zostały zainstalowane:"
+
+#, fuzzy
 msgid "Quick entry"
-msgstr "Szybki wpis"
+msgstr "1 wpis"
 
 msgid "Content:"
@@ -852,6 +881,7 @@
 msgstr "Kategoria:"
 
+#, fuzzy
 msgid "save and publish"
-msgstr "Zapisz i opublikuj"
+msgstr "anuluj publikację"
 
 #, php-format
@@ -860,5 +890,5 @@
 
 msgid "Multibyte string module (mbstring) is not available."
-msgstr "Moduł mbstring jest niedostępny."
+msgstr "Moduł mbstring jest niedostepny."
 
 msgid "Iconv module is not available."
@@ -878,5 +908,5 @@
 
 msgid "SPL module is not available."
-msgstr "Biblioteka standardowa SPL jest niedostępna."
+msgstr "Biblioteka standardowa jest niedostępna."
 
 #, php-format
@@ -919,14 +949,14 @@
 
 msgid "%A, %B %e %Y"
-msgstr "%A, %B %e %Y"
+msgstr ""
 
 msgid "Welcome to Dotclear!"
-msgstr "Witaj w Dotclear!"
+msgstr ""
 
 msgid "This is your first entry. When you're ready to blog, log in to edit or delete it."
-msgstr "To jest Twój pierwszy wpis. Kiedy będziesz gotowy do blogowania, zaloguj się aby edytować lub usunąć go."
+msgstr ""
 
 msgid "Dotclear Team"
-msgstr "Zespół Dotclear"
+msgstr ""
 
 msgid ""
@@ -934,18 +964,19 @@
 "<p>To delete it, log in and view your blog's comments. Then you might remove or edit it.</p>"
 msgstr ""
-"<p>To jest komentarz.</p>\n"
-"<p>Aby go usunąć, zaloguj się i zajrzyj do komentarzy bloga. Możesz je tam usuwać lub edytować.</p>"
-
+
+#, fuzzy
 msgid "Pages"
-msgstr "Strony"
-
+msgstr "Stron(a)"
+
+#, fuzzy
 msgid "Blogroll"
-msgstr "Lista polecanych odnośników"
-
+msgstr "Blog"
+
+#, fuzzy
 msgid "Dotclear Install"
-msgstr "Instalacja Dotclear"
+msgstr "Instalacja DotClear"
 
 msgid "show"
-msgstr "pokaż"
+msgstr ""
 
 msgid "Dotclear installation"
@@ -959,4 +990,5 @@
 msgstr "Błędy:"
 
+#, fuzzy
 msgid "Configuration file has been successfully created."
 msgstr "Plik konfiguracyjny został pomyślnie utworzony."
@@ -968,12 +1000,15 @@
 msgstr "Proszę podać następujące informacje potrzebne do stworzenia pierwszego użytkownika."
 
+#, fuzzy
 msgid "First Name:"
 msgstr "Imię:"
 
+#, fuzzy
 msgid "Last Name:"
-msgstr "Nazwisko:"
-
+msgstr "Ostatnia aktualizacja"
+
+#, fuzzy
 msgid "Username and password"
-msgstr "Nazwa użytkownika i hasło"
+msgstr "Zła nazwa użytkownika lub hasło"
 
 msgid "save"
@@ -984,26 +1019,29 @@
 
 msgid "Dotclear has been successfully installed. Here is some useful information you should keep."
-msgstr "Dotclear został pomyślnie zainstalowany. Oto kilka pomocnych informacji które warto zapamiętać."
+msgstr ""
 
 msgid "Your account"
-msgstr "Twoje konto"
-
+msgstr ""
+
+#, fuzzy
 msgid "Your blog"
-msgstr "Twój blog"
-
+msgstr "Brak bloga"
+
+#, fuzzy
 msgid "Blog address:"
-msgstr "Adres bloga:"
-
+msgstr "Adres IP:"
+
+#, fuzzy
 msgid "Administration interface:"
-msgstr "Interfejs administratora"
+msgstr "administrator"
 
 msgid "Manage your blog now"
-msgstr "Zarządzaj swoim blogiem"
+msgstr ""
 
 msgid "Installation can not be completed"
-msgstr "Instalacja nie może być dokończona"
+msgstr ""
 
 msgid "For the said reasons, Dotclear can not be installed. Please refer to <a href=\"http://dotclear.org/documentation/2.0/admin/install\">the documentation</a> to learn how to correct the problem."
-msgstr "Z powyższych powodów Dotclear nie może być zainstalowany. Zajrzyj do <a href=\"http://dotclear.org/documentation/2.0/admin/install\">dokumentacji</a> aby dowiedzieć się jak poradzić sobie z problemem."
+msgstr ""
 
 #, php-format
@@ -1019,14 +1057,15 @@
 
 msgid "Welcome"
-msgstr "Witaj"
+msgstr ""
 
 msgid "To complete your Dotclear installation and start writing on your blog, we just need to know how to access your database and who you are. Just fill this two steps wizard with this information and we will be done."
-msgstr "Aby zakończyć instalację Dotclear i rozpocząć pisanie Twojego bloga, musisz podać parametry dostępu do bazy danych oraz informacje o Tobie. Wypełnij dwa proste formularze w kreatorze a będziesz mógł rozpocząć pracę."
-
+msgstr ""
+
+#, fuzzy
 msgid "Attention:"
-msgstr "Uwaga:"
+msgstr "Załącznik"
 
 msgid "this wizard may not function on every host. If it does not work for you, please refer to <a href=\"http://dotclear.org/documentation/2.0/admin/install\">the documentation</a> to learn how to create the <strong>config.php</strong> file manually."
-msgstr "ten kreator może nie działać na niektórych serwerach. Jeżeli nie działa Tobie, proszę zajrzeć do <a href=\"http://dotclear.org/documentation/2.0/admin/install\">dokumentacji</a> aby dowiedzieć sie jak utworzyć plik <strong>config.php</strong> ręcznie."
+msgstr ""
 
 msgid "System information"
@@ -1055,83 +1094,102 @@
 
 msgid "No such installed language"
-msgstr "Nie zainstalowano takiej wersji językowej"
-
+msgstr ""
+
+#, fuzzy
 msgid "You can't remove English language."
-msgstr "Nie można usunąć domyślnego języka."
-
+msgstr "Nie możesz usunąć domyślnego motywu"
+
+#, fuzzy
 msgid "Permissions to delete language denied."
-msgstr "Brak uprawnień do usunięcia wersji językowej."
-
+msgstr "Brak uprawnień."
+
+#, fuzzy
 msgid "Invalid language file URL."
-msgstr "Niepoprawny odnośnik do pliku z wersją językową."
-
+msgstr "Niepoprawny kod języka"
+
+#, fuzzy
 msgid "Languages management"
-msgstr "Zarządzanie wersjami językowymi"
-
+msgstr "Zarządzanie wtyczkami"
+
+#, fuzzy
 msgid "Language has been successfully deleted."
-msgstr "Wersja językowa została usunięta."
-
+msgstr "Blog został pomyślnie usunięty."
+
+#, fuzzy
 msgid "Language has been successfully installed."
-msgstr "Wersja jezykowa została pomyślnie zainstalowana."
-
+msgstr "Wtyczka została pomyślnie zainstalowana."
+
+#, fuzzy
 msgid "Language has been successfully upgraded"
-msgstr "Wersja językowa została pomyślnie zaktualizowanya."
+msgstr "Wtyczka została pomyślnie zaktualizowana"
 
 msgid "Here you can install, upgrade or remove languages for your Dotclear installation."
-msgstr "Tutaj możesz zainstalować, ulepszyć lub usunąć wersje językowe użyte w Twojej instalacji Dotclear."
+msgstr ""
 
 #, php-format
 msgid "You can change your user language in your <a href=\"%1$s\">preferences</a> or change your blog's main language in your <a href=\"%2$s\">blog settings</a>."
-msgstr "Możesz zmienić język któy używasz w <a href=\"%1$s\">ustawieniach</a> lub zmienić główny język Twojego blogu w <a href=\"%2$s\">ustawieniach blogu</a>."
-
+msgstr ""
+
+#, fuzzy
 msgid "Installed languages"
-msgstr "Zainstalowane języki"
+msgstr "Niepoprawny kod języka"
 
 msgid "No additional language is installed."
-msgstr "Nie zaisntalowano dodatnowych wersji językowych."
-
+msgstr ""
+
+#, fuzzy
 msgid "Language"
-msgstr "Język"
+msgstr "Język?"
 
 msgid "Action"
-msgstr "Akcja"
-
+msgstr ""
+
+#, fuzzy
 msgid "Install or upgrade languages"
-msgstr "Zainstaluj lub zaktualizuj wersje językowe"
+msgstr "Zainstaluj lub zaktualizuj wtyczkę"
 
 #, php-format
 msgid "You can install or remove a language by adding or removing the relevant directory in your %s folder."
-msgstr "Możesz zainstalować lub usunąć wersję językową poprzez dodanie lub usunięcie odpowiedniego katalogu w Twoim katalogu %s."
-
+msgstr ""
+
+#, fuzzy
 msgid "Available languages"
-msgstr "Dostępne wersje językowe"
+msgstr "Dostępne motywy"
 
 #, php-format
 msgid "You can download and install a additional language directly from Dotclear.net. Proposed languages are based on your version: %s."
-msgstr "Możesz pobrać i zainstalować dodatkowe wersje językowe bezpośrenio z Dotclear.net. Proponowane jezyki bazują na Twojej wersji: %s."
-
+msgstr ""
+
+#, fuzzy
 msgid "Language:"
-msgstr "Język:"
-
+msgstr "Język?"
+
+#, fuzzy
 msgid "Install language"
-msgstr "Zainstaluj język"
-
+msgstr "Niepoprawny kod języka"
+
+#, fuzzy
 msgid "You can install languages by uploading zip files."
-msgstr "Możesz instalować języki wysyłając plik w formacie zip."
-
+msgstr "Możesz instalować wtyczki wysyłając lub pobierając pliki zip."
+
+#, fuzzy
 msgid "Language zip file:"
-msgstr "Plik językowy (zip):"
-
+msgstr "Plik zip z wtyczką:"
+
+#, fuzzy
 msgid "Upload language"
-msgstr "Wyślij język"
-
+msgstr "Wyślij wtyczkę"
+
+#, fuzzy
 msgid "Invalid language zip file."
-msgstr "Niepoprawny plik językowy w formacie zip"
-
+msgstr "Niepoprawny kod języka"
+
+#, fuzzy
 msgid "The zip file does not appear to be a valid Dotclear language pack."
-msgstr "Ten plik zip nie wydaje się być poprawnym tłumaczeniem Dotclear."
-
+msgstr "Ten plik zip nie wydaje się być poprawnym modułem Dotclear."
+
+#, fuzzy
 msgid "An error occurred during language upgrade."
-msgstr "Wystąpił błąd podczas ulepszania modułu."
+msgstr "Wystąpił błąd podczas usuwania modułu."
 
 msgid "Error:"
@@ -1151,5 +1209,5 @@
 
 msgid "Media manager"
-msgstr "Menedżer plików"
+msgstr "Menedżer mediów"
 
 msgid "confirm removal"
@@ -1181,10 +1239,11 @@
 msgstr "Katalog został pomyślnie przebudowany."
 
+#, fuzzy
 msgid "Zip file has been successfully extracted."
 msgstr "Plik zip został pomyślnie rozpakowany."
 
-#, php-format
+#, fuzzy, php-format
 msgid "Choose a file to attach to entry %s by clicking on %s."
-msgstr "Wybierz plik, który ma być dołączony do wpisu %s, klikając na %s."
+msgstr "Wybierz plik, który ma być dołączony do wpisu, klikając na %s."
 
 msgid "Attach this file to entry"
@@ -1218,5 +1277,5 @@
 
 msgid "To send several files at the same time, you can activate the enhanced uploader in"
-msgstr "Aby wysłać kilka plików jednocześnie, możęsz aktywować ulepszony uploader w"
+msgstr ""
 
 msgid "send"
@@ -1226,6 +1285,7 @@
 msgstr "Nowy katalog"
 
+#, fuzzy
 msgid "Directory Name:"
-msgstr "Nazwa katalogu:"
+msgstr "Nowy katalog:"
 
 msgid "Download this directory as a zip file"
@@ -1289,15 +1349,18 @@
 msgstr "Zauważ, że nie możesz wstawiać plików video w edytorze WYSIWYG."
 
+#, fuzzy
 msgid "Video size"
-msgstr "Rozmiar wideo"
+msgstr "Zobacz stronę"
 
 msgid "Width:"
-msgstr "Szerokość:"
-
+msgstr ""
+
+#, fuzzy
 msgid "Height:"
-msgstr "Wysokość:"
-
+msgstr "Prawa"
+
+#, fuzzy
 msgid "Video disposition"
-msgstr "Charakter wideo"
+msgstr "Dyspozycja wideo FLV"
 
 msgid "Media item will be inserted as a link."
@@ -1311,5 +1374,5 @@
 
 msgid "Media details"
-msgstr "Szczegóły pliku"
+msgstr "Szczegóły mediów"
 
 msgid "Available sizes:"
@@ -1329,11 +1392,12 @@
 
 msgid "Show entries containing this media"
-msgstr "Pokaż wpisy używające tego pliku"
+msgstr ""
 
 msgid "Entries containing this media"
-msgstr "Wpisy wykorzystujace ten plik"
-
+msgstr ""
+
+#, fuzzy
 msgid "No entry seems contain this media."
-msgstr "Zaden wpis nie odnosi się do tego pliku."
+msgstr "Brak zawartości wpisu"
 
 msgid "Image details"
@@ -1352,27 +1416,33 @@
 msgstr "zaktualizuj miniaturki"
 
+#, fuzzy
 msgid "Extract in a new directory"
-msgstr "Rozpakuj w nowym katalogu"
-
+msgstr "Rozpakuj do nowego katalogu"
+
+#, fuzzy
 msgid "Extract in current directory"
 msgstr "Rozpakuj w bieżącym katalogu"
 
+#, fuzzy
 msgid "Extract archive"
 msgstr "Rozpakuj archiwum"
 
+#, fuzzy
 msgid "This will extract archive in a new directory that should not exist yet."
-msgstr "Wypakuj zawartość archiwum w nowym, nieistniejącym katalogu."
-
+msgstr "Wypakuje zawartość archiwum w nowym katalogu, który nie powinien jeszcze istnieć."
+
+#, fuzzy
 msgid "This will extract archive in current directory and will overwrite existing files or directory."
-msgstr "Wypakuj zawartość archiwum w bieżącym katalogu i nadpisz istniejące pliki i katalogi."
-
+msgstr "Wypakuje zawartość archiwum w bieżącym katalogu i nadpisze istniejące pliki i katalogi."
+
+#, fuzzy
 msgid "Extract mode:"
 msgstr "Tryb wypakowywania:"
 
 msgid "extract"
-msgstr "rozpakuj"
+msgstr ""
 
 msgid "Change media properties"
-msgstr "Zmień właściwości"
+msgstr "Zmień właściwości mediów"
 
 msgid "File name:"
@@ -1414,5 +1484,5 @@
 
 msgid "Entries per page"
-msgstr "wpisy(-ów) na stronę"
+msgstr "Wpisów na stronę"
 
 #, php-format
@@ -1423,6 +1493,7 @@
 msgstr "ustaw uprawnienia"
 
+#, fuzzy
 msgid "select"
-msgstr "wybierz"
+msgstr "wybrane"
 
 msgid "No content found on this plugin."
@@ -1441,10 +1512,12 @@
 msgstr "Nie masz uprawnień do usunięcia tej wtyczki."
 
+#, fuzzy
 msgid "You don't have permissions to deactivate this plugin."
-msgstr "Nie masz uprawnień do wyłączenia tej wtyczki."
+msgstr "Nie masz uprawnień do usunięcia tej wtyczki."
 
 msgid "Plugins management"
 msgstr "Zarządzanie wtyczkami"
 
+#, fuzzy
 msgid "Plugin has been successfully deleted."
 msgstr "Wtyczka została pomyślnie usunięta."
@@ -1457,21 +1530,22 @@
 
 msgid "Plugins add new functionalities to Dotclear. Here you can activate or deactivate installed plugins."
-msgstr "Wtyczki zwiększają funkcjonalność Dotclear. Tutaj możesz włączyć lub wyłączyć zainstalowane wtyczki."
+msgstr ""
 
 #, php-format
 msgid "You can find additional plugins for your blog on %s."
-msgstr "Dodatkowe wtyczki dla Twojego bloga możesz znaleźć na %s."
+msgstr ""
 
 msgid "To install or upgrade a plugin you generally just need to upload it in \"Install or upgrade a plugin\" section."
-msgstr "Aby zaisntalować lub ulepszyć wtyczkę, generalnie musisz wysłać ja w sekcji \"Zainstaluj lub ulepsz wtyczkę\""
+msgstr ""
 
 msgid "To install or upgrade a plugin you just need to extract it in your plugins directory."
-msgstr "Aby zaisntalować lub ulepszyć wtyczkę, musisz rozpakować ją w katalogu \"plugins\""
+msgstr ""
 
 msgid "Plugins"
 msgstr "Wtyczki"
 
+#, fuzzy
 msgid "Activated plugins"
-msgstr "Aktywne wtyczki"
+msgstr "Usuń zaznaczone wtyczki"
 
 msgid "Plugin"
@@ -1481,15 +1555,19 @@
 msgstr "Wersja"
 
+#, fuzzy
 msgid "Details"
-msgstr "Szczegóły"
-
+msgstr "Szczegóły bloga"
+
+#, fuzzy
 msgid "Deactivate"
-msgstr "Wyłącz"
-
+msgstr "rok/tytuł"
+
+#, fuzzy
 msgid "Deactivated plugins"
-msgstr "Nieaktywne wtyczki"
-
+msgstr "Usuń zaznaczone wtyczki"
+
+#, fuzzy
 msgid "Activate"
-msgstr "Aktywuj"
+msgstr "Prywatne"
 
 msgid "Install or upgrade a plugin"
@@ -1526,6 +1604,7 @@
 msgstr "URL odnośnika:"
 
+#, fuzzy
 msgid "Link title:"
-msgstr "Tytuł odnośnika:"
+msgstr "Tytuł pliku:"
 
 msgid "Link language:"
@@ -1571,9 +1650,11 @@
 msgstr "Nie zapomnij aby sprawdzić konwersję XHTML przez zapisanie wpisu."
 
+#, fuzzy
 msgid "View entry"
-msgstr "Zobacz wpis"
-
+msgstr "zobacz wpis"
+
+#, fuzzy
 msgid "Preview entry"
-msgstr "Podgląd wpisu"
+msgstr "zobacz wpis"
 
 msgid "Entry status:"
@@ -1581,5 +1662,5 @@
 
 msgid "Published on:"
-msgstr "Data publikacji:"
+msgstr "Opublikowane o:"
 
 msgid "Text formating:"
@@ -1590,5 +1671,5 @@
 
 msgid "Selected entry"
-msgstr "Pokaż w nawigacji"
+msgstr "Wybrany wpis"
 
 msgid "Entry lang:"
@@ -1647,14 +1728,16 @@
 
 msgid "pending"
-msgstr "w przygotowaniu"
+msgstr "oczekujący"
 
 msgid "junk"
-msgstr "niechciane"
-
+msgstr "śmieci"
+
+#, fuzzy
 msgid "select this comment"
-msgstr "Wybierz ten komentarz"
-
+msgstr "Edytuj ten komentarz"
+
+#, fuzzy
 msgid "select this trackback"
-msgstr "Wybierz ten trackback"
+msgstr "Akceptuj trackbacki"
 
 msgid "Edit this comment"
@@ -1674,8 +1757,8 @@
 
 msgid "selected"
-msgstr "oznaczone gwiazdką"
+msgstr "wybrane"
 
 msgid "not selected"
-msgstr "nieoznaczone"
+msgstr "niewybrane"
 
 msgid "Category"
@@ -1683,38 +1766,47 @@
 
 msgid "Selected"
-msgstr "Oznaczone gwiazdką"
-
+msgstr "Wybrane"
+
+#, fuzzy
 msgid "Publish"
-msgstr "Publikuj"
-
+msgstr "publikuj"
+
+#, fuzzy
 msgid "Unpublish"
-msgstr "Anuluj publikację"
-
+msgstr "anuluj publikację"
+
+#, fuzzy
 msgid "Schedule"
-msgstr "Oczekujące"
-
+msgstr "programmer"
+
+#, fuzzy
 msgid "Mark as pending"
-msgstr "Zaznacz jako w przygotowaniu"
+msgstr "oznacz jako oczekujący"
 
 msgid "Mark"
-msgstr "Zaznacz"
-
+msgstr ""
+
+#, fuzzy
 msgid "Mark as selected"
-msgstr "Zaznacz gwiazdką"
-
+msgstr "wybrane"
+
+#, fuzzy
 msgid "Mark as unselected"
-msgstr "Usuń gwiazdkę"
-
+msgstr "wybrane"
+
+#, fuzzy
 msgid "Change"
-msgstr "Zmień"
-
+msgstr "Zmień plik"
+
+#, fuzzy
 msgid "Change category"
-msgstr "Zmień kategorię"
-
+msgstr "zmień kategorię"
+
+#, fuzzy
 msgid "Change author"
-msgstr "Zmień autora"
+msgstr "zmień autora"
 
 msgid "Selected:"
-msgstr "Zaznaczenie:"
+msgstr "Wybrane:"
 
 msgid "Month:"
@@ -1745,21 +1837,26 @@
 msgstr "Informacje osobowe zostały pomyślnie zaktualizowane."
 
+#, fuzzy
 msgid "Personal options has been successfully updated."
-msgstr "Opcje osobiste zostały pomyślnie zaktualizowane."
-
+msgstr "Informacje osobowe zostały pomyślnie zaktualizowane."
+
+#, fuzzy
 msgid "Favorites have been successfully added."
-msgstr "Ulubione zostały pomyślnie dodane."
-
+msgstr "Plik został pomyślnie wysłany."
+
+#, fuzzy
 msgid "Favorites have been successfully updated."
-msgstr "Ulubione zostały pomyślnie zaktualizowane."
-
+msgstr "Plik został pomyślnie zaktualizowany"
+
+#, fuzzy
 msgid "Favorites have been successfully removed."
-msgstr "Usunięto ulubione."
-
+msgstr "Plik został pomyślnie usunięty."
+
+#, fuzzy
 msgid "Default favorites have been successfully updated."
-msgstr "Domyślne ulubione zostały pomyślnie zaktualizowane."
+msgstr "Miniaturki zostały pomyślnie zaktualizowane"
 
 msgid "My profile"
-msgstr "Mój profil"
+msgstr ""
 
 msgid "Display name:"
@@ -1772,6 +1869,7 @@
 msgstr "Strefa czasowa:"
 
+#, fuzzy
 msgid "My options"
-msgstr "Moje opcje"
+msgstr "Opcje wyszukiwania"
 
 msgid "Preferred format:"
@@ -1788,69 +1886,76 @@
 
 msgid "Activate enhanced uploader in media manager"
-msgstr "Włącz ulepszony uploader w menedżerze plików"
+msgstr ""
 
 msgid "Do not use standard favicon"
-msgstr "Nie używaj standardowej ikony witryny (favicon)"
+msgstr ""
 
 msgid "This will be applied for all users"
-msgstr "Opcje te są wspólne dla wszystkich użytkowników bloga"
+msgstr ""
 
 msgid "Accessibility options"
-msgstr "Opcje ułatwień"
+msgstr ""
 
 msgid "Disable javascript powered drag and drop for ordering items"
-msgstr "Wyłącz dynamiczne ustawianie kolejności elementów (\"przeciągnij i upuść\")"
+msgstr ""
 
 msgid "Numeric fields will allow to type the elements' ordering number."
-msgstr "Po włączeniu tej opcji dostępne będą pola z numerami pozwalające na wpisanie kolejności elementów."
-
+msgstr ""
+
+#, fuzzy
 msgid "Dashboard modules"
-msgstr "Moduły panelu zarządzania"
-
+msgstr "Panel zarządzania"
+
+#, fuzzy
 msgid "Display documentation links"
-msgstr "Wyświetl odnośniki do dokumentacji"
-
+msgstr "Dokumentacja"
+
+#, fuzzy
 msgid "Display Dotclear news"
-msgstr "Wyświetl wiadomości Dotclear-a"
+msgstr "Nazwa wyświetlana"
 
 msgid "Display quick entry form"
-msgstr "Wyświetl formularz szybkiego wpisu w panelu głównym"
+msgstr ""
 
 msgid "My favorites"
-msgstr "Moje ulubione"
+msgstr ""
 
 #, php-format
 msgid "position of %s"
-msgstr "pozycja z %s"
-
+msgstr ""
+
+#, fuzzy
 msgid "Save order"
 msgstr "Zapisz kolejność"
 
+#, fuzzy
 msgid "Delete selected favorites"
-msgstr "Usuń zaznaczone ulubione"
-
+msgstr "Usuń zaznaczone kategorie"
+
+#, fuzzy
 msgid "Are you sure you want to remove selected favorites?"
-msgstr "Jesteś pewny, że chcesz usunąc zazanczone ulubione?"
+msgstr "Czy na pewno chcesz usunąć ten element?"
 
 msgid "If you are a super administrator, you may define this set of favorites to be used by default on all blogs of this installation:"
-msgstr "Jeżeli jesteś Super-administratorem, możesz zdefiniować zestaw ulubionych które będą użyte domyślnie na wszystkich blogach w tej instalacji:"
+msgstr ""
 
 msgid "Define as default favorites"
-msgstr "Definiuj jako domyślne ulubione"
+msgstr ""
 
 msgid "Currently no personal favorites."
-msgstr "Lista jest pusta."
+msgstr ""
 
 msgid "Default favorites"
-msgstr "Domyślne ulubione"
+msgstr ""
 
 msgid "Those favorites are displayed when My Favorites list is empty."
-msgstr "Te ulubione są wyświetlane kiedy Twoja lista \"Moje ulubione\" jest pusta."
-
+msgstr ""
+
+#, fuzzy
 msgid "Available favorites"
-msgstr "Dostępne ulubione"
+msgstr "Dostępne rozmiary:"
 
 msgid "Add to my favorites"
-msgstr "Dodaj do ulubionych"
+msgstr ""
 
 msgid "Search"
@@ -1870,5 +1975,5 @@
 
 msgid "schedule"
-msgstr "oczekujący"
+msgstr "programmer"
 
 msgid "change category"
@@ -1880,5 +1985,5 @@
 #, php-format
 msgid "%d entries found"
-msgstr "znaleziono %d wpisy(-ów)"
+msgstr "znaleziono %d wpisów"
 
 #, php-format
@@ -1912,69 +2017,75 @@
 msgstr "Wcześniej wysłane sygnały ping"
 
+#, fuzzy
 msgid "Dotclear update"
-msgstr "Uaktualnienia Dotclear"
-
-#, php-format
+msgstr "Dotclear został zaktualizowany."
+
+#, fuzzy, php-format
 msgid "Unable to delete file %s"
-msgstr "Nie mogę usunąć pliku %s"
+msgstr "Nie można zmienić nazwy pliku."
 
 #, php-format
 msgid "Downloaded Dotclear archive seems to be corrupted. Try <a %s>download it</a> again."
-msgstr "Pobrane archiwum Dotclear wygląda na uszkodzone. Spróbuj <a %s>pobrać je</a> ponownie."
+msgstr ""
 
 msgid "The following files of your Dotclear installation have been modified so we won't try to update your installation. Please try to <a href=\"http://dotclear.org/download\">update manually</a>."
-msgstr "Następujące pliki Twojej instalacji Dotclear zostały zmodyfikowane, więc aktualizacja nie zostanie przeprowadzona. Możesz spróbować również <a href=\"http://dotclear.org/download\">ręcznej aktualizacji</a>."
+msgstr ""
 
 #, php-format
 msgid "The following files of your Dotclear installation are not readable. Please fix this or try to make a backup file named %s manually."
-msgstr "Nie można odczytać następujących plików Twojej instalacji Dotclear. Ustaw odpowiednie prawa dostępu lub spróbuj utworzyć plik zapasowy o nazwie %s ręcznie."
+msgstr ""
 
 msgid "The following files of your Dotclear installation cannot be written. Please fix this or try to <a href=\"http://dotclear.org/download\">update manually</a>."
-msgstr "Następujące pliki Twojej instalacji Dotclear nie mogą być zapisane. Ustaw odpowiednie prawa dostępu lub spróbuj <a href=\"http://dotclear.org/download\">ręcznej aktualizacji</a>."
-
+msgstr ""
+
+#, fuzzy
 msgid "No newer Dotclear version available."
-msgstr "Posiadasz najnowszą wersję Dotclear-a."
-
-#, php-format
+msgstr "Moduł iconv jest niedostępny."
+
+#, fuzzy, php-format
 msgid "Dotclear %s is available."
-msgstr "Dotclear %s jest już dostepny."
+msgstr "Dotclear jest już zainstalowany."
 
 msgid "To upgrade your Dotclear installation simply click on the following button. A backup file of your current installation will be created in your root directory."
-msgstr "Aby uaktualnić instalację Dotclear-a kliknij poniższy przycisk. Plik zapasowy bieżącej instalacji zostanie utworzony w Twoim katalogu głownym."
+msgstr ""
 
 msgid "Update Dotclear"
-msgstr "Uaktualnij Dotclear"
-
+msgstr ""
+
+#, fuzzy
 msgid "Update backup files"
-msgstr "Uaktualnij pliki zapasowe"
+msgstr "Zaktualizuj miniaturki"
 
 msgid "The following files are backups of previously updates. You can revert your previous installation or delete theses files."
-msgstr "Następujące pliki są plikami zapasowymi z poprzednich uaktualnień. Możesz przywrócić poprzednie instalacje lub usunąć te pliki."
+msgstr ""
 
 msgid "Please note that reverting your Dotclear version may have some unwanted side-effects. Consider reverting only if you experience strong issues with this new version."
-msgstr "Przywrócenie poprzedniej wersji Dotcleara może mieć niepożądane skutki uboczne. Zalecane jest tylko kiedy masz naprawdę spore problemy z nową wersją."
+msgstr ""
 
 #, php-format
 msgid "You should not revert to version prior to last one (%s)."
-msgstr "Nie powinieneś przywracać wersji wcześniejszej niż ostatnio (%s)."
-
+msgstr ""
+
+#, fuzzy
 msgid "Delete selected file"
-msgstr "Usuń wybrany plik"
-
+msgstr "Usuń zaznaczone kategorie"
+
+#, fuzzy
 msgid "Revert to selected file"
-msgstr "Przywróć za pomocą wybranego pliku"
+msgstr "Usuń zaznaczone wtyczki"
 
 msgid "Congratulations, you're one click away from the end of the update."
-msgstr "Gratulacje, jesteś o jedno kliknięcie od zakończenia aktualizacji."
-
+msgstr ""
+
+#, fuzzy
 msgid "Finish the update."
-msgstr "Dokończ aktualizację."
+msgstr "Ostatnia aktualizacja"
 
 msgid "new user"
 msgstr "nowy użytkownik"
 
-#, php-format
+#, fuzzy, php-format
 msgid "User \"%s\" already exists."
-msgstr "Użytkownik \"%s\" już istnieje."
+msgstr "Nowy plik już istnieje."
 
 msgid "User has been successfully updated."
@@ -1987,9 +2098,10 @@
 msgstr "Ostrzeżenie:"
 
+#, fuzzy
 msgid "If you change your username, you will have to log in again."
-msgstr "Jeżeli zmienisz nazwę użytkownika, będziesz musiał zalogować się ponownie."
+msgstr "Jeżeli zmienisz login, będziesz musiał zalogować się ponownie."
 
 msgid "Password change required to connect"
-msgstr "Zmiana hasła wymagana przy połączeniu"
+msgstr ""
 
 msgid "No permissions."
@@ -1999,10 +2111,13 @@
 msgstr "Dodaj nowe uprawnienia"
 
+#, fuzzy
 msgid "Username"
 msgstr "Nazwa użytkownika:"
 
+#, fuzzy
 msgid "Last Name"
-msgstr "Nazwisko"
-
+msgstr "Ostatnia aktualizacja"
+
+#, fuzzy
 msgid "First Name"
 msgstr "Imię"
@@ -2042,8 +2157,8 @@
 
 msgid "Go to site"
-msgstr "Przejdź do witryny"
+msgstr ""
 
 msgid "new window"
-msgstr "nowe okno"
+msgstr ""
 
 msgid "User:"
@@ -2054,12 +2169,12 @@
 
 msgid "Safe mode"
-msgstr "Tryb bezpieczny"
+msgstr ""
 
 msgid "You are in safe mode. All plugins have been temporarily disabled. Remind to log out then log in again normally to get back all functionalities"
-msgstr "Jesteś w trybie bezpiecznym. Wszystkie wtyczki zostały tymczasowo wyłączone. Po wylogowaniu u ponownym zalogowaniu zostanie przywrócona normalna funkcjonalność."
+msgstr ""
 
 #, php-format
 msgid "Thank you for using %s."
-msgstr "Dziękujemy za korzystanie z %s."
+msgstr ""
 
 msgid "Help"
@@ -2075,6 +2190,7 @@
 msgstr "pomoc"
 
+#, fuzzy
 msgid "no selection"
-msgstr "usuń zaznaczenie"
+msgstr "odwróć zaznaczenie"
 
 msgid "select all"
@@ -2087,14 +2203,14 @@
 msgstr "zobacz wpis"
 
-#, php-format
+#, fuzzy, php-format
 msgid "Are you sure you want to delete selected entries (%s)?"
-msgstr "Czy jesteś pewny że chcesz usunąć zaznaczone wpisy (%s)?"
+msgstr "Czy na pewno chcesz usunąć zaznaczone wpisy?"
 
 msgid "Are you sure you want to delete this entry?"
 msgstr "Czy na pewno chcesz usunąć ten wpis?"
 
-#, php-format
+#, fuzzy, php-format
 msgid "Are you sure you want to delete selected comments (%s)?"
-msgstr "Czy jesteś pewny że chcesz usunąć zaznaczone komentarze (%s)?"
+msgstr "Czy na pewno chcesz usunąć zaznaczone komentarze?"
 
 msgid "Are you sure you want to delete this comment?"
@@ -2102,45 +2218,49 @@
 
 msgid "Users with posts cannot be deleted."
-msgstr "Nie można usunąć użytkowników posiadających wpisy."
-
-#, php-format
+msgstr ""
+
+#, fuzzy, php-format
 msgid "Are you sure you want to delete selected users (%s)?"
-msgstr "Czy na pewno chcesz usunąć zaznaczonego użytkownika (%s)?"
-
-#, php-format
+msgstr "Czy na pewno chcesz usunąć zaznaczonych użytkowników?"
+
+#, fuzzy, php-format
 msgid "Are you sure you want to delete category \"%s\"?"
-msgstr "Czy na pewno chcesz usunąć kategorię \"%s\"?"
-
+msgstr "Czy na pewno chcesz usunąć ten wpis?"
+
+#, fuzzy
 msgid "Are you sure you want to reorder all categories?"
-msgstr "Czy na pewno chcesz zmienić kolejność wszystkich kategorii?"
-
-#, php-format
+msgstr "Czy na pewno chcesz usunąć zaznaczone kategorie?"
+
+#, fuzzy, php-format
 msgid "Are you sure you want to remove media \"%s\"?"
-msgstr "Jesteś pewien, że chcesz usunąć \"%s\"?"
-
+msgstr "Jesteś pewien, że chcesz usunąć %s?"
+
+#, fuzzy
 msgid "Are you sure you want to extract archive in current directory?"
-msgstr "Czy na pewno chcesz wypakować zawartość archiwum do bieżącego katalogu?"
-
-#, php-format
+msgstr "Czy na pewno chcesz wypakować zawartość archiwum w bieżącym katalogu?"
+
+#, fuzzy, php-format
 msgid "Are you sure you want to remove attachment \"%s\"?"
-msgstr "Jesteś pewien, że chcesz usunąć ten załącznik \"%s\"?"
-
-#, php-format
+msgstr "Jesteś pewien, że chcesz usunąć ten załącznik?"
+
+#, fuzzy, php-format
 msgid "Are you sure you want to delete \"%s\" language?"
-msgstr "Czy na pewno chcesz usunąć język \"%s\"?"
-
-#, php-format
+msgstr "Czy na pewno chcesz usunąć ten wpis?"
+
+#, fuzzy, php-format
 msgid "Are you sure you want to delete \"%s\" plugin?"
-msgstr "Czy na pewno chcesz usunąć wtyczkę \"%s\"?"
-
+msgstr "Czy na pewno chcesz usunąć zaznaczone wtyczki?"
+
+#, fuzzy
 msgid "Use this theme"
-msgstr "Uzyj tego motywu"
-
+msgstr "użyj wybranego motywu"
+
+#, fuzzy
 msgid "Remove this theme"
-msgstr "Usuń ten motyw"
-
-#, php-format
+msgstr "Usuń załącznik"
+
+#, fuzzy, php-format
 msgid "Are you sure you want to delete \"%s\" theme?"
-msgstr "Czy na pewno chcesz usunąć motyw \"%s\"?"
+msgstr "Czy na pewno chcesz usunąć wybrany motyw?"
 
 msgid "Zip file content"
@@ -2157,8 +2277,8 @@
 
 msgid "You have unsaved changes. Switch post format will loose these changes. Proceed anyway?"
-msgstr "Niektóre zmiany nie zostały zachowane. Zmiana formatu wpisu spowoduje że zostaną utracone. Kontynuować?"
+msgstr ""
 
 msgid "Loading enhanced uploader, please wait."
-msgstr "Proszę czekać, ładuję ulepszony uploader."
+msgstr ""
 
 msgid "You have unsaved changes."
@@ -2184,5 +2304,5 @@
 
 msgid "-- block format --"
-msgstr "-- format blokowy --"
+msgstr ""
 
 msgid "Paragraph"
@@ -2259,8 +2379,8 @@
 
 msgid "Activate enhanced uploader"
-msgstr "Włącz ulepszony uploader"
+msgstr ""
 
 msgid "Disable enhanced uploader"
-msgstr "Wyłącz ulepszony uploader"
+msgstr ""
 
 msgid "File successfully uploaded."
@@ -2289,8 +2409,8 @@
 
 msgid "Clean"
-msgstr "Wyczyść"
+msgstr ""
 
 msgid "Upload"
-msgstr "Załaduj"
+msgstr ""
 
 msgid "No file in queue."
@@ -2317,5 +2437,5 @@
 
 msgid "scheduled"
-msgstr "oczekujący"
+msgstr "zaplanowany"
 
 msgid "protected"
@@ -2337,17 +2457,20 @@
 
 msgid "admin"
-msgstr "administrator"
-
+msgstr ""
+
+#, fuzzy
 msgid "superadmin"
-msgstr "Super-administrator"
-
+msgstr "Super administrator"
+
+#, fuzzy
 msgid "Database error"
-msgstr "Bład bazy danych"
+msgstr "Rodzaj bazy danych"
 
 msgid "There seems to be no Session table in your database. Is Dotclear completly installed?"
-msgstr "Nie można zlokalizować tabeli sesji w bazie danych. Jesteś pewny że Dotclear został zainstalowany w całości?"
-
+msgstr ""
+
+#, fuzzy
 msgid "Languages"
-msgstr "Języki"
+msgstr "Język?"
 
 msgid "System"
@@ -2358,5 +2481,5 @@
 
 msgid "Updates"
-msgstr "Uaktualnienia"
+msgstr ""
 
 msgid "administrator"
@@ -2402,6 +2525,7 @@
 msgstr "Ta kategoria nie jest pusta."
 
+#, fuzzy
 msgid "Category URL must be unique."
-msgstr "Kategoria URL musi być unikalna."
+msgstr "Zarówno tytuł jak i adres kategorii muszą być unikalne"
 
 msgid "You must provide a category title"
@@ -2429,6 +2553,7 @@
 msgstr "Nie masz uprawnień do zmiany kategorii tego wpisu"
 
+#, fuzzy
 msgid "You are not allowed to mark this entry as selected"
-msgstr "Nie masz uprawnień aby zaznaczyć ten wpis."
+msgstr "Nie masz uprawnień do zmiany kategorii tego wpisu"
 
 msgid "You are not allowed to delete entries"
@@ -2444,6 +2569,7 @@
 msgstr "Brak zawartości wpisu"
 
+#, fuzzy
 msgid "Empty entry URL"
-msgstr "Usuń URL wejściowy"
+msgstr "Edytuj wpis"
 
 msgid "You are not allowed to update comments"
@@ -2498,9 +2624,11 @@
 msgstr "Brak adresu bloga"
 
+#, fuzzy
 msgid "No log message"
-msgstr "Nie ma wpisu w logu"
-
+msgstr "Brak nazwy bloga"
+
+#, fuzzy
 msgid "unknown"
-msgstr "nieznany(-a)"
+msgstr "teraz"
 
 msgid "No blog defined."
@@ -2512,5 +2640,5 @@
 
 msgid "You are not a super administrator."
-msgstr "Nie masz uprawień Super-administratora."
+msgstr "Nie masz uprawień super administratora."
 
 msgid "Permission denied."
@@ -2520,6 +2648,7 @@
 msgstr "Nie jesteś właścicielem pliku."
 
+#, fuzzy
 msgid "This file is not allowed."
-msgstr "Nie można wysłać tego pliku (format zabroniony)."
+msgstr "Wysłanie tego pliku nie jest dozwolone."
 
 msgid "New file already exists."
@@ -2529,17 +2658,17 @@
 msgstr "Plik nie istnieje w bazie danych."
 
-#, php-format
+#, fuzzy, php-format
 msgid "Extract destination directory %s already exists."
 msgstr "Docelowy katalog %s już istnieje."
 
 msgid "Embedded Audio Player"
-msgstr "Osadzony Odtwarzacz Audio"
+msgstr ""
 
 msgid "Embedded Video Player"
-msgstr "Osadzony Odtwarzacz Wideo"
+msgstr ""
 
 #, php-format
 msgid "%s: in [%s] and [%s]"
-msgstr "%s: w [%s] i [%s]"
+msgstr ""
 
 msgid "Empty module zip file."
@@ -2566,12 +2695,12 @@
 
 msgid "Cannot deactivate plugin."
-msgstr "Nie można wyłączyć wtyczki."
+msgstr ""
 
 msgid "Cannot activate plugin."
-msgstr "Nie można włączyć wtyczki."
-
-#, php-format
+msgstr ""
+
+#, fuzzy, php-format
 msgid "Invalid setting dcNamespace: %s"
-msgstr "Nieprawidłowe ustawienie dcNamespace: %s"
+msgstr "Nieprawidłowy adres e-mail"
 
 msgid "Unable to retrieve settings:"
@@ -2585,13 +2714,15 @@
 msgstr "Przestrzeń nazw nie została podana"
 
+#, fuzzy
 msgid "Unable to retrieve workspaces:"
-msgstr "Nie można odczytać przestrzeni roboczej:"
-
+msgstr "Nie można odnaleźć ustawień:"
+
+#, fuzzy
 msgid "Unable to retrieve namespaces:"
-msgstr "Nie można odczytać przestrzeni nazw:"
-
-#, php-format
+msgstr "Nie można odnaleźć ustawień:"
+
+#, fuzzy, php-format
 msgid "Invalid setting namespace: %s"
-msgstr "Nieprawidłowe ustawienie przestrzeni nazw: %s"
+msgstr "Nieprawidłowy adres e-mail"
 
 #, php-format
@@ -2610,47 +2741,58 @@
 msgstr "%s, błąd wysyłania sygnału ping:"
 
+#, fuzzy
 msgid "Digests file not found."
-msgstr "Nie znaleziono pliku digests."
-
+msgstr "Wtyczki nie znaleziono"
+
+#, fuzzy
 msgid "No file to download"
-msgstr "Lista plików do pobrania jest pusta."
-
+msgstr "Plik nie został wysłany."
+
+#, fuzzy
 msgid "Root directory is not writable."
-msgstr "Główny katalog nie jest zapisywalny."
-
+msgstr "Katalog cache %s nie jest zapisywalny."
+
+#, fuzzy
 msgid "An error occurred while downloading archive."
-msgstr "Wystąpił błąd podczas pobierania archiwum."
-
+msgstr "Podczas ściągania pliku wystąpił błąd."
+
+#, fuzzy
 msgid "Archive not found."
-msgstr "Nie odnaleziono archiwum."
-
+msgstr "Wtyczki nie znaleziono"
+
+#, fuzzy
 msgid "Unable to read current digests file."
-msgstr "Nie można odczytać bieżącego pliku digests."
-
+msgstr "Nie można czytać nowego pliku _define.php."
+
+#, fuzzy
 msgid "Downloaded file does not seem to be a valid archive."
-msgstr "Pobrany plik nie jest poprawnym archiwum."
-
+msgstr "Ten plik zip nie wydaje się być poprawnym modułem Dotclear."
+
+#, fuzzy
 msgid "Incomplete archive."
-msgstr "Archiwum jest niekompletne."
-
+msgstr "Rozpakuj archiwum"
+
+#, fuzzy
 msgid "Unable to read digests file."
-msgstr "Nie można odczytac pliku digests."
+msgstr "Nie można zmienić nazwy pliku."
 
 msgid "Invalid digests file."
-msgstr "Nieprawidłowy plik digests."
-
-#, php-format
+msgstr ""
+
+#, fuzzy, php-format
 msgid "Invalid dcWorkspace: %s"
-msgstr "Nieprawidłowy dcWorkspace: %s"
-
+msgstr "Nieprawidłowy adres e-mail"
+
+#, fuzzy
 msgid "Unable to retrieve prefs:"
-msgstr "Nie można odczytać ustawień:"
-
-#, php-format
+msgstr "Nie można odnaleźć ustawień:"
+
+#, fuzzy, php-format
 msgid "%s is not a valid pref id"
 msgstr "%s nie jest poprawnym ID ustawienia"
 
+#, fuzzy
 msgid "No workspace specified"
-msgstr "Nie wskazano przestrzeni roboczej"
+msgstr "Przestrzeń nazw nie została podana"
 
 msgid "SQLite Database Schema cannot be upgraded."
@@ -2700,12 +2842,14 @@
 msgstr "Katalog docelowy nie jest oznaczony jako niechciany."
 
+#, fuzzy
 msgid "File already exists."
-msgstr "Wskazany plik już istnieje."
+msgstr "Nowy plik już istnieje."
 
 msgid "Cannot write in this directory."
 msgstr "Nie można zapisywać do tego katalogu."
 
+#, fuzzy
 msgid "An error occurred while writing the file."
-msgstr "Wystąpił błąd podczas zapisywania pliku."
+msgstr "Podczas zapisywania pliku wystąpił błąd."
 
 msgid "Source file does not exist."
@@ -2735,9 +2879,9 @@
 #, php-format
 msgid "File %s is not compressed in the zip."
-msgstr "Pplk %s nie jest poprawnym plikiem archiwum."
+msgstr ""
 
 #, php-format
 msgid "Trying to unzip a folder name %s"
-msgstr "Rozpakowuję katalog %s"
+msgstr ""
 
 msgid "Unable to write destination file."
@@ -2762,13 +2906,14 @@
 msgstr "Nie można czytać katalogu"
 
+#, fuzzy
 msgid "Unable to connect to database"
-msgstr "Nie można połączyć się z bazą danych."
+msgstr "Nie można połączyć z bazą danych. Sprawdź swoje ustawienia."
 
 #, php-format
 msgid "<p>This either means that the username and password information in your <strong>config.php</strong> file is incorrect or we can't contact the database server at \"<em>%s</em>\". This could mean your host's database server is down.</p> <ul><li>Are you sure you have the correct username and password?</li><li>Are you sure that you have typed the correct hostname?</li><li>Are you sure that the database server is running?</li></ul><p>If you're unsure what these terms mean you should probably contact your host. If you still need help you can always visit the <a href=\"http://forum.dotclear.net/\">Dotclear Support Forums</a>.</p>"
-msgstr "<p>To oznacza że nazwa użytkownika i hasło w Twoim pliku <strong>config.php</strong> jest niepoprawna albo dostęp do bazy danych pod \"<em>%s</em>\" jest niemożliwy. To może również oznaczać że serwer bazy danych nie pracuje.</p> <ul><li>Jesteś pewny że podałeś prawidłową nazwę użytkownika i hasło?</li><li>Jesteś pewny że podałeś prawidłowo adres hosta?</li><li>Jesteś pewny że serwer bazy danych pracuje?</li></ul><p>Jeżeli nie zrozumiałeś znaczeń użytych w pytaniach powinieneś skontaktować się z administratorem. Jeżeli dalej będziesz potrzebował pomocy, zawsze możesz odwiedzić <a href=\"http://forum.dotclear.net/\">Dotclear Support Forums</a>.</p>"
+msgstr ""
 
 msgid "The following error was encountered while trying to read the database:"
-msgstr "Podczas odczytu z bazy danych wystąpił następujący błąd:"
+msgstr ""
 
 #~ msgid "login"
Index: locales/pl/plugins.po
===================================================================
--- locales/pl/plugins.po	(revision 516)
+++ locales/pl/plugins.po	(revision 261)
@@ -9,6 +9,6 @@
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2011-05-13 19:36+0200\n"
-"PO-Revision-Date: 2011-06-26 14:10+0100\n"
-"Last-Translator: \n"
+"PO-Revision-Date: 2008-07-13 12:42+0200\n"
+"Last-Translator: Nnidŷu <nnidyu@asylumeternity.net>\n"
 "Language-Team: Polish\n"
 "Language: \n"
@@ -62,8 +62,8 @@
 
 msgid "Delete junk comments older than"
-msgstr "Usuń śmieciowe komentarze starsze niż"
+msgstr ""
 
 msgid "days"
-msgstr "dni"
+msgstr ""
 
 msgid "IP Blacklist / Whitelist Filter"
@@ -182,5 +182,5 @@
 
 msgid "Ham"
-msgstr "Pożadane"
+msgstr ""
 
 msgid "Filter does not exist."
@@ -237,6 +237,7 @@
 msgstr "Konfiguracja filtra"
 
+#, fuzzy
 msgid "position"
-msgstr "pozycja"
+msgstr "Dyspozycja mediów"
 
 msgid "Syndication"
@@ -250,11 +251,12 @@
 
 msgid "manage blogroll"
-msgstr "zarządzaj polecanymi odnośnikami"
+msgstr "zarządzaj odnośnikami"
 
 msgid "Links"
 msgstr "Odnośniki"
 
+#, fuzzy
 msgid "All categories"
-msgstr "Wszystkie kategorie"
+msgstr "Dodaj kategorię"
 
 msgid "Home page only"
@@ -277,11 +279,12 @@
 
 msgid "Return to blogroll"
-msgstr "Wróć do polecanych odnośników"
+msgstr "Powróć do linków"
 
 msgid "Category has been successfully updated"
 msgstr "Kategoria została pomyślnie zaktualizowana"
 
+#, fuzzy
 msgid "Edit category"
-msgstr "Edytuj kategorię"
+msgstr "Dodaj kategorię"
 
 msgid "Link has been successfully updated"
@@ -396,6 +399,7 @@
 msgstr "Język"
 
+#, fuzzy
 msgid "select this link"
-msgstr "wybierz ten odnośnik"
+msgstr "wybierz wszystkie odnośniki"
 
 msgid "Delete selected links"
@@ -406,5 +410,5 @@
 
 msgid "The link list is empty."
-msgstr "Odnośnik jest pusty."
+msgstr ""
 
 msgid "Add a new link"
@@ -417,6 +421,7 @@
 msgstr "Importuj odnośniki"
 
+#, fuzzy
 msgid "OPML or XBEL File:"
-msgstr "Plik w formacie OPML lub XBEL:"
+msgstr "Plik OPML lub XBEL:"
 
 msgid "import"
@@ -447,9 +452,11 @@
 msgstr "Zastosuj kod"
 
+#, fuzzy
 msgid "Choose a predefined style"
 msgstr "Style predefiniowane"
 
+#, fuzzy
 msgid "For the following reasons, images cannot be created. You won't be able to change some background properties."
-msgstr "Z następujących przyczyn obrazy nie mogą zostać utworzone. Nie będziesz mógł zmienić niektórych własności tła."
+msgstr "Ponieważ obrazy nie mogą być tworzone, nie będziesz mógł zmienić niektórych własności tła."
 
 msgid "Theme configuration has been successfully updated."
@@ -466,8 +473,8 @@
 
 msgid "Main text font:"
-msgstr "Krój czcionki tekstu podstawowego:"
+msgstr ""
 
 msgid "Main text font size:"
-msgstr "Rozmiar czcionki tekstu podstawowego:"
+msgstr ""
 
 msgid "Main text color:"
@@ -475,5 +482,5 @@
 
 msgid "Text line height:"
-msgstr "Wysokość interlinii:"
+msgstr ""
 
 msgid "Links color:"
@@ -490,5 +497,5 @@
 
 msgid "Prelude color:"
-msgstr "Kolor wstępu:"
+msgstr ""
 
 msgid "Hide main title"
@@ -496,8 +503,8 @@
 
 msgid "Main title font:"
-msgstr "Krój czionki głównego tytułu:"
+msgstr ""
 
 msgid "Main title font size:"
-msgstr "Rozmiar czionki głównego tytułu:"
+msgstr ""
 
 msgid "Main title color:"
@@ -569,5 +576,5 @@
 
 msgid "Sidebar lines color:"
-msgstr "Kolor linii w sidebarze:"
+msgstr ""
 
 msgid "Sidebar links color:"
@@ -578,14 +585,14 @@
 
 msgid "Sidebar focus links color:"
-msgstr "Kolor wybranych odnośników w sidebarze:"
+msgstr ""
 
 msgid "Date title font:"
-msgstr "Krój czcionki w dacie w tytule:"
+msgstr ""
 
 msgid "Date title font size:"
-msgstr "Rozmiar czcionki w dacie w tytule:"
+msgstr ""
 
 msgid "Date title color:"
-msgstr "Kolor daty w tytule:"
+msgstr ""
 
 msgid "Entry title font:"
@@ -635,18 +642,19 @@
 
 msgid "Copy this code:"
-msgstr "Skopiuj ten kod:"
+msgstr ""
 
 msgid "default"
-msgstr "domyślny"
+msgstr ""
 
 msgid "At least one of the following functions is not available: imagecreatetruecolor, imagepng & imagecreatefrompng."
-msgstr "Przynajmniej jedna z następujących funkcji nie jest dostępna: imagecreatetruecolor, imagepng & imagecreatefrompng."
-
+msgstr ""
+
+#, fuzzy
 msgid "The 'public' directory does not exist."
-msgstr "NIe odnaleziono katalogu \"public\""
+msgstr "Ta strona nie istnieje."
 
 #, php-format
 msgid "The '%s' directory cannot be modified."
-msgstr "Katalog '%s' nie może zostać zmieniony."
+msgstr ""
 
 msgid "Unable to create images."
@@ -657,5 +665,5 @@
 
 msgid "Uploaded image is not 800 pixels wide."
-msgstr "Załadowany obraz nie ma szerokości 800px."
+msgstr ""
 
 msgid "Unable to open image."
@@ -663,24 +671,26 @@
 
 msgid "Checks trackback source for a link to the post"
-msgstr "Sprawdza zródło odnośnika w poście"
+msgstr ""
 
 msgid "Import/Export"
 msgstr "Import/Eksport"
 
+#, fuzzy
 msgid "Flat file export"
-msgstr "Eksport do pojedynczego pliku"
+msgstr "Plik nie jest pełnym eksportem."
 
 msgid "Exports a blog or a full Dotclear installation to flat file."
-msgstr "Eksportuje blog lub pełną instalację do pojedynczego pliku."
-
+msgstr ""
+
+#, fuzzy
 msgid "Export file not found."
-msgstr "Nie znaleniono pliku z eksportowanymi danymi."
+msgstr "Eksportuj całą zawartość"
 
 msgid "Export a blog"
 msgstr "Eksportuj blog"
 
-#, php-format
+#, fuzzy, php-format
 msgid "This will create an export of your current blog: %s"
-msgstr "Utwórz eksport Twojego aktualnego blogu: %s."
+msgstr "Zaimportuje kanał (RSS lub Atom) jako nową zawartość w aktualnym blogu: %s."
 
 msgid "Export"
@@ -688,5 +698,5 @@
 
 msgid "You may also want to download your media directory as a zip file"
-msgstr "Możesz również ściągnąć katalog z mediami w formacie zip"
+msgstr ""
 
 msgid "Export all content"
@@ -694,83 +704,92 @@
 
 msgid "Congratulation!"
-msgstr "Gratulacje!"
-
+msgstr ""
+
+#, fuzzy
 msgid "Your blog has been successfully imported. Welcome on Dotclear 2!"
-msgstr "Twój blog został zaimportowany pomyślnie. Witaj w Dotclear 2!"
+msgstr "odnośniki zostały pomyślnie zaimportowane"
 
 msgid "Why don't you blog this now?"
-msgstr "A może umieściłbyś to teraz na blogu?"
-
+msgstr ""
+
+#, fuzzy
 msgid "or"
-msgstr "lub"
+msgstr "więcej"
 
 msgid "visit your dashboard"
-msgstr "odwiedź swój panel"
+msgstr ""
 
 msgid "Dotclear 1.2 import"
-msgstr "Import Dotclear 1.2"
+msgstr ""
 
 msgid "Import a Dotclear 1.2 installation into your current blog."
-msgstr "Importuj instalację Dotclear 1.2 do bieżącego bloga."
-
-#, php-format
+msgstr ""
+
+#, fuzzy, php-format
 msgid "This will import your Dotclear 1.2 content as new content in the current blog: %s."
-msgstr "Importuj zawartość Twojego Dotclear-a 1.2 jako nową treść w aktualnym blogu: %s."
+msgstr "Zaimportuje kopię zapasową pojedynczego bloga jako nową zawartość w aktualnym blogu: %s."
 
 msgid "Please note that this process will empty your categories, blogroll, entries and comments on the current blog."
-msgstr "Proszę zauważyć, że ten proces usunie Twoje kategorie, polecane odnośniki oraz wpisy i komentarze na bieżącym blogu."
+msgstr ""
 
 msgid "Depending on the size of your blog, it could take a few minutes."
-msgstr "Zależnie od wielkości bloga, może to zająć nawet do kilku minut."
-
+msgstr ""
+
+#, fuzzy
 msgid "General information"
-msgstr "Ogólne informacje"
-
+msgstr "Informacja"
+
+#, fuzzy
 msgid "Import my blog now"
-msgstr "Zaimportuj mój blog teraz"
+msgstr "Eksportuj blog"
 
 msgid "We first need some information about your old Dotclear 1.2 installation."
-msgstr "Najpierw potrzebujemy kilku informacji o Twojej starej instalacji Dotclear 1.2"
-
+msgstr ""
+
+#, fuzzy
 msgid "Entries import options"
-msgstr "Opcje importu wpisów:"
+msgstr "Limit wpisów:"
 
 msgid "Number of entries to import at once:"
-msgstr "Ile wpisów naraz zaimportować :"
-
+msgstr ""
+
+#, fuzzy
 msgid "Importing users"
-msgstr "Importuj użytkowników"
+msgstr "Importuj odnośniki"
 
 msgid "Importing categories"
-msgstr "Importowanie kategorii"
-
+msgstr ""
+
+#, fuzzy
 msgid "Importing blogroll"
-msgstr "Import polecanych odnośników"
-
-#, php-format
+msgstr "Importuj pojedynczy blog"
+
+#, fuzzy, php-format
 msgid "Importing entries from %d to %d / %d"
-msgstr "Importowanie wpisów od %d do %d / %d"
+msgstr "Indeksowanie wpisów od %d do %d."
 
 msgid "Please read carefully"
-msgstr "Prosze przeczytać uważnie"
+msgstr ""
 
 msgid "Every newly imported user has received a random password and will need to ask for a new one by following the \"I forgot my password\" link on the login page (Their registered email address has to be valid.)"
-msgstr "Każdy nowo zaimportowany użytkownik otrzymał losowo wygenerowane hasło i będzie musiał poprosić o przysłanie go przy użyciu linku \"Zapomniałem hasła\" na stronie logowania (adres e-mail zarejestrowanego użytkownika musi być prawidłowy.)"
+msgstr ""
 
 #, php-format
 msgid "Please note that Dotclear 2 has a new URL layout. You can avoid broken links by installing <a href=\"%s\">DC1 redirect</a> plugin and activate it in your blog configuration."
-msgstr "Proszę zauważyć że Dotclear 2 używa innej konstrukcji dla odnośników. Możesz uniknąć nie działających linków poprzez zainstalowanie dodatku <a href=\"%s\">DC1 redirect</a> i aktywowanie go w konfiguracji bloga."
-
+msgstr ""
+
+#, fuzzy
 msgid "next step"
-msgstr "następny krok"
+msgstr "następna strona"
 
 msgid "Dotclear tables not found"
-msgstr "Nie znaleziono tabel Dotclear"
-
+msgstr ""
+
+#, fuzzy
 msgid "Feed import"
-msgstr "Implort kanałów"
+msgstr "importuj"
 
 msgid "Imports a feed as new entries."
-msgstr "Importuje treść kanału jako nowe wpisy."
+msgstr ""
 
 msgid "Cannot retrieve feed URL."
@@ -797,11 +816,12 @@
 
 msgid "Flat file import"
-msgstr "Import pojedynczego pliku"
+msgstr ""
 
 msgid "Imports a blog or a full Dotclear installation from flat file."
-msgstr "Importuje blog lub pełną instalację Dotclear-a z pojedynczego pliku."
-
+msgstr ""
+
+#, fuzzy
 msgid "Single blog successfully imported."
-msgstr "Zaimportowano pojedynczy blog."
+msgstr "Zawartość pomyślnie zaimportowana."
 
 msgid "Are you sure you want to import a full backup file?"
@@ -828,48 +848,50 @@
 
 msgid "WordPress import"
-msgstr "Import WordPress-a"
+msgstr ""
 
 msgid "Import a WordPress installation into your current blog."
-msgstr "Importuj instalację WordPress-a do Twojego aktualnego bloga."
-
-#, php-format
+msgstr ""
+
+#, fuzzy, php-format
 msgid "This will import your WordPress content as new content in the current blog: %s."
-msgstr "Importuj zawartość Twojego WordPress-a jako nową treść w aktualnym blogu: %s."
+msgstr "Zaimportuje kanał (RSS lub Atom) jako nową zawartość w aktualnym blogu: %s."
 
 msgid "We first need some information about your old WordPress installation."
-msgstr "Na wstępie potrzebujemy kliku informacji na temat Twojej starej instalacji WordPress-a"
+msgstr ""
 
 msgid "WordPress and Dotclear's handling of categories are quite different. You can assign several categories to a single post in WordPress. In the Dotclear world, we see it more like \"One category, several tags.\" Therefore Dotclear can only import one category per post and will chose the lowest numbered one. If you want to keep a trace of every category, you can import them as tags, with an optional prefix."
-msgstr "Mechanizmy kategorii w WordPress-ie i Dotclear-u różnią się dość mocno. Możesz przypisać kilka kategorii do pojedynczego posta w WordPress-ie. W świecie Dotclear-a, widzimy to raczej jako \"Jedna kategoria, kilka tagów\". Z tego powodu Dotclear może importować jedną kategorię na wpis i wybiera zawsze tą z najniższym numerem. Jeżeli nie chcesz utracić żadnej z kategorii, możesz zaimportować je jako tagi z opcjonalnym przedrostkiem."
+msgstr ""
 
 msgid "On the other hand, in WordPress, a post can not be uncategorized, and a default installation has a first category labelised <i>\"Uncategorized\"</i>. If you did not change that category, you can just ignore it while importing your blog, as Dotclear allows you to actually keep your posts uncategorized."
-msgstr "Z drugiej strony, w WordPress-ie wpis nie może być pozbawiony kategorii i domyślna instalacja posiada podstawową kategorię nazwaną <i>\"Uncategorized\"</i>. Jeżeli nie zmieniłeś nazwy tej kategorii, możesz zignorować to podczas importu Twojego bloga, ponieważ Dotclear pozwala na zachowanie niekategoryzowanych wpisów."
+msgstr ""
 
 msgid "Ignore the first category:"
-msgstr "Ignoruj pierwszą kategorię:"
+msgstr ""
 
 msgid "Import lowest numbered category on posts:"
-msgstr "Importuj kategorię z najniższym numerem w postach:"
+msgstr ""
 
 msgid "Import all categories as tags:"
-msgstr "Importuj wszystkie kategorie jako tagi:"
+msgstr ""
 
 msgid "Prefix such tags with:"
-msgstr "Dodaj do takich tagów przedrostek:"
-
+msgstr ""
+
+#, fuzzy
 msgid "Content filters"
-msgstr "Filtry treści"
+msgstr "Wróć do filtrów"
 
 msgid "You may want to process your post and/or comment content with the following filters."
-msgstr "Możesz przetworzyć swój wpis i/lub komentarz z pomocą następujących filtrów:"
+msgstr ""
 
 msgid "Post content formatter:"
-msgstr "Formater treści wpisów:"
-
+msgstr ""
+
+#, fuzzy
 msgid "Comment content formatter:"
-msgstr "Formater treści komentarza:"
+msgstr "Kolor tekstu komentarza:"
 
 msgid "WordPress tables not found"
-msgstr "Nie znaleziono tabel WordPressa"
+msgstr ""
 
 msgid "No file to read."
@@ -886,8 +908,8 @@
 
 msgid "The backup file does not appear to be well formed."
-msgstr "Nieznany format pliku zapasowego."
+msgstr ""
 
 msgid "Please wait..."
-msgstr "Proszę czekać..."
+msgstr ""
 
 msgid "Import"
@@ -904,8 +926,8 @@
 
 msgid "Templates cache directory emptied."
-msgstr "Katalog cache szablonów został opróżniony."
+msgstr ""
 
 msgid "Logs deleted."
-msgstr "Logi usunięto."
+msgstr ""
 
 #, php-format
@@ -930,8 +952,8 @@
 
 msgid "Optimize database room"
-msgstr "Optymalizuj objętość bazy danych."
+msgstr "Optymizuj objętość bazy danych."
 
 msgid "Vacuum tables"
-msgstr "Optymalizuj"
+msgstr "Opróżnij tabele"
 
 msgid "Counters"
@@ -953,26 +975,28 @@
 msgstr "indeksuj wszystkie komentarze"
 
+#, fuzzy
 msgid "Vacuum logs"
-msgstr "Oczyść logi"
-
+msgstr "Opróżnij tabele"
+
+#, fuzzy
 msgid "Delete all logs"
-msgstr "Usuń wszystkie logi"
+msgstr "Usuń wszystkie elementy oznaczone jako spam"
 
 msgid "Empty templates cache directory"
-msgstr "Opróżnij katalog cache szablonów"
+msgstr ""
 
 msgid "Empty directory"
-msgstr "Opróżnij katalog"
+msgstr ""
 
 msgid "New page"
 msgstr "Nowa strona"
 
-#, php-format
+#, fuzzy, php-format
 msgid "%d page"
-msgstr "%d strona"
-
-#, php-format
+msgstr "Edytuj stronę"
+
+#, fuzzy, php-format
 msgid "%d pages"
-msgstr "%d stron"
+msgstr "Edytuj stronę"
 
 msgid "manage pages"
@@ -983,5 +1007,5 @@
 
 msgid "This page's comments feed"
-msgstr "Kanał komentarzy dla tej strony"
+msgstr ""
 
 msgid "You must provide a valid email address."
@@ -991,6 +1015,7 @@
 msgstr "Tytuł strony"
 
+#, fuzzy
 msgid "Page position"
-msgstr "Pozycja strony"
+msgstr "Dyspozycja mediów"
 
 msgid "Publication date"
@@ -1000,12 +1025,14 @@
 msgstr "Brak stron"
 
+#, fuzzy
 msgid "select this page"
-msgstr "wybierz tą stronę"
-
+msgstr "Usuń ten tag"
+
+#, fuzzy
 msgid "Are you sure you want to delete selected pages?"
-msgstr "Jesteś pewien, że chcesz usunąć wybraną stronę?"
+msgstr "Jesteś pewien, że chcesz usunąć wybrane odnośniki?"
 
 msgid "Selected pages action:"
-msgstr "Wybierz akcję dla zaznaczonych stron:"
+msgstr ""
 
 msgid "This page does not exist."
@@ -1030,15 +1057,18 @@
 msgstr "Strona została pomyślnie utworzona."
 
+#, fuzzy
 msgid "View page"
-msgstr "Zobacz stronę"
-
+msgstr "zobacz stronę"
+
+#, fuzzy
 msgid "Preview page"
-msgstr "Podgląd strony"
+msgstr "zobacz stronę"
 
 msgid "Page status:"
 msgstr "Stan strony:"
 
+#, fuzzy
 msgid "Page position:"
-msgstr "Pozycja strony:"
+msgstr "Pozycja panelu bocznego"
 
 msgid "Page lang:"
@@ -1079,5 +1109,5 @@
 
 msgid "Check all"
-msgstr "Zaznacz wszystkie"
+msgstr ""
 
 msgid "Pings:"
@@ -1108,8 +1138,9 @@
 
 msgid "used in %e - frequency %p%"
-msgstr "użyty w %e - popularność %p%"
-
+msgstr ""
+
+#, fuzzy
 msgid "entry"
-msgstr "wpis"
+msgstr "wyśrodkowanie"
 
 msgid "entries"
@@ -1117,11 +1148,13 @@
 
 msgid "Enter tags separated by coma"
-msgstr "Wpisz tagi oddzielone przecinkiem"
-
+msgstr ""
+
+#, fuzzy
 msgid "Add tags"
-msgstr "Dodaj tagi"
-
+msgstr "dodaj tagi"
+
+#, fuzzy
 msgid "Remove tags"
-msgstr "Usuń tagi"
+msgstr "usuń tagi"
 
 msgid "Add tags to entries"
@@ -1141,17 +1174,20 @@
 
 msgid "short"
-msgstr "krótki"
+msgstr ""
 
 msgid "extended"
-msgstr "rozszerzony"
-
+msgstr ""
+
+#, fuzzy
 msgid "Tags list format:"
-msgstr "Format listy tagów:"
-
+msgstr "Tagi do dodania:"
+
+#, fuzzy
 msgid "This tag's comments Atom feed"
-msgstr "Kanał Atom dla komentarzy z tym tagiem"
-
+msgstr "Kanał RSS komentarzy dla tagu."
+
+#, fuzzy
 msgid "This tag's entries Atom feed"
-msgstr "Kanał Atom dla wpisów z tym tagiem"
+msgstr "Kanał RSS wpisów dla tagu."
 
 msgid "Limit (empty means no limit):"
@@ -1168,5 +1204,5 @@
 
 msgid "Link to all tags:"
-msgstr "Odnośnik do wszystkich tagów:"
+msgstr ""
 
 msgid "Edit tag"
@@ -1214,4 +1250,5 @@
 msgstr "Dokument został zapisany"
 
+#, fuzzy
 msgid "An error occurred:"
 msgstr "Wystąpił błąd:"
@@ -1246,13 +1283,16 @@
 msgstr "Pliki JavaScript"
 
+#, fuzzy
 msgid "Preferences successfully updated"
-msgstr "Ustawienia zostały zaktualizowane"
-
+msgstr "Strona została pomyślnie zaktualizowana."
+
+#, fuzzy
 msgid "Preferences definition successfully updated"
-msgstr "Definicja ustawień została pomyślnie zaktualizowana"
+msgstr "Definicja ustawień pomyślnie zaktualizowana"
 
 msgid "user preferences"
-msgstr "ustawienia użytkownika"
-
+msgstr ""
+
+#, fuzzy
 msgid "global preferences"
 msgstr "ustawienia globalne"
@@ -1307,8 +1347,9 @@
 
 msgid "Uncategorized"
-msgstr "Bez kategorii"
-
+msgstr ""
+
+#, fuzzy
 msgid "Tag:"
-msgstr "Tag:"
+msgstr "Tagi:"
 
 msgid "Last comments"
@@ -1363,5 +1404,5 @@
 
 msgid "Extra sidebar"
-msgstr "Pasek dodatkowy"
+msgstr "Pasek ekstra"
 
 msgid "update sidebars"
@@ -1372,32 +1413,36 @@
 
 msgid "Widget templates tags"
-msgstr "Tagi gadżetów do szablonu"
+msgstr ""
 
 msgid "If you are allowed to edit your theme templates, you can directly add widgets as templates tags, with their own configuration."
-msgstr "Jeżeli możesz edytować Twoje szablony, możesz bezpośrednio dodać do nich gadżety (w formie tagów szablonu), podając jednocześnie ich konfigurację."
+msgstr ""
 
 msgid "To add a widget in your template, you need to write code like this:"
-msgstr "Aby dodać gadżet w Twoim szablonie, musisz napisać następujący kod:"
-
+msgstr ""
+
+#, fuzzy
 msgid "Widget ID"
-msgstr "ID gadżetu"
-
+msgstr "Widgety"
+
+#, fuzzy
 msgid "Setting name"
-msgstr "Nazwa ustawienia:"
+msgstr "Nazwa usługi:"
 
 msgid "Setting value"
-msgstr "Wartość"
+msgstr ""
 
 msgid "Here are the following available widgets for your blog:"
-msgstr "Oto gadżety dostępne na Twoim blogu:"
-
+msgstr ""
+
+#, fuzzy
 msgid "Widget ID:"
-msgstr "ID gadżetu:"
+msgstr "Widgety"
 
 msgid "No setting for this widget"
-msgstr "Brak ustawień dla tego gadżetu"
-
+msgstr ""
+
+#, fuzzy
 msgid "Setting name:"
-msgstr "Nazwa ustawienia:"
+msgstr "Nazwa usługi:"
 
 msgid "No widget."
Index: locales/pl/public.po
===================================================================
--- locales/pl/public.po	(revision 516)
+++ locales/pl/public.po	(revision 221)
@@ -9,6 +9,6 @@
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2008-10-13 05:22+0200\n"
-"PO-Revision-Date: 2011-06-26 14:11+0100\n"
-"Last-Translator: \n"
+"PO-Revision-Date: 2007-08-31 14:50+0200\n"
+"Last-Translator: Nnidŷu <nnidyu@asylumeternity.net>\n"
 "Language-Team: Polish\n"
 "Language: \n"
@@ -85,11 +85,11 @@
 
 msgid "Your search for <em>%1$s</em> returned no result."
-msgstr "Przy wyszukiwaniu frazy <em>%1$s</em> nie znaleziono nic."
+msgstr ""
 
 msgid "Your search for <em>%1$s</em> returned <strong>%2$s</strong> result."
-msgstr "Przy wyszukiwaniu frazy <em>%1$s</em> znaleziono <strong>%2$s</strong> wynik."
+msgstr ""
 
 msgid "Your search for <em>%1$s</em> returned <strong>%2$s</strong> results."
-msgstr "Przy wyszukiwaniu frazy <em>%1$s</em> znaleziono <strong>%2$s</strong> wyników."
+msgstr ""
 
 msgid "Home"
@@ -108,6 +108,7 @@
 msgstr "Kategorie"
 
+#, fuzzy
 msgid "Subcategories"
-msgstr "Podkategorie"
+msgstr "Kategorie"
 
 msgid "Archives"
@@ -126,18 +127,22 @@
 msgstr "Kanał RSS komentarzy"
 
+#, fuzzy
 msgid "This blog's comments Atom feed"
-msgstr "Kanał Atom z komentarzami na tym blogu"
-
+msgstr "Kanał RSS dla komentarzy na tym blogu"
+
+#, fuzzy
 msgid "This category's entries Atom feed"
-msgstr "Kanał Atom z wpisami w tej kategorii"
-
+msgstr "Kanał RSS dla wpisów w tej kategorii"
+
+#, fuzzy
 msgid "This category's comments Atom feed"
-msgstr "Kanał Atom z komentarzami w tej kategorii"
+msgstr "Kanał RSS dla komentarzy w tej kategorii"
 
 msgid "This post's comments feed"
 msgstr "Kanał RSS dla komentarzy do tego wpisu"
 
+#, fuzzy
 msgid "This post's comments Atom feed"
-msgstr "Kanał Atom z komentarzami do tego wpisu"
+msgstr "Kanał RSS dla komentarzy do tego wpisu"
 
 msgid "Attachments"
@@ -157,5 +162,5 @@
 
 msgid "Your comment has been submitted and will be reviewed for publication."
-msgstr "Twój komentarz został wysłany i zostanie poddany moderacji."
+msgstr "Twój komentarz został wysłany i będzie poddany moderacji."
 
 msgid "Add a comment"
@@ -178,8 +183,8 @@
 
 msgid "Comments can be formatted using a simple wiki syntax."
-msgstr "Komentarze mogą być formatowane przy użyciu prostej składni wiki."
+msgstr ""
 
 msgid "HTML code is displayed as text and web addresses are automatically converted."
-msgstr "Kod HTML jest wyświetlany jako tekst a adresy stron są konwertowane automatycznie."
+msgstr "Kod HTML jest wyświetlany jako tekst a adresy stron są automatycznie konwertowane."
 
 msgid "Remember me on this blog"
@@ -213,6 +218,7 @@
 msgstr "Dokument, którego szukasz nie istnieje"
 
+#, fuzzy
 msgid "Powered by %s"
-msgstr "Napędzane przez %s"
+msgstr "Napędzane przez"
 
 msgid "Subscribe to"
Index: plugins/antispam/index.php
===================================================================
--- plugins/antispam/index.php	(revision 505)
+++ plugins/antispam/index.php	(revision 500)
@@ -110,9 +110,10 @@
 <body>
 <?php
+echo '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <span class="page-title">'.$page_name.'</span></h2>';
 
 if ($filter_gui !== false)
 {
-	echo '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <a href="'.$p_url.'">'.$page_name.'</a>'.
-		' &rsaquo; <span class="page-title">'.sprintf(__('%s configuration'),$filter->name).'</span></h2>';
+	echo '<p><a href="'.$p_url.'">'.__('Return to filters').'</a></p>';
+	printf('<h3>'.__('%s configuration').'</h3>',$filter->name);
 
 	echo $filter_gui;
@@ -120,6 +121,4 @@
 else
 {
-	echo '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <span class="page-title">'.$page_name.'</span></h2>';
-
 	# Information
 	$spam_count = dcAntispam::countSpam($core);
Index: plugins/blowupConfig/_public.php
===================================================================
--- plugins/blowupConfig/_public.php	(revision 270)
+++ plugins/blowupConfig/_public.php	(revision 295)
@@ -25,20 +25,20 @@
 		echo '<style type="text/css">'."\n".self::blowUpStyleHelper()."\n</style>\n";
 	}
-	
+
 	public static function blowUpStyleHelper()
 	{
 		$s = $GLOBALS['core']->blog->settings->themes->blowup_style;
-		
+
 		if ($s === null) {
 			return;
 		}
-		
+
 		$s = @unserialize($s);
 		if (!is_array($s)) {
 			return;
 		}
-		
+
 		$css = array();
-		
+
 		/* Sidebar position
 		---------------------------------------------- */
@@ -48,16 +48,16 @@
 			$css['#sidebar']['float'] = 'left';
 		}
-		
+
 		/* Properties
 		---------------------------------------------- */
 		self::prop($css,'body','background-color',$s['body_bg_c']);
-		
+
 		self::prop($css,'body','color',$s['body_txt_c']);
 		self::prop($css,'.post-tags li a:link, .post-tags li a:visited, .post-info-co a:link, .post-info-co a:visited','color',$s['body_txt_c']);
 		self::prop($css,'#page','font-size',$s['body_txt_s']);
 		self::prop($css,'body','font-family',blowupConfig::fontDef($s['body_txt_f']));
-		
+
 		self::prop($css,'.post-content, .post-excerpt, #comments dd, #pings dd, dd.comment-preview','line-height',$s['body_line_height']);
-		
+
 		if (!$s['blog_title_hide'])
 		{
@@ -65,10 +65,10 @@
 			self::prop($css,'#top h1','font-size',$s['blog_title_s']);
 			self::prop($css,'#top h1','font-family',blowupConfig::fontDef($s['blog_title_f']));
-			
+
 			if ($s['blog_title_a'] == 'right' || $s['blog_title_a'] == 'left') {
 				$css['#top h1'][$s['blog_title_a']] = '0px';
 				$css['#top h1']['width'] = 'auto';
 			}
-			
+
 			if ($s['blog_title_p'])
 			{
@@ -92,13 +92,13 @@
 		}
 		self::prop($css,'#top','height',$s['top_height']);
-		
+
 		self::prop($css,'.day-date','color',$s['date_title_c']);
 		self::prop($css,'.day-date','font-family',blowupConfig::fontDef($s['date_title_f']));
 		self::prop($css,'.day-date','font-size',$s['date_title_s']);
-		
+
 		self::prop($css,'a','color',$s['body_link_c']);
 		self::prop($css,'a:visited','color',$s['body_link_v_c']);
 		self::prop($css,'a:hover, a:focus, a:active','color',$s['body_link_f_c']);
-		
+
 		self::prop($css,'#comment-form input, #comment-form textarea','color',$s['body_link_c']);
 		self::prop($css,'#comment-form input.preview','color',$s['body_link_c']);
@@ -108,21 +108,21 @@
 		self::prop($css,'#comment-form input.submit:hover','background',$s['body_link_f_c']);
 		self::prop($css,'#comment-form input.submit:hover','border-color',$s['body_link_f_c']);
-		
+
 		self::prop($css,'#sidebar','font-family',blowupConfig::fontDef($s['sidebar_text_f']));
 		self::prop($css,'#sidebar','font-size',$s['sidebar_text_s']);
 		self::prop($css,'#sidebar','color',$s['sidebar_text_c']);
-		
+
 		self::prop($css,'#sidebar h2','font-family',blowupConfig::fontDef($s['sidebar_title_f']));
 		self::prop($css,'#sidebar h2','font-size',$s['sidebar_title_s']);
 		self::prop($css,'#sidebar h2','color',$s['sidebar_title_c']);
-		
+
 		self::prop($css,'#sidebar h3','font-family',blowupConfig::fontDef($s['sidebar_title2_f']));
 		self::prop($css,'#sidebar h3','font-size',$s['sidebar_title2_s']);
 		self::prop($css,'#sidebar h3','color',$s['sidebar_title2_c']);
-		
+
 		self::prop($css,'#sidebar ul','border-top-color',$s['sidebar_line_c']);
 		self::prop($css,'#sidebar li','border-bottom-color',$s['sidebar_line_c']);
 		self::prop($css,'#topnav ul','border-bottom-color',$s['sidebar_line_c']);
-		
+
 		self::prop($css,'#sidebar li a','color',$s['sidebar_link_c']);
 		self::prop($css,'#sidebar li a:visited','color',$s['sidebar_link_v_c']);
@@ -132,17 +132,17 @@
 		self::prop($css,'#search .submit:hover','background',$s['sidebar_link_f_c']);
 		self::prop($css,'#search .submit:hover','border-color',$s['sidebar_link_f_c']);
-		
+
 		self::prop($css,'.post-title','color',$s['post_title_c']);
 		self::prop($css,'.post-title a, .post-title a:visited','color',$s['post_title_c']);
 		self::prop($css,'.post-title','font-family',blowupConfig::fontDef($s['post_title_f']));
 		self::prop($css,'.post-title','font-size',$s['post_title_s']);
-		
+
 		self::prop($css,'#comments dd','background-color',$s['post_comment_bg_c']);
 		self::prop($css,'#comments dd','color',$s['post_comment_c']);
 		self::prop($css,'#comments dd.me','background-color',$s['post_commentmy_bg_c']);
 		self::prop($css,'#comments dd.me','color',$s['post_commentmy_c']);
-		
+
 		self::prop($css,'#prelude, #prelude a','color',$s['prelude_c']);
-		
+
 		self::prop($css,'#footer p','background-color',$s['footer_bg_c']);
 		self::prop($css,'#footer p','color',$s['footer_c']);
@@ -150,5 +150,5 @@
 		self::prop($css,'#footer p','font-family',blowupConfig::fontDef($s['footer_f']));
 		self::prop($css,'#footer p a','color',$s['footer_l_c']);
-		
+
 		/* Images
 		------------------------------------------------------ */
@@ -164,5 +164,5 @@
 		self::backgroundImg($css,'#comments dt.me',$s['post_commentmy_bg_c'],'commentmy-t.png');
 		self::backgroundImg($css,'#comments dd.me',$s['post_commentmy_bg_c'],'commentmy-b.png');
-		
+
 		$res = '';
 		foreach ($css as $selector => $values) {
@@ -173,7 +173,10 @@
 			$res .= "}\n";
 		}
+
+		$res .= $s['extra_css'];
+
 		return $res;
 	}
-	
+
 	protected static function prop(&$css,$selector,$prop,$value)
 	{
@@ -182,5 +185,5 @@
 		}
 	}
-	
+
 	protected static function backgroundImg(&$css,$selector,$value,$image)
 	{
Index: plugins/blowupConfig/index.php
===================================================================
--- plugins/blowupConfig/index.php	(revision 500)
+++ plugins/blowupConfig/index.php	(revision 503)
@@ -24,14 +24,14 @@
 	'body_bg_c' => null,
 	'body_bg_g' => 'light',
-	
+
 	'body_txt_f' => null,
 	'body_txt_s' => null,
 	'body_txt_c' => null,
 	'body_line_height' => null,
-	
+
 	'top_image' => 'default',
 	'top_height' => null,
 	'uploaded' => null,
-	
+
 	'blog_title_hide' => null,
 	'blog_title_f' => null,
@@ -40,9 +40,9 @@
 	'blog_title_a' => null,
 	'blog_title_p' => null,
-	
+
 	'body_link_c' => null,
 	'body_link_f_c' => null,
 	'body_link_v_c' => null,
-	
+
 	'sidebar_position' => null,
 	'sidebar_text_f' => null,
@@ -59,9 +59,9 @@
 	'sidebar_link_f_c' => null,
 	'sidebar_link_v_c' => null,
-	
+
 	'date_title_f' => null,
 	'date_title_s' => null,
 	'date_title_c' => null,
-	
+
 	'post_title_f' => null,
 	'post_title_s' => null,
@@ -71,5 +71,5 @@
 	'post_commentmy_bg_c' => null,
 	'post_commentmy_c' => null,
-	
+
 	'prelude_c' => null,
 	'footer_f' => null,
@@ -78,4 +78,6 @@
 	'footer_l_c' => null,
 	'footer_bg_c' => null,
+
+	'extra_css' => null
 );
 
@@ -108,5 +110,5 @@
 		$blowup_user['body_txt_c'] = blowupConfig::adjustColor($_POST['body_txt_c']);
 		$blowup_user['body_line_height'] = blowupConfig::adjustFontSize($_POST['body_line_height']);
-		
+
 		$blowup_user['blog_title_hide'] = (integer) !empty($_POST['blog_title_hide']);
 		$update_blog_title = !$blowup_user['blog_title_hide'] && (
@@ -115,5 +117,5 @@
 			!empty($_POST['blog_title_p'])
 		);
-		
+
 		if ($update_blog_title)
 		{
@@ -124,9 +126,9 @@
 			$blowup_user['blog_title_p'] = blowupConfig::adjustPosition($_POST['blog_title_p']);
 		}
-		
+
 		$blowup_user['body_link_c'] = blowupConfig::adjustColor($_POST['body_link_c']);
 		$blowup_user['body_link_f_c'] = blowupConfig::adjustColor($_POST['body_link_f_c']);
 		$blowup_user['body_link_v_c'] = blowupConfig::adjustColor($_POST['body_link_v_c']);
-		
+
 		$blowup_user['sidebar_text_f'] = $_POST['sidebar_text_f'];
 		$blowup_user['sidebar_text_s'] = blowupConfig::adjustFontSize($_POST['sidebar_text_s']);
@@ -142,11 +144,11 @@
 		$blowup_user['sidebar_link_f_c'] = blowupConfig::adjustColor($_POST['sidebar_link_f_c']);
 		$blowup_user['sidebar_link_v_c'] = blowupConfig::adjustColor($_POST['sidebar_link_v_c']);
-		
+
 		$blowup_user['sidebar_position'] = ($_POST['sidebar_position'] == 'left') ? 'left' : null;
-		
+
 		$blowup_user['date_title_f'] = $_POST['date_title_f'];
 		$blowup_user['date_title_s'] = blowupConfig::adjustFontSize($_POST['date_title_s']);
 		$blowup_user['date_title_c'] = blowupConfig::adjustColor($_POST['date_title_c']);
-		
+
 		$blowup_user['post_title_f'] = $_POST['post_title_f'];
 		$blowup_user['post_title_s'] = blowupConfig::adjustFontSize($_POST['post_title_s']);
@@ -154,6 +156,6 @@
 		$blowup_user['post_comment_c'] = blowupConfig::adjustColor($_POST['post_comment_c']);
 		$blowup_user['post_commentmy_c'] = blowupConfig::adjustColor($_POST['post_commentmy_c']);
-		
-		
+
+
 		$blowup_user['footer_f'] = $_POST['footer_f'];
 		$blowup_user['footer_s'] = blowupConfig::adjustFontSize($_POST['footer_s']);
@@ -161,5 +163,8 @@
 		$blowup_user['footer_l_c'] = blowupConfig::adjustColor($_POST['footer_l_c']);
 		$blowup_user['footer_bg_c'] = blowupConfig::adjustColor($_POST['footer_bg_c']);
-		
+
+
+		$blowup_user['extra_css'] = blowupConfig::cleanCSS($_POST['extra_css']);
+
 		if ($can_write_images)
 		{
@@ -168,5 +173,5 @@
 				$uploaded = blowupConfig::imagesPath().'/'.$blowup_user['uploaded'];
 			}
-			
+
 			if (!empty($_FILES['upfile']) && !empty($_FILES['upfile']['name'])) {
 				files::uploadStatus($_FILES['upfile']);
@@ -174,7 +179,7 @@
 				$blowup_user['uploaded'] = basename($uploaded);
 			}
-			
+
 			$blowup_user['top_image'] = in_array($_POST['top_image'],$top_images) ? $_POST['top_image'] : 'default';
-			
+
 			$blowup_user['body_bg_c'] = blowupConfig::adjustColor($_POST['body_bg_c']);
 			$blowup_user['body_bg_g'] = in_array($_POST['body_bg_g'],$gradient_types) ? $_POST['body_bg_g'] : '';
@@ -184,9 +189,9 @@
 			blowupConfig::createImages($blowup_user,$uploaded);
 		}
-		
+
 		$core->blog->settings->addNamespace('themes');
 		$core->blog->settings->themes->put('blowup_style',serialize($blowup_user));
 		$core->blog->triggerBlog();
-		
+
 		http::redirect($p_url.'&upd=1');
 	}
@@ -233,5 +238,5 @@
 
 echo '<form id="theme_config" action="'.$p_url.'" method="post" enctype="multipart/form-data">';
-		
+
 echo '<fieldset><legend>'.__('General').'</legend>';
 
@@ -240,5 +245,5 @@
 	'<p class="field"><label for="body_bg_c">'.__('Background color:').' '.
 	form::field('body_bg_c',7,7,$blowup_user['body_bg_c'],'colorpicker').'</label></p>'.
-	
+
 	'<p class="field"><label for="body_bg_g">'.__('Background color fill:').' '.
 	form::combo('body_bg_g',$gradient_types,$blowup_user['body_bg_g']).'</label></p>';
@@ -304,5 +309,5 @@
 		$preview_image = 'index.php?pf=blowupConfig/alpha-img/page-t/'.$blowup_user['top_image'].'.png';
 	}
-	
+
 	echo
 	'<fieldset><legend>'.__('Top image').'</legend>'.
@@ -310,10 +315,10 @@
 	form::combo('top_image',$top_images,($blowup_user['top_image'] ? $blowup_user['top_image'] : 'default')).'</label></p>'.
 	'<p>'.__('Choose "Custom..." to upload your own image.').'</p>'.
-	
+
 	'<p id="uploader"><label for="upfile">'.__('Add your image:').
 	' ('.sprintf(__('JPEG or PNG file, 800 pixels wide, maximum size %s'),files::size(DC_MAX_UPLOAD_SIZE)).')'.
 	'<input type="file" name="upfile" id="upfile" size="35" />'.
 	'</label></p>'.
-	
+
 	'<h3>'.__('Preview').'</h3>'.
 	'<div class="grid" style="width:800px;border:1px solid #ccc;">'.
@@ -425,4 +430,11 @@
 '</fieldset>';
 
+echo
+'<fieldset><legend>'.__('Additional CSS').'</legend>'.
+'<p>'.form::textarea('extra_css',72,5,html::escapeHTML($blowup_user['extra_css']),'maximal','',false,'title="'.__('Additional CSS').'"').'</p>'.
+'</fieldset>';
+
+
+
 // Import / Export configuration
 $tmp_array = array();
Index: plugins/blowupConfig/lib/class.blowup.config.php
===================================================================
--- plugins/blowupConfig/lib/class.blowup.config.php	(revision 270)
+++ plugins/blowupConfig/lib/class.blowup.config.php	(revision 295)
@@ -22,5 +22,5 @@
 			'ss5' => 'Impact, Charcoal, sans-serif'
 		),
-		
+
 		'serif' => array(
 			's1' => 'Times, "Times New Roman", serif',
@@ -28,5 +28,5 @@
 			's3' => 'Baskerville, "Palatino Linotype", serif'
 		),
-		
+
 		'monospace' => array(
 			'm1' => '"Andale Mono", "Courier New", monospace',
@@ -34,8 +34,8 @@
 		)
 	);
-	
+
 	protected static $fonts_combo = array();
 	protected static $fonts_list = array();
-	
+
 	public static $top_images = array(
 		'default' => 'Default',
@@ -55,5 +55,5 @@
 		'typo' => 'Typo',
 	);
-	
+
 	public static function fontsList()
 	{
@@ -70,8 +70,8 @@
 			}
 		}
-		
+
 		return self::$fonts_combo;
 	}
-	
+
 	public static function fontDef($c)
 	{
@@ -85,8 +85,8 @@
 			}
 		}
-		
+
 		return isset(self::$fonts_list[$c]) ? self::$fonts_list[$c] : null;
 	}
-	
+
 	public static function adjustFontSize($s)
 	{
@@ -97,8 +97,8 @@
 			return $m[1].$m[2];
 		}
-		
+
 		return null;
 	}
-	
+
 	public static function adjustPosition($p)
 	{
@@ -106,10 +106,10 @@
 			return null;
 		}
-		
+
 		$p = explode(':',$p);
-		
+
 		return $p[0].(count($p) == 1 ? ':0' : ':'.$p[1]);
 	}
-	
+
 	public static function adjustColor($c)
 	{
@@ -117,22 +117,28 @@
 			return '';
 		}
-		
+
 		$c = strtoupper($c);
-		
+
 		if (preg_match('/^[A-F0-9]{3,6}$/',$c)) {
 			$c = '#'.$c;
 		}
-		
+
 		if (preg_match('/^#[A-F0-9]{6}$/',$c)) {
 			return $c;
 		}
-		
+
 		if (preg_match('/^#[A-F0-9]{3,}$/',$c)) {
 			return '#'.substr($c,1,1).substr($c,1,1).substr($c,2,1).substr($c,2,1).substr($c,3,1).substr($c,3,1);
 		}
-		
+
 		return '';
 	}
-	
+
+	public static function cleanCSS($css)
+	{
+		// TODO ?
+		return $css;
+	}
+
 	public static function imagesPath()
 	{
@@ -140,5 +146,5 @@
 		return path::real($core->blog->public_path).'/blowup-images';
 	}
-	
+
 	public static function imagesURL()
 	{
@@ -146,12 +152,12 @@
 		return $core->blog->settings->system->public_url.'/blowup-images';
 	}
-	
+
 	public static function canWriteImages($create=false)
 	{
 		global $core;
-		
+
 		$public = path::real($core->blog->public_path);
 		$imgs = self::imagesPath();
-		
+
 		if (!function_exists('imagecreatetruecolor') || !function_exists('imagepng') || !function_exists('imagecreatefrompng')) {
 			$core->error->add(__('At least one of the following functions is not available: '.
@@ -159,10 +165,10 @@
 			return false;
 		}
-		
+
 		if (!is_dir($public)) {
 			$core->error->add(__('The \'public\' directory does not exist.'));
 			return false;
 		}
-		
+
 		if (!is_dir($imgs)) {
 			if (!is_writable($public)) {
@@ -175,13 +181,13 @@
 			return true;
 		}
-		
+
 		if (!is_writable($imgs)) {
 			$core->error->add(sprintf(__('The \'%s\' directory cannot be modified.'),'public/blowup-images'));
 			return false;
 		}
-		
+
 		return true;
 	}
-	
+
 	public static function uploadImage($f)
 	{
@@ -189,26 +195,26 @@
 			throw new Exception(__('Unable to create images.'));
 		}
-		
+
 		$name = $f['name'];
 		$type = files::getMimeType($name);
-		
+
 		if ($type != 'image/jpeg' && $type != 'image/png') {
 			throw new Exception(__('Invalid file type.'));
 		}
-		
+
 		$dest = self::imagesPath().'/uploaded'.($type == 'image/png' ? '.png' : '.jpg');
-		
+
 		if (@move_uploaded_file($f['tmp_name'],$dest) === false) {
 			throw new Exception(__('An error occurred while writing the file.'));
 		}
-		
+
 		$s = getimagesize($dest);
 		if ($s[0] != 800) {
 			throw new Exception(__('Uploaded image is not 800 pixels wide.'));
 		}
-		
+
 		return $dest;
 	}
-	
+
 	public static function createImages(&$config,$uploaded)
 	{
@@ -219,7 +225,7 @@
 		$comment_color_my = $config['post_commentmy_bg_c'];
 		$top_image = $config['top_image'];
-		
+
 		$config['top_height'] = null;
-		
+
 		if ($top_image != 'custom' && !isset(self::$top_images[$top_image])) {
 			$top_image = 'default';
@@ -228,9 +234,9 @@
 			$uploaded = null;
 		}
-		
+
 		if (!self::canWriteImages(true)) {
 			throw new Exception(__('Unable to create images.'));
 		}
-		
+
 		$body_fill = array(
 			'light' => dirname(__FILE__).'/../alpha-img/gradient-l.png',
@@ -238,7 +244,7 @@
 			'dark' => dirname(__FILE__).'/../alpha-img/gradient-d.png'
 		);
-		
+
 		$body_g = isset($body_fill[$gradient]) ? $body_fill[$gradient] : false;
-		
+
 		if ($top_image == 'custom' && $uploaded) {
 			$page_t = $uploaded;
@@ -246,5 +252,5 @@
 			$page_t = dirname(__FILE__).'/../alpha-img/page-t/'.$top_image.'.png';
 		}
-		
+
 		$body_bg = dirname(__FILE__).'/../alpha-img/body-bg.png';
 		$page_t_mask = dirname(__FILE__).'/../alpha-img/page-t/image-mask.png';
@@ -254,5 +260,5 @@
 		$default_bg = '#e0e0e0';
 		$default_prelude = '#ededed';
-		
+
 		self::dropImage(basename($body_bg));
 		self::dropImage('page-t.png');
@@ -260,9 +266,9 @@
 		self::dropImage(basename($comment_t));
 		self::dropImage(basename($comment_b));
-		
+
 		$body_color = self::adjustColor($body_color);
 		$prelude_color = self::adjustColor($prelude_color);
 		$comment_color = self::adjustColor($comment_color);
-		
+
 		if ($top_image || $body_color || $gradient != 'light' || $prelude_color || $uploaded)
 		{
@@ -271,10 +277,10 @@
 			}
 			$body_color = sscanf($body_color,'#%2X%2X%2X');
-			
+
 			# Create body gradient with color
 			$d_body_bg = imagecreatetruecolor(50,180);
 			$fill = imagecolorallocate($d_body_bg,$body_color[0],$body_color[1],$body_color[2]);
 			imagefill($d_body_bg,0,0,$fill);
-			
+
 			# User choosed a gradient
 			if ($body_g) {
@@ -284,18 +290,18 @@
 				imagedestroy($s_body_bg);
 			}
-			
+
 			if (!$prelude_color) {
 				$prelude_color = $default_prelude;
 			}
 			$prelude_color = sscanf($prelude_color,'#%2X%2X%2X');
-			
+
 			$s_prelude = imagecreatetruecolor(50,30);
 			$fill = imagecolorallocate($s_prelude,$prelude_color[0],$prelude_color[1],$prelude_color[2]);
 			imagefill($s_prelude,0,0,$fill);
 			imagecopy($d_body_bg,$s_prelude,0,0,0,0,50,30);
-			
+
 			imagepng($d_body_bg,self::imagesPath().'/'.basename($body_bg));
 		}
-		
+
 		if ($top_image || $body_color || $gradient != 'light')
 		{
@@ -304,7 +310,7 @@
 			$size = $size[1];
 			$type = files::getMimeType($page_t);
-			
+
 			$d_page_t = imagecreatetruecolor(800,$size);
-			
+
 			if ($type == 'image/png') {
 				$s_page_t = @imagecreatefrompng($page_t);
@@ -312,12 +318,12 @@
 				$s_page_t = @imagecreatefromjpeg($page_t);
 			}
-			
+
 			if (!$s_page_t) {
 				throw new exception(__('Unable to open image.'));
 			}
-			
+
 			$fill = imagecolorallocate($d_page_t,$body_color[0],$body_color[1],$body_color[2]);
 			imagefill($d_page_t,0,0,$fill);
-			
+
 			if ($type == 'image/png')
 			{
@@ -331,15 +337,15 @@
 				# JPEG, we add image and a frame with rounded corners
 				imagecopy($d_page_t,$s_page_t,0,0,0,0,800,$size);
-				
+
 				imagecopy($d_page_t,$d_body_bg,0,0,0,50,8,4);
 				imagecopy($d_page_t,$d_body_bg,0,4,0,54,4,4);
 				imagecopy($d_page_t,$d_body_bg,792,0,0,50,8,4);
 				imagecopy($d_page_t,$d_body_bg,796,4,0,54,4,4);
-				
+
 				$mask = imagecreatefrompng($page_t_mask);
 				imagealphablending($mask,true);
 				imagecopy($d_page_t,$mask,0,0,0,0,800,11);
 				imagedestroy($mask);
-				
+
 				$fill = imagecolorallocate($d_page_t,255,255,255);
 				imagefilledrectangle($d_page_t,0,11,3,$size-1,$fill);
@@ -347,28 +353,28 @@
 				imagefilledrectangle($d_page_t,0,$size-9,799,$size-1,$fill);
 			}
-			
+
 			$config['top_height'] = ($size).'px';
-			
+
 			imagepng($d_page_t,self::imagesPath().'/page-t.png');
-			
+
 			imagedestroy($d_body_bg);
 			imagedestroy($d_page_t);
 			imagedestroy($s_page_t);
-			
+
 			# Create bottom image with color
 			$d_page_b = imagecreatetruecolor(800,8);
 			$fill = imagecolorallocate($d_page_b,$body_color[0],$body_color[1],$body_color[2]);
 			imagefill($d_page_b,0,0,$fill);
-			
+
 			$s_page_b = imagecreatefrompng($page_b);
 			imagealphablending($s_page_b,true);
 			imagecopy($d_page_b,$s_page_b,0,0,0,0,800,160);
-			
+
 			imagepng($d_page_b,self::imagesPath().'/'.basename($page_b));
-			
+
 			imagedestroy($d_page_b);
 			imagedestroy($s_page_b);
 		}
-		
+
 		if ($comment_color) {
 			self::commentImages($comment_color,$comment_t,$comment_b,basename($comment_t),basename($comment_b));
@@ -378,34 +384,34 @@
 		}
 	}
-	
+
 	protected static function commentImages($comment_color,$comment_t,$comment_b,$dest_t,$dest_b)
 	{
 		$comment_color = sscanf($comment_color,'#%2X%2X%2X');
-			
+
 		$d_comment_t = imagecreatetruecolor(500,25);
 		$fill = imagecolorallocate($d_comment_t,$comment_color[0],$comment_color[1],$comment_color[2]);
 		imagefill($d_comment_t,0,0,$fill);
-		
+
 		$s_comment_t = imagecreatefrompng($comment_t);
 		imagealphablending($s_comment_t,true);
 		imagecopy($d_comment_t,$s_comment_t,0,0,0,0,500,25);
-		
+
 		imagepng($d_comment_t,self::imagesPath().'/'.$dest_t);
 		imagedestroy($d_comment_t);
 		imagedestroy($s_comment_t);
-		
+
 		$d_comment_b = imagecreatetruecolor(500,7);
 		$fill = imagecolorallocate($d_comment_b,$comment_color[0],$comment_color[1],$comment_color[2]);
 		imagefill($d_comment_b,0,0,$fill);
-		
+
 		$s_comment_b = imagecreatefrompng($comment_b);
 		imagealphablending($s_comment_b,true);
 		imagecopy($d_comment_b,$s_comment_b,0,0,0,0,500,7);
-		
+
 		imagepng($d_comment_b,self::imagesPath().'/'.$dest_b);
 		imagedestroy($d_comment_b);
 		imagedestroy($s_comment_b);
 	}
-	
+
 	public static function dropImage($img)
 	{
Index: plugins/simpleMenu/_admin.php
===================================================================
--- plugins/simpleMenu/_admin.php	(revision 587)
+++ plugins/simpleMenu/_admin.php	(revision 587)
@@ -0,0 +1,32 @@
+<?php
+# -- BEGIN LICENSE BLOCK ---------------------------------------
+#
+# This file is part of Dotclear 2.
+#
+# Copyright (c) 2003-2011 Olivier Meunier & Association Dotclear
+# Licensed under the GPL version 2.0 license.
+# See LICENSE file or
+# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+#
+# -- END LICENSE BLOCK -----------------------------------------
+if (!defined('DC_CONTEXT_ADMIN')) { return; }
+
+$core->addBehavior('adminDashboardIcons','simpleMenu_dashboard');
+$core->addBehavior('adminDashboardFavs','simpleMenu_dashboard_favs');
+function simpleMenu_dashboard($core,$icons)
+{
+	$icons['simpleMenu'] = new ArrayObject(array(__('Simple menu'),'plugin.php?p=simpleMenu','index.php?pf=simpleMenu/icon.png'));
+}
+function simpleMenu_dashboard_favs($core,$favs)
+{
+	$favs['simpleMenu'] = new ArrayObject(array('simpleMenu','Simple menu','plugin.php?p=simpleMenu',
+		'index.php?pf=simpleMenu/icon-small.png','index.php?pf=simpleMenu/icon.png',
+		'usage,contentadmin',null,null));
+}
+
+$_menu['Plugins']->addItem(__('Simple menu'),'plugin.php?p=simpleMenu','index.php?pf=simpleMenu/icon-small.png',
+                preg_match('/plugin.php\?p=simpleMenu(&.*)?$/',$_SERVER['REQUEST_URI']),
+                $core->auth->check('usage,contentadmin',$core->blog->id));
+
+require dirname(__FILE__).'/_widgets.php';
+?>
Index: plugins/simpleMenu/_define.php
===================================================================
--- plugins/simpleMenu/_define.php	(revision 597)
+++ plugins/simpleMenu/_define.php	(revision 597)
@@ -0,0 +1,23 @@
+<?php
+# -- BEGIN LICENSE BLOCK ---------------------------------------
+#
+# This file is part of Dotclear 2.
+#
+# Copyright (c) 2003-2011 Olivier Meunier & Association Dotclear
+# Licensed under the GPL version 2.0 license.
+# See LICENSE file or
+# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+#
+# -- END LICENSE BLOCK -----------------------------------------
+if (!defined('DC_RC_PATH')) { return; }
+
+$this->registerModule(
+	/* Name */			"simpleMenu",
+	/* Description*/		"Simple menu for Dotclear",
+	/* Author */			"Franck Paul",
+	/* Version */			'0.9',
+	array(
+		'permissions' =>	'admin'
+	)
+);
+?>
Index: plugins/simpleMenu/_install.php
===================================================================
--- plugins/simpleMenu/_install.php	(revision 568)
+++ plugins/simpleMenu/_install.php	(revision 568)
@@ -0,0 +1,29 @@
+<?php
+# -- BEGIN LICENSE BLOCK ---------------------------------------
+#
+# This file is part of simpleMenu, a plugin for Dotclear 2.
+#
+# Copyright (c) 2003-2011 Olivier Meunier & Association Dotclear
+# Licensed under the GPL version 2.0 license.
+# See LICENSE file or
+# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+#
+# -- END LICENSE BLOCK -----------------------------------------
+if (!defined('DC_CONTEXT_ADMIN')) { return; }
+
+$version = $core->plugins->moduleInfo('simpleMenu','version');
+if (version_compare($core->getVersion('simpleMenu'),$version,'>=')) {
+	return;
+}
+
+# Menu par défaut
+$blog_url = html::stripHostURL($core->blog->url);
+$menu_default = array(
+	array('label' => 'Home', 'descr' => 'Recent posts', 'url' => $blog_url),
+	array('label' => 'Archives', 'descr' => '', 'url' => $blog_url.$core->url->getBase('archive'))
+);
+$core->blog->settings->system->put('simpleMenu',serialize($menu_default),'string','simpleMenu default menu',false,true);
+
+$core->setVersion('simpleMenu',$version);
+return true;
+?>
Index: plugins/simpleMenu/_public.php
===================================================================
--- plugins/simpleMenu/_public.php	(revision 588)
+++ plugins/simpleMenu/_public.php	(revision 588)
@@ -0,0 +1,116 @@
+<?php
+# -- BEGIN LICENSE BLOCK ---------------------------------------
+#
+# This file is part of Dotclear 2.
+#
+# Copyright (c) 2003-2011 Olivier Meunier & Association Dotclear
+# Licensed under the GPL version 2.0 license.
+# See LICENSE file or
+# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+#
+# -- END LICENSE BLOCK -----------------------------------------
+if (!defined('DC_RC_PATH')) { return; }
+
+require dirname(__FILE__).'/_widgets.php';
+
+# Simple menu template functions
+$core->tpl->addValue('SimpleMenu',array('tplSimpleMenu','simpleMenu'));
+
+class tplSimpleMenu
+{
+	# Template function
+	public static function simpleMenu($attr)
+	{
+		$class = isset($attr['class']) ? trim($attr['class']) : '';
+		$id = isset($attr['id']) ? trim($attr['id']) : '';
+		$description = isset($attr['description']) ? trim($attr['description']) : '';
+		
+		if (!preg_match('#^(title|span)$#',$description)) {
+			$description = '';
+		}
+		
+		return '<?php echo tplSimpleMenu::displayMenu('.
+				"'".addslashes($class)."',".
+				"'".addslashes($id)."',".
+				"'".addslashes($description)."'".
+			'); ?>';
+	}
+	
+	# Widget function
+	public static function simpleMenuWidget($w)
+	{
+		global $core, $_ctx;
+		
+		if ($w->homeonly && $core->url->type != 'default') {
+			return;
+		}
+
+		$menu = tplSimpleMenu::displayMenu('','','title');
+		if ($menu == '') {
+			return;
+		}
+
+		return '<div class="simple-menu">'.($w->title ? '<h2>'.html::escapeHTML($w->title).'</h2>' : '').$menu.'</div>';
+	}
+	
+	public static function displayMenu($class='',$id='',$description='')
+	{
+		$ret = '';
+
+		$menu = $GLOBALS['core']->blog->settings->system->get('simpleMenu');
+		$menu = @unserialize($menu);
+
+		if (is_array($menu)) 
+		{
+			// Current relative URL
+			$url = $_SERVER['REQUEST_URI'];
+			$abs_url = http::getHost().$url;
+		
+			// Home recognition var
+			$home_url = html::stripHostURL($GLOBALS['core']->blog->url);
+			$home_directory = dirname($home_url);
+			if ($home_directory != '/')
+				$home_directory = $home_directory.'/';
+
+			// Menu items loop
+			foreach ($menu as $i => $m) {
+				# $href = lien de l'item de menu
+				$href = $m['url'];
+				$href = html::escapeHTML($href);
+
+				# Active item test
+				$active = false;
+				if (($url == $href) || 
+					($abs_url == $href) || 
+					($_SERVER['URL_REQUEST_PART'] == $href) || 
+					(($_SERVER['URL_REQUEST_PART'] == '') && (($href == $home_url) || ($href == $home_directory)))) {
+					$active = true;
+				}
+				$title = $span = '';
+				if ($m['descr']) {
+					if ($description == 'title') {
+						$title = ' title="'.__($m['descr']).'"';
+					} else {
+						$span = ' <span>'.__($m['descr']).'</span>';
+					}
+				}
+				$ret .= '<li class="li'.($i+1).
+							($active ? ' active' : '').
+							($i == 0 ? ' li-first' : '').
+							($i == count($menu)-1 ? ' li-last' : '').
+						'">'.
+						'<a href="'.$href.'"'.$title.'>'.__($m['label']).$span.'</a>'.
+						'</li>';
+			}
+			
+			// Final rendering
+			if ($ret) {
+				$ret = '<ul '.($id ? 'id="'.$id.'"' : '').' class="simple-menu'.($class ? ' '.$class : '').'">'."\n".$ret."\n".'</ul>';
+			}
+		}
+
+		return $ret;
+	}
+}
+
+?>
Index: plugins/simpleMenu/_widgets.php
===================================================================
--- plugins/simpleMenu/_widgets.php	(revision 587)
+++ plugins/simpleMenu/_widgets.php	(revision 587)
@@ -0,0 +1,25 @@
+<?php
+# -- BEGIN LICENSE BLOCK ---------------------------------------
+#
+# This file is part of Dotclear 2.
+#
+# Copyright (c) 2003-2011 Olivier Meunier & Association Dotclear
+# Licensed under the GPL version 2.0 license.
+# See LICENSE file or
+# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+#
+# -- END LICENSE BLOCK -----------------------------------------
+if (!defined('DC_RC_PATH')) { return; }
+
+$core->addBehavior('initWidgets',array('simpleMenuWidgets','initWidgets'));
+
+class simpleMenuWidgets
+{
+	public static function initWidgets($w)
+	{
+		$w->create('simplemenu',__('Simple menu'),array('tplSimpleMenu','simpleMenuWidget'));
+		$w->simplemenu->setting('title',__('Title:'),__('Menu'));
+		$w->simplemenu->setting('homeonly',__('Home page only'),1,'check');
+	}
+}
+?>
Index: plugins/simpleMenu/index.php
===================================================================
--- plugins/simpleMenu/index.php	(revision 597)
+++ plugins/simpleMenu/index.php	(revision 597)
@@ -0,0 +1,572 @@
+<?php
+# -- BEGIN LICENSE BLOCK ---------------------------------------
+#
+# This file is part of Dotclear 2.
+#
+# Copyright (c) 2003-2011 Olivier Meunier & Association Dotclear
+# Licensed under the GPL version 2.0 license.
+# See LICENSE file or
+# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+#
+# -- END LICENSE BLOCK -----------------------------------------
+if (!defined('DC_CONTEXT_ADMIN')) { return; }
+
+dcPage::check('admin');
+
+$page_title = __('Simple menu');
+
+# Url de base
+$p_url = 'plugin.php?p=simpleMenu';
+
+# Url du blog
+$blog_url = html::stripHostURL($core->blog->url);
+
+# Liste des catégories
+$categories_combo = array();
+$categories_label = array();
+try {
+	$rs = $core->blog->getCategories(array('post_type'=>'post'));
+	while ($rs->fetch()) {
+		$categories_combo[] = new formSelectOption(
+			str_repeat('&nbsp;&nbsp;',$rs->level-1).($rs->level-1 == 0 ? '' : '&bull; ').html::escapeHTML($rs->cat_title),
+			$rs->cat_url
+		);
+		$categories_label[$rs->cat_url] = html::escapeHTML($rs->cat_title);
+	}
+} catch (Exception $e) { }
+
+# Liste des langues utilisées
+$langs_combo = array();
+try {
+	$rs = $core->blog->getLangs(array('order'=>'asc'));
+	if ($rs->count() > 1)
+	{
+		$all_langs = l10n::getISOcodes(0,1);
+		while ($rs->fetch()) {
+			$lang_name = isset($all_langs[$rs->post_lang]) ? $all_langs[$rs->post_lang] : $rs->post_lang;
+			$langs_combo[$lang_name] = $rs->post_lang;
+		}
+		unset($all_langs);
+	}
+	unset($rs);
+} catch (Exception $e) { }
+
+# Liste des mois d'archive
+$months_combo = array();
+try {
+	$rs = $core->blog->getDates(array('type'=>'month'));
+	$months_combo[__('All months')] = '-';
+	$first_year = $last_year = 0;
+	while ($rs->fetch()) {
+		$months_combo[dt::str('%B %Y',$rs->ts())] = $rs->year().$rs->month();
+		if (($first_year == 0) || ($rs->year() < $first_year)) $first_year = $rs->year();
+		if (($last_year == 0) || ($rs->year() > $last_year)) $last_year = $rs->year();
+	}
+	unset($rs);
+} catch (Exception $e) { }
+
+# Liste des pages -- Doit être pris en charge plus tard par le plugin ?
+$pages_combo = array();
+try {
+	$rs = $core->blog->getPosts(array('post_type'=>'page'));
+	while ($rs->fetch()) {
+		$pages_combo[$rs->post_title] = $rs->getURL();
+	}
+	unset($rs);
+} catch (Exception $e) { }
+
+# Liste des tags -- Doit être pris en charge plus tard par le plugin ?
+$tags_combo = array();
+try {
+	$rs = $core->meta->getMetadata(array('meta_type' => 'tag'));
+	$tags_combo[__('All tags')] = '-';
+	while ($rs->fetch()) {
+		$tags_combo[$rs->meta_id] = $rs->meta_id;
+	}
+	unset($rs);
+} catch (Exception $e) { }
+
+# Liste des types d'item de menu
+$items = new ArrayObject();
+$items['home'] = new ArrayObject(array(__('Home'),false));
+
+if (count($langs_combo) > 1) {
+	$items['lang'] = new ArrayObject(array(__('Language'),true));
+}
+if (count($categories_combo)) {
+	$items['category'] = new ArrayObject(array(__('Category'),true));
+}
+if (count($months_combo) > 1) {
+	$items['archive'] = new ArrayObject(array(__('Archive'),true));
+}
+if ($core->plugins->moduleExists('pages')) {
+	if(count($pages_combo))
+		$items['pages'] = new ArrayObject(array(__('Page'),true));
+}
+if ($core->plugins->moduleExists('tags')) {
+	if (count($tags_combo) > 1)
+		$items['tags'] = new ArrayObject(array(__('Tags'),true));
+}
+
+# --BEHAVIOR-- adminSimpleMenuAddType
+# Should add an item to $items[<id>] as an array(<label>,<optional step (true or false)>)
+$core->callBehavior('adminSimpleMenuAddType',$items);
+
+$items['special'] = new ArrayObject(array(__('User defined'),false));
+
+$items_combo = array();
+foreach ($items as $k => $v) {
+	$items_combo[$v[0]] = $k;
+}
+
+# Lecture menu existant
+$menu = $core->blog->settings->system->get('simpleMenu');
+$menu = @unserialize($menu);
+if (!is_array($menu)) {
+	$menu = array();
+}
+
+# Récupération paramètres postés
+$item_type = isset($_POST['item_type']) ? $_POST['item_type'] : '';
+$item_select = isset($_POST['item_select']) ? $_POST['item_select'] : '';
+$item_label = isset($_POST['item_label']) ? $_POST['item_label'] : '';
+$item_descr = isset($_POST['item_descr']) ? $_POST['item_descr'] : '';
+$item_url = isset($_POST['item_url']) ? $_POST['item_url'] : '';
+
+# Traitement
+$step = (!empty($_GET['add']) ? (integer) $_GET['add'] : 0);
+if (($step > 4) || ($step < 0)) $step = 0;
+if ($step) {
+
+	# Récupération libellés des choix
+	$item_type_label = isset($items[$item_type]) ? $items[$item_type][0] : '';
+
+	switch ($step) {
+		case 1:
+			// First step, menu item type to be selected
+			$item_type = $item_select = '';
+			break;
+		case 2:
+			if ($items[$item_type][1]) {
+				// Second step (optional), menu item sub-type to be selected
+				$item_select = '';
+				break;
+			}
+		case 3:
+			// Third step, menu item attributes to be changed or completed if necessary
+			$item_select_label = '';
+			$item_label = __('Label');
+			$item_descr = __('Description');
+			$item_url = $blog_url;
+			switch ($item_type) {
+				case 'home':
+					$item_label = __('Home');
+					$item_descr = __('Recent posts');
+					break;
+				case 'lang':
+					$item_select_label = array_search($item_select,$langs_combo);
+					$item_label = $item_select_label;
+					$item_descr = sprintf(__('Switch to %s language'),$item_select_label);
+					$item_url .= $core->url->getBase('lang').$item_select;
+					break;
+				case 'category':
+					$item_select_label = $categories_label[$item_select];
+					$item_label = $item_select_label;
+					$item_descr = __('Recent Posts from this category');
+					$item_url .= $core->url->getBase('category').'/'.$item_select;
+					break;
+				case 'archive':
+					$item_select_label = array_search($item_select,$months_combo);
+					if ($item_select == '-') {
+						$item_label = __('Archives');
+						$item_descr = $first_year.($first_year != $last_year ? ' - '.$last_year : '');
+						$item_url .= $core->url->getBase('archive');
+					} else {
+						$item_label = $item_select_label;
+						$item_descr = sprintf(__('Posts from %s'),$item_select_label);
+						$item_url .= $core->url->getBase('archive').'/'.substr($item_select,0,4).'/'.substr($item_select,-2);
+					}
+					break;
+				case 'pages':
+					$item_select_label = array_search($item_select,$pages_combo);
+					$item_label = $item_select_label;
+					$item_descr = '';
+					$item_url = html::stripHostURL($item_select);
+					break;
+				case 'tags':
+					$item_select_label = array_search($item_select,$tags_combo);
+					if ($item_select == '-') {
+						$item_label = __('All tags');
+						$item_descr = '';
+						$item_url .= $core->url->getBase('tags');
+					} else {
+						$item_label = $item_select_label;
+						$item_descr = sprintf(__('Recent posts for %s tag'),$item_select_label);
+						$item_url .= $core->url->getBase('tag').'/'.$item_select;
+					}
+					break;
+				case 'special':
+					break;
+				default:
+					# --BEHAVIOR-- adminSimpleMenuBeforeEdit
+					# Should modify if necessary $item_label, $item_descr and $item_url
+					# Should set if necessary $item_select_label (displayed on further admin step only)
+					$core->callBehavior('adminSimpleMenuBeforeEdit',$item_type,$item_select,
+						$item_label,$item_descr,$item_url,$item_select_label);
+					break;
+			}
+			break;
+		case 4:
+			// Fourth step, menu item to be added
+			try {
+				if (($item_label != '') && ($item_url != '')) 
+				{
+					// Add new item menu in menu array
+					$menu[] = array(
+						'label' => $item_label,
+						'descr' => $item_descr,
+						'url' => $item_url
+					);
+					// Save menu in blog settings
+					$core->blog->settings->system->put('simpleMenu',serialize($menu));
+					$core->blog->triggerBlog();
+				
+					// All done successfully, return to menu items list
+					http::redirect($p_url.'&added=1');
+				} else {
+					throw new Exception(__('Label and URL of menu item are mandatory.'));
+				}
+			}
+			catch (Exception $e) {
+				$core->error->add($e->getMessage());
+			}
+			break;
+	}
+} else {
+	
+	# Remove selected menu items
+	if (!empty($_POST['removeaction']))
+	{
+		try {
+	 		if (!empty($_POST['items_selected'])) {
+				foreach ($_POST['items_selected'] as $k => $v) {
+					$menu[$v]['label'] = '';
+				}
+				$newmenu = array();
+				foreach ($menu as $k => $v) {
+					if ($v['label']) {
+						$newmenu[] = array(
+							'label' => $v['label'],
+							'descr' => $v['descr'],
+							'url' => $v['url']);
+					}
+				}
+				$menu = $newmenu;
+				// Save menu in blog settings
+				$core->blog->settings->system->put('simpleMenu',serialize($menu));
+				$core->blog->triggerBlog();
+				
+				// All done successfully, return to menu items list
+				http::redirect($p_url.'&removed=1');
+			} else {
+				throw new Exception(__('No menu items selected.'));
+			}
+		}
+		catch (Exception $e) {
+			$core->error->add($e->getMessage());
+		}
+	}
+
+	# Update menu items
+	if (!empty($_POST['updateaction']))
+	{
+		try {
+			foreach ($_POST['items_label'] as $k => $v) {
+				if (!$v) throw new Exception(__('Label is mandatory.'));
+			}
+			foreach ($_POST['items_url'] as $k => $v) {
+				if (!$v) throw new Exception(__('URL is mandatory.'));
+			}
+			$newmenu = array();
+			for ($i = 0; $i < count($_POST['items_label']); $i++)
+			{
+				$newmenu[] = array(
+					'label' => $_POST['items_label'][$i],
+					'descr' => $_POST['items_descr'][$i],
+					'url' => $_POST['items_url'][$i]);
+			}
+			$menu = $newmenu;
+			// Save menu in blog settings
+			$core->blog->settings->system->put('simpleMenu',serialize($menu));
+			$core->blog->triggerBlog();
+
+			// All done successfully, return to menu items list
+			http::redirect($p_url.'&updated=1');
+		}
+		catch (Exception $e) {
+			$core->error->add($e->getMessage());
+		}
+	}
+	
+	# Order menu items
+	$order = array();
+	if (empty($_POST['im_order']) && !empty($_POST['order'])) {
+		$order = $_POST['order'];
+		asort($order);
+		$order = array_keys($order);
+	} elseif (!empty($_POST['im_order'])) {
+		$order = $_POST['im_order'];
+		if (substr($order,-1) == ',') {
+			$order = substr($order,0,strlen($order)-1);
+		}
+		$order = explode(',',$order);
+	}
+
+	if (!empty($_POST['updateaction']) && !empty($order))
+	{
+		try {
+			$newmenu = array();
+			foreach ($order as $i => $k) {
+				$newmenu[] = array(
+					'label' => $menu[$k]['label'],
+					'descr' => $menu[$k]['descr'],
+					'url' => $menu[$k]['url']);
+			}
+			$menu = $newmenu;
+			// Save menu in blog settings
+			$core->blog->settings->system->put('simpleMenu',serialize($menu));
+			$core->blog->triggerBlog();
+
+			// All done successfully, return to menu items list
+			http::redirect($p_url.'&neworder=1');
+		} 
+		catch (Exception $e) {
+			$core->error->add($e->getMessage());
+		}
+	}
+	
+}
+
+# Display
+?>
+
+<html>
+<head>
+	<title><?php echo $page_title; ?></title>
+	<?php
+		echo
+			dcPage::jsToolMan().
+			# --BEHAVIOR-- adminPageHeaders
+			$core->callBehavior('adminPageHeaders');
+	?>
+	<?php 
+		$core->auth->user_prefs->addWorkspace('accessibility'); 
+		$user_dm_nodragdrop = $core->auth->user_prefs->accessibility->nodragdrop;
+	?>
+	<?php if (!$user_dm_nodragdrop) : ?>
+	<script type="text/javascript">
+	//<![CDATA[
+
+	var dragsort = ToolMan.dragsort();
+	$(function() {
+		dragsort.makeTableSortable($("#menuitemslist").get(0),
+		dotclear.sortable.setHandle,dotclear.sortable.saveOrder);
+
+		$('.checkboxes-helpers').each(function() {
+			dotclear.checkboxesHelpers(this);
+		});
+	});
+
+	dotclear.sortable = {
+		setHandle: function(item) {
+			var handle = $(item).find('td.handle').get(0);
+			while (handle.firstChild) {
+				handle.removeChild(handle.firstChild);
+			}
+
+			item.toolManDragGroup.setHandle(handle);
+			handle.className = handle.className+' handler';
+		},
+
+		saveOrder: function(item) {
+			var group = item.toolManDragGroup;
+			var order = document.getElementById('im_order');
+			group.register('dragend', function() {
+				order.value = '';
+				items = item.parentNode.getElementsByTagName('tr');
+
+				for (var i=0; i<items.length; i++) {
+					order.value += items[i].id.substr(2)+',';
+				}
+			});
+		}
+	};
+	//]]>
+	</script>
+	<?php endif; ?>
+	<!--
+	<link rel="stylesheet" type="text/css" href="index.php?pf=simpleMenu/style.css" />
+	-->
+</head>
+
+<body>
+
+<?php
+
+if (!empty($_GET['added'])) {
+	echo '<p class="message">'.__('Menu item has been successfully added.').'</p>';
+}
+if (!empty($_GET['removed'])) {
+	echo '<p class="message">'.__('Menu items have been successfully removed.').'</p>';
+}
+if (!empty($_GET['neworder'])) {
+	echo '<p class="message">'.__('Menu items have been successfully updated.').'</p>';
+}
+if (!empty($_GET['updated'])) {
+	echo '<p class="message">'.__('Menu items have been successfully updated.').'</p>';
+}
+
+if ($step) 
+{
+	// Formulaire d'ajout d'un item
+	echo '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <a href="'.$p_url.'">'.$page_title.'</a> &rsaquo; <span class="page-title">'.__('Add item').'</span></h2>';
+	
+	switch ($step) {
+		case 1:
+			// Selection du type d'item
+			echo '<form id="additem" action="'.$p_url.'&add=2" method="post">';
+			echo '<fieldset><legend>'.__('Select type').'</legend>';
+			echo '<p class="field"><label for"item_type" class="classic">'.__('Type of item menu:').'</label>'.form::combo('item_type',$items_combo,'').'</p>';
+			echo '<p>'.$core->formNonce().'<input type="submit" name="appendaction" value="'.__('Continue…').'" />'.'</p>';
+			echo '</fieldset>';
+			echo '</form>';
+			break;
+		case 2:
+			if ($items[$item_type][1]) {
+				// Choix à faire
+				echo '<form id="additem" action="'.$p_url.'&add=3" method="post">';
+				echo '<fieldset><legend>'.$item_type_label.'</legend>';
+				switch ($item_type) {
+					case 'lang':
+						echo '<p class="field"><label for"item_select" class="classic">'.__('Select language:').'</label>'.
+							form::combo('item_select',$langs_combo,'');
+						break;
+					case 'category':
+						echo '<p class="field"><label for"item_select" class="classic">'.__('Select category:').'</label>'.
+							form::combo('item_select',$categories_combo,'');
+						break;
+					case 'archive':
+						echo '<p class="field"><label for"item_select" class="classic">'.__('Select month (if necessary):').'</label>'.
+							form::combo('item_select',$months_combo,'');
+						break;
+					case 'pages':
+						echo '<p class="field"><label for"item_select" class="classic">'.__('Select page:').'</label>'.
+							form::combo('item_select',$pages_combo,'');
+						break;
+					case 'tags':
+						echo '<p class="field"><label for"item_select" class="classic">'.__('Select tag (if necessary):').'</label>'.
+							form::combo('item_select',$tags_combo,'');
+						break;
+					default:
+						echo
+							# --BEHAVIOR-- adminSimpleMenuSelect
+							# Optional step once $item_type known : should provide a field using 'item_select' as id
+							$core->callBehavior('adminSimpleMenuSelect',$item_type,'item_select');
+				}
+				echo form::hidden('item_type',$item_type);
+				echo '<p>'.$core->formNonce().'<input type="submit" name="appendaction" value="'.__('Continue…').'" /></p>';
+				echo '</fieldset>';
+				echo '</form>';
+				break;
+			}
+		case 3:
+			// Libellé et description
+			echo '<form id="additem" action="'.$p_url.'&add=4" method="post">';
+			echo '<fieldset><legend>'.$item_type_label.($item_select_label != '' ? ' ('.$item_select_label.')' : '').'</legend>';
+			echo '<p class="field"><label for"item_label" class="classic required"><abbr title="'.__('Required field').'">*</abbr> '.
+				__('Label of item menu:').'</label>'.form::field('item_label',20,255,$item_label).'</p>';
+			echo '<p class="field"><label for"item_descr" class="classic">'.
+				__('Description of item menu:').'</label>'.form::field('item_descr',30,255,$item_descr).'</p>';
+			echo '<p class="field"><label for"item_url" class="classic required"><abbr title="'.__('Required field').'">*</abbr> '.
+				__('URL of item menu:').'</label>'.form::field('item_url',40,255,$item_url).'</p>';
+			echo form::hidden('item_type',$item_type).form::hidden('item_select',$item_select);
+			echo '<p>'.$core->formNonce().'<input type="submit" name="appendaction" value="'.__('Add this item').'" /></p>';
+			echo '</fieldset>';
+			echo '</form>';
+			break;
+	}
+}
+
+// Liste des items
+if (!$step) {
+	echo '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <span class="page-title">'.$page_title.'</span></h2>';
+}
+
+if (!$step) {
+	echo '<form id="menuitemsappend" action="'.$p_url.'&add=1" method="post">';
+	echo '<p>'.$core->formNonce().'<input class="add" type="submit" name="appendaction" value="'.__('Add an item').'" /></p>';
+	echo '</form>';
+}
+
+if (count($menu)) {
+	if (!$step) {
+		echo '<form id="menuitems" action="'.$p_url.'" method="post">';
+	}
+	// Entête table
+	echo 
+		'<table class="maximal dragable">'.
+		'<caption>'.__('Menu items list').'</caption>'.
+		'<thead>'.
+		'<tr>';
+	if (!$step) {
+		echo '<th scope="col"></th>';
+		echo '<th scope="col"></th>';
+	}
+	echo
+		'<th scope="col">'.__('Label').'</th>'.
+		'<th scope="col">'.__('Description').'</th>'.
+		'<th scope="col">'.__('URL').'</th>'.
+		'</tr>'.
+		'</thead>'.
+		'<tbody id="menuitemslist">';
+	$count = 0;
+	foreach ($menu as $i => $m) {
+		echo '<tr class="line" id="l_'.$i.'">';
+		if (!$step) {
+			$count++;
+			echo '<td class="handle minimal">'.form::field(array('order['.$i.']'),2,3,$count,'position','',false,'title="'.sprintf(__('position of %s'),__($m['label'])).'"').
+				form::hidden(array('dynorder[]','dynorder-'.$i),$i).'</td>';
+			echo '<td class="minimal">'.form::checkbox(array('items_selected[]','ims-'.$i),$i).'</td>';
+			echo '<td class="nowrap" scope="row">'.form::field(array('items_label[]','iml-'.$i),20,255,__($m['label'])).'</td>';
+			echo '<td class="nowrap">'.form::field(array('items_descr[]','imd-'.$i),30,255,__($m['descr'])).'</td>';
+			echo '<td class="nowrap">'.form::field(array('items_url[]','imu-'.$i),40,255,$m['url']).'</td>';
+		} else {
+			echo '<td class="nowrap" scope="row">'.__($m['label']).'</td>';
+			echo '<td class="nowrap">'.__($m['descr']).'</td>';
+			echo '<td class="nowrap">'.$m['url'].'</td>';
+		}
+		echo '</tr>';
+	}
+	echo '</tbody>'.
+		'</table>';
+	if (!$step) {
+		echo '<div class="two-cols">';
+		echo '<p class="col">'.form::hidden('im_order','').$core->formNonce();
+		echo '<input type="submit" name="updateaction" value="'.__('Update menu').'" />'.'</p>';
+		echo '<p class="col right">'.'<input type="submit" class="delete" name="removeaction" '.
+				'value="'.__('Delete selected menu items').'" '.
+				'onclick="return window.confirm(\''.html::escapeJS(__('Are you sure you want to remove selected menu items?')).'\');" />'.
+			'</p>';
+		echo '</div>';
+		echo '</form>';
+	}
+} else {
+	echo
+		'<p>'.__('Currently no menu items').'</p>';
+}
+
+dcPage::helpBlock('simpleMenu');
+?>
+
+</body>
+</html>
Index: plugins/simpleMenu/locales/en/help/help.html
===================================================================
--- plugins/simpleMenu/locales/en/help/help.html	(revision 553)
+++ plugins/simpleMenu/locales/en/help/help.html	(revision 553)
@@ -0,0 +1,31 @@
+<html>
+<head>
+  <title>Simple Menu</title>
+</head>
+
+<body>
+
+<h3>Simple Menu</h3>
+<p>Simple Menu allows you to display on your blog a single level menu, if your theme supports it.</p>
+<dl>
+  <dt>Menu items list</dt>
+  <dd>Here are displayed your menu items. 
+  You can reorder this list by dragging its items upwards or downwards. You can also modify label, description and URL of each item.
+  Once done, clic on "Update menu".</dd>
+    
+  <dt>Delete selected menu items</dt>
+  <dd>Allows you to delete menu items by checking the boxes next to each of them.</dd>
+  
+  <dt>Add a new menu item</dt>
+  <dd>First select the type of item. Then clic on "Continue…". Then, if necessary, you may have to define a sub-type (category, page, etc). If so, do it and clic on "Continue…". Then finally you can modify proposals done for label, description (not mandatory) and URL of the menu item. Once done, clic on "Add this item".</dd>
+  <dd>
+    <ul>
+      <li><strong>Label : </strong>Type here the anchor text. For example "Archives". This field is mandatory.</li>
+      <li><strong>Description : </strong>Type here a short description for the menu item (will be displayed under Label depending on theme selected). For example "Archives from 2004 to 2011".</li>
+      <li><strong>URL : </strong>Type here the item's destination. This field is mandatory.</li>
+	</ul>
+  </dd>
+
+</dl>
+</body>
+</html>
Index: plugins/simpleMenu/locales/en/resources.php
===================================================================
--- plugins/simpleMenu/locales/en/resources.php	(revision 553)
+++ plugins/simpleMenu/locales/en/resources.php	(revision 553)
@@ -0,0 +1,18 @@
+<?php
+# -- BEGIN LICENSE BLOCK ---------------------------------------
+#
+# This file is part of Dotclear 2.
+#
+# Copyright (c) 2003-2011 Olivier Meunier & Association Dotclear
+# Licensed under the GPL version 2.0 license.
+# See LICENSE file or
+# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+#
+# -- END LICENSE BLOCK -----------------------------------------
+
+if (!isset($__resources['help']['simpleMenu']))
+{
+	$__resources['help']['simpleMenu'] = dirname(__FILE__).'/help/help.html';
+}
+
+?>
Index: plugins/simpleMenu/locales/fr/help/help.html
===================================================================
--- plugins/simpleMenu/locales/fr/help/help.html	(revision 553)
+++ plugins/simpleMenu/locales/fr/help/help.html	(revision 553)
@@ -0,0 +1,31 @@
+<html>
+<head>
+  <title>Menu simple</title>
+</head>
+
+<body>
+
+<h3>Menu simple</h3>
+<p>Menu simple vous permet d’afficher un menu limité à un seul niveau sur votre blog, si votre thème le supporte.</p>
+<dl>
+  <dt>Liste des items de menu</dt>
+  <dd>Ici sont affichés les items de votre menu. 
+  Vous pouvez les ordonner en déplaçant les lignes vers le haut ou vers le bas. Vous pouvez également modifier le libellé, la description et l’URL de chacun des items.
+  Une fois terminé, cliquez sur « Mettre à jour le menu ».</dd>
+    
+  <dt>Supprimer les items de menu sélectionnés</dt>
+  <dd>Vous permet de supprimer les items de menu que vous souhaitez en cochant les cases pour chacun d’eux.</dd>
+  
+  <dt>Ajouter un item de menu</dt>
+  <dd>Tout d’abord sélectionnez le type d’item que vous désirez, puis cliquez sur « Continuer… ». Ensuite, si nécessaire, vous pouvez avoir à précisez votre choix (catégorie, page, etc). Dans ce cas, faites-le et cliquez sur « Continuer… ». Enfin vous pouvez modifier les propositions qui vous sont faites pour le libellé, la description (facultative) et l’URL de l’item de menu. Une fois effectué cliquer sur « Ajouter cet item ».</dd>
+  <dd>
+    <ul>
+      <li><strong>Libelllé : </strong>Indiquez ici le libellé. Par exemple "Archives". Ce champs est obligatoire.</li>
+      <li><strong>Description : </strong>Indiquez ici une courte description pour cet item (sera affiché sous le libellé en fonction du thème sélectionné). Par exemple "Archives de 2004 à 2011".</li>
+      <li><strong>URL : </strong>Indiquez ici la destination. Ce champs est obligatoire.</li>
+	</ul>
+  </dd>
+
+</dl>
+</body>
+</html>
Index: plugins/simpleMenu/locales/fr/main.po
===================================================================
--- plugins/simpleMenu/locales/fr/main.po	(revision 552)
+++ plugins/simpleMenu/locales/fr/main.po	(revision 552)
@@ -0,0 +1,125 @@
+msgid "Simple menu"
+msgstr "Menu simple"
+
+msgid "Simple menu for Dotclear"
+msgstr "Menu simple pour Dotclear"
+
+msgid "All months"
+msgstr "Tous les mois"
+
+msgid "Tags"
+msgstr "Mots-clés"
+
+msgid "User defined"
+msgstr "Saisie libre"
+
+msgid "Label"
+msgstr "Libellé"
+
+msgid "Description"
+msgstr "Description"
+
+msgid "URL"
+msgstr "URL"
+
+msgid "Recent posts"
+msgstr "Billets récents"
+
+msgid "Switch to %s language"
+msgstr "Basculer vers le %s"
+
+msgid "Recent Posts from this category"
+msgstr "Billets récents de cette catégorie"
+
+msgid "Archives"
+msgstr "Archives"
+
+msgid "Posts from %s"
+msgstr "Billets de %s"
+
+msgid "All tags"
+msgstr "Tous les mots clés"
+
+msgid "Recent posts for %s tag"
+msgstr "Billets récent pour le mot-clé %s"
+
+msgid "Label and URL of menu item are mandatory."
+msgstr "Les libellés et URL sont obligatoires."
+
+msgid "No menu items selected."
+msgstr "Aucun item de menu sélectionné."
+
+msgid "Label is mandatory."
+msgstr "Le libellé est obligatoire."
+
+msgid "URL is mandatory."
+msgstr "l’URL est obligatoire."
+
+msgid "Menu item has been successfully added."
+msgstr "L'item de menu a été ajouté avec succès."
+
+msgid "Menu items have been successfully removed."
+msgstr "Le ou les items de menu ont été supprimés avec succès."
+
+msgid "Menu items have been successfully updated."
+msgstr "Le ou les items de menu ont été mis à jour avec succès."
+
+msgid "Add item"
+msgstr "Ajouter un item de menu"
+
+msgid "Select type"
+msgstr "Sélection du type"
+
+msgid "Type of item menu:"
+msgstr "Type d'item de menu :"
+
+msgid "Continue…"
+msgstr "Continuer…"
+
+msgid "Select language:"
+msgstr "Sélectionnez la langue :"
+
+msgid "Select category:"
+msgstr "Sélectionnez la catégorie :"
+
+msgid "Select month (if necessary):"
+msgstr "Sélectionnez le mois (si nécessaire) :"
+
+msgid "Select page:"
+msgstr "Sélectionnez la page :"
+
+msgid "Select tag (if necessary):"
+msgstr "Sélectionnez le mot clé (si nécessaire) :"
+
+msgid "Label of item menu:"
+msgstr "Libellé de l'item de menu :"
+
+msgid "Description of item menu:"
+msgstr "Description de l'item de menu :"
+
+msgid "URL of item menu:"
+msgstr "URL de l'item de menu :"
+
+msgid "Add this item"
+msgstr "Ajouter cet item"
+
+msgid "Menu items list"
+msgstr "Liste des items de menu"
+
+msgid "position of %s"
+msgstr "position de %s"
+
+msgid "Currently no menu items"
+msgstr "Aucun item de menu pour l'instant"
+
+msgid "Add an item"
+msgstr "Ajouter un item de menu"
+
+msgid "Update menu"
+msgstr "Mettre à jour le menu"
+
+msgid "Delete selected menu items"
+msgstr "Supprimer les items de menu sélectionnés"
+
+msgid "Are you sure you want to remove selected menu items?"
+msgstr "Êtes-vous sûr de vouloir supprimer les items de menu sélectionnés ?"
Index: plugins/simpleMenu/locales/fr/resources.php
===================================================================
--- plugins/simpleMenu/locales/fr/resources.php	(revision 553)
+++ plugins/simpleMenu/locales/fr/resources.php	(revision 553)
@@ -0,0 +1,18 @@
+<?php
+# -- BEGIN LICENSE BLOCK ---------------------------------------
+#
+# This file is part of Dotclear 2.
+#
+# Copyright (c) 2003-2011 Olivier Meunier & Association Dotclear
+# Licensed under the GPL version 2.0 license.
+# See LICENSE file or
+# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+#
+# -- END LICENSE BLOCK -----------------------------------------
+
+if (!isset($__resources['help']['simpleMenu']))
+{
+	$__resources['help']['simpleMenu'] = dirname(__FILE__).'/help/help.html';
+}
+
+?>
Index: themes/ductile/_config.php
===================================================================
--- themes/ductile/_config.php	(revision 583)
+++ themes/ductile/_config.php	(revision 583)
@@ -0,0 +1,446 @@
+<?php
+# -- BEGIN LICENSE BLOCK ---------------------------------------
+#
+# This file is part of Dotclear 2.
+#
+# Copyright (c) 2003-2011 Olivier Meunier & Association Dotclear
+# Licensed under the GPL version 2.0 license.
+# See LICENSE file or
+# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+#
+# -- END LICENSE BLOCK -----------------------------------------
+if (!defined('DC_CONTEXT_ADMIN')) { return; }
+
+l10n::set(dirname(__FILE__).'/locales/'.$_lang.'/admin');
+
+$list_types = array(
+	__('Title') => 'title',
+	__('Short') => 'short',
+	__('Full') => 'full'
+);
+
+$contexts = array(
+	'default' => __('Home (first page)'),
+	'default-page' => __('Home (other pages)'),
+	'category' => __('Entries for a category'),
+	'tag' => __('Entries for a tag'),
+	'search' => __('Search result entries'),
+	'archive' => __('Month archive entries')
+);
+
+$sticker_images = array(
+	__('Contact') => 'sticker-contact.png',
+	__('Feed') => 'sticker-feed.png',
+	__('About') => 'sticker-about.png'
+);
+
+$fonts = array(
+	__('default') => '',
+	__('Ductile primary') => 'Ductile body',
+	__('Ductile secondary') => 'Ductile alternate',
+	__('Times New Roman') => 'Times New Roman',
+	__('Georgia') => 'Georgia',
+	__('Garamond') => 'Garamond',
+	__('Helvetica/Arial') => 'Helvetica/Arial',
+	__('Verdana') => 'Verdana',
+	__('Trebuchet MS') => 'Trebuchet MS',
+	__('Impact') => 'Impact',
+	__('Monospace') => 'Monospace'
+);
+
+function adjustFontSize($s)
+{
+	if (preg_match('/^([0-9.]+)\s*(%|pt|px|em|ex)?$/',$s,$m)) {
+		if (empty($m[2])) {
+			$m[2] = 'em';
+		}
+		return $m[1].$m[2];
+	}
+
+	return null;
+}
+
+function adjustColor($c)
+{
+	if ($c === '') {
+		return '';
+	}
+
+	$c = strtoupper($c);
+
+	if (preg_match('/^[A-F0-9]{3,6}$/',$c)) {
+		$c = '#'.$c;
+	}
+
+	if (preg_match('/^#[A-F0-9]{6}$/',$c)) {
+		return $c;
+	}
+
+	if (preg_match('/^#[A-F0-9]{3,}$/',$c)) {
+		return '#'.substr($c,1,1).substr($c,1,1).substr($c,2,1).substr($c,2,1).substr($c,3,1).substr($c,3,1);
+	}
+
+	return '';
+}
+
+$ductile_base = array(
+	// HTML
+	'subtitle_hidden' => null,
+	// CSS
+	'body_font' => null,
+	'alternate_font' => null,
+	'blog_title_w' => null,
+	'blog_title_s' => null,
+	'blog_title_c' => null,
+	'post_title_w' => null,
+	'post_title_s' => null,
+	'post_title_c' => null,
+	'post_link_w' => null,
+	'post_link_v_c' => null,
+	'post_link_f_c' => null,
+	'blog_title_w_m' => null,
+	'blog_title_s_m' => null,
+	'blog_title_c_m' => null,
+	'post_title_w_m' => null,
+	'post_title_s_m' => null,
+	'post_title_c_m' => null,
+	'post_simple_title_c' => null
+);
+
+$ductile_user = $core->blog->settings->themes->get($core->blog->settings->system->theme.'_style');
+$ductile_user = @unserialize($ductile_user);
+if (!is_array($ductile_user)) {
+	$ductile_user = array();
+}
+
+$ductile_user = array_merge($ductile_base,$ductile_user);
+
+$ductile_stickers_base = array(
+	array('label' => null,'url' => null,'image' => null),
+	array('label' => null,'url' => null,'image' => null),
+	array('label' => null,'url' => null,'image' => null)
+);
+
+$ductile_stickers = $core->blog->settings->themes->get($core->blog->settings->system->theme.'_stickers');
+$ductile_stickers = @unserialize($ductile_stickers);
+if (!is_array($ductile_stickers)) {
+	$ductile_stickers = $ductile_stickers_base;
+}
+
+$ductile_lists_base = array(
+	'default' => null,
+	'default-page' => null,
+	'category' => null,
+	'tag' => null,
+	'search' => null,
+	'archive' => null
+);
+
+$ductile_lists = $core->blog->settings->themes->get($core->blog->settings->system->theme.'_entries_lists');
+$ductile_lists = @unserialize($ductile_lists);
+if (!is_array($ductile_lists)) {
+	$ductile_lists = $ductile_lists_base;
+}
+
+$ductile_counts_base = array(
+	'default' => null,
+	'category' => null,
+	'tag' => null,
+	'search' => null
+);
+
+$ductile_counts = $core->blog->settings->themes->get($core->blog->settings->system->theme.'_entries_counts');
+$ductile_counts = @unserialize($ductile_counts);
+if (!is_array($ductile_counts)) {
+	$ductile_counts = $ductile_counts_base;
+}
+
+
+$conf_tab = isset($_POST['conf_tab']) ? $_POST['conf_tab'] : 'html';
+
+if (!empty($_POST))
+{
+	try
+	{
+		# HTML
+		if ($conf_tab == 'html') {
+			$ductile_user['subtitle_hidden'] = (integer) !empty($_POST['subtitle_hidden']);
+			
+			$count = 0;
+			if (!empty($_POST['sticker1_label']) && !empty($_POST['sticker1_url'])) {
+				$ductile_stickers[$count]['label'] = $_POST['sticker1_label'];
+				$ductile_stickers[$count]['url'] = $_POST['sticker1_url'];
+				$ductile_stickers[$count]['image'] = $_POST['sticker1_image'];
+				$count++;
+			}
+			if (!empty($_POST['sticker2_label']) && !empty($_POST['sticker2_url'])) {
+				$ductile_stickers[$count]['label'] = $_POST['sticker2_label'];
+				$ductile_stickers[$count]['url'] = $_POST['sticker2_url'];
+				$ductile_stickers[$count]['image'] = $_POST['sticker2_image'];
+				$count++;
+			}
+			if (!empty($_POST['sticker3_label']) && !empty($_POST['sticker3_url'])) {
+				$ductile_stickers[$count]['label'] = $_POST['sticker3_label'];
+				$ductile_stickers[$count]['url'] = $_POST['sticker3_url'];
+				$ductile_stickers[$count]['image'] = $_POST['sticker3_image'];
+				$count++;
+			}
+			for ($i = $count; $i < 3; $i++) {
+				$ductile_stickers[$i]['label'] = null;
+				$ductile_stickers[$i]['url'] = null;
+				$ductile_stickers[$i]['image'] = null;
+			}
+
+			for ($i = 0; $i < count($_POST['list_type']); $i++) {
+				$ductile_lists[$_POST['list_ctx'][$i]] = $_POST['list_type'][$i];
+			}
+	 		
+			for ($i = 0; $i < count($_POST['count_nb']); $i++) {
+				$ductile_counts[$_POST['count_ctx'][$i]] = $_POST['count_nb'][$i];
+			}
+	 		
+		}
+		
+		# CSS
+		if ($conf_tab == 'css') {
+			$ductile_user['body_font'] = $_POST['body_font'];
+			$ductile_user['alternate_font'] = $_POST['alternate_font'];
+
+			$ductile_user['blog_title_w'] = (integer) !empty($_POST['blog_title_w']);
+			$ductile_user['blog_title_s'] = adjustFontSize($_POST['blog_title_s']);
+			$ductile_user['blog_title_c'] = adjustColor($_POST['blog_title_c']);
+		
+			$ductile_user['post_title_w'] = (integer) !empty($_POST['post_title_w']);
+			$ductile_user['post_title_s'] = adjustFontSize($_POST['post_title_s']);
+			$ductile_user['post_title_c'] = adjustColor($_POST['post_title_c']);
+		
+			$ductile_user['post_link_w'] = (integer) !empty($_POST['post_link_w']);
+			$ductile_user['post_link_v_c'] = adjustColor($_POST['post_link_v_c']);
+			$ductile_user['post_link_f_c'] = adjustColor($_POST['post_link_f_c']);
+		
+			$ductile_user['post_simple_title_c'] = adjustColor($_POST['post_simple_title_c']);
+		
+			$ductile_user['blog_title_w_m'] = (integer) !empty($_POST['blog_title_w_m']);
+			$ductile_user['blog_title_s_m'] = adjustFontSize($_POST['blog_title_s_m']);
+			$ductile_user['blog_title_c_m'] = adjustColor($_POST['blog_title_c_m']);
+		
+			$ductile_user['post_title_w_m'] = (integer) !empty($_POST['post_title_w_m']);
+			$ductile_user['post_title_s_m'] = adjustFontSize($_POST['post_title_s_m']);
+			$ductile_user['post_title_c_m'] = adjustColor($_POST['post_title_c_m']);
+		}
+		
+		$core->blog->settings->addNamespace('themes');
+		$core->blog->settings->themes->put($core->blog->settings->system->theme.'_style',serialize($ductile_user));
+		$core->blog->settings->themes->put($core->blog->settings->system->theme.'_stickers',serialize($ductile_stickers));
+		$core->blog->settings->themes->put($core->blog->settings->system->theme.'_entries_lists',serialize($ductile_lists));
+		$core->blog->settings->themes->put($core->blog->settings->system->theme.'_entries_counts',serialize($ductile_counts));
+
+		// Blog refresh
+		$core->blog->triggerBlog();
+
+		// Template cache reset
+		$core->emptyTemplatesCache();
+		
+		echo
+		'<div class="message"><p>'.
+		__('Theme configuration upgraded.').
+		'</p></div>';
+	}
+	catch (Exception $e)
+	{
+		$core->error->add($e->getMessage());
+	}
+}
+
+// To be deleted when adminThemeConfigManaged behaviour will be implemented in admin/blog_themes.php :
+echo '</form>';
+
+# HTML Tab
+
+echo '<div class="multi-part" id="themes-list'.($conf_tab == 'html' ? '' : '-html').'" title="'.__('Content').'">';
+
+echo '<form id="theme_config" action="blog_theme.php?conf=1" method="post" enctype="multipart/form-data">';
+
+echo '<fieldset><legend>'.__('Header').'</legend>'.
+'<p class="field"><label for="subtitle_hidden">'.__('Hide blog description:').' '.
+form::checkbox('subtitle_hidden',1,$ductile_user['subtitle_hidden']).'</label>'.'</p>'.
+'</fieldset>';
+
+echo '<fieldset><legend>'.__('Stickers').'</legend>';
+
+echo '<table id="stickerslist">'.'<caption>'.__('Stickers (footer)').'</caption>'.
+'<thead>'.
+'<tr>'.
+'<th scope="col">'.__('Position').'</th>'.
+'<th scope="col">'.__('Label').'</th>'.
+'<th scope="col">'.__('URL').'</th>'.
+'<th scope="col">'.__('Icon').'</th>'.
+'</tr>'.
+'</thead>'.
+'<tbody>'.
+'<tr>'.
+'<td scope="raw">1</td>'.
+'<td>'.form::field('sticker1_label',20,255,$ductile_stickers[0]['label']).'</td>'.
+'<td>'.form::field('sticker1_url',40,255,$ductile_stickers[0]['url']).'</td>'.
+'<td>'.form::combo('sticker1_image',$sticker_images,$ductile_stickers[0]['image']).'</td>'.
+'</tr>'.
+'<tr>'.
+'<td scope="raw">2</td>'.
+'<td>'.form::field('sticker2_label',20,255,$ductile_stickers[1]['label']).'</td>'.
+'<td>'.form::field('sticker2_url',40,255,$ductile_stickers[1]['url']).'</td>'.
+'<td>'.form::combo('sticker2_image',$sticker_images,$ductile_stickers[1]['image']).'</td>'.
+'</tr>'.
+'<tr>'.
+'<td scope="raw">3</td>'.
+'<td>'.form::field('sticker3_label',20,255,$ductile_stickers[2]['label']).'</td>'.
+'<td>'.form::field('sticker3_url',40,255,$ductile_stickers[2]['url']).'</td>'.
+'<td>'.form::combo('sticker3_image',$sticker_images,$ductile_stickers[2]['image']).'</td>'.
+'</tr>'.
+'</tbody>'.
+'</table>';
+
+echo '</fieldset>';
+
+echo '<fieldset><legend>'.__('Entries list types and limits').'</legend>';
+
+echo '<table id="entrieslist">'.'<caption>'.__('Entries lists').'</caption>'.
+'<thead>'.
+'<tr>'.
+'<th scope="col">'.__('Context').'</th>'.
+'<th scope="col">'.__('Entries list type').'</th>'.
+'<th scope="col">'.__('Number of entries').'</th>'.
+'</tr>'.
+'</thead>'.
+'<tbody>';
+foreach ($ductile_lists as $k => $v) {
+	echo 
+		'<tr>'.
+		'<td scope="raw">'.$contexts[$k].'</td>'.
+		'<td>'.form::hidden(array('list_ctx[]'),$k).form::combo(array('list_type[]'),$list_types,$v).'</td>';
+	if (array_key_exists($k,$ductile_counts)) {
+		echo '<td>'.form::hidden(array('count_ctx[]'),$k).form::field(array('count_nb[]'),2,3,$ductile_counts[$k]).'</td>';
+	} else {
+		echo '<td></td>';
+	}
+	echo
+		'</tr>';
+}
+echo
+'</tbody>'.
+'</table>';
+
+echo '</fieldset>';
+
+echo '<input type="hidden" name="conf_tab" value="html">';
+echo '<p class="clear"><input type="submit" value="'.__('Save').'" />'.$core->formNonce().'</p>';
+echo '</form>';
+
+echo '</div>'; // Close tab
+
+# CSS tab
+
+echo '<div class="multi-part" id="themes-list'.($conf_tab == 'css' ? '' : '-css').'" title="'.__('Presentation').'">';
+
+echo '<form id="theme_config" action="blog_theme.php?conf=1" method="post" enctype="multipart/form-data">';
+
+echo '<h3>'.__('General settings').'</h3>';
+
+echo '<fieldset><legend>'.__('Fonts').'</legend>'.
+'<p class="field"><label for="body_font">'.__('Main:').' '.
+form::combo('body_font',$fonts,$ductile_user['body_font']).'</label></p>'.
+
+'<p class="field"><label for="alternate_font">'.__('Secondary:').' '.
+form::combo('alternate_font',$fonts,$ductile_user['alternate_font']).'</label></p>'.
+'</fieldset>';
+
+echo '<div class="two-cols">';
+echo '<div class="col">';
+
+echo '<fieldset><legend>'.__('Blog title').'</legend>'.
+'<p class="field"><label for="blog_title_w">'.__('In bold:').' '.
+form::checkbox('blog_title_w',1,$ductile_user['blog_title_w']).'</label>'.'</p>'.
+
+'<p class="field"><label for="blog_title_s">'.__('Font size (in em by default):').'</label> '.
+form::field('blog_title_s',7,7,$ductile_user['blog_title_s']).'</p>'.
+
+'<p class="field picker"><label for="blog_title_c">'.__('Color:').'</label> '.
+form::field('blog_title_c',7,7,$ductile_user['blog_title_c'],'colorpicker').'</p>'.
+'</fieldset>';
+
+echo '</div>';
+echo '<div class="col">';
+
+echo '<fieldset><legend>'.__('Post title').'</legend>'.
+'<p class="field"><label for="post_title_w">'.__('In bold:').' '.
+form::checkbox('post_title_w',1,$ductile_user['post_title_w']).'</label>'.'</p>'.
+
+'<p class="field"><label for="post_title_s">'.__('Font size (in em by default):').'</label> '.
+form::field('post_title_s',7,7,$ductile_user['post_title_s']).'</p>'.
+
+'<p class="field picker"><label for="post_title_c">'.__('Color:').'</label> '.
+form::field('post_title_c',7,7,$ductile_user['post_title_c'],'colorpicker').'</p>'.
+'</fieldset>';
+
+echo '</div>';
+echo '</div>';
+
+echo '<fieldset><legend>'.__('Titles without link').'</legend>'.
+
+'<p class="field picker"><label for="post_simple_title_c">'.__('Color:').'</label> '.
+form::field('post_simple_title_c',7,7,$ductile_user['post_simple_title_c'],'colorpicker').'</p>'.
+'</fieldset>';
+
+echo '<fieldset><legend>'.__('Inside posts links').'</legend>'.
+'<p class="field"><label for="post_link_w">'.__('In bold:').' '.
+form::checkbox('post_link_w',1,$ductile_user['post_link_w']).'</label>'.'</p>'.
+
+'<p class="field picker"><label for="post_link_v_c">'.__('Normal and visited links color:').'</label> '.
+form::field('post_link_v_c',7,7,$ductile_user['post_link_v_c'],'colorpicker').'</p>'.
+
+'<p class="field picker"><label for="body_link_f_c">'.__('Active, hover and focus links color:').'</label> '.
+form::field('post_link_f_c',7,7,$ductile_user['post_link_f_c'],'colorpicker').'</p>'.
+'</fieldset>';
+
+echo '<h3>'.__('Mobile specific settings').'</h3>';
+
+echo '<div class="two-cols">';
+echo '<div class="col">';
+
+echo '<fieldset><legend>'.__('Blog title').'</legend>'.
+'<p class="field"><label for="blog_title_w_m">'.__('In bold:').' '.
+form::checkbox('blog_title_w_m',1,$ductile_user['blog_title_w_m']).'</label>'.'</p>'.
+
+'<p class="field"><label for="blog_title_s_m">'.__('Font size (in em by default):').'</label> '.
+form::field('blog_title_s_m',7,7,$ductile_user['blog_title_s_m']).'</p>'.
+
+'<p class="field picker"><label for="blog_title_c_m">'.__('Color:').'</label> '.
+form::field('blog_title_c_m',7,7,$ductile_user['blog_title_c_m'],'colorpicker').'</p>'.
+'</fieldset>';
+
+echo '</div>';
+echo '<div class="col">';
+
+echo '<fieldset><legend>'.__('Post title').'</legend>'.
+'<p class="field"><label for="post_title_w_m">'.__('In bold:').' '.
+form::checkbox('post_title_w_m',1,$ductile_user['post_title_w_m']).'</label>'.'</p>'.
+
+'<p class="field"><label for="post_title_s_m">'.__('Font size (in em by default):').'</label> '.
+form::field('post_title_s_m',7,7,$ductile_user['post_title_s_m']).'</p>'.
+
+'<p class="field picker"><label for="post_title_c_m">'.__('Color:').'</label> '.
+form::field('post_title_c_m',7,7,$ductile_user['post_title_c_m'],'colorpicker').'</p>'.
+'</fieldset>';
+
+echo '</div>';
+echo '</div>';
+
+echo '<input type="hidden" name="conf_tab" value="css">';
+echo '<p class="clear"><input type="submit" value="'.__('Save').'" />'.$core->formNonce().'</p>';
+echo '</form>';
+
+echo '</div>'; // Close tab
+
+// To be deleted when adminThemeConfigManaged behaviour will be implemented in admin/blog_themes.php :
+echo '<form style="display:none">';
+
+?>
Index: themes/ductile/_define.php
===================================================================
--- themes/ductile/_define.php	(revision 584)
+++ themes/ductile/_define.php	(revision 584)
@@ -0,0 +1,18 @@
+<?php
+# -- BEGIN LICENSE BLOCK ---------------------------------------
+#
+# Copyright (c) Association Dotclear
+# Licensed under the GPL version 2.0 license.
+# See LICENSE file or
+# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+#
+# -- END LICENSE BLOCK -----------------------------------------
+if (!defined('DC_RC_PATH')) { return; }
+
+$this->registerModule(
+	/* Name */			"Ductile",
+	/* Description*/		"Chantier pour un nouveau theme",
+	/* Author */			"Dotclear Team",
+	/* Version */			'0.7.1'
+);
+?>
Index: themes/ductile/_prepend.php
===================================================================
--- themes/ductile/_prepend.php	(revision 435)
+++ themes/ductile/_prepend.php	(revision 435)
@@ -0,0 +1,35 @@
+<?php
+# -- BEGIN LICENSE BLOCK ---------------------------------------
+#
+# This file is part of Dotclear 2.
+#
+# Copyright (c) 2003-2011 Olivier Meunier & Association Dotclear
+# Licensed under the GPL version 2.0 license.
+# See LICENSE file or
+# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+#
+# -- END LICENSE BLOCK -----------------------------------------
+
+# Public and Admin modes :
+
+if (!defined('DC_RC_PATH')) { return; }
+
+# Admin mode only :
+
+# Behaviors
+$GLOBALS['core']->addBehavior('adminPageHTMLHead',array('tplDuctileThemeAdmin','adminPageHTMLHead'));
+$GLOBALS['core']->addBehavior('adminThemeConfigManaged',array('tplDuctileThemeAdmin','adminThemeConfigManaged'));
+
+class tplDuctileThemeAdmin
+{
+	public static function adminPageHTMLHead()
+	{
+		echo "\n".'<!-- Header directives for Ductile configuration -->'."\n";
+	}
+
+	public static function adminThemeConfigManaged()
+	{
+		return true;
+	}
+}
+?>
Index: themes/ductile/_public.php
===================================================================
--- themes/ductile/_public.php	(revision 592)
+++ themes/ductile/_public.php	(revision 592)
@@ -0,0 +1,347 @@
+<?php
+# -- BEGIN LICENSE BLOCK ---------------------------------------
+#
+# This file is part of Dotclear 2.
+#
+# Copyright (c) 2003-2011 Olivier Meunier & Association Dotclear
+# Licensed under the GPL version 2.0 license.
+# See LICENSE file or
+# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+#
+# -- END LICENSE BLOCK -----------------------------------------
+
+if (!defined('DC_RC_PATH')) { return; }
+
+# Behaviors
+$core->addBehavior('publicHeadContent',array('tplDuctileTheme','publicHeadContent'));
+$core->addBehavior('publicInsideFooter',array('tplDuctileTheme','publicInsideFooter'));
+
+# Templates
+$core->tpl->addValue('ductileEntriesList',array('tplDuctileTheme','ductileEntriesList'));
+$core->tpl->addBlock('EntryIfContentIsCut',array('tplDuctileTheme','EntryIfContentIsCut'));
+$core->tpl->addValue('ductileNbEntryPerPage',array('tplDuctileTheme','ductileNbEntryPerPage'));
+
+class tplDuctileTheme
+{
+	public static function ductileNbEntryPerPage($attr)
+	{
+		global $core;
+
+		$nb = 0;
+		$s = $core->blog->settings->themes->get($core->blog->settings->system->theme.'_entries_counts');
+		if ($s !== null) {
+			$s = @unserialize($s);
+			if (is_array($s)) {
+				if (isset($s[$core->url->type])) {
+					// Nb de billets par page défini par la config du thème
+					$nb = (integer) $s[$core->url->type];
+				} else {
+					if (($core->url->type == 'default-page') && (isset($s['default']))) {
+						// Les pages 2 et suivantes de la home ont le même nombre de billet que la première page
+						$nb = (integer) $s['default'];
+					}
+				}
+			}
+		}
+
+		if ($nb == 0) {
+			if (!empty($attr['nb'])) {
+				// Nb de billets par page défini par défaut dans le template
+				$nb = (integer) $attr['nb'];
+			}
+		}
+
+		if ($nb > 0)
+			return '<?php $_ctx->nb_entry_per_page = '.$nb.' ; ?>';
+	}
+	
+	public static function EntryIfContentIsCut($attr,$content)
+	{
+		global $core;
+		
+		if (empty($attr['cut_string']) || empty($attr['full'])) {
+			return '';
+		}
+		
+		$urls = '0';
+		if (!empty($attr['absolute_urls'])) {
+			$urls = '1';
+		}
+		
+		$short = $core->tpl->getFilters($attr);
+		$attr['cut_string'] = 0;
+		$full = $core->tpl->getFilters($attr);
+
+		return '<?php if (strlen('.sprintf($full,'$_ctx->posts->getContent('.$urls.')').') > '.
+			'strlen('.sprintf($short,'$_ctx->posts->getContent('.$urls.')').')) : ?>'.
+			$content.
+			'<?php endif; ?>';
+	}	
+	
+	public static function ductileEntriesList($attr)
+	{
+		global $core;
+		$default = isset($attr['default']) ? trim($attr['default']) : 'short';
+
+		$model = '';
+		$s = $core->blog->settings->themes->get($core->blog->settings->system->theme.'_entries_lists');
+		if ($s !== null) {
+			$s = @unserialize($s);
+			if (is_array($s)) {
+				if (isset($s[$core->url->type])) {
+					$model = $s[$core->url->type];
+				}
+			}
+		}
+
+		$local_attr = array('src' => '_entry-'.($model ? $model : $default).'.html');
+		return $core->tpl->includeFile($local_attr);
+	}
+
+	public static function publicInsideFooter($core)
+	{
+		$res = '';
+		$default = false;
+		$img_url = $core->blog->settings->system->themes_url.'/'.$core->blog->settings->system->theme.'/img/';
+
+		$s = $core->blog->settings->themes->get($core->blog->settings->system->theme.'_stickers');
+
+		if ($s === null) {
+			$default = true;
+		} else {
+			$s = @unserialize($s);
+			if (!is_array($s)) {
+				$default = true;
+			} else {
+				$s = array_filter($s,"tplDuctileTheme::cleanStickers");
+				if (count($s) == 0) {
+					$default = true;
+				} else {
+					$count = 1;
+					foreach ($s as $sticker) {
+						$res .= self::setSticker($count,($count == count($s)),$sticker['label'],$sticker['url'],$img_url.$sticker['image']);
+						$count++;
+					}
+				}
+			}
+		}
+
+		if ($default || $res == '') {
+			$res = self::setSticker(1,true,__('Feed'),$core->blog->url.$core->url->getBase('feed').'/atom',$img_url.'sticker-feed.png');
+		}
+
+		if ($res != '') {
+			$res = '<ul id="stickers">'."\n".$res.'</ul>'."\n";
+			echo $res;
+		}
+	}
+	
+	protected static function cleanStickers($s)
+	{
+		if (is_array($s)) {
+			if (isset($s['label']) && isset($s['url']) && isset($s['image'])) {
+				if ($s['label'] != null && $s['url'] != null && $s['image'] != null) {
+					return true;
+				}
+			}
+		}
+		return false;
+	}
+	
+	protected static function setSticker($position,$last,$label,$url,$image)
+	{
+		return '<li id="sticker'.$position.'"'.($last ? ' class="last"' : '').'>'."\n".
+			'<a href="'.$url.'">'."\n".
+			'<img alt="" src="'.$image.'" />'."\n".
+			'<span>'.$label.'</span>'."\n".
+			'</a>'."\n".
+			'</li>'."\n";
+	}
+
+	public static function publicHeadContent($core)
+	{
+		echo 
+			'<style type="text/css">'."\n".
+			'/* '.__('Additionnal style directives').' */'."\n".
+			self::ductileStyleHelper().
+			"</style>\n";
+			
+		echo
+			'<script type="text/javascript" src="'.
+			$core->blog->settings->system->themes_url.'/'.$core->blog->settings->system->theme.
+			'/ductile.js"></script>'."\n";
+	}
+	
+	public static function ductileStyleHelper()
+	{
+		$s = $GLOBALS['core']->blog->settings->themes->get($GLOBALS['core']->blog->settings->system->theme.'_style');
+
+		if ($s === null) {
+			return;
+		}
+
+		$s = @unserialize($s);
+		if (!is_array($s)) {
+			return;
+		}
+
+		$css = array();
+
+		# Properties
+		
+		# Blog description
+		$selectors = '#blogdesc';
+		if (isset($s['subtitle_hidden'])) self::prop($css,$selectors,'display',($s['subtitle_hidden'] ? 'none' : null));
+
+		# Main font
+		$selectors = 'body, #supranav li a span, #comments.me, a.comment-number';
+		if (isset($s['body_font'])) self::prop($css,$selectors,'font-family',self::fontDef($s['body_font']));
+
+		# Secondary font
+		$selectors = '#blogdesc, #supranav, #content-info, #subcategories, #comments-feed, #sidebar h2, #sidebar h3, #footer p';
+		if (isset($s['alternate_font'])) self::prop($css,$selectors,'font-family',self::fontDef($s['alternate_font']));
+		
+		# Inside posts links font weight
+		$selectors = '.post-excerpt a, .post-content a';
+		if (isset($s['post_link_w'])) self::prop($css,$selectors,'font-weight',($s['post_link_w'] ? 'bold' : 'normal'));
+
+		# Inside posts links colors (normal, visited)
+		$selectors = '.post-excerpt a:link, .post-excerpt a:visited, .post-content a:link, .post-content a:visited';
+		if (isset($s['post_link_v_c'])) self::prop($css,$selectors,'color',$s['post_link_v_c']);
+
+		# Inside posts links colors (hover, active, focus)
+		$selectors = '.post-excerpt a:hover, .post-excerpt a:active, .post-excerpt a:focus, .post-content a:hover, .post-content a:active, .post-content a:focus';
+		if (isset($s['post_link_f_c'])) self::prop($css,$selectors,'color',$s['post_link_f_c']);
+
+		# Style directives
+		$res = '';
+		foreach ($css as $selector => $values) {
+			$res .= $selector." {\n";
+			foreach ($values as $k => $v) {
+				$res .= $k.':'.$v.";\n";
+			}
+			$res .= "}\n";
+		}
+
+		# Large screens
+		$css_large = array();
+
+		# Blog title font weight
+		$selectors = 'h1, h1 a:link, h1 a:visited, h1 a:hover, h1 a:visited, h1 a:focus';
+		if (isset($s['blog_title_w'])) self::prop($css_large,$selectors,'font-weight',($s['blog_title_w'] ? 'bold' : 'normal'));
+		
+		# Blog title font size
+		$selectors = 'h1';
+		if (isset($s['blog_title_s'])) self::prop($css_large,$selectors,'font-size',$s['blog_title_s']);
+		
+		# Blog title color
+		$selectors = 'h1 a:link, h1 a:visited, h1 a:hover, h1 a:visited, h1 a:focus';
+		if (isset($s['blog_title_c'])) self::prop($css_large,$selectors,'color',$s['blog_title_c']);
+
+		# Post title font weight
+		$selectors = 'h2.post-title, h2.post-title a:link, h2.post-title a:visited, h2.post-title a:hover, h2.post-title a:visited, h2.post-title a:focus';
+		if (isset($s['post_title_w'])) self::prop($css_large,$selectors,'font-weight',($s['post_title_w'] ? 'bold' : 'normal'));
+		
+		# Post title font size
+		$selectors = 'h2.post-title';
+		if (isset($s['post_title_s'])) self::prop($css_large,$selectors,'font-size',$s['post_title_s']);
+		
+		# Post title color
+		$selectors = 'h2.post-title a:link, h2.post-title a:visited, h2.post-title a:hover, h2.post-title a:visited, h2.post-title a:focus';
+		if (isset($s['post_title_c'])) self::prop($css_large,$selectors,'color',$s['post_title_c']);
+
+		# Simple title color (title without link)
+		$selectors = '#content-info h2, .post-title, .post h3, .post h4, .post h5, .post h6, .arch-block h3';
+		if (isset($s['post_simple_title_c'])) self::prop($css_large,$selectors,'color',$s['post_simple_title_c']);
+
+		# Style directives for large screens
+		if (count($css_large)) {
+			$res .= '@media only screen and (min-width: 481px) {'."\n";
+			foreach ($css_large as $selector => $values) {
+				$res .= $selector." {\n";
+				foreach ($values as $k => $v) {
+					$res .= $k.':'.$v.";\n";
+				}
+				$res .= "}\n";
+			}
+			$res .= "}\n";
+		}
+
+		# Small screens
+		$css_small = array();
+
+		# Blog title font weight
+		$selectors = 'h1, h1 a:link, h1 a:visited, h1 a:hover, h1 a:visited, h1 a:focus';
+		if (isset($s['blog_title_w_m'])) self::prop($css_small,$selectors,'font-weight',($s['blog_title_w_m'] ? 'bold' : 'normal'));
+		
+		# Blog title font size
+		$selectors = 'h1';
+		if (isset($s['blog_title_s_m'])) self::prop($css_small,$selectors,'font-size',$s['blog_title_s_m']);
+		
+		# Blog title color
+		$selectors = 'h1 a:link, h1 a:visited, h1 a:hover, h1 a:visited, h1 a:focus';
+		if (isset($s['blog_title_c_m'])) self::prop($css_small,$selectors,'color',$s['blog_title_c_m']);
+
+		# Post title font weight
+		$selectors = 'h2.post-title, h2.post-title a:link, h2.post-title a:visited, h2.post-title a:hover, h2.post-title a:visited, h2.post-title a:focus';
+		if (isset($s['post_title_w_m'])) self::prop($css_small,$selectors,'font-weight',($s['post_title_w_m'] ? 'bold' : 'normal'));
+		
+		# Post title font size
+		$selectors = 'h2.post-title';
+		if (isset($s['post_title_s_m'])) self::prop($css_small,$selectors,'font-size',$s['post_title_s_m']);
+		
+		# Post title color
+		$selectors = 'h2.post-title a:link, h2.post-title a:visited, h2.post-title a:hover, h2.post-title a:visited, h2.post-title a:focus';
+		if (isset($s['post_title_c_m'])) self::prop($css_small,$selectors,'color',$s['post_title_c_m']);
+
+		# Style directives for small screens
+		if (count($css_small)) {
+			$res .= '@media only screen and (max-width: 480px) {'."\n";
+			foreach ($css_small as $selector => $values) {
+				$res .= $selector." {\n";
+				foreach ($values as $k => $v) {
+					$res .= $k.':'.$v.";\n";
+				}
+				$res .= "}\n";
+			}
+			$res .= "}\n";
+		}
+		
+		return $res;
+	}
+
+	protected static $fonts = array(
+		// Theme standard
+		'Ductile body' => '"Century Schoolbook", "Century Schoolbook L", Georgia, serif',
+		'Ductile alternate' => '"Franklin gothic medium", "arial narrow", "DejaVu Sans Condensed", "helvetica neue", helvetica, sans-serif',
+
+		// Serif families
+		'Times New Roman' => 'Cambria, "Hoefler Text", Utopia, "Liberation Serif", "Nimbus Roman No9 L Regular", Times, "Times New Roman", serif',
+		'Georgia' => 'Constantia, "Lucida Bright", Lucidabright, "Lucida Serif", Lucida, "DejaVu Serif," "Bitstream Vera Serif", "Liberation Serif", Georgia, serif',
+		'Garamond' => '"Palatino Linotype", Palatino, Palladio, "URW Palladio L", "Book Antiqua", Baskerville, "Bookman Old Style", "Bitstream Charter", "Nimbus Roman No9 L", Garamond, "Apple Garamond", "ITC Garamond Narrow", "New Century Schoolbook", "Century Schoolbook", "Century Schoolbook L", Georgia, serif',
+
+		// Sans-serif families
+		'Helvetica/Arial' => 'Frutiger, "Frutiger Linotype", Univers, Calibri, "Gill Sans", "Gill Sans MT", "Myriad Pro", Myriad, "DejaVu Sans Condensed", "Liberation Sans", "Nimbus Sans L", Tahoma, Geneva, "Helvetica Neue", Helvetica, Arial, sans-serif',
+		'Verdana' => 'Corbel, "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", "DejaVu Sans", "Bitstream Vera Sans", "Liberation Sans", Verdana, "Verdana Ref", sans-serif',
+		'Trebuchet MS' => '"Segoe UI", Candara, "Bitstream Vera Sans", "DejaVu Sans", "Bitstream Vera Sans", "Trebuchet MS", Verdana, "Verdana Ref", sans-serif',
+
+		// Cursive families
+		'Impact' => 'Impact, Haettenschweiler, "Franklin Gothic Bold", Charcoal, "Helvetica Inserat", "Bitstream Vera Sans Bold", "Arial Black", sans-serif',
+
+		// Monospace families
+		'Monospace' => 'Consolas, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", Monaco, "Courier New", Courier, monospace'
+	);
+
+	protected static function fontDef($c)
+	{
+		return isset(self::$fonts[$c]) ? self::$fonts[$c] : null;
+	}
+
+	protected static function prop(&$css,$selector,$prop,$value)
+	{
+		if ($value) {
+			$css[$selector][$prop] = $value;
+		}
+	}
+}
+?>
Index: themes/ductile/ductile.js
===================================================================
--- themes/ductile/ductile.js	(revision 592)
+++ themes/ductile/ductile.js	(revision 592)
@@ -0,0 +1,77 @@
+$(function() {
+	var create_name = function(text) {
+
+		// Convert text to lower case.
+		var name = text.toLowerCase();
+
+		// Remove leading and trailing spaces, and any non-alphanumeric
+		// characters except for ampersands, spaces and dashes.
+		name = name.replace(/^\s+|\s+$|[^a-z0-9&\s-]/g, '');
+
+		// Replace '&' with 'and'.
+		name = name.replace(/&/g, 'and');
+
+		// Replaces spaces with dashes.
+		name = name.replace(/\s/g, '-');
+
+		// Squash any duplicate dashes.
+		name = name.replace(/(-)+\1/g, "$1");
+
+		return name;
+	};
+
+	var add_link = function() {
+
+		// Convert the h2 element text into a value that
+		// is safe to use in a name attribute.
+		var name = create_name($(this).text());
+
+		// Create a name attribute in the following sibling
+		// to act as a fragment anchor.
+		$(this).next().attr('name', name);
+
+		// Replace the h2.toggle element with a link to the
+		// fragment anchor.  Use the h2 text to create the
+		// link title attribute.
+		$(this).html(
+			'<a href="#' + name + '" title="Reveal ' +
+			$(this).text() + ' content">' +
+			$(this).html() + '</a>');
+	};
+
+	var toggle = function(event) {
+		event.preventDefault();
+
+		// Toggle the 'expanded' class of the h2.toggle
+		// element, then apply the slideToggle effect
+		// to all siblings.
+		$(this).toggleClass('expanded').
+			nextAll().slideToggle('fast');
+	};
+
+	var remove_focus = function() {
+	  // Use the blur() method to remove focus.
+	  $(this).blur();
+	};
+
+	$(document).ready (function () {
+		if ($(window).width() < 1024) {
+
+			// Set toggle class to each #sidebar h2
+			$("#sidebar div div h2").addClass('toggle');
+			
+			// Hide all h2.toggle siblings
+			$('#sidebar div div h2').nextAll().hide();
+
+			// Add a link to each h2.toggle element.
+			$('h2.toggle').each(add_link);
+
+			// Add a click event handler to all h2.toggle elements.
+			$('h2.toggle').click(toggle);
+
+			// Remove the focus from the link tag when accessed with a mouse.
+			$('h2.toggle a').mouseup(remove_focus);
+		}
+	})
+
+});
Index: themes/ductile/locales/fr/admin.po
===================================================================
--- themes/ductile/locales/fr/admin.po	(revision 515)
+++ themes/ductile/locales/fr/admin.po	(revision 515)
@@ -0,0 +1,86 @@
+msgid "Theme configuration upgraded."
+msgstr "Configuration du thème mise à jour."
+
+msgid "Content"
+msgstr "Contenu"
+
+msgid "Header"
+msgstr "Entête"
+
+msgid "Hide blog description:"
+msgstr "Cacher la description du blog :"
+
+msgid "Presentation"
+msgstr "Présentation"
+
+msgid "General settings"
+msgstr "Paramètres généraux"
+
+msgid "Mobile specific settings"
+msgstr "Paramètres spécifiques pour les mobiles"
+
+msgid "Blog title"
+msgstr "Titre du blog"
+
+msgid "In bold:"
+msgstr "En gras :"
+
+msgid "Font size (in em by default):"
+msgstr "Taille de police (en em par défaut) :"
+
+msgid "Color:"
+msgstr "Couleur :"
+
+msgid "Post title"
+msgstr "Titre des billets"
+
+msgid "Titles without link"
+msgstr "Titres sans lien"
+
+msgid "Inside posts links"
+msgstr "Liens dans les billets"
+
+msgid "Normal and visited links color:"
+msgstr "Couleur des liens normaux et visités :"
+
+msgid "Active, hover and focus links color:"
+msgstr "Couleur des liens actifs, survolés et ayant le focus :"
+
+msgid "Fonts"
+msgstr "Polices de caractère"
+
+msgid "Main:"
+msgstr "Principale :"
+
+msgid "Secondary:"
+msgstr "Secondaire :"
+
+msgid "Ductile primary"
+msgstr "Principale de Ductile"
+
+msgid "Ductile secondary"
+msgstr "Secondaire de Ductile"
+
+msgid "Times New Roman"
+msgstr "Times New Roman"
+
+msgid "Georgia"
+msgstr "Georgia"
+
+msgid "Garamond"
+msgstr "Garamond"
+
+msgid "Helvetica/Arial"
+msgstr "Helvetica/Arial"
+
+msgid "Verdana"
+msgstr "Verdana"
+
+msgid "Trebuchet MS"
+msgstr "Trebuchet MS"
+
+msgid "Impact"
+msgstr "Impact"
+
+msgid "Monospace"
+msgstr "Monospace"
Index: themes/ductile/locales/fr/main.po
===================================================================
--- themes/ductile/locales/fr/main.po	(revision 421)
+++ themes/ductile/locales/fr/main.po	(revision 421)
@@ -0,0 +1,2 @@
+msgid "Additionnal style directives"
+msgstr "Directives CSS supplémentaires"
Index: themes/ductile/mediaqueries.css
===================================================================
--- themes/ductile/mediaqueries.css	(revision 549)
+++ themes/ductile/mediaqueries.css	(revision 549)
@@ -0,0 +1,336 @@
+@charset "UTF-8";
+
+/* seuils retenus :
+< 480px: tout en une colonne, sidebar et stickers en bas
+> 480px: stickers en haut
+> 640px: sidebar toujours en bas mais divisé en deux colonnes
+> 1024px: passage à deux colonnes, sidebar à droite
+> 1280px: décalage du post-info vers la gauche
+> 1600px: marges plus grandes */
+
+/* --------------------------------------------------------------------
+	Moins de 480px (téléphones)
+-------------------------------------------------------------------- */
+@media only screen and (max-width:480px) {
+	.nosmall {
+		display: none !important;
+		}
+	h1 {
+		font-size: 1.8em;
+		}
+	h1 a {
+		display: block;
+		padding: 6px 8px;
+		background: #f4f4f5;
+		background: -webkit-gradient(linear, left top, left bottom, from(#f4f4f5), to(#d7d7dC));
+		background: -moz-linear-gradient(top,  #f4f4f5,  #d7d7dC);
+		border-right: 1px solid #aaa;
+		border-bottom: 1px solid #ccc;
+		}
+	.supranav, #prelude {
+		border:none;
+		margin: 8px 0 0;
+		background: #fff;
+		}
+	.supranav li a, #prelude li a {
+		border-right: 0;
+		display: block;
+		padding: 4px 8px;
+		border-bottom: 1px solid #ccc;
+		text-decoration: none;
+		white-space: nowrap;
+		margin-bottom: 4px;
+		-webkit-border-bottom-left-radius: 7px;
+		-moz-border-radius-bottomleft: 7px;
+		border-bottom-left-radius: 7px;
+		}
+	#gotop li {
+		text-transform: none;
+		}
+	#prelude li a {
+		background: transparent url(img/menumobile.png) no-repeat right center;
+		 }
+	#sn-bottom li a {
+		background: transparent url(img/menumobile.png) no-repeat right top;
+		}
+	#gotop li a {
+		background: transparent url(img/menumobile.png) no-repeat right -150px;
+		}
+	.post-title {
+		font-size: 1.5em;
+		font-weight: bold;
+		font-family: "Franklin gothic medium","arial narrow","DejaVu Sans Condensed","helvetica neue",helvetica,sans-serif;
+		}
+	.post-title a {
+		font-style: normal;
+		font-weight: bold;
+		}
+	#stickers {
+		margin: 0;
+		padding: 0;
+		border-bottom: 8px solid #fff;
+		}
+	#stickers li {
+		position: relative;
+		padding: .5em 0;
+		margin-left: 0;
+		border-style: solid;
+		border-color: #fff;
+		border-width: 2px 6px;
+		overflow: hidden;
+		}
+	#stickers img {
+		position: absolute;
+		top: -2px;
+		clip: rect(0 32px 36px 0);
+		clip: rect(0, 32px, 36px, 0);
+		}
+	#stickers span {
+		margin-left: 40px;
+		}
+	#stickers a {
+		text-decoration: none;
+		}
+}
+
+/* --------------------------------------------------------------------
+	Autres (plus de 480px)
+-------------------------------------------------------------------- */
+
+@media only screen and (min-width: 481px) {
+	.nobig {
+		display: none;
+		}
+	#prelude {
+		position: absolute;
+		margin: 0;
+		top: 0;
+		left: 3px;
+		color: #fff;
+		font-size: .875em;
+		list-style-type: none;
+		}
+	#prelude li {
+		display: inline;
+		text-transform: none !important;
+		}
+	#prelude a, #prelude a:hover, #prelude a:visited {
+		position:absolute;
+		left:0;
+		top:-500px;
+		width:1px;
+		height:1px;
+		overflow:hidden;
+		background-image: none !important;
+		}
+	#prelude a:active, #prelude a:focus {
+		position:static;
+		width:auto;
+		height:auto;
+		}
+	#top {
+		padding-top: 24px;
+		}
+	h1 {
+		font-size: 2em;
+		padding-right: 240px;
+		padding-bottom: 4px;
+		margin-left: 32px;
+		}
+	#sn-bottom {
+		display: none;
+		}
+	.supranav {
+		margin: 36px 0 0;
+		border-bottom: 1px solid #ccc;
+		}
+	.supranav li {
+		display: inline;
+		padding: 8px 0;
+		}
+	.supranav li a {
+		display: inline-block;
+		padding: 8px 32px 8px 28px;
+		border-right: 1px solid #ccc;
+		min-height: 2.5em;
+	 	}
+	.supranav li a span {
+		display: block;
+		}
+	.post-title {
+		font-size: 2.5em;
+		font-weight: normal;
+		}
+	.post-title a {
+		font-style: italic;
+		font-weight: normal;
+		}
+	#stickers {
+		position: absolute;
+		top: 0;
+		right: 0;
+		padding-right: 3%;
+		font-size: .75em;
+		}
+	#stickers li {
+		display: block;
+		float: right;
+		text-align: center;
+		width: 60px;
+		padding: 0;
+		}
+	#stickers li span {
+		display: block;
+		text-align: center;
+		}
+	#stickers li a:hover,
+	#stickers li a:active,
+	#stickers li a:focus {
+		background-color: #fff;
+		}
+	#stickers a:hover, #stickers a:focus {
+		color: #666;
+		background: #fff;
+		}
+}
+
+/* ------------------------------------------------------ special redimensionnement paysage */
+@media screen and (max-width:640px) and (orientation: landscape) { 
+  body { 
+   -webkit-text-size-adjust: 70%; 
+  } 
+}
+
+/* ------------------------------------------------------ règles communes > 640px */
+@media only screen and (max-width:639px) {
+	body {
+		-webkit-text-size-adjust: none;
+		}
+	#wrapper {
+		padding: 0 2%;
+		}
+	img {
+		max-width: 100%;
+		height: auto;
+		width: auto\9; /* pour ie8 */
+		}
+}
+
+/* ------------------------------------------------------ spécifique 640px à 1024px */
+@media only screen and (min-width: 640px) and (max-width: 1023px) {
+	#wrapper {
+		padding: 0 10%;
+		}
+	#blognav, #blogextra { 
+		width: 48%; float:left;
+		}
+	#blognav {
+		margin-right: 4%;
+		}
+	#stickers {
+		padding-right: 10%;
+		}
+}
+
+/* ------------------------------------------------------ spécifique 840px à 1024px */
+@media only screen and (min-width: 840px) and (max-width: 1023px) {
+	#wrapper {
+		padding: 0 13%;
+		}
+	#stickers {
+		padding-right: 13%;
+		}	
+}
+
+/* ------------------------------------------------------ 
+	au-delà de 1024px on passe à deux colonnes
+------------------------------------------------------ */
+@media only screen and (min-width: 1024px) {
+	#wrapper {
+		padding: 0 7%;
+		}
+	#main {
+		width : 100%;
+		margin : 0 -17em 0 0;
+		float : left;
+		display: inline;
+		}
+	#content {
+		margin : 0 20em 0 0;
+		padding : 0 0 2em 0;
+		}
+	#sidebar {
+		width : 17em;
+		float : right;
+		}
+	#blognav, #blogextra {
+		margin : 0;
+		}
+	#stickers {
+		padding-right: 7%;
+		}
+	#sidebar #blognav div:first-child {
+		margin-top: 4.66em;
+		}
+	#sidebar div#search:first-child { 
+		background: none;
+		margin-top: 0;
+		margin-bottom: 2em;
+		padding-bottom: 2px;
+		font-size: 1em;
+		border: 1px solid #ddd;
+		border-top: none 0;
+		}
+	#sidebar div#search:first-child h2 {
+		font-size: 1em;
+		text-transform: uppercase;
+		text-shadow: 0 1px 1px rgba(0,0,0,.2);
+		vertical-align: top;
+		color: #666;
+		}
+	#sidebar div#search:first-child p {
+		margin: .33em 0;
+		}
+	.dc-archive #content {
+		margin: 0 17em 0 0;
+		}
+}
+
+/* ------------------------------------------------------ 
+	au-delà de 1280px on décale le post-info à gauche
+------------------------------------------------------- */
+@media only screen and (min-width: 1280px) {
+	#content {
+		margin : 0 20em 0 220px;
+		}
+	.full .post-attr,
+	.dc-post .post-attr {
+		margin-left: -220px;
+		margin-top: 0; 
+		float: left; 
+		width: 180px; 
+		text-align: right;
+		}
+	.post-attr a, .post-info, .post-tags {
+		padding-right: 0 !important;
+		}
+	#content-info, .navlinks, .pagination {
+		margin-left: -220px !important;
+	}
+	.dc-archive #content-info {
+		margin-left: 0 !important;
+	}
+	#content-info a.feed { 
+		white-space: nowrap;
+		}
+}
+
+/* ------------------------------------------------------ au-delà de 1600px */
+@media only screen and (min-width: 1600px) {
+	#wrapper {
+		padding: 0 10%;
+		}
+	#stickers {
+		padding-right: 10%;
+		}
+}
Index: themes/ductile/rebase.css
===================================================================
--- themes/ductile/rebase.css	(revision 308)
+++ themes/ductile/rebase.css	(revision 308)
@@ -0,0 +1,99 @@
+@charset "UTF-8";
+
+html, 
+body {
+	margin: 0;
+	padding: 0;
+	font-size: 100.1%;
+	line-height: 1.5;
+	}
+div, form, fieldset {
+	margin: 0;
+	padding: 0;
+	border: none;
+	}
+h2, h3, h4, h5, h6 {
+	line-height: 1.2;
+	font-weight: bold;
+	margin: 1em 0 .5em 0;
+	}
+h1 {
+	margin: 0;
+	font-weight: normal;
+	}
+h2 {
+	font-size: 1.6em;
+	}
+h3 {
+	font-size: 1.33em;
+	}
+h4 {
+	font-size: 1.2em;
+	}
+h5 {
+	font-size: 1.1em;
+	}
+h6 {
+	font-size: 1.5em;
+	}
+p {
+	margin: 1em 0 .5em 0;
+	}
+img a {
+	border: none;
+	}
+sup, sub {
+	font-size: .7em;
+	line-height: .7em;
+	}
+abbr, acronym {
+	border-bottom: 1px dotted;
+	cursor: help;
+	}
+strong {
+	font-size: .94em;
+	}
+blockquote, q {
+	font-style: italic;
+	}
+blockquote em, q em {
+	font-style: normal;
+	}
+cite {
+	font-size: .9em;
+	}
+ul, ol, dd {
+	margin: 1em 0 .5em 1.5em;
+	}
+ul ul, ol ol {
+	margin-top: .5em;
+	}
+code, pre {
+	font-family: "Andale mono","Courier New", Courier, mono;
+	font-size: .875em;
+	}
+code {
+	padding: 0 2px;
+	}
+pre {
+	margin: 1em;
+	overflow: auto;
+	padding: 1px .5em;
+	line-height: 1.2;
+	}
+hr {
+	height: 1px;
+	border: 0;
+	border-top: 1px solid #aaa;
+	width: 60%;
+	height: 1px;
+	}
+input, button, select {
+	vertical-align: middle;
+	}
+em, i {
+	font-style: italic;
+	}
+strong, b {
+	font-weight: bold;
+	}
Index: themes/ductile/style.css
===================================================================
--- themes/ductile/style.css	(revision 592)
+++ themes/ductile/style.css	(revision 592)
@@ -0,0 +1,862 @@
+@charset "UTF-8";
+
+/* Ductile
+	Dotclear theme by Dotclear Team
+	Version de chantier
+*/
+
+/* Infos
+Plan de cette feuille :
+1. Structure, imports
+2. Liens, html
+3. Page
+4. Haut de page
+5. Wrapper, main, content
+6. Billets
+7. Commentaires et rétroliens
+8. Sidebar
+9. Footer
+10. Classes communes
+11. Pages spécifiques
+12. Clearers
+
+Couleurs :
+Typo: #222 courant, #4c4c85 commentaires
+Titres non cliquables: #14709e
+Liens: #666 courant, #ad3f4c titre billet et Lire la suite
+Fond formulaire comm: #eef
+Fond sidebar: #ededed
+
+Thanks to:
+Colorzilla wysiwyg gradient editor http://www.colorzilla.com/gradient-editor/
+*/
+
+/* -----------------------------------------------------------------
+	1. STRUCTURE - IMPORTS
+------------------------------------------------------------------ */
+
+@import url(rebase.css);
+@import url(mediaqueries.css);
+
+/* ------------------------------------------------------- body */
+body {
+	background: #fff;
+	font-family: "Century Schoolbook", "Century Schoolbook L", Georgia, serif;
+	color: #222;
+	}
+
+/* ------------------------------------------------------------
+	2. LIENS & Complément balises HTML
+------------------------------------------------------------- */
+del {
+	color: #800000;
+	}
+blockquote {
+	border: 2px solid #eef;
+	padding: 1px 1em .5em;
+	}
+code, pre {
+	background: #efefef;
+	border-right: 1px solid #aaa;
+	border-bottom: 1px solid #aaa;
+	font-size: .81em;
+	}
+
+a {
+	color: #666;
+	}
+a:hover, a:focus {
+	background-color: #ebebee;
+	text-decoration: none;
+	}
+
+/* ------------------------------------------------------------
+	3. PAGE
+------------------------------------------------------------- */
+
+#page {
+	position: relative;
+	}
+
+/* ------------------------------------------------------------
+	4. HAUT DE PAGE
+------------------------------------------------------------- */
+#header {
+	text-shadow: 0 1px 1px rgba(0,0,0,.2);
+	line-height: 1;
+	}
+h1 {
+	font-variant: small-caps;
+	}
+h1 a {
+	text-decoration: none;
+	color: #333;
+	}
+#blogdesc {
+	margin: 0 0 0 32px;
+	font-family: "Franklin gothic medium","arial narrow","DejaVu Sans Condensed","helvetica neue",helvetica,sans-serif;
+	font-style: italic;
+	color: #888;
+	text-shadow: none;
+	}
+.supranav, #prelude {
+	font-family: "Franklin gothic medium","arial narrow","DejaVu Sans Condensed","helvetica neue",helvetica,sans-serif;
+	padding: 0 0 0 4px;
+	list-style-type: none;
+	line-height: 1.25;
+	font-size: .875em;
+	}
+.supranav li, #prelude li {
+	text-transform: uppercase;
+	vertical-align: top;
+	}
+.supranav li a {
+	text-decoration: none;
+	white-space: nowrap;
+	margin-bottom: 4px;
+	-webkit-border-bottom-left-radius: 7px;
+	-moz-border-radius-bottomleft: 7px;
+	border-bottom-left-radius: 7px;	
+	background: transparent url(img/menu.png) no-repeat right top;
+ }
+.supranav li a:hover, 
+.supranav li a:active, 
+.supranav li a:focus {
+	background-color: #ebebee;
+	background-position: right -150px;
+	}
+.supranav li.active a {
+	background-position: right -150px;
+	}
+.supranav li a span {
+	display: block;
+	text-transform: none;
+	text-shadow: none;
+	font-family: georgia;
+	font-style:italic;
+	}
+
+/* ------------------------------------------------------------
+	5. WRAPPER MAIN CONTENT
+------------------------------------------------------------- */
+
+#wrapper { clear:both; }
+#main { }
+#content { 
+	padding-bottom: 2em; 
+	}
+
+/* ------------------------------------------------------- content-info */
+#content-info {
+	margin-top: 2em;
+	font-size: .875em;
+	font-family: "Franklin gothic medium","arial narrow","DejaVu Sans Condensed","helvetica neue",helvetica,sans-serif;
+	}
+#content-info h2 { 
+	font-size: 1.2em;
+	color: #14709e;
+	}
+#subcategories {
+	font-size: .875em;
+	font-family: "Franklin gothic medium","arial narrow","DejaVu Sans Condensed","helvetica neue",helvetica,sans-serif;
+	}
+#subcategories h3 { 
+	font-size: 1.1em;
+	font-variant: small-caps;
+	}
+#subcategories li {
+	margin: 0;
+	}
+#content-info p, 
+#content-info ul, 
+#subcategories ul { 
+	margin: .5em 0;
+	padding: 0;
+	list-style-type: none;
+	}
+
+/* ------------------------------------------------------- pagination, navlinks */
+#navlinks,
+.navlinks, 
+.pagination {
+	margin: 2em 0 1em 0;
+	padding: 4px 8px;
+	text-align: center;
+	font-size: .875em;
+	color: #000;
+	background: rgb(244,244,245);
+	background: -moz-linear-gradient(top, rgba(244,244,245,1) 0%, rgba(215,215,220,1) 100%);
+	background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(244,244,245,1)), color-stop(100%,rgba(215,215,220,1)));
+	background: -webkit-linear-gradient(top, rgba(244,244,245,1) 0%,rgba(215,215,220,1) 100%);
+	background: -o-linear-gradient(top, rgba(244,244,245,1) 0%,rgba(215,215,220,1) 100%);
+	background: -ms-linear-gradient(top, rgba(244,244,245,1) 0%,rgba(215,215,220,1) 100%);
+	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f4f4f5', endColorstr='#d7d7dc',GradientType=0 );
+	background: linear-gradient(top, rgba(244,244,245,1) 0%,rgba(215,215,220,1) 100%);
+	-moz-border-radius: 4px;
+	-webkit-border-radius: 4px;
+	border-radius: 4px;
+	border-right: 1px solid #aaa;
+	border-bottom: 1px solid #ccc;
+	}
+#navlinks,
+.navlinks {
+	margin-top: 4em;
+	}
+#navlinks a,
+.navlinks a, 
+.pagination a {
+	padding: 0 1em;
+	white-space: nowrap;
+	}
+
+/* ------------------------------------------------------------
+	6. BILLETS
+------------------------------------------------------------- */
+
+.post {
+	background: transparent url(img/filet.png) repeat-x left bottom;
+	}
+.day-date {
+	display: none;
+	}
+.post-title {
+	margin-bottom: .33em;
+	color: #14709e;
+	line-height: 1.17;
+	}
+.post-title a {
+	text-decoration: none;
+	color: #ad3f4c;
+	}
+.post h3, 
+.post h4, 
+.post h5,
+.post h6 {
+	font-variant: small-caps;
+	font-weight: normal;
+	color: #14709e;
+	}
+.post-info, 
+.post-tags, 
+.post-info-co, 
+.read-it, 
+.page-info {
+	line-height: 1.2;	
+	margin: .33em 0;
+	}
+.post-info, 
+.post-tags {
+	font-size: .875em;
+	margin: 0;
+	background: #fff;
+	display: inline;
+	padding: 0 .66em 0 0;
+	}
+.post-info span + span {
+	padding-left: .5em;
+	}
+.post-breadcrumb-cat a {
+	padding-left: 24px;
+	background: #fff no-repeat left center url(img/breadcrumb-category.png);
+}
+.post-cat a {
+	padding-left: 24px;
+	background: #fff no-repeat left center url(img/category.png);
+	}
+.post-info .post-date {
+	padding-left: 28px;
+	background: #fff no-repeat 6px center url(img/date.png);
+}
+.post-info a, 
+.post-tags a, 
+.post-info-co a {
+	white-space: nowrap;
+	}
+.post-tags a {
+	padding-right: 1em;
+	padding-left: 14px;
+	background: #fff no-repeat left center url(img/tag.png);
+	}
+.post-tags li {
+	display: inline;
+	}
+.post-content {
+	padding-bottom: 9px;
+	}
+.post ul {
+	list-style-type: square;
+	}
+.footnotes {
+	font-size: .875em;
+	}
+.footnotes h4 {
+	font-variant: normal;
+	font-weight: bold;
+}
+.read-it {
+	text-align: right;
+	margin: 0 0 .25em 0;
+	}
+.read-it a {
+	color: #ad3f4c;
+	background: #fff;
+	padding-left: .5em;
+	}
+.post-info-co, 
+.page-info {
+	margin: 0;
+	background: #fff;
+	display: inline;
+	font-size: 0.875em;
+	font-style: italic;
+	padding-right: .5em;
+	}
+.post-info-co a {
+	text-decoration: none;
+	padding-right: 1em;
+	padding-left: 28px;
+	background-color: #fff;
+	background-repeat: no-repeat;
+	background-position: left center;
+	}
+.post-info-co a.comment_count {
+	background-image: url(img/comment.png);
+	}
+.post-info-co a.ping_count {
+	background-image: url(img/ping.png);
+	}
+.post-info-co a.attach_count {
+	background-image: url(img/attach.png);	
+	}
+#attachments {
+	font-size: .875em;
+	border-bottom: 1px solid #999;
+	margin: 0 0 2em;
+	}
+#attachments h3 {
+	font-variant: small-caps;
+	font-weight: normal;
+	color: #666;
+	}
+#attachments ul {
+	list-style-type: none;
+	margin: 0 0 1em;
+	padding: 0;
+	}
+#attachments ul li {
+	padding-left: 24px;
+	background: #fff url(img/download.png) no-repeat;
+	}
+
+/* ------------------------------------------------------------
+	7. COMMENTAIRES, PINGS
+------------------------------------------------------------- */
+
+/* ------------------------------------------------------- commentaires et rétroliens */
+#comments, 
+#pings, 
+#comment-form,
+#comments-feed { 
+	color: #4c4c85;
+	font-family: "Franklin gothic medium","arial narrow","DejaVu Sans Condensed","helvetica neue",helvetica,sans-serif;
+	font-size: .875em;
+	}
+#comment-form {
+	padding: 1em;
+	background: #eef;
+	margin-top: 1em;
+	color: #333;
+	border: 1px solid #ddf;
+	}
+#pr {
+	padding: 1em;
+	border: 1px dashed #4c4c85;
+	margin-bottom: 1em;
+	}
+#comments h3, 
+#pings h3, 
+#pr h3, 
+#comment-form h3 { 
+	margin-top: 2em;
+	color: #666;
+	}
+#comment-form h3 {
+	margin-top: 0;
+	}
+#comments dl { }
+#comments dt { 
+	padding-bottom: .2em;
+	border-bottom: 1px solid #ccc;
+	margin-top: 1.5em;
+	line-height: 1.1;
+	}
+#comments dd { }
+#comments .first { }
+#comments .odd { }
+#comments .me { 
+	font-family: "Century Schoolbook", "Century Schoolbook L", Georgia, serif;
+	color: #333;
+	font-size: 1.14em;
+	}
+.comment-number {
+	font-size: 2em;
+	font-weight: normal;
+	font-style: italic;
+	text-decoration: none;
+	font-family: "Century Schoolbook", "Century Schoolbook L", Georgia, serif;
+	color: #909090;
+	}
+
+#pings dl { }
+#pings dt { 
+	border-bottom: 1px solid #ccc;
+	margin-top: 1.5em;
+	line-height: 1.1;
+	padding-bottom: .2em;
+	}
+#pings dd { }
+#pings .first { }
+#pings .odd { }
+
+#pr dl { }
+#pr dd { }
+
+/* ------------------------------------------------------- formulaire des commentaires */
+#comment-form fieldset { }
+.field { 
+	margin-bottom: 1em;
+	}
+.field label { 
+	display: block;
+	font-size: .875em;
+	color: #666;
+	text-indent: 6px;
+	}
+.field input, 
+.field textarea {
+	display: block;
+	font-size: 100%;
+	border: 1px solid #ccc;
+	text-indent: 4px;
+	background: #fff;
+	-webkit-border-radius: 3px; 
+	-moz-border-radius: 3px;
+	border-radius: 3px;
+	}
+.field textarea { 
+	font-family: sans-serif;
+	padding: .5em 1em;	
+	}
+.field input:focus, 
+.field textarea:focus {
+	background: #fff;
+	}
+#comment-form input[type=submit], 
+#comment-form input[type=reset] {
+	font-size: .875em;
+	display: inline-block;
+	text-transform: capitalize;
+	font-weight: bold;
+	text-align: center;
+	padding: .33em .66em;
+	text-shadow: 0 1px 1px rgba(0,0,0,.3);
+	-webkit-border-radius: 5px; 
+	-moz-border-radius: 5px;
+	border-radius: 5px;
+	border: solid 1px #777;
+	-webkit-box-shadow: 0 1px 2px rgba(0,0,0,.2);
+	-moz-box-shadow: 0 1px 2px rgba(0,0,0,.2);
+	box-shadow: 0 1px 2px rgba(0,0,0,.2);
+	background: rgb(119,119,119);
+	background: -moz-linear-gradient(top, rgba(119,119,119,1) 0%, rgba(85,85,85,1) 100%);
+	background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(119,119,119,1)), color-stop(100%,rgba(85,85,85,1)));
+	background: -webkit-linear-gradient(top, rgba(119,119,119,1) 0%,rgba(85,85,85,1) 100%);
+	background: -o-linear-gradient(top, rgba(119,119,119,1) 0%,rgba(85,85,85,1) 100%);
+	background: -ms-linear-gradient(top, rgba(119,119,119,1) 0%,rgba(85,85,85,1) 100%);
+	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#777777', endColorstr='#555555',GradientType=0 );
+	color: #eee;
+	}
+#comment-form input[type=submit]:hover, #comment-form input[type=submit]:focus,
+#comment-form input[type=reset]:hover, #comment-form input[type=reset]:focus {
+	background: linear-gradient(top, rgba(119,119,119,1) 0%,rgba(85,85,85,1) 100%);
+	background: rgb(85,85,85);
+	background: -moz-linear-gradient(top, rgba(85,85,85,1) 0%, rgba(119,119,119,1) 100%);
+	background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(85,85,85,1)), color-stop(100%,rgba(119,119,119,1)));
+	background: -webkit-linear-gradient(top, rgba(85,85,85,1) 0%,rgba(119,119,119,1) 100%);
+	background: -o-linear-gradient(top, rgba(85,85,85,1) 0%,rgba(119,119,119,1) 100%);
+	background: -ms-linear-gradient(top, rgba(85,85,85,1) 0%,rgba(119,119,119,1) 100%);
+	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#555555', endColorstr='#777777',GradientType=0 );
+	background: linear-gradient(top, rgba(85,85,85,1) 0%,rgba(119,119,119,1) 100%);
+	text-decoration: none;
+	}
+#c_content {
+	width: 95%;
+	padding: 4px;
+	}
+
+.form-help { 
+	margin-top: 0;
+	font-size: .875em;
+	font-style: italic;
+	}
+
+#ping-url { 
+	background: #efefef;
+	border-right: 1px solid #aaa;
+	border-bottom: 1px solid #aaa;
+	font-size: .81em;
+	padding-left: .5em;
+	}
+#comments-feed { 
+	margin-top: 2em; 
+	}
+
+/* ------------------------------------------------------------
+	8. SIDEBAR
+------------------------------------------------------------- */
+
+#sidebar {
+	font-size: 0.875em;
+	}
+#sidebar h2 {
+	font-size: 1.1em;
+	margin: 0;
+	font-weight: normal;
+	font-family: "Franklin gothic medium","arial narrow","DejaVu Sans Condensed","helvetica neue",helvetica,sans-serif;
+	color: #333;
+	}
+#sidebar h2.toggle {
+	background-image: url(img/plus.png);
+	background-repeat: no-repeat;
+	padding-left: 20px;
+}
+#sidebar h2.expanded {
+	background-image: url(img/minus.png);
+}
+#sidebar h2.toggle a {
+	text-decoration: none;
+}
+#sidebar h3 {
+	font-size: 1em;
+	margin-bottom: 0;
+	font-weight: normal;
+	font-family: "Franklin gothic medium","arial narrow","DejaVu Sans Condensed","helvetica neue",helvetica,sans-serif;
+	color: #333;
+	}
+#sidebar ul {
+	margin: .75em 0 .5em 4px;
+	list-style-type: none;
+	padding: 0;
+	}
+#sidebar ul li ul {
+	margin-top: .5em;
+	}
+#sidebar ul li {
+	padding-left: 16px;
+	background: transparent url(img/square.png) no-repeat 0 .5em;
+	}
+#sidebar ul li ul li {
+	background-image: url(img/square2.png);
+	}
+#sidebar ul li ul li ul li {
+	background-image: url(img/square3.png);
+	}
+#sidebar .syndicate ul li {
+	background-image: none;
+	padding-left: 0;
+}
+#blognav > div, 
+#blogextra > div {
+	background: #ededed;
+	margin-bottom: 1em;
+	padding: 4px 8px;
+	-webkit-box-shadow: 2px 2px 4px rgba(0,0,0,.2);
+	-moz-box-shadow: 2px 2px 4px rgba(0,0,0,.2);
+	-o-box-shadow: 2px 2px 4px rgba(0,0,0,.2);
+	box-shadow: 2px 2px 4px rgba(0,0,0,.2);
+	}
+	
+/* ------------------------------------------------------- recherche */
+#search p {
+	background: #fff; 
+	text-align: right;
+	border: 1px solid #ddd;
+	vertical-align: middle;
+	padding: 0;
+	}
+#search input { 
+	margin: 0;
+	border: none;
+	background: transparent;
+	height: auto;
+	line-height: 2em;
+	}
+#q {
+	float: left;
+	width: 78%;
+	font-size: 100%;
+	padding-left: 2px;
+	}
+#q:focus {
+	background: #fcfcf9;
+	}
+#search .submit {
+	background: #706F6F;
+	color: #fff;
+	vertical-align: top;
+	width: 20%;
+	font-variant: small-caps;
+	height: 2em;
+	}
+#search .submit:hover, 
+#search .submit:focus {
+	background: #333;
+	}
+	
+/* ------------------------------------------------------------
+	9. FOOTER
+------------------------------------------------------------- */
+
+#footer {
+	clear: both;
+	background: #686867;
+	color: #fff;
+	}
+#footer p {
+	padding: .66em 2em;
+	margin: 0;
+	text-align: right;
+	font-size: .875em;
+	font-family: "Franklin gothic medium","arial narrow","DejaVu Sans Condensed","helvetica neue",helvetica,sans-serif;
+	}
+#footer a {
+	color: #fff;
+	}
+#footer a:hover, 
+#footer a:focus {
+	background: #686867;
+	}
+#stickers {
+	list-style-type: none;
+	margin: 0;
+	}
+	
+/* ------------------------------------------------------------
+	10. CLASSES COMMUNES
+------------------------------------------------------------- */
+
+/* ------------------------------------------------------- RSS */
+.feed { 
+	padding-left: 20px;
+	background : transparent url(img/feed.png) no-repeat left center;
+	}
+
+/* ------------------------------------------------------- tags */	
+.dc-tags .content-inner, 
+.dc-tags .content-inner ul {
+	font-size: 1.25em;
+	margin: 0;
+	padding: 0;
+	}
+.dc-tags #content ul li, 
+.dc-tags #content ul li a, 
+#sidebar .tags ul li, 
+#sidebar .tags ul li a {
+	display : inline;
+	width : auto;
+	padding-left : 0;
+	padding-right : .5em;
+	background-color : transparent;
+	background-image: none;
+	text-decoration: none;
+	line-height : 1.5em;
+	}
+.tags ul li a:hover {
+	background-image :none;
+	}
+.dc-tags .tag0, .tags .tag0 { font-size: 85%; }
+.dc-tags .tag10, .tags .tag10 { font-size: 90%; }
+.dc-tags .tag20, .tags .tag20 { font-size: 95%; }
+.dc-tags .tag30, .tags .tag30 { font-size: 100%; }
+.dc-tags .tag40, .tags .tag40 { font-size: 105%; }
+.dc-tags .tag50, .tags .tag50 { font-size: 110%; }
+.dc-tags .tag60, .tags .tag60 { font-size: 115%; }
+.dc-tags .tag70, .tags .tag70 { font-size: 120%; }
+.dc-tags .tag80, .tags .tag80 { font-size: 125%; }
+.dc-tags .tag90, .tags .tag90 { font-size: 130%; }
+.dc-tags .tag100, .tags .tag100 { font-size: 135%; }
+
+/* ------------------------------------------------------- messages d'erreur */
+.error {
+	border : 1px solid #c44;
+	background : #df0;
+	padding : 0.5em;
+	}
+.error ul {
+	padding-left : 20px;
+	}
+.error li {
+	list-style : square;
+	}
+
+/* ------------------------------------------------------- class à dispo pour billets */
+.left { float: left; margin-right : 1em; }
+.right { float: right; margin-left : 1em; }
+.center { margin-left : auto; margin-right : auto; }
+.left-text { text-align : left; }
+.right-text { text-align : right; }
+.center-text { text-align : center; }
+.little-text { font-size : .875em;}
+.little-upper-text { font-size : .875em; text-transform : uppercase; }
+hr.hidden {background: #fff; color: #fff; border-color: #fff; }
+
+
+/* ------------------------------------------------------------
+	11. PAGES SPECIFIQUES
+------------------------------------------------------------- */
+
+.dc-home { }
+.dc-post { }
+.dc-category { }
+
+/* ---------------------------------------------------------------- archives */
+.dc-archive {}
+#time-criteria {}
+#other-criteria {}
+#more-arch {}
+.arch-block {
+	display: inline-block;
+	margin: 0 0 2em 4em;
+	vertical-align: top;
+	}
+.arch-block:first-child {
+	margin-left: 0;
+	}
+.arch-block h3 {
+	margin-bottom: 1em;
+	font-size: 1.2em;
+	font-style: italic;
+	font-weight: normal;
+	text-transform: lowercase;
+	color: #14709e;
+	}
+.arch-block h4 {
+	font-family: "Franklin gothic medium","arial narrow","DejaVu Sans Condensed","helvetica neue",helvetica,sans-serif;
+	font-weight: normal;
+	font-size: 1.1em;
+	margin-bottom: 0;
+	margin-top: 0;
+	}
+.arch-block ul {
+	list-style-type: none;
+	margin: 0;
+	padding: 0;
+	}
+.arch-block ul ul {
+	margin-left: 20px;
+	}
+
+#by-date {
+	margin-right: 0;
+	margin-bottom: 1em;
+	}
+#by-date h3 {
+	margin-bottom: 0;
+	}
+.fromto {
+	margin-top: 0;
+	margin-bottom: 1.5em;
+	font-size: .875em;
+	font-style: italic;
+	}
+#by-date div {
+	display: inline-block;
+	vertical-align: top;
+	margin: 0;
+	width: 10em;
+	}
+#by-date ul {
+	margin-bottom: 1.5em;
+	}
+#by-date span {
+	font-size: .875em;
+	}
+
+#by-cat ul {
+	background: transparent url(img/vline.png) repeat-y;
+	}
+#by-cat ul ul {
+	margin: .5em 0 0 .5em;
+	}
+#by-cat ul li {
+	padding: .2em .2em .2em 20px;
+	background: transparent url(img/hline.png) no-repeat left .82em;
+	}
+#by-cat ul li:last-child {
+	background-image: url(img/last-hline.png);
+	}
+#by-tag {
+	width: 18em;
+	}	
+#by-tag ul li {
+	display: inline;
+	padding-right: 1em;
+}
+#by-tag .tag0 { color: #909090; font-size: 90%; }
+#by-tag .tag10 { color: #828282; font-size: 92%; }
+#by-tag .tag20 { color: #737373; font-size: 94%; }
+#by-tag .tag30 { color: #656565; font-size: 96%; }
+#by-tag .tag40 { color: #484848; font-size: 98%; }
+#by-tag .tag50 { color: #3A3A3A; font-size: 100%; }
+#by-tag .tag60 { color: #2B2B2B; font-size: 102%; }
+#by-tag .tag70 { color: #1D1D1D; font-size: 104%; }
+#by-tag .tag80 { color: #0E0E0E; font-size: 106%; }
+#by-tag .tag90 { color: #030303; font-size: 108%; }
+#by-tag .tag100 { color: #000; font-size: 110%;}
+
+
+.dc-archive #search {
+	padding: 4px;
+	}
+.dc-archive #blogextra div {
+	background-color: transparent;
+	margin-bottom: 1em;
+	padding: 4px;
+	border: 1px solid #ccc;
+	-webkit-box-shadow: none;
+	-moz-box-shadow: none;
+	-o-box-shadow: none;
+	box-shadow: none;
+	}
+.dc-archive #blogextra h2 {
+	margin-bottom: .33em;
+	}	
+	
+.dc-archive-month h2.post-title {
+	font-size: 1.3em;
+	}
+
+.dc-tags { }
+.dc-tag { }
+.dc-404 { }
+.dc-search #content-info em { color: #14709e; }
+
+
+/* ---------------------------------------------------
+  12. ET POUR FINIR NE PAS OUBLIER LES CLEARERS
+--------------------------------------------------- */
+.post, 
+.footnotes, 
+#attachments,
+.read-it, 
+.post-info-co, 
+#comments, #footer {
+	clear:both;
+	}
+
+/* ================================================ 
+	personnalisations blog chantier
+================================================ */
+.post-content img, .post-excerpt img {
+	border: 1px solid #ccc;
+	}
Index: themes/ductile/tpl/_entry-full.html
===================================================================
--- themes/ductile/tpl/_entry-full.html	(revision 535)
+++ themes/ductile/tpl/_entry-full.html	(revision 535)
@@ -0,0 +1,53 @@
+    <div id="p{{tpl:EntryID}}" class="post {{tpl:EntryIfOdd}} {{tpl:EntryIfFirst}} full" lang="{{tpl:EntryLang}}" xml:lang="{{tpl:EntryLang}}">
+    <!-- # New day date -->
+    <tpl:DateHeader><p class="day-date">{{tpl:EntryDate}}</p></tpl:DateHeader>
+    
+    <h2 class="post-title"><a
+    href="{{tpl:EntryURL}}">{{tpl:EntryTitle encode_html="1"}}</a></h2>
+    
+		<div class="post-attr">
+	    <p class="post-info">
+	    	<span class="post-author">{{tpl:lang By}} {{tpl:EntryAuthorLink}}, </span>
+	    	<span class="post-date">{{tpl:EntryDate}}. </span>
+	    	<tpl:EntryIf has_category="1">
+				<tpl:EntryCategoriesBreadcrumb>
+				  <span class="post-breadcrumb-cat"><a href="{{tpl:CategoryURL}}">{{tpl:CategoryTitle encode_html="1"}}</a></span> ›
+				</tpl:EntryCategoriesBreadcrumb>
+	    		<span class="post-cat"><a href="{{tpl:EntryCategoryURL}}">{{tpl:EntryCategory encode_html="1"}}</a></span>
+	    	</tpl:EntryIf>
+	    </p>
+	    
+	    <tpl:EntryTags>
+	    <tpl:TagsHeader><p class="post-tags"></tpl:TagsHeader>
+	    <a href="{{tpl:TagURL}}">{{tpl:TagID}} </a>
+	    <tpl:TagsFooter></p></tpl:TagsFooter>
+	    </tpl:EntryTags>
+		</div>    
+
+    <!-- # --BEHAVIOR-- publicEntryBeforeContent -->
+    {{tpl:SysBehavior behavior="publicEntryBeforeContent"}}
+    
+    	<tpl:EntryIf extended="1">
+      	<div class="post-excerpt">{{tpl:EntryExcerpt}}</div>
+      </tpl:EntryIf>
+      <div class="post-content">{{tpl:EntryContent}}</div>
+
+    
+    <!-- # --BEHAVIOR-- publicEntryAfterContent -->
+    {{tpl:SysBehavior behavior="publicEntryAfterContent"}}
+    
+    <!-- # Number of comments, trackbacks and attachments -->
+    <tpl:EntryIf operator="or" show_comments="1" show_pings="1" has_attachment="1">
+      <p class="post-info-co">
+    </tpl:EntryIf>
+    <tpl:EntryIf show_comments="1">
+      <a href="{{tpl:EntryURL}}#comments" class="comment_count">{{tpl:EntryCommentCount}}</a>
+    </tpl:EntryIf>
+    <tpl:EntryIf show_pings="1">
+      <a href="{{tpl:EntryURL}}#pings" class="ping_count">{{tpl:EntryPingCount}}</a></tpl:EntryIf>
+    <tpl:EntryIf has_attachment="1">
+      <a href="{{tpl:EntryURL}}#attachments" class="attach_count">{{tpl:EntryAttachmentCount}}</a></tpl:EntryIf>
+    <tpl:EntryIf operator="or" show_comments="1" show_pings="1" has_attachment="1">
+      </p>
+    </tpl:EntryIf>
+    </div>
Index: themes/ductile/tpl/_entry-short.html
===================================================================
--- themes/ductile/tpl/_entry-short.html	(revision 574)
+++ themes/ductile/tpl/_entry-short.html	(revision 574)
@@ -0,0 +1,64 @@
+    <div id="p{{tpl:EntryID}}" class="post {{tpl:EntryIfOdd}} {{tpl:EntryIfFirst}} short" lang="{{tpl:EntryLang}}" xml:lang="{{tpl:EntryLang}}">
+    <!-- # New day date -->
+    <tpl:DateHeader><p class="day-date">{{tpl:EntryDate}}</p></tpl:DateHeader>
+    
+    <h2 class="post-title"><a
+    href="{{tpl:EntryURL}}">{{tpl:EntryTitle encode_html="1"}}</a></h2>
+    
+		<div class="post-attr">
+	    <p class="post-info">
+	    	<span class="post-author">{{tpl:lang By}} {{tpl:EntryAuthorLink}}, </span>
+	    	<span class="post-date">{{tpl:EntryDate}}. </span>
+	    	<tpl:EntryIf has_category="1">
+				<tpl:EntryCategoriesBreadcrumb>
+				  <span class="post-breadcrumb-cat"><a href="{{tpl:CategoryURL}}">{{tpl:CategoryTitle encode_html="1"}}</a></span> ›
+				</tpl:EntryCategoriesBreadcrumb>
+	    		<span class="post-cat"><a href="{{tpl:EntryCategoryURL}}">{{tpl:EntryCategory encode_html="1"}}</a></span>
+	    	</tpl:EntryIf>
+	    </p>
+	    
+	    <tpl:EntryTags>
+	    <tpl:TagsHeader><p class="post-tags"></tpl:TagsHeader>
+	    <a href="{{tpl:TagURL}}">{{tpl:TagID}}</a>
+	    <tpl:TagsFooter></p></tpl:TagsFooter>
+	    </tpl:EntryTags>
+		</div>    
+    
+    <!-- # --BEHAVIOR-- publicEntryBeforeContent -->
+    {{tpl:SysBehavior behavior="publicEntryBeforeContent"}}
+    
+    <!-- # Entry with an excerpt -->
+    <tpl:EntryIf extended="1">
+      <div class="post-content">{{tpl:EntryExcerpt}}</div>
+      <p class="read-it"><a href="{{tpl:EntryURL}}"
+      title="{{tpl:lang Continue reading}} {{tpl:EntryTitle encode_html="1"}}">{{tpl:lang Continue
+      reading}}</a></p>
+    </tpl:EntryIf>
+    
+    <!-- # Entry without excerpt -->
+    <tpl:EntryIf extended="0">
+      <div class="post-content">{{tpl:EntryContent encode_html="1" remove_html="1" cut_string="300"}}</div>
+      <tpl:EntryIfContentIsCut encode_html="1" remove_html="1" cut_string="300">
+        <p class="read-it"><a href="{{tpl:EntryURL}}"
+        title="{{tpl:lang Continue reading}} {{tpl:EntryTitle encode_html="1"}}">{{tpl:lang Continue reading}}</a></p>
+      </tpl:EntryIfContentIsCut>
+    </tpl:EntryIf>
+    
+    <!-- # --BEHAVIOR-- publicEntryAfterContent -->
+    {{tpl:SysBehavior behavior="publicEntryAfterContent"}}
+    
+    <!-- # Number of comments, trackbacks and attachments -->
+    <tpl:EntryIf operator="or" show_comments="1" show_pings="1" has_attachment="1">
+      <p class="post-info-co">
+    </tpl:EntryIf>
+    <tpl:EntryIf show_comments="1">
+      <a href="{{tpl:EntryURL}}#comments" class="comment_count">{{tpl:EntryCommentCount}}</a>
+    </tpl:EntryIf>
+    <tpl:EntryIf show_pings="1">
+      <a href="{{tpl:EntryURL}}#pings" class="ping_count">{{tpl:EntryPingCount}}</a></tpl:EntryIf>
+    <tpl:EntryIf has_attachment="1">
+      <a href="{{tpl:EntryURL}}#attachments" class="attach_count">{{tpl:EntryAttachmentCount}}</a></tpl:EntryIf>
+    <tpl:EntryIf operator="or" show_comments="1" show_pings="1" has_attachment="1">
+      </p>
+    </tpl:EntryIf>
+    </div>
Index: themes/ductile/tpl/_entry-title.html
===================================================================
--- themes/ductile/tpl/_entry-title.html	(revision 535)
+++ themes/ductile/tpl/_entry-title.html	(revision 535)
@@ -0,0 +1,41 @@
+    <div id="p{{tpl:EntryID}}" class="post {{tpl:EntryIfOdd}} {{tpl:EntryIfFirst}} title" lang="{{tpl:EntryLang}}" xml:lang="{{tpl:EntryLang}}">
+    <!-- # New day date -->
+    <tpl:DateHeader><p class="day-date">{{tpl:EntryDate}}</p></tpl:DateHeader>
+    
+    <h2 class="post-title"><a
+    href="{{tpl:EntryURL}}">{{tpl:EntryTitle encode_html="1"}}</a></h2>
+    
+		<div class="post-attr">
+	    <p class="post-info">
+	    	<span class="post-author">{{tpl:lang By}} {{tpl:EntryAuthorLink}}, </span>
+	    	<span class="post-date">{{tpl:EntryDate}}. </span>
+	    	<tpl:EntryIf has_category="1">
+				<tpl:EntryCategoriesBreadcrumb>
+				  <span class="post-breadcrumb-cat"><a href="{{tpl:CategoryURL}}">{{tpl:CategoryTitle encode_html="1"}}</a></span> ›
+				</tpl:EntryCategoriesBreadcrumb>
+	    		<span class="post-cat"><a href="{{tpl:EntryCategoryURL}}">{{tpl:EntryCategory encode_html="1"}}</a></span>
+	    	</tpl:EntryIf>
+	    </p>
+		</div>    
+    
+    <!-- # --BEHAVIOR-- publicEntryBeforeContent -->
+    {{tpl:SysBehavior behavior="publicEntryBeforeContent"}}
+    
+    <!-- # --BEHAVIOR-- publicEntryAfterContent -->
+    {{tpl:SysBehavior behavior="publicEntryAfterContent"}}
+    
+    <!-- # Number of comments, trackbacks and attachments -->
+    <tpl:EntryIf operator="or" show_comments="1" show_pings="1" has_attachment="1">
+      <p class="post-info-co">
+    </tpl:EntryIf>
+    <tpl:EntryIf show_comments="1">
+      <a href="{{tpl:EntryURL}}#comments" class="comment_count">{{tpl:EntryCommentCount}}</a>
+    </tpl:EntryIf>
+    <tpl:EntryIf show_pings="1">
+      <a href="{{tpl:EntryURL}}#pings" class="ping_count">{{tpl:EntryPingCount}}</a></tpl:EntryIf>
+    <tpl:EntryIf has_attachment="1">
+      <a href="{{tpl:EntryURL}}#attachments" class="attach_count">{{tpl:EntryAttachmentCount}}</a></tpl:EntryIf>
+    <tpl:EntryIf operator="or" show_comments="1" show_pings="1" has_attachment="1">
+      </p>
+    </tpl:EntryIf>
+    </div>
Index: themes/ductile/tpl/_footer.html
===================================================================
--- themes/ductile/tpl/_footer.html	(revision 497)
+++ themes/ductile/tpl/_footer.html	(revision 497)
@@ -0,0 +1,18 @@
+<ul id="gotop" class="supranav nobig"><li><a href="#top">Haut de page</a></li></ul>
+
+<ul id="sn-bottom" class="supranav nobig">
+	<li class="li1" class="active"><a href="{{tpl:BlogURL}}">Accueil<span> articles récents</span></a></li>
+	<li class="li2"><a href="#">Construire un thème<span> tutoriels</span></a></li>
+	<li class="li3"><a href="#">Maquettes<span> projets graphiques</span></a></li>
+	<li class="li4"><a href="{{tpl:BlogURL}}archive">Archives<span> 2005-2011</span></a></li>
+</ul>
+
+<div id="footer">
+
+	{{tpl:SysBehavior behavior="publicInsideFooter"}}
+
+
+	<p>{{tpl:SysPoweredBy}}</p>
+</div>
+
+{{tpl:SysBehavior behavior="publicFooterContent"}}
Index: themes/ductile/tpl/_head.html
===================================================================
--- themes/ductile/tpl/_head.html	(revision 497)
+++ themes/ductile/tpl/_head.html	(revision 497)
@@ -0,0 +1,20 @@
+<!-- media queries -->
+	<meta name="viewport" content="width=device-width" />
+	<!-- compat media queries -->
+	<!--[if lt IE 9]>
+		<script src="http://css3-mediaqueries-js.googlecode.com/svn/trunk/css3-mediaqueries.js"></script>
+	<![endif]-->
+
+
+<style type="text/css" media="screen">
+@import url({{tpl:BlogThemeURL}}/style.css);
+</style>
+<style type="text/css" media="print">
+@import url({{tpl:BlogThemeURL}}/../default/print.css);
+</style>
+
+<script type="text/javascript" src="{{tpl:BlogThemeURL}}/../default/js/jquery.js"></script>
+<script type="text/javascript" src="{{tpl:BlogThemeURL}}/../default/js/jquery.cookie.js"></script>
+
+{{tpl:include src="user_head.html"}}
+{{tpl:SysBehavior behavior="publicHeadContent"}}
Index: themes/ductile/tpl/_pagination.html
===================================================================
--- themes/ductile/tpl/_pagination.html	(revision 459)
+++ themes/ductile/tpl/_pagination.html	(revision 459)
@@ -0,0 +1,14 @@
+<tpl:Pagination>
+	<p class="pagination">
+		<tpl:PaginationIf end="0">
+			<a href="{{tpl:PaginationURL offset="+1"}}" class="prev">&#171;
+			{{tpl:lang previous entries}}</a> - 
+		</tpl:PaginationIf>
+
+		{{tpl:lang page}} {{tpl:PaginationCurrent}} {{tpl:lang of}} {{tpl:PaginationCounter}}
+
+		<tpl:PaginationIf start="0"> - <a href="{{tpl:PaginationURL offset="-1"}}" class="next">
+			{{tpl:lang next entries}} &#187;</a>
+		</tpl:PaginationIf>
+	</p>
+</tpl:Pagination>
Index: themes/ductile/tpl/_sidebar.html
===================================================================
--- themes/ductile/tpl/_sidebar.html	(revision 436)
+++ themes/ductile/tpl/_sidebar.html	(revision 436)
@@ -0,0 +1,10 @@
+<div id="sidebar">
+
+  <div id="blognav">
+    {{tpl:Widgets type="nav"}}
+  </div> <!-- End #blognav -->
+  
+  <div id="blogextra">
+    {{tpl:Widgets type="extra"}}
+  </div> <!-- End #blogextra -->
+</div>
Index: themes/ductile/tpl/_top.html
===================================================================
--- themes/ductile/tpl/_top.html	(revision 541)
+++ themes/ductile/tpl/_top.html	(revision 541)
@@ -0,0 +1,19 @@
+<div id="header">
+
+	<div id="top">
+  	<h1><span><a href="{{tpl:BlogURL}}">{{tpl:BlogName encode_html="1"}}</a></span></h1>
+		<p id="blogdesc" class="nosmall">{{tpl:BlogDescription}}</p>
+	</div>
+
+	<ul id="prelude">
+		<li class="nosmall"><a href="#main">{{tpl:lang To content}}</a></li>
+		<li><a href="#blognav">{{tpl:lang To menu}}</a></li>
+		<li><a href="#search">{{tpl:lang To search}}</a></li>
+	</ul>
+
+	<!-- # --BEHAVIOR-- publicTopAfterContent -->
+	{{tpl:SysBehavior behavior="publicTopAfterContent"}}
+
+	{{tpl:SimpleMenu id="sn-top" class="supranav nosmall"}}
+	
+</div>
Index: themes/ductile/tpl/archive.html
===================================================================
--- themes/ductile/tpl/archive.html	(revision 502)
+++ themes/ductile/tpl/archive.html	(revision 502)
@@ -0,0 +1,143 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="{{tpl:BlogLanguage}}" lang="{{tpl:BlogLanguage}}">
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+  <meta name="ROBOTS" content="{{tpl:BlogMetaRobots}}" />
+  
+  <title>{{tpl:lang Archives}} - {{tpl:BlogName encode_html="1"}}</title>
+  <meta name="copyright" content="{{tpl:BlogCopyrightNotice encode_html="1"}}" />
+  <meta name="author" content="{{tpl:BlogEditor encode_html="1"}}" />
+  <meta name="date" scheme="W3CDTF" content="{{tpl:BlogUpdateDate iso8601="1"}}" />
+  
+  <link rel="schema.dc" href="http://purl.org/dc/elements/1.1/" />
+  <meta name="dc.title" lang="{{tpl:BlogLanguage}}" content="{{tpl:lang Archives}} - {{tpl:BlogName encode_html="1"}}" />
+  <meta name="dc.language" content="{{tpl:BlogLanguage}}" />
+  <meta name="dc.publisher" content="{{tpl:BlogEditor encode_html="1"}}" />
+  <meta name="dc.rights" content="{{tpl:BlogCopyrightNotice encode_html="1"}}" />
+  <meta name="dc.date" scheme="W3CDTF" content="{{tpl:BlogUpdateDate iso8601="1"}}" />
+  <meta name="dc.type" content="text" />
+  <meta name="dc.format" content="text/html" />
+  
+  <link rel="top" href="{{tpl:BlogURL}}" title="{{tpl:lang Home}}" />
+  
+  <tpl:Archives>
+    <link rel="chapter" href="{{tpl:ArchiveURL}}" title="{{tpl:ArchiveDate encode_html="1"}}" />
+  </tpl:Archives>
+  
+  <link rel="contents" title="{{tpl:lang Archives}}" href="{{tpl:BlogArchiveURL}}" />
+  <tpl:Categories>
+  <link rel="section" href="{{tpl:CategoryURL}}" title="{{tpl:CategoryTitle encode_html="1"}}" />
+  </tpl:Categories>
+  <link rel="alternate" type="application/atom+xml" title="Atom 1.0" href="{{tpl:BlogFeedURL type="atom"}}" />
+  
+  {{tpl:include src="_head.html"}}
+</head>
+
+<body class="dc-archive">
+<div id="page">
+{{tpl:include src="_top.html"}}
+
+<div id="wrapper">
+
+<div id="main">
+  <div id="content">
+  
+  <div id="content-info">
+    <h2>{{tpl:lang Archives}}</h2>
+  </div>
+  
+  <div class="content-inner">
+
+	<div id="time-criteria"><!-- entries sorted by date -->
+		<div id="by-date" class="arch-block">
+			<h3>{{tpl:lang By date}}</h3>
+			<p class="fromto">{{tpl:lang From}} <tpl:Entries no_content="1" order="asc" lastn="1"><a href="{{tpl:EntryURL}}">{{tpl:EntryDate format="%d %B %Y"}}</a></tpl:Entries> {{tpl:lang to}} <tpl:Entries no_content="1" order="desc" lastn="1"><a href="{{tpl:EntryURL}}">{{tpl:EntryDate format="%d %B %Y"}}</a></tpl:Entries></p>
+	  	<tpl:Archives order="asc">
+		    <tpl:ArchivesYearHeader>
+		    	<div>
+		      <h4>{{tpl:ArchiveDate format="%Y"}}</h4>
+		      <ul>
+			    </tpl:ArchivesYearHeader>
+			      <li><a href="{{tpl:ArchiveURL}}" title="{{tpl:ArchiveDate encode_html="1"}}">{{tpl:ArchiveDate encode_html="1" format="%B"}}</a>
+			      <span>({{tpl:ArchiveEntriesCount}})</span></li>
+			    <tpl:ArchivesYearFooter>
+		      </ul>
+		      </div>
+		    </tpl:ArchivesYearFooter>
+	  	</tpl:Archives>
+	  </div>
+	</div>
+
+	<div id="other-criteria"><!-- entries sorted by others criterias -->	
+		<tpl:Categories level="1">
+			<tpl:CategoriesHeader>
+				<div id="by-cat" class="arch-block">
+				<h3>{{tpl:lang By category}}</h3>
+				<ul>
+			</tpl:CategoriesHeader>
+				<li><a href="{{tpl:CategoryURL}}">{{tpl:CategoryTitle encode_html="1"}}</a>
+				<tpl:CategoryFirstChildren>
+					<tpl:CategoriesHeader>
+					<ul>
+					</tpl:CategoriesHeader>
+						<li><a href="{{tpl:CategoryURL}}">{{tpl:CategoryTitle encode_html="1"}}</a></li>				
+					<tpl:CategoriesFooter>
+					</ul>
+					</tpl:CategoriesFooter>
+				</tpl:CategoryFirstChildren>			
+				</li>
+			<tpl:CategoriesFooter>
+			</ul>
+			</div>
+			</tpl:CategoriesFooter>
+		</tpl:Categories>
+	
+		<tpl:Tags sortby="count" order="desc">
+			<tpl:TagsHeader>
+			<div id="by-tag" class="arch-block">
+				<h3>{{tpl:lang By tag}}</h3>
+				<ul>
+			</tpl:TagsHeader>
+					<li><a href="{{tpl:TagURL}}" class="tag{{tpl:TagRoundPercent}}">{{tpl:TagID}}</a></li>
+			<tpl:TagsFooter>
+				</ul>	
+			</div>
+			</tpl:TagsFooter>
+		</tpl:Tags>
+	</div>
+
+	<div id="more-arch"><!-- others things -->		
+		<div class="arch-block">
+			<tpl:Entries type="page" no_content="1">
+				<tpl:EntriesHeader><h3>{{tpl:lang Pages}}</h3>
+					<ul></tpl:EntriesHeader>
+					<li><a href="{{tpl:EntryURL}}">{{tpl:EntryTitle encode_html="1"}}</a></li>
+				<tpl:EntriesFooter></ul></tpl:EntriesFooter>
+			</tpl:Entries>
+		</div>
+	</div>
+  </div> <!-- End .content-inner -->
+  
+  </div> <!-- End #main -->
+</div> <!-- End #main -->
+
+<div id="sidebar">
+  <div id="blognav">
+		<tpl:Widget id="search">
+		</tpl:Widget>
+  </div> <!-- End #blognav -->
+
+  <div id="blogextra">
+		{{tpl:Widgets type="extra"}}
+	</div>
+
+  </div> <!-- End #blogextra -->
+</div>
+
+</div> <!-- End #wrapper -->
+
+{{tpl:include src="_footer.html"}}
+</div> <!-- End #page -->
+</body>
+</html>
Index: themes/ductile/tpl/archive_month.html
===================================================================
--- themes/ductile/tpl/archive_month.html	(revision 564)
+++ themes/ductile/tpl/archive_month.html	(revision 564)
@@ -0,0 +1,80 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="{{tpl:BlogLanguage}}" lang="{{tpl:BlogLanguage}}">
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+  <meta name="ROBOTS" content="{{tpl:BlogMetaRobots robots="NOINDEX"}}" />
+  
+  <title>{{tpl:lang Archives}} - {{tpl:ArchiveDate}} - {{tpl:BlogName encode_html="1"}}</title>
+  <meta name="copyright" content="{{tpl:BlogCopyrightNotice encode_html="1"}}" />
+  <meta name="author" content="{{tpl:BlogEditor encode_html="1"}}" />
+  <meta name="date" scheme="W3CDTF" content="{{tpl:BlogUpdateDate iso8601="1"}}" />
+  
+  <link rel="schema.dc" href="http://purl.org/dc/elements/1.1/" />
+  <meta name="dc.title" lang="{{tpl:BlogLanguage}}" content="{{tpl:lang Archives}} - {{tpl:ArchiveDate}} - {{tpl:BlogName encode_html="1"}}" />
+  <meta name="dc.language" content="{{tpl:BlogLanguage}}" />
+  <meta name="dc.publisher" content="{{tpl:BlogEditor encode_html="1"}}" />
+  <meta name="dc.rights" content="{{tpl:BlogCopyrightNotice encode_html="1"}}" />
+  <meta name="dc.date" scheme="W3CDTF" content="{{tpl:BlogUpdateDate iso8601="1"}}" />
+  <meta name="dc.type" content="text" />
+  <meta name="dc.format" content="text/html" />
+  
+  <link rel="top" href="{{tpl:BlogURL}}" title="{{tpl:lang Home}}" />
+  <link rel="up" href="{{tpl:BlogArchiveURL}}" title="{{tpl:lang Archives}}" />
+  <link rel="contents" href="{{tpl:BlogArchiveURL}}" title="{{tpl:lang Archives}}" />
+  
+  
+  <tpl:ArchiveNext><link rel="next" href="{{tpl:ArchiveURL}}"
+  title="{{tpl:ArchiveDate encode_html="1"}}" /></tpl:ArchiveNext>
+  <tpl:ArchivePrevious><link rel="prev" href="{{tpl:ArchiveURL}}"
+  title="{{tpl:ArchiveDate encode_html="1"}}" /></tpl:ArchivePrevious>
+  
+  <tpl:Entries no_content="1">
+  <link rel="chapter" href="{{tpl:EntryURL}}" title="{{tpl:EntryTitle encode_html="1"}}" />
+  </tpl:Entries>
+  
+  {{tpl:include src="_head.html"}}
+</head>
+
+<body class="dc-archive-month">
+<div id="page">
+{{tpl:include src="_top.html"}}
+
+<div id="wrapper">
+
+<div id="main">
+  <div id="content">
+  
+	  <p class="navlinks">
+		  <tpl:ArchivePrevious><a href="{{tpl:ArchiveURL}}" class="prev">&#171; {{tpl:ArchiveDate encode_html="1"}}</a> - </tpl:ArchivePrevious>
+		  {{tpl:ArchiveDate}}
+		  <tpl:ArchiveNext> - <a href="{{tpl:ArchiveURL}}" class="next">{{tpl:ArchiveDate encode_html="1"}} &#187;</a></tpl:ArchiveNext>
+	  </p>
+  
+	  <div id="content-info">
+	    <h2>{{tpl:ArchiveDate}} <span>({{tpl:ArchiveEntriesCount}})</span></h2>
+	  </div>
+  
+	  <div class="content-inner">
+		<tpl:Entries>
+			{{tpl:ductileEntriesList default="title"}}
+		</tpl:Entries>
+	  </div>
+
+	  <p class="navlinks">
+		  <tpl:ArchivePrevious><a href="{{tpl:ArchiveURL}}" class="prev">&#171; {{tpl:ArchiveDate encode_html="1"}}</a> - </tpl:ArchivePrevious>
+		  {{tpl:ArchiveDate}}
+		  <tpl:ArchiveNext> - <a href="{{tpl:ArchiveURL}}" class="next">{{tpl:ArchiveDate encode_html="1"}} &#187;</a></tpl:ArchiveNext>
+	  </p>
+  
+  </div>
+</div> <!-- End #main -->
+
+{{tpl:include src="_sidebar.html"}}
+
+</div> <!-- End #wrapper -->
+
+{{tpl:include src="_footer.html"}}
+</div> <!-- End #page -->
+</body>
+</html>
Index: themes/ductile/tpl/category.html
===================================================================
--- themes/ductile/tpl/category.html	(revision 585)
+++ themes/ductile/tpl/category.html	(revision 585)
@@ -0,0 +1,106 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="{{tpl:BlogLanguage}}" lang="{{tpl:BlogLanguage}}">
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+  <meta name="ROBOTS" content="{{tpl:BlogMetaRobots robots="NOINDEX"}}" />
+  
+  <title>{{tpl:CategoryTitle encode_html="1"}} - {{tpl:BlogName encode_html="1"}}<tpl:PaginationIf start="0"> - {{tpl:lang page}} {{tpl:PaginationCurrent}}</tpl:PaginationIf></title>
+  <meta name="description" lang="{{tpl:BlogLanguage}}" content="{{tpl:CategoryDescription cut_string="180" remove_html="1"}}" />
+  <meta name="copyright" content="{{tpl:BlogCopyrightNotice encode_html="1"}}" />
+  <meta name="author" content="{{tpl:BlogEditor encode_html="1"}}" />
+  <meta name="date" scheme="W3CDTF" content="{{tpl:BlogUpdateDate iso8601="1"}}" />
+  
+  <link rel="schema.dc" href="http://purl.org/dc/elements/1.1/" />
+  <meta name="dc.title" lang="{{tpl:BlogLanguage}}" content="{{tpl:CategoryTitle encode_html="1"}} - {{tpl:BlogName encode_html="1"}}<tpl:PaginationIf start="0"> - {{tpl:lang page}} {{tpl:PaginationCurrent}}</tpl:PaginationIf>" />
+  <meta name="dc.description" lang="{{tpl:BlogLanguage}}" content="{{tpl:CategoryDescription remove_html="1"}}" />
+  <meta name="dc.language" content="{{tpl:BlogLanguage}}" />
+  <meta name="dc.publisher" content="{{tpl:BlogEditor encode_html="1"}}" />
+  <meta name="dc.rights" content="{{tpl:BlogCopyrightNotice encode_html="1"}}" />
+  <meta name="dc.date" scheme="W3CDTF" content="{{tpl:BlogUpdateDate iso8601="1"}}" />
+  <meta name="dc.type" content="text" />
+  <meta name="dc.format" content="text/html" />
+  
+  <link rel="top" href="{{tpl:BlogURL}}" title="{{tpl:lang Home}}" />
+  <link rel="contents" href="{{tpl:BlogArchiveURL}}" title="{{tpl:lang Archives}}" />
+  
+ {{tpl:ductileNbEntryPerPage}}
+  <tpl:Entries no_content="1">
+    <tpl:EntriesHeader>
+      <tpl:Pagination>
+        <tpl:PaginationIf end="0">
+        <link rel="prev" title="{{tpl:lang previous entries}}" href="{{tpl:PaginationURL offset="1"}}" />
+        </tpl:PaginationIf>
+        
+        <tpl:PaginationIf start="0">
+        <link rel="next" title="{{tpl:lang next entries}}" href="{{tpl:PaginationURL offset="-1"}}" />
+        </tpl:PaginationIf>
+      </tpl:Pagination>
+    </tpl:EntriesHeader>
+    
+    <link rel="chapter" href="{{tpl:EntryURL}}" title="{{tpl:EntryTitle encode_html="1"}}" />
+  </tpl:Entries>
+  
+  <link rel="alternate" type="application/atom+xml" title="Atom 1.0" href="{{tpl:CategoryFeedURL type="atom"}}" />
+  
+  {{tpl:include src="_head.html"}}
+</head>
+
+<body class="dc-category">
+<div id="page">
+{{tpl:include src="_top.html"}}
+
+<div id="wrapper">
+
+<div id="main">
+  <div id="content">
+
+  <div id="content-info">
+    <h2><tpl:CategoryParents><a href="{{tpl:CategoryURL}}">{{tpl:CategoryTitle encode_html="1"}}</a> &rsaquo; </tpl:CategoryParents>
+    {{tpl:CategoryTitle encode_html="1"}}</h2>
+    {{tpl:CategoryDescription}}
+    
+    <tpl:CategoryIf has_entries="1">
+      <p><a type="application/atom+xml" href="{{tpl:CategoryFeedURL type="atom"}}"
+      title="{{tpl:lang This category's entries Atom feed}}" class="feed">{{tpl:lang Entries feed}}</a>
+      
+      <tpl:SysIf operator="or" comments_active="1" pings_active="1">
+      - <a type="application/atom+xml" href="{{tpl:CategoryFeedURL type="atom"}}/comments"
+      title="{{tpl:lang This category's comments Atom feed}}" class="feed">{{tpl:lang Comments feed}}</a>
+      </tpl:SysIf>
+      </p>
+    </tpl:CategoryIf>
+  
+  <tpl:CategoryFirstChildren>
+    <tpl:CategoriesHeader>
+      <div id="subcategories">
+      <h3>{{tpl:lang Subcategories}}</h3>
+      <ul>
+    </tpl:CategoriesHeader>
+    <li class="post-cat"><a href="{{tpl:CategoryURL}}">{{tpl:CategoryTitle encode_html="1"}}</a></li>
+    <tpl:CategoriesFooter>
+      </ul>
+      </div>
+    </tpl:CategoriesFooter>
+  </tpl:CategoryFirstChildren>
+</div>
+  
+  {{tpl:ductileNbEntryPerPage}}
+  <tpl:Entries>
+	{{tpl:ductileEntriesList default="short"}}
+   
+    <tpl:EntriesFooter>
+		{{tpl:include src="_pagination.html"}}
+	</tpl:EntriesFooter>
+  </tpl:Entries>
+  </div>
+</div> <!-- End #main -->
+
+{{tpl:include src="_sidebar.html"}}
+
+</div> <!-- End #wrapper -->
+
+{{tpl:include src="_footer.html"}}
+</div> <!-- End #page -->
+</body>
+</html>
Index: themes/ductile/tpl/home.html
===================================================================
--- themes/ductile/tpl/home.html	(revision 583)
+++ themes/ductile/tpl/home.html	(revision 583)
@@ -0,0 +1,98 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="{{tpl:BlogLanguage}}" lang="{{tpl:BlogLanguage}}">
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+  <meta name="ROBOTS" content="{{tpl:BlogMetaRobots}}" />
+  
+  <title>{{tpl:BlogName encode_html="1"}}<tpl:PaginationIf start="0"> - {{tpl:lang page}} {{tpl:PaginationCurrent}}</tpl:PaginationIf></title>
+  <meta name="description" lang="{{tpl:BlogLanguage}}" content="{{tpl:BlogDescription cut_string="180" encode_html="1"}}<tpl:PaginationIf start="0"> - {{tpl:lang page}} {{tpl:PaginationCurrent}}</tpl:PaginationIf>" />
+  <meta name="copyright" content="{{tpl:BlogCopyrightNotice encode_html="1"}}" />
+  <meta name="author" content="{{tpl:BlogEditor encode_html="1"}}" />
+  <meta name="date" scheme="W3CDTF" content="{{tpl:BlogUpdateDate iso8601="1"}}" />
+  
+  <link rel="schema.dc" href="http://purl.org/dc/elements/1.1/" />
+  <meta name="dc.title" lang="{{tpl:BlogLanguage}}" content="{{tpl:BlogName encode_html="1"}}<tpl:PaginationIf start="0"> - {{tpl:lang page}} {{tpl:PaginationCurrent}}</tpl:PaginationIf>" />
+  <meta name="dc.description" lang="{{tpl:BlogLanguage}}" content="{{tpl:BlogDescription encode_html="1"}}" />
+  <meta name="dc.language" content="{{tpl:BlogLanguage}}" />
+  <meta name="dc.publisher" content="{{tpl:BlogEditor encode_html="1"}}" />
+  <meta name="dc.rights" content="{{tpl:BlogCopyrightNotice encode_html="1"}}" />
+  <meta name="dc.date" scheme="W3CDTF" content="{{tpl:BlogUpdateDate iso8601="1"}}" />
+  <meta name="dc.type" content="text" />
+  <meta name="dc.format" content="text/html" />
+  
+  <link rel="contents" title="{{tpl:lang Archives}}" href="{{tpl:BlogArchiveURL}}" />
+  <tpl:Categories>
+  <link rel="section" href="{{tpl:CategoryURL}}" title="{{tpl:CategoryTitle encode_html="1"}}" />
+  </tpl:Categories>
+  
+  {{tpl:ductileNbEntryPerPage nb="8"}}
+  <tpl:Entries no_content="1">
+    <tpl:EntriesHeader>
+      <tpl:Pagination>
+        <tpl:PaginationIf end="0">
+        <link rel="prev" title="{{tpl:lang previous entries}}" href="{{tpl:PaginationURL offset="1"}}" />
+        </tpl:PaginationIf>
+        
+        <tpl:PaginationIf start="0">
+        <link rel="next" title="{{tpl:lang next entries}}" href="{{tpl:PaginationURL offset="-1"}}" />
+        </tpl:PaginationIf>
+      </tpl:Pagination>
+    </tpl:EntriesHeader>
+    
+    <link rel="chapter" href="{{tpl:EntryURL}}" title="{{tpl:EntryTitle encode_html="1"}}" />
+  </tpl:Entries>
+  
+  <link rel="alternate" type="application/atom+xml" title="Atom 1.0" href="{{tpl:BlogFeedURL type="atom"}}" />
+  <link rel="EditURI" type="application/rsd+xml" title="RSD" href="{{tpl:BlogRSDURL}}" />
+  <link rel="meta" type="application/xbel+xml" title="Blogroll" href="{{tpl:BlogrollXbelLink}}" />
+  
+  {{tpl:include src="_head.html"}}
+</head>
+
+<body class="dc-home">
+<div id="page">
+{{tpl:include src="_top.html"}}
+
+<div id="wrapper">
+
+<div id="main">
+  <div id="content">
+
+  {{tpl:ductileNbEntryPerPage nb="8"}}
+  <tpl:Entries>
+
+		<!-- First page -->
+		<tpl:SysIf current_mode="default">
+			<tpl:LoopPosition start="1" length="1">
+				{{tpl:include src="_entry-full.html"}}
+			</tpl:LoopPosition>
+	
+			<tpl:LoopPosition start="2">
+				{{tpl:ductileEntriesList default="short"}}
+			</tpl:LoopPosition>
+		</tpl:SysIf>
+	
+		<!-- Next pages -->
+		<tpl:SysIf current_mode="!default">
+			{{tpl:ductileEntriesList default="short"}}
+		</tpl:SysIf>  	
+
+		<!-- Pagination -->
+    <tpl:EntriesFooter>
+			{{tpl:include src="_pagination.html"}}
+    </tpl:EntriesFooter>
+
+  </tpl:Entries>
+
+  </div> <!-- End #content -->
+</div> <!-- End #main -->
+
+{{tpl:include src="_sidebar.html"}}
+
+</div> <!-- End #wrapper -->
+
+{{tpl:include src="_footer.html"}}
+</div> <!-- End #page -->
+</body>
+</html>
Index: themes/ductile/tpl/search.html
===================================================================
--- themes/ductile/tpl/search.html	(revision 583)
+++ themes/ductile/tpl/search.html	(revision 583)
@@ -0,0 +1,102 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="{{tpl:BlogLanguage}}" lang="{{tpl:BlogLanguage}}">
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+  <meta name="ROBOTS" content="{{tpl:BlogMetaRobots robots="NOINDEX,NOARCHIVE"}}" />
+  
+  <title>{{tpl:lang Search}} - {{tpl:SysSearchString encode_html="1"}} - {{tpl:BlogName encode_html="1"}}<tpl:PaginationIf start="0"> - {{tpl:lang page}} {{tpl:PaginationCurrent}}</tpl:PaginationIf></title>
+  <meta name="copyright" content="{{tpl:BlogCopyrightNotice encode_html="1"}}" />
+  <meta name="author" content="{{tpl:BlogEditor encode_html="1"}}" />
+  <meta name="date" scheme="W3CDTF" content="{{tpl:BlogUpdateDate iso8601="1"}}" />
+  
+  <link rel="schema.dc" href="http://purl.org/dc/elements/1.1/" />
+  <meta name="dc.title" lang="{{tpl:BlogLanguage}}" content="{{tpl:lang Search}} - {{tpl:SysSearchString encode_html="1"}} - {{tpl:BlogName encode_html="1"}}<tpl:PaginationIf start="0"> - {{tpl:lang page}} {{tpl:PaginationCurrent}}</tpl:PaginationIf>" />
+  <meta name="dc.language" content="{{tpl:BlogLanguage}}" />
+  <meta name="dc.publisher" content="{{tpl:BlogEditor encode_html="1"}}" />
+  <meta name="dc.rights" content="{{tpl:BlogCopyrightNotice encode_html="1"}}" />
+  <meta name="dc.date" scheme="W3CDTF" content="{{tpl:BlogUpdateDate iso8601="1"}}" />
+  <meta name="dc.type" content="text" />
+  <meta name="dc.format" content="text/html" />
+  
+  <link rel="top" href="{{tpl:BlogURL}}" title="{{tpl:lang Home}}" />
+  <link rel="contents" href="{{tpl:BlogArchiveURL}}" title="{{tpl:lang Archives}}" />
+  
+  {{tpl:ductileNbEntryPerPage}}
+  <tpl:Entries no_content="1">
+    <tpl:EntriesHeader>
+      <tpl:Pagination>
+        <tpl:PaginationIf end="0">
+        <link rel="prev" title="{{tpl:lang previous entries}}" href="{{tpl:PaginationURL offset="1"}}" />
+        </tpl:PaginationIf>
+        
+        <tpl:PaginationIf start="0">
+        <link rel="next" title="{{tpl:lang next entries}}" href="{{tpl:PaginationURL offset="-1"}}" />
+        </tpl:PaginationIf>
+      </tpl:Pagination>
+    </tpl:EntriesHeader>
+    
+    <link rel="chapter" href="{{tpl:EntryURL}}" title="{{tpl:EntryTitle encode_html="1"}}" />
+  </tpl:Entries>
+  
+  <link rel="meta" type="application/xbel+xml" title="Blogroll" href="{{tpl:BlogrollXbelLink}}" />
+  
+  {{tpl:include src="_head.html"}}
+</head>
+
+<body class="dc-search">
+<div id="page">
+{{tpl:include src="_top.html"}}
+
+<div id="wrapper">
+
+<div id="main">
+  <div id="content">
+  
+  <div id="content-info">
+    <h2>{{tpl:lang Search}}</h2>
+    <tpl:SysIf search_count="==0">
+      <p>{{tpl:SysSearchString encode_html="1" string="Your search for <em>%1$s</em> returned no result."}}</p>
+    </tpl:SysIf>
+    <tpl:SysIf search_count="==1">
+      <p>{{tpl:SysSearchString encode_html="1" string="Your search for <em>%1$s</em> returned <strong>%2$s</strong> result."}}</p>
+    </tpl:SysIf>
+    <tpl:SysIf search_count="&gt;1">
+      <p>{{tpl:SysSearchString encode_html="1" string="Your search for <em>%1$s</em> returned <strong>%2$s</strong> results."}}</p>
+    </tpl:SysIf>
+  </div>
+  
+  {{tpl:ductileNbEntryPerPage}}
+  <tpl:Entries>
+
+	{{tpl:ductileEntriesList default="short"}}
+   
+    <tpl:EntriesFooter>
+      <tpl:Pagination>
+        <p class="pagination"><tpl:PaginationIf end="0"><a href="{{tpl:PaginationURL offset="+1"}}" class="prev">&#171;
+        {{tpl:lang previous entries}}</a> - </tpl:PaginationIf>
+        {{tpl:lang page}} {{tpl:PaginationCurrent}} {{tpl:lang of}} {{tpl:PaginationCounter}}
+        <tpl:PaginationIf start="0"> - <a href="{{tpl:PaginationURL offset="-1"}}" class="next">{{tpl:lang next entries}}
+        &#187;</a></tpl:PaginationIf></p>
+      </tpl:Pagination>
+    </tpl:EntriesFooter>
+  </tpl:Entries>
+  </div>
+</div> <!-- End #main -->
+
+<div id="sidebar">
+  <div id="blognav">
+    {{tpl:Widgets type="nav"}}
+  </div> <!-- End #blognav -->
+  
+  <div id="blogextra">
+    {{tpl:Widgets type="extra"}}
+  </div> <!-- End #blogextra -->
+</div>
+
+</div> <!-- End #wrapper -->
+
+{{tpl:include src="_footer.html"}}
+</div> <!-- End #page -->
+</body>
+</html>
