Index: .hgsubstate
===================================================================
--- .hgsubstate	(revision 1385)
+++ .hgsubstate	(revision 1529)
@@ -1,1 +1,1 @@
-4288bdc1f21d00f93331bbe098485727b276c1fe inc/libs/clearbricks
+716e99c54652d08c2e4395d5179e817e0f98182d inc/libs/clearbricks
Index: admin/auth.php
===================================================================
--- admin/auth.php	(revision 1310)
+++ admin/auth.php	(revision 1484)
@@ -334,5 +334,5 @@
 {
 	echo
-	'<fieldset><legend>'.__('Request a new password').'</legend>'.
+	'<div class="fieldset"><h2>'.__('Request a new password').'</h2>'.
 	'<p><label for="user_id">'.__('Username:').'</label> '.
 	form::field(array('user_id','user_id'),20,32,html::escapeHTML($user_id)).'</p>'.
@@ -343,13 +343,14 @@
 	'<p><input type="submit" value="'.__('recover').'" />'.
 	form::hidden(array('recover'),1).'</p>'.
-	'</fieldset>'.
+	'</div>'.
 	
 	'<div id="issue">'.
-	'<p><a href="auth.php">'.__('Back to login screen').'</a></p></div>';
+	'<p><a href="auth.php">'.__('Back to login screen').'</a></p>'.
+	'</div>';
 }
 elseif ($change_pwd)
 {
 	echo
-	'<fieldset><legend>'.__('Change your password').'</legend>'.
+	'<div class="fieldset"><h2>'.__('Change your password').'</h2>'.
 	'<p><label for="new_pwd">'.__('New password:').'</label> '.
 	form::password(array('new_pwd','new_pwd'),20,255).'</p>'.
@@ -357,5 +358,5 @@
 	'<p><label for="new_pwd_c">'.__('Confirm password:').'</label> '.
 	form::password(array('new_pwd_c','new_pwd_c'),20,255).'</p>'.
-	'</fielset>'.
+	'</div>'.
 	
 	'<p><input type="submit" value="'.__('change').'" />'.
@@ -371,10 +372,10 @@
 	{
 		if ($safe_mode) {
-			echo '<fieldset>';
-			echo '<legend>'.__('Safe mode login').'</legend>';
+			echo '<div class="fieldset">';
+			echo '<h2>'.__('Safe mode login').'</h2>';
 			echo 
-				'<p class="form-note info">'.
-				__('This mode allows you to login without activating any of your plugins. This may be useful to solve compatibility problems').'&nbsp;<br />'.
-				__('Disable or delete any plugin suspected to cause trouble, then log out and log back in normally.').
+				'<p class="form-note">'.
+				__('This mode allows you to login without activating any of your plugins. This may be useful to solve compatibility problems').'&nbsp;</p>'.
+				'<p class="form-note">'.__('Disable or delete any plugin suspected to cause trouble, then log out and log back in normally.').
 				'</p>';
 		}
@@ -403,5 +404,5 @@
 			echo 
 			form::hidden('safe_mode',1).
-			'</fieldset>';
+			'</div>';
 		}
 		else {
Index: admin/blog_pref.php
===================================================================
--- admin/blog_pref.php	(revision 1474)
+++ admin/blog_pref.php	(revision 1499)
@@ -303,5 +303,5 @@
 	
 	echo
-	'<fieldset><legend>'.__('Blog details').'</legend>'.
+	'<div class="fieldset"><h4>'.__('Blog details').'</h4>'.
 	$core->formNonce();
 	
@@ -335,9 +335,9 @@
 	'<p class="area"><label for="blog_desc">'.__('Blog description:').'</label>'.
 	form::textarea('blog_desc',60,5,html::escapeHTML($blog_desc)).'</p>'.
-	'</fieldset>';
-	
-	
-	echo
-	'<fieldset><legend>'.__('Blog configuration').'</legend>'.
+	'</div>';
+	
+	
+	echo
+	'<div class="fieldset"><h4>'.__('Blog configuration').'</h4>'.
 	'<div class="two-cols">'.
 	'<div class="col">'.
@@ -393,23 +393,22 @@
 	'</div>'.
 	'<br class="clear" />'. //Opera sucks
-	'</fieldset>';
-	
-	echo
-	'<fieldset><legend>'.__('Comments and trackbacks').'</legend>'.
+	'</div>';
+	
+	echo
+	'<div class="fieldset"><h4>'.__('Comments and trackbacks').'</h4>'.
+
 	'<div class="two-cols">'.
+
 	'<div class="col">'.
 	'<p><label for="allow_comments" class="classic">'.
 	form::checkbox('allow_comments','1',$blog_settings->system->allow_comments).
-	__('Accept comments').'</label></p>'.
-	
+	__('Accept comments').'</label></p>'.	
 	'<p><label for="comments_pub" class="classic">'.
 	form::checkbox('comments_pub','1',!$blog_settings->system->comments_pub).
-	__('Moderate comments').'</label></p>'.
-	
+	__('Moderate comments').'</label></p>'.	
 	'<p><label for="comments_ttl" class="classic">'.sprintf(__('Leave comments open for %s days'),
 	form::field('comments_ttl',2,3,$blog_settings->system->comments_ttl)).
 	'</label></p>'.
-	'<p class="form-note">'.__('Leave blank to disable this feature.').'</p>'.
-	
+	'<p class="form-note">'.__('Leave blank to disable this feature.').'</p>'.	
 	'<p><label for="wiki_comments" class="classic">'.
 	form::checkbox('wiki_comments','1',$blog_settings->system->wiki_comments).
@@ -420,24 +419,23 @@
 	'<p><label for="allow_trackbacks" class="classic">'.
 	form::checkbox('allow_trackbacks','1',$blog_settings->system->allow_trackbacks).
-	__('Accept trackbacks').'</label></p>'.
-	
+	__('Accept trackbacks').'</label></p>'.	
 	'<p><label for="trackbacks_pub" class="classic">'.
 	form::checkbox('trackbacks_pub','1',!$blog_settings->system->trackbacks_pub).
-	__('Moderate trackbacks').'</label></p>'.
-	
+	__('Moderate trackbacks').'</label></p>'.	
 	'<p><label for="trackbacks_ttl" class="classic">'.sprintf(__('Leave trackbacks open for %s days'),
 	form::field('trackbacks_ttl',2,3,$blog_settings->system->trackbacks_ttl)).'</label></p>'.
-	'<p class="form-note">'.__('Leave blank to disable this feature.').'</p>'.
-	
+	'<p class="form-note">'.__('Leave blank to disable this feature.').'</p>'.	
 	'<p><label for="comments_nofollow" class="classic">'.
 	form::checkbox('comments_nofollow','1',$blog_settings->system->comments_nofollow).
 	__('Add "nofollow" relation on comments and trackbacks links').'</label></p>'.
 	'</div>'.
-	'</div>'.
 	'<br class="clear" />'. //Opera sucks
-	'</fieldset>';
-	
-	echo
-	'<fieldset><legend>'.__('Blog presentation').'</legend>'.
+
+	'</div>'.
+	'<br class="clear" />'. //Opera sucks
+	'</div>';
+	
+	echo
+	'<div class="fieldset"><h4>'.__('Blog presentation').'</h4>'.
 	'<div class="two-cols">'.
 	'<div class="col">'.
@@ -474,11 +472,11 @@
     '</div>'.
 	'<br class="clear" />'. //Opera sucks
-	'</fieldset>';
-	
-	echo
-	'<fieldset><legend>'.__('Media and images').'</legend>'.
+	'</div>';
+	
+	echo
+	'<div class="fieldset"><h4>'.__('Media and images').'</h4>'.
 	'<div class="two-cols">'.
 	'<div class="col">'.
-	'<h4>'.__('Generated image sizes (in pixels)').'</h4>'.
+	'<h5>'.__('Generated image sizes (in pixels)').'</h5>'.
 	'<p class="field"><label for="media_img_t_size">'.__('Thumbnails:').' '.
 	form::field('media_img_t_size',3,3,$blog_settings->system->media_img_t_size).'</label></p>'.
@@ -492,5 +490,5 @@
 	
 	'<div class="col">'.
-	'<h4><label for="media_img_title_pattern">'.__('Inserted image title').'</label></h4>'.
+	'<h5><label for="media_img_title_pattern">'.__('Inserted image title').'</label></h5>'.
 	'<p>'.__('This defines image tag title when you insert it in a post from the media manager. It is retrieved from the picture\'s metadata.').'</p>'.
 	'<p>'.form::combo('media_img_title_pattern',$img_title_combo,html::escapeHTML($blog_settings->system->media_img_title_pattern)).'</p>'.
@@ -499,5 +497,5 @@
 	__('Use original media date if possible').'</label></p>'.
 
-	'<h4>'.__('Default image insertion attributes').'</h4>'.
+	'<h5>'.__('Default image insertion attributes').'</h5>'.
 	'<p><label for="media_img_default_size">'.__('Image size:').'</label>'.
 	form::combo('media_img_default_size',$img_default_size_combo,
@@ -512,9 +510,10 @@
 	'</div>'.
 	'</div>'.
-
-	'</fieldset>';
-	
-	echo
-	'<fieldset><legend>'.__('Search engines robots policy').'</legend>';
+	'<br class="clear" />'. //Opera sucks
+
+	'</div>';
+	
+	echo
+	'<div class="fieldset"><h4>'.__('Search engines robots policy').'</h4>';
 	
 	$i = 0;
@@ -526,5 +525,5 @@
 	}
 	
-	echo '</fieldset>';
+	echo '</div>';
 	
 	
Index: admin/blog_theme.php
===================================================================
--- admin/blog_theme.php	(revision 1428)
+++ admin/blog_theme.php	(revision 1526)
@@ -250,5 +250,5 @@
 	$themes = $core->themes->getModules();
 	if (isset($themes[$core->blog->settings->system->theme])) {
-		echo '<p>'.sprintf(__('You are currently using "%s"'),$themes[$core->blog->settings->system->theme]['name']).'.</p>';
+		echo '<p>'.sprintf(__('You are currently using <strong>%s</strong>'),$themes[$core->blog->settings->system->theme]['name']).'.</p>';
 	}
 	
@@ -290,5 +290,5 @@
 		'<div class="multi-part clear" id="add-theme" title="'.__('Install or upgrade a theme').'">'.
 		'<h3>'.__('Add themes to your installation').'</h3>'.
-		'<p>'.sprintf(__('You can find additional themes for your blog on %s.'),
+		'<p class="form-note info">'.sprintf(__('You can find additional themes for your blog on %s.'),
 		'<a href="http://themes.dotaddict.org/galerie-dc2/">Dotaddict</a>').'</p>';
 		
@@ -299,28 +299,24 @@
 			# 'Upload theme' form
 			echo
-			'<form method="post" action="blog_theme.php" id="uploadpkg" enctype="multipart/form-data">'.
-			'<fieldset>'.
-			'<legend>'.__('Upload a zip file').'</legend>'.
+			'<form method="post" action="blog_theme.php" id="uploadpkg" enctype="multipart/form-data" class="fieldset">'.
+			'<h4>'.__('Upload a zip file').'</h4>'.
 			'<p class="field"><label for="pkg_file" class="classic required"><abbr title="'.__('Required field').'">*</abbr> '.__('Theme zip file:').'</label> '.
 			'<input type="file" name="pkg_file" id="pkg_file" /></p>'.
 			'<p class="field"><label for="your_pwd1" class="classic required"><abbr title="'.__('Required field').'">*</abbr> '.__('Your password:').'</label> '.
 			form::password(array('your_pwd','your_pwd1'),20,255).'</p>'.
-			'<input type="submit" name="upload_pkg" value="'.__('Upload theme').'" />'.
-			$core->formNonce().
-			'</fieldset>'.
+			'<p><input type="submit" name="upload_pkg" value="'.__('Upload theme').'" />'.
+			$core->formNonce().'</p>'.
 			'</form>';
 			
 			# 'Fetch theme' form
 			echo
-			'<form method="post" action="blog_theme.php" id="fetchpkg">'.
-			'<fieldset>'.
-			'<legend>'.__('Download a zip file').'</legend>'.
+			'<form method="post" action="blog_theme.php" id="fetchpkg" class="fieldset">'.
+			'<h4>'.__('Download a zip file').'</h4>'.
 			'<p class="field"><label for="pkg_url" class="classic required"><abbr title="'.__('Required field').'">*</abbr> '.__('Theme zip file URL:').'</label> '.
 			form::field(array('pkg_url','pkg_url'),40,255).'</p>'.
 			'<p class="field"><label for="your_pwd2" class="classic required"><abbr title="'.__('Required field').'">*</abbr> '.__('Your password:').'</label> '.
 			form::password(array('your_pwd','your_pwd2'),20,255).'</p>'.
-			'<input type="submit" name="fetch_pkg" value="'.__('Download theme').'" />'.
-			$core->formNonce().
-			'</fieldset>'.
+			'<p><input type="submit" name="fetch_pkg" value="'.__('Download theme').'" />'.
+			$core->formNonce().'</p>'.
 			'</form>';
 		}
@@ -341,5 +337,5 @@
 
 	echo
-	'<p><a class="back" href="blog_theme.php">'.__('back').'</a></p>';
+	'<p><a class="back" href="blog_theme.php">'.__('Back to Blog appearance').'</a></p>';
 	
 	try
Index: admin/blogs.php
===================================================================
--- admin/blogs.php	(revision 1426)
+++ admin/blogs.php	(revision 1514)
@@ -97,8 +97,9 @@
 	echo
 	'<form action="blogs.php" method="get" id="filters-form">'.
-	'<h3>'.__('Filter blogs list').'</h3>'.
+	'<h3 class="hidden">'.__('Filter blogs list').'</h3>'.
 	
 	'<div class="table">'.
 	'<div class="cell">'.
+	'<h4>'.__('Filters').'</h4>'.
 	'<p><label for="q" class="ib">'.__('Search:').'</label> '.
 	form::field('q',20,255,html::escapeHTML($q)).'</p>'.
@@ -106,4 +107,5 @@
 	
 	'<div class="cell filters-options">'.
+	'<h4>'.__('Display options').'</h4>'.
 	'<p><label for="sortby" class="ib">'.__('Order by:').'</label> '.
 	form::combo('sortby',$sortby_combo,html::escapeHTML($sortby)).'</p>'.
@@ -115,5 +117,5 @@
 	'</div>'.
 
-	'<p><input type="submit" value="'.__('Apply filters').'" />'.
+	'<p><input type="submit" value="'.__('Apply filters and display options').'" />'.
 	'<br class="clear" /></p>'. //Opera sucks
 	'</form>';
Index: admin/categories.php
===================================================================
--- admin/categories.php	(revision 1468)
+++ admin/categories.php	(revision 1525)
@@ -15,41 +15,24 @@
 dcPage::check('categories');
 
-# Remove a category
-if (!empty($_POST['del_cat']))
-{
-	try
-	{
+# Remove a categories
+if (!empty($_POST['categories'])) {
+	$error = false;
+	foreach ($_POST['categories'] as $cat_id) {
 		# Check if category to delete exists
-		$c = $core->blog->getCategory((integer) $_POST['del_cat']);
+		$c = $core->blog->getCategory((integer) $cat_id);
 		if ($c->isEmpty()) {
-			throw new Exception(__('This category does not exist.'));
+			continue;
 		}
 		unset($c);
-		
-		# Check if category where to move posts exists
-		$mov_cat = (integer) $_POST['mov_cat'];
-		$mov_cat = $mov_cat ? $mov_cat : null;
-		if ($mov_cat !== null) {
-			$c = $core->blog->getCategory((integer) $_POST['mov_cat']);
-			if ($c->isEmpty()) {
-				throw new Exception(__('This category does not exist.'));
-			}
-			if ($mov_cat == $_POST['del_cat']) {
-				throw new Exception(__('The entries cannot be moved to the category you choose to delete.'));
-			}
-			unset($c);
+
+		try {
+			# Delete category
+			$core->blog->delCategory($cat_id);
+		} catch (Exception $e) {
+			$error = true;
 		}
-		
-		# Move posts
-		$core->blog->changePostsCategory($_POST['del_cat'],$mov_cat);
-		
-		# Delete category
-		$core->blog->delCategory($_POST['del_cat']);
-		
-		http::redirect('categories.php?del=1');
 	}
-	catch (Exception $e)
-	{
-		$core->error->add($e->getMessage());
+	if (!$error) {
+		http::redirect('categories.php?del='.count($_POST['categories']));
 	}
 }
@@ -69,4 +52,14 @@
 }
 
+# Actions combo box
+$combo_action = array();
+if ($core->auth->check('categories',$core->blog->id)) {
+	$combo_action[__('Delete')] = 'delete';
+}
+
+# --BEHAVIOR-- adminCategoriesActionsCombo
+$core->callBehavior('adminCategoriesActionsCombo',array(&$combo_action));
+
+
 /* Display
 -------------------------------------------------------- */
@@ -85,5 +78,9 @@
 }
 if (!empty($_GET['del'])) {
-	dcPage::message(__('The category has been successfully removed.'));
+  dcPage::message(__('The category has been successfully removed.',
+		     'The categories have been successfully removed.',
+		     (int) $_GET['del']
+		     )
+		  );
 }
 if (!empty($_GET['reord'])) {
@@ -95,52 +92,4 @@
 
 $rs = $core->blog->getCategories(array('post_type'=>'post'));
-
-echo
-'<div class="two-cols">'.
-'<div class="col">';
-if ($rs->isEmpty())
-{
-	echo '<p>'.__('No category yet.').'</p>';
-}
-else
-{
-	echo
-	'<h3>'.__('Categories list').'</h3>'.
-	'<div id="categories">';
-	
-	$ref_level = $level = $rs->level-1;
-	while ($rs->fetch())
-	{
-		$attr = 'id="cat'.$rs->cat_id.'"';
-		if ($rs->nb_total == 0) {
-			$attr .= ' class="deletable"';
-		}
-		
-		if ($rs->level > $level) {
-			echo str_repeat('<ul><li '.$attr.'>',$rs->level - $level);
-		} elseif ($rs->level < $level) {
-			echo str_repeat('</li></ul>',-($rs->level - $level));
-		}
-		
-		if ($rs->level <= $level) {
-			echo '</li><li '.$attr.'>';
-		}
-		
-		echo
-		'<p><strong><a href="category.php?id='.$rs->cat_id.'">'.html::escapeHTML($rs->cat_title).'</a></strong>'.
-		' (<a href="posts.php?cat_id='.$rs->cat_id.'">'.
-		sprintf(($rs->nb_post > 1 ? __('%d entries') : __('%d entry') ),$rs->nb_post).'</a>'.
-		', '.__('total:').' '.$rs->nb_total.')</p>'.
-		'<p>'.__('URL:').' '.html::escapeHTML($rs->cat_url).'</p>';
-		
-		$level = $rs->level;
-	}
-	
-	if ($ref_level - $level < 0) {
-		echo str_repeat('</li></ul>',-($ref_level - $level));
-	}
-	echo '</div>';
-}
-echo '</div>';
 
 $categories_combo = array();
@@ -155,42 +104,84 @@
 }
 
-echo '<div class="col">'.
+echo
+'<p class="top-add"><a class="button add" href="category.php">'.__('New category').'</a></p>';
 
-'<form action="category.php" method="post">'.
-'<h3>'.__('Add a new category').'</h3>'.
-'<p><label class="required" for="cat_title"><abbr title="'.__('Required field').'">*</abbr> '.__('Title:').'</label> '.
-form::field('cat_title',30,255,'','maximal').'</p>'.
-'<p><label for="new_cat_parent">'.__('Parent:').'</label> '.
-form::combo('new_cat_parent',array_merge(array(__('(No cat)') => 0),$categories_combo),'','maximal').
-'</p>'.
-'<p><input type="submit" value="'.__('Create').'" />'.
-$core->formNonce().'</p>'.
-
-'</form>';
-
-if (!$rs->isEmpty())
+echo
+'<div class="col">';
+if ($rs->isEmpty())
+{
+	echo '<p>'.__('No category yet.').'</p>';
+}
+else
 {
 	echo
-	'<form action="categories.php" method="post" id="delete-category">'.
-	'<h3>'.__('Remove a category').'</h3>'.
-	'<p><label for="del_cat">'.__('Choose a category to remove:').'</label> '.
-	form::combo('del_cat',$categories_combo,'','maximal').'</p> '.
-	'<p><label for="mov_cat">'.__('And choose the category which will receive its entries:').'</label> '.
-	form::combo('mov_cat',array_merge(array(__('(No cat)') => ''),$categories_combo),'','maximal').'</p> '.
-	'<p><input type="submit" value="'.__('Delete').'" class="delete" />'.
-	$core->formNonce().'</p>'.
+	'<form action="categories.php" method="post" id="form-categories">'.
+	'<h3>'.__('Categories list').'</h3>'.
+	'<div id="categories">';
 
-	'</form>';
-	
+	$ref_level = $level = $rs->level-1;
+	while ($rs->fetch())
+	{
+		$attr = 'id="cat'.$rs->cat_id.'"';
+		if ($rs->nb_total == 0) {
+			$attr .= ' class="deletable"';
+		}
+
+		if ($rs->level > $level) {
+			echo str_repeat('<ul><li '.$attr.'>',$rs->level - $level);
+		} elseif ($rs->level < $level) {
+			echo str_repeat('</li></ul>',-($rs->level - $level));
+		}
+
+		if ($rs->level <= $level) {
+			echo '</li><li '.$attr.'>';
+		}
+
+		echo
+		'<p>';
+		if ($rs->nb_total == 0) {
+			echo form::checkbox(array('categories[]'),$rs->cat_id);
+		}
+
+		echo
+		'<strong><a href="category.php?id='.$rs->cat_id.'">'.html::escapeHTML($rs->cat_title).'</a></strong>'.
+		' (<a href="posts.php?cat_id='.$rs->cat_id.'">'.
+		sprintf(($rs->nb_post > 1 ? __('%d entries') : __('%d entry') ),$rs->nb_post).'</a>'.
+		', '.__('total:').' '.$rs->nb_total.')</p>'.
+		'<p>'.__('URL:').' '.html::escapeHTML($rs->cat_url).'</p>';
+
+		$level = $rs->level;
+	}
+
+	if ($ref_level - $level < 0) {
+		echo str_repeat('</li></ul>',-($ref_level - $level));
+	}
 	echo
-	'<form action="categories.php" method="post" id="reset-order" class="border-top">'.
+	'</div>';
+
+	if (count($combo_action)>0) {
+		 echo
+		 '<div class="two-cols">'.
+		 '<p class="col checkboxes-helpers"></p>'.
+		 '<p class="col right"><label for="action" class="classic">'.__('Selected categories action:').'</label> '.
+		 form::combo('action',$combo_action).
+		 $core->formNonce().
+		 '<input type="submit" value="'.__('ok').'" /></p>'.
+		 '</div>'.
+		 '</form>';
+	}
+
+	echo
+	'<div class="col clear">'.
+	'<form action="categories.php" method="post" id="reset-order">'.
 	'<h3>'.__('Reorder categories').'</h3>'.
 	'<p>'.__('This will relocate all categories on the top level').'</p> '.
-	'<p><input type="submit" value="'.__('Reorder').'" />'.
+	'<p><input class="reset" type="submit" value="'.__('Reorder').'" />'.
 	form::hidden(array('reset'),1).
 	$core->formNonce().'</p>'.
-	'</form>';
+	'</form>'.
+	'</div>';
 }
-echo '</div>';
+
 echo '</div>';
 
Index: admin/category.php
===================================================================
--- admin/category.php	(revision 1399)
+++ admin/category.php	(revision 1499)
@@ -226,11 +226,10 @@
 	'<div class="col">'.
 	
-	'<form action="category.php" method="post">'.
-	'<fieldset><legend>'.__('Category parent').'</legend>'.
+	'<form action="category.php" method="post" class="fieldset">'.
+	'<h4>'.__('Category parent').'</h4>'.
 	'<p><label for="cat_parent" class="classic">'.__('Parent:').'</label> '.
 	form::combo('cat_parent',$allowed_parents,$cat_parent).'</p>'.
 	'<p><input type="submit" accesskey="s" value="'.__('Save').'" />'.
 	form::hidden(array('id'),$cat_id).$core->formNonce().'</p>'.
-	'</fieldset>'.
 	'</form>'.
 	'</div>';
@@ -239,6 +238,6 @@
 		echo
 		'<div class="col">'.
-		'<form action="category.php" method="post">'.
-		'<fieldset><legend>'.__('Category sibling').'</legend>'.
+		'<form action="category.php" method="post" class="fieldset">'.
+		'<h4>'.__('Category sibling').'</h4>'.
 		'<p><label class="classic" for="cat_sibling">'.__('Move current category').'</label> '.
 		form::combo('cat_move',array(__('before')=>'before',__('after')=>'after'),'','','',false,'title="'.__('position: ').'"').' '.
@@ -246,5 +245,4 @@
 		'<p><input type="submit" accesskey="s" value="'.__('Save').'" />'.
 		form::hidden(array('id'),$cat_id).$core->formNonce().'</p>'.
-		'</fieldset>'.
 		'</form>'.
 		'</div>';
Index: admin/comments.php
===================================================================
--- admin/comments.php	(revision 1480)
+++ admin/comments.php	(revision 1528)
@@ -193,8 +193,8 @@
 			if ($spam_count == 1) {
 				echo '<p>'.sprintf(__('You have one spam comment.'),'<strong>'.$spam_count.'</strong>').' '.
-				'<a href="comments.php?status=-2">'.__('Show it.').'</a></p>';
+				'<a href="comments.php?status=-2">'.__('Show it.').'</a>.</p>';
 			} elseif ($spam_count > 1) {
 				echo '<p>'.sprintf(__('You have %s spam comments.'),'<strong>'.$spam_count.'</strong>').' '.
-				'<a href="comments.php?status=-2">'.__('Show them.').'</a></p>';
+				'<a href="comments.php?status=-2">'.__('Show them.').'</a>.</p>';
 			}
 		}
@@ -219,8 +219,9 @@
 	echo
 	'<form action="comments.php" method="get" id="filters-form">'.
-	'<h3>'.__('Filter comments and trackbacks list').'</h3>'.
+	'<h3 class="hidden">'.__('Filter comments and trackbacks list').'</h3>'.
 	'<div class="table">'.
 
 	'<div class="cell">'.
+	'<h4>'.__('Filters').'</h4>'.
 	'<p><label for="type" class="ib">'.__('Type:').'</label> '.
 	form::combo('type',$type_combo,$type).'</p> '.
@@ -229,5 +230,5 @@
 	'</div>'.
 	
-	'<div class="cell">'.
+	'<div class="cell filters-sibling-cell">'.
 	'<p><label for="author" class="ib">'.__('Author:').'</label> '.
 	form::field('author',20,255,html::escapeHTML($author)).'</p>'.
@@ -237,4 +238,5 @@
 	
 	'<div class="cell filters-options">'.
+	'<h4>'.__('Display options').'</h4>'.
 	'<p><label for="sortby" class="ib">'.__('Order by:').'</label> '.
 	form::combo('sortby',$sortby_combo,$sortby).'</p>'.
@@ -247,5 +249,5 @@
 	
 	'</div>'.
-	'<p><input type="submit" value="'.__('Apply filters').'" />'.
+	'<p><input type="submit" value="'.__('Apply filters and display options').'" />'.
 	'<br class="clear" /></p>'. //Opera sucks
 	'</form>';
Index: admin/index.php
===================================================================
--- admin/index.php	(revision 1468)
+++ admin/index.php	(revision 1529)
@@ -326,6 +326,6 @@
 		'<div id="quick">'.
 		'<h3>'.__('Quick entry').'</h3>'.
-		'<form id="quick-entry" action="post.php" method="post">'.
-		'<fieldset><legend>'.__('New entry').'</legend>'.
+		'<form id="quick-entry" action="post.php" method="post" class="fieldset">'.
+		'<h4>'.__('New entry').'</h4>'.
 		'<p class="col"><label for="post_title" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Title:').'</label>'.
 		form::field('post_title',20,255,'','maximal').
@@ -335,14 +335,15 @@
 		form::textarea('post_content',50,7).
 		'</p>'.
-		'<p><label for="cat_id" class="classic">'.__('Category:').' '.
-		form::combo('cat_id',$categories_combo).'</label></p>'.
+		'<p><label for="cat_id" class="classic">'.__('Category:').'</label> '.
+		form::combo('cat_id',$categories_combo).'</p>'.
 		($core->auth->check('categories', $core->blog->id)
 			? '<div>'.
-			'<p id="new_cat">'.__('Add a new category').'</p>'.
-			'<p><label for="new_cat_title">'.__('Title:').' '.
-			form::field('new_cat_title',30,255,'','maximal').'</label></p>'.
-			'<p><label for="new_cat_parent">'.__('Parent:').' '.
-			form::combo('new_cat_parent',$categories_combo,'','maximal').
-			'</label></p>'.
+			'<p id="new_cat" class="q-cat">'.__('Add a new category').'</p>'.
+			'<p class="form-note info clear">'.__('This category will be created when you will save your post.').'</p>'.
+			'<p class="q-cat"><label for="new_cat_title">'.__('Title:').'</label> '.
+			form::field('new_cat_title',30,255,'','').'</p>'.
+			'<p class="q-cat"><label for="new_cat_parent">'.__('Parent:').'</label> '.
+			form::combo('new_cat_parent',$categories_combo,'','').
+			'</p>'.
 			'</div>'
 			: '').
@@ -358,5 +359,4 @@
 		form::hidden('post_notes','').
 		'</p>'.
-		'</fieldset>'.
 		'</form>'.
 		'</div>';
Index: admin/js/_categories.js
===================================================================
--- admin/js/_categories.js	(revision 0)
+++ admin/js/_categories.js	(revision 1525)
@@ -1,12 +1,11 @@
 /* TODO: Some nice drag and drop on categories */
 $(function() {
-	$('form#delete-category').submit(function() {
-		var c_id = $('#del_cat').val();
-		var c_name = $('#del_cat option[value='+c_id+']').text();
-		return window.confirm(dotclear.msg.confirm_delete_category.replace('%s',c_name));
+	$('.checkboxes-helpers').each(function() {
+		dotclear.checkboxesHelpers(this);
 	});
-});
 
-$(function() {
+	dotclear.categoriesActionsHelper();
+
+
 	$('form#reset-order').submit(function() {
 		return window.confirm(dotclear.msg.confirm_reorder_categories);
Index: admin/js/_index.js
===================================================================
--- admin/js/_index.js	(revision 1418)
+++ admin/js/_index.js	(revision 1500)
@@ -33,5 +33,7 @@
 				post_status: status,
 				post_format: $('#post_format',f).val(),
-				post_lang: $('#post_lang',f).val()
+				post_lang: $('#post_lang',f).val(),
+				new_cat_title: $('#new_cat_title',f).val(),
+				new_cat_parent: $('#new_cat_parent',f).val()
 			}
 
@@ -56,4 +58,7 @@
 						contentTb.syncContents('textarea');
 					}
+					$('#cat_id',f).val('0');
+					$('#new_cat_title',f).val('');
+					$('#new_cat_parent',f).val('0');
 				}
 
Index: admin/js/_post.js
===================================================================
--- admin/js/_post.js	(revision 1468)
+++ admin/js/_post.js	(revision 1529)
@@ -1,5 +1,5 @@
 dotclear.commentExpander = function(line) {
 	var td = line.firstChild;
-	
+
 	var img = document.createElement('img');
 	img.src = dotclear.img_plus_src;
@@ -9,5 +9,5 @@
 	img.line = line;
 	img.onclick = function() { dotclear.viewCommentContent(this,this.line); };
-	
+
 	td.insertBefore(img,td.firstChild);
 };
@@ -15,7 +15,7 @@
 dotclear.viewCommentContent = function(img,line) {
 	var commentId = line.id.substr(1);
-	
+
 	var tr = document.getElementById('ce'+commentId);
-	
+
 	if (!tr) {
 		tr = document.createElement('tr');
@@ -25,15 +25,15 @@
 		td.className = 'expand';
 		tr.appendChild(td);
-		
+
 		img.src = dotclear.img_minus_src;
 		img.alt = dotclear.img_minus_alt;
-		
+
 		// Get comment content
 		$.get('services.php',{f:'getCommentById',id: commentId},function(data) {
 			var rsp = $(data).children('rsp')[0];
-			
+
 			if (rsp.attributes[0].value == 'ok') {
 				var comment = $(rsp).find('comment_display_content').text();
-				
+
 				if (comment) {
 					$(td).append(comment);
@@ -42,5 +42,5 @@
 					var comment_ip = $(rsp).find('comment_ip').text();
 					var comment_spam_disp = $(rsp).find('comment_spam_disp').text();
-					
+
 					$(td).append('<p><strong>' + dotclear.msg.website +
 					'</strong> ' + comment_site + '<br />' +
@@ -52,5 +52,5 @@
 			}
 		});
-		
+
 		$(line).toggleClass('expand');
 		line.parentNode.insertBefore(tr,line.nextSibling);
@@ -74,80 +74,96 @@
 $(function() {
 	if (!document.getElementById) { return; }
-	
+
 	if (document.getElementById('edit-entry'))
 	{
 		// Get document format and prepare toolbars
 		var formatField = $('#post_format').get(0);
+		var last_post_format = $(formatField).val();
 		$(formatField).change(function() {
-			excerptTb.switchMode(this.value);
-			contentTb.switchMode(this.value);
-		});
-		
+			// Confirm post format change
+			if(window.confirm(dotclear.msg.confirm_change_post_format_noconvert)){
+				excerptTb.switchMode(this.value);
+				contentTb.switchMode(this.value);
+				last_post_format = $(this).val();
+			}else{
+				// Restore last format if change cancelled
+				$(this).val(last_post_format);
+			}
+		});
+
 		var excerptTb = new jsToolBar(document.getElementById('post_excerpt'));
 		var contentTb = new jsToolBar(document.getElementById('post_content'));
 		excerptTb.context = contentTb.context = 'post';
 	}
-	
+
 	if (document.getElementById('comment_content')) {
 		var commentTb = new jsToolBar(document.getElementById('comment_content'));
 	}
-	
+
 	// Post preview
 	$('#post-preview').modalWeb($(window).width()-40,$(window).height()-40);
-	
+
 	// Tabs events
 	$('#edit-entry').onetabload(function() {
 		dotclear.hideLockable();
-		
+
 		// Add date picker
 		var post_dtPick = new datePicker($('#post_dt').get(0));
 		post_dtPick.img_top = '1.5em';
 		post_dtPick.draw();
-		
+
 		// Confirm post deletion
 		$('input[name="delete"]').click(function() {
-				return window.confirm(dotclear.msg.confirm_delete_post);
-		});
-		
+			return window.confirm(dotclear.msg.confirm_delete_post);
+		});
+
 		// Hide some fields
 		$('#notes-area label').toggleWithLegend($('#notes-area').children().not('label'),{
 			cookie: 'dcx_post_notes',
-			hide: $('#post_notes').val() == ''
+		        hide: $('#post_notes').val() == '',
+		        legend_click: true
 		});
 		$('#new_cat').toggleWithLegend(
 			$('#new_cat').parent().children().not('#new_cat'),
-			{} // no cookie on new category as we don't use this every day
+			{legend_click: true} // no cookie on new category as we don't use this every day
 		);
 		$('#post_lang').parent().toggleWithLegend($('#post_lang'),{
-			cookie: 'dcx_post_lang'
+		    cookie: 'dcx_post_lang',
+		    legend_click: true
 		});
 		$('#post_password').parent().toggleWithLegend($('#post_password'),{
 			cookie: 'dcx_post_password',
-			hide: $('#post_password').val() == ''
+		    hide: $('#post_password').val() == '',
+		    legend_click: true
 		});
 		$('#post_status').parent().toggleWithLegend($('#post_status'),{
-			cookie: 'dcx_post_status'
+		        cookie: 'dcx_post_status',
+		    legend_click: true
 		});
 		$('#post_dt').parent().toggleWithLegend($('#post_dt').parent().children().not('label'),{
-			cookie: 'dcx_post_dt'
+		    cookie: 'dcx_post_dt',
+		    legend_click: true
 		});
 		$('#post_format').parent().toggleWithLegend($('#post_format').parent().children().not('label').add($('#post_format').parents('p').next()),{
-			cookie: 'dcx_post_format'
+		    cookie: 'dcx_post_format',
+		    legend_click: true
 		});
 		$('#cat_id').parent().toggleWithLegend($('#cat_id'),{
-			cookie: 'cat_id'
+		    cookie: 'cat_id',
+		    legend_click: true
 		});
 		$('#post_url').parent().toggleWithLegend($('#post_url').parent().children().not('label'),{
-			cookie: 'post_url'
+		    cookie: 'post_url',
+		    legend_click: true
 		});
 		// We load toolbar on excerpt only when it's ready
 		$('#excerpt-area label').toggleWithLegend($('#excerpt-area').children().not('label'),{
-			fn: function() { excerptTb.switchMode(formatField.value); },
 			cookie: 'dcx_post_excerpt',
 			hide: $('#post_excerpt').val() == ''
 		});
-		
+
 		// Load toolbars
 		contentTb.switchMode(formatField.value);
+		excerptTb.switchMode(formatField.value);
 		
 		// Replace attachment remove links by a POST form submit
@@ -162,5 +178,5 @@
 			return false;
 		});
-		
+
 		// Markup validator
 		var h = document.createElement('h4');
@@ -177,5 +193,5 @@
 				lang: $('#post_lang').get(0).value
 			};
-			
+
 			$.post('services.php',params,function(data) {
 				if ($(data).find('rsp').attr('status') != 'ok') {
@@ -183,13 +199,13 @@
 					return false;
 				}
-				
+
 				if ($(data).find('valid').text() == 1) {
 					var p = document.createElement('p');
 					p.id = 'markup-validator';
-					
+
 					if ($('#markup-validator').length > 0) {
 						$('#markup-validator').remove();
 					}
-					
+
 					$(p).addClass('message');
 					$(p).text(dotclear.msg.xhtml_valid);
@@ -201,27 +217,27 @@
 					var div = document.createElement('div');
 					div.id = 'markup-validator';
-					
+
 					if ($('#markup-validator').length > 0) {
 						$('#markup-validator').remove();
 					}
-					
+
 					$(div).addClass('error');
 					$(div).html('<p><strong>' + dotclear.msg.xhtml_not_valid + '</strong></p>' + $(data).find('errors').text());
 					$(div).insertAfter(h);
-					$(div).backgroundFade({sColor:'#ffffff',eColor:'#ff9999',steps:50},function() {
-							$(this).backgroundFade({sColor:'#ff9999',eColor:'#ffffff'});
+					$(div).backgroundFade({sColor:'#ffffff',eColor:'#FFBABA',steps:50},function() {
+							$(this).backgroundFade({sColor:'#ffbaba',eColor:'#ffffff'});
 					});
 				}
-				
+
 				return false;
 			});
-			
+
 			return false;
 		});
-		
+
 		a.appendChild(document.createTextNode(dotclear.msg.xhtml_validator));
 		h.appendChild(a);
 		$(h).appendTo('#entry-content');
-		
+
 		// Check unsaved changes before XHTML conversion
 		var excerpt = $('#post_excerpt').val();
@@ -230,8 +246,8 @@
 			if (excerpt != $('#post_excerpt').val() || content != $('#post_content').val()) {
 				return window.confirm(dotclear.msg.confirm_change_post_format);
-			}	
+			}
 		});
 	});
-	
+
 	$('#comments').onetabload(function() {
 		$('.comments-list tr.line').each(function() {
@@ -241,8 +257,8 @@
 			dotclear.checkboxesHelpers(this);
 		});
-		
+
 		dotclear.commentsActionsHelper();
 	});
-	
+
 	$('#add-comment').onetabload(function() {
 		commentTb.draw('xhtml');
Index: admin/js/_preferences.js
===================================================================
--- admin/js/_preferences.js	(revision 160)
+++ admin/js/_preferences.js	(revision 1516)
@@ -13,6 +13,6 @@
 		if ($('#user_email').val() != user_email || $('#new_pwd').val() != '') {
 			e.focus();
-			$(e).backgroundFade({sColor:'#ffffff',eColor:'#ff9999',steps:50},function() {
-				$(this).backgroundFade({sColor:'#ff9999',eColor:'#ffffff'});
+			$(e).backgroundFade({sColor:'#ffffff',eColor:'#ffbaba',steps:50},function() {
+				$(this).backgroundFade({sColor:'#ffbaba',eColor:'#ffffff'});
 			});
 			return false;
Index: admin/js/common.js
===================================================================
--- admin/js/common.js	(revision 1395)
+++ admin/js/common.js	(revision 1525)
@@ -121,4 +121,7 @@
 
 		$(ctarget).css('cursor','pointer');
+		if (p.legend_click) {
+			$(ctarget).find('label').css('cursor','pointer');
+		}
 		$(ctarget).click(function() {
 			toggle(i,p.speed);
@@ -290,4 +293,25 @@
 			if (action == 'delete') {
 				return window.confirm(dotclear.msg.confirm_delete_posts.replace('%s',$('input[name="entries[]"]:checked').size()));
+			}
+
+			return true;
+		});
+	},
+
+	categoriesActionsHelper: function() {
+		$('#form-categories').submit(function() {
+			var action = $(this).find('select[name="action"]').val();
+			var checked = false;
+
+			$(this).find('input[name="categories[]"]').each(function() {
+				if (this.checked) {
+					checked = true;
+				}
+			});
+
+			if (!checked) { return false; }
+
+			if (action == 'delete') {
+				return window.confirm(dotclear.msg.confirm_delete_categories.replace('%s',$('input[name="categories[]"]:checked').size()));
 			}
 
@@ -348,5 +372,5 @@
 
 	$('.message').backgroundFade({sColor:'#cccccc',eColor:'#666666',steps:20});
-	$('.error').backgroundFade({sColor:'#ffeee3',eColor:'#ffdec8',steps:20});
+	$('.error').backgroundFade({sColor:'#ffdec8',eColor:'#ffbaba',steps:20});
 
 	$('form:has(input[type=password][name=your_pwd])').submit(function() {
@@ -354,6 +378,6 @@
 		if (e.value == '') {
 			e.focus();
-			$(e).backgroundFade({sColor:'#ffffff',eColor:'#ff9999',steps:50},function() {
-				$(this).backgroundFade({sColor:'#ff9999',eColor:'#ffffff'});
+			$(e).backgroundFade({sColor:'#ffffff',eColor:'#ffbaba',steps:50},function() {
+				$(this).backgroundFade({sColor:'#ffbaba',eColor:'#ffffff'});
 			});
 			return false;
Index: admin/langs.php
===================================================================
--- admin/langs.php	(revision 1399)
+++ admin/langs.php	(revision 1499)
@@ -222,7 +222,6 @@
 	
 	echo
-	'<form method="post" action="langs.php" enctype="multipart/form-data">'.
-	'<fieldset>'.
-	'<legend>'.__('Available languages').'</legend>'.
+	'<form method="post" action="langs.php" enctype="multipart/form-data" class="fieldset">'.
+	'<h4>'.__('Available languages').'</h4>'.
 	'<p>'.sprintf(__('You can download and install a additional language directly from Dotclear.net. '.
 	'Proposed languages are based on your version: %s.'),'<strong>'.DC_VERSION.'</strong>').'</p>'.
@@ -233,5 +232,5 @@
 	'<p><input type="submit" value="'.__('Install language').'" />'.
 	$core->formNonce().
-	'</p></fieldset>'.
+	'</p>'.
 	'</form>';
 }
@@ -241,7 +240,6 @@
 	# 'Upload language pack' form
 	echo
-	'<form method="post" action="langs.php" enctype="multipart/form-data">'.
-	'<fieldset>'.
-	'<legend>'.__('Upload a zip file').'</legend>'.
+	'<form method="post" action="langs.php" enctype="multipart/form-data" class="fieldset">'.
+	'<h4>'.__('Upload a zip file').'</h4>'.
 	'<p>'.__('You can install languages by uploading zip files.').'</p>'.
 	'<p class="field"><label for="pkg_file" class="classic required"><abbr title="'.__('Required field').'">*</abbr> '.__('Language zip file:').'</label> '.
@@ -251,5 +249,5 @@
 	'<p><input type="submit" name="upload_pkg" value="'.__('Upload language').'" />'.
 	$core->formNonce().
-	'</p></fieldset>'.
+	'</p>'.
 	'</form>';
 }
Index: admin/media.php
===================================================================
--- admin/media.php	(revision 1455)
+++ admin/media.php	(revision 1526)
@@ -357,5 +357,6 @@
 	'<h3>'.__('Add files').'</h3>'.
 	'<p>'.__('Please take care to publish media that you own and that are not protected by copyright.').'</p>'.
-	' <form id="fileupload" action="'.html::escapeURL($page_url).'" method="post" enctype="multipart/form-data" aria-disabled="false">'.
+	'<p class="max-sizer form-note info">&nbsp;'.__('Maximum file size allowed:').' '.files::size(DC_MAX_UPLOAD_SIZE).'</p>'.
+	'<form id="fileupload" action="'.html::escapeURL($page_url).'" method="post" enctype="multipart/form-data" aria-disabled="false">'.
 	'<p>'.form::hidden(array('MAX_FILE_SIZE'),DC_MAX_UPLOAD_SIZE).
 	$core->formNonce().'</p>'.
@@ -363,8 +364,7 @@
 
 	echo
-	'<div class="fileupload-buttonbar">';
-
-	echo
-	'<p class="max-sier form-note info">&nbsp;'.__('Maximum file size allowed:').' '.files::size(DC_MAX_UPLOAD_SIZE).'</p>'.
+	'<div class="fileupload-buttonbar clear">';
+
+	echo
 	'<p><label for="upfile">'.'<span class="add-label one-file">'.__('Choose file').'</span>'.'</label>'.
 	'<button class="button add">'.__('Choose files').'</button>'.
@@ -383,5 +383,5 @@
 
 	echo
-	'<p><button class="button clean">'.__('Refresh').'</button>'.
+	'<p class="clear"><button class="button clean">'.__('Refresh').'</button>'.
 	'<input class="button cancel one-file" type="reset" value="'.__('Clear all').'"/>'.
 	'<input class="button start" type="submit" value="'.__('Upload').'"/></p>'.
@@ -389,5 +389,5 @@
 
 	echo
-	'<p>'.form::hidden(array('d'),$d).'</p>'.
+	'<p style="clear:both;">'.form::hidden(array('d'),$d).'</p>'.
 	'</form>'.
 	'</div></div>';
@@ -395,7 +395,7 @@
 	echo
 	'<div class="col">'.
-	'<form class="clear" action="'.html::escapeURL($page_url).'" method="post">'.
-	'<fieldset id="new-dir-f">'.
-	'<legend>'.__('New directory').'</legend>'.
+	'<form class="clear fieldset" action="'.html::escapeURL($page_url).'" method="post">'.
+	'<div id="new-dir-f">'.
+	'<h3>'.__('New directory').'</h3>'.
 	$core->formNonce().
 	'<p><label for="newdir">'.__('Directory Name:').'</label>'.
@@ -403,5 +403,5 @@
 	'<p><input type="submit" value="'.__('Create').'" />'.
 	form::hidden(array('d'),html::escapeHTML($d)).'</p>'.
-	'</fieldset>'.
+	'</div>'.
 	'</form></div>';
 	
Index: admin/media_item.php
===================================================================
--- admin/media_item.php	(revision 1454)
+++ admin/media_item.php	(revision 1499)
@@ -489,4 +489,6 @@
 echo '</div>';
 
+echo '<h3>'.__('Updates and modifications').'</h3>';
+
 if ($file->editable && $core_media_writable)
 {
@@ -494,11 +496,11 @@
 	{
 		echo
-		'<form class="clear" action="'.html::escapeURL($page_url).'" method="post">'.
-		'<fieldset><legend>'.__('Update thumbnails').'</legend>'.
+		'<form class="clear fieldset" action="'.html::escapeURL($page_url).'" method="post">'.
+		'<h4>'.__('Update thumbnails').'</h4>'.
 		'<p>'.__('This will create or update thumbnails for this image.').'</p>'.
 		'<p><input type="submit" name="thumbs" value="'.__('Update thumbnails').'" />'.
 		form::hidden(array('id'),$id).
 		$core->formNonce().'</p>'.
-		'</fieldset></form>';
+		'</form>';
 	}
 	
@@ -511,6 +513,6 @@
 		
 		echo
-		'<form class="clear" id="file-unzip" action="'.html::escapeURL($page_url).'" method="post">'.
-		'<fieldset><legend>'.__('Extract archive').'</legend>'.
+		'<form class="clear fieldset" id="file-unzip" action="'.html::escapeURL($page_url).'" method="post">'.
+		'<h4>'.__('Extract archive').'</h4>'.
 		'<ul>'.
 		'<li><strong>'.__('Extract in a new directory').'</strong> : '.
@@ -524,10 +526,10 @@
 		form::hidden(array('id'),$id).
 		$core->formNonce().'</p>'.
-		'</fieldset></form>';
+		'</form>';
 	}
 	
 	echo
-	'<form class="clear" action="'.html::escapeURL($page_url).'" method="post">'.
-	'<fieldset><legend>'.__('Change media properties').'</legend>'.
+	'<form class="clear fieldset" action="'.html::escapeURL($page_url).'" method="post">'.
+	'<h4>'.__('Change media properties').'</h4>'.
 	'<p><label for="media_file">'.__('File name:').'</label>'.
 	form::field('media_file',30,255,html::escapeHTML($file->basename)).'</p>'.
@@ -543,9 +545,9 @@
 	form::hidden(array('id'),$id).
 	$core->formNonce().'</p>'.
-	'</fieldset></form>';
+	'</form>';
 	
 	echo
-	'<form class="clear" action="'.html::escapeURL($page_url).'" method="post" enctype="multipart/form-data">'.
-	'<fieldset><legend>'.__('Change file').'</legend>'.
+	'<form class="clear fieldset" action="'.html::escapeURL($page_url).'" method="post" enctype="multipart/form-data">'.
+	'<h4>'.__('Change file').'</h4>'.
 	'<div>'.form::hidden(array('MAX_FILE_SIZE'),DC_MAX_UPLOAD_SIZE).'</div>'.
 	'<p><label for="upfile">'.__('Choose a file:').
@@ -556,5 +558,5 @@
 	form::hidden(array('id'),$id).
 	$core->formNonce().'</p>'.
-	'</fieldset></form>';
+	'</form>';
 
 	if ($file->del) {
Index: admin/plugins.php
===================================================================
--- admin/plugins.php	(revision 1474)
+++ admin/plugins.php	(revision 1499)
@@ -354,7 +354,6 @@
 	# 'Upload plugin' form
 	echo
-	'<form method="post" action="plugins.php" id="uploadpkg" enctype="multipart/form-data">'.
-	'<fieldset>'.
-	'<legend>'.__('Upload a zip file').'</legend>'.
+	'<form method="post" action="plugins.php" id="uploadpkg" enctype="multipart/form-data" class="fieldset">'.
+	'<h3>'.__('Upload a zip file').'</h3>'.
 	'<p class="field"><label for="pkg_file" class="classic required"><abbr title="'.__('Required field').'">*</abbr> '.__('Plugin zip file:').'</label> '.
 	'<input type="file" id="pkg_file" name="pkg_file" /></p>'.
@@ -363,12 +362,11 @@
 	'<p><input type="submit" name="upload_pkg" value="'.__('Upload plugin').'" />'.
 	$core->formNonce().
-	'</p></fieldset>'.
+	'</p>'.
 	'</form>';
 	
 	# 'Fetch plugin' form
 	echo
-	'<form method="post" action="plugins.php" id="fetchpkg">'.
-	'<fieldset>'.
-	'<legend>'.__('Download a zip file').'</legend>'.
+	'<form method="post" action="plugins.php" id="fetchpkg" class="fieldset">'.
+	'<h3>'.__('Download a zip file').'</h3>'.
 	'<p class="field"><label for="pkg_url" class="classic required"><abbr title="'.__('Required field').'">*</abbr> '.__('Plugin zip file URL:').'</label> '.
 	form::field(array('pkg_url','pkg_url'),40,255).'</p>'.
Index: admin/post.php
===================================================================
--- admin/post.php	(revision 1468)
+++ admin/post.php	(revision 1529)
@@ -733,9 +733,9 @@
 	echo
 	'<table class="comments-list"><tr>'.
-	'<th colspan="2">'.__('Author').'</th>'.
+	'<th colspan="2" class="first">'.__('Author').'</th>'.
 	'<th>'.__('Date').'</th>'.
 	'<th class="nowrap">'.__('IP address').'</th>'.
 	'<th>'.__('Status').'</th>'.
-	'<th>&nbsp;</th>'.
+	'<th>'.__('Edit').'</th>'.
 	'</tr>';
 	
@@ -771,5 +771,5 @@
 		'<td class="nowrap status">'.$img_status.'</td>'.
 		'<td class="nowrap status"><a href="'.$comment_url.'">'.
-		'<img src="images/edit-mini.png" alt="" title="'.__('Edit this comment').'" /></a></td>'.
+		'<img src="images/edit-mini.png" alt="" title="'.__('Edit this comment').'" /> '.__('Edit').'</a></td>'.
 		
 		'</tr>';
Index: admin/posts.php
===================================================================
--- admin/posts.php	(revision 1476)
+++ admin/posts.php	(revision 1514)
@@ -269,8 +269,9 @@
 	echo
 	'<form action="posts.php" method="get" id="filters-form">'.
-	'<h3>'.__('Filter posts list').'</h3>'.
+	'<h3 class="hidden">'.__('Filter posts list').'</h3>'.
 
 	'<div class="table">'.
 	'<div class="cell">'.
+	'<h4>'.__('Filters').'</h4>'.
 	'<p><label for="user_id" class="ib">'.__('Author:').'</label> '.
 	form::combo('user_id',$users_combo,$user_id).'</p>'.
@@ -281,5 +282,5 @@
 	'</div>'.
 	
-	'<div class="cell">'.
+	'<div class="cell filters-sibling-cell">'.
 	'<p><label for="selected" class="ib">'.__('Selected:').'</label> '.
 	form::combo('selected',$selected_combo,$selected).'</p>'.
@@ -291,4 +292,5 @@
 	
 	'<div class="cell filters-options">'.
+	'<h4>'.__('Display options').'</h4>'.
 	'<p><label for="sortby" class="ib">'.__('Order by:').'</label> '.
 	form::combo('sortby',$sortby_combo,$sortby).'</p>'.
@@ -301,5 +303,5 @@
 	'</div>'.
 
-	'<p><input type="submit" value="'.__('Apply filters').'" />'.
+	'<p><input type="submit" value="'.__('Apply filters and display options').'" />'.
 	'<br class="clear" /></p>'. //Opera sucks
 	'</form>';
Index: admin/posts_actions.php
===================================================================
--- admin/posts_actions.php	(revision 1476)
+++ admin/posts_actions.php	(revision 1527)
@@ -133,30 +133,29 @@
 
 $fields = new FieldsList();
-
-/* Actions
--------------------------------------------------------- */
-if (!empty($_POST['action']) && !empty($_POST['entries']))
+$posts_ids = array();
+
+if (isset($_POST['redir']) && strpos($_POST['redir'],'://') === false)
+{
+	$redir = $_POST['redir'];
+}
+else
+{
+	$redir =
+	'posts.php?user_id='.$_POST['user_id'].
+	'&cat_id='.$_POST['cat_id'].
+	'&status='.$_POST['status'].
+	'&selected='.$_POST['selected'].
+	'&month='.$_POST['month'].
+	'&lang='.$_POST['lang'].
+	'&sortby='.$_POST['sortby'].
+	'&order='.$_POST['order'].
+	'&page='.$_POST['page'].
+	'&nb='.$_POST['nb'];
+}
+$redir_sel = $redir;
+
+if (!empty($_POST['entries']))
 {
 	$entries = $_POST['entries'];
-	$action = $_POST['action'];
-	
-	if (isset($_POST['redir']) && strpos($_POST['redir'],'://') === false)
-	{
-		$redir = $_POST['redir'];
-	}
-	else
-	{
-		$redir =
-		'posts.php?user_id='.$_POST['user_id'].
-		'&cat_id='.$_POST['cat_id'].
-		'&status='.$_POST['status'].
-		'&selected='.$_POST['selected'].
-		'&month='.$_POST['month'].
-		'&lang='.$_POST['lang'].
-		'&sortby='.$_POST['sortby'].
-		'&order='.$_POST['order'].
-		'&page='.$_POST['page'].
-		'&nb='.$_POST['nb'];
-	}
 	
 	foreach ($entries as $k => $v) {
@@ -175,6 +174,4 @@
 	
 	$posts = $core->blog->getPosts($params);
-	
-	$posts_ids = array();
 	while ($posts->fetch())	{
 		$posts_ids[] = $posts->post_id;
@@ -183,141 +180,18 @@
 	// Redirection including selected entries
 	$redir_sel = $redir.'&'.$fields->getEntriesQS();
-	
-	# --BEHAVIOR-- adminPostsActions
-	$core->callBehavior('adminPostsActions',$core,$posts,$action,$redir);
-	
-	if (preg_match('/^(publish|unpublish|schedule|pending)$/',$action))
-	{
-		switch ($action) {
-			case 'unpublish' : $status = 0; break;
-			case 'schedule' : $status = -1; break;
-			case 'pending' : $status = -2; break;
-			default : $status = 1; break;
-		}
-		
-		try
-		{
-			$core->blog->updPostsStatus($posts_ids,$status);
-			
-			http::redirect($redir_sel.'&upd=1');
-		}
-		catch (Exception $e)
-		{
-			$core->error->add($e->getMessage());
-		}
-	}
-	elseif ($action == 'selected' || $action == 'unselected')
-	{
-		try
-		{
-			$core->blog->updPostsSelected($posts_ids,$action == 'selected');
-			
-			http::redirect($redir_sel."&upd=1");
-		}
-		catch (Exception $e)
-		{
-			$core->error->add($e->getMessage());
-		}
-	}
-	elseif ($action == 'delete')
-	{
-		try
-		{
-			// Backward compatibility
-			foreach($posts_ids as $post_id)
-			{
-				# --BEHAVIOR-- adminBeforePostDelete
-				$core->callBehavior('adminBeforePostDelete',(integer) $post_id);
-			}
-			
-			# --BEHAVIOR-- adminBeforePostsDelete
-			$core->callBehavior('adminBeforePostsDelete',$posts_ids);
-			
-			$core->blog->delPosts($posts_ids);
-			
-			http::redirect($redir."&del=1");
-		}
-		catch (Exception $e)
-		{
-			$core->error->add($e->getMessage());
-		}
-		
-	}
-	elseif ($action == 'category' && isset($_POST['new_cat_id']))
-	{
-		$new_cat_id = $_POST['new_cat_id'];
-		
-		try
-		{
-			if (!empty($_POST['new_cat_title']) && $core->auth->check('categories', $core->blog->id))
-			{
-				$cur_cat = $core->con->openCursor($core->prefix.'category');
-				$cur_cat->cat_title = $_POST['new_cat_title'];
-				$cur_cat->cat_url = '';
-				
-				$parent_cat = !empty($_POST['new_cat_parent']) ? $_POST['new_cat_parent'] : '';
-				
-				# --BEHAVIOR-- adminBeforeCategoryCreate
-				$core->callBehavior('adminBeforeCategoryCreate', $cur_cat);
-				
-				$new_cat_id = $core->blog->addCategory($cur_cat, (integer) $parent_cat);
-				
-				# --BEHAVIOR-- adminAfterCategoryCreate
-				$core->callBehavior('adminAfterCategoryCreate', $cur_cat, $new_cat_id);
-			}
-			
-			$core->blog->updPostsCategory($posts_ids, $new_cat_id);
-			
-			http::redirect($redir_sel."&upd=1");
-		}
-		catch (Exception $e)
-		{
-			$core->error->add($e->getMessage());
-		}
-	}
-	elseif ($action == 'author' && isset($_POST['new_auth_id'])
-	&& $core->auth->check('admin',$core->blog->id))
-	{
-		$new_user_id = $_POST['new_auth_id'];
-		
-		try
-		{
-			if ($core->getUser($new_user_id)->isEmpty()) {
-				throw new Exception(__('This user does not exist'));
-			}
-			
-			$cur = $core->con->openCursor($core->prefix.'post');
-			$cur->user_id = $new_user_id;
-			$cur->update('WHERE post_id '.$core->con->in($posts_ids));
-			
-			http::redirect($redir_sel."&upd=1");
-		}
-		catch (Exception $e)
-		{
-			$core->error->add($e->getMessage());
-		}
-	}
-	elseif ($action == 'lang' && isset($_POST['new_lang']))
-	{
-		$new_lang = $_POST['new_lang'];
-		try
-		{
-			$cur = $core->con->openCursor($core->prefix.'post');
-			$cur->post_lang = $new_lang;
-			$cur->update('WHERE post_id '.$core->con->in($posts_ids));
-			
-			http::redirect($redir_sel."&upd=1");
-		}
-		catch (Exception $e)
-		{
-			$core->error->add($e->getMessages());
-		}
-	}
+
 } else {
-	if (empty($_POST['entries'])) {
-		$core->error->add(__('At least one entry should be selected'));
-	} else {
-		$core->error->add(__('No action specified.'));
-	}
+	$posts = $core->con->select("SELECT blog_id FROM ".$core->prefix."blog WHERE false");;
+}
+
+/* Actions
+-------------------------------------------------------- */
+if (!empty($_POST['action']))
+{
+	$action = $_POST['action'];
+} 
+else
+{
+	$core->error->add(__('No action specified.'));
 	dcPage::open(
 		__('Entries'),'',dcPage::breadcrumb(
@@ -334,4 +208,136 @@
 	exit;
 }
+
+# --BEHAVIOR-- adminPostsActions
+$core->callBehavior('adminPostsActions',$core,$posts,$action,$redir);
+
+if (preg_match('/^(publish|unpublish|schedule|pending)$/',$action))
+{
+	switch ($action) {
+		case 'unpublish' : $status = 0; break;
+		case 'schedule' : $status = -1; break;
+		case 'pending' : $status = -2; break;
+		default : $status = 1; break;
+	}
+	
+	try
+	{
+		$core->blog->updPostsStatus($posts_ids,$status);
+		
+		http::redirect($redir_sel.'&upd=1');
+	}
+	catch (Exception $e)
+	{
+		$core->error->add($e->getMessage());
+	}
+}
+elseif ($action == 'selected' || $action == 'unselected')
+{
+	try
+	{
+		$core->blog->updPostsSelected($posts_ids,$action == 'selected');
+		
+		http::redirect($redir_sel."&upd=1");
+	}
+	catch (Exception $e)
+	{
+		$core->error->add($e->getMessage());
+	}
+}
+elseif ($action == 'delete')
+{
+	try
+	{
+		// Backward compatibility
+		foreach($posts_ids as $post_id)
+		{
+			# --BEHAVIOR-- adminBeforePostDelete
+			$core->callBehavior('adminBeforePostDelete',(integer) $post_id);
+		}
+		
+		# --BEHAVIOR-- adminBeforePostsDelete
+		$core->callBehavior('adminBeforePostsDelete',$posts_ids);
+		
+		$core->blog->delPosts($posts_ids);
+		
+		http::redirect($redir."&del=1");
+	}
+	catch (Exception $e)
+	{
+		$core->error->add($e->getMessage());
+	}
+	
+}
+elseif ($action == 'category' && isset($_POST['new_cat_id']))
+{
+	$new_cat_id = $_POST['new_cat_id'];
+	
+	try
+	{
+		if (!empty($_POST['new_cat_title']) && $core->auth->check('categories', $core->blog->id))
+		{
+			$cur_cat = $core->con->openCursor($core->prefix.'category');
+			$cur_cat->cat_title = $_POST['new_cat_title'];
+			$cur_cat->cat_url = '';
+			
+			$parent_cat = !empty($_POST['new_cat_parent']) ? $_POST['new_cat_parent'] : '';
+			
+			# --BEHAVIOR-- adminBeforeCategoryCreate
+			$core->callBehavior('adminBeforeCategoryCreate', $cur_cat);
+			
+			$new_cat_id = $core->blog->addCategory($cur_cat, (integer) $parent_cat);
+			
+			# --BEHAVIOR-- adminAfterCategoryCreate
+			$core->callBehavior('adminAfterCategoryCreate', $cur_cat, $new_cat_id);
+		}
+		
+		$core->blog->updPostsCategory($posts_ids, $new_cat_id);
+		
+		http::redirect($redir_sel."&upd=1");
+	}
+	catch (Exception $e)
+	{
+		$core->error->add($e->getMessage());
+	}
+}
+elseif ($action == 'author' && isset($_POST['new_auth_id'])
+&& $core->auth->check('admin',$core->blog->id))
+{
+	$new_user_id = $_POST['new_auth_id'];
+	
+	try
+	{
+		if ($core->getUser($new_user_id)->isEmpty()) {
+			throw new Exception(__('This user does not exist'));
+		}
+		
+		$cur = $core->con->openCursor($core->prefix.'post');
+		$cur->user_id = $new_user_id;
+		$cur->update('WHERE post_id '.$core->con->in($posts_ids));
+		
+		http::redirect($redir_sel."&upd=1");
+	}
+	catch (Exception $e)
+	{
+		$core->error->add($e->getMessage());
+	}
+}
+elseif ($action == 'lang' && isset($_POST['new_lang']))
+{
+	$new_lang = $_POST['new_lang'];
+	try
+	{
+		$cur = $core->con->openCursor($core->prefix.'post');
+		$cur->post_lang = $new_lang;
+		$cur->update('WHERE post_id '.$core->con->in($posts_ids));
+		
+		http::redirect($redir_sel."&upd=1");
+	}
+	catch (Exception $e)
+	{
+		$core->error->add($e->getMessages());
+	}
+}
+
 /* DISPLAY
 -------------------------------------------------------- */
@@ -401,5 +407,5 @@
 			html::escapeHTML($core->blog->name) => '',
 			__('Entries') => 'posts.php',
-			__('Change category for entries') => ''
+			'<span class="page-title">'.__('Change category for entries').'</span>' => ''
 	));
 	
@@ -430,10 +436,10 @@
 		echo 
 		'<div>'.
-		'<p id="new_cat">'.__('Add a new category').'</p>'.
-		'<p><label for="new_cat_title">'.__('Title:').' '.
-		form::field('new_cat_title',30,255,'','maximal').'</label></p>'.
-		'<p><label for="new_cat_parent">'.__('Parent:').' '.
-		form::combo('new_cat_parent',$categories_combo,'','maximal').
-		'</label></p>'.
+		'<p id="new_cat">'.__('Create a new category for the post(s)').'</p>'.
+		'<p><label for="new_cat_title">'.__('Title:').'</label> '.
+		form::field('new_cat_title',30,255,'','').'</p>'.
+		'<p><label for="new_cat_parent">'.__('Parent:').'</label> '.
+		form::combo('new_cat_parent',$categories_combo,'','').
+		'</p>'.
 		'</div>';
 	}
@@ -500,5 +506,5 @@
 	'<form action="posts_actions.php" method="post">'.
 	$fields->getEntries().
-	'<p><label for="new_auth_id" class="classic">'.__('Author ID:').'</label> '.
+	'<p><label for="new_auth_id" class="classic">'.__('New author (author ID):').'</label> '.
 	form::field('new_auth_id',20,255);
 	
Index: admin/preferences.php
===================================================================
--- admin/preferences.php	(revision 1474)
+++ admin/preferences.php	(revision 1518)
@@ -499,5 +499,5 @@
 	form::checkbox('user_ui_hide_std_favicon',1,$user_ui_hide_std_favicon).' '.
 	__('Do not use standard favicon').'</label></p>'.
-	'<p class="clear form-note info">'.__('This will be applied for all users').
+	'<p class="clear form-note warn">'.__('This will be applied for all users').'.'.
 	'<br class="clear" /></p>';//Opera sucks;
 }
Index: admin/services.php
===================================================================
--- admin/services.php	(revision 1179)
+++ admin/services.php	(revision 1500)
@@ -141,4 +141,22 @@
 	public static function quickPost($core,$get,$post)
 	{
+		# Create category
+		if (!empty($post['new_cat_title']) && $core->auth->check('categories', $core->blog->id)) {
+		
+			$cur_cat = $core->con->openCursor($core->prefix.'category');
+			$cur_cat->cat_title = $post['new_cat_title'];
+			$cur_cat->cat_url = '';
+			
+			$parent_cat = !empty($post['new_cat_parent']) ? $post['new_cat_parent'] : '';
+			
+			# --BEHAVIOR-- adminBeforeCategoryCreate
+			$core->callBehavior('adminBeforeCategoryCreate', $cur_cat);
+			
+			$post['cat_id'] = $core->blog->addCategory($cur_cat, (integer) $parent_cat);
+			
+			# --BEHAVIOR-- adminAfterCategoryCreate
+			$core->callBehavior('adminAfterCategoryCreate', $cur_cat, $post['cat_id']);
+		}
+		
 		$cur = $core->con->openCursor($core->prefix.'post');
 		
Index: admin/style/default.css
===================================================================
--- admin/style/default.css	(revision 1475)
+++ admin/style/default.css	(revision 1526)
@@ -17,5 +17,7 @@
 }
 body {
-	font: 1.2rem/1.5 Arial,Helvetica,sans-serif;
+	font-size: 1.2rem;
+	line-height: 1.5;
+	font-family: Arial,Helvetica,sans-serif;
 	color: #333;
 	background: #fff;
@@ -252,5 +254,5 @@
 }
 .two-cols .col {
-	width: 47%;
+	width: 48%;
 	margin-left: 2%;
 	float: left;
@@ -349,5 +351,5 @@
 }
 #main-menu .active {
-	font-weight: bolder;
+	font-weight: bold;
 }
 #search-menu {
@@ -420,5 +422,5 @@
 #login-screen {
 	display: block;
-	width: 18em;
+	width: 20em;
 	margin: 1.5em auto 0;
 	font-size: 1.4rem;
@@ -431,5 +433,5 @@
 	margin-left: 0;
 }
-#login-screen fieldset, #login-screen .fieldset {
+#login-screen .fieldset {
 	border: 1px solid #A8DC26;
 	padding: 1em 1em 0 1em;
@@ -437,7 +439,4 @@
 	background: #fff;
 }
-#login-screen legend {
-	border: 1px solid #A8DC26;
-}
 #login-screen input[type=text], #login-screen input[type=password], #login-screen input[type=submit] {
 	width: 100%;
@@ -448,5 +447,4 @@
 }
 #login-screen #issue strong {font-weight: normal;}
-
 
 /* ------------------------------------------------------------------ dashboard */
@@ -515,4 +513,16 @@
 	color: #666;
 }
+#quick #new_cat, .q-cat, .q-cat label {
+	display: inline-block;
+	vertical-align: top;
+	margin-right: 1em;
+	margin-top: 0;
+}
+.q-cat label {
+	margin-right: .3em;
+}
+#quick #new_cat {
+	margin-bottom: 2em;
+}
 #dashboard-items {
 	margin: 3em auto;
@@ -618,4 +628,8 @@
 select#del_cat {
 	width: 100%;
+}
+#new_cat {
+	font-weight: bold;
+	margin-top: 2em;
 }
 /* ------------------------------------------------------------------ media */
@@ -818,22 +832,25 @@
 	display: table-cell;
 	vertical-align: top;
-	padding: 1rem 0; 
+	padding: 0; 
 	width: 312px;
-	background: #eef;
 	border: 1px solid #ccc;
 	border-radius: 3px;
 }
-#theme-box div.theme-shot img {
-	display: block;
-	margin: 0 16px;
+#theme-box .theme-shot, 
+#theme-box .theme-info,
+#theme-box .theme-actions {
+	background: #eef;
+	padding: 1em 16px;
+	margin: 0;
+}
+#theme-box .theme-shot img {
+	display: block;
 	width: 280px;
 	height: 245px;
 	border: 1px solid #ccc;
 }
-#theme-box div.theme-info {
-	margin: 1em 16px;
-}
 #theme-box h4 {
 	color: #000;
+	background: #eef;
 }
 #theme-box span.theme-version {
@@ -847,8 +864,8 @@
 	font-weight:bold;
 }
-#theme-box div.theme-actions {
-	padding: 0 16px;
-}
-#themes div.theme-details-js {
+#theme-box .theme-actions {
+	border-bottom: 1px solid #ccc;
+}
+#themes .theme-details-js {
 	float: left;
 	width: 120px;
@@ -862,12 +879,12 @@
 	border-radius: 4px;
 }
-#themes div.theme-details-js label {
+#themes .theme-details-js label {
 	cursor: pointer;
 }
-#themes div.theme-details-js.theme-selected {
+#themes .theme-details-js.theme-selected {
 	background: #ddd;
 	border: 1px solid #999;
 }
-#themes div.theme-details-js div.theme-shot img {
+#themes .theme-details-js .theme-shot img {
 	width: 120px;
 	height: 105px;
@@ -890,4 +907,6 @@
 	background: #f5f5f5;
 	z-index: 100;
+	clear: both;
+	padding: 0 1em;
 }
 #help-button {
@@ -979,7 +998,5 @@
 }
 /* ------------------------------------------------------------------ messages */
-div.error, p.error, 
-div.message, p.message, 
-div.static-msg, p.static-msg {
+.error, .message, .static-msg, .static-msg {
 	padding: 0.5em 0.5em 0.5em 48px;
 	margin-bottom: 1em;
@@ -990,17 +1007,23 @@
 	padding-bottom: 1rem;
 }
-div.error, p.error {
-	background: #ffdec8 url(msg-error.png) no-repeat .7em .7em;
+.error {
+	background: #FFBABA url(msg-error.png) no-repeat .7em .7em;
 	color: #000;
 }
-div.message, p.message, 
-div.static-msg, p.static-msg {
+.message, .static-msg {
 	background: #666 url(msg-std.png) no-repeat .7em .7em;
 	color: #fff;
 }
-div.message a, p.message a, 
-div.static-msg a, p.static-msg a {
+.success {
+	background-color: #cf9;
+	color: #000;
+}
+.message a, .static-msg a {
 	color: #fff;
 }
+.success a {
+	color: #666;
+}
+
 /* ------------------------------------------------------------------ navigation */
 .anchor-nav {
@@ -1167,4 +1190,7 @@
 	margin: 0 0 1em 0;
 }
+table.posts-list {
+	min-width: 50%;
+}
 tr.line:hover {
 	background: #f3f3f3;
@@ -1181,5 +1207,5 @@
 	border-style: solid;
 	border-color: #e3e3e3;
-	padding: .4rem .5rem;
+	padding: .3em .5em;
 	vertical-align: top;
 }
@@ -1189,7 +1215,10 @@
 	border-color: #ccc;
 	background: #f3f3ff;
-	padding: .4rem .5rem;
+	padding: .3em .5em;
 	vertical-align: top;
 	text-align: left;
+}
+th.first img {
+	padding-right: 24px;
 }
 .noborder td, td.noborder, .noborder th, th.noborder {
@@ -1241,7 +1270,6 @@
 	border: none;
 }
-
-tr.line img.expand {
-	margin-right: 10px;
+tr.line img.expand, th img.expand {
+	margin-right: 6px;
 	margin-bottom: -2px;
 }
@@ -1585,5 +1613,5 @@
 	padding: 0;
 	margin-bottom: 1em;
-	margin-top: 1.5em;
+	margin-top: .5em;
 }
 #filters-form .cell {
@@ -1592,4 +1620,7 @@
 	vertical-align: top;
 }
+#filters-form .filters-sibling-cell {
+	padding-top: 3.8em;
+}
 #filters-form .filters-options {
 	padding-left: 2em;
@@ -1606,4 +1637,8 @@
 #filters-form select {
 	width: 14em;
+}
+#filters-form h4 {
+	margin-top: 0;
+	margin-bottom: 2em;
 }
 
@@ -1721,4 +1756,5 @@
 	#info-box2 {float:none;}
 	#dashboard-items div {display: block;margin-bottom: 1em; padding: 0 1em;}
+	#help-button {height:26px; width:26px; background-color: #A2CBE9; padding: 0; margin:0;font-size: 1rem;line-height: 68px}
 }
 @media screen and (max-width: 492px) {
@@ -1729,4 +1765,3 @@
 	#info-box1 select {width: 12rem; margin-right: .6rem;}
 	#info-box1 p.nomobile, label.nomobile {display: none;}
-	#help-button {height:26px; width:26px; background-color: #A2CBE9; padding: 0; margin:0;font-size: 1rem;line-height: 68px}
-}
+}
Index: admin/style/jsUpload/style.css
===================================================================
--- admin/style/jsUpload/style.css	(revision 1452)
+++ admin/style/jsUpload/style.css	(revision 1526)
@@ -58,10 +58,7 @@
 }
 
-.enhanced_uploader .add {
-	margin-right: 4em;
-}
-
-.enhanced_uploader .cancel, .enhanced_uploader .clean, .enhanced_uploader .start {
-	margin-left: .5em;
+.enhanced_uploader .add, .enhanced_uploader .cancel, 
+.enhanced_uploader .clean, .enhanced_uploader .start {
+	margin-right: .4em;
 }
 
@@ -97,6 +94,6 @@
 
 .enhanced_uploader p.clear {
-	margin-top: 3em;
-	margin-bottom: 0;
+	padding-top: 1em;
+	margin-bottom: 1em;
 }
 
@@ -104,4 +101,5 @@
 	margin-top: 1em;
 	margin-bottom: 0;
+	clear: both;
 }
 
@@ -135,10 +133,13 @@
 
 .upload-fileinfo {
-	margin-left: 16px;
+	margin-left: 8px;
 	margin-bottom: .4em;
 }
-
+.upload-fileinfo span {
+	padding-right: 8px;
+}
 .upload-fileinfo .upload-filecancel {
 	display: block;
+	padding-right: 0;
 	margin-top: 3px;
 	width: 20px;
@@ -160,5 +161,5 @@
 
 .upload-progress {
-	padding: 0 1em;
+	padding: 0 8px;
 }
 
@@ -175,5 +176,4 @@
 	border-radius: 2px;
 }
-
 div.template-upload {
 	clear: both;
@@ -182,4 +182,4 @@
 .queue-message {
 	font-weight: bold;
-	margin: 0 0 1em 16px;
+	margin: 0 0 1em 0;
 }
Index: admin/update.php
===================================================================
--- admin/update.php	(revision 1474)
+++ admin/update.php	(revision 1529)
@@ -106,5 +106,8 @@
 					throw new Exception(
 						sprintf(__('Downloaded Dotclear archive seems to be corrupted. '.
-						'Try <a %s>download it</a> again.'),'href="'.$p_url.'?step=download"')
+						'Try <a %s>download it</a> again.'),'href="'.$p_url.'?step=download"').
+						' '.
+						__('If this problem persists try to '.
+						'<a href="http://dotclear.org/download">update manually</a>.')
 					);
 				}
Index: admin/users.php
===================================================================
--- admin/users.php	(revision 1474)
+++ admin/users.php	(revision 1514)
@@ -120,8 +120,9 @@
 	echo
 	'<form action="users.php" method="get" id="filters-form">'.
-	'<h3>'.__('Filter users list').'</h3>'.
+	'<h3 class="hidden">'.__('Filter users list').'</h3>'.
 	
 	'<div class="table">'.
 	'<div class="cell">'.
+	'<h4>'.__('Filters').'</h4>'.
 	'<p><label for="q" class="ib">'.__('Search:').'</label> '.
 	form::field('q',20,255,html::escapeHTML($q)).'</p>'.
@@ -129,4 +130,5 @@
 
 	'<div class="cell filters-options">'.
+	'<h4>'.__('Display options').'</h4>'.
 	'<p><label for="sortby" class="ib">'.__('Order by:').'</label> '.
 	form::combo('sortby',$sortby_combo,$sortby).'</p> '.
@@ -138,5 +140,5 @@
 	'</div>'.
 
-	'<p><input type="submit" value="'.__('Apply filters').'" />'.	
+	'<p><input type="submit" value="'.__('Apply filters and display options').'" />'.	
 	'<br class="clear" /></p>'. //Opera sucks
 	'</form>';
Index: admin/users_actions.php
===================================================================
--- admin/users_actions.php	(revision 1477)
+++ admin/users_actions.php	(revision 1499)
@@ -179,4 +179,6 @@
 }
 
+echo '<p><a class="back" href="'.html::escapeURL($redir).'">'.__('Back to user profile').'</a></p>';
+
 # --BEHAVIOR-- adminUsersActionsContent
 $core->callBehavior('adminUsersActionsContent',$core,$action,$hidden_fields);
@@ -263,5 +265,5 @@
 	foreach ($blogs as $b)
 	{
-		echo '<h3><a href="blog.php?id='.html::escapeHTML($b).'">'.html::escapeHTML($b).'</a>'.
+		echo '<h3>'.('Blog:').' <a href="blog.php?id='.html::escapeHTML($b).'">'.html::escapeHTML($b).'</a>'.
 		form::hidden(array('blogs[]'),$b).'</h3>';
 		
@@ -283,16 +285,15 @@
 	
 	echo
-	'<fieldset><legend>'.__('Validate permissions').'</legend>'.
+	'<div class="fieldset">'.
+	'<h3>'.__('Validate permissions').'</h3>'.
 	'<p><label for="your_pwd">'.__('Your password:').'</label>'.
 	form::password('your_pwd',20,255).'</p>'.
-	'</fieldset>'.
 	'<p><input type="submit" accesskey="s" value="'.__('Save').'" />'.
 	$hidden_fields.
 	form::hidden(array('action'),'updateperm').
 	$core->formNonce().'</p>'.
+	'</div>'.
 	'</form>';
 }
-
-echo '<p><a class="back" href="'.html::escapeURL($redir).'">'.__('back').'</a></p>';
 
 dcPage::close();
Index: inc/admin/lib.dc.page.php
===================================================================
--- inc/admin/lib.dc.page.php	(revision 1468)
+++ inc/admin/lib.dc.page.php	(revision 1525)
@@ -474,4 +474,6 @@
 		self::jsVar('dotclear.msg.confirm_delete_posts',
 			__("Are you sure you want to delete selected entries (%s)?")).
+		self::jsVar('dotclear.msg.confirm_delete_categories',
+			__("Are you sure you want to delete selected categories (%s)?")).
 		self::jsVar('dotclear.msg.confirm_delete_post',
 			__("Are you sure you want to delete this entry?")).
Index: inc/admin/lib.pager.php
===================================================================
--- inc/admin/lib.pager.php	(revision 1476)
+++ inc/admin/lib.pager.php	(revision 1508)
@@ -50,5 +50,5 @@
 			$html_block =
 			'<table class="clear"><tr>'.
-			'<th colspan="2">'.__('Title').'</th>'.
+			'<th colspan="2" class="first">'.__('Title').'</th>'.
 			'<th>'.__('Date').'</th>'.
 			'<th>'.__('Category').'</th>'.
@@ -260,10 +260,10 @@
 			$html_block =
 			'<table><tr>'.
-			'<th colspan="2">'.__('Title').'</th>'.
+			'<th colspan="2" class="first">'.__('Author').'</th>'.
 			'<th>'.__('Date').'</th>'.
-			'<th>'.__('Author').'</th>'.
+			'<th>'.__('Entry title').'</th>'.
 			'<th>'.__('Type').'</th>'.
 			'<th>'.__('Status').'</th>'.
-			'<th>&nbsp;</th>'.
+			'<th>'.__('Edit').'</th>'.
 			'</tr>%s</table>';
 			
@@ -324,7 +324,7 @@
 		}
 		
-		$comment_author = html::escapeHTML($this->rs->comment_author);
-		if (mb_strlen($comment_author) > 20) {
-			$comment_author = mb_strcut($comment_author,0,17).'...';
+		$post_title = html::escapeHTML($this->rs->post_title);
+		if (mb_strlen($post_title) > 50) {
+			$post_title = mb_strcut($post_title,0,47).'...';
 		}
 		
@@ -335,13 +335,13 @@
 		'<td class="nowrap">'.
 		form::checkbox(array('comments[]'),$this->rs->comment_id,'','','',0).'</td>'.
-		'<td class="maximal"><a href="'.$post_url.'">'.
-		html::escapeHTML($this->rs->post_title).'</a>'.
+		'<td class="maximal"><a href="'.$author_url.'">'.html::escapeHTML($this->rs->comment_author).'</a></td>'.
+		'<td class="nowrap">'.dt::dt2str(__('%Y-%m-%d %H:%M'),$this->rs->comment_dt).'</td>'.
+		'<td class="nowrap"><a href="'.$post_url.'">'.
+		html::escapeHTML($post_title).'</a>'.
 		($this->rs->post_type != 'post' ? ' ('.html::escapeHTML($this->rs->post_type).')' : '').'</td>'.
-		'<td class="nowrap">'.dt::dt2str(__('%Y-%m-%d %H:%M'),$this->rs->comment_dt).'</td>'.
-		'<td class="nowrap"><a href="'.$author_url.'">'.html::escapeHTML($comment_author).'</a></td>'.
 		'<td class="nowrap">'.($this->rs->comment_trackback ? __('trackback') : __('comment')).'</td>'.
 		'<td class="nowrap status">'.$img_status.'</td>'.
 		'<td class="nowrap status"><a href="'.$comment_url.'">'.
-		'<img src="images/edit-mini.png" alt="" title="'.__('Edit this comment').'" /></a></td>';
+		'<img src="images/edit-mini.png" alt="" title="'.__('Edit this comment').'" /> '.__('Edit').'</a></td>';
 		
 		$res .= '</tr>';
Index: inc/core/class.dc.postmedia.php
===================================================================
--- inc/core/class.dc.postmedia.php	(revision 1179)
+++ inc/core/class.dc.postmedia.php	(revision 1505)
Index: locales/bn/main.po
===================================================================
--- locales/bn/main.po	(revision 1425)
+++ locales/bn/main.po	(revision 1499)
@@ -459,5 +459,5 @@
 
 #, php-format
-msgid "You are currently using \"%s\""
+msgid "You are currently using <strong>%s</strong>"
 msgstr "আপনি বর্তমানে ব্যবহার করছেন \"%s\""
 
Index: locales/bn/plugins.po
===================================================================
--- locales/bn/plugins.po	(revision 1354)
+++ locales/bn/plugins.po	(revision 1499)
@@ -838,5 +838,5 @@
 
 #, php-format
-msgid "This will import a single blog backup as new content in the current blog: %s."
+msgid "This will import a single blog backup as new content in the current blog: <strong>%s</strong>."
 msgstr ""
 
Index: locales/ca/main.po
===================================================================
--- locales/ca/main.po	(revision 1425)
+++ locales/ca/main.po	(revision 1499)
@@ -468,5 +468,5 @@
 
 #, php-format
-msgid "You are currently using \"%s\""
+msgid "You are currently using <strong>%s</strong>"
 msgstr ""
 
Index: locales/ca/plugins.po
===================================================================
--- locales/ca/plugins.po	(revision 1354)
+++ locales/ca/plugins.po	(revision 1499)
@@ -835,5 +835,5 @@
 
 #, php-format
-msgid "This will import a single blog backup as new content in the current blog: %s."
+msgid "This will import a single blog backup as new content in the current blog: <strong>%s</strong>."
 msgstr ""
 
Index: locales/cs/main.po
===================================================================
--- locales/cs/main.po	(revision 1425)
+++ locales/cs/main.po	(revision 1499)
@@ -457,5 +457,5 @@
 
 #, php-format
-msgid "You are currently using \"%s\""
+msgid "You are currently using <strong>%s</strong>"
 msgstr "Používáte \"%s\" vzhled"
 
Index: locales/cs/plugins.po
===================================================================
--- locales/cs/plugins.po	(revision 1354)
+++ locales/cs/plugins.po	(revision 1499)
@@ -843,5 +843,5 @@
 
 #, php-format
-msgid "This will import a single blog backup as new content in the current blog: %s."
+msgid "This will import a single blog backup as new content in the current blog: <strong>%s</strong>."
 msgstr "Tímto naimportujete zálohu jednoho blogu jako nový obsah tohoto blogu: %s."
 
Index: locales/da/main.po
===================================================================
--- locales/da/main.po	(revision 1425)
+++ locales/da/main.po	(revision 1499)
@@ -459,5 +459,5 @@
 
 #, php-format
-msgid "You are currently using \"%s\""
+msgid "You are currently using <strong>%s</strong>"
 msgstr "Du bruger lige nu \"%s\""
 
Index: locales/da/plugins.po
===================================================================
--- locales/da/plugins.po	(revision 1354)
+++ locales/da/plugins.po	(revision 1499)
@@ -835,5 +835,5 @@
 
 #, php-format
-msgid "This will import a single blog backup as new content in the current blog: %s."
+msgid "This will import a single blog backup as new content in the current blog: <strong>%s</strong>."
 msgstr ""
 
Index: locales/de/main.po
===================================================================
--- locales/de/main.po	(revision 1425)
+++ locales/de/main.po	(revision 1499)
@@ -457,5 +457,5 @@
 
 #, php-format
-msgid "You are currently using \"%s\""
+msgid "You are currently using <strong>%s</strong>"
 msgstr "Du verwendest gerade \"%s\""
 
Index: locales/de/plugins.po
===================================================================
--- locales/de/plugins.po	(revision 1354)
+++ locales/de/plugins.po	(revision 1499)
@@ -843,5 +843,5 @@
 
 #, php-format
-msgid "This will import a single blog backup as new content in the current blog: %s."
+msgid "This will import a single blog backup as new content in the current blog: <strong>%s</strong>."
 msgstr "Dies wird einen einzelnen Blog als neuen Inhalt in den aktuellen Blog importieren: %s."
 
Index: locales/en/help/user_pref.html
===================================================================
--- locales/en/help/user_pref.html	(revision 243)
+++ locales/en/help/user_pref.html	(revision 1487)
@@ -8,5 +8,5 @@
 <h3>My profile</h3>
 <dl>
-  <dt>Name, First name</dt>
+  <dt>Last name, First name</dt>
   <dd>If the display name is empty, the author's name will be displayed
   as his Firstname and Name as set here.</dd>
@@ -37,5 +37,5 @@
 <dl>  
   <dt>Preferred format</dt>
-  <dd>To choose the prefered post syntax. Wiki is a simplified syntax
+  <dd>To choose the preferred post syntax. Wiki is a simplified syntax
   and will be converted to valid xhtml&nbsp;; Unless you have a perfect
   understanding of html, we advise you to choose the wiki syntax.</dd>
@@ -59,6 +59,5 @@
   
   <dt>Activate enhanced uploader in media manager</dt>
-  <dd>This option allows you to upload several files at the same time on your server.
-  Needs the presence of Flash plugin in your browser.</dd>
+  <dd>This option allows you to upload several files at the same time on your server.</dd>
   
   <dt>Dashboard modules</dt>
Index: locales/en/main.po
===================================================================
--- locales/en/main.po	(revision 1468)
+++ locales/en/main.po	(revision 1529)
@@ -453,5 +453,5 @@
 
 #, php-format
-msgid "You are currently using \"%s\""
+msgid "You are currently using <strong>%s</strong>"
 msgstr ""
 
@@ -1917,4 +1917,7 @@
 msgstr ""
 
+msgid "If this problem persists try to <a href="http://dotclear.org/download">update manually</a>."
+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 ""
Index: locales/en/plugins.po
===================================================================
--- locales/en/plugins.po	(revision 1354)
+++ locales/en/plugins.po	(revision 1501)
@@ -280,4 +280,7 @@
 msgstr ""
 
+msgid "Attachments (%d)"
+msgstr ""
+
 msgid "remove"
 msgstr ""
@@ -852,5 +855,5 @@
 
 #, php-format
-msgid "This will import a single blog backup as new content in the current blog: %s."
+msgid "This will import a single blog backup as new content in the current blog: <strong>%s</strong>."
 msgstr ""
 
Index: locales/eo/main.po
===================================================================
--- locales/eo/main.po	(revision 1425)
+++ locales/eo/main.po	(revision 1499)
@@ -453,5 +453,5 @@
 
 #, php-format
-msgid "You are currently using \"%s\""
+msgid "You are currently using <strong>%s</strong>"
 msgstr ""
 
Index: locales/eo/plugins.po
===================================================================
--- locales/eo/plugins.po	(revision 1354)
+++ locales/eo/plugins.po	(revision 1499)
@@ -835,5 +835,5 @@
 
 #, php-format
-msgid "This will import a single blog backup as new content in the current blog: %s."
+msgid "This will import a single blog backup as new content in the current blog: <strong>%s</strong>."
 msgstr ""
 
Index: locales/es-ar/main.po
===================================================================
--- locales/es-ar/main.po	(revision 1425)
+++ locales/es-ar/main.po	(revision 1499)
@@ -460,5 +460,5 @@
 
 #, php-format
-msgid "You are currently using \"%s\""
+msgid "You are currently using <strong>%s</strong>"
 msgstr "Actualmente usas \"%s\""
 
Index: locales/es-ar/plugins.po
===================================================================
--- locales/es-ar/plugins.po	(revision 1354)
+++ locales/es-ar/plugins.po	(revision 1499)
@@ -844,5 +844,5 @@
 
 #, php-format
-msgid "This will import a single blog backup as new content in the current blog: %s."
+msgid "This will import a single blog backup as new content in the current blog: <strong>%s</strong>."
 msgstr "Esto importará un archivo de resguardo de un blog individual como contenido nuevo del actual blog: %s."
 
Index: locales/es/main.po
===================================================================
--- locales/es/main.po	(revision 1425)
+++ locales/es/main.po	(revision 1499)
@@ -462,5 +462,5 @@
 
 #, php-format
-msgid "You are currently using \"%s\""
+msgid "You are currently using <strong>%s</strong>"
 msgstr "Actualmente está usando «%s»"
 
Index: locales/es/plugins.po
===================================================================
--- locales/es/plugins.po	(revision 1354)
+++ locales/es/plugins.po	(revision 1499)
@@ -849,5 +849,5 @@
 
 #, php-format
-msgid "This will import a single blog backup as new content in the current blog: %s."
+msgid "This will import a single blog backup as new content in the current blog: <strong>%s</strong>."
 msgstr "Esto importará una copia de respaldo de un único blog como nuevo contenido del blog en uso: %s."
 
Index: locales/eu/main.po
===================================================================
--- locales/eu/main.po	(revision 1425)
+++ locales/eu/main.po	(revision 1499)
@@ -453,5 +453,5 @@
 
 #, php-format
-msgid "You are currently using \"%s\""
+msgid "You are currently using <strong>%s</strong>"
 msgstr ""
 
Index: locales/eu/plugins.po
===================================================================
--- locales/eu/plugins.po	(revision 1354)
+++ locales/eu/plugins.po	(revision 1499)
@@ -835,5 +835,5 @@
 
 #, php-format
-msgid "This will import a single blog backup as new content in the current blog: %s."
+msgid "This will import a single blog backup as new content in the current blog: <strong>%s</strong>."
 msgstr ""
 
Index: locales/fr/main.po
===================================================================
--- locales/fr/main.po	(revision 1474)
+++ locales/fr/main.po	(revision 1529)
@@ -95,5 +95,5 @@
 
 msgid "This mode allows you to login without activating any of your plugins. This may be useful to solve compatibility problems"
-msgstr "\"Ce mode vous permet de vous connecter sans activer de plugins. Il peut être utile pour résoudre un problème de compatibilité"
+msgstr "Ce mode vous permet de vous connecter sans activer de plugins. Il peut être utile pour résoudre un problème de compatibilité"
 
 msgid "Disable or delete any plugin suspected to cause trouble, then log out and log back in normally."
@@ -481,6 +481,6 @@
 
 #, php-format
-msgid "You are currently using \"%s\""
-msgstr "Vous utilisez actuellement \"%s\""
+msgid "You are currently using <strong>%s</strong>"
+msgstr "Vous utilisez actuellement <strong>%s</strong>"
 
 msgid "Use selected theme"
@@ -797,5 +797,5 @@
 
 msgid "Show it."
-msgstr "L'afficher"
+msgstr "L'afficher."
 
 #, php-format
@@ -1123,5 +1123,5 @@
 #, 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 "Vous pouvez changer votre langue d'utilisateur dans vos <a href=\"%1$s\">préférences</a> ou changer la langue principale de votre blog dans vos <a href=\"%2$s\">paramètres du blog</a>."
+msgstr "Vous pouvez changer votre langue d'utilisateur dans vos <a href=\"%1$s\">préférences</a> ou changer la langue principale de votre blog dans vos <a href=\"%2$s\">Paramètres du blog</a>."
 
 msgid "Installed languages"
@@ -1990,4 +1990,7 @@
 msgstr "L'archive de Dotclear téléchargée semble être corrompue. Essayer de la <a %s>télécharger</a> à nouveau."
 
+msgid "If this problem persists try to <a href="http://dotclear.org/download">update manually</a>."
+msgstr "Si le problème persiste essayer de <a href="http://dotclear.org/download">mettre à jour manuellement</a>."
+
 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 "Comme les fichiers suivants de votre installation de Dotclear ont été modifiés, votre installation ne peut être mise à jour. Merci de <a href=\"http://fr.dotclear.org/download\">mettre à jour manuellement</a>."
@@ -3065,5 +3068,5 @@
 
 msgid "You can also install themes by uploading or downloading zip files."
-msgstr "Vous pouvez aussi installer des thèmes en les déposant ou en téléchargeant des fichiers zip."
+msgstr "Vous pouvez aussi installer des thèmes en déposant ou en téléchargeant des fichiers zip."
 
 msgid "Add themes to your installation"
@@ -3128,3 +3131,36 @@
 
 msgid "Information about this version"
-psgstr "Informations sur cette version"
+msgstr "Informations sur cette version"
+
+msgid "Updates and modifications"
+msgstr "Mises à jour et modifications"
+
+msgid "Back to user profile"
+msgstr "Retour au profil utilisateur"
+
+msgid "Back to Blog appearance"
+msgstr "Retour à Apparence du blog"
+
+msgid "Edit"
+msgstr "Modifier"
+
+msgid "Display options"
+msgstr "Options d\'affichage"
+
+msgid "Apply filters and display options"
+msgstr "Appliquer les filtres et options d\'affichage"
+
+msgid "Back to entries list"
+msgstr "Retour à la liste des billets"
+
+msgid "New author (author ID):"
+msgstr "Nouvel auteur (identifiant utilisateur) :"
+
+msgid "Hidden"
+msgstr "Masqué"
+
+msgid "Create a new category for the post(s)"
+msgstr "Créer une nouvelle catégorie pour ce(s) billet(s)"
+
+msgid "This category will be created when you will save your post."
+msgstr "Cette catégorie sera créée lorsque vous enregistrerez votre billet."
Index: locales/fr/plugins.po
===================================================================
--- locales/fr/plugins.po	(revision 1480)
+++ locales/fr/plugins.po	(revision 1528)
@@ -56,6 +56,9 @@
 msgstr "Ok"
 
+msgid "Global settings"
+msgstr "Réglages généraux"
+
 msgid "global settings"
-msgstr "Réglages généraux"
+msgstr "réglages généraux"
 
 msgid "Akismet"
@@ -301,4 +304,7 @@
 msgstr "Annexes"
 
+msgid "Attachments (%d)"
+msgstr "Annexes (%s)"
+
 msgid "remove"
 msgstr "supprimer"
@@ -500,5 +506,5 @@
 
 msgid "Import"
-msgstr "Importation"
+msgstr "Importer"
 
 msgid "Blowup Config"
@@ -961,8 +967,8 @@
 #, php-format
 msgid ""
-"This will import a single blog backup as new content in the current blog: %s."
+"This will import a single blog backup as new content in the current blog: <strong>%s</strong>."
 msgstr ""
 "Cela importera une sauvegarde d'un blog comme nouveau contenu du blog "
-"courant : %s."
+"courant : <strong>%s</strong>."
 
 msgid "Upload a backup file"
@@ -1543,5 +1549,5 @@
 
 msgid "Actions for this tag"
-msgstr "Actions pour ce mot-clé"
+msgstr "Actions sur ce mot-clé"
 
 msgid "Edit tag name:"
@@ -1937,2 +1943,14 @@
 msgid "Blog settings"
 msgstr "Paramètres du blog"
+
+msgid "Move widgets from this list to one of the sidebars."
+msgstr "Déplacez des widgets de cette liste vers l'un des volets."
+
+msgid "Short"
+msgstr "Court"
+
+msgid "Extended"
+msgstr "Étendu"
+
+msgid "List of entries with the tag “%s”"
+msgstr "Liste des billets avec le mot-clé “%s”"
Index: locales/hu/main.po
===================================================================
--- locales/hu/main.po	(revision 1425)
+++ locales/hu/main.po	(revision 1499)
@@ -465,5 +465,5 @@
 
 #, php-format
-msgid "You are currently using \"%s\""
+msgid "You are currently using <strong>%s</strong>"
 msgstr "A \"%s\"-t használod"
 
Index: locales/hu/plugins.po
===================================================================
--- locales/hu/plugins.po	(revision 1354)
+++ locales/hu/plugins.po	(revision 1499)
@@ -845,5 +845,5 @@
 
 #, php-format
-msgid "This will import a single blog backup as new content in the current blog: %s."
+msgid "This will import a single blog backup as new content in the current blog: <strong>%s</strong>."
 msgstr "Ezzel egy egyedüli blogot fogok importálni új tartalomként ide: %s"
 
Index: locales/it/main.po
===================================================================
--- locales/it/main.po	(revision 1425)
+++ locales/it/main.po	(revision 1499)
@@ -456,5 +456,5 @@
 
 #, php-format
-msgid "You are currently using \"%s\""
+msgid "You are currently using <strong>%s</strong>"
 msgstr "Attualmente è in uso \"%s\""
 
Index: locales/it/plugins.po
===================================================================
--- locales/it/plugins.po	(revision 1354)
+++ locales/it/plugins.po	(revision 1499)
@@ -835,5 +835,5 @@
 
 #, php-format
-msgid "This will import a single blog backup as new content in the current blog: %s."
+msgid "This will import a single blog backup as new content in the current blog: <strong>%s</strong>."
 msgstr ""
 
Index: locales/ja/main.po
===================================================================
--- locales/ja/main.po	(revision 1425)
+++ locales/ja/main.po	(revision 1499)
@@ -465,5 +465,5 @@
 
 #, php-format
-msgid "You are currently using \"%s\""
+msgid "You are currently using <strong>%s</strong>"
 msgstr "現在使用中のテーマ： %s"
 
Index: locales/ja/plugins.po
===================================================================
--- locales/ja/plugins.po	(revision 1354)
+++ locales/ja/plugins.po	(revision 1499)
@@ -846,5 +846,5 @@
 
 #, php-format
-msgid "This will import a single blog backup as new content in the current blog: %s."
+msgid "This will import a single blog backup as new content in the current blog: <strong>%s</strong>."
 msgstr "これは単独ブログのバックアップを、現在のブログ「%s」の新しいコンテンツとしてインポートします。"
 
Index: locales/ko/main.po
===================================================================
--- locales/ko/main.po	(revision 1425)
+++ locales/ko/main.po	(revision 1499)
@@ -464,5 +464,5 @@
 
 #, php-format
-msgid "You are currently using \"%s\""
+msgid "You are currently using <strong>%s</strong>"
 msgstr "현재 사용 중인 테마 : \"%s\""
 
Index: locales/ko/plugins.po
===================================================================
--- locales/ko/plugins.po	(revision 1354)
+++ locales/ko/plugins.po	(revision 1499)
@@ -846,5 +846,5 @@
 
 #, php-format
-msgid "This will import a single blog backup as new content in the current blog: %s."
+msgid "This will import a single blog backup as new content in the current blog: <strong>%s</strong>."
 msgstr "이 과정은, 백업된 단일 블로그 내용을 현재 블로그 (%s) 의 새 내용으로 가져옵니다."
 
Index: locales/lt/main.po
===================================================================
--- locales/lt/main.po	(revision 1425)
+++ locales/lt/main.po	(revision 1499)
@@ -432,5 +432,5 @@
 
 #, php-format
-msgid "You are currently using \"%s\""
+msgid "You are currently using <strong>%s</strong>"
 msgstr "Šiuo metu jūs naudojate \"%s\""
 
Index: locales/lt/plugins.po
===================================================================
--- locales/lt/plugins.po	(revision 1126)
+++ locales/lt/plugins.po	(revision 1499)
@@ -808,5 +808,5 @@
 
 #, php-format
-msgid "This will import a single blog backup as new content in the current blog: %s."
+msgid "This will import a single blog backup as new content in the current blog: <strong>%s</strong>."
 msgstr "Importuojama viena blogo atsarginė kopija kaip naujas turinys jūsų bloge: %s."
 
Index: locales/nl/main.po
===================================================================
--- locales/nl/main.po	(revision 1425)
+++ locales/nl/main.po	(revision 1499)
@@ -454,5 +454,5 @@
 
 #, php-format
-msgid "You are currently using \"%s\""
+msgid "You are currently using <strong>%s</strong>"
 msgstr "Je gebruikt nu \"%s\""
 
Index: locales/nl/plugins.po
===================================================================
--- locales/nl/plugins.po	(revision 1354)
+++ locales/nl/plugins.po	(revision 1499)
@@ -836,5 +836,5 @@
 
 #, php-format
-msgid "This will import a single blog backup as new content in the current blog: %s."
+msgid "This will import a single blog backup as new content in the current blog: <strong>%s</strong>."
 msgstr ""
 
Index: locales/oc/main.po
===================================================================
--- locales/oc/main.po	(revision 1425)
+++ locales/oc/main.po	(revision 1499)
@@ -455,5 +455,5 @@
 
 #, php-format
-msgid "You are currently using \"%s\""
+msgid "You are currently using <strong>%s</strong>"
 msgstr ""
 
Index: locales/oc/plugins.po
===================================================================
--- locales/oc/plugins.po	(revision 1354)
+++ locales/oc/plugins.po	(revision 1499)
@@ -835,5 +835,5 @@
 
 #, php-format
-msgid "This will import a single blog backup as new content in the current blog: %s."
+msgid "This will import a single blog backup as new content in the current blog: <strong>%s</strong>."
 msgstr ""
 
Index: locales/pl/main.po
===================================================================
--- locales/pl/main.po	(revision 1425)
+++ locales/pl/main.po	(revision 1499)
@@ -455,5 +455,5 @@
 
 #, php-format
-msgid "You are currently using \"%s\""
+msgid "You are currently using <strong>%s</strong>"
 msgstr "Aktualnie używasz \"%s\""
 
Index: locales/pl/plugins.po
===================================================================
--- locales/pl/plugins.po	(revision 1354)
+++ locales/pl/plugins.po	(revision 1499)
@@ -840,5 +840,5 @@
 
 #, php-format
-msgid "This will import a single blog backup as new content in the current blog: %s."
+msgid "This will import a single blog backup as new content in the current blog: <strong>%s</strong>."
 msgstr "Zaimportuje kopię zapasową pojedynczego bloga jako nową zawartość w aktualnym blogu: %s."
 
Index: locales/pt-br/main.po
===================================================================
--- locales/pt-br/main.po	(revision 1425)
+++ locales/pt-br/main.po	(revision 1499)
@@ -470,5 +470,5 @@
 
 #, php-format
-msgid "You are currently using \"%s\""
+msgid "You are currently using <strong>%s</strong>"
 msgstr ""
 
Index: locales/pt-br/plugins.po
===================================================================
--- locales/pt-br/plugins.po	(revision 1354)
+++ locales/pt-br/plugins.po	(revision 1499)
@@ -835,5 +835,5 @@
 
 #, php-format
-msgid "This will import a single blog backup as new content in the current blog: %s."
+msgid "This will import a single blog backup as new content in the current blog: <strong>%s</strong>."
 msgstr ""
 
Index: locales/pt/main.po
===================================================================
--- locales/pt/main.po	(revision 1425)
+++ locales/pt/main.po	(revision 1499)
@@ -461,5 +461,5 @@
 
 #, php-format
-msgid "You are currently using \"%s\""
+msgid "You are currently using <strong>%s</strong>"
 msgstr "Você está a usar \"%s\""
 
Index: locales/pt/plugins.po
===================================================================
--- locales/pt/plugins.po	(revision 1354)
+++ locales/pt/plugins.po	(revision 1499)
@@ -849,5 +849,5 @@
 
 #, php-format
-msgid "This will import a single blog backup as new content in the current blog: %s."
+msgid "This will import a single blog backup as new content in the current blog: <strong>%s</strong>."
 msgstr "Isto irá importar uma copia de simples blog como novo conteúdo no blog actual: %s."
 
Index: locales/ro/main.po
===================================================================
--- locales/ro/main.po	(revision 1425)
+++ locales/ro/main.po	(revision 1499)
@@ -455,5 +455,5 @@
 
 #, php-format
-msgid "You are currently using \"%s\""
+msgid "You are currently using <strong>%s</strong>"
 msgstr ""
 
Index: locales/ro/plugins.po
===================================================================
--- locales/ro/plugins.po	(revision 1354)
+++ locales/ro/plugins.po	(revision 1499)
@@ -845,5 +845,5 @@
 
 #, php-format
-msgid "This will import a single blog backup as new content in the current blog: %s."
+msgid "This will import a single blog backup as new content in the current blog: <strong>%s</strong>."
 msgstr ""
 
Index: locales/ru/main.po
===================================================================
--- locales/ru/main.po	(revision 1425)
+++ locales/ru/main.po	(revision 1499)
@@ -460,5 +460,5 @@
 
 #, php-format
-msgid "You are currently using \"%s\""
+msgid "You are currently using <strong>%s</strong>"
 msgstr "В данный момент вы используете \"%s\""
 
Index: locales/ru/plugins.po
===================================================================
--- locales/ru/plugins.po	(revision 1354)
+++ locales/ru/plugins.po	(revision 1499)
@@ -841,5 +841,5 @@
 
 #, php-format
-msgid "This will import a single blog backup as new content in the current blog: %s."
+msgid "This will import a single blog backup as new content in the current blog: <strong>%s</strong>."
 msgstr "Это импортирует резервный файл одного блога как новое содержимое в текущий блог: %s."
 
Index: locales/sr/main.po
===================================================================
--- locales/sr/main.po	(revision 1425)
+++ locales/sr/main.po	(revision 1499)
@@ -460,5 +460,5 @@
 
 #, php-format
-msgid "You are currently using \"%s\""
+msgid "You are currently using <strong>%s</strong>"
 msgstr "Vous utilisez actuellement \"%s\""
 
Index: locales/sr/plugins.po
===================================================================
--- locales/sr/plugins.po	(revision 1354)
+++ locales/sr/plugins.po	(revision 1499)
@@ -835,5 +835,5 @@
 
 #, php-format
-msgid "This will import a single blog backup as new content in the current blog: %s."
+msgid "This will import a single blog backup as new content in the current blog: <strong>%s</strong>."
 msgstr ""
 
Index: locales/sv/main.po
===================================================================
--- locales/sv/main.po	(revision 1425)
+++ locales/sv/main.po	(revision 1499)
@@ -453,5 +453,5 @@
 
 #, php-format
-msgid "You are currently using \"%s\""
+msgid "You are currently using <strong>%s</strong>"
 msgstr ""
 
Index: locales/sv/plugins.po
===================================================================
--- locales/sv/plugins.po	(revision 1354)
+++ locales/sv/plugins.po	(revision 1499)
@@ -835,5 +835,5 @@
 
 #, php-format
-msgid "This will import a single blog backup as new content in the current blog: %s."
+msgid "This will import a single blog backup as new content in the current blog: <strong>%s</strong>."
 msgstr ""
 
Index: locales/te/main.po
===================================================================
--- locales/te/main.po	(revision 1425)
+++ locales/te/main.po	(revision 1499)
@@ -458,5 +458,5 @@
 
 #, php-format
-msgid "You are currently using \"%s\""
+msgid "You are currently using <strong>%s</strong>"
 msgstr "మీరు ప్రస్తుతం \"%s\" ని వాడుతున్నారు"
 
Index: locales/te/plugins.po
===================================================================
--- locales/te/plugins.po	(revision 1354)
+++ locales/te/plugins.po	(revision 1499)
@@ -838,5 +838,5 @@
 
 #, php-format
-msgid "This will import a single blog backup as new content in the current blog: %s."
+msgid "This will import a single blog backup as new content in the current blog: <strong>%s</strong>."
 msgstr ""
 
Index: locales/tr/main.po
===================================================================
--- locales/tr/main.po	(revision 1425)
+++ locales/tr/main.po	(revision 1499)
@@ -460,5 +460,5 @@
 
 #, php-format
-msgid "You are currently using \"%s\""
+msgid "You are currently using <strong>%s</strong>"
 msgstr "Şimdi \"%s\" kullanıyorsunuz."
 
Index: locales/tr/plugins.po
===================================================================
--- locales/tr/plugins.po	(revision 1354)
+++ locales/tr/plugins.po	(revision 1499)
@@ -839,5 +839,5 @@
 
 #, php-format
-msgid "This will import a single blog backup as new content in the current blog: %s."
+msgid "This will import a single blog backup as new content in the current blog: <strong>%s</strong>."
 msgstr ""
 
Index: locales/zh-cn/main.po
===================================================================
--- locales/zh-cn/main.po	(revision 1425)
+++ locales/zh-cn/main.po	(revision 1499)
@@ -458,5 +458,5 @@
 
 #, php-format
-msgid "You are currently using \"%s\""
+msgid "You are currently using <strong>%s</strong>"
 msgstr "您正在使用“%s”"
 
Index: locales/zh-cn/plugins.po
===================================================================
--- locales/zh-cn/plugins.po	(revision 1354)
+++ locales/zh-cn/plugins.po	(revision 1499)
@@ -847,5 +847,5 @@
 
 #, php-format
-msgid "This will import a single blog backup as new content in the current blog: %s."
+msgid "This will import a single blog backup as new content in the current blog: <strong>%s</strong>."
 msgstr "这将会把一个单一博客的备份作为新内容导入到当前博客：%s。"
 
Index: plugins/aboutConfig/index.php
===================================================================
--- plugins/aboutConfig/index.php	(revision 1474)
+++ plugins/aboutConfig/index.php	(revision 1526)
@@ -189,5 +189,5 @@
 </div>
 
-<div id="global" class="multi-part" title="<?php echo __('global settings'); ?>">
+<div id="global" class="multi-part" title="<?php echo __('Global settings'); ?>">
 
 <?php
@@ -210,6 +210,6 @@
 		'<form action="plugin.php" method="post">'.
 		'<p class="anchor-nav">'.
-		'<label for="gs_nav" class="classic">'.__('Goto:').'</label> '.form::combo('gs_nav',$ns_combo).
-		' <input type="submit" value="'.__('Ok').'" id="gs_submit" />'.
+		'<label for="gs_nav" class="classic">'.__('Goto:').'</label> '.form::combo('gs_nav',$ns_combo).' '.
+		'<input type="submit" value="'.__('Ok').'" id="gs_submit" />'.
 		'<input type="hidden" name="p" value="aboutConfig" />'.
 		$core->formNonce().'</p></form>';
Index: plugins/antispam/_admin.php
===================================================================
--- plugins/antispam/_admin.php	(revision 1474)
+++ plugins/antispam/_admin.php	(revision 1519)
@@ -60,5 +60,5 @@
 			echo '<p>'.sprintf(__('All spam comments older than %s day(s) will be automatically deleted.'), $ttl).' '.
 			sprintf(__('You can modify this duration in the %s'),'<a href="blog_pref.php#antispam_moderation_ttl"> '.__('Blog settings').'</a>').
-			'</p>';
+			'.</p>';
 		}
 	}
@@ -68,10 +68,10 @@
 		$ttl = $settings->antispam->antispam_moderation_ttl;
 		echo
-		'<fieldset><legend>Antispam</legend>'.
+		'<div class="fieldset"><h4>Antispam</h4>'.
 		'<p><label for="antispam_moderation_ttl" class="classic">'.__('Delete junk comments older than').' '.
 		form::field('antispam_moderation_ttl', 3, 3, $ttl).
 		' '.__('days').
 		'</label></p>'.
-		'</fieldset>';
+		'</div>';
 	}
 	
Index: plugins/antispam/filters/class.dc.filter.ip.php
===================================================================
--- plugins/antispam/filters/class.dc.filter.ip.php	(revision 1454)
+++ plugins/antispam/filters/class.dc.filter.ip.php	(revision 1512)
@@ -17,8 +17,4 @@
 	public $has_gui = true;
 
-	private $style_list = 'height: 200px; overflow: auto; margin-bottom: 1em; ';
-	private $style_p = 'margin: 1px 0 0 0; padding: 0.2em 0.5em; ';
-	private $style_global = 'background: #ccff99; ';
-
 	private $con;
 	private $table;
@@ -151,5 +147,5 @@
 			'<form action="'.html::escapeURL($url).'" method="post">'.
 			'<h3>' . __('IP list') . '</h3>'.
-			'<div style="'.$this->style_list.'">';
+			'<div class="antispam">';
 
 			$res_global = '';
@@ -163,12 +159,12 @@
 
 				$disabled_ip = false;
-				$p_style = $this->style_p;
+				$p_style = '';
 				if (!$rs->blog_id) {
 					$disabled_ip = !$core->auth->isSuperAdmin();
-					$p_style .= $this->style_global;
+					$p_style .= ' global';
 				}
 
 				$item =
-				'<p style="'.$p_style.'"><label class="classic" for="'.$type.'-ip-'.$rs->rule_id.'">'.
+				'<p class="'.$p_style.'"><label class="classic" for="'.$type.'-ip-'.$rs->rule_id.'">'.
 				form::checkbox(array('delip[]',$type.'-ip-'.$rs->rule_id),$rs->rule_id,false,'','',$disabled_ip).' '.
 				html::escapeHTML($pattern).
Index: plugins/antispam/filters/class.dc.filter.iplookup.php
===================================================================
--- plugins/antispam/filters/class.dc.filter.iplookup.php	(revision 1468)
+++ plugins/antispam/filters/class.dc.filter.iplookup.php	(revision 1499)
@@ -76,6 +76,6 @@
 
 		$res .=
-		'<form action="'.html::escapeURL($url).'" method="post">'.
-		'<fieldset><legend>' . __('IP Lookup servers') . '</legend>'.
+		'<form action="'.html::escapeURL($url).'" method="post" class="fieldset">'.
+		'<h3>' . __('IP Lookup servers') . '</h3>'.
 		'<p><label for="bls">'.__('Add here a coma separated list of servers.').'</label>'.
 		form::textarea('bls',40,3,html::escapeHTML($bls),'maximal').
@@ -83,5 +83,4 @@
 		'<p><input type="submit" value="'.__('Save').'" /></p>'.
 		$this->core->formNonce().'</p>'.
-		'</fieldset>'.
 		'</form>';
 
Index: plugins/antispam/filters/class.dc.filter.words.php
===================================================================
--- plugins/antispam/filters/class.dc.filter.words.php	(revision 1454)
+++ plugins/antispam/filters/class.dc.filter.words.php	(revision 1512)
@@ -17,8 +17,4 @@
 	public $name = 'Bad Words';
 
-	private $style_list = 'height: 200px; overflow: auto; margin-bottom: 1em; ';
-	private $style_p = 'margin: 1px 0 0 0; padding: 0.2em 0.5em; ';
-	private $style_global = 'background: #ccff99; ';
-
 	private $con;
 	private $table;
@@ -143,5 +139,5 @@
 			'<form action="'.html::escapeURL($url).'" method="post" class="fieldset">'.
 			'<h3>' . __('List of bad words') . '</h3>'.
-			'<div style="'.$this->style_list.'">';
+			'<div class="antispam">';
 
 			$res_global = '';
@@ -150,11 +146,13 @@
 			{
 				$disabled_word = false;
-				$p_style = $this->style_p;
+
+				$p_style = '';
+
 				if (!$rs->blog_id) {
 					$disabled_word = !$core->auth->isSuperAdmin();
-					$p_style .= $this->style_global;
+					$p_style .= ' global';
 				}
 
-				$item = '<p style="'.$p_style.'"><label class="classic" for="word-'.$rs->rule_id.'">'.
+				$item = '<p class="'.$p_style.'"><label class="classic" for="word-'.$rs->rule_id.'">'.
 					form::checkbox(array('swd[]', 'word-'.$rs->rule_id),$rs->rule_id,false,'','',$disabled_word).' '.
 					html::escapeHTML($rs->rule_content).
Index: plugins/antispam/inc/lib.dc.antispam.php
===================================================================
--- plugins/antispam/inc/lib.dc.antispam.php	(revision 1179)
+++ plugins/antispam/inc/lib.dc.antispam.php	(revision 1478)
@@ -75,5 +75,5 @@
 		if (($count = self::countSpam($core)) > 0) {
 			$str = ($count > 1) ? __('(including %d spam comments)') : __('(including %d spam comment)');
-			$icons['comments'][0] .= '</a> <br /><a href="comments.php?status=-2"><span>'.sprintf($str,$count).'</span>';
+			$icons['comments'][0] .= '</span></a> <br /><a href="comments.php?status=-2"><span>'.sprintf($str,$count);
 		}
 	}
@@ -83,5 +83,5 @@
 		if (($count = self::countSpam($core)) > 0) {
 			$str = ($count > 1) ? __('(including %d spam comments)') : __('(including %d spam comment)');
-			return '</a> <br /><a href="comments.php?status=-2"><span>'.sprintf($str,$count).'</span>';
+			return '</span></a> <br /><a href="comments.php?status=-2"><span>'.sprintf($str,$count);
 		} else {
 			return '';
Index: plugins/antispam/index.php
===================================================================
--- plugins/antispam/index.php	(revision 1474)
+++ plugins/antispam/index.php	(revision 1528)
@@ -147,5 +147,5 @@
 	echo
 	'<form action="'.$p_url.'" method="post" class="fieldset">'.
-	'<h3>'.__('Information').'</h3>';
+	'<h3>'.__('Informations').'</h3>';
 
 	if (!empty($_GET['del'])) {
@@ -171,5 +171,5 @@
 		echo '<p>'.sprintf(__('All spam comments older than %s day(s) will be automatically deleted.'), $moderationTTL).' '.
 		sprintf(__('You can modify this duration in the %s'),'<a href="blog_pref.php#antispam_moderation_ttl"> '.__('Blog settings').'</a>').
-			'</p>';
+			'.</p>';
 	}
 	echo '</form>';
Index: plugins/antispam/style.css
===================================================================
--- plugins/antispam/style.css	(revision 1330)
+++ plugins/antispam/style.css	(revision 1516)
@@ -21,2 +21,15 @@
 	background-image: url(index.php?pf=antispam/feed.png);
 }
+/* ---------------------------------------------------------- listing of IPs / bad words */
+.antispam {
+	height: 200px;
+	overflow: auto;
+	margin-bottom: 1em;
+}
+.antispam p {
+	margin: 1px 0 0 0;
+	padding: 0.2em 0.5em;
+}
+.antispam p.global {
+	background: #fec;
+}
Index: plugins/attachments/_admin.php
===================================================================
--- plugins/attachments/_admin.php	(revision 1468)
+++ plugins/attachments/_admin.php	(revision 1501)
@@ -29,5 +29,7 @@
 			$core =& $GLOBALS['core'];
 			$post_media = $core->media->getPostMedia($post->post_id);
-			$item = '<h5 class="clear s-attachments">'.__('Attachments').'</h5>';
+			$nb_media = count($post_media);
+			$title = !$nb_media ? __('Attachments') : sprintf(__('Attachments (%d)'),$nb_media);
+			$item = '<h5 class="clear s-attachments">'.$title.'</h5>';
 			foreach ($post_media as $f)
 			{
Index: plugins/blogroll/_admin.php
===================================================================
--- plugins/blogroll/_admin.php	(revision 1296)
+++ plugins/blogroll/_admin.php	(revision 1502)
@@ -14,4 +14,6 @@
 $core->addBehavior('adminDashboardIcons','blogroll_dashboard');
 $core->addBehavior('adminDashboardFavs','blogroll_dashboard_favs');
+$core->addBehavior('adminUsersActionsHeaders','blogroll_users_actions_headers');
+
 function blogroll_dashboard($core,$icons)
 {
@@ -24,4 +26,8 @@
 		'usage,contentadmin',null,null));
 }
+function blogroll_users_actions_headers()
+{
+	return dcPage::jsLoad('index.php?pf=blogroll/_users_actions.js');
+}
 
 $_menu['Blog']->addItem(__('Blogroll'),'plugin.php?p=blogroll','index.php?pf=blogroll/icon-small.png',
Index: plugins/blogroll/_users_actions.js
===================================================================
--- plugins/blogroll/_users_actions.js	(revision 1502)
+++ plugins/blogroll/_users_actions.js	(revision 1502)
@@ -0,0 +1,47 @@
+jQuery.fn.updateBlogrollPermissionsForm = function() {
+	return this.each(function() {
+		
+		var perms = {};
+		var re = /^perm\[(.+?)\]\[(.+?)\]$/;
+		var e,prop;
+		
+		// Building a nice object of form elements
+		for (var i=0; i<this.elements.length; i++) {
+			e = this.elements[i];
+			
+			if (e.name == undefined) {
+				continue;
+			}
+			var prop;
+			prop = e.name.match(re);
+			if (!prop) {
+				continue;
+			}
+			if (perms[prop[1]] == undefined) {
+				perms[prop[1]] = {};
+			}
+			perms[prop[1]][prop[2]] = e;
+			
+			// select related permissions for admin
+			if (prop[2] == 'admin') {
+				if (e.checked) {
+					admin(e,perms,re);
+				}
+				$(e).click(function(){
+					admin(this,perms,re);
+				});
+			}
+		}
+		
+		function admin(E,perms,re) {
+					P = E.name.match(re);
+					
+					perms[P[1]]['blogroll'].checked = E.checked;
+					perms[P[1]]['blogroll'].disabled = E.checked;
+		}
+	});
+};
+
+$(function() {
+	$('#permissions-form').updateBlogrollPermissionsForm();
+});
Index: plugins/blogroll/index.php
===================================================================
--- plugins/blogroll/index.php	(revision 1454)
+++ plugins/blogroll/index.php	(revision 1529)
@@ -208,4 +208,7 @@
 
 <div class="multi-part" title="<?php echo __('Blogroll'); ?>">
+
+<?php if (!$rs->isEmpty()) { ?>
+
 <form action="plugin.php" method="post" id="links-form">
 <table class="maximal dragable">
@@ -251,24 +254,27 @@
 </tbody>
 </table>
-<?php
-	if (!$rs->isEmpty()) {
-		echo
-		'<div class="two-cols">'.
-		'<p class="col">'.form::hidden('links_order','').
-		form::hidden(array('p'),'blogroll').
-		$core->formNonce().
-		'<input type="submit" name="saveorder" value="'.__('Save order').'" /></p>'.
-		
-		'<p class="col right"><input type="submit" class="delete" name="removeaction"'.
-		' value="'.__('Delete selected links').'" '.
-		'onclick="return window.confirm(\''.html::escapeJS(
-			__('Are you sure you want to delete selected links?')).'\');" /></p>'.
-		'</div>';
-	} else {
-		echo
-		'<div><p>'.__('The link list is empty.').'</p></div>';
-	}
-?>
+
+<div class="two-cols">
+<p class="col">
+<?php
+	echo 
+	form::hidden('links_order','').
+	form::hidden(array('p'),'blogroll').
+	$core->formNonce();
+?>
+<input type="submit" name="saveorder" value="<?php echo __('Save order'); ?>" /></p>
+<p class="col right"><input type="submit" class="delete" name="removeaction"
+	 value="<?php echo __('Delete selected links'); ?>" 
+	 onclick="return window.confirm('
+	 <?php echo html::escapeJS(__('Are you sure you want to delete selected links?')); ?>');" /></p>
+</div>
 </form>
+
+<?php
+} else {
+	echo '<div><p>'.__('The link list is empty.').'</p></div>';
+}
+?>
+
 </div>
 
Index: plugins/blowupConfig/config.js
===================================================================
--- plugins/blowupConfig/config.js	(revision 89)
+++ plugins/blowupConfig/config.js	(revision 1499)
@@ -49,5 +49,5 @@
 	
 	$('#theme_config').prepend(styles_combo);
-	$(styles_combo).wrap('<fieldset></fieldset>').before('<legend>' + dotclear.msg.predefined_styles + '</legend>').wrap('<p></p>');
+	$(styles_combo).wrap('<div class="fieldset"></div>').before('<h3>' + dotclear.msg.predefined_styles + '</h3>').wrap('<p></p>');
 	
 	$(styles_combo).change(function() {
@@ -62,5 +62,5 @@
 	
 	// Code import
-	var e = $('#bu_export ~ fieldset:first');
+	var e = $('#bu_export_content');
 	e.toggle();
 	
Index: plugins/blowupConfig/index.php
===================================================================
--- plugins/blowupConfig/index.php	(revision 1454)
+++ plugins/blowupConfig/index.php	(revision 1526)
@@ -235,5 +235,5 @@
 
 echo
-'<p><a class="back" href="blog_theme.php">'.__('back').'</a></p>';
+'<p><a class="back" href="blog_theme.php">'.__('Back to Blog appearance').'</a></p>';
 
 
@@ -249,5 +249,6 @@
 echo '<form id="theme_config" action="'.$p_url.'" method="post" enctype="multipart/form-data">';
 
-echo '<fieldset><legend>'.__('General').'</legend>';
+echo '<div class="fieldset"><h3>'.__('Customization').'</h3>'.
+'<h4>'.__('General').'</h4>';
 
 if ($can_write_images) {
@@ -272,7 +273,6 @@
 '<p class="field"><label for="body_line_height">'.__('Text line height:').'</label> '.
 form::field('body_line_height',7,7,$blowup_user['body_line_height']).'</p>'.
-'</fieldset>'.
-
-'<fieldset><legend>'.__('Links').'</legend>'.
+
+'<h4 class="border-top">'.__('Links').'</h4>'.
 '<p class="field"><label for="body_link_c">'.__('Links color:').'</label> '.
 form::field('body_link_c',7,7,$blowup_user['body_link_c'],'colorpicker').'</p>'.
@@ -283,7 +283,6 @@
 '<p class="field"><label for="body_link_f_c">'.__('Focus links color:').'</label> '.
 form::field('body_link_f_c',7,7,$blowup_user['body_link_f_c'],'colorpicker').'</p>'.
-'</fieldset>'.
-
-'<fieldset><legend>'.__('Page top').'</legend>';
+
+'<h4 class="border-top">'.__('Page top').'</h4>';
 
 if ($can_write_images) {
@@ -310,6 +309,5 @@
 
 '<p class="field"><label for="blog_title_p">'.__('Main title position (x:y)').'</label> '.
-form::field('blog_title_p',7,7,$blowup_user['blog_title_p']).'</p>'.
-'</fieldset>';
+form::field('blog_title_p',7,7,$blowup_user['blog_title_p']).'</p>';
 
 if ($can_write_images) {
@@ -321,5 +319,5 @@
 
 	echo
-	'<fieldset><legend>'.__('Top image').'</legend>'.
+	'<h4 class="border-top">'.__('Top image').'</h4>'.
 	'<p class="field"><label for="top_image">'.__('Top image').'</label> '.
 	form::combo('top_image',$top_images,($blowup_user['top_image'] ? $blowup_user['top_image'] : 'default')).'</p>'.
@@ -331,13 +329,12 @@
 	'</p>'.
 
-	'<h3>'.__('Preview').'</h3>'.
+	'<h5>'.__('Preview').'</h5>'.
 	'<div class="grid" style="width:800px;border:1px solid #ccc;">'.
 	'<img style="display:block;" src="'.$preview_image.'" alt="" id="image-preview" />'.
-	'</div>'.
-	'</fieldset>';
-}
-
-echo
-'<fieldset><legend>'.__('Sidebar').'</legend>'.
+	'</div>';
+}
+
+echo
+'<h4 class="border-top">'.__('Sidebar').'</h4>'.
 '<p class="field"><label for="sidebar_position">'.__('Sidebar position:').'</label> '.
 form::combo('sidebar_position',array(__('right')=>'right',__('left')=>'left'),$blowup_user['sidebar_position']).'</p>'.
@@ -383,5 +380,5 @@
 '</fieldset>'.
 
-'<fieldset><legend>'.__('Entries').'</legend>'.
+'<h4 class="border-top">'.__('Entries').'</h4>'.
 '<p class="field"><label for="date_title_f">'.__('Date title font:').'</label> '.
 form::combo('date_title_f',blowupConfig::fontsList(),$blowup_user['date_title_f']).'</p>'.
@@ -421,7 +418,6 @@
 '<p class="field"><label for="post_commentmy_c">'.__('My comment text color:').'</label> '.
 form::field('post_commentmy_c',7,7,$blowup_user['post_commentmy_c'],'colorpicker').'</p>'.
-'</fieldset>'.
-
-'<fieldset><legend>'.__('Footer').'</legend>'.
+
+'<h4 class="border-top">'.__('Footer').'</h4>'.
 '<p class="field"><label for="footer_f">'.__('Footer font:').'</label> '.
 form::combo('footer_f',blowupConfig::fontsList(),$blowup_user['footer_f']).'</p>'.
@@ -437,13 +433,12 @@
 
 '<p class="field"><label for="footer_bg_c">'.__('Footer background color:').'</label> '.
-form::field('footer_bg_c',7,7,$blowup_user['footer_bg_c'],'colorpicker').'</p>'.
-'</fieldset>';
-
-echo
-'<fieldset><legend>'.__('Additional CSS').'</legend>'.
+form::field('footer_bg_c',7,7,$blowup_user['footer_bg_c'],'colorpicker').'</p>';
+
+echo
+'<h4 class="border-top">'.__('Additional CSS').'</h4>'.
 '<p><label for="extra_css">'.__('Any additional CSS styles (must be written using the CSS syntax):').'</label> '.
 form::textarea('extra_css',72,5,html::escapeHTML($blowup_user['extra_css']),'maximal','',false,'title="'.__('Additional CSS').'"').
 '</p>'.
-'</fieldset>';
+'</div>';
 
 
@@ -461,8 +456,11 @@
 }
 echo
-'<h3 id="bu_export">'.__('Configuration import / export').'</h3><fieldset>'.
+'<div class="fieldset">'.
+'<h3 id="bu_export">'.__('Configuration import / export').'</h3>'.
+'<div id="bu_export_content">'.
 '<p>'.__('You can share your configuration using the following code. To apply a configuration, paste the code, click on "Apply code" and save.').'</p>'.
 '<p>'.form::textarea('export_code',72,5,implode('; ',$tmp_array),'maximal','',false,'title="'.__('Copy this code:').'"').'</p>'.
-'</fieldset>';
+'</div>'.
+'</div>';
 
 echo
Index: plugins/daInstaller/_admin.php
===================================================================
--- plugins/daInstaller/_admin.php	(revision 1046)
+++ plugins/daInstaller/_admin.php	(revision 1505)
Index: plugins/daInstaller/_install.php
===================================================================
--- plugins/daInstaller/_install.php	(revision 1046)
+++ plugins/daInstaller/_install.php	(revision 1505)
Index: plugins/daInstaller/index.php
===================================================================
--- plugins/daInstaller/index.php	(revision 1454)
+++ plugins/daInstaller/index.php	(revision 1505)
@@ -298,19 +298,17 @@
 '<!-- Search -->'.
 '<div class="multi-part" id="search" title="'.__('Search').'">'.
-	'<fieldset><legend>'.__('Search options').
-	'</legend>'.
-	'<form method="get" action="'.$p_url.'">'.
+	'<form method="get" action="'.$p_url.'" class="fieldset">'.
+	'<h3>'.__('Search').'</h3>'.
 	'<p>'.form::hidden('p','daInstaller').
 	'<label for="q" class="classic">'.__('Query:').'&nbsp;</label> '.
-	form::field('q',30,255,html::escapeHTML($q)).
-	'<label for="mode" class="classic">'.
+	form::field('q',30,255,html::escapeHTML($q)).'</p>'.
+	'<p><label for="mode" class="classic">'.
 	form::radio(array('mode','mode'),'plugins',$mode == 'plugins').
 	' '.__('Plugins').'&nbsp;</label> '.
 	'<label for="mode2" class="classic">'.
-	form::radio(array('mode','mode2'),'themes',$mode == 'themes')
-	.' '.__('Themes').'&nbsp;</label> '.
-	'<input type="submit" value="'.__('Search').'" /></p>'.
-	'</form>'.
-	'</fieldset>';
+	form::radio(array('mode','mode2'),'themes',$mode == 'themes').
+	' '.__('Themes').'&nbsp;</label></p>'.
+	'<p><input type="submit" value="'.__('Search').'" /></p>'.
+	'</form>';
 if (!empty($q)) {
 	echo '<p><strong>'.sprintf(__('%u %s found'),$s_m_nb,__($mode)).'</strong></p>';
Index: plugins/importExport/inc/class.dc.export.flat.php
===================================================================
--- plugins/importExport/inc/class.dc.export.flat.php	(revision 840)
+++ plugins/importExport/inc/class.dc.export.flat.php	(revision 1499)
@@ -191,6 +191,6 @@
 	{
 		echo
-		'<form action="'.$this->getURL(true).'" method="post">'.
-		'<fieldset><legend>'.__('Single blog').'</legend>'.
+		'<form action="'.$this->getURL(true).'" method="post" class="fieldset">'.
+		'<h3>'.__('Single blog').'</h3>'.
 		'<p>'.sprintf(__('This will create an export of your current blog: %s'),html::escapeHTML($this->core->blog->name)).'</p>'.
 		
@@ -211,5 +211,4 @@
 		$this->core->formNonce().'</p>'.
 		
-		'</fieldset>'.
 		'</form>';
 		
@@ -217,6 +216,6 @@
 		{
 			echo
-			'<form action="'.$this->getURL(true).'" method="post">'.
-			'<fieldset><legend>'.__('Multiple blogs').'</legend>'.
+			'<form action="'.$this->getURL(true).'" method="post" class="fieldset">'.
+			'<h3>'.__('Multiple blogs').'</h3>'.
 			'<p>'.__('This will create an export of all the content of your database.').'</p>'.
 			
@@ -234,5 +233,4 @@
 			$this->core->formNonce().'</p>'.
 			
-			'</fieldset>'.
 			'</form>';
 		}
Index: plugins/importExport/inc/class.dc.import.feed.php
===================================================================
--- plugins/importExport/inc/class.dc.import.feed.php	(revision 907)
+++ plugins/importExport/inc/class.dc.import.feed.php	(revision 1528)
@@ -82,5 +82,4 @@
 		echo
 		'<form action="'.$this->getURL(true).'" method="post">'.
-		'<fieldset><legend>'.__('Single blog').'</legend>'.
 		'<p>'.sprintf(__('This will import a feed (RSS or Atom) a as new content in the current blog: %s.'),html::escapeHTML($this->core->blog->name)).'</p>'.
 		
@@ -93,5 +92,4 @@
 		'<input type="submit" value="'.__('Import').'" /></p>'.
 		
-		'</fieldset>'.
 		'</form>';
 	}
Index: plugins/importExport/inc/class.dc.import.flat.php
===================================================================
--- plugins/importExport/inc/class.dc.import.flat.php	(revision 1454)
+++ plugins/importExport/inc/class.dc.import.flat.php	(revision 1499)
@@ -180,7 +180,7 @@
 		
 		echo
-		'<form action="'.$this->getURL(true).'" method="post" enctype="multipart/form-data">'.
-		'<fieldset><legend>'.__('Single blog').'</legend>'.
-		'<p>'.sprintf(__('This will import a single blog backup as new content in the current blog: %s.'),html::escapeHTML($this->core->blog->name)).'</p>'.
+		'<form action="'.$this->getURL(true).'" method="post" enctype="multipart/form-data" class="fieldset">'.
+		'<h3>'.__('Single blog').'</h3>'.
+		'<p>'.sprintf(__('This will import a single blog backup as new content in the current blog: <strong>%s</strong>.'),html::escapeHTML($this->core->blog->name)).'</p>'.
 		
 		'<p><label for="up_single_file" class="classic">'.__('Upload a backup file').
@@ -203,5 +203,4 @@
 		'<input type="submit" value="'.__('Import').'" /></p>'.
 		
-		'</fieldset>'.
 		'</form>';
 		
@@ -209,6 +208,6 @@
 		{
 			echo
-			'<form action="'.$this->getURL(true).'" method="post" enctype="multipart/form-data" id="formfull">'.
-			'<fieldset><legend>'.__('Multiple blogs').'</legend>'.
+			'<form action="'.$this->getURL(true).'" method="post" enctype="multipart/form-data" id="formfull" class="fieldset">'.
+			'<h3>'.__('Multiple blogs').'</h3>'.
 			'<p class="warning">'.__('This will reset all the content of your database, except users.').'</p>'.
 			
@@ -235,5 +234,4 @@
 			'<input type="submit" value="'.__('Import').'" /></p>'.
 			
-			'</fieldset>'.
 			'</form>';
 		}
Index: plugins/importExport/locales/fr/main.po
===================================================================
--- plugins/importExport/locales/fr/main.po	(revision 841)
+++ plugins/importExport/locales/fr/main.po	(revision 1499)
@@ -223,5 +223,5 @@
 
 #: inc/class.dc.import.flat.php:184
-msgid "This will import a single blog backup as new content in the current blog: %s."
+msgid "This will import a single blog backup as new content in the current blog: <strong>%s</strong>."
 msgstr "Ceci va charger une sauvegarde de blog comme un nouveau contenu dans le blog en cours : %s."
 
Index: plugins/pages/_admin.php
===================================================================
--- plugins/pages/_admin.php	(revision 1882)
+++ plugins/pages/_admin.php	(revision 1885)
@@ -15,5 +15,5 @@
 $core->addBehavior('adminDashboardFavs','pages_dashboard_favs');
 $core->addBehavior('adminDashboardFavsIcon','pages_dashboard_favs_icon');
-
+$core->addBehavior('adminUsersActionsHeaders','pages_users_actions_headers');
 $core->addBehavior('adminPostsActionsContent','pages_PostsActionsContent');
 
@@ -79,4 +79,8 @@
 	}
 }
+function pages_users_actions_headers()
+{
+	return dcPage::jsLoad('index.php?pf=pages/_users_actions.js');
+}
 
 $_menu['Blog']->addItem(__('Pages'),'plugin.php?p=pages','index.php?pf=pages/icon.png',
Index: plugins/pages/_install.php
===================================================================
--- plugins/pages/_install.php	(revision 1445)
+++ plugins/pages/_install.php	(revision 1529)
@@ -20,6 +20,4 @@
 /* Create first page
 -------------------------------------------------------- */
-$core->setBlog('default');
-
 $core->blog->settings->addNamespace('pages');
 
Index: plugins/pages/_users_actions.js
===================================================================
--- plugins/pages/_users_actions.js	(revision 1503)
+++ plugins/pages/_users_actions.js	(revision 1503)
@@ -0,0 +1,47 @@
+jQuery.fn.updatePagesPermissionsForm = function() {
+	return this.each(function() {
+		
+		var perms = {};
+		var re = /^perm\[(.+?)\]\[(.+?)\]$/;
+		var e,prop;
+		
+		// Building a nice object of form elements
+		for (var i=0; i<this.elements.length; i++) {
+			e = this.elements[i];
+			
+			if (e.name == undefined) {
+				continue;
+			}
+			var prop;
+			prop = e.name.match(re);
+			if (!prop) {
+				continue;
+			}
+			if (perms[prop[1]] == undefined) {
+				perms[prop[1]] = {};
+			}
+			perms[prop[1]][prop[2]] = e;
+			
+			// select related permissions for admin
+			if (prop[2] == 'admin') {
+				if (e.checked) {
+					admin(e,perms,re);
+				}
+				$(e).click(function(){
+					admin(this,perms,re);
+				});
+			}
+		}
+		
+		function admin(E,perms,re) {
+					P = E.name.match(re);
+					
+					perms[P[1]]['pages'].checked = E.checked;
+					perms[P[1]]['pages'].disabled = E.checked;
+		}
+	});
+};
+
+$(function() {
+	$('#permissions-form').updatePagesPermissionsForm();
+});
Index: plugins/pages/page.php
===================================================================
--- plugins/pages/page.php	(revision 1480)
+++ plugins/pages/page.php	(revision 1508)
@@ -587,5 +587,5 @@
 	if ($can_edit_page && $core->auth->check('delete,contentadmin',$core->blog->id))
 	{
-		$combo_action[__('delete')] = 'delete';
+		$combo_action[__('Delete')] = 'delete';
 	}
 	
@@ -619,5 +619,5 @@
 		'<p class="col checkboxes-helpers"></p>'.
 		
-		'<p class="col right"><label for="action">'.__('Selected comments action:').'</label> '.
+		'<p class="col right"><label for="action" class="classic">'.__('Selected comments action:').'</label> '.
 		form::combo('action',$combo_action).
 		form::hidden('redir',html::escapeURL($redir_url).'&amp;id='.$post_id.'&amp;co=1').
@@ -692,9 +692,9 @@
 	echo
 	'<table class="comments-list"><tr>'.
-	'<th colspan="2">'.__('Author').'</th>'.
+	'<th colspan="2" class="nowrap first">'.__('Author').'</th>'.
 	'<th>'.__('Date').'</th>'.
 	'<th class="nowrap">'.__('IP address').'</th>'.
 	'<th>'.__('Status').'</th>'.
-	'<th>&nbsp;</th>'.
+	'<th>'.__('Edit').'</th>'.
 	'</tr>';
 	
@@ -730,5 +730,5 @@
 		'<td class="nowrap status">'.$img_status.'</td>'.
 		'<td class="nowrap status"><a href="'.$comment_url.'">'.
-		'<img src="images/edit-mini.png" alt="" title="'.__('Edit this comment').'" /></a></td>'.
+		'<img src="images/edit-mini.png" alt="" title="'.__('Edit this comment').'" /> '.__('Edit').'</a></td>'.
 		
 		'</tr>';
Index: plugins/tags/_admin.php
===================================================================
--- plugins/tags/_admin.php	(revision 1471)
+++ plugins/tags/_admin.php	(revision 1518)
@@ -315,6 +315,6 @@
 		
 		$combo = array();
-		$combo[__('short')] = 'more';
-		$combo[__('extended')] = 'all';
+		$combo[__('Short')] = 'more';
+		$combo[__('Extended')] = 'all';
 		
 		$value = array_key_exists('tag_list_format',$opts) ? $opts['tag_list_format'] : 'more';
Index: plugins/tags/tag_posts.php
===================================================================
--- plugins/tags/tag_posts.php	(revision 1480)
+++ plugins/tags/tag_posts.php	(revision 1526)
@@ -123,5 +123,5 @@
 }
 
-echo '<p><a href="'.$p_url.'&amp;m=tags">'.__('Back to tags list').'</a></p>';
+echo '<p><a class="back" href="'.$p_url.'&amp;m=tags">'.__('Back to tags list').'</a></p>';
 
 if (!$core->error->flag())
@@ -132,5 +132,5 @@
 		'<div class="fieldset">'.
 		'<form action="'.$this_url.'" method="post">'.
-		'<h3>'.__('Actions for this tag').'</h3>'.
+		'<h3>'.__('Actions').'</h3>'.
 		'<p><label for="new_tag_id">'.__('Edit tag name:').'</label>'.
 		form::field('new_tag_id',20,255,html::escapeHTML($tag)).
@@ -142,6 +142,6 @@
 			echo
 			'<form id="tag_delete" action="'.$this_url.'" method="post">'.
-			'<p class="no-margin">'.__('Delete this tag:').
-			'</p><p><input type="submit" class="delete" name="delete" value="'.__('Delete').'" />'.
+			'<p>'.__('Delete this tag:').' '.
+			'<input type="submit" class="delete" name="delete" value="'.__('Delete').'" />'.
 			$core->formNonce().
 			'</p></form>';
@@ -151,5 +151,5 @@
 	
 	# Show posts
-	echo '<h3>'.__('List of entries with this tag').'</h3>';
+	echo '<h3>'.sprintf(__('List of entries with the tag “%s”'),html::escapeHTML($tag)).'</h3>';
 	$post_list->display($page,$nb_per_page,
 	'<form action="posts_actions.php" method="post" id="form-entries">'.
Index: plugins/widgets/index.php
===================================================================
--- plugins/widgets/index.php	(revision 1454)
+++ plugins/widgets/index.php	(revision 1518)
@@ -197,5 +197,6 @@
 echo
 '<form id="listWidgets" action="'.$p_url.'" method="post"  class="widgets">'.
-'<fieldset><legend>'.__('Available widgets').'</legend>'.
+'<h3>'.__('Available widgets').'</h3>'.
+'<p>'.__('Move widgets from this list to one of the sidebars.').'</p>'.
 '<div id="widgets">';
 
@@ -205,5 +206,5 @@
 	'<div>'.form::hidden(array('w[void][0][id]'),html::escapeHTML($w->id())).
 	'<p class="widget-name">'.form::field(array('w[void][0][order]'),2,3,0,'hideControl').' '.
-	$w->name().($w->desc() != '' ? ' <span class="form-note">('.__($w->desc()).')</span>' : '').'</p>'.
+	$w->name().($w->desc() != '' ? ' <span class="form-note">'.__($w->desc()).'</span>' : '').'</p>'.
 	'<p class="js-remove"><label class="classic">'.__('Append to:').'</label> '.
 	form::combo(array('addw['.$w->id().']'),$append_combo).'</p>'.
@@ -215,5 +216,4 @@
 echo
 '</div>'.
-'</fieldset>'.
 '<p><input type="submit" class="js-remove" name="append" value="'.__('Add widgets to sidebars').'" />'.
 $core->formNonce().'</p>'.
@@ -223,5 +223,5 @@
 # Nav sidebar
 echo
-'<div id="sidebarNav" class="widgets">'.
+'<div id="sidebarNav" class="widgets fieldset">'.
 sidebarWidgets('dndnav',__('Navigation sidebar'),$widgets_nav,'nav',$__default_widgets['nav'],$j).
 '</div>';
@@ -229,5 +229,5 @@
 # Extra sidebar
 echo
-'<div id="sidebarExtra" class="widgets">'.
+'<div id="sidebarExtra" class="widgets fieldset">'.
 sidebarWidgets('dndextra',__('Extra sidebar'),$widgets_extra,'extra',$__default_widgets['extra'],$j).
 '</div>';
@@ -235,5 +235,5 @@
 # Custom sidebar
 echo
-'<div id="sidebarCustom" class="widgets">'.
+'<div id="sidebarCustom" class="widgets fieldset">'.
 sidebarWidgets('dndcustom',__('Custom sidebar'),$widgets_custom,'custom',$__default_widgets['custom'],$j).
 '</div>';
@@ -316,5 +316,5 @@
 function sidebarWidgets($id,$title,$widgets,$pr,$default_widgets,&$j)
 {
-	$res = '<fieldset><legend>'.$title.'</legend><div id="'.$id.'">';
+	$res = '<h3>'.$title.'</h3><div id="'.$id.'">';
 	
 	if (!($widgets instanceof dcWidgets))
@@ -335,5 +335,5 @@
 		'<div>'.form::hidden(array($iname.'[id]'),html::escapeHTML($w->id())).
 		'<p class="widget-name">'.form::field(array($iname.'[order]'),2,3,(string) $i,'js-hide','',0,'title="'.__('order').'"').' '.
-		$w->name().($w->desc() != '' ? ' <span class="form-note">('.__($w->desc()).')</span>' : '').'</p>'.
+		$w->name().($w->desc() != '' ? ' <!-- <span class="form-note">'.__($w->desc()).'</span> -->' : '').'</p>'.
 		'<p class="removeWidget js-remove"><label class="classic">'.
 		form::checkbox(array($iname.'[_rem]'),'1',0).' '.__('Remove widget').
@@ -346,5 +346,5 @@
 	}
 	
-	$res .= '</div></fieldset>';
+	$res .= '</div>';
 	
 	return $res;
Index: plugins/widgets/style.css
===================================================================
--- plugins/widgets/style.css	(revision 1480)
+++ plugins/widgets/style.css	(revision 1526)
@@ -1,73 +1,79 @@
 #listWidgets {
 	float: left;
-	width: 33%;
+	width: 46%;
+	background: #eee;
+	padding: 1.5em 1% 0; 
+	margin: 0 1% 0 0;
 }
-#listWidgets fieldset {
-	background: #eee;
+#widgets > div {
+	border: 1px solid #ccc;
+	margin-bottom: .5em;
+	background: #fff;
+	min-height: 3em;
+	padding: 0 0 4px 0;
 }
-#listWidgets #widgets p.widget-name {
+#widgets .widget-name, #widgets .js-remove {
 	background: #fff;
+	margin-bottom: 0;
+	padding: 4px 8px; 
+}
+#widgets .widget-name {
+	min-height: 3em;
+	padding-bottom: 0;
+}
+#listWidgets h3 {
+	color: #333;
 }
 
 #sidebarsWidgets {
 	float: left;
-	width: 65%;
-	margin-left: 1%;
+	width: 47%;
+	margin: 0 0 0 1%;
+	padding: 0 1%;
 }
-#sidebarNav {
-	float: left;
-	width: 50%;
-	margin-left: 0%;
-}
-#sidebarExtra {
-	float: left;
-	width: 49%;
-	margin-left: 1%;
-}
-#sidebarCustom {
-	float: left;
-	width: 100%;
-}
-
 #sidebarsControl {
 	clear: left;
 }
-
-#widgets, #dndnav, #dndextra {
+.widgets.fieldset {
+	margin-bottom: 2em;
+}
+#widgets, #dndnav, #dndextra, #dndcustom {
 	padding: 1em 0;
 }
-
-.widgets fieldset {
+#dndnav > div, #dndextra > div, #dndcustom > div {
+	padding: O;
 	border: 1px solid #999;
-	background: #E4E0EC;
+	margin-bottom: 1em;
 }
 
-.widgets p.widget-name {
-	background: #f5f5f5;
+.widget-name {
+	background: #eef;
 	color: #000;
 	padding: 4px 6px;
-	margin: 0.5em 0 0 0;
-	border-width: 1px 1px 1px 1px;
-	border-style: solid;
-	border-color: #999;
+	margin: 0;
 	font-weight: bold;
 }
-.widgets p.widget-name img {
+.widget-name span {
+	display: block;
+	font-style: normal;
+	font-size: 1.1rem;
+}
+.widget-name img {
 	cursor: pointer;
 	margin-bottom: -1px;
 }
+.removeWidget {
+	padding: 8px 6px;
+	margin: 0;
+}
 
 .widgetSettings {
-	border-width: 0 1px 1px 1px;
-	border-style: solid;
-	border-color: #666;
-	padding: 4px 6px;
-	background: #fff;
+	border-top: 1px solid #ddd;
+	padding: 8px 6px;
+	background: #f5f5f5;
 }
-
 #widgets .widgetSettings {
 	display: none;
 }
-
 .hideControls .widgetSettings {
 	display: none;
Index: themes/ductile/_config.php
===================================================================
--- themes/ductile/_config.php	(revision 1096)
+++ themes/ductile/_config.php	(revision 1526)
@@ -54,5 +54,5 @@
 
 $fonts = array(
-	__('default') => '',
+	__('Default') => '',
 	__('Ductile primary') => 'Ductile body',
 	__('Ductile secondary') => 'Ductile alternate',
@@ -540,5 +540,5 @@
 (!empty($ductile_user['body_font']) ? ' '.fontDef($ductile_user['body_font']) : '').
 '</p>'.
-'<p class="form-note">'.__('Set main font to default to use webfont below.').'</p> '.
+'<p class="form-note">'.__('Set main font to Default to use webfont below.').'</p> '.
 '<p class="field"><label for="body_webfont_family">'.__('Webfont family:').'</label> '.
 form::field('body_webfont_family',25,255,$ductile_user['body_webfont_family']).'</p>'.
@@ -554,5 +554,5 @@
 (!empty($ductile_user['alternate_font']) ? ' '.fontDef($ductile_user['alternate_font']) : '').
 '</p>'.
-'<p class="form-note">'.__('Set secondary font to default to use webfont below.').'</p> '.
+'<p class="form-note">'.__('Set secondary font to Default to use webfont below.').'</p> '.
 '<p class="field"><label for="alternate_webfont_family">'.__('Webfont family:').'</label> '.
 form::field('alternate_webfont_family',25,255,$ductile_user['alternate_webfont_family']).'</p>'.
Index: themes/ductile/locales/fr/admin.po
===================================================================
--- themes/ductile/locales/fr/admin.po	(revision 1096)
+++ themes/ductile/locales/fr/admin.po	(revision 1526)
@@ -1,4 +1,4 @@
 msgid "Theme configuration upgraded."
-msgstr "Configuration du thème mise à jour."
+msgstr "La configuration du thème a été mise à jour."
 
 msgid "Content"
@@ -51,5 +51,5 @@
 
 msgid "Search result entries"
-msgstr "Billets résultants d'une recherche"
+msgstr "Billets résultant d'une recherche"
 
 msgid "Month archive entries"
@@ -69,5 +69,5 @@
 
 msgid "Comment preview is not mandatory:"
-msgstr "Prévisualisation du commentaire optionnelle :"
+msgstr "Prévisualisation du commentaire non obligatoire :"
 
 msgid "Presentation"
@@ -87,5 +87,5 @@
 
 msgid "Font size (in em by default):"
-msgstr "Taille de police (en em par défaut) :"
+msgstr "Taille du texte courant (en em par défaut) :"
 
 msgid "Color:"
@@ -125,8 +125,8 @@
 msgstr "feuille de style (Google)"
 
-msgid "Set main font to default to use webfont below."
+msgid "Set main font to Default to use webfont below."
 msgstr "Mettre la police de caractère principale à Défaut pour utiliser la fonte web ci-dessous."
 
-msgid "Set secondary font to default to use webfont below."
+msgid "Set secondary font to Default to use webfont below."
 msgstr "Mettre la police de caractère secondaire à Défaut pour utiliser la fonte web ci-dessous."
 
