Index: CONTRIBUTING.md
===================================================================
--- CONTRIBUTING.md	(revision 1578)
+++ CONTRIBUTING.md	(revision 1578)
@@ -0,0 +1,9 @@
+# CONTRIBUTING
+
+Dotclear is an open source project. If you'd like to contribute, you can send
+a pull request, or feel free to use any other way you'd prefer.
+
+There are many way to contribute :
+
+ * Report bugs
+ * Add documentation
Index: Makefile
===================================================================
--- Makefile	(revision 1451)
+++ Makefile	(revision 1581)
@@ -11,5 +11,5 @@
 	
 	## Copy needed folders and files
-	cp -pRf ./admin ./inc ./themes ./index.php ./CHANGELOG ./CREDITS ./LICENSE ./README ./$(DC)/
+	cp -pRf ./admin ./inc ./themes ./index.php ./CHANGELOG ./CREDITS ./LICENSE ./README.md ./CONTRIBUTING.md ./$(DC)/
 	
 	## Locales directory
@@ -88,5 +88,5 @@
 
 deb:
-	cp ./README debian/README
+	cp ./README.md debian/README
 	dpkg-buildpackage -rfakeroot
 
Index: EADME
===================================================================
--- README	(revision 3)
+++ 	(revision )
@@ -1,22 +1,0 @@
-Welcome to Dotclear
-
-WHAT YOU NEED TO RUN DOTCLEAR
------------------------------
-In order to run Dotclear you need:
-
- * A web server (Apache, Cheerokee, lightHttpd, etc.)
- * PHP 5.2 with the following modules:
-   * mbstring
-   * iconv
-   * simplexml
-   * mysql, postgresql or sqlite
- * A database server (MySQL or PostgreSQL) or SQLite.
-
-
-INSTALLATION
-------------
-Copy inc/config.php.in to inc/config.php and fill in the fields with appropriate
-values.
-
-If you intend to use MySQL or PostgreSQL, you'll have to create a database
-first. With SQLite, db/ folder will have to be writable by your web server.
Index: README.md
===================================================================
--- README.md	(revision 1578)
+++ README.md	(revision 1578)
@@ -0,0 +1,92 @@
+# README
+
+## WHAT IS DOTCLEAR ?
+
+Dotclear is an open-source web publishing software.
+Take control over your blog!
+
+Dotclear project's purpose is to provide a user-friendly
+tool allowing anyone to publish on the web, regardless of
+their technical skills.
+
+### Features:
+ * Easy publication
+ * Fully customizable theme
+ * User-friendly administration
+ * Flexible template system
+ * Media management
+ * Choose from several editing syntax (wiki, markdown, textile or directly in wysiwyg)
+ * Flexible comment system
+ * Built-in antispam
+ * Localization
+ * Presentation widgets
+ * Themes and plugins
+ * Pages
+ * Tags and categories
+ * Automated installation
+ * Support for several database types
+ * Multiblog
+ * Multi-user with permissions
+ * Standards compliant
+ * Accessible
+ * Importing / exporting
+ * Naturally optimized for search engines
+ * Syndication feeds
+ * Complete trackback support
+ * Full Unicode support
+ * XML/RPC client support
+ * Extensible
+ * Performance and scalability
+ * Twice free
+
+
+## REQUIREMENTS
+
+In order to run Dotclear you need:
+
+ * A web server (Apache, Cherokee, Nginx, lighttpd, etc.)
+ * PHP 5.2 with the following modules:
+    * mbstring
+    * iconv
+    * simplexml
+    * mysql, postgresql or sqlite
+ * A database server (MySQL or PostgreSQL) or SQLite.
+
+
+## INSTALLATION
+
+### Automatic installation
+   The easiest way to install the blog engine is automatic installation.
+   Download the [one minute install file][1], upload it to your web space. Then open it in your favorite browser. You'll only have to follow the instructions on screen. See the [documentation][2] for more information.
+
+### Standard installation.
+   You need to download [Dotclear archive][3], extract it then upload your files to your web space using an FTP client.
+   Then open your favorite browser and go to http://your.host.name/dotclear/admin/install/. A message alerts you that you haven't got a configuration file and offers to run the wizard. Click this link.
+
+
+## DOCUMENTATION
+Still unsure if you want to move? A "[guided tour][4]" is what you need.
+
+Dotclear is fully documented:
+
+ * If you have moved in already, the [User Manual][5] is there for you.
+ * The managers will turn to the [Administration Guide][6].
+ * Decorators and craftsmen will surely enjoy reading the [Developer and designer resources][7].
+
+Dotclear documentation uses a wiki. Feel free to contribute.
+
+
+CONTRIBUTING
+------------
+Dotclear is an open source project. If you'd like to contribute, please read the [CONTRIBUTING file](CONTRIBUTING.md).
+You can submit a pull request, or feel free to use any other way you'd prefer.
+
+
+[1]: http://download.dotclear.org/loader/dotclear-loader.php
+[2]: http://dotclear.org/documentation/2.0/admin/install
+[3]: http://dotclear.org/download
+[4]: http://dotclear.org/documentation/2.0/overview/tour
+[5]: http://dotclear.org/documentation/2.0/usage
+[6]: http://dotclear.org/documentation/2.0/admin
+[7]: http://dotclear.org/documentation/2.0/resources
+
Index: admin/auth.php
===================================================================
--- admin/auth.php	(revision 1484)
+++ admin/auth.php	(revision 1558)
@@ -324,5 +324,5 @@
 }
 if ($msg) {
-	echo '<p class="message">'.$msg.'</p>';
+	echo '<p class="success">'.$msg.'</p>';
 }
 
@@ -396,5 +396,5 @@
 		__('Remember my ID on this computer').'</label></p>'.
 		
-		'<p><input class="add button" type="submit" value="'.__('log in').'" /></p>';
+		'<p><input type="submit" value="'.__('log in').'" class="login" /></p>';
 		
 		if (!empty($_REQUEST['blog'])) {
Index: admin/blog_pref.php
===================================================================
--- admin/blog_pref.php	(revision 1499)
+++ admin/blog_pref.php	(revision 1553)
@@ -290,9 +290,9 @@
 {
 	if (!empty($_GET['add'])) {
-		dcPage::message(__('Blog has been successfully created.'));
+		dcPage::success(__('Blog has been successfully created.'));
 	}
 	
 	if (!empty($_GET['upd'])) {
-		dcPage::message(__('Blog has been successfully updated.'));
+		dcPage::success(__('Blog has been successfully updated.'));
 	}
 	
Index: admin/blog_theme.php
===================================================================
--- admin/blog_theme.php	(revision 1526)
+++ admin/blog_theme.php	(revision 1553)
@@ -233,13 +233,13 @@
 {
 	if (!empty($_GET['upd'])) {
-		dcPage::message(__('Theme has been successfully changed.'));
+		dcPage::success(__('Theme has been successfully changed.'));
 	}
 	
 	if (!empty($_GET['added'])) {
-		dcPage::message(($_GET['added'] == 2 ? __('Theme has been successfully upgraded') : __('Theme has been successfully installed.')));
+		dcPage::success(($_GET['added'] == 2 ? __('Theme has been successfully upgraded') : __('Theme has been successfully installed.')));
 	}
 	
 	if (!empty($_GET['del'])) {
-		dcPage::message(__('Theme has been successfully deleted.'));
+		dcPage::success(__('Theme has been successfully deleted.'));
 	}
 	
Index: admin/blogs.php
===================================================================
--- admin/blogs.php	(revision 1514)
+++ admin/blogs.php	(revision 1553)
@@ -82,5 +82,5 @@
 
 if (!empty($_GET['del'])) {
-	dcPage::message(__('Blog has been successfully deleted.'));
+	dcPage::success(__('Blog has been successfully deleted.'));
 }
 
Index: admin/categories.php
===================================================================
--- admin/categories.php	(revision 1525)
+++ admin/categories.php	(revision 1576)
@@ -17,23 +17,53 @@
 # 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) $cat_id);
-		if ($c->isEmpty()) {
-			continue;
-		}
-		unset($c);
-
-		try {
+	try {
+		# Check if category where to move posts exists
+		$mov_cat = (int) $_POST['mov_cat'];
+		$mov_cat = $mov_cat ? $mov_cat : null;
+		if ($mov_cat !== null) {
+			$c = $core->blog->getCategory($mov_cat);
+			if ($c->isEmpty()) {
+				throw new Exception(__('Category where to move posts does not exist'));
+			}
+			unset($c);
+
+			if (in_array($mov_cat, $_POST['categories'])) {
+				throw new Exception(__('The entries cannot be moved to the category you choose to delete.'));
+			}
+		}
+
+		foreach ($_POST['categories'] as $cat_id) {
+			# Check if category to delete exists
+			$c = $core->blog->getCategory((integer) $cat_id);
+			if ($c->isEmpty()) {
+				continue;
+			}
+			unset($c);
+
+			# Move posts
+			if ($mov_cat != $cat_id) {
+			        $core->blog->changePostsCategory($cat_id,$mov_cat);
+			}
+
 			# Delete category
 			$core->blog->delCategory($cat_id);
-		} catch (Exception $e) {
-			$error = true;
-		}
-	}
-	if (!$error) {
+		}
 		http::redirect('categories.php?del='.count($_POST['categories']));
-	}
+	} catch (Exception $e) {
+		$core->error->add($e->getMessage());
+	}
+}
+
+# Update order
+if (!empty($_POST['categories_order']))
+{
+        $categories = json_decode($_POST['categories_order']);
+
+	foreach ($categories as $category) {
+	        if (!empty($category->item_id)) {
+		        $core->blog->updCategoryPosition($category->item_id, $category->left, $category->right);
+		}
+	}
+	http::redirect('categories.php?reord=1');
 }
 
@@ -52,19 +82,19 @@
 }
 
-# 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
 -------------------------------------------------------- */
-dcPage::open(__('Categories'),
-	dcPage::jsToolMan()."\n".
-	dcPage::jsLoad('js/_categories.js'),
+$rs = $core->blog->getCategories(array('post_type'=>'post'));
+
+$starting_script = dcPage::jsToolMan()."\n";
+if (!$core->auth->user_prefs->accessibility->nodragdrop
+	&& $core->auth->check('categories',$core->blog->id)
+	&& $rs->count()>1) {
+        $starting_script .= dcPage::jsLoad('js/jquery/jquery-ui.custom.js');
+	$starting_script .= dcPage::jsLoad('js/jquery/jquery.mjs.nestedSortable.js');
+}
+$starting_script .= dcPage::jsLoad('js/_categories.js');
+
+dcPage::open(__('Categories'),$starting_script,
 	dcPage::breadcrumb(
 		array(
@@ -74,22 +104,14 @@
 );
 
-if (!empty($_GET['add'])) {
-	dcPage::message(__('The category has been successfully created.'));
-}
 if (!empty($_GET['del'])) {
-  dcPage::message(__('The category has been successfully removed.',
-		     'The categories have been successfully removed.',
-		     (int) $_GET['del']
-		     )
-		  );
+        dcPage::success(__('The category has been successfully removed.',
+			   'The categories have been successfully removed.',
+			   (int) $_GET['del']
+			   )
+			);
 }
 if (!empty($_GET['reord'])) {
-	dcPage::message(__('Categories have been successfully reordered.'));
-}
-if (!empty($_GET['moved'])) {
-	dcPage::message(__('The category has been successfully moved.'));
-}
-
-$rs = $core->blog->getCategories(array('post_type'=>'post'));
+	dcPage::success(__('Categories have been successfully reordered.'));
+}
 
 $categories_combo = array();
@@ -117,5 +139,5 @@
 	echo
 	'<form action="categories.php" method="post" id="form-categories">'.
-	'<h3>'.__('Categories list').'</h3>'.
+	'<h3>'.__('List of blog\'s categories').'</h3>'.
 	'<div id="categories">';
 
@@ -123,8 +145,5 @@
 	while ($rs->fetch())
 	{
-		$attr = 'id="cat'.$rs->cat_id.'"';
-		if ($rs->nb_total == 0) {
-			$attr .= ' class="deletable"';
-		}
+		$attr = 'id="cat_'.$rs->cat_id.'"';
 
 		if ($rs->level > $level) {
@@ -139,15 +158,11 @@
 
 		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>'.
+		'<p>'.
+		form::checkbox(array('categories[]','cat-'.$rs->cat_id),$rs->cat_id,null,$rs->nb_total>0?'notempty':'').
+		'<label class="classic" for="cat-'.$rs->cat_id.'"><a href="category.php?id='.$rs->cat_id.'">'.html::escapeHTML($rs->cat_title).'</a></label>'.
 		' (<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>';
+		', '.__('total:').' '.$rs->nb_total.') '.
+		'<span class="cat-url">'.__('URL:').' <code>'.html::escapeHTML($rs->cat_url).'</code></span></p>';
 
 		$level = $rs->level;
@@ -160,26 +175,41 @@
 	'</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">'.
+	echo
+	'<div class="two-cols">'.
+	'<p class="col checkboxes-helpers"></p>'.
+	'<p class="col right" id="mov-cat">'.
+	'<label for="mov_cat" class="classic">'.__('Category which will receive entries of deleted categories:').'</label> '.
+	form::combo('mov_cat',array_merge(array(__('(No cat)') => ''),$categories_combo),'','').
+	'</p>'.
+	'<p class="right">'.
+	$core->formNonce().
+	'<input type="submit" value="'.__('Delete selected categories').'"/>'.
+	'</p>'.
+	'</div>'.
+	'</form>';
+
+	echo '<h3 class="clear">'.__('Categories order').'</h3>';
+
+	if ($core->auth->check('categories',$core->blog->id) && $rs->count()>1) {
+		echo
+		'<form action="categories.php" method="post">';
+		if (!$core->auth->user_prefs->accessibility->nodragdrop) {
+		        echo '<p class="no-js-hidden">'.__('To rearrange categories order, move items by drag and drop, then click on “Save categories order” button.').'</p>';
+		}
+		echo
+		'<p class="js-hidden">'.__('To rearrange categories order, change position number and click on “Save categories order” button.').'</p>'.
+		'<p>'.
+		'<input type="hidden" id="categories_order" name="categories_order" value=""/>'.
+		'<input type="submit" id="save-set-order" value="'.__('Save categories order').'" />'.
+		$core->formNonce().'</p>'.
+		'</form>';
+	}
+
+	echo
 	'<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 class="reset" type="submit" value="'.__('Reorder').'" />'.
+	'<p><input type="submit" value="'.__('Reorder all categories on the top level').'" />'.
 	form::hidden(array('reset'),1).
 	$core->formNonce().'</p>'.
-	'</form>'.
-	'</div>';
+	'</form>';
 }
 
Index: admin/category.php
===================================================================
--- admin/category.php	(revision 1499)
+++ admin/category.php	(revision 1571)
@@ -176,5 +176,5 @@
 
 if (!empty($_GET['upd'])) {
-	dcPage::message(__('Category has been successfully updated.'));
+	dcPage::success(__('Category has been successfully updated.'));
 }
 
@@ -191,8 +191,8 @@
 	'<p><label for="new_cat_parent">'.__('Parent:').' '.
 	'<select id="new_cat_parent" name="new_cat_parent" >'.
-	'<option value="0">'.__('Top level').'</option>';
+	'<option value="0">'.__('(none)').'</option>';
 	while ($rs->fetch()) {
 		echo '<option value="'.$rs->cat_id.'" '.(!empty($_POST['new_cat_parent']) && $_POST['new_cat_parent'] == $rs->cat_id ? 'selected="selected"' : '').'>'.
-		str_repeat('&nbsp;&nbsp;',$rs->level).html::escapeHTML($rs->cat_title).'</option>';
+		str_repeat('&nbsp;&nbsp;',$rs->level-1).($rs->level-1 == 0 ? '' : '&bull; ').html::escapeHTML($rs->cat_title).'</option>';	
 	}
 	echo
Index: admin/comment.php
===================================================================
--- admin/comment.php	(revision 1399)
+++ admin/comment.php	(revision 1553)
@@ -188,5 +188,5 @@
 {
 	if (!empty($_GET['upd'])) {
-		dcPage::message(__('Comment has been successfully updated.'));
+		dcPage::success(__('Comment has been successfully updated.'));
 	}
 	
Index: admin/index.php
===================================================================
--- admin/index.php	(revision 1529)
+++ admin/index.php	(revision 1558)
@@ -226,7 +226,7 @@
 
 if ($core->blog->status == 0) {
-	echo '<p class="static-msg">'.__('This blog is offline').'</p>';
+	echo '<p class="static-msg">'.__('This blog is offline').'.</p>';
 } elseif ($core->blog->status == -1) {
-	echo '<p class="static-msg">'.__('This blog is removed').'</p>';
+	echo '<p class="static-msg">'.__('This blog is removed').'.</p>';
 }
 
@@ -340,5 +340,4 @@
 			? '<div>'.
 			'<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>'.
@@ -346,4 +345,5 @@
 			form::combo('new_cat_parent',$categories_combo,'','').
 			'</p>'.
+			'<p class="form-note info clear">'.__('This category will be created when you will save your post.').'</p>'.
 			'</div>'
 			: '').
Index: admin/install/index.php
===================================================================
--- admin/install/index.php	(revision 1399)
+++ admin/install/index.php	(revision 1553)
@@ -308,5 +308,5 @@
 
 if (!empty($_GET['wiz'])) {
-	echo '<p class="message">'.__('Configuration file has been successfully created.').'</p>';
+	echo '<p class="success">'.__('Configuration file has been successfully created.').'</p>';
 }
 
@@ -366,5 +366,5 @@
 	$plugins_install_result.
 	
-	'<p>'.__('Dotclear has been successfully installed. Here is some useful information you should keep.').'</p>'.
+	'<p class="success">'.__('Dotclear has been successfully installed. Here is some useful information you should keep.').'</p>'.
 	
 	'<h3>'.__('Your account').'</h3>'.
Index: admin/js/_categories.js
===================================================================
--- admin/js/_categories.js	(revision 1525)
+++ admin/js/_categories.js	(revision 1563)
@@ -1,4 +1,17 @@
-/* TODO: Some nice drag and drop on categories */
 $(function() {
+	if ($.fn['nestedSortable']!==undefined) {
+		$('#categories ul li').css('cursor','move');
+		$('#save-set-order').prop('disabled',true).addClass('disabled');
+		$('#categories ul').nestedSortable({
+			listType: 'ul',
+			items: 'li',
+			placeholder: 'placeholder',
+			update: function() {
+				$('#categories_order').attr('value',JSON.stringify($('#categories ul').nestedSortable('toArray')));
+				$('#save-set-order').prop('disabled',false).removeClass('disabled');
+			}
+		});
+	}
+
 	$('.checkboxes-helpers').each(function() {
 		dotclear.checkboxesHelpers(this);
Index: admin/js/_post.js
===================================================================
--- admin/js/_post.js	(revision 1529)
+++ admin/js/_post.js	(revision 1562)
@@ -115,5 +115,5 @@
 		// Confirm post deletion
 		$('input[name="delete"]').click(function() {
-			return window.confirm(dotclear.msg.confirm_delete_post);
+				return window.confirm(dotclear.msg.confirm_delete_post);
 		});
 
@@ -121,39 +121,31 @@
 		$('#notes-area label').toggleWithLegend($('#notes-area').children().not('label'),{
 			cookie: 'dcx_post_notes',
-		        hide: $('#post_notes').val() == '',
-		        legend_click: true
-		});
-		$('#new_cat').toggleWithLegend(
-			$('#new_cat').parent().children().not('#new_cat'),
-			{legend_click: true} // no cookie on new category as we don't use this every day
+			hide: $('#post_notes').val() == ''
+		});
+		$('#create_cat').toggleWithLegend(
+			$('#create_cat').parent().children().not('#create_cat'),
+			{} // no cookie on new category as we don't use this every day
 		);
 		$('#post_lang').parent().toggleWithLegend($('#post_lang'),{
-		    cookie: 'dcx_post_lang',
-		    legend_click: true
+			cookie: 'dcx_post_lang'
 		});
 		$('#post_password').parent().toggleWithLegend($('#post_password'),{
 			cookie: 'dcx_post_password',
-		    hide: $('#post_password').val() == '',
-		    legend_click: true
+			hide: $('#post_password').val() == ''
 		});
 		$('#post_status').parent().toggleWithLegend($('#post_status'),{
-		        cookie: 'dcx_post_status',
-		    legend_click: true
+			cookie: 'dcx_post_status'
 		});
 		$('#post_dt').parent().toggleWithLegend($('#post_dt').parent().children().not('label'),{
-		    cookie: 'dcx_post_dt',
-		    legend_click: true
+			cookie: 'dcx_post_dt'
 		});
 		$('#post_format').parent().toggleWithLegend($('#post_format').parent().children().not('label').add($('#post_format').parents('p').next()),{
-		    cookie: 'dcx_post_format',
-		    legend_click: true
+			cookie: 'dcx_post_format'
 		});
 		$('#cat_id').parent().toggleWithLegend($('#cat_id'),{
-		    cookie: 'cat_id',
-		    legend_click: true
+			cookie: 'cat_id'
 		});
 		$('#post_url').parent().toggleWithLegend($('#post_url').parent().children().not('label'),{
-		    cookie: 'post_url',
-		    legend_click: true
+			cookie: 'post_url'
 		});
 		// We load toolbar on excerpt only when it's ready
@@ -166,5 +158,5 @@
 		contentTb.switchMode(formatField.value);
 		excerptTb.switchMode(formatField.value);
-		
+
 		// Replace attachment remove links by a POST form submit
 		$('a.attachment-remove').click(function() {
Index: admin/js/common.js
===================================================================
--- admin/js/common.js	(revision 1525)
+++ admin/js/common.js	(revision 1576)
@@ -176,5 +176,5 @@
 		o.click(function() {
 			$(this).nextAll().each(function() {
-				if ($(this).is('h3')) {
+				if ($(this).is('h4')) {
 					return false;
 				}
@@ -196,6 +196,6 @@
 	this.find('>hr').remove();
 
-	this.find('h3').each(function() { textToggler($(this)); });
-	this.find('h3:first').nextAll('*:not(h3)').hide();
+	this.find('h4').each(function() { textToggler($(this)); });
+	this.find('h4:first').nextAll('*:not(h4)').hide();
 	sizeBox();
 
@@ -246,4 +246,7 @@
 
 	checkboxesHelpers: function(e) {
+		$(e).append(document.createTextNode(dotclear.msg.to_select));
+		$(e).append(document.createTextNode(' '));
+
 		var a = document.createElement('a');
 		a.href='#';
@@ -255,5 +258,5 @@
 		$(e).append(a);
 
-		$(e).append(document.createTextNode(' - '));
+		$(e).append(document.createTextNode(' | '));
 
 		a = document.createElement('a');
@@ -301,20 +304,10 @@
 	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()));
-			}
-
-			return true;
+		    var nb_ckecked = $('input[name="categories[]"]:checked').length;
+		    if (nb_ckecked==0) {
+			return false;
+		    }
+
+		    return window.confirm(dotclear.msg.confirm_delete_categories.replace('%s',nb_ckecked));
 		});
 	},
@@ -345,4 +338,7 @@
 -------------------------------------------------------- */
 $(function() {
+	// remove class no-js from html tag
+	$('html').removeClass('no-js');
+
 	// Blog switcher
 	$('#switchblog').change(function() {
@@ -373,4 +369,5 @@
 	$('.message').backgroundFade({sColor:'#cccccc',eColor:'#666666',steps:20});
 	$('.error').backgroundFade({sColor:'#ffdec8',eColor:'#ffbaba',steps:20});
+	$('.success').backgroundFade({sColor:'#91ff4d',eColor:'#baff8e',steps:20});
 
 	$('form:has(input[type=password][name=your_pwd])').submit(function() {
Index: admin/js/jquery/jquery.mjs.nestedSortable.js
===================================================================
--- admin/js/jquery/jquery.mjs.nestedSortable.js	(revision 1532)
+++ admin/js/jquery/jquery.mjs.nestedSortable.js	(revision 1532)
@@ -0,0 +1,429 @@
+/*
+ * jQuery UI Nested Sortable
+ * v 1.3.5 / 21 jun 2012
+ * http://mjsarfatti.com/code/nestedSortable
+ *
+ * Depends on:
+ *	 jquery.ui.sortable.js 1.8+
+ *
+ * Copyright (c) 2010-2012 Manuele J Sarfatti
+ * Licensed under the MIT License
+ * http://www.opensource.org/licenses/mit-license.php
+ */
+
+(function($) {
+
+	$.widget("mjs.nestedSortable", $.extend({}, $.ui.sortable.prototype, {
+
+		options: {
+			tabSize: 20,
+			disableNesting: 'mjs-nestedSortable-no-nesting',
+			errorClass: 'mjs-nestedSortable-error',
+			doNotClear: false,
+			listType: 'ol',
+			maxLevels: 0,
+			protectRoot: false,
+			rootID: null,
+			rtl: false,
+			isAllowed: function(item, parent) { return true; }
+		},
+
+		_create: function() {
+			this.element.data('sortable', this.element.data('nestedSortable'));
+
+			if (!this.element.is(this.options.listType))
+				throw new Error('nestedSortable: Please check the listType option is set to your actual list type');
+
+			return $.ui.sortable.prototype._create.apply(this, arguments);
+		},
+
+		destroy: function() {
+			this.element
+				.removeData("nestedSortable")
+				.unbind(".nestedSortable");
+			return $.ui.sortable.prototype.destroy.apply(this, arguments);
+		},
+
+		_mouseDrag: function(event) {
+
+			//Compute the helpers position
+			this.position = this._generatePosition(event);
+			this.positionAbs = this._convertPositionTo("absolute");
+
+			if (!this.lastPositionAbs) {
+				this.lastPositionAbs = this.positionAbs;
+			}
+
+			var o = this.options;
+
+			//Do scrolling
+			if(this.options.scroll) {
+				var scrolled = false;
+				if(this.scrollParent[0] != document && this.scrollParent[0].tagName != 'HTML') {
+
+					if((this.overflowOffset.top + this.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity)
+						this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop + o.scrollSpeed;
+					else if(event.pageY - this.overflowOffset.top < o.scrollSensitivity)
+						this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop - o.scrollSpeed;
+
+					if((this.overflowOffset.left + this.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity)
+						this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft + o.scrollSpeed;
+					else if(event.pageX - this.overflowOffset.left < o.scrollSensitivity)
+						this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft - o.scrollSpeed;
+
+				} else {
+
+					if(event.pageY - $(document).scrollTop() < o.scrollSensitivity)
+						scrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed);
+					else if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity)
+						scrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed);
+
+					if(event.pageX - $(document).scrollLeft() < o.scrollSensitivity)
+						scrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed);
+					else if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity)
+						scrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed);
+
+				}
+
+				if(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour)
+					$.ui.ddmanager.prepareOffsets(this, event);
+			}
+
+			//Regenerate the absolute position used for position checks
+			this.positionAbs = this._convertPositionTo("absolute");
+
+      // Find the top offset before rearrangement,
+      var previousTopOffset = this.placeholder.offset().top;
+
+			//Set the helper position
+			if(!this.options.axis || this.options.axis != "y") this.helper[0].style.left = this.position.left+'px';
+			if(!this.options.axis || this.options.axis != "x") this.helper[0].style.top = this.position.top+'px';
+
+			//Rearrange
+			for (var i = this.items.length - 1; i >= 0; i--) {
+
+				//Cache variables and intersection, continue if no intersection
+				var item = this.items[i], itemElement = item.item[0], intersection = this._intersectsWithPointer(item);
+				if (!intersection) continue;
+
+				if(itemElement != this.currentItem[0] //cannot intersect with itself
+					&&	this.placeholder[intersection == 1 ? "next" : "prev"]()[0] != itemElement //no useless actions that have been done before
+					&&	!$.contains(this.placeholder[0], itemElement) //no action if the item moved is the parent of the item checked
+					&& (this.options.type == 'semi-dynamic' ? !$.contains(this.element[0], itemElement) : true)
+					//&& itemElement.parentNode == this.placeholder[0].parentNode // only rearrange items within the same container
+				) {
+
+					$(itemElement).mouseenter();
+
+					this.direction = intersection == 1 ? "down" : "up";
+
+					if (this.options.tolerance == "pointer" || this._intersectsWithSides(item)) {
+						$(itemElement).mouseleave();
+						this._rearrange(event, item);
+					} else {
+						break;
+					}
+
+					// Clear emtpy ul's/ol's
+					this._clearEmpty(itemElement);
+
+					this._trigger("change", event, this._uiHash());
+					break;
+				}
+			}
+
+			var parentItem = (this.placeholder[0].parentNode.parentNode &&
+							 $(this.placeholder[0].parentNode.parentNode).closest('.ui-sortable').length)
+				       			? $(this.placeholder[0].parentNode.parentNode)
+				       			: null,
+			    level = this._getLevel(this.placeholder),
+			    childLevels = this._getChildLevels(this.helper);
+
+      // To find the previous sibling in the list, keep backtracking until we hit a valid list item.
+			var previousItem = this.placeholder[0].previousSibling ? $(this.placeholder[0].previousSibling) : null;
+			if (previousItem != null) {
+				while (previousItem[0].nodeName.toLowerCase() != 'li' || previousItem[0] == this.currentItem[0] || previousItem[0] == this.helper[0]) {
+					if (previousItem[0].previousSibling) {
+						previousItem = $(previousItem[0].previousSibling);
+					} else {
+						previousItem = null;
+						break;
+					}
+				}
+			}
+
+      // To find the next sibling in the list, keep stepping forward until we hit a valid list item.
+      var nextItem = this.placeholder[0].nextSibling ? $(this.placeholder[0].nextSibling) : null;
+      if (nextItem != null) {
+        while (nextItem[0].nodeName.toLowerCase() != 'li' || nextItem[0] == this.currentItem[0] || nextItem[0] == this.helper[0]) {
+          if (nextItem[0].nextSibling) {
+            nextItem = $(nextItem[0].nextSibling);
+          } else {
+            nextItem = null;
+            break;
+          }
+        }
+      }
+
+			var newList = document.createElement(o.listType);
+
+			this.beyondMaxLevels = 0;
+			
+			// If the item is moved to the left, send it to its parent's level unless there are siblings below it.
+			if (parentItem != null && nextItem == null &&
+					(o.rtl && (this.positionAbs.left + this.helper.outerWidth() > parentItem.offset().left + parentItem.outerWidth()) ||
+					!o.rtl && (this.positionAbs.left < parentItem.offset().left))) {
+				parentItem.after(this.placeholder[0]);
+				this._clearEmpty(parentItem[0]);
+				this._trigger("change", event, this._uiHash());
+			}
+			// If the item is below a sibling and is moved to the right, make it a child of that sibling.
+			else if (previousItem != null &&
+						(o.rtl && (this.positionAbs.left + this.helper.outerWidth() < previousItem.offset().left + previousItem.outerWidth() - o.tabSize) ||
+						!o.rtl && (this.positionAbs.left > previousItem.offset().left + o.tabSize))) {
+				this._isAllowed(previousItem, level, level+childLevels+1);
+				if (!previousItem.children(o.listType).length) {
+					previousItem[0].appendChild(newList);
+				}
+        // If this item is being moved from the top, add it to the top of the list.
+        if (previousTopOffset && (previousTopOffset <= previousItem.offset().top)) {
+          previousItem.children(o.listType).prepend(this.placeholder);
+        }
+        // Otherwise, add it to the bottom of the list.
+        else {
+				  previousItem.children(o.listType)[0].appendChild(this.placeholder[0]);
+        }
+				this._trigger("change", event, this._uiHash());
+			}
+			else {
+				this._isAllowed(parentItem, level, level+childLevels);
+			}
+
+			//Post events to containers
+			this._contactContainers(event);
+
+			//Interconnect with droppables
+			if($.ui.ddmanager) $.ui.ddmanager.drag(this, event);
+
+			//Call callbacks
+			this._trigger('sort', event, this._uiHash());
+
+			this.lastPositionAbs = this.positionAbs;
+			return false;
+
+		},
+
+		_mouseStop: function(event, noPropagation) {
+
+			// If the item is in a position not allowed, send it back
+			if (this.beyondMaxLevels) {
+
+				this.placeholder.removeClass(this.options.errorClass);
+
+				if (this.domPosition.prev) {
+					$(this.domPosition.prev).after(this.placeholder);
+				} else {
+					$(this.domPosition.parent).prepend(this.placeholder);
+				}
+
+				this._trigger("revert", event, this._uiHash());
+
+			}
+
+			// Clean last empty ul/ol
+			for (var i = this.items.length - 1; i >= 0; i--) {
+				var item = this.items[i].item[0];
+				this._clearEmpty(item);
+			}
+
+			$.ui.sortable.prototype._mouseStop.apply(this, arguments);
+
+		},
+
+		serialize: function(options) {
+
+			var o = $.extend({}, this.options, options),
+				items = this._getItemsAsjQuery(o && o.connected),
+			    str = [];
+
+			$(items).each(function() {
+				var res = ($(o.item || this).attr(o.attribute || 'id') || '')
+						.match(o.expression || (/(.+)[-=_](.+)/)),
+				    pid = ($(o.item || this).parent(o.listType)
+						.parent(o.items)
+						.attr(o.attribute || 'id') || '')
+						.match(o.expression || (/(.+)[-=_](.+)/));
+
+				if (res) {
+					str.push(((o.key || res[1]) + '[' + (o.key && o.expression ? res[1] : res[2]) + ']')
+						+ '='
+						+ (pid ? (o.key && o.expression ? pid[1] : pid[2]) : o.rootID));
+				}
+			});
+
+			if(!str.length && o.key) {
+				str.push(o.key + '=');
+			}
+
+			return str.join('&');
+
+		},
+
+		toHierarchy: function(options) {
+
+			var o = $.extend({}, this.options, options),
+				sDepth = o.startDepthCount || 0,
+			    ret = [];
+
+			$(this.element).children(o.items).each(function () {
+				var level = _recursiveItems(this);
+				ret.push(level);
+			});
+
+			return ret;
+
+			function _recursiveItems(item) {
+				var id = ($(item).attr(o.attribute || 'id') || '').match(o.expression || (/(.+)[-=_](.+)/));
+				if (id) {
+					var currentItem = {"id" : id[2]};
+					if ($(item).children(o.listType).children(o.items).length > 0) {
+						currentItem.children = [];
+						$(item).children(o.listType).children(o.items).each(function() {
+							var level = _recursiveItems(this);
+							currentItem.children.push(level);
+						});
+					}
+					return currentItem;
+				}
+			}
+		},
+
+		toArray: function(options) {
+
+			var o = $.extend({}, this.options, options),
+				sDepth = o.startDepthCount || 0,
+			    ret = [],
+			    left = 2;
+
+			ret.push({
+				"item_id": o.rootID,
+				"parent_id": 'none',
+				"depth": sDepth,
+				"left": '1',
+				"right": ($(o.items, this.element).length + 1) * 2
+			});
+
+			$(this.element).children(o.items).each(function () {
+				left = _recursiveArray(this, sDepth + 1, left);
+			});
+
+			ret = ret.sort(function(a,b){ return (a.left - b.left); });
+
+			return ret;
+
+			function _recursiveArray(item, depth, left) {
+
+				var right = left + 1,
+				    id,
+				    pid;
+
+				if ($(item).children(o.listType).children(o.items).length > 0) {
+					depth ++;
+					$(item).children(o.listType).children(o.items).each(function () {
+						right = _recursiveArray($(this), depth, right);
+					});
+					depth --;
+				}
+
+				id = ($(item).attr(o.attribute || 'id')).match(o.expression || (/(.+)[-=_](.+)/));
+
+				if (depth === sDepth + 1) {
+					pid = o.rootID;
+				} else {
+					var parentItem = ($(item).parent(o.listType)
+											 .parent(o.items)
+											 .attr(o.attribute || 'id'))
+											 .match(o.expression || (/(.+)[-=_](.+)/));
+					pid = parentItem[2];
+				}
+
+				if (id) {
+						ret.push({"item_id": id[2], "parent_id": pid, "depth": depth, "left": left, "right": right});
+				}
+
+				left = right + 1;
+				return left;
+			}
+
+		},
+
+		_clearEmpty: function(item) {
+
+			var emptyList = $(item).children(this.options.listType);
+			if (emptyList.length && !emptyList.children().length && !this.options.doNotClear) {
+				emptyList.remove();
+			}
+
+		},
+
+		_getLevel: function(item) {
+
+			var level = 1;
+
+			if (this.options.listType) {
+				var list = item.closest(this.options.listType);
+				while (list && list.length > 0 && 
+                    	!list.is('.ui-sortable')) {
+					level++;
+					list = list.parent().closest(this.options.listType);
+				}
+			}
+
+			return level;
+		},
+
+		_getChildLevels: function(parent, depth) {
+			var self = this,
+			    o = this.options,
+			    result = 0;
+			depth = depth || 0;
+
+			$(parent).children(o.listType).children(o.items).each(function (index, child) {
+					result = Math.max(self._getChildLevels(child, depth + 1), result);
+			});
+
+			return depth ? result + 1 : result;
+		},
+
+		_isAllowed: function(parentItem, level, levels) {
+			var o = this.options,
+				isRoot = $(this.domPosition.parent).hasClass('ui-sortable') ? true : false,
+				maxLevels = this.placeholder.closest('.ui-sortable').nestedSortable('option', 'maxLevels'); // this takes into account the maxLevels set to the recipient list
+
+			// Is the root protected?
+			// Are we trying to nest under a no-nest?
+			// Are we nesting too deep?
+			if (!o.isAllowed(this.currentItem, parentItem) ||
+				parentItem && parentItem.hasClass(o.disableNesting) ||
+				o.protectRoot && (parentItem == null && !isRoot || isRoot && level > 1)) {
+					this.placeholder.addClass(o.errorClass);
+					if (maxLevels < levels && maxLevels != 0) {
+						this.beyondMaxLevels = levels - maxLevels;
+					} else {
+						this.beyondMaxLevels = 1;
+					}
+			} else {
+				if (maxLevels < levels && maxLevels != 0) {
+					this.placeholder.addClass(o.errorClass);
+					this.beyondMaxLevels = levels - maxLevels;
+				} else {
+					this.placeholder.removeClass(o.errorClass);
+					this.beyondMaxLevels = 0;
+				}
+			}
+		}
+
+	}));
+
+	$.mjs.nestedSortable.prototype.options = $.extend({}, $.ui.sortable.prototype.options, $.mjs.nestedSortable.prototype.options);
+})(jQuery);
Index: admin/langs.php
===================================================================
--- admin/langs.php	(revision 1499)
+++ admin/langs.php	(revision 1553)
@@ -138,9 +138,9 @@
 
 if (!empty($_GET['removed'])) {
-	dcPage::message(__('Language has been successfully deleted.'));
+	dcPage::success(__('Language has been successfully deleted.'));
 }
 
 if (!empty($_GET['added'])) {
-	dcPage::message(($_GET['added'] == 2 ? __('Language has been successfully upgraded') : __('Language has been successfully installed.')));
+	dcPage::success(($_GET['added'] == 2 ? __('Language has been successfully upgraded') : __('Language has been successfully installed.')));
 }
 
Index: admin/media.php
===================================================================
--- admin/media.php	(revision 1526)
+++ admin/media.php	(revision 1553)
@@ -264,25 +264,25 @@
 
 if (!empty($_GET['mkdok'])) {
-	dcPage::message(__('Directory has been successfully created.'));
+	dcPage::success(__('Directory has been successfully created.'));
 }
 
 if (!empty($_GET['upok'])) {
-	dcPage::message(__('Files have been successfully uploaded.'));
+	dcPage::success(__('Files have been successfully uploaded.'));
 }
 
 if (!empty($_GET['rmfok'])) {
-	dcPage::message(__('File has been successfully removed.'));
+	dcPage::success(__('File has been successfully removed.'));
 }
 
 if (!empty($_GET['rmdok'])) {
-	dcPage::message(__('Directory has been successfully removed.'));
+	dcPage::success(__('Directory has been successfully removed.'));
 }
 
 if (!empty($_GET['rebuildok'])) {
-	dcPage::message(__('Directory has been successfully rebuilt.'));
+	dcPage::success(__('Directory has been successfully rebuilt.'));
 }
 
 if (!empty($_GET['unzipok'])) {
-	dcPage::message(__('Zip file has been successfully extracted.'));
+	dcPage::success(__('Zip file has been successfully extracted.'));
 }
 
Index: admin/media_item.php
===================================================================
--- admin/media_item.php	(revision 1499)
+++ admin/media_item.php	(revision 1553)
@@ -190,8 +190,8 @@
 
 if (!empty($_GET['fupd']) || !empty($_GET['fupl'])) {
-	dcPage::message(__('File has been successfully updated.'));
+	dcPage::success(__('File has been successfully updated.'));
 }
 if (!empty($_GET['thumbupd'])) {
-	dcPage::message(__('Thumbnails have been successfully updated.'));
+	dcPage::success(__('Thumbnails have been successfully updated.'));
 }
 
Index: admin/plugins.php
===================================================================
--- admin/plugins.php	(revision 1499)
+++ admin/plugins.php	(revision 1553)
@@ -200,8 +200,8 @@
 
 if (!empty($_GET['removed'])) {
-	dcPage::message(__('Plugin has been successfully deleted.'));
+	dcPage::success(__('Plugin has been successfully deleted.'));
 }
 if (!empty($_GET['added'])) {
-	dcPage::message(($_GET['added'] == 2 ? __('Plugin has been successfully upgraded') : __('Plugin has been successfully installed.')));
+	dcPage::success(($_GET['added'] == 2 ? __('Plugin has been successfully upgraded') : __('Plugin has been successfully installed.')));
 }
 
Index: admin/post.php
===================================================================
--- admin/post.php	(revision 1529)
+++ admin/post.php	(revision 1550)
@@ -370,18 +370,18 @@
 
 if (!empty($_GET['upd'])) {
-	dcPage::message(__('Entry has been successfully updated.'));
+	dcPage::success(__('Entry has been successfully updated.'));
 }
 elseif (!empty($_GET['crea'])) {
-	dcPage::message(__('Entry has been successfully created.'));
+	dcPage::success(__('Entry has been successfully created.'));
 }
 elseif (!empty($_GET['attached'])) {
-	dcPage::message(__('File has been successfully attached.'));
+	dcPage::success(__('File has been successfully attached.'));
 }
 elseif (!empty($_GET['rmattach'])) {
-	dcPage::message(__('Attachment has been successfully removed.'));
+	dcPage::success(__('Attachment has been successfully removed.'));
 }
 
 if (!empty($_GET['creaco'])) {
-	dcPage::message(__('Comment has been successfully created.'));
+	dcPage::success(__('Comment has been successfully created.'));
 }
 
@@ -458,5 +458,5 @@
 					($core->auth->check('categories', $core->blog->id) ?
 						'<div>'.
-						'<p id="new_cat">'.__('Add a new category').'</p>'.
+						'<h5 id="create_cat">'.__('Add a new category').'</h5>'.
 						'<p><label for="new_cat_title">'.__('Title:').' '.
 						form::field('new_cat_title',30,255,'','maximal').'</label></p>'.
Index: admin/posts.php
===================================================================
--- admin/posts.php	(revision 1514)
+++ admin/posts.php	(revision 1553)
@@ -253,7 +253,7 @@
 );
 if (!empty($_GET['upd'])) {
-	dcPage::message(__('Selected entries have been successfully updated.'));
+	dcPage::success(__('Selected entries have been successfully updated.'));
 } elseif (!empty($_GET['del'])) {
-	dcPage::message(__('Selected entries have been successfully deleted.'));
+	dcPage::success(__('Selected entries have been successfully deleted.'));
 }
 if (!$core->error->flag())
Index: admin/preferences.php
===================================================================
--- admin/preferences.php	(revision 1518)
+++ admin/preferences.php	(revision 1553)
@@ -371,20 +371,20 @@
 
 if (!empty($_GET['upd'])) {
-	dcPage::message(__('Personal information has been successfully updated.'));
+	dcPage::success(__('Personal information has been successfully updated.'));
 }
 if (!empty($_GET['updated'])) {
-	dcPage::message(__('Personal options has been successfully updated.'));
+	dcPage::success(__('Personal options has been successfully updated.'));
 }
 if (!empty($_GET['append'])) {
-	dcPage::message(__('Favorites have been successfully added.'));
+	dcPage::success(__('Favorites have been successfully added.'));
 }
 if (!empty($_GET['neworder'])) {
-	dcPage::message(__('Favorites have been successfully updated.'));
+	dcPage::success(__('Favorites have been successfully updated.'));
 }
 if (!empty($_GET['removed'])) {
-	dcPage::message(__('Favorites have been successfully removed.'));
+	dcPage::success(__('Favorites have been successfully removed.'));
 }
 if (!empty($_GET['replaced'])) {
-	dcPage::message(__('Default favorites have been successfully updated.'));
+	dcPage::success(__('Default favorites have been successfully updated.'));
 }
 
Index: admin/style/default.css
===================================================================
--- admin/style/default.css	(revision 1526)
+++ admin/style/default.css	(revision 1577)
@@ -17,4 +17,5 @@
 }
 body {
+	font-size: 12px; /* ie < 9 sucks */
 	font-size: 1.2rem;
 	line-height: 1.5;
@@ -25,5 +26,4 @@
 	padding: 0;
 }
-
 a, a:link, a:visited {
 	color: #2373A8;
@@ -34,16 +34,16 @@
 	text-decoration: underline;
 }
-a img, a:link img, a:visited img { 
+a img, a:link img, a:visited img {
 	border:none;
 }
-
 h1, h2, h3, .as_h3, h4, h5, h6, p {
 	margin-top: 0;
-	margin-bottom: 1rem;
+	margin-bottom: 1em;
 }
 h2 {
 	color: #666;
+	font-size: 18px; /* ie < 9 sucks */
 	font-size: 1.8rem;
-	padding: 0 0 1.8rem;
+	padding: 0 0 1.5em;
 	font-weight: normal;
 }
@@ -56,9 +56,11 @@
 }
 .page-title img {
-	padding-left: .6rem;
+	padding-left: .5em;
 	vertical-align: middle;
 }
 #content > h2 {
+	padding: 0 18px 6px; /* ie < 9 sucks */
 	padding: 0 1.8rem .6rem;
+	margin: 0 -18px .5em; /* ie < 9 sucks */
 	margin: 0 -1.8rem 1rem;
 	background: #fff url(bg_h2.png) repeat-x center bottom;
@@ -66,12 +68,15 @@
 h3, .as_h3 {
 	color: #575859;
+	font-size: 16px; /* ie < 9 sucks */
+	font-size: 1.6rem;
+}
+h4 {
+	font-size: 14px; /* ie < 9 sucks */
 	font-size: 1.4rem;
-}
-h4 {
-	font-size: 1.1em;
 	color: #575859;
 }
 h5 {
-	font-size: 1em;
+	font-size: 12px; /* ie < 9 sucks */
+	font-size: 1.3rem;
 	color: #575859;
 }
@@ -81,5 +86,5 @@
 }
 .entry-status label img {
-	padding-left: .4rem;
+	padding-left: 4px;
 	vertical-align: text-top;
 }
@@ -108,4 +113,14 @@
 abbr {
 	cursor: help;
+}
+
+.no-js .js-hidden {
+        display: block;
+}
+.no-js .no-js-hidden {
+        display: none;
+}
+.js-hidden {
+        display: none;
 }
 
@@ -136,4 +151,5 @@
 }
 #prelude li a {
+	padding-left: 16px; /* ie < 9 sucks */
 	padding-left: 1.6rem;
 	background: #A2CBE9;
@@ -150,5 +166,5 @@
 	padding: 0;
 	margin: 0;
-	height: 3.6rem;
+	height: 36px;
 	text-indent: -1000px;
 }
@@ -157,5 +173,7 @@
 	top: 0;
 	left: 0;
+	width: 174px; /* ie < 9 sucks */
 	width: 17.4rem;
+	height: 36px; /* ie < 9 sucks */
 	height: 3.6rem;
 	border: none;
@@ -166,13 +184,14 @@
 }
 #top h1 a:hover, #top h1 a:focus {
-	background: transparent url(dc_logos/b-dotclear120.png) no-repeat 0 -94px;	
+	background: transparent url(dc_logos/b-dotclear120.png) no-repeat 0 -94px;
 }
 #info-boxes {
-	font-size: 1em;
+	font-size: 12px; /* ie < 9 sucks */
+	font-size: 1.2rem;
 	line-height: 3em;
 }
 #info-box1 {
 	margin: 0;
-	padding: 0 3px 0 1.8rem;
+	padding: 0 3px 0 18px;
 	color: #fff;
 	display: inline-block;
@@ -180,5 +199,5 @@
 #info-box2 {
 	margin: 0;
-	padding: 0 1.3em 0 0;
+	padding: 0 18px 0 0;
 	color: #fff;
 	float: right;
@@ -190,4 +209,5 @@
 }
 #info-box1 select {
+	width: 145px; /* ie < 9 sucks */
 	width: 14.5em;
 }
@@ -205,4 +225,7 @@
 	font-weight: normal;
 }
+#info-boxes .logout {
+	margin-right: 0;
+}
 #info-box1 a {
 	margin-left: 1.33em;
@@ -232,4 +255,5 @@
 #content {
 	margin: 0 0 0 14.5em;
+	padding: 9px 18px 18px; /* ie < 9 sucks */
 	padding: .9rem 1.8rem 1.8rem;
 	background: #fff;
@@ -280,5 +304,5 @@
 /* -------------------------------------------------------------- layout - onglets */
 .part-tabs ul {
-	padding: .5em 0 .3em 1.2rem;
+	padding: .5em 0 .3em 1em;
 	border-bottom: 1px solid #ddd;
 }
@@ -306,4 +330,5 @@
 	font-weight: bold;
 	border-bottom-color: #fff;
+	padding-bottom: 7px; /* ie < 9 sucks */
 	padding-bottom: .7rem;
 }
@@ -319,7 +344,7 @@
 #main-menu h3 {
 	margin: 0;
-	padding: 1.2rem 0 1rem 2.2rem;
-	text-indent: -1.6rem;
+	padding: 10px 0 10px 8px;
 	color: #666;
+	font-size: 14px; /* ie < 9 sucks */
 	font-size: 1.4rem;
 }
@@ -328,5 +353,5 @@
 }
 #main-menu ul {
-	margin: 0 0 1.8rem 0;
+	margin: 0 0 1.5em 0;
 	padding: 0;
 	list-style: none;
@@ -335,7 +360,10 @@
 	display: block;
 	margin: 0.5em 0 0;
-	padding: .3rem 0 0 30px;
+	padding: 3px 0 0 30px;
 	background-repeat: no-repeat;
 	background-position: 8px .3em;
+}
+#main-menu ul li:first-child {
+	margin-top: 0;
 }
 #main-menu li.active {
@@ -354,38 +382,42 @@
 }
 #search-menu {
-	padding: .3rem .4rem 0;
+	padding: 4px 5px 0;
 	font-size: 100%
+}
+#search-menu * {
+	height: 20px; /* ie < 9 sucks */
+	height: 2rem;
 }
 #search-menu p {
 	display: inline-block;
 	border: 1px solid #999;
-	border-radius: .6em;
+	border-radius: .3em;
 	position: relative;
-	height: 2rem;
 	overflow: hidden;
 }
 #search-menu #q {
+	width: 120px; /* ie < 9 sucks */
 	width: 12rem;
-	border-bottom-left-radius: .6em;
-	border-top-left-radius: .6em;
+	border-bottom-left-radius: .3em;
+	border-top-left-radius: .3em;
 	background: transparent url(search.png) no-repeat 4px center;
 	text-indent: 18px;
-	height: 2rem;
-	padding: 0 2px; 
+	padding: 0 2px;
 	border: none;
 }
 #search-menu input[type="submit"] {
-	padding: 0 0.3rem;
+	padding: 0 3px;
+	padding: 0 .3rem;
 	background: #dfdfdf;
 	border-color: #999;
 	color: #444;
-	border-bottom-right-radius: .6em;
-	border-top-right-radius: .6em;
+	border-bottom-right-radius: .3em;
+	border-top-right-radius: .3em;
 	border-top-left-radius: 0;
 	border-bottom-left-radius: 0;
 	text-shadow: none;
-	height: 2rem;
 	border: none;
 	border-left: 1px solid #aaa;
+	font-size: 10px; /* ie < 9 sucks */
 	font-size: 1rem;
 }
@@ -401,12 +433,12 @@
 	color: #000;
 	font-variant: small-caps;
-	padding-top: .6rem;
+	padding-top: .2em;
 }
 /* ------------------------------------------------------------------ footer */
 #footer {
 	clear: both;
-	padding: .6rem 1.2rem .6rem 0;
+	padding: .5em 1em .5em 0;
 	text-align: right;
-	border-top: .1rem solid #ccc;
+	border-top: 1px solid #ccc;
 }
 #footer p {
@@ -416,5 +448,5 @@
 }
 #footer p span.credit {
-	font-size: 1rem;
+	font-size: 1em;
 	font-weight: normal;
 }
@@ -424,4 +456,5 @@
 	width: 20em;
 	margin: 1.5em auto 0;
+	font-size: 14px; /* ie < 9 sucks */
 	font-size: 1.4rem;
 }
@@ -436,5 +469,5 @@
 	border: 1px solid #A8DC26;
 	padding: 1em 1em 0 1em;
-	border-radius: 4px;
+	border-radius: 3px;
 	background: #fff;
 }
@@ -442,10 +475,17 @@
 	width: 100%;
 }
+#login-screen input.login {
+	padding-top: 6px;
+	padding-bottom: 6px;
+	font-size: 1em;
+}
 #login-screen #issue {
-	margin-left: 1.5rem;
+	margin-left: 1.33em;
+	font-size: 12px; /* ie < 9 sucks */
 	font-size: 1.2rem;
 }
-#login-screen #issue strong {font-weight: normal;}
-
+#login-screen #issue strong {
+	font-weight: normal;
+}
 /* ------------------------------------------------------------------ dashboard */
 #dashboard-main {
@@ -563,5 +603,5 @@
 }
 #upg-notify ul {
-	padding-left: 15px;
+	padding-left: 1.5em;
 }
 #upg-notify li {
@@ -579,5 +619,5 @@
 }
 .multi-part {
-	padding-left: 1.2rem;
+	padding-left: 1em;
 }
 #entry-content label {
@@ -603,5 +643,5 @@
 /* ------------------------------------------------------------------ categories */
 #categories {
-	margin: 1em 0 2em;
+	margin: 1em 0;
 }
 #categories ul {
@@ -612,11 +652,17 @@
 #categories li {
 	margin: .5em 0;
-	padding: .3em 1.5em;
+	padding: .5em 1.2em;
 	border: 1px solid #ccc;
-	border-left: 1em solid #E5E3DA;
-	border-radius: .3em;
+	border-left: 8px solid #E5E3DA;
+	border-radius: 3px;
+}
+#categories input[type="checkbox"] {
+	margin-right: .8em;
 }
 #categories h4 {
 	margin: 0;
+}
+#categories label a {
+	font-weight: bold;
 }
 #categories h4 span {
@@ -625,4 +671,11 @@
 #categories li p {
 	margin: 0;
+	display: inline-block;
+}
+.cat-url {
+	padding-left: 1em;
+}
+.cat-actions {
+	line-height: 2;
 }
 select#del_cat {
@@ -632,4 +685,19 @@
 	font-weight: bold;
 	margin-top: 2em;
+}
+#categories .placeholder {
+        outline: 1px dashed #4183C4;
+        min-height: 2.5em;
+}
+#save-set-order.disabled {
+        text-shadow: none;
+        color: #666;
+        background: #F5F5F5;
+        border: 1px solid #CCCCCC;
+}
+#save-set-order.disabled:hover {
+        color: #666;
+        background: #DFDFDF;
+        border: 1px solid #CCCCCC;
 }
 /* ------------------------------------------------------------------ media */
@@ -819,5 +887,4 @@
 	display: block;
 }
-
 /* Themes list, JS version */
 #themes-wrapper {
@@ -832,10 +899,10 @@
 	display: table-cell;
 	vertical-align: top;
-	padding: 0; 
+	padding: 0;
 	width: 312px;
 	border: 1px solid #ccc;
 	border-radius: 3px;
 }
-#theme-box .theme-shot, 
+#theme-box .theme-shot,
 #theme-box .theme-info,
 #theme-box .theme-actions {
@@ -895,5 +962,4 @@
 	vertical-align: middle;
 }
-
 select.l10n option {
 	padding-left: 16px;
@@ -913,13 +979,15 @@
 	background: transparent url(../images/page_help.png) no-repeat 6px center;
 	position: absolute;
+	top: 36px; /* ie < 9 sucks */
 	top: 3.6rem;
 	right: 0px;
-	padding: 0 2rem 0 3rem;
+	padding: 0 1.5em 0 30px;
 	cursor: pointer;
 	color: #2373A8;
+	line-height: 42px; /* ie < 9 sucks */
 	line-height: 4.2rem;
 }
 #help-button span {
-	padding: .6rem 0 .1rem 0;
+	padding: .5em 0 .1em 0;
 	border-bottom: 1px solid #2373A8;
 }
@@ -932,4 +1000,5 @@
 }
 #content.with-help #help-button {
+	right: 282px; /* ie < 9 sucks */
 	right: 28.2rem;
 	background-color: #f5f5f5;
@@ -938,21 +1007,23 @@
 	border-left: 2px solid #FFD478;
 	border-bottom: 2px solid #FFD478;
-	border-bottom-left-radius: 1rem;
-	border-top-left-radius: 1rem;
+	border-bottom-left-radius: 1em;
+	border-top-left-radius: 1em;
 }
 #content.with-help #help {
 	display: block;
 	position: absolute;
+	top: 36px; /* ie < 9 sucks */
 	top: 3.6rem;
 	right: 0;
+	width: 280px; /* ie < 9 sucks */
 	width: 28rem;
 	border-left: 2px solid #FFD478;
 	border-top: 2px solid #FFD478;
 	margin-top: 0;
-	padding: 10px 0 0 0;
+	padding: .5em 0 0 0;
 	overflow: auto;
 }
 #content.with-help .help-content {
-	padding: 0 5px 1em 5px;
+	padding: 0 .5em 1em;
 }
 .help-content dt {
@@ -981,5 +1052,5 @@
 	background: #575859;
 	font-size: 1.5em;
-	text-indent: .6rem;
+	text-indent: .5em;
 	line-height: 1.3em;
 }
@@ -989,5 +1060,5 @@
 body.popup #content {
 	margin: 0;
-	padding: .6rem 0 !important;
+	padding: .5em 0;
 }
 body.popup #content h2 {
@@ -998,12 +1069,12 @@
 }
 /* ------------------------------------------------------------------ messages */
-.error, .message, .static-msg, .static-msg {
-	padding: 0.5em 0.5em 0.5em 48px;
+.error, .message, .static-msg, .static-msg, .success {
+	padding: 1em 0.5em 0.5em 48px;
 	margin-bottom: 1em;
 	border-radius: 8px;
 }
-p.error, p.message, p.static-msg {
-	padding-top: 1rem;
-	padding-bottom: 1rem;
+p.error, p.message, p.static-msg, p.success {
+	padding-top: 1em;
+	padding-bottom: 1em;
 }
 .error {
@@ -1016,5 +1087,5 @@
 }
 .success {
-	background-color: #cf9;
+	background: #baff8e url(msg-success.png) no-repeat .7em .7em;
 	color: #000;
 }
@@ -1025,10 +1096,9 @@
 	color: #666;
 }
-
 /* ------------------------------------------------------------------ navigation */
 .anchor-nav {
 	background: #575859;
 	color: #fff;
-	padding: .4rem 1.2rem;
+	padding: 4px 1em;
 	float: right;
 }
@@ -1039,6 +1109,6 @@
 .nav_prevnext a, a.back {
 	border: 1px solid #ddd;
-	padding: .2rem 2rem;
-	border-radius: 1rem;
+	padding: 2px 1.5em;
+	border-radius: .75em;
 	background-color: #f0f0f0;
 }
@@ -1050,6 +1120,6 @@
 	float: right;
 	border: 1px solid #eee;
-	padding: .2rem 2rem;
-	border-radius: 1rem;
+	padding: 2px 1.5em;
+	border-radius: .75em;
 	background-color: #ffe;
 }
@@ -1076,5 +1146,4 @@
 }
 /* -------------------------------------------------------------------- CLASSES COMMUNES */
-
 .no-margin, #entry-content label.no-margin {
 	margin: 0;
@@ -1088,5 +1157,5 @@
 	background: #fff;
 	border: 1px solid #aaa;
-	border-radius: 6px; 
+	border-radius: 6px;
 	padding: 1em .7em .5em;
 	margin-bottom: 1em;
@@ -1095,5 +1164,10 @@
 	color: #333;
 }
-
+.table {
+	display: table;
+}
+.cell {
+	display: table-cell;
+}
 /* paragraphe pour bouton Nouveau bidule */
 p.top-add {
@@ -1165,17 +1239,4 @@
 	padding: 5px 0 5px 20px;
 }
-/* pas trouvé dans le code */
-.comment {
-	border-top: 2px solid #ccc;
-	margin-bottom: 1em;
-	padding: 2em 0 1em 0;
-	position: relative;
-}
-.comment form p {
-	margin: 0;
-	position: absolute;
-	top: 2px;
-	right: 0;
-}
 .distrib img {
 	display: block;
@@ -1186,4 +1247,5 @@
 -------------------------------------------------------- */
 table {
+	font-size: 12px; /* ie < 9 sucks */
 	font-size: 1.2rem;
 	border-collapse: collapse;
@@ -1225,5 +1287,5 @@
 	border-width: 0 0 1px 0;
 	border-color: #ddd;
-	line-height: 2.4rem;
+	line-height: 2em;
 	padding-bottom: 0;
 }
@@ -1244,5 +1306,5 @@
 	width: 80%;
 	border: 1px solid #999;
-	margin-bottom: 3em; 
+	margin-bottom: 3em;
 }
 table.settings th, table.prefs th {
@@ -1339,5 +1401,5 @@
 input.invalid, textarea.invalid, select.invalid {
 	border: 1px solid red;
-	background: #fff; 
+	background: #fff;
 	color: red;
 	box-shadow: 0 0 0 1px rgba(218, 62, 90, 0.3)
@@ -1358,4 +1420,8 @@
 	padding: 0;
 	background: transparent;
+}
+input[type=file] {
+	margin-top: .3em;
+	margin-bottom: .3em;
 }
 label {
@@ -1378,13 +1444,15 @@
 p.form-note.warn, p.form-note.info, p.warning {
 	font-style: normal;
-	padding: .2em 1em .1em 24px;
+	padding: .2em 1em .3em 32px;
+	color: #333;
+	display: inline-block;
 }
 p.form-note.warn, p.warning {
-	background: #ffd url(warning.png) no-repeat .3em .3em;
+	background: #ffd url(msg-warning.png) no-repeat .3em .3em;
 	border: 1px solid #f0c020;
 }
 p.form-note.info {
-	background: #f5eaff url(info.png) no-repeat .3em .3em;
-	border: 1px solid #ddbaff;
+	background: #f5eaff url(msg-info.png) no-repeat .3em .3em;
+	border: 1px solid #c484ff;
 }
 .form-note a {border-bottom: 1px solid #ddbaff;}
@@ -1420,5 +1488,5 @@
 p.field {
 	position: relative;
-	
+
 }
 p.field label {
@@ -1441,5 +1509,5 @@
 a.form-control {
 	display: none;
-	background: url(../images/expand.png) no-repeat .4rem center;
+	background: url(../images/expand.png) no-repeat 4px center;
 	padding-left: 20px;
 	color: #000;
@@ -1466,4 +1534,5 @@
 	border-radius: .2em;
 	margin-bottom: .1em;
+	font-size: 12px; /* ie < 9 sucks */
 	font-size: 1.2rem;
  }
@@ -1524,5 +1593,5 @@
 input[type=submit].delete {
 	color: #c00;
-	padding-bottom: .2rem;
+	padding-bottom: 2px;
 }
 #entry-content .delete {
@@ -1551,8 +1620,9 @@
 	background-color:#9dce2c;
 	border:1px solid #83c41a;
-	padding:.6rem 1.8rem;
+	padding:.5em 1.5em;
 	color: #000;
 	text-shadow: 1px 1px 0 #BBDB58;
 	font-weight: normal;
+	font-size: 14px; /* ie < 9 sucks */
 	font-size: 1.4rem;
 }
@@ -1604,5 +1674,5 @@
 #filters-form {
 	border: 1px dashed #999;
-	border-radius: .6rem;
+	border-radius: .5em;
 	margin-bottom: 2em;
 	padding: .5em 1em 0;
@@ -1648,13 +1718,13 @@
 	margin-top: 1em;
 	line-height: 22px;
-	padding: 0 1rem; 
+	padding: 0 .75em;
 	border: 1px solid #ddd;
-	overflow: hidden; 
-	background: #e1e1e1; 
-	background: -moz-linear-gradient(center top , #f2f2f2, #e1e1e1); 
-	background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f2f2f2), color-stop(100%,#e1e1e1)); 
-	-moz-border-radius: 4px; 
-	-webkit-border-radius: 4px; 
-	border-radius: 4px; 
+	overflow: hidden;
+	background: #e1e1e1;
+	background: -moz-linear-gradient(center top , #f2f2f2, #e1e1e1);
+	background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f2f2f2), color-stop(100%,#e1e1e1));
+	-moz-border-radius: 4px;
+	-webkit-border-radius: 4px;
+	border-radius: 4px;
 	clear: left;
 }
@@ -1662,5 +1732,5 @@
 	height: 20px;
 	border: none;
-	padding: 2px 6px; 
+	padding: 2px 6px;
 	background-color : transparent;
 	background-position : 50% 50%;
@@ -1719,5 +1789,5 @@
 }
 	#top h1 a:link {
-		background: transparent url(dc_logos/b-dotclear120.png) no-repeat -180px 6px; 
+		background: transparent url(dc_logos/b-dotclear120.png) no-repeat -180px 6px;
 		border-right: 1px solid #ccc;
 	}
@@ -1733,8 +1803,9 @@
 		margin:0;
 		padding:0;
+		line-height: 32px; /* ie < 9 sucks */
 		line-height: 3.2rem;
 	}
-	#info-box1 {margin-left: 1rem;}
-	#info-box1 select {width: 14rem;}
+	#info-box1 {margin-left: .75em;}
+	#info-box1 select {width: 140px; width: 14rem;}
 	#main-menu, #main, #content, #content h2, #entry-wrapper, #entry-sidebar, #entry-content, .two-cols .col, .two-cols .col:first-child {
     	display:block;
@@ -1756,12 +1827,12 @@
 	#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}
+	#help-button {height:26px; width:26px; background-color: #A2CBE9; padding: 0; margin:0;font-size:10px; font-size: 1rem;line-height: 68px}
 }
 @media screen and (max-width: 492px) {
-	#header {height:3.6rem;}
-	#wrapper {font-size: 1.6rem;}
+	#header {height: 36px; height: 3.6rem;}
+	#wrapper {font-size: 16px; font-size: 1.6rem;}
 	.page-title, #info-boxes, .media-item {display: inline-block;}
 	div.media-list .media-item {width: 90%; float: none}
-	#info-box1 select {width: 12rem; margin-right: .6rem;}
+	#info-box1 select {width: 120px; width: 12rem; margin-right: .6rem;}
 	#info-box1 p.nomobile, label.nomobile {display: none;}
 }
Index: admin/update.php
===================================================================
--- admin/update.php	(revision 1529)
+++ admin/update.php	(revision 1553)
@@ -184,5 +184,5 @@
 if (!$core->error->flag()) {
 	if (!empty($_GET['nocache'])) {
-		dcPage::message(__('Manual checking of update done successfully.'));
+		dcPage::success(__('Manual checking of update done successfully.'));
 	}
 }
Index: admin/user.php
===================================================================
--- admin/user.php	(revision 1474)
+++ admin/user.php	(revision 1554)
@@ -185,9 +185,9 @@
 
 if (!empty($_GET['upd'])) {
-	dcPage::message(__('User has been successfully updated.'));
+	dcPage::success(__('User has been successfully updated.'));
 }
 
 if (!empty($_GET['add'])) {
-	dcPage::message(__('User has been successfully created.'));
+	dcPage::success(__('User has been successfully created.'));
 }
 
Index: inc/admin/lib.dc.page.php
===================================================================
--- inc/admin/lib.dc.page.php	(revision 1525)
+++ inc/admin/lib.dc.page.php	(revision 1576)
@@ -90,5 +90,5 @@
 		'<html xmlns="http://www.w3.org/1999/xhtml" '.
 		'xml:lang="'.$core->auth->getInfo('user_lang').'" '.
-		'lang="'.$core->auth->getInfo('user_lang').'">'."\n".
+		'lang="'.$core->auth->getInfo('user_lang').'" class="no-js">'."\n".
 		"<head>\n".
 		'  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />'."\n".
@@ -134,5 +134,5 @@
 		'<form action="index.php" method="post">'.
 		$blog_box.
-		'<p class="nomobile"><a href="'.$core->blog->url.'" onclick="window.open(this.href);return false;" title="'.__('Go to site').' ('.__('new window').')'.'">'.__('Go to site').' <img src="images/outgoing.png" alt="" /></a>'.
+		'<p class="nomobile"><a href="'.$core->blog->url.'" onclick="window.open(this.href);return false;" title="'.__('Go to site').' ('.__('new window').')'.'">'.__('Go to site').'<img src="images/outgoing.png" alt="" /></a>'.
 		'</p></form>'.
 		'</div>'.
@@ -140,5 +140,5 @@
 		'<a class="smallscreen'.(preg_match('/index.php$/',$_SERVER['REQUEST_URI']) ? ' active' : '').'" href="index.php">'.__('My dashboard').'</a>'.
 		'<span class="smallscreen"> | </span><a class="smallscreen'.(preg_match('/preferences.php(\?.*)?$/',$_SERVER['REQUEST_URI']) ? ' active' : '').'" href="preferences.php">'.__('My preferences').'</a>'.
-		'<span class="smallscreen"> | </span><a href="index.php?logout=1" class="logout">'.sprintf(__('Logout %s'),$core->auth->userID()).' <img src="images/logout.png" alt="" /></a>'.
+		'<span class="smallscreen"> | </span><a href="index.php?logout=1" class="logout">'.sprintf(__('Logout %s'),$core->auth->userID()).'<img src="images/logout.png" alt="" /></a>'.
 		'</div>'.
 		'</div>'.
@@ -298,5 +298,5 @@
 	}
 
-	public static function message($msg,$timestamp=true,$div=false,$echo=true)
+	public static function message($msg,$timestamp=true,$div=false,$echo=true,$class='message')
 	{
 		global $core;
@@ -304,5 +304,5 @@
 		$res = '';
 		if ($msg != '') {
-			$res = ($div ? '<div class="message">' : '').'<p'.($div ? '' : ' class="message"').'>'.
+			$res = ($div ? '<div class="'.$class.'">' : '').'<p'.($div ? '' : ' class="'.$class.'"').'>'.
 			($timestamp ? dt::str(__('%H:%M:%S:'),null,$core->auth->getInfo('user_tz')).' ' : '').$msg.
 			'</p>'.($div ? '</div>' : '');
@@ -312,4 +312,9 @@
 		}
 		return $res;
+	}
+
+	public static function success($msg,$timestamp=true,$div=false,$echo=true)
+	{
+		self::message($msg,$timestamp,$div,$echo,"success");
 	}
 
@@ -409,5 +414,5 @@
 
 		echo
-		'<div id="help"><hr /><div class="help-content clear"><h2>'.__('Help').'</h2>'.
+		'<div id="help"><hr /><div class="help-content clear"><h3>'.__('Help about this page').'</h3>'.
 		$content.
 		'</div></div>';
@@ -452,4 +457,6 @@
 		self::jsVar('dotclear.msg.help_hide',
 			__('Hide')).
+		self::jsVar('dotclear.msg.to_select',
+			__('Select:')).
 		self::jsVar('dotclear.msg.no_selection',
 			__('no selection')).
@@ -457,5 +464,5 @@
 			__('select all')).
 		self::jsVar('dotclear.msg.invert_sel',
-			__('invert selection')).
+			__('Invert selection')).
 		self::jsVar('dotclear.msg.website',
 			__('Web site:')).
Index: inc/core/class.dc.blog.php
===================================================================
--- inc/core/class.dc.blog.php	(revision 1468)
+++ inc/core/class.dc.blog.php	(revision 1532)
@@ -555,4 +555,17 @@
 		$this->triggerBlog();
 	}
+
+        /**
+        Set category position
+
+        @param  id              <b>integer</b>          Category ID
+        @param  left            <b>integer</b>          Category ID before
+        @param  right           <b>integer</b>          Category ID after
+        */
+        public function updCategoryPosition($id,$left,$right)
+        {
+                $this->categories()->updatePosition($id,$left,$right);
+                $this->triggerBlog();
+        }
 	
 	/**
Index: inc/core/class.dc.categories.php
===================================================================
--- inc/core/class.dc.categories.php	(revision 1179)
+++ inc/core/class.dc.categories.php	(revision 1532)
@@ -188,4 +188,22 @@
 	}
 	
+        public function updatePosition($id,$left,$right)
+        {
+                $sql = 'UPDATE '.$this->table.' SET '
+                        .$this->f_left.' = '.$left.', '
+                        .$this->f_right.' = '.$right
+                        .' WHERE '.$this->f_id .' = '.(integer) $id
+                        .$this->getCondition();
+
+                $this->con->begin();
+                try {
+                        $this->con->execute($sql);
+                        $this->con->commit();
+                } catch (Exception $e) {
+                        $this->con->rollback();
+                        throw $e;
+                }
+        }
+
 	public function deleteNode($node,$keep_children=true)
 	{
Index: inc/dbschema/upgrade.php
===================================================================
--- inc/dbschema/upgrade.php	(revision 1205)
+++ inc/dbschema/upgrade.php	(revision 1581)
@@ -336,8 +336,14 @@
 			}
 
-			if (version_compare($version, '2.5.1', '<='))
+			if (version_compare($version,'2.5.1','<='))
 			{
 				// Flash enhanced upload no longer needed
 				@unlink(DC_ROOT.'/'.'inc/swf/swfupload.swf');
+			}
+
+			if (version_compare($version,'2.6','<='))
+			{
+				// README has been replaced by README.md and CONTRIBUTING.md
+				@unlink(DC_ROOT.'/'.'README');
 			}
 			
Index: locales/bn/main.po
===================================================================
--- locales/bn/main.po	(revision 1499)
+++ locales/bn/main.po	(revision 1556)
@@ -2122,5 +2122,5 @@
 msgstr "সব সিলেক্ট করুন"
 
-msgid "invert selection"
+msgid "Invert selection"
 msgstr ""
 
Index: locales/ca/main.po
===================================================================
--- locales/ca/main.po	(revision 1499)
+++ locales/ca/main.po	(revision 1556)
@@ -2200,5 +2200,5 @@
 msgstr "Seleccionar tot"
 
-msgid "invert selection"
+msgid "Invert selection"
 msgstr "invertir la selecció"
 
Index: locales/cs/main.po
===================================================================
--- locales/cs/main.po	(revision 1499)
+++ locales/cs/main.po	(revision 1556)
@@ -2126,5 +2126,5 @@
 msgstr "vybrat vše"
 
-msgid "invert selection"
+msgid "Invert selection"
 msgstr "obrátit výběr"
 
Index: locales/da/main.po
===================================================================
--- locales/da/main.po	(revision 1499)
+++ locales/da/main.po	(revision 1556)
@@ -2134,5 +2134,5 @@
 msgstr ""
 
-msgid "invert selection"
+msgid "Invert selection"
 msgstr ""
 
Index: locales/de/main.po
===================================================================
--- locales/de/main.po	(revision 1499)
+++ locales/de/main.po	(revision 1556)
@@ -2126,5 +2126,5 @@
 msgstr "alles markieren"
 
-msgid "invert selection"
+msgid "Invert selection"
 msgstr "Auswahl entfernen"
 
Index: locales/en/main.po
===================================================================
--- locales/en/main.po	(revision 1529)
+++ locales/en/main.po	(revision 1557)
@@ -2073,4 +2073,7 @@
 msgstr ""
 
+msgid "Select:"
+msgstr ""
+
 msgid "no selection"
 msgstr ""
@@ -2079,5 +2082,5 @@
 msgstr ""
 
-msgid "invert selection"
+msgid "Invert selection"
 msgstr ""
 
Index: locales/eo/main.po
===================================================================
--- locales/eo/main.po	(revision 1499)
+++ locales/eo/main.po	(revision 1556)
@@ -2073,5 +2073,5 @@
 msgstr ""
 
-msgid "invert selection"
+msgid "Invert selection"
 msgstr ""
 
Index: locales/es-ar/main.po
===================================================================
--- locales/es-ar/main.po	(revision 1499)
+++ locales/es-ar/main.po	(revision 1556)
@@ -2141,5 +2141,5 @@
 msgstr "seleccionar todo"
 
-msgid "invert selection"
+msgid "Invert selection"
 msgstr "invertir la selección"
 
Index: locales/es/main.po
===================================================================
--- locales/es/main.po	(revision 1499)
+++ locales/es/main.po	(revision 1556)
@@ -2139,5 +2139,5 @@
 msgstr "Seleccionar todo"
 
-msgid "invert selection"
+msgid "Invert selection"
 msgstr "Invertir la selección"
 
Index: locales/eu/main.po
===================================================================
--- locales/eu/main.po	(revision 1499)
+++ locales/eu/main.po	(revision 1556)
@@ -2073,5 +2073,5 @@
 msgstr ""
 
-msgid "invert selection"
+msgid "Invert selection"
 msgstr ""
 
Index: locales/fr/help/blowupConfig.html
===================================================================
--- locales/fr/help/blowupConfig.html	(revision 1348)
+++ locales/fr/help/blowupConfig.html	(revision 1573)
@@ -10,5 +10,5 @@
 ou choisissez un style prédéfini.</p>
 
-<h3>Couleurs</h3>
+<h4>Couleurs</h4>
 
 <p>Quand vous devez indiquer une valeur de couleur, celle-ci doit être au format
@@ -23,5 +23,5 @@
 </ul>
 
-<h3>Unités de mesure</h3>
+<h4>Unités de mesure</h4>
 
 <p>Quand vous devez indiquer une taille, celle-ci doit être suivie d'une unité
@@ -37,5 +37,5 @@
 </ul>
 
-<h3>Images d'en-tête</h3>
+<h4>Images d'en-tête</h4>
 
 <p>Vous pouvez choisir une image d'en-tête parmi une liste de nombreuses images
@@ -50,5 +50,5 @@
 transparence sera également préservée).</p>
 
-<h3>Styles prédéfinis</h3>
+<h4>Styles prédéfinis</h4>
 
 <p>Vous pouvez choisir un style prédéfini dans la liste d'option "Styles prédéfinis".
@@ -58,5 +58,5 @@
 <p>Vous pouvez ensuite modifier le style prédéfini comme bon vous semble.</p>
 
-<h3>Import / export de configuration</h3>
+<h4>Import / export de configuration</h4>
 
 <p>À la fin des options de Blowup, vous pouvez afficher une zone appelée "Import
Index: locales/fr/help/core_blog_pref.html
===================================================================
--- locales/fr/help/core_blog_pref.html	(revision 1354)
+++ locales/fr/help/core_blog_pref.html	(revision 1573)
@@ -6,5 +6,5 @@
 <body>
 
-<h3>Informations du blog</h3>
+<h4>Informations du blog</h4>
 <dl>
   <dt>Identifiant du blog</dt>
@@ -41,5 +41,5 @@
 </dl>
 
-<h3>Configuration du blog</h3>
+<h4>Configuration du blog</h4>
 <dl>
   <dt>Nom de l'éditeur du blog</dt>
@@ -127,5 +127,5 @@
 </dl>
 
-<h3>Formatage des dates</h3>
+<h4>Formatage des dates</h4>
 <p>Certains champs permettent de formater les dates avec des caractères
 particuliers dont voici la définition&nbsp;:</p>
Index: locales/fr/help/core_categories.html
===================================================================
--- locales/fr/help/core_categories.html	(revision 175)
+++ locales/fr/help/core_categories.html	(revision 1573)
@@ -5,5 +5,5 @@
 
 <body>
-<h3>Liste des categories</h3>
+<h4>Liste des categories</h4>
 <dl>
   <dt>Créer une nouvelle catégorie</dt>
@@ -23,5 +23,5 @@
 </dl>
 
-<h3>Modifier une catégorie</h3>
+<h4>Modifier une catégorie</h4>
 <dl>
   <dt>Titre</dt>
Index: locales/fr/help/core_comments.html
===================================================================
--- locales/fr/help/core_comments.html	(revision 0)
+++ locales/fr/help/core_comments.html	(revision 1573)
@@ -5,5 +5,5 @@
 
 <body>
-<h3>Filtres de la liste des commentaires</h3>
+<h4>Filtres de la liste des commentaires</h4>
 <dl>
   <dt>Type :</dt>
@@ -34,5 +34,5 @@
 </dl>
 
-<h3>Modifier ou ajouter un commentaire</h3>
+<h4>Modifier ou ajouter un commentaire</h4>
 <dl>
   <dt>Auteur :</dt>
Index: locales/fr/help/core_media.html
===================================================================
--- locales/fr/help/core_media.html	(revision 1194)
+++ locales/fr/help/core_media.html	(revision 1580)
@@ -1,11 +1,11 @@
 <html>
 <head>
-  <title>Gestionnaire de media</title>
+  <title>Médiathèque</title>
 </head>
 
 <body>
 
-<h3>Liste des médias</h3>
-<p>La page principale du gestionnaire de médias présente la liste des fichiers
+<h4>Liste des médias</h4>
+<p>La page principale de la médiathèque présente la liste des fichiers
 (médias) disponibles pour le blog en cours d'utilisation.</p>
 
@@ -19,5 +19,5 @@
 <p>Les images sont affichées avec une miniature quand cela est possible.</p>
 
-<h3>Ajouter des fichiers</h3>
+<h4>Ajouter des fichiers</h4>
 <dl>
   <dt>Choisissez un fichier</dt>
@@ -39,10 +39,10 @@
 </dl>
 
-<h3>Nouveau répertoire</h3>
+<h4>Nouveau répertoire</h4>
 <p>Ce formulaire permet de créer un nouveau répertoire dans le répertoire en
 cours d'utilisation. Indiquez simplement un nom comme vous le feriez sur votre
 ordinateur.</p>
 
-<h3>Détails du média</h3>
+<h4>Détails du média</h4>
 <p>La page individuelle d'un média présente un ensemble d'informations sur
 celui-ci et permet d'effectuer quelques opérations.</p>
@@ -70,5 +70,5 @@
 </dl>
 
-<h3>Cas particulier des images</h3>
+<h4>Cas particulier des images</h4>
 <p>Lors de l'ajout d'une image, jusqu'à quatre versions de celle-ci peuvent
 être disponibles (selon la taille de l'image d'origine)&nbsp;:</p>
@@ -82,8 +82,8 @@
 <p>Les tailles par défaut des versions miniature, petite et moyenne, peuvent être modifiées dans les paramètres du blog</p>
 
-<h3>Attacher un fichier à un billet</h3>
+<h4>Attacher un fichier à un billet</h4>
 <p>Vous pouvez attacher un fichier à un billet très facilement. Commencez par
 créer un nouveau billet et enregistrez-le. Cliquez alors sur "ajouter un fichier
-au billet" pour ouvrir le gestionnaire de médias.</p>
+au billet" pour ouvrir la médiathèque.</p>
 
 <p>En cliquant sur l'icône [+] (Attacher un fichier au billet) vous pourrez
@@ -95,5 +95,5 @@
 lecture directe du fichier.</p>
 
-<h3>Podcast et diffusion de fichiers musicaux</h3>
+<h4>Podcast et diffusion de fichiers musicaux</h4>
 <p>Tous les fichiers attachés à un billet seront présents dans les fils RSS de
 vos billets, vous permettant ainsi de réaliser des podcast de n'importe quel
Index: locales/fr/help/core_post.html
===================================================================
--- locales/fr/help/core_post.html	(revision 1459)
+++ locales/fr/help/core_post.html	(revision 1580)
@@ -6,5 +6,5 @@
 <body>
 
-<h3>Rédaction du billet</h3>
+<h4>Rédaction du billet</h4>
 
 <dl>
@@ -91,8 +91,8 @@
   d'ajout d'une pièce jointe permet de choisir un fichier à ajouter au billet.
   Pensez à sauvegarder votre billet avant de choisir une pièce jointe. Consultez
-  l'aide du gestionnaire de médias pour plus de détails.</dd>
+  l'aide de la médiathèque pour plus de détails.</dd>
 </dl>
 
-<h3>Commentaires</h3>
+<h4>Commentaires</h4>
 <dl>
   <dt>Liste les commentaires</dt>
Index: locales/fr/help/core_posts.html
===================================================================
--- locales/fr/help/core_posts.html	(revision 0)
+++ locales/fr/help/core_posts.html	(revision 1573)
@@ -6,5 +6,5 @@
 <body>
 
-<h3>Filtres de la liste des billets</h3>
+<h4>Filtres de la liste des billets</h4>
 
 <dl>
@@ -45,5 +45,5 @@
 </dl>
 
-<h3>Actions par lot sur les billets</h3>
+<h4>Actions par lot sur les billets</h4>
 <p>Il est possible d'effectuer un ensemble d'actions sur plusieurs billets, d'un
 seul coup. Les actions possibles dépendent des permissions de l'utilisateur.</p>
Index: locales/fr/help/core_trackbacks.html
===================================================================
--- locales/fr/help/core_trackbacks.html	(revision 1459)
+++ locales/fr/help/core_trackbacks.html	(revision 1573)
@@ -6,5 +6,5 @@
 <body>
 
-<h3>Rétroliens</h3>
+<h4>Rétroliens</h4>
 <p>Pour faire un rétrolien cliquez sur le lien <em>Faire des rétroliens</em>.
 Si vous ne voyez pas ce lien, vérifiez que votre billet est bien dans l'état
Index: locales/fr/help/core_user.html
===================================================================
--- locales/fr/help/core_user.html	(revision 175)
+++ locales/fr/help/core_user.html	(revision 1573)
@@ -6,5 +6,5 @@
 <body>
 
-<h3>Informations utilisateur</h3>
+<h4>Informations utilisateur</h4>
 <dl>
   <dt>Nom d'utilisateur</dt>
@@ -65,5 +65,5 @@
 </dl>
 
-<h3>Tags</h3>
+<h4>Tags</h4>
 <dl>
   <dt>Format de la liste des tags</dt>
Index: locales/fr/help/core_user_pref.html
===================================================================
--- locales/fr/help/core_user_pref.html	(revision 243)
+++ locales/fr/help/core_user_pref.html	(revision 1580)
@@ -6,5 +6,5 @@
 <body>
 
-<h3>Mon profil</h3>
+<h4>Mon profil</h4>
 <dl>
   <dt>Nom, Prénom</dt>
@@ -37,5 +37,5 @@
 </dl>
   
-<h3>Mes options</h3>
+<h4>Mes options</h4>
 <dl> 
   <dt>Format d'édition préféré</dt>
@@ -63,5 +63,5 @@
   <dd>Permet d'activer ou non l'éditeur visuel des billets et des catégories.</dd>
   
-  <dt>Activer l'interface avancée du gestionnaire de médias</dt>
+  <dt>Activer l'interface avancée de la médiathèque</dt>
   <dd>Cette option permet d'envoyer plusieurs fichiers à la fois sur le serveur.
   Nécessite la présence du plugin Flash dans votre navigateur.</dd>
@@ -75,5 +75,5 @@
   disponibles ou seulement les plus utilisés.</dd>
 </dl>
-<h3>Mes favoris</h3>
+<h4>Mes favoris</h4>
 <dl>
   <dt>Mes favoris</dt>
Index: locales/fr/help/core_wiki.html
===================================================================
--- locales/fr/help/core_wiki.html	(revision 0)
+++ locales/fr/help/core_wiki.html	(revision 1573)
@@ -6,5 +6,5 @@
 <body>
 
-<h3>Référence de la syntaxe Wiki</h3>
+<h4>Référence de la syntaxe Wiki</h4>
 
 <p>La syntaxe Wiki est une manière d'écrire du texte avec un jeu de balises
Index: locales/fr/main.po
===================================================================
--- locales/fr/main.po	(revision 1529)
+++ locales/fr/main.po	(revision 1580)
@@ -371,5 +371,5 @@
 
 msgid "This defines image tag title when you insert it in a post from the media manager. It is retrieved from the picture's metadata."
-msgstr "Ceci définit le titre de la balise d'une image insérée depuis le gestionnaire de media. Les informations sont obtenues depuis les métadonnées de l'image."
+msgstr "Ceci définit le titre de la balise d'une image insérée depuis la médiathèque. Les informations sont obtenues depuis les métadonnées de l'image."
 
 msgid "Use original media date if possible"
@@ -601,5 +601,7 @@
 
 msgid "The category has been successfully removed."
-msgstr "Catégorie supprimée avec succès."
+msgid_plural "The categories have been successfully removed."
+msgstr[0] "Catégorie supprimée avec succès."
+msgstr[1] "Catégories supprimées avec succès."
 
 msgid "Categories have been successfully reordered."
@@ -612,6 +614,6 @@
 msgstr "Pas encore de catégorie."
 
-msgid "Categories list"
-msgstr "Liste des catégories"
+msgid "List of blog\'s categories"
+msgstr "Liste des catégories du blog"
 
 #, php-format
@@ -647,6 +649,12 @@
 msgstr "Choisissez une catégorie à supprimer :"
 
-msgid "And choose the category which will receive its entries:"
-msgstr "Et sélectionnez la catégorie qui recevra ses (éventuels) billets :"
+msgid "Categories order"
+msgstr "Ordonnancement des catégories"
+
+msgid "Save categories order"
+msgstr "Enregistrer l'ordre des catégories"
+
+msgid "Choose the category which will receive its entries:"
+msgstr "Sélectionnez la catégorie qui recevra ses éventuels billets :"
 
 msgid "The entries cannot be moved to the category you choose to delete."
@@ -656,9 +664,12 @@
 msgstr "Supprimer"
 
-msgid "Reorder categories"
-msgstr "Réordonner les catégories"
+msgid "Reorder all categories on the top level"
+msgstr "Replacer toutes les catégories au premier niveau"
 
 msgid "This will relocate all categories on the top level"
 msgstr "Ceci va déplacer toutes les catégories au premier niveau"
+
+msgid "To rearrange categories order, move items by drag and drop, then click on “Save categories order” button."
+msgstr "Pour modifier l\'ordre des catégories, déplacez les items par glisser-déposer puis cliquez sur le bouton \"Enregistrer l\'ordre des catégories\"."
 
 msgid "Reorder"
@@ -860,8 +871,8 @@
 
 msgid "Following plugins have been installed:"
-msgstr "Les extensions suivantes ont été installées :"
+msgstr "Les plugins suivants ont été installés :"
 
 msgid "Following plugins have not been installed:"
-msgstr "Les extensions suivantes n'ont pas été installées :"
+msgstr "Les plugins suivants n'ont pas été installés :"
 
 #, php-format
@@ -879,5 +890,5 @@
 
 msgid "Some plugins are installed twice:"
-msgstr "Ces extensions sont installées en double :"
+msgstr "Ces plugins sont installés en double :"
 
 msgid "Quick entry"
@@ -1191,5 +1202,5 @@
 
 msgid "Media manager"
-msgstr "Gestionnaire de médias"
+msgstr "Médiathèque"
 
 msgid "Go to %s folder"
@@ -1263,4 +1274,7 @@
 msgstr "Taille maximale %s"
 
+msgid "maximum size %s"
+msgstr "taille maximale %s"
+
 msgid "Private"
 msgstr "Privé"
@@ -1444,48 +1458,48 @@
 
 msgid "No content found on this plugin."
-msgstr "Aucun contenu pour cette extension."
+msgstr "Aucun contenu pour ce plugin."
 
 msgid "Plugin not found"
-msgstr "Extension introuvable"
+msgstr "Plugin introuvable"
 
 msgid "The plugin you reached does not exist or does not have an admin page."
-msgstr "L'extension que vous essayez d'atteindre n'existe pas ou n'a pas de page d'administration."
+msgstr "Le plugin que vous essayez d'atteindre n'existe pas ou n'a pas de page d'administration."
 
 msgid "No such plugin."
-msgstr "Extension inexistante."
+msgstr "Plugin inexistant."
 
 msgid "You don't have permissions to delete this plugin."
-msgstr "Vous n'avez pas les permissions pour effacer cette extension."
+msgstr "Vous n'avez pas les permissions pour supprimer ce plugin."
 
 msgid "You don't have permissions to deactivate this plugin."
-msgstr "Vous n'avez pas les permissions pour désactiver cette extension."
+msgstr "Vous n'avez pas les permissions pour désactiver ce plugin."
 
 msgid "Plugins management"
-msgstr "Gestion des extensions"
+msgstr "Gestion des plugins"
 
 msgid "Plugin has been successfully deleted."
-msgstr "Extension supprimée avec succès."
+msgstr "Plugin supprimé avec succès."
 
 msgid "Plugin has been successfully installed."
-msgstr "Extension installée avec succès."
+msgstr "Plugin installé avec succès."
 
 msgid "Plugin has been successfully upgraded"
-msgstr "Extension mise à jour avec succès."
+msgstr "Plugin mis à jour avec succès."
 
 msgid "Plugins add new functionalities to Dotclear. Here you can activate or deactivate installed plugins."
-msgstr "Les extensions ajoutent de nouvelles fonctionnalités à Dotclear. Ici, vous pouvez activer ou désactiver les extensions installées."
+msgstr "Les plugins ajoutent de nouvelles fonctionnalités à Dotclear. Ici, vous pouvez activer ou désactiver les plugins installés."
 
 #, php-format
 msgid "You can find additional plugins for your blog on %s."
-msgstr "Vous pouvez trouver de nouvelles extensions pour votre blog sur %s."
+msgstr "Vous pouvez trouver d'autres plugins pour votre blog sur %s."
 
 msgid "You can find additional plugins for your blog on %s or using the %s."
-msgstr "Vous pouvez trouver de nouvelles extensions pour votre blog sur %s ou en utilisant l'%s."
+msgstr "Vous pouvez trouver d'autres plugins pour votre blog sur %s ou en utilisant l'%s."
 
 msgid "To install or upgrade a plugin you generally just need to upload it in \"Install or upgrade a plugin\" section."
-msgstr "Tout ce que vous avez à faire pour installer ou mettre à jour une extension est généralement de la déposer dans la section \"Installer ou mettre à jour une extension\"."
+msgstr "Pour installer ou mettre à jour un plugin il suffit de le déposer grâce au formulaire de la section \"Installer ou mettre à jour un plugin\"."
 
 msgid "To install or upgrade a plugin you just need to extract it in your plugins directory."
-msgstr "Tout ce que vous avez à faire pour installer une extension est de l'extraire dans votre répertoire d'extensions."
+msgstr "Pour installer un plugin il suffit de l'extraire dans votre répertoire de plugins."
 
 msgid "Plugins"
@@ -1493,8 +1507,8 @@
 
 msgid "Activated plugins"
-msgstr "Extensions activées"
+msgstr "Plugins activés"
 
 msgid "Plugin"
-msgstr "Extension"
+msgstr "Plugin"
 
 msgid "Version"
@@ -1508,5 +1522,5 @@
 
 msgid "Deactivated plugins"
-msgstr "Extensions désactivées"
+msgstr "Plugins désactivés"
 
 msgid "Activate"
@@ -1514,26 +1528,26 @@
 
 msgid "Install or upgrade a plugin"
-msgstr "Installer ou mettre à jour une extension"
+msgstr "Installer ou mettre à jour un plugin"
 
 msgid "You can install plugins by uploading or downloading zip files."
-msgstr "Vous pouvez installer des extensions en déposant ou téléchargeant des fichiers zip."
+msgstr "Vous pouvez installer des plugins en déposant ou téléchargeant des fichiers zip."
 
 msgid "Plugin zip file:"
-msgstr "Fichier zip de l'extension :"
+msgstr "Fichier zip de du plugin :"
 
 msgid "Upload plugin"
-msgstr "Déposer l'extension"
+msgstr "Déposer le plugin"
 
 msgid "Plugin zip file URL:"
-msgstr "URL du fichier zip de l'extension :"
+msgstr "URL du fichier zip du plugin :"
 
 msgid "Download plugin"
-msgstr "Télécharger l'extension"
+msgstr "Télécharger le plugin"
 
 msgid "To enable this function, please give write access to your plugins directory."
-msgstr "Pour activer cette fonction, donnez un accès en écriture à votre répertoire d'extensions."
+msgstr "Pour activer cette fonction, donnez un accès en écriture à votre répertoire de plugins."
 
 msgid "Plugin from official distribution"
-msgstr "Extension de la distribution officielle"
+msgstr "Plugin de la distribution officielle"
 
 msgid "Add a link"
@@ -1844,5 +1858,5 @@
 
 msgid "Activate enhanced uploader in media manager"
-msgstr "Activer l'interface avancée du gestionnaire de médias"
+msgstr "Activer l'interface avancée de la médiathèque"
 
 #, fuzzy
@@ -1854,8 +1868,8 @@
 
 msgid "Do not use standard favicon"
-msgstr "Ne pas utiliser le favicon standard"
+msgstr "Ne pas utiliser le favicon standard de Dotclear"
 
 msgid "This will be applied for all users"
-msgstr "Ce choix sera actif pour tous les utilisateurs"
+msgstr "Ce choix sera appliqué pour tous les utilisateurs"
 
 msgid "Accessibility options"
@@ -2189,12 +2203,15 @@
 msgstr "aide"
 
+msgid "Select:"
+msgstr "Sélectionner :"
+
 msgid "no selection"
-msgstr "aucune sélection"
+msgstr "aucun"
 
 msgid "select all"
-msgstr "tout sélectionner"
-
-msgid "invert selection"
-msgstr "inverser la sélection"
+msgstr "tous"
+
+msgid "Invert selection"
+msgstr "Inverser la sélection"
 
 msgid "view entry"
@@ -2246,5 +2263,5 @@
 #, php-format
 msgid "Are you sure you want to delete \"%s\" plugin?"
-msgstr "Êtes-vous certain de vouloir supprimer l'extension \"%s\" ?"
+msgstr "Êtes-vous certain de vouloir supprimer le plugin \"%s\" ?"
 
 msgid "Use this theme"
@@ -2693,8 +2710,8 @@
 
 msgid "Cannot deactivate plugin."
-msgstr "L'extension ne peut pas être désactivée."
+msgstr "Le plugin ne peut pas être désactivé."
 
 msgid "Cannot activate plugin."
-msgstr "L'extension ne peut pas être activée."
+msgstr "Le plugin ne peut pas être activé."
 
 #, php-format
@@ -3165,2 +3182,11 @@
 msgid "This category will be created when you will save your post."
 msgstr "Cette catégorie sera créée lorsque vous enregistrerez votre billet."
+
+msgid "Category which will receive entries of deleted categories:"
+msgstr "Catégorie d'accueil pour les billets des catégories supprimées :"
+
+msgid "Delete selected categories"
+msgstr "Supprimer les catégories sélectionnées"
+
+msgid "To rearrange categories order, change position number and click on “Save categories order”."
+msgstr "Pour changer l'ordre des catégories, modifier leur numéro de position et cliquez sur “Enregistrer l'ordre des catégories”."
Index: locales/fr/plugins.po
===================================================================
--- locales/fr/plugins.po	(revision 1528)
+++ locales/fr/plugins.po	(revision 1572)
@@ -809,5 +809,5 @@
 
 msgid "Compress file"
-msgstr "Compresse le fichier"
+msgstr "Compresser le fichier"
 
 msgid "You may also want to download your media directory as a zip file"
@@ -859,5 +859,5 @@
 msgstr ""
 "Notez que cela supprimera les catégories, liste de liens, billets et "
-"commentaires actuels de votre blog courant. "
+"commentaires actuels du blog courant. "
 
 msgid "Depending on the size of your blog, it could take a few minutes."
@@ -916,5 +916,5 @@
 msgstr ""
 "Notez que Dotclear a un nouveau schéma d'URL. Vous pouvez éviter les liens "
-"brisés en installant l'extension <a href=\"%s\">DC1 redirect</a> et en "
+"brisés en installant le plugin <a href=\"%s\">DC1 redirect</a> et en "
 "l'activant dans la configuration de votre blog."
 
@@ -977,5 +977,5 @@
 msgid "or pick up a local file in your public directory"
 msgstr ""
-"ou sélectionnez un fichier local présent dans votre répertoire de média"
+"ou sélectionnez un fichier local présent dans votre répertoire de médias"
 
 msgid "This will reset all the content of your database, except users."
@@ -1021,5 +1021,5 @@
 msgstr ""
 "La gestion des catégories chez WordPress et Dotclear est tout à fait "
-"différente. Vous pouvez assigner plusieurs catégories à un seul poste dans "
+"différente. Vous pouvez assigner plusieurs catégories à un seul billet dans "
 "WordPress. Dans le monde Dotclear, nous le voyons davantage comme « une "
 "catégorie, plusieurs mots-clés ». Par conséquent Dotclear peut seulement "
@@ -1037,5 +1037,5 @@
 "D'autre part, dans WordPress, un billet ne peut pas être sans catégorie, et "
 "une installation par défaut possède systématiquement une première catégorie "
-"nommée <i>« sans catégorie »</ i>. Si vous n'avez pas changé cette "
+"nommée <i>« sans catégorie »</i>. Si vous n'avez pas changé cette "
 "catégorie, vous pouvez simplement l'ignorer lors de l'importation sur votre "
 "blog, puisque Dotclear vous permet réellement de conserver votre message "
@@ -1301,5 +1301,5 @@
 
 msgid "Activate pings extension"
-msgstr "Activer l'extension de signalement"
+msgstr "Activer le plugin de signalement"
 
 msgid "Service name:"
@@ -1461,5 +1461,5 @@
 #, php-format
 msgid "Are you sure you want to remove this %s?"
-msgstr "Êtes-vous sûr de vouloir retirer ce %s ?"
+msgstr "Êtes-vous sûr de vouloir supprimer ce %s ?"
 
 #, php-format
@@ -1744,5 +1744,5 @@
 
 msgid "Are you sure you want to reset sidebars?"
-msgstr "Êtes-vous sûr de vouloir remettre à zéro les volets ?"
+msgstr "Êtes-vous sûr de vouloir réinitialiser les volets ?"
 
 msgid "Available widgets"
@@ -1955,2 +1955,22 @@
 msgid "List of entries with the tag “%s”"
 msgstr "Liste des billets avec le mot-clé “%s”"
+
+msgid "RSS or Atom feed import"
+msgstr "Importation d'un flux RSS ou Atom"
+
+msgid "Add a feed content to the current blog: <strong>%s</strong>."
+msgstr "Ajouter les contenus d'un flux au blog courant : <strong>%s</strong>."
+
+msgid "Add a feed content to the blog."
+msgstr "Ajouter les contenus d'un flux au blog."
+
+#, php-format
+msgid ""
+"Import the content of a Dotclear 1.2\'s blog in the current "
+"blog: %s."
+msgstr ""
+"Importer le contenu d'un blog Dotclear 1.2 comme nouveau contenu dans le blog "
+"courant : %s."
+
+msgid "Are you sure you want to remove tag: “%s”?"
+msgstr "Êtes-vous sûr de vouloir supprimer le mot-clé “%s” ?"
Index: locales/hu/main.po
===================================================================
--- locales/hu/main.po	(revision 1499)
+++ locales/hu/main.po	(revision 1556)
@@ -2181,5 +2181,5 @@
 msgstr "mindet"
 
-msgid "invert selection"
+msgid "Invert selection"
 msgstr "ellenkezőket"
 
Index: locales/it/main.po
===================================================================
--- locales/it/main.po	(revision 1499)
+++ locales/it/main.po	(revision 1556)
@@ -2125,5 +2125,5 @@
 msgstr "seleziona tutto"
 
-msgid "invert selection"
+msgid "Invert selection"
 msgstr "inverti selezione"
 
Index: locales/ja/main.po
===================================================================
--- locales/ja/main.po	(revision 1499)
+++ locales/ja/main.po	(revision 1556)
@@ -2154,5 +2154,5 @@
 msgstr "すべてを選択"
 
-msgid "invert selection"
+msgid "Invert selection"
 msgstr "選択を反転"
 
Index: locales/ko/main.po
===================================================================
--- locales/ko/main.po	(revision 1499)
+++ locales/ko/main.po	(revision 1556)
@@ -2154,5 +2154,5 @@
 msgstr "모두 선택하기"
 
-msgid "invert selection"
+msgid "Invert selection"
 msgstr "선택사항 뒤집기"
 
Index: locales/lt/main.po
===================================================================
--- locales/lt/main.po	(revision 1499)
+++ locales/lt/main.po	(revision 1556)
@@ -1935,5 +1935,5 @@
 msgstr "pasirinkti viską"
 
-msgid "invert selection"
+msgid "Invert selection"
 msgstr "atvirkščias pasirinkimas"
 
Index: locales/nl/main.po
===================================================================
--- locales/nl/main.po	(revision 1499)
+++ locales/nl/main.po	(revision 1556)
@@ -2087,5 +2087,5 @@
 msgstr ""
 
-msgid "invert selection"
+msgid "Invert selection"
 msgstr ""
 
Index: locales/oc/main.po
===================================================================
--- locales/oc/main.po	(revision 1499)
+++ locales/oc/main.po	(revision 1556)
@@ -2106,5 +2106,5 @@
 msgstr ""
 
-msgid "invert selection"
+msgid "Invert selection"
 msgstr ""
 
Index: locales/pl/main.po
===================================================================
--- locales/pl/main.po	(revision 1499)
+++ locales/pl/main.po	(revision 1556)
@@ -2099,5 +2099,5 @@
 msgstr "zaznacz wszystkie"
 
-msgid "invert selection"
+msgid "Invert selection"
 msgstr "odwróć zaznaczenie"
 
Index: locales/pt-br/main.po
===================================================================
--- locales/pt-br/main.po	(revision 1499)
+++ locales/pt-br/main.po	(revision 1556)
@@ -2218,5 +2218,5 @@
 msgstr "selecionar tudo"
 
-msgid "invert selection"
+msgid "Invert selection"
 msgstr "inverter a seleção"
 
Index: locales/pt/main.po
===================================================================
--- locales/pt/main.po	(revision 1499)
+++ locales/pt/main.po	(revision 1556)
@@ -2133,5 +2133,5 @@
 msgstr "seleccionar tudo"
 
-msgid "invert selection"
+msgid "Invert selection"
 msgstr "inverter selecção"
 
Index: locales/ro/main.po
===================================================================
--- locales/ro/main.po	(revision 1499)
+++ locales/ro/main.po	(revision 1556)
@@ -2084,5 +2084,5 @@
 msgstr ""
 
-msgid "invert selection"
+msgid "Invert selection"
 msgstr ""
 
Index: locales/ru/main.po
===================================================================
--- locales/ru/main.po	(revision 1499)
+++ locales/ru/main.po	(revision 1556)
@@ -2126,5 +2126,5 @@
 msgstr "выбрать все"
 
-msgid "invert selection"
+msgid "Invert selection"
 msgstr "инвертировать выбор"
 
Index: locales/sr/main.po
===================================================================
--- locales/sr/main.po	(revision 1499)
+++ locales/sr/main.po	(revision 1579)
@@ -1172,5 +1172,5 @@
 
 msgid "Media manager"
-msgstr "Gestionnaire de médias"
+msgstr "Médiathèque"
 
 msgid "confirm removal"
@@ -2167,5 +2167,5 @@
 msgstr "tout sélectionner"
 
-msgid "invert selection"
+msgid "Invert selection"
 msgstr "inverser la sélection"
 
Index: locales/sv/main.po
===================================================================
--- locales/sv/main.po	(revision 1499)
+++ locales/sv/main.po	(revision 1556)
@@ -2073,5 +2073,5 @@
 msgstr ""
 
-msgid "invert selection"
+msgid "Invert selection"
 msgstr ""
 
Index: locales/te/main.po
===================================================================
--- locales/te/main.po	(revision 1499)
+++ locales/te/main.po	(revision 1556)
@@ -2151,5 +2151,5 @@
 msgstr "అన్నీ ఎంచుకోండి"
 
-msgid "invert selection"
+msgid "Invert selection"
 msgstr ""
 
Index: locales/tr/main.po
===================================================================
--- locales/tr/main.po	(revision 1499)
+++ locales/tr/main.po	(revision 1556)
@@ -2129,5 +2129,5 @@
 msgstr "hepsini seç"
 
-msgid "invert selection"
+msgid "Invert selection"
 msgstr "seçimi evir"
 
Index: locales/zh-cn/main.po
===================================================================
--- locales/zh-cn/main.po	(revision 1499)
+++ locales/zh-cn/main.po	(revision 1556)
@@ -2131,5 +2131,5 @@
 msgstr "选择全部"
 
-msgid "invert selection"
+msgid "Invert selection"
 msgstr "反选"
 
Index: plugins/aboutConfig/index.php
===================================================================
--- plugins/aboutConfig/index.php	(revision 1526)
+++ plugins/aboutConfig/index.php	(revision 1553)
@@ -122,9 +122,9 @@
 	));
 if (!empty($_GET['upd'])) {
-	dcPage::message(__('Configuration successfully updated'));
+	dcPage::success(__('Configuration successfully updated'));
 }
 
 if (!empty($_GET['upda'])) {
-	dcPage::message(__('Settings definition successfully updated'));
+	dcPage::success(__('Settings definition successfully updated'));
 }
 ?>
Index: plugins/antispam/filters/class.dc.filter.ip.php
===================================================================
--- plugins/antispam/filters/class.dc.filter.ip.php	(revision 1512)
+++ plugins/antispam/filters/class.dc.filter.ip.php	(revision 1553)
@@ -99,8 +99,8 @@
 
 		if (!empty($_GET['added'])) {
-			$res .= dcPage::message(__('IP address has been successfully added.'),true,false,false);
+			$res .= dcPage::success(__('IP address has been successfully added.'),true,false,false);
 		}
 		if (!empty($_GET['removed'])) {
-			$res .= dcPage::message(__('IP addresses have been successfully removed.'),true,false,false);
+			$res .= dcPage::success(__('IP addresses have been successfully removed.'),true,false,false);
 		}
 
Index: plugins/antispam/index.php
===================================================================
--- plugins/antispam/index.php	(revision 1528)
+++ plugins/antispam/index.php	(revision 1553)
@@ -150,5 +150,5 @@
 
 	if (!empty($_GET['del'])) {
-		dcPage::message(__('Spam comments have been successfully deleted.'));
+		dcPage::success(__('Spam comments have been successfully deleted.'));
 	}
 
@@ -181,5 +181,5 @@
 
 	if (!empty($_GET['upd'])) {
-		dcPage::message(__('Filters configuration has been successfully saved.'));
+		dcPage::success(__('Filters configuration has been successfully saved.'));
 	}
 
Index: plugins/blogroll/edit.php
===================================================================
--- plugins/blogroll/edit.php	(revision 1466)
+++ plugins/blogroll/edit.php	(revision 1553)
@@ -109,5 +109,5 @@
 {
 	if (!empty($_GET['upd'])) {
-		dcPage::message(__('Category has been successfully updated'));
+		dcPage::success(__('Category has been successfully updated'));
 	}
 	
@@ -128,5 +128,5 @@
 {
 	if (!empty($_GET['upd'])) {
-		dcPage::message(__('Link has been successfully updated'));
+		dcPage::success(__('Link has been successfully updated'));
 	}
 	
Index: plugins/blogroll/index.php
===================================================================
--- plugins/blogroll/index.php	(revision 1529)
+++ plugins/blogroll/index.php	(revision 1553)
@@ -187,21 +187,21 @@
 <?php
 if (!empty($_GET['neworder'])) {
-	dcPage::message(__('Items order has been successfully updated'));
+	dcPage::success(__('Items order has been successfully updated'));
 }
 
 if (!empty($_GET['removed'])) {
-	dcPage::message(__('Items have been successfully removed.'));
+	dcPage::success(__('Items have been successfully removed.'));
 }
 
 if (!empty($_GET['addlink'])) {
-	dcPage::message(__('Link has been successfully created.'));
+	dcPage::success(__('Link has been successfully created.'));
 }
 
 if (!empty($_GET['addcat'])) {
-	dcPage::message(__('category has been successfully created.'));
+	dcPage::success(__('category has been successfully created.'));
 }
 
 if (!empty($_GET['importlinks'])) {
-	dcPage::message(__('links have been successfully imported.'));
+	dcPage::success(__('links have been successfully imported.'));
 }
 ?>
Index: plugins/blogroll/locales/en/help/blogroll.html
===================================================================
--- plugins/blogroll/locales/en/help/blogroll.html	(revision 215)
+++ plugins/blogroll/locales/en/help/blogroll.html	(revision 1573)
@@ -6,5 +6,4 @@
 <body>
 
-<h3>Blogroll</h3>
 <p>Blogroll allows you to display on your blog a list of links to other blogs or websites that 
 you wish to suggest to your visitors. </p>
Index: plugins/blogroll/locales/fr/help/blogroll.html
===================================================================
--- plugins/blogroll/locales/fr/help/blogroll.html	(revision 215)
+++ plugins/blogroll/locales/fr/help/blogroll.html	(revision 1573)
@@ -6,5 +6,4 @@
 <body>
 
-<h3>Liens</h3>
 <p>La gestion des liens vous permet d'afficher sur votre blog un "blogroll" ou liste de liens vers d'autres blogs ou sites que vous souhaitez porter à l'attention de vos visiteurs.</p>
 <dl>
Index: plugins/blowupConfig/index.php
===================================================================
--- plugins/blowupConfig/index.php	(revision 1526)
+++ plugins/blowupConfig/index.php	(revision 1553)
@@ -244,5 +244,5 @@
 
 if (!empty($_GET['upd'])) {
-	dcPage::message(__('Theme configuration has been successfully updated.'));
+	dcPage::success(__('Theme configuration has been successfully updated.'));
 }
 
Index: plugins/daInstaller/_define.php
===================================================================
--- plugins/daInstaller/_define.php	(revision 1046)
+++ plugins/daInstaller/_define.php	(revision 1568)
@@ -10,5 +10,5 @@
 $this->registerModule(
 	'daInstaller',
-	'Install and update your extensions live from DotAddict.org',
+	'Install and update your plugins live from DotAddict.org',
 	'Tomtom / DotAddict.org',
 	'1.0.3',
Index: plugins/daInstaller/inc/lib.da.installer.ui.php
===================================================================
--- plugins/daInstaller/inc/lib.da.installer.ui.php	(revision 1416)
+++ plugins/daInstaller/inc/lib.da.installer.ui.php	(revision 1568)
@@ -34,5 +34,5 @@
 		}
 		else {
-			$msg_no_entry = __('No extension');
+			$msg_no_entry = __('No plugins');
 			$msg_th_label = __('Plugins');
 			$lineMethod   = 'pluginLine';
Index: plugins/daInstaller/index.php
===================================================================
--- plugins/daInstaller/index.php	(revision 1505)
+++ plugins/daInstaller/index.php	(revision 1569)
@@ -135,5 +135,5 @@
 {
 	$res = '';
-	$p_msg = '<p class="message">%s</p>';
+	$p_msg = '<p class="success">%s</p>';
 	$p_err = '<p class="error">%s</p>';
 	
@@ -163,5 +163,5 @@
 		}
 		else {
-			$res .= '<div class="static-msg">'.__('Following plugins have been updated:').'<ul>'.$upd.'</ul></div>';
+			$res .= '<div class="success">'.__('Following plugins have been updated:').'<ul>'.$upd.'</ul></div>';
 		}
 	}
@@ -183,10 +183,10 @@
 		}
 		else {
-			$res .= '<div class="static-msg">'.__('Following themes have been updated:').'<ul>'.$upd.'</ul></div>';
+			$res .= '<div class="success">'.__('Following themes have been updated:').'<ul>'.$upd.'</ul></div>';
 		}
 	}
 	# Plugins install settings messages
 	if (!empty($plugins_install['success'])) {
-		$res .= '<div class="static-msg">'.__('Following plugins have been installed:').'<ul>';
+		$res .= '<div class="success">'.__('Following plugins have been installed:').'<ul>';
 		foreach ($plugins_install['success'] as $k => $v) {
 			$res .= '<li>'.$k.'</li>';
@@ -265,5 +265,5 @@
 
 echo
-'<p>'.__('Install and update your extensions live from DotAddict.org').'</p>';
+'<p>'.__('Install and update your plugins live from DotAddict.org').'</p>';
 
 echo
@@ -273,5 +273,5 @@
 	echo
 	'<p><strong>'.__('Detected updates for your system').'</strong></p>'.
-	'<p class="form-note warn">'.
+	'<p class="warning">'.
 		__('Changes can be required after installation of updates. Click on a support link before to be aware about').
 	'</p>';
Index: plugins/daInstaller/locales/en/help/da_installer.html
===================================================================
--- plugins/daInstaller/locales/en/help/da_installer.html	(revision 1046)
+++ plugins/daInstaller/locales/en/help/da_installer.html	(revision 1573)
@@ -1,20 +1,18 @@
 <html>
 <head>
-  <title>Extension update</title>
+  <title>Plugin update</title>
 </head>
 
 <body>
 
-<h3>Update of extensions</h3>
-
 <dl>
   <dd>It is possible, in Dotclear 2, to specify in the configuration <em>(PATH)</em>
-  many paths of folders containing plugins. But, the extension update are done only in
+  many paths of folders containing plugins. But, the plugin update are done only in
   the <strong>last folder specify</strong> in <em>PATH</em>.
-  You may have, for several reasons, in other folders, an older extension than currently 
+  You may have, for several reasons, in other folders, an older plugin than currently 
   available on DotAddict. <strong>In this case</strong>, you have two choices: <ul>
 
   <li><strong>Autorize</strong> multi-installation: the newer version of the
-  extension will be download and installed in the last folder of <em>PATH</em>
+  plugin will be downloaded and installed in the last folder of <em>PATH</em>
   and the older one will be disabled (a _disabled file will be created in his folder). This 
   old version <strong>will not be deleted</strong></li>
Index: plugins/daInstaller/locales/fr/help/da_installer.html
===================================================================
--- plugins/daInstaller/locales/fr/help/da_installer.html	(revision 1046)
+++ plugins/daInstaller/locales/fr/help/da_installer.html	(revision 1573)
@@ -1,21 +1,19 @@
 <html>
 <head>
-  <title>Mise à jour d'extension(s)</title>
+  <title>Mise à jour de plugins</title>
 </head>
 
 <body>
 
-<h3>Mise à jour d'extension(s)</h3>
-
 <dl>
   <dd>Il est possible dans Dotclear 2 de spécifier dans sa configuration <em>(PATH)</em>
-  plusieurs chemins de dossiers contenant des extensions. Or, les mises à jour des
-  extensions se font dans <strong>le dernier répertoire</strong> du <em>PATH</em>.
-  Il se peut, pour des raisons variées, que dans un des premiers, il existe une
-  extension avec une version inférieure à celle présente sur DotAddict. <strong>Dans
+  plusieurs chemins de dossiers contenant des plugins. Or, les mises à jour des
+  plugins se font dans <strong>le dernier répertoire</strong> du <em>PATH</em>.
+  Il se peut, pour des raisons variées, que dans un des premiers, il existe un
+  plugin avec une version inférieure à celle présente sur DotAddict. <strong>Dans
   ce cas préçis</strong>, vous avez deux choix possibles : <ul>
-  <li><strong>Autoriser</strong> la multi-installation : la nouvelle version de
-  l’extension sera téléchargée puis installée dans le dernier répertoire du <em>PATH</em>
-  et l’ancienne extension recevera un fichier _disabled afin de la désactiver. L’ancienne
+  <li><strong>Autoriser</strong> la multi-installation : la nouvelle version du
+  plugin sera téléchargé puis installée dans le dernier répertoire du <em>PATH</em>
+  et l’ancien plugin recevera un fichier _disabled afin de le désactiver. L’ancienne
   version <strong>ne sera pas supprimée</strong></li>
   <li><strong>Ne pas autoriser</strong> la multi-installation : la nouvelle version
Index: plugins/daInstaller/locales/fr/main.po
===================================================================
--- plugins/daInstaller/locales/fr/main.po	(revision 1046)
+++ plugins/daInstaller/locales/fr/main.po	(revision 1568)
@@ -41,6 +41,6 @@
 msgstr "Aucun thème disponible"
 
-msgid "No extension"
-msgstr "Aucune extension disponible"
+msgid "No plugin"
+msgstr "Aucun plugin disponible"
 
 msgid "Lastest Version"
@@ -69,17 +69,17 @@
 
 msgid "No support available"
-msgstr "Aucun support disponible"
+msgstr "Aucun support disponible."
 
 msgid "The plugin has been successfully installed."
-msgstr "Le plugin a été installé avec succès"
+msgstr "Le plugin a été installé avec succès."
 
 msgid "The theme has been successfully installed."
-msgstr "Le thème a été installé avec succès"
+msgstr "Le thème a été installé avec succès."
 
 msgid "Following plugins have not been updated:"
-msgstr "Les extensions suivantes n'ont pas été mises à jour :"
+msgstr "Les plugins suivants n'ont pas été mis à jour :"
 
 msgid "Following plugins have been updated:"
-msgstr "Les extensions suivantes ont été mises à jour :"
+msgstr "Les plugins suivants ont été mis à jour :"
 
 msgid "Following themes have not been updated:"
@@ -89,6 +89,6 @@
 msgstr "Les thèmes suivants ont été mis à jour :"
 
-msgid "Install and update your extensions live from DotAddict.org"
-msgstr "Installez et mettez à jour vos extensions en direct depuis DotAddict.org"
+msgid "Install and update your plugins live from DotAddict.org"
+msgstr "Installez et mettez à jour vos plugins en direct depuis DotAddict.org"
 
 msgid "Available updates"
@@ -96,14 +96,14 @@
 
 msgid "Detected updates for your system"
-msgstr "Mises à jour détectées pour votre système"
+msgstr "Mises à jour détectées pour votre système."
 
 msgid "Changes can be required after installation of updates. Click on a support link before to be aware about"
-msgstr "Des changements sont peut être nécessaires après la mise à jour. Pensez à vérifier en cliquant sur le lien de support"
+msgstr "Des changements sont peut-être nécessaires après la mise à jour. Pensez à vérifier en cliquant sur le lien de support."
 
 msgid "No update available"
-msgstr "Aucune mise à jour détectée pour votre système"
+msgstr "Aucune mise à jour détectée pour votre système."
 
 msgid "Get more plugins"
-msgstr "Obtenir plus d'extensions"
+msgstr "Obtenir plus de plugins"
 
 #, php-format
Index: plugins/importExport/inc/class.dc.export.flat.php
===================================================================
--- plugins/importExport/inc/class.dc.export.flat.php	(revision 1499)
+++ plugins/importExport/inc/class.dc.export.flat.php	(revision 1559)
@@ -193,5 +193,5 @@
 		'<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>'.
+		'<p>'.sprintf(__('This will create an export of your current blog: %s'),'<strong>'.html::escapeHTML($this->core->blog->name)).'</strong>.</p>'.
 		
 		'<p><label for="file_name">'.__('File name:').'</label>'.
Index: plugins/importExport/inc/class.dc.ieModule.php
===================================================================
--- plugins/importExport/inc/class.dc.ieModule.php	(revision 840)
+++ plugins/importExport/inc/class.dc.ieModule.php	(revision 1553)
@@ -73,5 +73,5 @@
 		return
 		'<h3>'.__('Congratulation!').'</h3>'.
-		'<p>'.__('Your blog has been successfully imported. Welcome on Dotclear 2!').'</p>'.
+		'<p class="success">'.__('Your blog has been successfully imported. Welcome on Dotclear 2!').'</p>'.
 		'<ul><li><strong><a href="post.php">'.__('Why don\'t you blog this now?').'</a></strong></li>'.
 		'<li>'.__('or').' <a href="index.php">'.__('visit your dashboard').'</a></li></ul>';
Index: plugins/importExport/inc/class.dc.import.dc1.php
===================================================================
--- plugins/importExport/inc/class.dc.import.dc1.php	(revision 1454)
+++ plugins/importExport/inc/class.dc.import.dc1.php	(revision 1569)
@@ -143,12 +143,11 @@
 			case 1:
 				echo
-				'<p>'.sprintf(__('This will import your Dotclear 1.2 content as new content in the current blog: %s.'),
+				'<p>'.sprintf(__('Import the content of a Dotclear 1.2\'s blog in the current blog: %s.'),
 				'<strong>'.html::escapeHTML($this->core->blog->name).'</strong>').'</p>'.
-				'<p class="static-msg">'.__('Please note that this process '.
-				'will empty your categories, blogroll, entries and comments on the current blog.').'</p>'.
-				'<p>'.__('Depending on the size of your blog, it could take a few minutes.').'</p>';
+				'<p class="warning">'.__('Please note that this process '.
+				'will empty your categories, blogroll, entries and comments on the current blog.').'</p>';
 				
 				printf($this->imForm(1,__('General information'),__('Import my blog now')),
-				'<p class="form-note info">'.__('We first need some information about your old Dotclear 1.2 installation.').'</p>'.
+				'<p>'.__('We first need some information about your old Dotclear 1.2 installation.').'</p>'.
 				'<p><label for="db_host">'.__('Database Host Name:').'</label> '.
 				form::field('db_host',30,255,html::escapeHTML($this->vars['db_host'])).'</p>'.
@@ -217,10 +216,10 @@
 		return
 		'<form action="'.$this->getURL(true).'" method="post">'.
-		'<fieldset><legend>'.$legend.'</legend>'.
+		'<h3>'.$legend.'</h3>'.
 		$this->core->formNonce().
 		form::hidden(array('do'),'step'.$step).
 		'%s'.
 		'<p><input type="submit" value="'.$submit_value.'" /></p>'.
-		'</fieldset>'.
+		'<p class="form-note info">'.__('Depending on the size of your blog, it could take a few minutes.').'</p>'.
 		'</form>';
 	}
Index: plugins/importExport/inc/class.dc.import.feed.php
===================================================================
--- plugins/importExport/inc/class.dc.import.feed.php	(revision 1528)
+++ plugins/importExport/inc/class.dc.import.feed.php	(revision 1559)
@@ -20,6 +20,6 @@
 	{
 		$this->type = 'import';
-		$this->name = __('Feed import');
-		$this->description = __('Imports a feed as new entries.');
+		$this->name = __('RSS or Atom feed import');
+		$this->description = __('Add a feed content to the blog.');
 	}
 	
@@ -77,10 +77,10 @@
 	{
 		if ($this->status) {
-			dcPage::message(__('Content successfully imported.'));
+			dcPage::success(__('Content successfully imported.'));
 		}
 		
 		echo
 		'<form action="'.$this->getURL(true).'" method="post">'.
-		'<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>'.
+		'<p>'.sprintf(__('Add a feed content to the current blog: <strong>%s</strong>.'),html::escapeHTML($this->core->blog->name)).'</p>'.
 		
 		'<p><label for="feed_url">'.__('Feed URL:').'</label>'.
Index: plugins/importExport/inc/class.dc.import.flat.php
===================================================================
--- plugins/importExport/inc/class.dc.import.flat.php	(revision 1499)
+++ plugins/importExport/inc/class.dc.import.flat.php	(revision 1559)
@@ -142,10 +142,10 @@
 		if ($this->status == 'single')
 		{
-			dcPage::message(__('Single blog successfully imported.'));
+			dcPage::success(__('Single blog successfully imported.'));
 			return;
 		}
 		if ($this->status == 'full')
 		{
-			dcPage::message(__('Content successfully imported.'));
+			dcPage::success(__('Content successfully imported.'));
 			return;
 		}
@@ -184,6 +184,6 @@
 		'<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').
-		' ('.sprintf(__('Maximum size %s'),files::size(DC_MAX_UPLOAD_SIZE)).')'.' </label>'.
+		'<p><label for="up_single_file">'.__('Upload a backup file').
+		' ('.sprintf(__('maximum size %s'),files::size(DC_MAX_UPLOAD_SIZE)).')'.' </label>'.
 		' <input type="file" id="up_single_file" name="up_single_file" size="20" />'.
 		'</p>';
@@ -191,5 +191,5 @@
 		if ($has_files) {
 			echo 
-			'<p><label for="public_single_file" class="classic">'.__('or pick up a local file in your public directory').'</label> '.
+			'<p><label for="public_single_file" class="">'.__('or pick up a local file in your public directory').' </label> '.
 			form::combo('public_single_file',$public_files).
 			'</p>';
@@ -212,6 +212,6 @@
 			'<p class="warning">'.__('This will reset all the content of your database, except users.').'</p>'.
 			
-			'<p><label for="up_full_file" class="classic">'.__('Upload a backup file').' '.
-			' ('.sprintf(__('Maximum size %s'),files::size(DC_MAX_UPLOAD_SIZE)).')'.' </label>'.
+			'<p><label for="up_full_file">'.__('Upload a backup file').' '.
+			' ('.sprintf(__('maximum size %s'),files::size(DC_MAX_UPLOAD_SIZE)).')'.' </label>'.
 			'<input type="file" id="up_full_file" name="up_full_file" size="20" />'.
 			'</p>';
@@ -219,5 +219,5 @@
 			if ($has_files) {
 				echo 
-				'<p><label for="public_full_file" class="classic">'.__('or pick up a local file in your public directory').' </label>'.
+				'<p><label for="public_full_file">'.__('or pick up a local file in your public directory').' </label>'.
 				form::combo('public_full_file',$public_files).
 				'</p>';
Index: plugins/importExport/inc/class.dc.import.wp.php
===================================================================
--- plugins/importExport/inc/class.dc.import.wp.php	(revision 1454)
+++ plugins/importExport/inc/class.dc.import.wp.php	(revision 1569)
@@ -176,10 +176,9 @@
 				'<p>'.sprintf(__('This will import your WordPress content as new content in the current blog: %s.'),
 				'<strong>'.html::escapeHTML($this->core->blog->name).'</strong>').'</p>'.
-				'<p class="static-msg">'.__('Please note that this process '.
-				'will empty your categories, blogroll, entries and comments on the current blog.').'</p>'.
-				'<p>'.__('Depending on the size of your blog, it could take a few minutes.').'</p>';
+				'<p class="warning">'.__('Please note that this process '.
+				'will empty your categories, blogroll, entries and comments on the current blog.').'</p>';
 				
 				printf($this->imForm(1,__('General information'),__('Import my blog now')),
-				'<h3>'.__('We first need some information about your old WordPress installation.').'</h3>'.
+				'<p>'.__('We first need some information about your old WordPress installation.').'</p>'.
 				'<p><label for="db_host">'.__('Database Host Name:').'</label> '.
 				form::field('db_host',30,255,html::escapeHTML($this->vars['db_host'])).'</p>'.
@@ -199,8 +198,9 @@
 				'category per post and will chose the lowest numbered one. If you want to keep a trace of '.
 				'every category, you can import them as tags, with an optional prefix.').'</p>'.
-				'<p>'.__('On the other hand, in WordPress, a post can not be uncategorized, and a default '.
-				'installation has a first category labelised <i>"Uncategorized"</i>. If you did not change that '.
-				'category, you can just ignore it while importing your blog, as Dotclear allows you to '.
-				'actually keep your posts uncategorized.').'</p>'.
+				'<p>'.__('On the other hand, in WordPress, a post can not be uncategorized, and a '.
+				'default installation has a first category labelised <i>"Uncategorized"</i>.'.
+				'If you did not change that category, you can just ignore it while '.
+				'importing your blog, as Dotclear allows you to actually keep your posts '.
+				'uncategorized.').'</p>'.
 
 				'<p><label for="ignore_first_cat" class="classic">'.form::checkbox('ignore_first_cat',1,$this->vars['ignore_first_cat']).' '.
@@ -265,10 +265,10 @@
 		return
 		'<form action="'.$this->getURL(true).'" method="post">'.
-		'<fieldset><legend>'.$legend.'</legend>'.
+		'<h3>'.$legend.'</h3>'.
 		$this->core->formNonce().
 		form::hidden(array('do'),'step'.$step).
 		'%s'.
 		'<p><input type="submit" value="'.$submit_value.'" /></p>'.
-		'</fieldset>'.
+		'<p class="form-note info">'.__('Depending on the size of your blog, it could take a few minutes.').'</p>'.
 		'</form>';
 	}
Index: plugins/maintenance/index.php
===================================================================
--- plugins/maintenance/index.php	(revision 1358)
+++ plugins/maintenance/index.php	(revision 1553)
@@ -79,14 +79,14 @@
 <?php
 if (!empty($_GET['vacuum'])) {
-	dcPage::message(__('Optimization successful.'));
+	dcPage::success(__('Optimization successful.'));
 }
 if (!empty($_GET['commentscount'])) {
-	dcPage::message(__('Comments and trackback counted.'));
+	dcPage::success(__('Comments and trackback counted.'));
 }
 if (!empty($_GET['empty_cache'])) {
-	dcPage::message(__('Templates cache directory emptied.'));
+	dcPage::success(__('Templates cache directory emptied.'));
 }
 if (!empty($_GET['delete_logs'])) {
-	dcPage::message(__('Logs deleted.'));
+	dcPage::success(__('Logs deleted.'));
 }
 
Index: plugins/maintenance/locales/en/help/maintenance.html
===================================================================
--- plugins/maintenance/locales/en/help/maintenance.html	(revision 207)
+++ plugins/maintenance/locales/en/help/maintenance.html	(revision 1573)
@@ -5,6 +5,4 @@
 
 <body>
-
-<h3>Maintenance</h3>
 
 <dl>
@@ -35,5 +33,5 @@
   <dd>It may be useful to empty this cache when modifying a theme's .html or .css files (or when updating 
   a theme or plugin).<br />
-  Notice : with some hosters, the templates cache cannot be emptied with this extension. 
+  Notice : with some hosters, the templates cache cannot be emptied with this plugin. 
   You may then have to delete the directory <strong>/cbtpl/</strong> directly on the server with your FTP software.</dd>
 </dl>
Index: plugins/maintenance/locales/fr/help/maintenance.html
===================================================================
--- plugins/maintenance/locales/fr/help/maintenance.html	(revision 1280)
+++ plugins/maintenance/locales/fr/help/maintenance.html	(revision 1573)
@@ -5,6 +5,4 @@
 
 <body>
-
-<h3>Maintenance</h3>
 
 <dl>
@@ -34,5 +32,5 @@
   <dt>Vider le répertoire du cache des templates</dt>
   <dd>La suppression du répertoire du cache des templates peut se révéler nécessaire lors de modifications dans les fichiers .html ou .css d'un thème (voire lors d'un changement de thème ou de mise à jour de plugin).<br />
-  Attention : chez certains hébergeurs (Free par exemple), le cache du répertoire des templates ne peut pas être vidé grâce à l'extension Maintenance, il faut supprimer le répertoire <strong>cbtpl</strong> situé dans le répertoire cache (dotclear/cache par défaut) avec un logiciel FTP.</dd>
+  Attention : chez certains hébergeurs (Free par exemple), le cache du répertoire des templates ne peut pas être vidé grâce au plugin Maintenance, il faut supprimer le répertoire <strong>cbtpl</strong> situé dans le répertoire cache (dotclear/cache par défaut) avec un logiciel FTP.</dd>
 </dl>
 </body>
Index: plugins/pages/locales/en/help/page.html
===================================================================
--- plugins/pages/locales/en/help/page.html	(revision 232)
+++ plugins/pages/locales/en/help/page.html	(revision 1573)
@@ -6,5 +6,5 @@
 <body>
 
-<h3>Editing a page</h3>
+<h4>Editing a page</h4>
 
 <dl>
@@ -73,5 +73,5 @@
 </dl>
 
-<h3>Comments</h3>
+<h4>Comments</h4>
 <dl>
   <dt>Comment list</dt>
@@ -87,5 +87,5 @@
 </dl>
 
-<h3>Wiki syntax reference</h3>
+<h4>Wiki syntax reference</h4>
 
 <p>The wiki syntax is a way to enhance your text with a minimal set
Index: plugins/pages/locales/fr/help/page.html
===================================================================
--- plugins/pages/locales/fr/help/page.html	(revision 232)
+++ plugins/pages/locales/fr/help/page.html	(revision 1573)
@@ -6,5 +6,5 @@
 <body>
 
-<h3>Rédaction de la page</h3>
+<h4>Rédaction de la page</h4>
 
 <dl>
@@ -79,5 +79,5 @@
 </dl>
 
-<h3>Commentaires</h3>
+<h4>Commentaires</h4>
 <dl>
   <dt>Liste les commentaires</dt>
@@ -94,5 +94,5 @@
 </dl>
 
-<h3>Référence de la syntaxe Wiki</h3>
+<h4>Référence de la syntaxe Wiki</h4>
 
 <p>La syntaxe Wiki est une manière d'écrire du texte avec un jeu de balises
Index: plugins/pages/page.php
===================================================================
--- plugins/pages/page.php	(revision 1508)
+++ plugins/pages/page.php	(revision 1553)
@@ -344,14 +344,14 @@
 
 if (!empty($_GET['upd'])) {
-	dcPage::message(__('Page has been successfully updated.'));
+	dcPage::success(__('Page has been successfully updated.'));
 }
 elseif (!empty($_GET['crea'])) {
-	dcPage::message(__('Page has been successfully created.'));
+	dcPage::success(__('Page has been successfully created.'));
 }
 elseif (!empty($_GET['attached'])) {
-	dcPage::message(__('File has been successfully attached.'));
+	dcPage::success(__('File has been successfully attached.'));
 }
 elseif (!empty($_GET['rmattach'])) {
-	dcPage::message(__('Attachment has been successfully removed.'));
+	dcPage::success(__('Attachment has been successfully removed.'));
 }
 
Index: plugins/pings/index.php
===================================================================
--- plugins/pings/index.php	(revision 1454)
+++ plugins/pings/index.php	(revision 1553)
@@ -59,5 +59,5 @@
 
 if (!empty($_GET['up'])) {
-	dcPage::message(__('Settings have been successfully updated.'));
+	dcPage::success(__('Settings have been successfully updated.'));
 }
 
Index: plugins/simpleMenu/index.php
===================================================================
--- plugins/simpleMenu/index.php	(revision 1474)
+++ plugins/simpleMenu/index.php	(revision 1553)
@@ -384,14 +384,14 @@
 
 if (!empty($_GET['added'])) {
-	dcPage::message(__('Menu item has been successfully added.'));
+	dcPage::success(__('Menu item has been successfully added.'));
 }
 if (!empty($_GET['removed'])) {
-	dcPage::message(__('Menu items have been successfully removed.'));
+	dcPage::success(__('Menu items have been successfully removed.'));
 }
 if (!empty($_GET['neworder'])) {
-	dcPage::message(__('Menu items have been successfully updated.'));
+	dcPage::success(__('Menu items have been successfully updated.'));
 }
 if (!empty($_GET['updated'])) {
-	dcPage::message(__('Menu items have been successfully updated.'));
+	dcPage::success(__('Menu items have been successfully updated.'));
 }
 
Index: plugins/simpleMenu/locales/en/help/help.html
===================================================================
--- plugins/simpleMenu/locales/en/help/help.html	(revision 553)
+++ plugins/simpleMenu/locales/en/help/help.html	(revision 1573)
@@ -6,5 +6,4 @@
 <body>
 
-<h3>Simple Menu</h3>
 <p>Simple Menu allows you to display on your blog a single level menu, if your theme supports it.</p>
 <dl>
Index: plugins/simpleMenu/locales/fr/help/help.html
===================================================================
--- plugins/simpleMenu/locales/fr/help/help.html	(revision 553)
+++ plugins/simpleMenu/locales/fr/help/help.html	(revision 1573)
@@ -6,5 +6,4 @@
 <body>
 
-<h3>Menu simple</h3>
 <p>Menu simple vous permet d’afficher un menu limité à un seul niveau sur votre blog, si votre thème le supporte.</p>
 <dl>
Index: plugins/tags/tag_posts.php
===================================================================
--- plugins/tags/tag_posts.php	(revision 1526)
+++ plugins/tags/tag_posts.php	(revision 1572)
@@ -98,5 +98,5 @@
   <script type="text/javascript">
   //<![CDATA[
-  dotclear.msg.confirm_tag_delete = '<?php echo html::escapeJS(sprintf(__('Are you sure you want to remove this %s?'),'tag')) ?>';
+  dotclear.msg.confirm_tag_delete = '<?php echo html::escapeJS(sprintf(__('Are you sure you want to remove tag: “%s”?'),html::escapeHTML($tag))) ?>';
   $(function() {
     $('#tag_delete').submit(function() {
@@ -120,5 +120,5 @@
 <?php
 if (!empty($_GET['renamed'])) {
-	dcPage::message(__('Tag has been successfully renamed'));
+	dcPage::success(__('Tag has been successfully renamed'));
 }
 
Index: plugins/userPref/index.php
===================================================================
--- plugins/userPref/index.php	(revision 1474)
+++ plugins/userPref/index.php	(revision 1553)
@@ -119,9 +119,9 @@
 
 if (!empty($_GET['upd'])) {
-	dcPage::message(__('Preferences successfully updated'));
+	dcPage::success(__('Preferences successfully updated'));
 }
 
 if (!empty($_GET['upda'])) {
-	dcPage::message(__('Preferences definition successfully updated'));
+	dcPage::success(__('Preferences definition successfully updated'));
 }
 ?>
Index: themes/ductile/locales/fr/admin.po
===================================================================
--- themes/ductile/locales/fr/admin.po	(revision 1526)
+++ themes/ductile/locales/fr/admin.po	(revision 1568)
@@ -15,5 +15,5 @@
 
 msgid "To configure the top menu go to the <a href=\"%s\">Simple Menu administration page</a>."
-msgstr "Pour configurer le menu allez à la <a href=\"%s\">page d'administration de l'extension Menu Simple</a>."
+msgstr "Pour configurer le menu allez à la <a href=\"%s\">page d'administration de Menu Simple</a>."
 
 msgid "Stickers"
Index: themes/ductile/locales/fr/help/help.html
===================================================================
--- themes/ductile/locales/fr/help/help.html	(revision 810)
+++ themes/ductile/locales/fr/help/help.html	(revision 1568)
@@ -15,5 +15,5 @@
 
 <p>Cochez la case qui suit « Cacher la description du blog » pour ne pas afficher la description du blog habituellement affichée sous le titre.</p>
-<p>Vous pouvez, si l'extension « Menu Simple » est installée et active, cliquer sur le lien indiqué pour paramétrer le menu affiché en entête.</p>
+<p>Vous pouvez, si « Menu Simple » est installé et actif, cliquer sur le lien indiqué pour paramétrer le menu affiché en entête.</p>
 <p>Vous pouvez indiquer l'URL d'un logo à utiliser à la place du logo par défaut. Si l'URL ne débute pas par un <code>/</code> il s'agira d'une URL relative au dossier <code>img</code> du thème (mettre <code>logo.png</code> revient par exemple à utiliser le logo par défaut). Videz ce champ pour revenir à la configuration par défaut.</p>
 
