Index: admin/auth.php
===================================================================
--- admin/auth.php	(revision 1179)
+++ admin/auth.php	(revision 1310)
@@ -265,4 +265,5 @@
   <meta name="ROBOTS" content="NOARCHIVE,NOINDEX,NOFOLLOW" />
   <meta name="GOOGLEBOT" content="NOSNIPPET" />
+  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
   <title><?php echo html::escapeHTML(DC_VENDOR_NAME); ?></title>
   
@@ -394,5 +395,5 @@
 		__('Remember my ID on this computer').'</label></p>'.
 		
-		'<p><input type="submit" value="'.__('log in').'" /></p>';
+		'<p><input class="add button" type="submit" value="'.__('log in').'" /></p>';
 		
 		if (!empty($_REQUEST['blog'])) {
Index: admin/blog.php
===================================================================
--- admin/blog.php	(revision 1277)
+++ admin/blog.php	(revision 1358)
@@ -67,11 +67,17 @@
 else
 {
-	dcPage::open(__('New blog'),dcPage::jsConfirmClose('blog-form'));
+	dcPage::open(__('New blog'),dcPage::jsConfirmClose('blog-form'),
+		dcPage::breadcrumb(
+			array(
+				__('System') => '',
+				__('Blogs') => 'blogs.php',
+				'<span class="page-title">'.__('New blog').'</span>' => ''
+			))
+	);
 	
 	echo
-	'<h2><a href="blogs.php">'.__('Blogs').'</a> &rsaquo; <span class="page-title">'.__('New blog').'</span></h2>'.
-	
 	'<form action="blog.php" method="post" id="blog-form" class="fieldset">'.
 	
+	$core->formNonce().
 	'<p><label class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Blog ID:').' '.
 	form::field('blog_id',30,32,html::escapeHTML($blog_id)).'</label></p>'.
@@ -88,7 +94,5 @@
 	form::textarea('blog_desc',60,5,html::escapeHTML($blog_desc)).'</p>'.
 	
-	'<p><input type="submit" accesskey="s" value="'.__('Create').'" />'.
-	$core->formNonce().
-	'</p>'.
+	'<p><input type="submit" accesskey="s" value="'.__('Create').'" /></p>'.
 	'</form>';
 
Index: admin/blog_del.php
===================================================================
--- admin/blog_del.php	(revision 1288)
+++ admin/blog_del.php	(revision 1358)
@@ -49,10 +49,16 @@
 }
 
-dcPage::open(__('Delete a blog'));
+dcPage::open(__('Delete a blog'),'',
+	dcPage::breadcrumb(
+		array(
+			__('System') => '',
+			__('Blogs') => 'blogs.php',
+			'<span class="page-title">'.__('Delete a blog').'</span>' => ''
+		))
+);
 
 if (!$core->error->flag())
 {
 	echo
-	'<h2 class="page-title">'.__('Delete a blog').'</h2>'.
 	'<p class="message">'.__('Warning').'</p>'.
 	'<p>'.sprintf(__('You are about to delete the blog %s. Every entry, comment and category will be deleted.'),
Index: admin/blog_pref.php
===================================================================
--- admin/blog_pref.php	(revision 1179)
+++ admin/blog_pref.php	(revision 1358)
@@ -252,4 +252,19 @@
 }
 
+if ($standalone) {
+	$breadcrumb = dcPage::breadcrumb(
+		array(
+			html::escapeHTML($blog_name) => '',
+			'<span class="page-title">'.__('Blog settings').'</span>' => ''
+		));
+} else {
+	$breadcrumb = dcPage::breadcrumb(
+		array(
+			__('System') => '',
+			__('Blogs') => 'blogs.php',
+			'<span class="page-title">'.__('Blog settings').' : '.html::escapeHTML($blog_name).'</span>' => ''
+		));
+}
+
 dcPage::open(__('Blog settings'),
 	'<script type="text/javascript">'."\n".
@@ -268,13 +283,10 @@
 	$core->callBehavior('adminBlogPreferencesHeaders').
 	
-	dcPage::jsPageTabs()
+	dcPage::jsPageTabs(),
+	$breadcrumb
 );
 
 if ($blog_id)
 {
-	echo '<h2>'.(!$standalone ? '<a href="blogs.php">'.__('Blogs').'</a> &rsaquo; ' : '').
-	html::escapeHTML($blog_name).' &rsaquo; <span class="page-title">'.
-	__('Blog settings').'</span></h2>';
-	
 	if (!empty($_GET['add'])) {
 		dcPage::message(__('Blog has been successfully created.'));
Index: admin/blog_theme.php
===================================================================
--- admin/blog_theme.php	(revision 1263)
+++ admin/blog_theme.php	(revision 1358)
@@ -207,15 +207,29 @@
 }
 
+if (!$theme_conf_mode)
+{
+	$breadcrumb = dcPage::breadcrumb(
+		array(
+			html::escapeHTML($core->blog->name) => '',
+			'<span class="page-title">'.__('Blog appearance').'</span>' => ''
+		));
+} else {
+	$breadcrumb = dcPage::breadcrumb(
+		array(
+			html::escapeHTML($core->blog->name) => '',
+			__('Blog appearance') => 'blog_theme.php',
+			'<span class="page-title">'.__('Theme configuration').'</span>' => ''
+		));
+}
+
 dcPage::open(__('Blog appearance'),
 	(!$theme_conf_mode ? dcPage::jsLoad('js/_blog_theme.js') : '').
 	dcPage::jsPageTabs($default_tab).
-	dcPage::jsColorPicker()
+	dcPage::jsColorPicker(),
+	$breadcrumb
 );
 
 if (!$theme_conf_mode)
 {
-	echo
-	'<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <span class="page-title">'.__('Blog appearance').'</span></h2>';
-	
 	if (!empty($_GET['upd'])) {
 		dcPage::message(__('Theme has been successfully changed.'));
@@ -330,7 +344,6 @@
 	$theme_name = $core->themes->moduleInfo($core->blog->settings->system->theme,'name');
 	$core->themes->loadModuleL10Nresources($core->blog->settings->system->theme,$_lang);
+
 	echo
-	'<h2>'.html::escapeHTML($core->blog->name).
-	' &rsaquo; <a href="blog_theme.php">'.__('Blog appearance').'</a> &rsaquo; <span class="page-title">'.__('Theme configuration').'</span></h2>'.
 	'<p><a class="back" href="blog_theme.php">'.__('back').'</a></p>';
 	
Index: admin/blogs.php
===================================================================
--- admin/blogs.php	(revision 1179)
+++ admin/blogs.php	(revision 1358)
@@ -73,11 +73,15 @@
 	$starting_script .= dcPage::jsLoad('js/filter-controls.js');
 }
-dcPage::open(__('List of blogs'),$starting_script);
+dcPage::open(__('List of blogs'),$starting_script,
+	dcPage::breadcrumb(
+		array(
+			__('System') => '',
+			'<span class="page-title">'.__('List of blogs').'</span>' => ''
+		))
+);
 
 if (!empty($_GET['del'])) {
 	dcPage::message(__('Blog has been successfully deleted.'));
 }
-
-echo '<h2 class="page-title">'.__('List of blogs').'</h2>';
 
 if (!$core->error->flag())
Index: admin/categories.php
===================================================================
--- admin/categories.php	(revision 1390)
+++ admin/categories.php	(revision 1358)
@@ -31,5 +31,5 @@
 		$mov_cat = $mov_cat ? $mov_cat : null;
 		if ($mov_cat !== null) {
-			$c = $core->blog->getCategory((integer) $_POST['mov_cat']);
+			$c = $core->blog->getCategory((integer) $_POST['del_cat']);
 			if ($c->isEmpty()) {
 				throw new Exception(__('This category does not exist.'));
@@ -73,5 +73,10 @@
 dcPage::open(__('Categories'),
 	dcPage::jsToolMan()."\n".
-	dcPage::jsLoad('js/_categories.js')
+	dcPage::jsLoad('js/_categories.js'),
+	dcPage::breadcrumb(
+		array(
+			html::escapeHTML($core->blog->name) => '',
+			'<span class="page-title">'.__('Categories').'</span>' => ''
+		))
 );
 
@@ -88,6 +93,4 @@
 	dcPage::message(__('The category has been successfully moved.'));
 }
-
-echo '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <span class="page-title">'.__('Categories').'</span></h2>';
 
 $rs = $core->blog->getCategories(array('post_type'=>'post'));
@@ -141,11 +144,33 @@
 echo '</div>';
 
-$categories_combo = array();
+echo '<div class="col">'.
+
+'<form action="category.php" method="post">'.
+'<fieldset><legend>'.__('Add a new category').'</legend>'.
+'<p><label class="required" for="cat_title"><abbr title="'.__('Required field').'">*</abbr> '.__('Title:').' '.
+form::field('cat_title',30,255).'</label></p>'.
+'<p><label for="new_cat_parent">'.__('Parent:').' '.
+'<select id="new_cat_parent" name="new_cat_parent">'.
+'<option value="0">'.__('Top level').'</option>';
+while ($rs->fetch()) {
+	echo '<option value="'.$rs->cat_id.'">'.
+		str_repeat('&nbsp;&nbsp;',$rs->level-1).($rs->level-1 == 0 ? '' : '&bull; ').
+		html::escapeHTML($rs->cat_title).'</option>';
+}
+echo
+'</select></label></p>'.
+'<p><input type="submit" value="'.__('Create').'" /></p>'.
+$core->formNonce().
+'</fieldset>'.
+'</form>';
+
 if (!$rs->isEmpty())
 {
+	$cats = array();
+	$dest = array('&nbsp;' => '');
 	$l = $rs->level;
 	$full_name = array($rs->cat_title);
-
-	while ($rs->fetch()) {
+	while ($rs->fetch())
+	{
 		if ($rs->level < $l) {
 			$full_name = array();
@@ -154,32 +179,18 @@
 		}
 		$full_name[] = html::escapeHTML($rs->cat_title);
-		$categories_combo[implode(' / ',$full_name)] = $rs->cat_id;
+		
+		$cats[implode(' / ',$full_name)] = $rs->cat_id;
+		$dest[implode(' / ',$full_name)] = $rs->cat_id;
+		
 		$l = $rs->level;
 	}
-}
-
-echo '<div class="col">'.
-
-'<form action="category.php" method="post">'.
-'<fieldset><legend>'.__('Add a new category').'</legend>'.
-'<p><label class="required" for="cat_title"><abbr title="'.__('Required field').'">*</abbr> '.__('Title:').' '.
-form::field('cat_title',30,255,'','maximal').'</label></p>'.
-'<p><label for="new_cat_parent">'.__('Parent:').' '.
-form::combo('new_cat_parent',array_merge(array(__('(No cat)') => 0),$categories_combo),'','maximal').
-'</label></p>'.
-'<p><input type="submit" value="'.__('Create').'" /></p>'.
-$core->formNonce().
-'</fieldset>'.
-'</form>';
-
-if (!$rs->isEmpty())
-{
+	
 	echo
 	'<form action="categories.php" method="post" id="delete-category">'.
 	'<fieldset><legend>'.__('Remove a category').'</legend>'.
 	'<p><label for="del_cat">'.__('Choose a category to remove:').' '.
-	form::combo('del_cat',$categories_combo,'','maximal').'</label></p> '.
+	form::combo('del_cat',$cats).'</label></p> '.
 	'<p><label for="mov_cat">'.__('And choose the category which will receive its entries:').' '.
-	form::combo('mov_cat',array_merge(array(__('(No cat)') => ''),$categories_combo),'','maximal').'</label></p> '.
+	form::combo('mov_cat',$dest).'</label></p> '.
 	'<p><input type="submit" value="'.__('Delete').'" class="delete" /></p>'.
 	$core->formNonce().
Index: admin/category.php
===================================================================
--- admin/category.php	(revision 1179)
+++ admin/category.php	(revision 1358)
@@ -157,8 +157,20 @@
 $title = $cat_id ? html::escapeHTML($cat_title) : __('New category');
 
+$elements = array(
+	html::escapeHTML($core->blog->name) => '',
+	__('Categories') => 'categories.php'
+	);
+if ($cat_id) {
+	while($parents->fetch()) {
+		$elements[html::escapeHTML($parents->cat_title)] = 'category.php?id='.$parents->cat_id;
+	}
+}
+$elements['<span class="page-title">'.$title.'</span>'] = '';
+
 dcPage::open($title,
 	dcPage::jsConfirmClose('category-form').
 	dcPage::jsToolBar().
-	dcPage::jsLoad('js/_category.js')
+	dcPage::jsLoad('js/_category.js'),
+	dcPage::breadcrumb($elements)
 );
 
@@ -166,18 +178,4 @@
 	dcPage::message(__('Category has been successfully updated.'));
 }
-
-echo
-'<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <a href="categories.php">'.
-__('Categories').'</a> &rsaquo; ';
-
-if ($cat_id)
-{
-	while($parents->fetch()) {
-		echo '<a href="category.php?id='.$parents->cat_id.'">'.html::escapeHTML($parents->cat_title).'</a>';
-		echo " &rsaquo; ";
-	}
-}
-
-echo '<span class="page-title">'.$title.'</span></h2>';
 
 echo
Index: admin/comment.php
===================================================================
--- admin/comment.php	(revision 1179)
+++ admin/comment.php	(revision 1358)
@@ -160,4 +160,20 @@
 /* DISPLAY
 -------------------------------------------------------- */
+if ($comment_id) {
+	$breadcrumb = dcPage::breadcrumb(
+		array(
+			html::escapeHTML($core->blog->name) => '',
+			html::escapeHTML($post_title) => $core->getPostAdminURL($post_type,$post_id).'&amp;co=1#c'.$comment_id,
+			'<span class="page-title">'.__('Edit comment').'</span>' => ''
+		));
+} else {
+	$breadcrumb = dcPage::breadcrumb(
+		array(
+			html::escapeHTML($core->blog->name) => '',
+			html::escapeHTML($post_title) => $core->getPostAdminURL($post_type,$post_id),
+			'<span class="page-title">'.__('Edit comment').'</span>' => ''
+		));
+}
+
 dcPage::open(__('Edit comment'),
 	dcPage::jsConfirmClose('comment-form').
@@ -165,5 +181,6 @@
 	dcPage::jsLoad('js/_comment.js').
 	# --BEHAVIOR-- adminCommentHeaders
-	$core->callBehavior('adminCommentHeaders')
+	$core->callBehavior('adminCommentHeaders'),
+	$breadcrumb
 );
 
@@ -183,9 +200,5 @@
 		.'">'.__('Send an e-mail').'</a>';
 	}
-	
-	echo '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <a href="'.
-		$core->getPostAdminURL($post_type,$post_id).'&amp;co=1#c'.$comment_id.'"> '.
-		$post_title.'</a> &rsaquo; <span class="page-title">'.__('Edit comment').'</span></h2>';
-		
+
 	echo
 	'<form action="comment.php" method="post" id="comment-form">'.
Index: admin/comments.php
===================================================================
--- admin/comments.php	(revision 1179)
+++ admin/comments.php	(revision 1358)
@@ -169,7 +169,11 @@
 $starting_script .= $core->callBehavior('adminCommentsHeaders');
 
-dcPage::open(__('Comments and trackbacks'),$starting_script);
-
-echo '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <span class="page-title">'.__('Comments and trackbacks').'</span></h2>';
+dcPage::open(__('Comments and trackbacks'),$starting_script,
+	dcPage::breadcrumb(
+		array(
+			html::escapeHTML($core->blog->name) => '',
+			'<span class="page-title">'.__('Comments and trackbacks').'</span>' => ''
+		))
+);
 
 if (!$core->error->flag())
Index: admin/index.php
===================================================================
--- admin/index.php	(revision 1391)
+++ admin/index.php	(revision 1379)
@@ -59,7 +59,7 @@
 if (!$core->auth->user_prefs->dashboard->prefExists('quickentry')) {
 	if (!$core->auth->user_prefs->dashboard->prefExists('quickentry',true)) {
-		$core->auth->user_prefs->dashboard->put('quickentry',false,'boolean','',null,true);
-	}
-	$core->auth->user_prefs->dashboard->put('quickentry',false,'boolean');
+		$core->auth->user_prefs->dashboard->put('quickentry',true,'boolean','',null,true);
+	}
+	$core->auth->user_prefs->dashboard->put('quickentry',true,'boolean');
 }
 
@@ -121,20 +121,5 @@
 $__dashboard_items = new ArrayObject(array(new ArrayObject,new ArrayObject));
 
-# Documentation links
 $dashboardItem = 0;
-if ($core->auth->user_prefs->dashboard->doclinks) {
-	if (!empty($__resources['doc']))
-	{
-		$doc_links = '<h3>'.__('Documentation and support').'</h3><ul>';
-	
-		foreach ($__resources['doc'] as $k => $v) {
-			$doc_links .= '<li><a href="'.$v.'" title="'.$k.' '.__('(external link)').'">'.$k.'</a></li>';
-		}
-	
-		$doc_links .= '</ul>';
-		$__dashboard_items[$dashboardItem][] = $doc_links;
-		$dashboardItem++;
-	}
-}
 
 if ($core->auth->user_prefs->dashboard->dcnews) {
@@ -180,4 +165,20 @@
 }
 
+# Documentation links
+if ($core->auth->user_prefs->dashboard->doclinks) {
+	if (!empty($__resources['doc']))
+	{
+		$doc_links = '<h3>'.__('Documentation and support').'</h3><ul>';
+	
+		foreach ($__resources['doc'] as $k => $v) {
+			$doc_links .= '<li><a href="'.$v.'" title="'.$k.' '.__('(external link)').'">'.$k.'</a></li>';
+		}
+	
+		$doc_links .= '</ul>';
+		$__dashboard_items[$dashboardItem][] = $doc_links;
+		$dashboardItem++;
+	}
+}
+
 $core->callBehavior('adminDashboardItems', $core, $__dashboard_items);
 
@@ -193,8 +194,11 @@
 	dcPage::jsLoad('js/_index.js').
 	# --BEHAVIOR-- adminDashboardHeaders
-	$core->callBehavior('adminDashboardHeaders')
+	$core->callBehavior('adminDashboardHeaders'),
+	dcPage::breadcrumb(
+		array(
+		'<span class="page-title">'.__('Dashboard').' : '.html::escapeHTML($core->blog->name).'</span>' => ''
+		),
+		false)
 );
-
-echo '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <span class="page-title">'.__('Dashboard').'</span></h2>';
 
 if ($core->auth->getInfo('user_default_blog') != $core->blog->id && $core->auth->blog_count > 1) {
@@ -283,5 +287,5 @@
 	if ($i->count() > 0)
 	{
-		$dashboardItems .= '<div>';
+		$dashboardItems .= '<div class="db-item">';
 		foreach ($i as $v) {
 			$dashboardItems .= $v;
@@ -304,25 +308,16 @@
 	if ($core->auth->check('usage,contentadmin',$core->blog->id))
 	{
-		# Getting categories
-		$categories_combo = array(__('(No cat)') => '');
+		$categories_combo = array('&nbsp;' => '');
 		try {
 			$categories = $core->blog->getCategories(array('post_type'=>'post'));
-			if (!$categories->isEmpty()) {
-				$l = $categories->level;
-				$full_name = array($categories->cat_title);
-
-				while ($categories->fetch()) {
-					if ($categories->level < $l) {
-						$full_name = array();
-					} elseif ($categories->level == $l) {
-						array_pop($full_name);
-					}
-					$full_name[] = html::escapeHTML($categories->cat_title);
-					$categories_combo[implode(' / ',$full_name)] = $categories->cat_id;
-					$l = $categories->level;
-				}
+			while ($categories->fetch()) {
+				$categories_combo[] = new formSelectOption(
+					str_repeat('&nbsp;&nbsp;',$categories->level-1).
+					($categories->level-1 == 0 ? '' : '&bull; ').html::escapeHTML($categories->cat_title),
+					$categories->cat_id
+				);
 			}
 		} catch (Exception $e) { }
-		
+	
 		echo
 		'<div id="quick">'.
Index: admin/install/index.php
===================================================================
--- admin/install/index.php	(revision 1247)
+++ admin/install/index.php	(revision 1280)
@@ -190,5 +190,5 @@
 		$core->auth->user_prefs->dashboard->put('doclinks',true,'boolean','',null,true);
 		$core->auth->user_prefs->dashboard->put('dcnews',true,'boolean','',null,true);
-		$core->auth->user_prefs->dashboard->put('quickentry',false,'boolean','',null,true);
+		$core->auth->user_prefs->dashboard->put('quickentry',true,'boolean','',null,true);
 
 		# Add accessibility options
Index: admin/js/_media.js
===================================================================
--- admin/js/_media.js	(revision 1234)
+++ admin/js/_media.js	(revision 1325)
@@ -2,4 +2,25 @@
 	if ($('#fileupload').length==0) {
 		return;
+	}
+
+	function enableButton(button) {
+		button.prop('disabled',false).removeClass('disabled');
+	}
+
+	function disableButton(button) {
+		button.prop('disabled',true).addClass('disabled');
+	}
+
+	function displayMessageInQueue(n) {
+		var msg = '';
+		if (n==1) {
+			msg = dotclear.jsUpload.msg.file_in_queue;
+		} else if (n>1) {
+			msg = dotclear.jsUpload.msg.files_in_queue;
+			msg = msg.replace(/%d/,n);
+		} else {
+			msg = dotclear.jsUpload.msg.no_file_in_queue;
+		}
+		$('.queue-message','#fileupload').html(msg);
 	}
 
@@ -10,6 +31,16 @@
 	});
 
-	$('.button.cancel', '#fileupload').click(function(e) {
-		$('.button.cancel, .button.start','#fileupload .fileupload-buttonbar').hide();
+	$('.button.cancel', '#fileupload .fileupload-buttonbar').click(function(e) {
+		$('.button.cancel','#fileupload .fileupload-buttonbar').hide();
+		disableButton($('.button.start','#fileupload .fileupload-buttonbar'));
+		displayMessageInQueue(0);
+	});
+
+	$('.cancel').live('click', function(e) {
+		if ($('.fileupload-ctrl .files .template-upload', '#fileupload').length==0) {
+			$('.button.cancel','#fileupload .fileupload-buttonbar').hide();
+			disableButton($('.button.start','#fileupload .fileupload-buttonbar'));
+		}
+		displayMessageInQueue($('.files .template-upload','#fileupload').length);
 	});
 
@@ -28,5 +59,8 @@
 		disabled: true
 	}).bind('fileuploadadd', function(e, data) {
-		$('.button.cancel, .button.start', '#fileupload .fileupload-buttonbar').show();
+		$('.button.cancel','#fileupload .fileupload-buttonbar').show();
+		enableButton($('.button.start','#fileupload .fileupload-buttonbar'));
+	}).bind('fileuploadadded', function(e, data) {
+		displayMessageInQueue($('.files .template-upload','#fileupload').length);
 	}).bind('fileuploaddone', function(e, data) {
 		if (data.result.files[0].html !==undefined) {
@@ -35,10 +69,12 @@
 		$('.button.clean','#fileupload').show();
 	}).bind('fileuploadalways', function(e, data) {
-	    if ($('.fileupload-ctrl .files .template-upload', '#fileupload').length==0) {
-		$('.button.start, .button.cancel','#fileupload .fileupload-buttonbar').hide();
-	    }
+		displayMessageInQueue($('.files .template-upload','#fileupload').length);
+		if ($('.fileupload-ctrl .files .template-upload','#fileupload').length==0) {
+			$('.button.cancel','#fileupload .fileupload-buttonbar').hide();
+			disableButton($('.button.start','#fileupload .fileupload-buttonbar'));
+		}
 	});
 
-	var $container = $('#add-file-f').parent().parent();
+	var $container = $('#fileupload').parent().parent();
 	var $msg,label;
 
@@ -47,4 +83,6 @@
 		label = dotclear.jsUpload.msg.choose_files;
 		$('#fileupload').fileupload({disabled:false});
+		displayMessageInQueue(0);
+		disableButton($('.button.start','#fileupload .fileupload-buttonbar'));
 	} else {
 		$msg = dotclear.msg.enhanced_uploader_activate;
@@ -61,13 +99,17 @@
 			// We must remove files in table
 			$('.files .upload-file', '#fileupload').remove();
-			$('.button.cancel, .button.start','#fileupload .fileupload-buttonbar').hide();
-			$('.button.start','#fileupload').show();
+			$('.button.cancel,.button.clean','#fileupload .fileupload-buttonbar').hide();
 			$('#fileupload').fileupload({disabled:true});
+			$('.queue-message','#fileupload').html('').hide();
 		} else {
 			$msg = dotclear.msg.enhanced_uploader_disable;
 			label = dotclear.jsUpload.msg.choose_files;
 			$('#upfile').attr('multiple', true);
-			$('.button.start','#fileupload').hide();
+			var startButton = $('.button.start','#fileupload .fileupload-buttonbar');
+			disableButton(startButton);
+			startButton.show();
 			$('#fileupload').fileupload({disabled:false});
+			$('.queue-message','#fileupload').show();
+			displayMessageInQueue(0);
 		}
 		$(this).find('a').text($msg);
@@ -75,5 +117,5 @@
 
 		$container.toggleClass('enhanced_uploader');
-	}).appendTo($('#add-file-f'));
+	}).appendTo($('#fileupload'));
 
 	// Replace remove links by a POST on hidden form
Index: admin/js/_post.js
===================================================================
--- admin/js/_post.js	(revision 1256)
+++ admin/js/_post.js	(revision 1392)
@@ -79,15 +79,7 @@
 		// Get document format and prepare toolbars
 		var formatField = $('#post_format').get(0);
-		var last_post_format = $(formatField).val();
 		$(formatField).change(function() {
-			// Confirm post format change
-			if(window.confirm(dotclear.msg.confirm_change_post_format_noconvert)){
-				excerptTb.switchMode(this.value);
-				contentTb.switchMode(this.value);
-				last_post_format = $(this).val();
-			}else{
-				// Restore last format if change cancelled
-				$(this).val(last_post_format);
-			}
+			excerptTb.switchMode(this.value);
+			contentTb.switchMode(this.value);
 		});
 		
@@ -130,5 +122,19 @@
 			hide: $('#post_password').val() == ''
 		});
-		
+		$('#post_status').parent().toggleWithLegend($('#post_status'),{
+			cookie: 'dcx_post_status'
+		});
+		$('#post_dt').parent().toggleWithLegend($('#post_dt').parent().children().not('label'),{
+			cookie: 'dcx_post_dt'
+		});
+		$('#post_format').parent().toggleWithLegend($('#post_format').parent().children().not('label').add($('#post_format').parents('p').next()),{
+			cookie: 'dcx_post_format'
+		});
+		$('#cat_id').parent().toggleWithLegend($('#cat_id'),{
+			cookie: 'cat_id'
+		});
+		$('#post_url').parent().toggleWithLegend($('#post_url').parent().children().not('label'),{
+			cookie: 'post_url'
+		});
 		// We load toolbar on excerpt only when it's ready
 		$('#excerpt-area label').toggleWithLegend($('#excerpt-area').children().not('label'),{
@@ -157,4 +163,5 @@
 		var a = document.createElement('a');
 		a.href = '#';
+		a.className = 'button';
 		$(a).click(function() {
 			var params = {
Index: admin/js/_users_actions.js
===================================================================
--- admin/js/_users_actions.js	(revision 1362)
+++ admin/js/_users_actions.js	(revision 935)
@@ -30,11 +30,4 @@
 				
 				if (perm == 'admin' && !E.disabled) {
-					perms[blog]['usage'].checked = E.checked;
-					perms[blog]['publish'].checked = E.checked;
-					perms[blog]['delete'].checked = E.checked;
-					perms[blog]['contentadmin'].checked = E.checked;
-					perms[blog]['categories'].checked = E.checked;
-					perms[blog]['media'].checked = E.checked;
-					perms[blog]['media_admin'].checked = E.checked;
 					perms[blog]['usage'].disabled = E.checked;
 					perms[blog]['publish'].disabled = E.checked;
Index: admin/js/common.js
===================================================================
--- admin/js/common.js	(revision 1140)
+++ admin/js/common.js	(revision 1303)
@@ -153,4 +153,5 @@
 			}
 		}
+		$('p#help-button span').text($('#content').hasClass('with-help') ? dotclear.msg.help_hide : dotclear.msg.help);
 		sizeBox();
 		return false;
@@ -196,5 +197,5 @@
 	sizeBox();
 
-	var img = $('<span id="help-button">'+dotclear.msg.help+'</span>');
+	var img = $('<p id="help-button"><span>'+dotclear.msg.help+'</span></p>');
 	var select = $();
 	img.click(function() { return toggle(); });
Index: admin/js/jquery/jquery.pageTabs.js
===================================================================
--- admin/js/jquery/jquery.pageTabs.js	(revision 1223)
+++ admin/js/jquery/jquery.pageTabs.js	(revision 1280)
@@ -39,10 +39,9 @@
 				li = document.createElement('li');
 				a = document.createElement('a');
-				$(a).html(this.title);
+				a.appendChild(document.createTextNode(this.title));
 				this.title = '';
 				a.href = '#';
 				a.fn = This.showDiv;
 				a.index = this.id || i;
-				li.id = "part-tabs-"+a.index;
 				a.obj = This;
 				jQuery(a).click(function() { this.fn.call(this.obj,this.index); return false; });
Index: admin/js/jquery/jquery.pwstrength.js
===================================================================
--- admin/js/jquery/jquery.pwstrength.js	(revision 1371)
+++ 	(revision )
@@ -1,66 +1,0 @@
-/**
- * jquery.pwstrength http://matoilic.github.com/jquery.pwstrength
- *
- * @version v0.1.1
- * @author Mato Ilic <info@matoilic.ch>
- * @copyright 2013 Mato Ilic
- *
- * Dual licensed under the MIT and GPL licenses:
- * http://www.opensource.org/licenses/mit-license.php
- * http://www.gnu.org/licenses/gpl.html
- */
-;(function($) {
-    $.pwstrength = function(password) {
-        var score = 0, length = password.length, upperCase, lowerCase, digits, nonAlpha;
-        
-        if(length < 5) score += 0;
-        else if(length < 8) score += 5;
-        else if(length < 16) score += 10;
-        else score += 15;
-        
-        lowerCase = password.match(/[a-z]/g);
-        if(lowerCase) score += 1;
-        
-        upperCase = password.match(/[A-Z]/g);
-        if(upperCase) score += 5;
-        
-        if(upperCase && lowerCase) score += 2;
-        
-        digits = password.match(/\d/g);
-        if(digits && digits.length > 1) score += 5;
-        
-        nonAlpha = password.match(/\W/g)
-        if(nonAlpha) score += (nonAlpha.length > 1) ? 15 : 10;
-        
-        if(upperCase && lowerCase && digits && nonAlpha) score += 15;
-
-        if(password.match(/\s/)) score += 10;
-
-        if(score < 15) return 0;
-        if(score < 20) return 1;
-        if(score < 35) return 2;
-        if(score < 50) return 3;
-        return 4;
-    };
-    
-    function updateIndicator(event) {
-        var strength = $.pwstrength($(this).val()), options = event.data, klass;
-        klass = options.classes[strength];
-        
-        options.indicator.removeClass(options.indicator.data('pwclass'));
-        options.indicator.data('pwclass', klass);
-        options.indicator.addClass(klass);
-        options.indicator.find(options.label).html(options.texts[strength]);
-    }
-    
-    $.fn.pwstrength = function(options) {
-        var options = $.extend({
-            label: '.label',
-            classes: ['pw-very-weak', 'pw-weak', 'pw-mediocre', 'pw-strong', 'pw-very-strong'],
-            texts: ['very weak', 'weak', 'mediocre', 'strong', 'very strong']
-        }, options || {});
-        options.indicator = $('#' + this.data('indicator'));
-        
-        return this.keyup(options, updateIndicator);
-    };
-})(jQuery);
Index: admin/js/jsUpload/jquery.fileupload-process.js
===================================================================
--- admin/js/jsUpload/jquery.fileupload-process.js	(revision 1144)
+++ admin/js/jsUpload/jquery.fileupload-process.js	(revision 1320)
@@ -1,4 +1,4 @@
 /*
- * jQuery File Upload Processing Plugin 1.1
+ * jQuery File Upload Processing Plugin 1.2.2
  * https://github.com/blueimp/jQuery-File-Upload
  *
@@ -99,12 +99,18 @@
             var processQueue = [];
             $.each(options.processQueue, function () {
-                var settings = {};
+                var settings = {},
+                    action = this.action,
+                    prefix = this.prefix === true ? action : this.prefix;
                 $.each(this, function (key, value) {
                     if ($.type(value) === 'string' &&
                             value.charAt(0) === '@') {
-                        settings[key] = options[value.slice(1)];
+                        settings[key] = options[
+                            value.slice(1) || (prefix ? prefix +
+                                key.charAt(0).toUpperCase() + key.slice(1) : key)
+                        ];
                     } else {
                         settings[key] = value;
                     }
+
                 });
                 processQueue.push(settings);
@@ -128,5 +134,5 @@
                     this._trigger('processstart');
                 }
-                $.each(data.files, function (index, file) {
+                $.each(data.files, function (index) {
                     var opts = index ? $.extend({}, options) : options,
                         func = function () {
Index: admin/js/jsUpload/jquery.fileupload-ui.js
===================================================================
--- admin/js/jsUpload/jquery.fileupload-ui.js	(revision 1206)
+++ admin/js/jsUpload/jquery.fileupload-ui.js	(revision 1320)
@@ -1,4 +1,4 @@
 /*
- * jQuery File Upload User Interface Plugin 8.2.1
+ * jQuery File Upload User Interface Plugin 8.7.1
  * https://github.com/blueimp/jQuery-File-Upload
  *
@@ -20,5 +20,7 @@
             'jquery',
             'tmpl',
-            './jquery.fileupload-resize',
+            './jquery.fileupload-image',
+            './jquery.fileupload-audio',
+            './jquery.fileupload-video',
             './jquery.fileupload-validate'
         ], factory);
@@ -104,19 +106,7 @@
                     );
                 });
-
-            /*
-             *  
-             *  Activation du bouton si un fichier trouvé
-             */
-                var fileUploadButtonBar = that.element.find('.fileupload-buttonbar');
-                fileUploadButtonBar.find('.start').prop('disabled', false);
-                fileUploadButtonBar.find('.start').removeClass('disabled');
-             /*
-             *
-             */
             },
             // Callback for the start of each file upload request:
             send: function (e, data) {
-                $(this).find('.start').hide();
                 var that = $(this).data('blueimp-fileupload') ||
                         $(this).data('fileupload');
@@ -140,5 +130,4 @@
             // Callback for successful uploads:
             done: function (e, data) {
-
                 var that = $(this).data('blueimp-fileupload') ||
                         $(this).data('fileupload'),
@@ -151,6 +140,6 @@
                     data.context.each(function (index) {
                         var file = files[index] ||
-                                {error: 'Empty file upload result'},
-                            deferred = that._addFinishedDeferreds();
+                                {error: 'Empty file upload result'};
+                        deferred = that._addFinishedDeferreds();
                         that._transition($(this)).done(
                             function () {
@@ -171,6 +160,7 @@
                     });
                 } else {
-                    template = that._renderDownload(files)
-                        .appendTo(that.options.filesContainer);
+                    template = that._renderDownload(files)[
+                        that.options.prependFiles ? 'prependTo' : 'appendTo'
+                    ](that.options.filesContainer);
                     that._forceReflow(template);
                     deferred = that._addFinishedDeferreds();
@@ -227,6 +217,7 @@
                     });
                 } else if (data.errorThrown !== 'abort') {
-                    data.context = that._renderUpload(data.files)
-                        .appendTo(that.options.filesContainer)
+                    data.context = that._renderUpload(data.files)[
+                        that.options.prependFiles ? 'prependTo' : 'appendTo'
+                    ](that.options.filesContainer)
                         .data('data', data);
                     that._forceReflow(data.context);
@@ -281,12 +272,9 @@
             // Callback for uploads start, equivalent to the global ajaxStart event:
             start: function (e) {
-                $(this).find('.start').hide();
                 var that = $(this).data('blueimp-fileupload') ||
-                $(this).data('fileupload');
+                        $(this).data('fileupload');
                 that._resetFinishedDeferreds();
                 that._transition($(this).find('.fileupload-progress')).done(
-
                     function () {
-
                         that._trigger('started', e);
                     }
@@ -295,5 +283,4 @@
             // Callback for uploads stop, equivalent to the global ajaxStop event:
             stop: function (e) {
-                $(this).find('.start').show();
                 var that = $(this).data('blueimp-fileupload') ||
                         $(this).data('fileupload'),
@@ -312,17 +299,4 @@
                     }
                 );
-            /*
-             *  Recherche des fichers restants à uploader
-             *  Désactivation du bouton si plus rien
-             */
-             var filesList = that.options.filesContainer;
-             if(filesList.find('.start').size() == 0) {
-                var fileUploadButtonBar = that.element.find('.fileupload-buttonbar');
-                fileUploadButtonBar.find('.start').prop('disabled', true);
-                fileUploadButtonBar.find('.start').addClass('disabled');
-             }
-            /*
-             *
-             */
             },
             processstart: function () {
@@ -335,7 +309,6 @@
             destroy: function (e, data) {
                 var that = $(this).data('blueimp-fileupload') ||
-                        $(this).data('fileupload');
-                if (data.url) {
-                    $.ajax(data).done(function () {
+                        $(this).data('fileupload'),
+                    removeNode = function () {
                         that._transition(data.context).done(
                             function () {
@@ -344,5 +317,9 @@
                             }
                         );
-                    });
+                    };
+                if (data.url) {
+                    $.ajax(data).done(removeNode);
+                } else {
+                    removeNode();
                 }
             }
@@ -637,4 +614,7 @@
             this._super();
             this._resetFinishedDeferreds();
+            if (!$.support.fileInput) {
+                this._disableFileInputButton();
+            }
         },
 
Index: admin/js/jsUpload/jquery.fileupload.js
===================================================================
--- admin/js/jsUpload/jquery.fileupload.js	(revision 1144)
+++ admin/js/jsUpload/jquery.fileupload.js	(revision 1320)
@@ -1,4 +1,4 @@
 /*
- * jQuery File Upload Plugin 5.31.1
+ * jQuery File Upload Plugin 5.32.2
  * https://github.com/blueimp/jQuery-File-Upload
  *
@@ -11,5 +11,5 @@
 
 /*jslint nomen: true, unparam: true, regexp: true */
-/*global define, window, document, File, Blob, FormData, location */
+/*global define, window, document, location, File, Blob, FormData */
 
 (function (factory) {
@@ -28,4 +28,16 @@
     'use strict';
 
+    // Detect file input support, based on
+    // http://viljamis.com/blog/2012/file-upload-support-on-mobile/
+    $.support.fileInput = !(new RegExp(
+        // Handle devices which give false positives for the feature detection:
+        '(Android (1\\.[0156]|2\\.[01]))' +
+            '|(Windows Phone (OS 7|8\\.0))|(XBLWP)|(ZuneWP)|(WPDesktop)' +
+            '|(w(eb)?OSBrowser)|(webOS)' +
+            '|(Kindle/(1\\.0|2\\.[05]|3\\.0))'
+    ).test(window.navigator.userAgent) ||
+        // Feature detection for all other devices:
+        $('<input type="file">').prop('disabled'));
+
     // The FileReader API is not actually used, but works as feature detection,
     // as e.g. Safari supports XHR file uploads via the FormData API,
@@ -33,4 +45,8 @@
     $.support.xhrFileUpload = !!(window.XMLHttpRequestUpload && window.FileReader);
     $.support.xhrFormDataFileUpload = !!window.FormData;
+
+    // Detect support for Blob slicing (required for chunked uploads):
+    $.support.blobSlice = window.Blob && (Blob.prototype.slice ||
+        Blob.prototype.webkitSlice || Blob.prototype.mozSlice);
 
     // The fileupload widget listens for change events on file input fields defined
@@ -145,11 +161,14 @@
             // widget (via file input selection, drag & drop, paste or add API call).
             // If the singleFileUploads option is enabled, this callback will be
-            // called once for each file in the selection for XHR file uplaods, else
+            // called once for each file in the selection for XHR file uploads, else
             // once for each file selection.
+            //
             // The upload starts when the submit method is invoked on the data parameter.
             // The data object contains a files property holding the added files
-            // and allows to override plugin options as well as define ajax settings.
+            // and allows you to override plugin options as well as define ajax settings.
+            //
             // Listeners for this callback can also be bound the following way:
             // .bind('fileuploadadd', func);
+            //
             // data.submit() returns a Promise object and allows to attach additional
             // handlers using jQuery's Deferred callbacks:
@@ -233,4 +252,9 @@
             'forceIframeTransport'
         ],
+
+        _blobSlice: $.support.blobSlice && function () {
+            var slice = this.slice || this.webkitSlice || this.mozSlice;
+            return slice.apply(this, arguments);
+        },
 
         _BitrateTimer: function () {
@@ -380,7 +404,9 @@
                 options.headers['Content-Range'] = options.contentRange;
             }
-            if (!multipart) {
+            if (!multipart || options.blob || !this._isInstanceOf('File', file)) {
                 options.headers['Content-Disposition'] = 'attachment; filename="' +
                     encodeURI(file.name) + '"';
+            }
+            if (!multipart) {
                 options.contentType = file.type;
                 options.data = options.blob || file;
@@ -415,6 +441,4 @@
                     }
                     if (options.blob) {
-                        options.headers['Content-Disposition'] = 'attachment; filename="' +
-                            encodeURI(file.name) + '"';
                         formData.append(paramName, options.blob, file.name);
                     } else {
@@ -440,4 +464,5 @@
 
         _initIframeSettings: function (options) {
+            var targetHost = $('<a></a>').prop('href', options.url).prop('host');
             // Setting the dataType to iframe enables the iframe transport:
             options.dataType = 'iframe ' + (options.dataType || '');
@@ -445,6 +470,5 @@
             options.formData = this._getFormData(options);
             // Add redirect url to form data on cross-domain uploads:
-            if (options.redirect && $('<a></a>').prop('href', options.url)
-                    .prop('host') !== location.host) {
+            if (options.redirect && targetHost && targetHost !== location.host) {
                 options.formData.push({
                     name: options.redirectParamName || 'redirect',
@@ -628,10 +652,11 @@
         // upload requests:
         _chunkedUpload: function (options, testOnly) {
+            options.uploadedBytes = options.uploadedBytes || 0;
             var that = this,
                 file = options.files[0],
                 fs = file.size,
-                ub = options.uploadedBytes = options.uploadedBytes || 0,
+                ub = options.uploadedBytes,
                 mcs = options.maxChunkSize || fs,
-                slice = file.slice || file.webkitSlice || file.mozSlice,
+                slice = this._blobSlice,
                 dfd = $.Deferred(),
                 promise = dfd.promise(),
@@ -851,5 +876,6 @@
                     pipe = slot.pipe(send);
                 } else {
-                    pipe = (this._sequence = this._sequence.pipe(send, send));
+                    this._sequence = this._sequence.pipe(send, send);
+                    pipe = this._sequence;
                 }
                 // Return the piped Promise object, enhanced with an abort method,
@@ -1101,7 +1127,7 @@
 
         _onDrop: function (e) {
+            e.dataTransfer = e.originalEvent && e.originalEvent.dataTransfer;
             var that = this,
-                dataTransfer = e.dataTransfer = e.originalEvent &&
-                    e.originalEvent.dataTransfer,
+                dataTransfer = e.dataTransfer,
                 data = {};
             if (dataTransfer && dataTransfer.files && dataTransfer.files.length) {
@@ -1117,6 +1143,6 @@
 
         _onDragOver: function (e) {
-            var dataTransfer = e.dataTransfer = e.originalEvent &&
-                e.originalEvent.dataTransfer;
+            e.dataTransfer = e.originalEvent && e.originalEvent.dataTransfer;
+            var dataTransfer = e.dataTransfer;
             if (dataTransfer) {
                 if (this._trigger('dragover', e) === false) {
@@ -1140,7 +1166,9 @@
                 });
             }
-            this._on(this.options.fileInput, {
-                change: this._onChange
-            });
+            if ($.support.fileInput) {
+                this._on(this.options.fileInput, {
+                    change: this._onChange
+                });
+            }
         },
 
@@ -1276,4 +1304,8 @@
                                 return;
                             }
+                            if (!files.length) {
+                                dfd.reject();
+                                return;
+                            }
                             data.files = files;
                             jqXHR = that._onSend(null, data).then(
Index: admin/js/jsUpload/jquery.iframe-transport.js
===================================================================
--- admin/js/jsUpload/jquery.iframe-transport.js	(revision 1144)
+++ admin/js/jsUpload/jquery.iframe-transport.js	(revision 1320)
@@ -1,4 +1,4 @@
 /*
- * jQuery Iframe Transport Plugin 1.6.2
+ * jQuery Iframe Transport Plugin 1.7
  * https://github.com/blueimp/jQuery-File-Upload
  *
@@ -171,5 +171,13 @@
 
     // The iframe transport returns the iframe content document as response.
-    // The following adds converters from iframe to text, json, html, and script:
+    // The following adds converters from iframe to text, json, html, xml
+    // and script.
+    // Please note that the Content-Type for JSON responses has to be text/plain
+    // or text/html, if the browser doesn't include application/json in the
+    // Accept header, else IE will show a download dialog.
+    // The Content-Type for XML responses on the other hand has to be always
+    // application/xml or text/xml, so IE properly parses the XML response.
+    // See also
+    // https://github.com/blueimp/jQuery-File-Upload/wiki/Setup#content-type-negotiation
     $.ajaxSetup({
         converters: {
@@ -182,4 +190,10 @@
             'iframe html': function (iframe) {
                 return iframe && $(iframe[0].body).html();
+            },
+            'iframe xml': function (iframe) {
+                var xmlDoc = iframe && iframe[0];
+                return xmlDoc && $.isXMLDoc(xmlDoc) ? xmlDoc :
+                        $.parseXML((xmlDoc.XMLDocument && xmlDoc.XMLDocument.xml) ||
+                            $(xmlDoc.body).html());
             },
             'iframe script': function (iframe) {
Index: admin/langs.php
===================================================================
--- admin/langs.php	(revision 1179)
+++ admin/langs.php	(revision 1358)
@@ -129,9 +129,11 @@
 -------------------------------------------------------- */
 dcPage::open(__('Languages management'),
-	dcPage::jsLoad('js/_langs.js')
+	dcPage::jsLoad('js/_langs.js'),
+	dcPage::breadcrumb(
+	array(
+		__('System') => '',
+		'<span class="page-title">'.__('Languages management').'</span>' => ''
+	))
 );
-
-echo
-'<h2 class="page-title">'.__('Languages management').'</h2>';
 
 if (!empty($_GET['removed'])) {
Index: admin/media.php
===================================================================
--- admin/media.php	(revision 1234)
+++ admin/media.php	(revision 1358)
@@ -203,7 +203,12 @@
 if ($dir && !empty($_GET['remove']) && empty($_GET['noconfirm']))
 {
-	call_user_func($open_f,__('Media manager'));
-	
-	echo '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; '.__('Media manager').' &rsaquo; <span class="page-title">'.__('confirm removal').'</span></h2>';
+	call_user_func($open_f,__('Media manager'),'',
+		dcPage::breadcrumb(
+			array(
+				html::escapeHTML($core->blog->name) => '',
+				__('Media manager') => '',
+				'<span class="page-title">'.__('confirm removal').'</span>' => ''
+			),!$popup)
+	);
 	
 	echo
@@ -227,7 +232,33 @@
 $user_ui_enhanceduploader = $core->auth->user_prefs->interface->enhanceduploader;
 
+
+if (!isset($core->media)) {
+	$breadcrumb = dcPage::breadcrumb(
+		array(
+			html::escapeHTML($core->blog->name) => '',
+			'<span class="page-title">'.__('Media manager').'</span>' => ''
+		),!$popup);
+} else {
+	$breadcrumb_media = $core->media->breadCrumb(html::escapeURL($page_url).'&amp;d=%s','<span class="page-title">%s</span>');
+	if ($breadcrumb_media == '') {
+		$breadcrumb = dcPage::breadcrumb(
+			array(
+				html::escapeHTML($core->blog->name) => '',
+				'<span class="page-title">'.__('Media manager').'</span>' => ''
+			),!$popup);
+	} else {
+		$breadcrumb = dcPage::breadcrumb(
+			array(
+				html::escapeHTML($core->blog->name) => '',
+				__('Media manager') => html::escapeURL($page_url.'&d='),
+				$breadcrumb_media => ''
+			),!$popup);
+	}
+}
+
 call_user_func($open_f,__('Media manager'),
 	dcPage::jsLoad('js/_media.js').
-	($core_media_writable ? dcPage::jsUpload(array('d='.$d)) : '')
+	($core_media_writable ? dcPage::jsUpload(array('d='.$d)) : ''),
+	$breadcrumb
 	);
 
@@ -254,16 +285,4 @@
 if (!empty($_GET['unzipok'])) {
 	dcPage::message(__('Zip file has been successfully extracted.'));
-}
-
-echo '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; ';
-if (!isset($core->media)) {
-	echo '<span class="page-title">'.__('Media manager').'</span></h2>';
-} else {
-	$breadcrumb = $core->media->breadCrumb(html::escapeURL($page_url).'&amp;d=%s','<span class="page-title">%s</span>');
-	if ($breadcrumb == '') {
-		echo '<span class="page-title">'.__('Media manager').'</span></h2>';
-	} else {
-		echo '<a href="'.html::escapeURL($page_url.'&d=').'">'.__('Media manager').'</a>'.' / '.$breadcrumb.'</h2>';
-	}
 }
 
@@ -335,10 +354,10 @@
 
 	echo
-	'<form id="fileupload" action="'.html::escapeURL($page_url).'" method="POST" enctype="multipart/form-data">'.
 	'<fieldset id="add-file-f"><legend>'.__('Add files').'</legend>'.
 	'<p>'.__('Please take care to publish media that you own and that are not protected by copyright.').'</p>'.
-	form::hidden(array('MAX_FILE_SIZE'),DC_MAX_UPLOAD_SIZE).
-	$core->formNonce().
-	'<div class="fileupload-ctrl"><div class="files"></div></div>';
+	' <form id="fileupload" action="'.html::escapeURL($page_url).'" method="POST" enctype="multipart/form-data">'.
+	'<div>'.form::hidden(array('MAX_FILE_SIZE'),DC_MAX_UPLOAD_SIZE).
+	$core->formNonce().'</div>'.
+	'<div class="fileupload-ctrl"><div class="queue-message"></div><div class="files"></div></div>';
 
 	echo
@@ -369,5 +388,5 @@
 
 	echo
-	form::hidden(array('d'),$d).
+	'<div>'.form::hidden(array('d'),$d).'</div>'.
 	'</fieldset>'.
 	'</form>'.
@@ -428,9 +447,7 @@
 	$class = 'media-item media-col-'.($i%2);
 	
-	$alt = (!$f->d ? sprintf(__('Media details of %s'),$fname) : 
-		sprintf(__('Go to %s folder'),($fname == '..' ? __('parent') : $fname)));
 	$res =
 	'<div class="'.$class.'"><a class="media-icon media-link" href="'.$link.'">'.
-	'<img src="'.$f->media_icon.'" alt="'.$alt.'" /></a>'.
+	'<img src="'.$f->media_icon.'" alt="" /></a>'.
 	'<ul>'.
 	'<li><a class="media-link" href="'.$link.'">'.$fname.'</a></li>';
Index: admin/media_item.php
===================================================================
--- admin/media_item.php	(revision 1179)
+++ admin/media_item.php	(revision 1358)
@@ -175,5 +175,11 @@
 	$starting_scripts.
 	dcPage::jsDatePicker().
-	dcPage::jsPageTabs($tab)
+	dcPage::jsPageTabs($tab),
+	dcPage::breadcrumb(
+		array(
+			html::escapeHTML($core->blog->name) => '',
+			__('Media manager') => html::escapeURL($media_page_url),
+			$core->media->breadCrumb(html::escapeURL($media_page_url).'&amp;d=%s').'<span class="page-title">'.$file->basename.'</span>' => ''
+		),!$popup)
 );
 
@@ -189,8 +195,4 @@
 	dcPage::message(__('Thumbnails have been successfully updated.'));
 }
-
-echo '<h2><a href="'.html::escapeURL($media_page_url).'">'.__('Media manager').'</a>'.
-' / '.$core->media->breadCrumb(html::escapeURL($media_page_url).'&amp;d=%s').
-'<span class="page-title">'.$file->basename.'</span></h2>';
 
 # Insertion popup
Index: admin/plugin.php
===================================================================
--- admin/plugin.php	(revision 1179)
+++ admin/plugin.php	(revision 1358)
@@ -81,7 +81,11 @@
 else
 {
-	call_user_func($open_f,__('Plugin not found'));
-	
-	echo '<h2 class="page-title">'.__('Plugin not found').'</h2>';
+	call_user_func($open_f,__('Plugin not found'),'',
+		dcPage::breadcrumb(
+			array(
+				__('System') => '',
+				'<span class="page-title">'.__('Plugin not found').'</span>' => ''
+			))
+	);
 	
 	echo '<p>'.__('The plugin you reached does not exist or does not have an admin page.').'</p>';
Index: admin/plugins.php
===================================================================
--- admin/plugins.php	(revision 1271)
+++ admin/plugins.php	(revision 1358)
@@ -191,9 +191,11 @@
 dcPage::open(__('Plugins management'),
 	dcPage::jsLoad('js/_plugins.js').
-	dcPage::jsPageTabs($default_tab)
+	dcPage::jsPageTabs($default_tab),
+	dcPage::breadcrumb(
+		array(
+			__('System') => '',
+			'<span class="page-title">'.__('Plugins management').'</span>' => ''
+		))
 );
-
-echo
-'<h2 class="page-title">'.__('Plugins management').'</h2>';
 
 if (!empty($_GET['removed'])) {
@@ -233,5 +235,4 @@
 		'<a href="plugin.php?p=daInstaller">'.__('DotAddict.org Installer').'</a>'));
 
-echo '<p>';
 if ($is_writable) {
 	echo __('To install or upgrade a plugin you generally just need to upload it '.
@@ -388,9 +389,4 @@
 echo '</div>';
 
-if ($core->plugins->moduleExists('daInstaller')) {
-	echo '<p><a href="plugin.php?p=daInstaller" class="multi-part">'.__('DotAddict.org Installer').'</a></p>';
-}
-
-
 # --BEHAVIOR-- pluginsToolsTabs
 $core->callBehavior('pluginsToolsTabs',$core);
Index: admin/post.php
===================================================================
--- admin/post.php	(revision 1288)
+++ admin/post.php	(revision 1392)
@@ -133,5 +133,5 @@
 		if ($next_rs !== null) {
 			$next_link = sprintf($post_link,$next_rs->post_id,
-				html::escapeHTML($next_rs->post_title),__('next entry').'&nbsp;&#187;');
+				html::escapeHTML($next_rs->post_title),__('Next entry').'&nbsp;&#187;');
 			$next_headlink = sprintf($post_headlink,'next',
 				html::escapeHTML($next_rs->post_title),$next_rs->post_id);
@@ -140,5 +140,5 @@
 		if ($prev_rs !== null) {
 			$prev_link = sprintf($post_link,$prev_rs->post_id,
-				html::escapeHTML($prev_rs->post_title),'&#171;&nbsp;'.__('previous entry'));
+				html::escapeHTML($prev_rs->post_title),'&#171;&nbsp;'.__('Previous entry'));
 			$prev_headlink = sprintf($post_headlink,'previous',
 				html::escapeHTML($prev_rs->post_title),$prev_rs->post_id);
@@ -294,4 +294,26 @@
 }
 
+if ($post_id) {
+	switch ($post_status) {
+		case 1:
+			$img_status = sprintf($img_status_pattern,__('Published'),'check-on.png');
+			break;
+		case 0:
+			$img_status = sprintf($img_status_pattern,__('Unpublished'),'check-off.png');
+			break;
+		case -1:
+			$img_status = sprintf($img_status_pattern,__('Scheduled'),'scheduled.png');
+			break;
+		case -2:
+			$img_status = sprintf($img_status_pattern,__('Pending'),'check-wrn.png');
+			break;
+		default:
+			$img_status = '';
+	}
+	$edit_entry_str = __('&ldquo;%s&rdquo;');
+	$page_title_edit = sprintf($edit_entry_str, html::escapeHTML($post_title)).' '.$img_status;
+}
+
+
 dcPage::open($page_title.' - '.__('Entries'),
 	dcPage::jsDatePicker().
@@ -304,5 +326,11 @@
 	$core->callBehavior('adminPostHeaders').
 	dcPage::jsPageTabs($default_tab).
-	$next_headlink."\n".$prev_headlink
+	$next_headlink."\n".$prev_headlink,
+	dcPage::breadcrumb(
+		array(
+			html::escapeHTML($core->blog->name) => '',
+			__('Entries') => 'posts.php',
+			'<span class="page-title">'.($post_id ? $page_title_edit : $page_title).'</span>' => ''
+		))
 );
 
@@ -334,37 +362,12 @@
 }
 
-echo '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; '.'<a href="posts.php">'.__('Entries').'</a> &rsaquo; <span class="page-title">';
-if ($post_id) {
-	switch ($post_status) {
-		case 1:
-			$img_status = sprintf($img_status_pattern,__('published'),'check-on.png');
-			break;
-		case 0:
-			$img_status = sprintf($img_status_pattern,__('unpublished'),'check-off.png');
-			break;
-		case -1:
-			$img_status = sprintf($img_status_pattern,__('scheduled'),'scheduled.png');
-			break;
-		case -2:
-			$img_status = sprintf($img_status_pattern,__('pending'),'check-wrn.png');
-			break;
-		default:
-			$img_status = '';
-	}
-	$edit_entry_str = __('Edit entry &ldquo;%s&rdquo;');
-	echo sprintf($edit_entry_str, html::escapeHTML($post_title)).' '.$img_status;
-} else {
-	echo $page_title;
-}
-echo	'</span></h2>';
-
 if ($post_id && $post->post_status == 1) {
-	echo '<p><a href="'.$post->getURL().'" onclick="window.open(this.href);return false;" title="'.$post_title.' ('.__('new window').')'.'">'.__('Go to this entry on the site').' <img src="images/outgoing-blue.png" alt="" /></a></p>';
+	echo '<p><a class="onblog_link" href="'.$post->getURL().'" onclick="window.open(this.href);return false;" title="'.$post_title.' ('.__('new window').')'.'">'.__('Go to this entry on the site').' <img src="images/outgoing-blue.png" alt="" /></a></p>';
 }
 if ($post_id)
 {
-	echo '<p>';
+	echo '<p class="nav_prevnext">';
 	if ($prev_link) { echo $prev_link; }
-	if ($next_link && $prev_link) { echo ' - '; }
+	if ($next_link && $prev_link) { echo ' | '; }
 	if ($next_link) { echo $next_link; }
 	
@@ -386,15 +389,18 @@
 if ($can_edit_post)
 {
-	echo '<div class="multi-part" title="'.__('Edit entry').'" id="edit-entry">';
+	echo '<div class="multi-part" title="'.($post_id ? __('Edit entry') : __('New entry')).'" id="edit-entry">';
 	echo '<form action="post.php" method="post" id="entry-form">';
 	echo '<div id="entry-wrapper">';
 	echo '<div id="entry-content"><div class="constrained">';
+
+	echo '<h3 class="hidden">'.__('Edit post').'</h3>';
 	
 	echo
-	'<p class="col"><label class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Title:').
+	'<p class="col"><label class="required no-margin"><abbr title="'.__('Required field').'">*</abbr> '.__('Title:').'</label>'.
 	form::field('post_title',20,255,html::escapeHTML($post_title),'maximal').
-	'</label></p>'.
-	
-	'<p class="area" id="excerpt-area"><label for="post_excerpt">'.__('Excerpt:').'</label> '.
+	'</p>'.
+	
+	'<p class="area" id="excerpt-area"><label for="post_excerpt">'.__('Excerpt:').'<span class="form-note">'.
+	__('Add an introduction to the post.').'</span></label> '.
 	form::textarea('post_excerpt',50,5,html::escapeHTML($post_excerpt)).
 	'</p>'.
@@ -405,5 +411,6 @@
 	'</p>'.
 	
-	'<p class="area" id="notes-area"><label for="post_notes">'.__('Notes:').'</label>'.
+	'<p class="area" id="notes-area"><label for="post_notes">'.__('Personal notes:').'<span class="form-note">'.
+	__('Add unpublished notes.').'</span></label>'.
 	form::textarea('post_notes',50,5,html::escapeHTML($post_notes)).
 	'</p>';
@@ -413,5 +420,5 @@
 	
 	echo
-	'<p>'.
+	'<p class="border-top">'.
 	($post_id ? form::hidden('id',$post_id) : '').
 	'<input type="submit" value="'.__('Save').' (s)" '.
@@ -438,62 +445,88 @@
 	echo '<div id="entry-sidebar">';
 	
-	echo
-	'<p><label for="cat_id">'.__('Category:').
-	form::combo('cat_id',$categories_combo,$cat_id,'maximal').
-	'</label></p>'.
-	
-	'<p><label for="post_status">'.__('Entry status:').
-	form::combo('post_status',$status_combo,$post_status,'','',!$can_publish).
-	'</label></p>'.
-	
-	'<p><label for="post_dt">'.__('Published on:').
-	form::field('post_dt',16,16,$post_dt,($bad_dt ? 'invalid' : '')).
-	'</label></p>'.
-	
-	'<p><label for="post_format">'.__('Text formating:').
-	form::combo('post_format',$formaters_combo,$post_format).
-	'</label>'.
-	'</p>'.
-	'<p>'.($post_id && $post_format != 'xhtml' ? '<a id="convert-xhtml" class="button" href="post.php?id='.$post_id.'&amp;xconv=1">'.__('Convert to XHTML').'</a>' : '').'</p>'.
-	
-	'<p><label for="post_open_comment" class="classic">'.form::checkbox('post_open_comment',1,$post_open_comment).' '.
-	__('Accept comments').'</label></p>'.
-	($core->blog->settings->system->allow_comments ? 
-		(isContributionAllowed($post_id,strtotime($post_dt),true) ? 
-			'' :
-			'<p class="form-note warn">'.__('Warning: Comments are not more accepted for this entry.').'</p>') : 
-		'<p class="form-note warn">'.__('Warning: Comments are not accepted on this blog.').'</p>').
-
-	'<p><label for="post_open_tb" class="classic">'.form::checkbox('post_open_tb',1,$post_open_tb).' '.
-	__('Accept trackbacks').'</label></p>'.
-	($core->blog->settings->system->allow_trackbacks ? 
-		(isContributionAllowed($post_id,strtotime($post_dt),false) ? 
-			'' :
-			'<p class="form-note warn">'.__('Warning: Trackbacks are not more accepted for this entry.').'</p>') : 
-		'<p class="form-note warn">'.__('Warning: Trackbacks are not accepted on this blog.').'</p>').
-
-	'<p><label for="post_selected" class="classic">'.form::checkbox('post_selected',1,$post_selected).' '.
-	__('Selected entry').'</label></p>'.
-	
-	'<p><label for="post_lang">'.__('Entry lang:').
-	form::combo('post_lang',$lang_combo,$post_lang).
-	'</label></p>'.
-	
-	'<p><label for="post_password">'.__('Entry password:').
-	form::field('post_password',10,32,html::escapeHTML($post_password),'maximal').
-	'</label></p>'.
-	
-	'<div class="lockable">'.
-	'<p><label for="post_url">'.__('Basename:').
-	form::field('post_url',10,255,html::escapeHTML($post_url),'maximal').
-	'</label></p>'.
-	'<p class="form-note warn">'.
-	__('Warning: If you set the URL manually, it may conflict with another entry.').
-	'</p>'.
-	'</div>';
+	$post_sidebar = new ArrayObject(array(
+		'status-box' => array(
+			'title' => __('Status'),
+			'items' => array(
+				'post_status' => 
+					'<p><label for="post_status">'.__('Entry status:').
+					form::combo('post_status',$status_combo,$post_status,'maximal','',!$can_publish).
+					'</label></p>',
+				'post_dt' => 
+					'<p><label for="post_dt">'.__('Published on:').
+					form::field('post_dt',16,16,$post_dt,($bad_dt ? 'invalid' : '')).
+					'</label></p>',
+				'post_lang' =>
+					'<p><label for="post_lang">'.__('Entry lang:').
+					form::combo('post_lang',$lang_combo,$post_lang).
+					'</label></p>',
+				'post_format' =>
+					'<p><label for="post_format">'.__('Text formating:').
+					form::combo('post_format',$formaters_combo,$post_format,'maximal').
+					'</label></p>'.
+					'<p>'.($post_id && $post_format != 'xhtml' ? 
+					'<a id="convert-xhtml" class="button maximal" href="post.php?id='.$post_id.'&amp;xconv=1">'.
+					__('Convert to XHTML').'</a>' : '').'</p>')),
+		'metas-box' => array(
+			'title' => __('Ordering'),
+			'items' => array(
+				'post_selected' => 
+					'<p><label for="post_selected" class="classic">'.
+					form::checkbox('post_selected',1,$post_selected).' '.
+					__('Selected entry').'</label></p>',
+				'cat_id' =>
+					'<p><label for="cat_id">'.__('Category:').
+					form::combo('cat_id',$categories_combo,$cat_id,'maximal').
+					'</label></p>')),
+		'options-box' => array(
+			'title' => __('Options'),
+			'items' => array(
+				'post_open_comment' =>
+					'<p><label for="post_open_comment" class="classic">'.
+					form::checkbox('post_open_comment',1,$post_open_comment).' '.
+					__('Accept comments').'</label></p>'.
+					($core->blog->settings->system->allow_comments ? 
+						(isContributionAllowed($post_id,strtotime($post_dt),true) ? 
+							'' :
+							'<p class="form-note warn">'.
+							__('Warning: Comments are not more accepted for this entry.').'</p>') : 
+						'<p class="form-note warn">'.
+						__('Warning: Comments are not accepted on this blog.').'</p>'),
+				'post_open_tb' =>
+					'<p><label for="post_open_tb" class="classic">'.
+					form::checkbox('post_open_tb',1,$post_open_tb).' '.
+					__('Accept trackbacks').'</label></p>'.
+					($core->blog->settings->system->allow_trackbacks ? 
+						(isContributionAllowed($post_id,strtotime($post_dt),false) ? 
+							'' :
+							'<p class="form-note warn">'.
+							__('Warning: Trackbacks are not more accepted for this entry.').'</p>') : 
+						'<p class="form-note warn">'.__('Warning: Trackbacks are not accepted on this blog.').'</p>'),
+				'post_password' =>
+					'<p><label for="post_password">'.__('Password:').
+					form::field('post_password',10,32,html::escapeHTML($post_password),'maximal').
+					'</label></p>',
+				'post_url' =>
+					'<div class="lockable">'.
+					'<p><label for="post_url">'.__('Edit basename:').
+					form::field('post_url',10,255,html::escapeHTML($post_url),'maximal').
+					'</label></p>'.
+					'<p class="form-note warn">'.
+					__('Warning: If you set the URL manually, it may conflict with another entry.').
+					'</p></div>'
+	))));
+	$core->callBehavior('adminPostFormSidebarItems',$post_sidebar, isset($post) ? $post : null);
+	foreach ($post_sidebar as $id => $c) {
+		echo '<div id="'.$id.'" class="box">'.
+			'<h4>'.$c['title'].'</h4>';
+		foreach ($c['items'] as $e_name=>$e_content) {
+			echo $e_content;
+		}
+		echo '</div>';
+	}
+	
 	
 	# --BEHAVIOR-- adminPostFormSidebar
 	$core->callBehavior('adminPostFormSidebar',isset($post) ? $post : null);
-	
 	echo '</div>';		// End #entry-sidebar
 
@@ -526,8 +559,8 @@
 	if ($can_edit_post && $core->auth->check('publish,contentadmin',$core->blog->id))
 	{
-		$combo_action[__('publish')] = 'publish';
-		$combo_action[__('unpublish')] = 'unpublish';
-		$combo_action[__('mark as pending')] = 'pending';
-		$combo_action[__('mark as junk')] = 'junk';
+		$combo_action[__('Publish')] = 'publish';
+		$combo_action[__('Unpublish')] = 'unpublish';
+		$combo_action[__('Mark as pending')] = 'pending';
+		$combo_action[__('Mark as junk')] = 'junk';
 	}
 	
Index: admin/posts.php
===================================================================
--- admin/posts.php	(revision 1179)
+++ admin/posts.php	(revision 1358)
@@ -77,6 +77,6 @@
 	$selected_combo = array(
 	'-' => '',
-	__('selected') => '1',
-	__('not selected') => '0'
+	__('Selected') => '1',
+	__('Not selected') => '0'
 	);
 	
@@ -245,10 +245,15 @@
 }
 
-dcPage::open(__('Entries'),$starting_script);
+dcPage::open(__('Entries'),$starting_script,
+	dcPage::breadcrumb(
+		array(
+			html::escapeHTML($core->blog->name) => '',
+			'<span class="page-title">'.__('Entries').'</span>' => ''
+		))
+);
 
 if (!$core->error->flag())
 {
-	echo 
-	'<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <span class="page-title">'.__('Entries').'</span></h2>'.
+	echo
 	'<p class="top-add"><a class="button add" href="post.php">'.__('New entry').'</a></p>';
 	
Index: admin/posts_actions.php
===================================================================
--- admin/posts_actions.php	(revision 1389)
+++ admin/posts_actions.php	(revision 1179)
@@ -16,5 +16,4 @@
 
 $params = array();
-$action = '';
 
 /* Actions
@@ -247,22 +246,15 @@
 	echo '<h2 class="page-title">'.__('Change category for entries').'</h2>';
 	
+	# categories list
 	# Getting categories
-	$categories_combo = array(__('(No cat)') => '');
+	$categories_combo = array('&nbsp;' => '');
 	try {
 		$categories = $core->blog->getCategories(array('post_type'=>'post'));
-		if (!$categories->isEmpty()) {
-			$l = $categories->level;
-			$full_name = array($categories->cat_title);
-
-			while ($categories->fetch()) {
-				if ($categories->level < $l) {
-					$full_name = array();
-				} elseif ($categories->level == $l) {
-					array_pop($full_name);
-				}
-				$full_name[] = html::escapeHTML($categories->cat_title);
-				$categories_combo[implode(' / ',$full_name)] = $categories->cat_id;
-				$l = $categories->level;
-			}
+		while ($categories->fetch()) {
+			$categories_combo[] = new formSelectOption(
+				str_repeat('&nbsp;&nbsp;',$categories->level-1).
+				($categories->level-1 == 0 ? '' : '&bull; ').html::escapeHTML($categories->cat_title),
+				$categories->cat_id
+			);
 		}
 	} catch (Exception $e) { }
Index: admin/preferences.php
===================================================================
--- admin/preferences.php	(revision 1375)
+++ admin/preferences.php	(revision 1358)
@@ -344,22 +344,15 @@
 	($user_acc_nodragdrop ? '' : dcPage::jsLoad('js/_preferences-dragdrop.js')).
 	dcPage::jsLoad('js/jquery/jquery-ui.custom.js').
-	dcPage::jsLoad('js/jquery/jquery.pwstrength.js').
-		'<script type="text/javascript">'."\n".
-		"//<![CDATA[\n".
-		"\$(function() {\n".
-		"	\$('#new_pwd').pwstrength({texts: ['".
-				sprintf(__('Password strength: %s'),__('very weak'))."', '".
-				sprintf(__('Password strength: %s'),__('weak'))."', '".
-				sprintf(__('Password strength: %s'),__('mediocre'))."', '".
-				sprintf(__('Password strength: %s'),__('strong'))."', '".
-				sprintf(__('Password strength: %s'),__('very strong'))."']});\n".
-		"});\n".
-		"\n//]]>\n".
-		"</script>\n".
 	dcPage::jsPageTabs($default_tab).
 	dcPage::jsConfirmClose('user-form').
 	
 	# --BEHAVIOR-- adminPreferencesHeaders
-	$core->callBehavior('adminPreferencesHeaders')
+	$core->callBehavior('adminPreferencesHeaders'),
+
+	dcPage::breadcrumb(
+	array(
+		html::escapeHTML($core->auth->userID()) => '',
+		'<span class="page-title">'.$page_title.'</span>' => ''
+	))
 );
 
@@ -382,6 +375,4 @@
 	dcPage::message(__('Default favorites have been successfully updated.'));
 }
-
-echo '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <span class="page-title">'.$page_title.'</span></h2>';
 
 # User profile
@@ -429,20 +420,14 @@
 	'<legend>'.__('Change your password').'</legend>'.
 	
-	'<div class="pw-table">'.
-	'<p class="pw-cell"><label for="new_pwd">'.__('New password:').'</label>'.
-	form::password('new_pwd',20,255,'','','',false,' data-indicator="pwindicator" ').'</p>'.
-    '<div id="pwindicator">'.
-    '    <div class="bar"></div>'.
-    '    <p class="label no-margin"></p>'.
-    '</div>'.
-    '</div>'.
+	'<p><label for="new_pwd">'.__('New password:').
+	form::password('new_pwd',20,255).'</label></p>'.
 	
-	'<p><label for="new_pwd_c">'.__('Confirm password:').'</label>'.
-	form::password('new_pwd_c',20,255).'</p>'.
+	'<p><label for="new_pwd_c">'.__('Confirm password:').
+	form::password('new_pwd_c',20,255).'</label></p>'.
 	'</fieldset>'.
 	
 	'<p>'.__('If you have changed this user email or password you must provide your current password to save these modifications.').'</p>'.
-	'<p><label for="cur_pwd">'.__('Your password:').'</label>'.
-	form::password('cur_pwd',20,255).'</p>';
+	'<p><label for="cur_pwd">'.__('Your password:').
+	form::password('cur_pwd',20,255).'</label></p>';
 }
 
Index: admin/search.php
===================================================================
--- admin/search.php	(revision 1276)
+++ admin/search.php	(revision 1358)
@@ -70,13 +70,18 @@
 
 
-dcPage::open(__('Search'),$starting_scripts);
+dcPage::open(__('Search'),$starting_scripts,
+	dcPage::breadcrumb(
+		array(
+			html::escapeHTML($core->blog->name) => '',
+			'<span class="page-title">'.__('Search').'</span>' => ''
+		))
+);
 
 echo
-'<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <span class="page-title">'.__('Search').'</span></h2>'.
 '<form action="search.php" method="get">'.
 '<div class="fieldset"><h3>'.__('Search options').'</h3>'.
 '<p><label for="q">'.__('Query:').' </label>'.form::field('q',30,255,html::escapeHTML($q)).'</p>'.
-'<p><label for="qtype1" class="classic">'.form::radio(array('qtype','qtype1'),'p',$qtype == 'p').' '.__('Search entries').'</label> '.
-'<label for="qtype2" class="classic">'.form::radio(array('qtype','qtype2'),'c',$qtype == 'c').' '.__('Search comments').'</label></p>'.
+'<p><label for="qtype1" class="classic">'.form::radio(array('qtype','qtype1'),'p',$qtype == 'p').' '.__('Search in entries').'</label> '.
+'<label for="qtype2" class="classic">'.form::radio(array('qtype','qtype2'),'c',$qtype == 'c').' '.__('Search in comments').'</label></p>'.
 '<p><input type="submit" value="'.__('Search').'" /></p>'.
 '</div>'.
Index: admin/style/date-picker.css
===================================================================
--- admin/style/date-picker.css	(revision 0)
+++ admin/style/date-picker.css	(revision 1330)
@@ -1,35 +1,35 @@
 .date-picker {
-	border-collapse : collapse;
-	background : #fff;
-	color : #fff;
+	border-collapse: collapse;
+	background: #fff;
+	color: #fff;
 	border: 1px solid #666;
-	border-width : 1px 2px 2px 1px;
+	border-width: 1px 2px 2px 1px;
 }
 .date-picker th {
-	border : none;
-	color : #000;
-	text-align : center;
+	border: none;
+	color: #000;
+	text-align: center;
 }
 .date-picker td {
-	border : 1px solid #666;
-	text-align : center;
+	border: 1px solid #666;
+	text-align: center;
 	padding : 4px 6px;
 }
 th.date-picker-month {
-	text-align : left;
+	text-align: left;
 }
 th.date-picker-year {
-	text-align : right;
+	text-align: right;
 }
 .date-picker-control, th.date-picker-control {
-	color : #06c;
-	cursor : pointer;
+	color: #06c;
+	cursor: pointer;
 }
 .date-picker-day, .date-picker-today {
-	color : #000;
-	background : #eee;
-	cursor : pointer;
+	color: #000;
+	background: #eee;
+	cursor: pointer;
 }
 .date-picker-today {
-	background : #ccc;
+	background: #ccc;
 }
Index: admin/style/default.css
===================================================================
--- admin/style/default.css	(revision 1375)
+++ admin/style/default.css	(revision 1383)
@@ -13,13 +13,13 @@
 
 /* ------------------------------------------------------------------ html */
+html {
+	font-size: 62.5%;
+}
 body {
-	font: 75%/1.5em Helvetica,Arial,sans-serif;
+	font: 1.2rem/1.5 Arial,Helvetica,sans-serif;
 	color: #333;
-	background: #f5f5f5;
-	margin: 0;
-	padding: 0;
-}
-body.auth {
 	background: #fff;
+	margin: 0;
+	padding: 0;
 }
 
@@ -36,19 +36,37 @@
 }
 
-h1, h2, h3, h4, h5, h6, p {
+h1, h2, h3, .as_h3, h4, h5, h6, p {
 	margin-top: 0;
-	margin-bottom: 0.6em;
+	margin-bottom: 1rem;
 }
 h2 {
 	color: #666;
-	font-size: 1.4em;
-	padding: 4px 0;
+	font-size: 1.8rem;
+	padding: 0 0 1.8rem;
+	font-weight: normal;
+}
+h2 a:link, h2 a:visited {
+	color: #666;
+	border-color: #000;
 }
 .page-title {
 	color: #d30e60;
 }
-h3 {
-	color: #333;
-	font-size: 1.2em;
+#content > h2 {
+	padding: 0 1.8rem .6rem;
+	margin: 0 -1.8rem 1rem;
+	background: #fff url(bg_h2.png) repeat-x center bottom;
+}
+h3, .as_h3 {
+	color: #575859;
+	font-size: 1.4rem;
+}
+h4 {
+	font-size: 1.1em;
+	color: #575859;
+}
+h5 {
+	font-size: 1em;
+	color: #575859;
 }
 p, div.p {
@@ -57,5 +75,5 @@
 hr {
 	height: 1px;
-	border-width: 1px 0 0 0;
+	border-width: 1px 0 0;
 	border-color: #999;
 	border-style: solid;
@@ -83,29 +101,34 @@
 #header {
 	background: #575859;
-	height: 3em;
 	position: relative;
+	border-bottom: 4px solid #A2CBE9;
+	width: 100%;
 }
 #prelude {
-	background: #575859;
-	line-height: 1.5em;
-	margin: 0;
-	padding: 0 1.7em 0 1em;
+	line-height: 1.9;
+	margin: 0;
+	padding: 0;
 	overflow: hidden;
 	position: absolute;
-	top: 1.2em;
+	top: 3em;
 	left: 0;
+	background: #A2CBE9;
+	width: 14.5em;
 	}
 #prelude li {
 	list-style-type: none;
-	margin: 0 1em 0 0;
+	margin: 0;
 	background:transparent;
-	}
+}
 #prelude li a {
-	color:#fff;
-	}
+	padding-left: 1.6rem;
+	background: #A2CBE9;
+	color: #000;
+	border-bottom-color: #A2CBE9;
+}
 #top {
 	margin: 0;
 	padding: 0;
-	width: 13em;
+	width: 14.5em;
 	float: left;
 }
@@ -113,38 +136,38 @@
 	padding: 0;
 	margin: 0;
-	height: 3em;
+	height: 3.6rem;
 	text-indent: -1000px;
-	background: transparent url(dc_logo.png) no-repeat 0 50%;
 }
 #top h1 a {
 	position: absolute;
-	top: 3px;
+	top: 0;
 	left: 0;
-	width: 130px;
-	height: 60px;
+	width: 17.4rem;
+	height: 3.6rem;
 	border: none;
-	outline: none;
 	color: #fff;
 }
+#top h1 a:link {
+	background: transparent url(dc_logos/b-dotclear120.png) no-repeat 0 6px;
+}
+#top h1 a:hover, #top h1 a:focus {
+	background: transparent url(dc_logos/b-dotclear120.png) no-repeat 0 -94px;	
+}
 #info-boxes {
-	background: #575859;
-	font-size: .95em;
-	height: 3em;
+	font-size: 1em;
+	line-height: 3em;
 }
 #info-box1 {
 	margin: 0;
-	padding: .5em 3px 4px 0;
+	padding: 0 3px 0 1.8rem;
 	color: #fff;
-	float: left;
-	background: #575859;
+	display: inline-block;
 }
 #info-box2 {
-	margin: .1em 0 0 0;
-	padding: .5em 1.3em 4px 0;
+	margin: 0;
+	padding: 0 1.3em 0 0;
 	color: #fff;
 	float: right;
 	text-align: right;
-	background: #575859;
-	height: 2em;
 }
 #info-box1 p {
@@ -153,5 +176,5 @@
 }
 #info-box1 select {
-	width: 15em;
+	width: 14.5em;
 }
 #info-box1 a img, #info-box2 a img {
@@ -159,6 +182,5 @@
 	padding-left: .3em;
 	}
-#info-box1 a, #info-box2 a {
-	background: #575859;
+#info-boxes a {
 	font-weight: bold;
 	color: #fff;
@@ -173,15 +195,15 @@
 }
 #info-box2 a.active {
-	border-bottom-color: #f5f5f5;
+	border-bottom-color: #fff;
 	margin: 0;
 	padding: 1.2em .5em;
-	background-color: #f5f5f5;
+	background-color: #fff;
 	color: #333;
 	font-weight: bold;
 }
 #info-box2 span {
-	color: #575859;
-}
-/* prelude */
+	color: #999;
+}
+/* main blocks */
 #wrapper {
 	width: 100%;
@@ -190,13 +212,12 @@
 	width: 100%;
 	float: right;
-	margin-left: -13em;
+	margin-left: -14.5em;
 	margin-top: 0;
+	background: #fff url(bg_menu.png);
 }
 #content {
-	margin: 1.5em 1.5em .5em 13em;
-	padding: 1em;
+	margin: 0 0 0 14.5em;
+	padding: .9rem 1.8rem 1.8rem;
 	background: #fff;
-	border-radius: .5em;
-	border: 1px solid #ddd;
 }
 	/* Micro clearfix thx to Nicolas Gallagher */
@@ -239,6 +260,6 @@
 /* -------------------------------------------------------------- layout - onglets */
 .part-tabs ul {
-	padding: .3em 0 1px 1em;
-	border-bottom: 1px solid #999;
+	padding: .5em 0 .3em 1rem;
+	border-bottom: 1px solid #ccc;
 }
 .part-tabs li {
@@ -248,16 +269,12 @@
 }
 .part-tabs li a {
-	padding: .3em 0.5em;
+	padding: .5em 1em;
 	margin-right: .5em;
-	border: 1px solid #999;
+	border: 1px solid #ccc;
 	border-bottom: none;
-	background: #dfdfdf;
+	background: #efefef;
 	text-decoration: none;
-	border-top-left-radius: .3em;
-	border-top-right-radius: .3em;
 	color: #000;
-}
-.part-tabs li.part-tabs-link a {
-	background: #ffe;
+	background-color:#ededed;
 }
 .part-tabs li a:hover, .part-tabs li a:focus {
@@ -268,25 +285,30 @@
 .part-tabs li.part-tabs-active a {
 	background: #fff;
-	border-bottom: 1px solid #fff;
-	color: #000;
+	border: 1px solid #d30e60;
+	color: #d30e60;
 	font-weight: bold;
+	border-bottom-color: #fff;
 }
 /* ------------------------------------------------------------------ main-menu */
 #main-menu {
-	width: 13em;
+	width: 14.5em;
 	float: left;
-	margin-top: 1.2em;
-	margin-bottom: .5em;
+	margin:0;
+	padding-top: .5em;
+	padding-bottom: 1em;
+	background: #f7f7f7;
 }
 #main-menu h3 {
-	margin: 0 0 0.5em;
-	padding: .5em 0 0 .5em;
-	text-transform: uppercase;
+	margin: 0;
+	padding: 1.2rem 0 1rem 2.2rem;
+	text-indent: -1.6rem;
 	color: #666;
-	font-size: 1.1em;
+	font-size: 1.4rem;
+}
+#main-menu h3 img[alt="cacher"] {
+	vertical-align: top;
 }
 #main-menu ul {
-	font-size: .95em;
-	margin: 0 0 1em 0;
+	margin: 0 0 1.8rem 0;
 	padding: 0;
 	list-style: none;
@@ -295,57 +317,86 @@
 	display: block;
 	margin: 0.5em 0 0;
-	padding: .2em 0 0 32px;
+	padding: .3rem 0 0 30px;
 	background-repeat: no-repeat;
-	background-position: 12px .4em;
+	background-position: 8px .3em;
+}
+#main-menu li.active {
+	background-color: #fff;
 }
 #main-menu a {
-	font-weight: bold;
+	color: #333;
+	border-bottom-color: #ccc;
 }
 #main-menu .active a {
 	border-bottom: none;
-	color: #333;
+	color: #d30e60;
 }
 #main-menu .active {
-	background-color: #fff;
-	padding: .4em 0 .1em 32px;
-	background-position: 12px .4em;
-	border-top: 1px solid #ddd;
-	border-bottom: 1px solid #ddd;
-	margin-right: -1px;
-}
-#favorites-menu {
-	margin: 0 0 2em;
+	font-weight: bolder;
+}
+#search-menu {
+	padding: .3rem .4rem 0;
+	font-size: 100%
+}
+#search-menu p {
+	display: inline-block;
+	border: 1px solid #999;
+	border-radius: .6em;
+	position: relative;
+	height: 2rem;
+	overflow: hidden;
+}
+#search-menu #q {
+	width: 12rem;
+	border-bottom-left-radius: .6em;
+	border-top-left-radius: .6em;
+	background: transparent url(search.png) no-repeat 4px center;
+	text-indent: 18px;
+	height: 2rem;
+	padding: 0 2px; 
+	border: none;
+}
+#search-menu input[type="submit"] {
+	padding: 0 0.3rem;
+	background: #dfdfdf;
+	border-color: #999;
+	color: #666;
+	border-bottom-right-radius: .6em;
+	border-top-right-radius: .6em;
+	border-top-left-radius: 0;
+	border-bottom-left-radius: 0;
+	text-shadow: none;
+	height: 2rem;
+	border: none;
+	border-left: 1px solid #aaa;
+	font-size: 1rem;
+}
+#search-menu input[type="submit"]:hover,
+#search-menu input[type="submit"]:focus {
+	background: #575859;
+	color: #fff;
+}
+#favorites-menu, #blog-menu, #system-menu, #plugins-menu {
+	border-bottom: 1px dashed #A2CBE9;
 }
 #favorites-menu h3 {
-	color: #333;
-	text-transform: none;
-}
-#favorites-menu a {
-	color: #333;
-}
-#favorites-menu .active {
-	background-color: transparent;
-	border: none;
-}
-#favorites-menu .active a {
-	font-weight: bold;
-	color: #666;
+	color: #000;
+	font-variant: small-caps;
+	padding-top: .6rem;
 }
 /* ------------------------------------------------------------------ footer */
 #footer {
 	clear: both;
-	padding: .75em .75em 0 0;
+	padding: .6rem 1.2rem .6rem 0;
 	text-align: right;
+	border-top: .1rem solid #ccc;
 }
 #footer p {
 	margin: 0;
 	padding: 0 1em;
-	text-align: center;
-	font-size: 1.1em;
-}
-#footer a {
+	font-size: 1em;
 }
 #footer p span.credit {
-	font-size: .85em;
+	font-size: 1rem;
 	font-weight: normal;
 }
@@ -355,17 +406,21 @@
 	width: 18em;
 	margin: 1.5em auto 0;
-	font-size: 1.1em;
+	font-size: 1.4rem;
 }
 #login-screen h1 {
 	text-indent: -2000px;
-	background: transparent url(dotclear-logo2.png) no-repeat top left;
-	height: 50px;
+	background: transparent url(dc_logos/w-dotclear240.png) no-repeat top left;
+	height: 66px;
 	margin-bottom: .5em;
-	margin-left: .5em;
+	margin-left: 0;
 }
 #login-screen fieldset, #login-screen .fieldset {
-	border: 1px solid #999;
+	border: 1px solid #A8DC26;
 	padding: 1em 1em 0 1em;
 	border-radius: 4px;
+	background: #fff;
+}
+#login-screen legend {
+	border: 1px solid #A8DC26;
 }
 #login-screen input[type=text], #login-screen input[type=password], #login-screen input[type=submit] {
@@ -373,6 +428,6 @@
 }
 #login-screen #issue {
-	margin-left: 1em;
-	font-size: 1em;
+	margin-left: 1.5rem;
+	font-size: 1.2rem;
 }
 #login-screen #issue strong {font-weight: normal;}
@@ -381,13 +436,5 @@
 /* ------------------------------------------------------------------ dashboard */
 #dashboard-main {
-	float: left;
-	overflow: hidden;
-	padding: 1em 2% 1em 0;
-	width: 70%;
-}
-#dashboard-main.fullwidth {
-	width: 100%;
 	padding: 1em 0;
-	float: none;
 }
 #icons {
@@ -399,6 +446,8 @@
 	width: 210px;
 	text-align: center;
-	margin: 2em 0 0 0;
+	margin: 1em 0;
+	padding: 1em 0;
 	display:inline-block;
+	vertical-align: top;
 }
 #icons a,
@@ -413,9 +462,17 @@
 	border-bottom: 1px dotted #f90;
 }
+#icons a img {
+	padding: 2em;
+	background: #eee;
+	border-radius: 1.6rem;
+	box-shadow: 0 3px 3px 0 #ccc;
+}
+#icons a img:hover, #icons a:focus img {
+	background-color: #BBDB58;
+}
 #icons a:focus span, #icons a:hover span {
 	text-decoration: underline;
 }
 #quick {
-	clear: left;
 	margin-top: 2em;
 }
@@ -432,9 +489,13 @@
 }
 #dashboard-items {
-	float: left;
-	width: 27%;
-	overflow: hidden;
-	padding-bottom: 1em;
-	padding-top: 3em;
+	margin: 3em auto;
+	display: table;
+	border-collapse: collapse;
+}
+.db-item {
+	display: table-cell;
+	padding: 1em 3em;
+	vertical-align: top;
+	border: 1px solid #ccc;
 }
 #dashboard-items img {
@@ -476,9 +537,19 @@
 }
 #entry-content {
-	margin-right: 18em;
+	margin-right: 19em;
+	margin-left: 1.2rem;
+}
+#entry-content label {
+	text-transform: uppercase;
+	font-weight: bold;
+	margin-top: 2em;
 }
 #entry-sidebar {
 	width: 17em;
 	float: right;
+}
+.box {
+	border-bottom: 2px solid #A2CBE9;
+	margin-bottom: 1em;
 }
 #comments {
@@ -776,22 +847,21 @@
 /* ------------------------------------------------------------------ contextual help */
 #help {
-	margin-top: 2em;
+	margin-top: 4em;
 	background: #f5f5f5;
 	z-index: 100;
 }
 #help-button {
-	position: fixed;
-	top: 3.2em;
+	background: transparent url(../images/page_help.png) no-repeat 6px center;
+	position: absolute;
+	top: 3.6rem;
 	right: 0px;
+	padding: 0 2rem 0 3rem;
 	cursor: pointer;
-	background: #fc3;
-	border: 1px solid #dde;
-	border-right: none;
-	font-size: 1.1em;
-	font-weight: bold;
-	text-transform: capitalize;
-	padding: .33em .75em .33em 1em;
-	border-radius: 1em 0 0 1em;
-	color: #444;
+	color: #2373A8;
+	line-height: 4.2rem;
+}
+#help-button span {
+	padding: .6rem 0 .1rem 0;
+	border-bottom: 1px solid #2373A8;
 }
 .help-box {
@@ -803,13 +873,21 @@
 }
 #content.with-help #help-button {
-	right: 282px;
+	right: 28.2rem;
+	background-color: #f5f5f5;
+	position: fixed;
+	border-top: 2px solid #FFD478;
+	border-left: 2px solid #FFD478;
+	border-bottom: 2px solid #FFD478;
+	border-bottom-left-radius: 1rem;
+	border-top-left-radius: 1rem;
 }
 #content.with-help #help {
 	display: block;
 	position: absolute;
-	top: 40px;
+	top: 3.6rem;
 	right: 0;
-	width: 280px;
-	border-left: 2px solid #fc3;
+	width: 28rem;
+	border-left: 2px solid #FFD478;
+	border-top: 2px solid #FFD478;
 	margin-top: 0;
 	padding: 10px 0 0 0;
@@ -829,23 +907,33 @@
 /* ------------------------------------------------------------------ popups */
 body.popup #wrapper, body.popup #top {
-	margin-top: -1.5em;
+	width: 100%;
+	padding: 0;
+}
+body.popup #wrapper {
 	float: none;
-}
-body.popup #top h1 {
-	background: transparent;
+	margin:0;
+	display: block;
+}
+body.popup h1, body.popup #top {
+	margin: 0;
+	border-bottom: 1px solid;
+	font-weight: normal;
+	color: #fff;
+	background: #575859;
+	font-size: 1.5em;
+	text-indent: .6rem;
+	line-height: 1.3em;
 }
 body.popup #main {
-	margin-left: -35px;
-	margin-bottom: 1em;
+	margin-bottom: 1em 0;
 }
 body.popup #content {
-	margin-left: 35px;
-	margin-left: 2em;  /* 3.2 */
-}
-body.popup #footer {
-	display: none; /* 3.2 */
+	margin: 0;
+	padding: .6rem 0 !important;
+}
+body.popup #content h2 {
+	margin: 0 0 1em;
 }
 body.popup #footer p {
-	margin-left: 35px;
 	border: none;
 }
@@ -859,6 +947,6 @@
 }
 p.error, p.message, p.static-msg {
-	padding-top: 1em;
-	padding-bottom: 1em;
+	padding-top: 1rem;
+	padding-bottom: 1rem;
 }
 div.error, p.error {
@@ -875,4 +963,27 @@
 	color: #fff;
 }
+#content > .message, #content > .error {
+	margin-right: 14em
+}
+/* ------------------------------------------------------------------ navigation */
+.anchor-nav {
+	background: #575859;
+	color: #fff;
+	padding: .4rem 1.2rem;
+	float: right;
+}
+.nav_prevnext {
+	margin-bottom: 2em;
+	color: #ccc;
+}
+.nav_prevnext a, a.back {
+	border: 1px solid #ccc;
+	padding: .2rem .5rem;
+	background-color: #eef;
+}
+a.back:before {
+	content: "\ab\a0";
+}
+
 /* ------------------------------------------------------------------ debug */
 #debug {
@@ -898,6 +1009,11 @@
 /* -------------------------------------------------------------------- CLASSES COMMUNES */
 
-.no-margin {
-	margin: 0;
+.no-margin, #entry-content label.no-margin {
+	margin: 0;
+}
+.border-top {
+	border-top: 1px solid #999;
+	padding-top: 1em;
+	margin-top:	1em;
 }
 /* paragraphe pour bouton Nouveau bidule */
@@ -991,14 +1107,13 @@
 -------------------------------------------------------- */
 table {
-	font-size: 1em;
+	font-size: 1.2rem;
 	border-collapse: collapse;
 	margin: 0 0 1em 0;
 }
 tr.line:hover {
-	background: #ddd;
+	background: #f3f3f3;
 }
 caption {
 	color: #333;
-	font-size: 1.2em;
 	font-weight: bold;
 	text-align: left;
@@ -1009,11 +1124,11 @@
 	border-width: 0 0 1px 0;
 	border-style: solid;
-	border-color: #ccc;
-	padding: 3px 5px;
+	border-color: #e3e3e3;
+	padding: .4rem .5rem;
 	vertical-align: top;
 }
 th {
 	text-align: left;
-	border-bottom-color: #666;
+	border-bottom-color: #aaa;
 }
 .noborder td, td.noborder, .noborder th, th.noborder {
@@ -1032,4 +1147,9 @@
 table.settings, table.prefs {
 	width: 80%;
+	border: 1px solid #999;
+	margin-bottom: 3em; 
+}
+table.settings th, table.prefs th {
+	background: #eef;
 }
 table.settings th:first-child, table.prefs th:first-child {
@@ -1045,5 +1165,4 @@
 	width: 40%;
 }
-
 td.status {
 	vertical-align: middle;
@@ -1084,5 +1203,4 @@
 	padding-left: 15px;
 }
-
 /* ----------------------------------------------------------------- FORMS */
 form {
@@ -1100,4 +1218,7 @@
 	background: #f5f5f5;
 }
+.fieldset {
+	background: #eef;
+}
 legend {
 	font-weight: bold;
@@ -1106,5 +1227,5 @@
 	border-style: solid;
 	border-color: #ccc;
-	background: #f5f5f5;
+	background: #eef;
 	margin-bottom: 0.5em;
 }
@@ -1121,5 +1242,5 @@
 	border-width: 1px;
 	border-style: solid;
-	border-color: #000 #ccc #ccc #000;
+	border-color: #666 #ccc #ccc #999;
 }
 input.invalid, textarea.invalid, select.invalid {
@@ -1130,5 +1251,5 @@
 }
 input, textarea, select, option {
-	font: 1em "DejaVu Sans","Lucida Grande","Lucida Sans Unicode",Arial,sans-serif;
+	font: 100% "DejaVu Sans","Lucida Grande","Lucida Sans Unicode",Arial,sans-serif;
 }
 input[type=text], input[type=password], textarea {
@@ -1136,12 +1257,9 @@
 	margin-right: .3em;
 }
-input[type=checkbox], input[type=radio] {
-	border: none;
-}
 textarea {
 	padding: 2px 0;
 }
-
-input[type=checkbox], input[type=radio] {
+input[type=checkbox], input[type=radio], input[type=file] {
+	border: none;
 	margin: 0;
 	padding: 0;
@@ -1162,4 +1280,5 @@
 	font-style:italic;
 	font-weight: normal;
+	text-transform: none;
 	color: #666;
 }
@@ -1214,5 +1333,5 @@
 	display: inline;
 	position: absolute;
-	left: 15em;
+	left: 14.5em;
 	top: 0;
 }
@@ -1239,10 +1358,4 @@
 
 /* --------------------------------------------------------------- buttons */
-h2 a.button {
-	color: #333;
-	font-weight: normal;
-	font-size: .75em;
-	vertical-align: middle;
-}
 /* commun */
 input[type=submit],
@@ -1250,5 +1363,4 @@
 input[type=button],
 a.button,
-a.back,
 a.submit {
 	display: inline-block;
@@ -1257,9 +1369,11 @@
 	text-align: center;
 	text-decoration: none;
-	padding: .1em .5em 0 .5em;
+	padding: .1em .5em;
 	text-shadow: 0 1px 1px rgba(0,0,0,.3);
 	border-radius: .2em;
 	margin-bottom: .1em;
 }
+h4 a.button {font-weight: normal;}
+
 /* validation */
 input[type=submit],
@@ -1286,5 +1400,4 @@
 /* suppression et reset */
 a.button,
-a.back,
 input[type=submit].reset,
 input[type=submit].delete {
@@ -1297,10 +1410,8 @@
 	}
 a.button:hover,
-a.back:hover,
 input[type=reset]:hover,
 input[type=submit].reset:hover,
 input[type=submit].delete:hover,
 a.button:focus,
-a.back:focus,
 input[type=reset]:focus,
 input[type=submit].reset:focus,
@@ -1336,17 +1447,25 @@
 	margin-left: 2em;
 }
-a.back:before {
-	content: "\ab\a0";
-}
-a.button.add {
-	border-radius: .5em;
-	margin-bottom: .1em;	
-	background: #2C8FD1 url(../images/add.png) no-repeat 6px center;
-	color: #fff;
-	padding: .2em 16px .2em 30px;
-	border: 1px solid #2373A8;
-}
-a.button.add:hover, a.button.add:focus {
-	background-color: #2373A8;
+.button.add {
+	background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #9dce2c), color-stop(1, #8cb82b) );
+	background:-moz-linear-gradient( center top, #9dce2c 5%, #8cb82b 100% );
+	filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#9dce2c', endColorstr='#8cb82b');
+	background-color:#9dce2c;
+	border:1px solid #83c41a;
+	padding:.6rem 1.8rem;
+	color: #000;
+	text-shadow: 1px 1px 0 #BBDB58;
+	font-weight: normal;
+	font-size: 1.4rem;
+}
+.button.add:hover, .button.add:focus {
+	background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #8cb82b), color-stop(1, #9dce2c) );
+	background:-moz-linear-gradient( center top, #8cb82b 5%, #9dce2c 100% );
+	filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8cb82b', endColorstr='#9dce2c');
+	background-color:#8cb82b;
+	border:1px solid #83c41a;
+}
+.button-add:focus {
+	outline: dotted 1px;
 }
 
@@ -1384,41 +1503,56 @@
 }
 
-/* --------------------------------------------------------------- password indcator */
-.pw-table {
-	display: table;
-	margin-bottom: 1em;
-}
-.pw-cell {
-	display: table-cell;
-	margin-bottom: 1em;
-}
-#pwindicator {
-	display: table-cell;
-	vertical-align: bottom;
-	padding-left: 1.5em;
-	height: 3.8em;
-}
-#pwindicator .bar {
-	height: 6px;
-	margin-bottom: 4px;
-}
-.pw-very-weak .bar {
-	background: #900;
-	width: 30px;
-}
-.pw-weak .bar {
-	background: #c00;
-	width: 60px;
-}
-.pw-mediocre .bar {
-	background: #f60;
-	width: 90px;
-}
-.pw-strong .bar {
-	background: #060;
-	width: 120px;
-}
-.pw-very-strong .bar {
-	background: #0c0;
-	width: 150px;
-}
+/* ---------------------------------------------------------------------------
+	Media queries vite fait en attendant la reprise complète du layout
+---------------------------------------------------------------------------- */
+@media screen and (max-width: 920px) {
+	#top, #top h1 a {width: 42px !important; height:100%; overflow: hidden;
+}
+	#top h1 a:link {
+		background: transparent url(dc_logos/b-dotclear120.png) no-repeat -180px 6px; 
+		border-right: 1px solid #ccc;
+	}
+	#top h1 a:hover, #top h1 a:focus {
+		background: url(dc_logos/b-dotclear120.png) no-repeat -180px -94px;
+		border-right: 1px solid #A2CBE9;
+	}
+}
+@media screen and (max-width: 800px) {
+	#top, #info-boxes, #info-box1, #info-box2 {
+		display:inline-block;
+		vertical-align:middle;
+		margin:0;
+		padding:0;
+		line-height: 3.2rem;
+	}
+	#info-box1 {margin-left: 1rem;}
+	#info-box1 select {width: 14rem;}
+	#main-menu, #main, #content, #content h2, #entry-wrapper, #entry-sidebar, #entry-content, .two-cols .col, .two-cols .col:first-child {
+    	display:block;
+    	width: 98%;
+    	margin:0 auto;
+    	padding:0;
+    	float:none;
+    	text-align: left;
+    	clear: both;
+  	}
+  	#content {
+  		width: 100%;
+  		padding-top: .5em;
+  	}
+}
+@media screen and (max-width: 720px) {
+	.smallscreen {display: none;}
+	#help-button {width:20px; overflow: hidden;}
+	#info-box2 {float:none;}
+	#dashboard-items div {display: block;margin-bottom: 1em; padding: 0 1em;}
+}
+@media screen and (max-width: 492px) {
+	#header {height:3.6rem;}
+	#wrapper {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 p.nomobile, label.nomobile {display: none;}
+	#help-button {height:26px; width:26px; background-color: #A2CBE9; padding: 0; margin:0;font-size: 1rem;line-height: 68px}
+}
Index: admin/style/install.css
===================================================================
--- admin/style/install.css	(revision 1065)
+++ admin/style/install.css	(revision 1330)
@@ -6,9 +6,13 @@
 	Please see http://dotclear.net/ for more details.
 */
+html {
+	font-size: 62.5%;
+}
 body.install {
-	font: 0.875em Helvetica,Arial,sans-serif;
-	color: #000;
-	background-color: #fff;
-	line-height: 1.5em;
+	font: 1.2rem/1.5 Arial,Helvetica,sans-serif;
+	color: #333;
+	background: #fff;
+	margin: 0;
+	padding: 0;
 }
 body.install #content {
@@ -22,5 +26,5 @@
 }
 body.install h1,h2 {
-	font-family: Helvetica,arial,sans-serif;
+	font-family: arial,Helvetica,sans-serif;
 }
 body.install h1 {
Index: admin/style/jsUpload/style.css
===================================================================
--- admin/style/jsUpload/style.css	(revision 1209)
+++ admin/style/jsUpload/style.css	(revision 1325)
@@ -76,5 +76,5 @@
 }
 
-.button.clean, .button.cancel, .button.add, .enhanced_uploader .fileupload-buttonbar .button.start {
+.button.clean, .button.cancel, .button.add {
 	display: none;
 }
@@ -170,2 +170,7 @@
 	clear: both;
 }
+
+.queue-message {
+	font-weight: bold;
+	margin: 0 0 1em 16px;
+}
Index: admin/trackbacks.php
===================================================================
--- admin/trackbacks.php	(revision 1179)
+++ admin/trackbacks.php	(revision 1358)
@@ -83,5 +83,15 @@
 /* DISPLAY
 -------------------------------------------------------- */
-dcPage::open($page_title,dcPage::jsLoad('js/_trackbacks.js'));
+if ($can_view_page) {
+	$breadcrumb = dcPage::breadcrumb(
+	array(
+		html::escapeHTML($core->blog->name) => '',
+		html::escapeHTML($post->post_title) => $core->getPostAdminURL($post->post_type,$id),
+		'<span class="page-title">'.$page_title.'</span>' => ''
+	));
+} else {
+	$breadcrumb = '';
+}
+dcPage::open($page_title,dcPage::jsLoad('js/_trackbacks.js'),$breadcrumb);
 
 # Exit if we cannot view page
@@ -94,6 +104,4 @@
 	dcPage::message(__('All pings sent.'));
 }
-
-echo '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <span class="page-title">'.$page_title.'</span></h2>';
 
 echo '<p><a class="back" href="'.$core->getPostAdminURL($post->post_type,$id).'">'.
Index: admin/update.php
===================================================================
--- admin/update.php	(revision 1287)
+++ admin/update.php	(revision 1358)
@@ -27,5 +27,5 @@
 
 $updater = new dcUpdate(DC_UPDATE_URL,'dotclear',DC_UPDATE_VERSION,DC_TPL_CACHE.'/versions');
-$new_v = $updater->check(DC_VERSION, !empty($_GET['nocache']));
+$new_v = $updater->check(DC_VERSION);
 $zip_file = $new_v ? DC_BACKUP_PATH.'/'.basename($updater->getFileURL()) : '';
 $version_info = $new_v ? $updater->getInfoURL() : '';
@@ -168,14 +168,11 @@
 -------------------------------------------------------- */
 dcPage::open(__('Dotclear update'),
-	(!$step ? dcPage::jsPageTabs($default_tab) : '')
+	(!$step ? dcPage::jsPageTabs($default_tab) : ''),
+	dcPage::breadcrumb(
+		array(
+			__('System') => '',
+			'<span class="page-title">'.__('Dotclear update').'</span>' => ''
+		))
 );
-
-if (!$core->error->flag()) {
-	echo '<h2>'.__('Dotclear update').'</h2>';
-	
-	if (!empty($_GET['nocache'])) {
-		dcPage::message(__('Manual checking of update done successfully.'));
-	}
-}
 
 if (!$step)
@@ -184,9 +181,5 @@
 	if (empty($new_v))
 	{
-		echo '<p><strong>'.__('No newer Dotclear version available.').'</strong></p>'.
-		'<form action="'.$p_url.'" method="get">'.
-		'<p><input type="hidden" name="nocache" value="1" />'.
-		'<input type="submit" value="'.__('Force checking update Dotclear').'" /></p>'.
-		'</form>';
+		echo '<p><strong>'.__('No newer Dotclear version available.').'</strong></p>';
 	}
 	else
Index: admin/user.php
===================================================================
--- admin/user.php	(revision 1179)
+++ admin/user.php	(revision 1358)
@@ -15,5 +15,5 @@
 dcPage::checkSuper();
 
-$page_title = __('new user');
+$page_title = __('New user');
 
 $user_id = '';
@@ -174,5 +174,12 @@
 	
 	# --BEHAVIOR-- adminUserHeaders
-	$core->callBehavior('adminUserHeaders')
+	$core->callBehavior('adminUserHeaders'),
+
+	dcPage::breadcrumb(
+		array(
+			__('System') => '',
+			__('Users') => 'users.php',
+			'<span class="page-title">'.$page_title.'</span>' => ''
+		))
 );
 
@@ -184,6 +191,4 @@
 	dcPage::message(__('User has been successfully created.'));
 }
-
-echo '<h2><a href="users.php">'.__('Users').'</a> &rsaquo; <span class="page-title">'.$page_title.'</span></h2>';
 
 if ($user_id == $core->auth->userID()) {
Index: admin/users.php
===================================================================
--- admin/users.php	(revision 1237)
+++ admin/users.php	(revision 1358)
@@ -94,5 +94,11 @@
 }
 
-dcPage::open(__('Users'),$starting_script);
+dcPage::open(__('Users'),$starting_script,
+	dcPage::breadcrumb(
+		array(
+			__('System') => '',
+			'<span class="page-title">'.__('Users').'</span>' => ''
+		))
+);
 
 if (!$core->error->flag())
@@ -105,6 +111,5 @@
 	}
 	
-	echo 
-	'<h2 class="page-title">'.__('Users').'</h2>'.
+	echo
 	'<p class="top-add"><strong><a class="button add" href="user.php">'.__('Create a new user').'</a></strong></p>';
 	
Index: admin/users_actions.php
===================================================================
--- admin/users_actions.php	(revision 1179)
+++ admin/users_actions.php	(revision 1358)
@@ -131,9 +131,26 @@
 /* DISPLAY
 -------------------------------------------------------- */
+if (!empty($users) && empty($blogs) && $action == 'blogs') {
+	$breadcrumb = dcPage::breadcrumb(
+		array(
+			__('System') => '',
+			__('Users') => 'users.php',
+			'<span class="page-title">'.__('Permissions').'</span>' => ''
+		));
+} else {
+	$breadcrumb = dcPage::breadcrumb(
+		array(
+			__('System') => '',
+			__('Users') => 'users.php',
+			'<span class="page-title">'.__('Actions').'</span>' => ''
+		));
+}
+
 dcPage::open(
 	__('Users'),
 	dcPage::jsLoad('js/_users_actions.js').
 	# --BEHAVIOR-- adminUsersActionsHeaders
-	$core->callBehavior('adminUsersActionsHeaders')
+	$core->callBehavior('adminUsersActionsHeaders'),
+	$breadcrumb
 );
 
@@ -177,6 +194,5 @@
 	}
 	
-	echo 
-	'<h2><a href="users.php">'.__('Users').'</a> &rsaquo; <span class="page-title">'.__('Permissions').'</span></h2>'.
+	echo
 	'<p>'.sprintf(
 		__('Choose one or more blogs to which you want to give permissions to users %s.'),
