Index: .hgtags
===================================================================
--- .hgtags	(revision 1351)
+++ .hgtags	(revision 1280)
@@ -12,4 +12,2 @@
 6fce226121140735a51a8f447c80f1dacd2974ea 2.4.4
 514d5121a12586b7ff320924d44028b677a01020 2.4.4
-baf879af43beea9764d920c2facd7226e90c5cf3 2.5.1
-cfad9f2a9f6ec03206ff5db91985208e833a7528 2.5.2
Index: CHANGELOG
===================================================================
--- CHANGELOG	(revision 1350)
+++ CHANGELOG	(revision 1216)
@@ -1,19 +1,2 @@
-Dotclear 2.5.2 - 2013-08-14
-===========================================================
-* Security fix: Fixed potential XSS
-* Bugfix: l10n Clearbricks library
-* <tpl:LoopPosition> now works <tpl:Attachments>
-* Dotclear update check may now be forced (ignoring cache)
-* Enforce integration of daInstaller plugin
-* Tags link button is now available on page editor
-* Default cache age is now 1 week instead of 2 hours
-* Quick entry dashboard module is not activated by default on new installation
-* New template {{tpl:BlogParentThemeURL}} (return URL of parent theme of blog's theme if any, URL of blog's theme otherwise)
-* Fix post comments number on comments deletion
-* Fix order of backup files
-* Minor enhancements
-* Various bug fixes
-* Various cosmetic adjustments
-
 Dotclear 2.5.1 - 2013-07-20
 ===========================================================
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 1179)
+++ admin/categories.php	(revision 1358)
@@ -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'));
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 1247)
+++ admin/index.php	(revision 1358)
@@ -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');
 }
 
@@ -193,8 +193,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) {
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 1353)
@@ -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);
 		});
 		
@@ -157,4 +149,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/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 1365)
@@ -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)" '.
@@ -439,22 +446,42 @@
 	
 	echo
+	'<div id="status-box" class="box">'.
+	'<h4>Statut</h4>'.
+
+	'<p><label for="post_status">'.__('Entry status:').
+	form::combo('post_status',$status_combo,$post_status,'maximal','',!$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,'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>'.
+
+	'<p><label for="post_lang">'.__('Entry lang:').
+	form::combo('post_lang',$lang_combo,$post_lang).
+	'</label></p>'.
+	
+	'</div>'. // End status box
+	
+	'<div id="metas-box" class="box">'.
+	'<h4>Classement</h4>'.
+
+	'<p><label for="post_selected" class="classic">'.form::checkbox('post_selected',1,$post_selected).' '.
+	__('Selected entry').'</label></p>'.
+
 	'<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>'.
-	
+
+	'</div>'. // End metas box
+	
+	'<div id="options-box" class="box">'.
+	'<h4>Options</h4>'.
 	'<p><label for="post_open_comment" class="classic">'.form::checkbox('post_open_comment',1,$post_open_comment).' '.
 	__('Accept comments').'</label></p>'.
@@ -473,17 +500,10 @@
 		'<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:').
+	'<p><label for="post_password">'.__('Password:').
 	form::field('post_password',10,32,html::escapeHTML($post_password),'maximal').
 	'</label></p>'.
 	
 	'<div class="lockable">'.
-	'<p><label for="post_url">'.__('Basename:').
+	'<p><label for="post_url">'.__('Edit basename:').
 	form::field('post_url',10,255,html::escapeHTML($post_url),'maximal').
 	'</label></p>'.
@@ -495,4 +515,6 @@
 	# --BEHAVIOR-- adminPostFormSidebar
 	$core->callBehavior('adminPostFormSidebar',isset($post) ? $post : null);
+
+	echo '</div>'; // End options box
 	
 	echo '</div>';		// End #entry-sidebar
@@ -526,8 +548,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 1345)
+++ admin/posts_actions.php	(revision 1179)
@@ -16,5 +16,4 @@
 
 $params = array();
-$action = '';
 
 /* Actions
Index: admin/preferences.php
===================================================================
--- admin/preferences.php	(revision 1179)
+++ admin/preferences.php	(revision 1358)
@@ -348,5 +348,11 @@
 	
 	# --BEHAVIOR-- adminPreferencesHeaders
-	$core->callBehavior('adminPreferencesHeaders')
+	$core->callBehavior('adminPreferencesHeaders'),
+
+	dcPage::breadcrumb(
+	array(
+		html::escapeHTML($core->auth->userID()) => '',
+		'<span class="page-title">'.$page_title.'</span>' => ''
+	))
 );
 
@@ -369,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
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 1179)
+++ admin/style/default.css	(revision 1365)
@@ -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,85 @@
 	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 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;
+	color: #000;
+	font-variant: small-caps;
 }
 #favorites-menu a {
 	color: #333;
-}
-#favorites-menu .active {
-	background-color: transparent;
-	border: none;
-}
-#favorites-menu .active a {
-	font-weight: bold;
-	color: #666;
 }
 /* ------------------------------------------------------------------ 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 +405,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 +427,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;}
@@ -399,5 +453,5 @@
 	width: 210px;
 	text-align: center;
-	margin: 2em 0 0 0;
+	margin: 2em 0;
 	display:inline-block;
 }
@@ -476,9 +530,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 +840,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 +866,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 +900,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 +940,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 +956,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,8 +1002,12 @@
 /* -------------------------------------------------------------------- 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 */
 p.top-add {
@@ -992,14 +1100,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;
@@ -1010,11 +1117,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 {
@@ -1033,4 +1140,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 {
@@ -1046,5 +1158,4 @@
 	width: 40%;
 }
-
 td.status {
 	vertical-align: middle;
@@ -1085,5 +1196,4 @@
 	padding-left: 15px;
 }
-
 /* ----------------------------------------------------------------- FORMS */
 form {
@@ -1101,4 +1211,7 @@
 	background: #f5f5f5;
 }
+.fieldset {
+	background: #eef;
+}
 legend {
 	font-weight: bold;
@@ -1107,5 +1220,5 @@
 	border-style: solid;
 	border-color: #ccc;
-	background: #f5f5f5;
+	background: #eef;
 	margin-bottom: 0.5em;
 }
@@ -1122,5 +1235,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 {
@@ -1131,5 +1244,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 {
@@ -1137,12 +1250,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;
@@ -1163,4 +1273,5 @@
 	font-style:italic;
 	font-weight: normal;
+	text-transform: none;
 	color: #666;
 }
@@ -1215,5 +1326,5 @@
 	display: inline;
 	position: absolute;
-	left: 15em;
+	left: 14.5em;
 	top: 0;
 }
@@ -1240,10 +1351,4 @@
 
 /* --------------------------------------------------------------- buttons */
-h2 a.button {
-	color: #333;
-	font-weight: normal;
-	font-size: .75em;
-	vertical-align: middle;
-}
 /* commun */
 input[type=submit],
@@ -1251,5 +1356,4 @@
 input[type=button],
 a.button,
-a.back,
 a.submit {
 	display: inline-block;
@@ -1258,9 +1362,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],
@@ -1287,5 +1393,4 @@
 /* suppression et reset */
 a.button,
-a.back,
 input[type=submit].reset,
 input[type=submit].delete {
@@ -1298,10 +1403,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,
@@ -1337,17 +1440,30 @@
 	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;
+	text-shadow:1px 1px 0 #689324;
+	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;
+}
+.button.add:active {
+	position:relative;
+	top:1px;
 }
 
@@ -1384,2 +1500,53 @@
 	color: white;
 }
+
+/* ---------------------------------------------------------------------------
+	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 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-box1 {margin-left: 1rem;}
+}
+@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 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.'),
Index: inc/admin/lib.dc.page.php
===================================================================
--- inc/admin/lib.dc.page.php	(revision 1256)
+++ inc/admin/lib.dc.page.php	(revision 1358)
@@ -49,5 +49,5 @@
 
 	# Top of admin page
-	public static function open($title='', $head='')
+	public static function open($title='',$head='',$breadcrumb='')
 	{
 		global $core;
@@ -73,9 +73,9 @@
 			}
 			$blog_box =
-			'<p><label for="switchblog" class="classic">'.
-			__('Blogs:').' '.
+			'<p><label for="switchblog" class="classic nomobile">'.
+			__('Blogs:').'</label> '.
 			$core->formNonce().
 			form::combo('switchblog',$blogs,$core->blog->id).
-			'</label></p>'.
+			'</p>'.
 			'<noscript><p><input type="submit" value="'.__('ok').'" /></p></noscript>';
 		}
@@ -93,8 +93,9 @@
 		"<head>\n".
 		'  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />'."\n".
-		'  <title>'.$title.' - '.html::escapeHTML($core->blog->name).' - '.html::escapeHTML(DC_VENDOR_NAME).' - '.DC_VERSION.'</title>'."\n".
-
 		'  <meta name="ROBOTS" content="NOARCHIVE,NOINDEX,NOFOLLOW" />'."\n".
 		'  <meta name="GOOGLEBOT" content="NOSNIPPET" />'."\n".
+		'  <meta name="viewport" content="width=device-width, initial-scale=1.0" />'."\n".
+		'  <title>'.$title.' - '.html::escapeHTML($core->blog->name).' - '.html::escapeHTML(DC_VENDOR_NAME).' - '.DC_VERSION.'</title>'."\n".
+
 
 		self::jsLoadIE7().
@@ -133,11 +134,11 @@
 		'<form action="index.php" method="post">'.
 		$blog_box.
-		'<p><a href="'.$core->blog->url.'" onclick="window.open(this.href);return false;" title="'.__('Go to site').' ('.__('new window').')'.'">'.__('Go to site').' <img src="images/outgoing.png" alt="" /></a>'.
+		'<p class="nomobile"><a href="'.$core->blog->url.'" onclick="window.open(this.href);return false;" title="'.__('Go to site').' ('.__('new window').')'.'">'.__('Go to site').' <img src="images/outgoing.png" alt="" /></a>'.
 		'</p></form>'.
 		'</div>'.
 		'<div id="info-box2">'.
-		'<a'.(preg_match('/index.php$/',$_SERVER['REQUEST_URI']) ? ' class="active"' : '').' href="index.php">'.__('My dashboard').'</a>'.
-		'<span> | </span><a'.(preg_match('/preferences.php(\?.*)?$/',$_SERVER['REQUEST_URI']) ? ' class="active"' : '').' href="preferences.php">'.__('My preferences').'</a>'.
-		'<span> | </span><a href="index.php?logout=1" class="logout">'.sprintf(__('Logout %s'),$core->auth->userID()).' <img src="images/logout.png" alt="" /></a>'.
+		'<a class="smallscreen'.(preg_match('/index.php$/',$_SERVER['REQUEST_URI']) ? ' active' : '').'" href="index.php">'.__('My dashboard').'</a>'.
+		'<span class="smallscreen"> | </span><a class="smallscreen'.(preg_match('/preferences.php(\?.*)?$/',$_SERVER['REQUEST_URI']) ? ' active' : '').'" href="preferences.php">'.__('My preferences').'</a>'.
+		'<span class="smallscreen"> | </span><a href="index.php?logout=1" class="logout">'.sprintf(__('Logout %s'),$core->auth->userID()).' <img src="images/logout.png" alt="" /></a>'.
 		'</div>'.
 		'</div>'.
@@ -158,4 +159,7 @@
 		}
 
+		// Display breadcrumb (if given) before any error message
+		echo $breadcrumb;
+
 		if ($core->error->flag()) {
 			echo
@@ -176,5 +180,10 @@
 		"</div>\n".		// End of #main
 
-		'<div id="main-menu">'."\n";
+		'<div id="main-menu">'."\n".
+
+		'<form id="search-menu" action="search.php" method="get">'.
+		'<p><label for="q" class="hidden">'.__('Search:').' </label>'.form::field('q',30,255,'').
+		'<input type="submit" value="'.__('OK').'" /></p>'.
+		'</form>';
 
 		foreach ($menu as $k => $v) {
@@ -193,5 +202,5 @@
 		echo
 		'</div>'."\n".		// End of #main-menu
-		'<div id="footer"><a href="http://dotclear.org/" title="'.$text.'"><img src="style/dc_logo_footer.png" alt="'.$text.'" /></a></div>'."\n".
+		'<div id="footer"><a href="http://dotclear.org/" title="'.$text.'"><img src="style/dc_logos/w-dotclear90.png" alt="'.$text.'" /></a></div>'."\n".
 		"</div>\n";		// End of #wrapper
 
@@ -204,5 +213,5 @@
 	}
 
-	public static function openPopup($title='', $head='')
+	public static function openPopup($title='',$head='',$breadcrumb='')
 	{
 		global $core;
@@ -216,4 +225,5 @@
 		'xml:lang="'.$core->auth->getInfo('user_lang').'" '.
 		'lang="'.$core->auth->getInfo('user_lang').'">'."\n".
+		'<meta name="viewport" content="width=device-width, initial-scale=1.0" />'."\n".
 		"<head>\n".
 		'  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />'."\n".
@@ -241,5 +251,5 @@
 		'<body id="dotclear-admin" class="popup">'."\n".
 
-		'<div id="top"><h1>'.DC_VENDOR_NAME.'</h1></div>'."\n";
+		'<div id="top hidden"><h1>'.DC_VENDOR_NAME.'</h1></div>'."\n";
 
 		echo
@@ -247,4 +257,7 @@
 		'<div id="main">'."\n".
 		'<div id="content">'."\n";
+
+		// display breadcrumb if given
+		echo $breadcrumb;
 
 		if ($core->error->flag()) {
@@ -264,4 +277,23 @@
 		"</div>\n".		// End of #wrapper
 		'</body></html>';
+	}
+
+	public static function breadcrumb($elements=null,$with_home_link=true,$echo=false)
+	{
+		// First item of array elements should be blog's name, System or Plugins
+		$res = '<h2>'.($with_home_link ?
+			'<a class="go_home" href="index.php"><img src="style/dashboard.png" alt="'.__('Go to dashboard').'" /></a>' :
+			'<img src="style/dashboard-alt.png" alt="" />');
+		$index = 0;
+		foreach ($elements as $element => $url) {
+			$res .= ($with_home_link ? ($index == 1 ? ' : ' : ' &rsaquo; ') : ($index == 0 ? ' ' : ' &rsaquo; ')).
+				($url ? '<a href="'.$url.'">' : '').$element.($url ? '</a>' : '');
+			$index++;
+		}
+		$res .= '</h2>';
+		if ($echo) {
+			echo $res;
+		}
+		return $res;
 	}
 
@@ -411,5 +443,7 @@
 
 		self::jsVar('dotclear.msg.help',
-			__('help')).
+			__('Help about this page')).
+		self::jsVar('dotclear.msg.help_hide',
+			__('Hide')).
 		self::jsVar('dotclear.msg.no_selection',
 			__('no selection')).
@@ -476,6 +510,4 @@
 		self::jsVar('dotclear.msg.confirm_change_post_format',
 			__('You have unsaved changes. Switch post format will loose these changes. Proceed anyway?')).
-		self::jsVar('dotclear.msg.confirm_change_post_format_noconvert',
-			__("Warning: post format change will not convert existing content. You will need to apply new format by yourself. Proceed anyway?")).
 		self::jsVar('dotclear.msg.load_enhanced_uploader',
 			__('Loading enhanced uploader, please wait.')).
Index: inc/admin/lib.pager.php
===================================================================
--- inc/admin/lib.pager.php	(revision 1364)
+++ inc/admin/lib.pager.php	(revision 1353)
@@ -87,5 +87,5 @@
 			html::escapeHTML($this->rs->cat_title));
 		} else {
-			$cat_title = __('(No cat)');
+			$cat_title = __('None');
 		}
 		
@@ -93,14 +93,14 @@
 		switch ($this->rs->post_status) {
 			case 1:
-				$img_status = sprintf($img,__('published'),'check-on.png');
+				$img_status = sprintf($img,__('Published'),'check-on.png');
 				break;
 			case 0:
-				$img_status = sprintf($img,__('unpublished'),'check-off.png');
+				$img_status = sprintf($img,__('Unpublished'),'check-off.png');
 				break;
 			case -1:
-				$img_status = sprintf($img,__('scheduled'),'scheduled.png');
+				$img_status = sprintf($img,__('Scheduled'),'scheduled.png');
 				break;
 			case -2:
-				$img_status = sprintf($img,__('pending'),'check-wrn.png');
+				$img_status = sprintf($img,__('Pending'),'check-wrn.png');
 				break;
 		}
@@ -108,10 +108,10 @@
 		$protected = '';
 		if ($this->rs->post_password) {
-			$protected = sprintf($img,__('protected'),'locker.png');
+			$protected = sprintf($img,__('Protected'),'locker.png');
 		}
 		
 		$selected = '';
 		if ($this->rs->post_selected) {
-			$selected = sprintf($img,__('selected'),'selected.png');
+			$selected = sprintf($img,__('Selected'),'selected.png');
 		}
 		
@@ -192,14 +192,14 @@
 		switch ($this->rs->post_status) {
 			case 1:
-				$img_status = sprintf($img,__('published'),'check-on.png');
+				$img_status = sprintf($img,__('Published'),'check-on.png');
 				break;
 			case 0:
-				$img_status = sprintf($img,__('unpublished'),'check-off.png');
+				$img_status = sprintf($img,__('Unpublished'),'check-off.png');
 				break;
 			case -1:
-				$img_status = sprintf($img,__('scheduled'),'scheduled.png');
+				$img_status = sprintf($img,__('Scheduled'),'scheduled.png');
 				break;
 			case -2:
-				$img_status = sprintf($img,__('pending'),'check-wrn.png');
+				$img_status = sprintf($img,__('Pending'),'check-wrn.png');
 				break;
 		}
@@ -207,10 +207,10 @@
 		$protected = '';
 		if ($this->rs->post_password) {
-			$protected = sprintf($img,__('protected'),'locker.png');
+			$protected = sprintf($img,__('Protected'),'locker.png');
 		}
 		
 		$selected = '';
 		if ($this->rs->post_selected) {
-			$selected = sprintf($img,__('selected'),'selected.png');
+			$selected = sprintf($img,__('Selected'),'selected.png');
 		}
 		
@@ -306,14 +306,14 @@
 		switch ($this->rs->comment_status) {
 			case 1:
-				$img_status = sprintf($img,__('published'),'check-on.png');
+				$img_status = sprintf($img,__('Published'),'check-on.png');
 				break;
 			case 0:
-				$img_status = sprintf($img,__('unpublished'),'check-off.png');
+				$img_status = sprintf($img,__('Unpublished'),'check-off.png');
 				break;
 			case -1:
-				$img_status = sprintf($img,__('pending'),'check-wrn.png');
+				$img_status = sprintf($img,__('Pending'),'check-wrn.png');
 				break;
 			case -2:
-				$img_status = sprintf($img,__('junk'),'junk.png');
+				$img_status = sprintf($img,__('Junk'),'junk.png');
 				break;
 		}
Index: inc/admin/prepend.php
===================================================================
--- inc/admin/prepend.php	(revision 1179)
+++ inc/admin/prepend.php	(revision 1337)
@@ -284,5 +284,5 @@
 	# Set menu titles
 	
-	$_menu['System']->title = __('System');
+	$_menu['System']->title = __('System settings');
 	$_menu['Blog']->title = __('Blog');
 	$_menu['Plugins']->title = __('Plugins');
Index: inc/core/class.dc.blog.php
===================================================================
--- inc/core/class.dc.blog.php	(revision 1262)
+++ inc/core/class.dc.blog.php	(revision 1353)
@@ -81,5 +81,5 @@
 			$this->desc = $b->blog_desc;
 			$this->url = $b->blog_url;
-			$this->host = preg_replace('|^([a-z]{3,}://)(.*?)/.*$|','$1$2',$this->url);
+			$this->host = http::getHostFromURL($this->url);
 			$this->creadt = strtotime($b->blog_creadt);
 			$this->upddt = strtotime($b->blog_upddt);
@@ -91,13 +91,13 @@
 			$this->public_path = path::fullFromRoot($this->settings->system->public_path,DC_ROOT);
 			
-			$this->post_status['-2'] = __('pending');
-			$this->post_status['-1'] = __('scheduled');
-			$this->post_status['0'] = __('unpublished');
-			$this->post_status['1'] = __('published');
-			
-			$this->comment_status['-2'] = __('junk');
-			$this->comment_status['-1'] = __('pending');
-			$this->comment_status['0'] = __('unpublished');
-			$this->comment_status['1'] = __('published');
+			$this->post_status['-2'] = __('Pending');
+			$this->post_status['-1'] = __('Scheduled');
+			$this->post_status['0'] = __('Unpublished');
+			$this->post_status['1'] = __('Published');
+			
+			$this->comment_status['-2'] = __('Junk');
+			$this->comment_status['-1'] = __('Pending');
+			$this->comment_status['0'] = __('Unpublished');
+			$this->comment_status['1'] = __('Published');
 			
 			# --BEHAVIOR-- coreBlogConstruct
@@ -203,26 +203,22 @@
 	@param	ids		<b>mixed</b>		Comment(s) ID(s)
 	@param	del		<b>boolean</b>		If comment is delete, set this to true
-	@param	affected_posts		<b>mixed</b>		Posts(s) ID(s)
-	*/
-	public function triggerComments($ids, $del=false, $affected_posts=null)
+	*/
+	public function triggerComments($ids,$del=false)
 	{
 		$co_ids = dcUtils::cleanIds($ids);
-		$a_ids = dcUtils::cleanIds($affected_posts);
-		$a_tbs = array();
 		
 		# a) Retrieve posts affected by comments edition
-		if (empty($a_ids)) {
-			$strReq = 
-				'SELECT post_id, comment_trackback '.
-				'FROM '.$this->prefix.'comment '.
-				'WHERE comment_id'.$this->con->in($co_ids).
-				'GROUP BY post_id,comment_trackback';
-			
-			$rs = $this->con->select($strReq);
-			
-			while ($rs->fetch()) {
-				$a_ids[] = (integer) $rs->post_id;
-				$a_tbs[] = (integer) $rs->comment_trackback;
-			}
+		$strReq = 
+			'SELECT post_id, comment_trackback '.
+			'FROM '.$this->prefix.'comment '.
+			'WHERE comment_id'.$this->con->in($co_ids).
+			'GROUP BY post_id,comment_trackback';
+		
+		$rs = $this->con->select($strReq);
+		
+		$a_ids = $a_tbs = array();
+		while ($rs->fetch()) {
+			$a_ids[] = (integer) $rs->post_id;
+			$a_tbs[] = (integer) $rs->comment_trackback;
 		}
 		
@@ -259,5 +255,4 @@
 		{
 			$nb_comment = $nb_trackback = 0;
-			//$cur->nb_comment = $nb_comment;
 			foreach($b_ids as $b_key => $b_id)
 			{
@@ -510,11 +505,5 @@
 		$this->core->callBehavior('coreBeforeCategoryCreate',$this,$cur);
 		
-		$id = $this->categories()->addNode($cur,$parent);
-		# Update category's cursor
-		$rs = $this->getCategory($id);
-		if (!$rs->isEmpty()) {
-			$cur->cat_lft = $rs->cat_lft;
-			$cur->cat_rgt = $rs->cat_rgt;
-		}
+		$this->categories()->addNode($cur,$parent);
 		
 		# --BEHAVIOR-- coreAfterCategoryCreate
@@ -2192,19 +2181,6 @@
 		$co_ids = dcUtils::cleanIds($ids);
 		
-		if (empty($co_ids)) {
+		if (empty($ids)) {
 			throw new Exception(__('No such comment ID'));
-		}
-		
-		# Retrieve posts affected by comments edition
-		$affected_posts = array();
-		$strReq =
-			'SELECT distinct(post_id) '.
-			'FROM '.$this->prefix.'comment '.
-			'WHERE comment_id'.$this->con->in($co_ids);
-		
-		$rs = $this->con->select($strReq);
-		
-		while ($rs->fetch()) {
-			$affected_posts[] = (integer) $rs->post_id;
 		}
 		
@@ -2236,5 +2212,5 @@
 		
 		$this->con->execute($strReq);
-		$this->triggerComments($co_ids, true, $affected_posts);
+		$this->triggerComments($co_ids,true);
 		$this->triggerBlog();
 	}
@@ -2291,8 +2267,6 @@
 		
 		if ($cur->comment_site !== null && $cur->comment_site != '') {
-			if (!preg_match('|^http(s?)://|i',$cur->comment_site, $matches)) {
+			if (!preg_match('|^http(s?)://|',$cur->comment_site)) {
 				$cur->comment_site = 'http://'.$cur->comment_site;
-			}else{
-				$cur->comment_site = strtolower($matches[0]).substr($cur->comment_site, strlen($matches[0]));
 			}
 		}
Index: inc/core/class.dc.media.php
===================================================================
--- inc/core/class.dc.media.php	(revision 1270)
+++ inc/core/class.dc.media.php	(revision 1280)
@@ -497,8 +497,7 @@
 	@param	post_id	<b>integer</b>		Post ID
 	@param	media_id	<b>integer</b>		Optionnal media ID
-	@param	return_rs	<b>boolean</b>		Whether to return a resultset (true) or an array (false, default value).
-	@return	<b>array</b> Array or ResultSet of fileItems
-	*/
-	public function getPostMedia($post_id,$media_id=null,$return_rs=false)
+	@return	<b>array</b> Array of fileItems
+	*/
+	public function getPostMedia($post_id,$media_id=null)
 	{
 		$params = array(
@@ -516,9 +515,9 @@
 			$f = $this->fileRecord($rs);
 			if ($f !== null) {
-				$res[] = $return_rs ? new ArrayObject($f) : $f;
-			}
-		}
-		
-		return $return_rs ? staticRecord::newFromArray($res) : $res;
+				$res[] = $f;
+			}
+		}
+		
+		return $res;
 	}
 	
Index: inc/core/class.dc.update.php
===================================================================
--- inc/core/class.dc.update.php	(revision 1231)
+++ inc/core/class.dc.update.php	(revision 1280)
@@ -32,5 +32,4 @@
 	
 	protected $cache_ttl = '-6 hours';
-	protected $nocache_ttl = '-2 mins';
 	protected $forced_files = array();
 	
@@ -56,10 +55,9 @@
 	 * 
 	 * @param version		string	Current version to compare
-	 * @param nocache		boolean	Force checking
 	 * @return string				Latest version if available
 	 */
-	public function check($version, $nocache=false)
-	{
-		$this->getVersionInfo($nocache);
+	public function check($version)
+	{
+		$this->getVersionInfo();
 		$v = $this->getVersion();
 		if ($v && version_compare($version,$v,'<')) {
@@ -70,13 +68,8 @@
 	}
 	
-	public function getVersionInfo($nocache=false)
-	{
-		# Check minimum time without cache (prevents from server flood)
-		if ($nocache && is_readable($this->cache_file) && filemtime($this->cache_file) > strtotime($this->nocache_ttl)) {
-			$nocache = false;
-		}
-		
+	public function getVersionInfo()
+	{
 		# Check cached file
-		if (is_readable($this->cache_file) && filemtime($this->cache_file) > strtotime($this->cache_ttl) && !$nocache)
+		if (is_readable($this->cache_file) && filemtime($this->cache_file) > strtotime($this->cache_ttl))
 		{
 			$c = @file_get_contents($this->cache_file);
Index: inc/load_plugin_file.php
===================================================================
--- inc/load_plugin_file.php	(revision 1241)
+++ inc/load_plugin_file.php	(revision 1280)
@@ -86,5 +86,5 @@
 }
 
-http::$cache_max_age = (!defined('DC_CACHE_MAX_AGE') ? 604800 : DC_CACHE_MAX_AGE);
+http::$cache_max_age = 7200;
 http::cache(array_merge(array($PF),get_included_files()));
 
Index: inc/prepend.php
===================================================================
--- inc/prepend.php	(revision 1352)
+++ inc/prepend.php	(revision 1279)
@@ -123,5 +123,5 @@
 # Constants
 define('DC_ROOT',path::real(dirname(__FILE__).'/..'));
-define('DC_VERSION','2.5.3-dev');
+define('DC_VERSION','2.6-dev');
 define('DC_DIGESTS',dirname(__FILE__).'/digests');
 define('DC_L10N_ROOT',dirname(__FILE__).'/../locales');
Index: inc/public/class.dc.template.php
===================================================================
--- inc/public/class.dc.template.php	(revision 1249)
+++ inc/public/class.dc.template.php	(revision 1280)
@@ -67,5 +67,4 @@
 		$this->addValue('BlogLanguage',array($this,'BlogLanguage'));
 		$this->addValue('BlogThemeURL',array($this,'BlogThemeURL'));
-		$this->addValue('BlogParentThemeURL',array($this,'BlogParentThemeURL'));
 		$this->addValue('BlogUpdateDate',array($this,'BlogUpdateDate'));
 		$this->addValue('BlogID',array($this,'BlogID'));
@@ -840,5 +839,5 @@
 	
 	/*dtd
-	<!ELEMENT tpl:BlogThemeURL - O -- Blog's current Theme URL -->
+	<!ELEMENT tpl:BlogThemeURL - O -- Blog's current Themei URL -->
 	*/
 	public function BlogThemeURL($attr)
@@ -846,14 +845,4 @@
 		$f = $this->getFilters($attr);
 		return '<?php echo '.sprintf($f,'$core->blog->settings->system->themes_url."/".$core->blog->settings->system->theme').'; ?>';
-	}
-	
-	/*dtd
-	<!ELEMENT tpl:BlogParentThemeURL - O -- Blog's current Theme's parent URL -->
-	*/
-	public function BlogParentThemeURL($attr)
-	{
-		$f = $this->getFilters($attr);
-		$parent = '$core->themes->moduleInfo($core->blog->settings->system->theme,\'parent\')';
-		return '<?php echo '.sprintf($f,'$core->blog->settings->system->themes_url."/".('."$parent".' ? '."$parent".' : $core->blog->settings->system->theme)').'; ?>';
 	}
     
Index: locales/_pot/plugins.pot
===================================================================
--- locales/_pot/plugins.pot	(revision 963)
+++ locales/_pot/plugins.pot	(revision 1354)
@@ -2311,5 +2311,5 @@
 
 #: plugins/widgets/index.php:250
-msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the + sign next to their name."
+msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the arrow next to their name."
 msgstr ""
 
Index: locales/bn/help/blowupConfig.html
===================================================================
--- locales/bn/help/blowupConfig.html	(revision 1264)
+++ locales/bn/help/blowupConfig.html	(revision 1280)
@@ -35,5 +35,5 @@
 <p>You can choose a header image among the list to use in place of the default one.</p>
 
-<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong></p>
+<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong>
 
 <p>If you upload a JPG image, a border will be added to the image, which is not the case with PNG images (the transparency of which will also be kept).</p>
Index: locales/bn/plugins.po
===================================================================
--- locales/bn/plugins.po	(revision 1126)
+++ locales/bn/plugins.po	(revision 1354)
@@ -1540,5 +1540,5 @@
 msgstr ""
 
-msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the + sign next to their name."
+msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the arrow next to their name."
 msgstr ""
 
Index: locales/ca/help/blowupConfig.html
===================================================================
--- locales/ca/help/blowupConfig.html	(revision 1264)
+++ locales/ca/help/blowupConfig.html	(revision 1280)
@@ -35,5 +35,5 @@
 <p>You can choose a header image among the list to use in place of the default one.</p>
 
-<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong></p>
+<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong>
 
 <p>If you upload a JPG image, a border will be added to the image, which is not the case with PNG images (the transparency of which will also be kept).</p>
Index: locales/ca/plugins.po
===================================================================
--- locales/ca/plugins.po	(revision 1126)
+++ locales/ca/plugins.po	(revision 1354)
@@ -1529,5 +1529,5 @@
 msgstr ""
 
-msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the + sign next to their name."
+msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the arrow next to their name."
 msgstr ""
 
Index: locales/cs/help/blowupConfig.html
===================================================================
--- locales/cs/help/blowupConfig.html	(revision 1264)
+++ locales/cs/help/blowupConfig.html	(revision 1280)
@@ -35,5 +35,5 @@
 <p>You can choose a header image among the list to use in place of the default one.</p>
 
-<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong></p>
+<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong>
 
 <p>If you upload a JPG image, a border will be added to the image, which is not the case with PNG images (the transparency of which will also be kept).</p>
Index: locales/cs/plugins.po
===================================================================
--- locales/cs/plugins.po	(revision 1126)
+++ locales/cs/plugins.po	(revision 1354)
@@ -1565,5 +1565,5 @@
 msgstr ""
 
-msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the + sign next to their name."
+msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the arrow next to their name."
 msgstr ""
 
Index: locales/da/help/blowupConfig.html
===================================================================
--- locales/da/help/blowupConfig.html	(revision 1264)
+++ locales/da/help/blowupConfig.html	(revision 1280)
@@ -35,5 +35,5 @@
 <p>You can choose a header image among the list to use in place of the default one.</p>
 
-<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong></p>
+<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong>
 
 <p>If you upload a JPG image, a border will be added to the image, which is not the case with PNG images (the transparency of which will also be kept).</p>
Index: locales/da/plugins.po
===================================================================
--- locales/da/plugins.po	(revision 1126)
+++ locales/da/plugins.po	(revision 1354)
@@ -1529,5 +1529,5 @@
 msgstr ""
 
-msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the + sign next to their name."
+msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the arrow next to their name."
 msgstr ""
 
Index: locales/de/help/blowupConfig.html
===================================================================
--- locales/de/help/blowupConfig.html	(revision 1264)
+++ locales/de/help/blowupConfig.html	(revision 1280)
@@ -35,5 +35,5 @@
 <p>Du kannst ein Bild Deiner Wahl statt des Standardbildes einsetzen.</p>
 
-<p>Wenn Du  "Benutzerdefiniert..." in der Bilderliste ausw&auml;hlst, dann hast Du die M&ouml;glichkeit, Dein eigenes Bild upzuloaden. <strong>Das Dateiformat muss entweder JPG der PNG sein und es muss 800px breit sein.</strong></p>
+<p>Wenn Du  "Benutzerdefiniert..." in der Bilderliste ausw&auml;hlst, dann hast Du die M&ouml;glichkeit, Dein eigenes Bild upzuloaden. <strong>Das Dateiformat muss entweder JPG der PNG sein und es muss 800px breit sein.</strong>
 
 <p>Wenn Du ein JPG-Bild uploadest, dann wird automatisch ein Rahmen um das Bild gesetzt. Dies geschieht nicht bei der Verwendung eines PNG-Bildes und die Transparenz wird ebenfalls beibehalten.</p>
Index: locales/de/plugins.po
===================================================================
--- locales/de/plugins.po	(revision 1126)
+++ locales/de/plugins.po	(revision 1354)
@@ -1569,5 +1569,5 @@
 msgstr ""
 
-msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the + sign next to their name."
+msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the arrow next to their name."
 msgstr ""
 
Index: locales/en/main.po
===================================================================
--- locales/en/main.po	(revision 1364)
+++ locales/en/main.po	(revision 1280)
@@ -2154,7 +2154,4 @@
 msgstr ""
 
-msgid "Warning: post format change will not convert existing content. You will need to apply new format by yourself. Proceed anyway?"
-msgstr ""
-
 msgid "Loading enhanced uploader, please wait."
 msgstr ""
@@ -2790,5 +2787,2 @@
 msgid "The following error was encountered while trying to read the database:"
 msgstr ""
-
-msgid "(No cat)"
-msgstr "(none)"
Index: locales/en/plugins.po
===================================================================
--- locales/en/plugins.po	(revision 1126)
+++ locales/en/plugins.po	(revision 1354)
@@ -1546,5 +1546,5 @@
 msgstr ""
 
-msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the + sign next to their name."
+msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the arrow next to their name."
 msgstr ""
 
Index: locales/en/resources.php
===================================================================
--- locales/en/resources.php	(revision 1179)
+++ locales/en/resources.php	(revision 1343)
@@ -15,9 +15,9 @@
 
 $__resources['doc'] = array(
-	"Dotclear 2 documentation" => 'http://dotclear.org/documentation/2.0',
-	'Dotclear 2 presentation' => 'http://dotclear.org/documentation/2.0/overview/tour',
+	"Dotclear documentation" => 'http://dotclear.org/documentation/2.0',
+	'Dotclear presentation' => 'http://dotclear.org/documentation/2.0/overview/tour',
 	"User manual" => 'http://dotclear.org/documentation/2.0/usage',
 	"Installation and administration guides" => 'http://dotclear.org/documentation/2.0/admin',
-	"Dotclear 2 support forum" => 'http://forum.dotclear.net/'
+	"Dotclear support forum" => 'http://forum.dotclear.net/'
 );
 
Index: locales/eo/help/blowupConfig.html
===================================================================
--- locales/eo/help/blowupConfig.html	(revision 1264)
+++ locales/eo/help/blowupConfig.html	(revision 1280)
@@ -35,5 +35,5 @@
 <p>You can choose a header image among the list to use in place of the default one.</p>
 
-<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong></p>
+<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong>
 
 <p>If you upload a JPG image, a border will be added to the image, which is not the case with PNG images (the transparency of which will also be kept).</p>
Index: locales/eo/plugins.po
===================================================================
--- locales/eo/plugins.po	(revision 1126)
+++ locales/eo/plugins.po	(revision 1354)
@@ -1529,5 +1529,5 @@
 msgstr ""
 
-msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the + sign next to their name."
+msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the arrow next to their name."
 msgstr ""
 
Index: locales/es-ar/help/blowupConfig.html
===================================================================
--- locales/es-ar/help/blowupConfig.html	(revision 1264)
+++ locales/es-ar/help/blowupConfig.html	(revision 1280)
@@ -35,5 +35,5 @@
 <p>You can choose a header image among the list to use in place of the default one.</p>
 
-<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong></p>
+<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong>
 
 <p>If you upload a JPG image, a border will be added to the image, which is not the case with PNG images (the transparency of which will also be kept).</p>
Index: locales/es-ar/plugins.po
===================================================================
--- locales/es-ar/plugins.po	(revision 1126)
+++ locales/es-ar/plugins.po	(revision 1354)
@@ -1572,5 +1572,5 @@
 msgstr ""
 
-msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the + sign next to their name."
+msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the arrow next to their name."
 msgstr ""
 
Index: locales/es/help/blowupConfig.html
===================================================================
--- locales/es/help/blowupConfig.html	(revision 1264)
+++ locales/es/help/blowupConfig.html	(revision 1280)
@@ -35,5 +35,5 @@
 <p>You can choose a header image among the list to use in place of the default one.</p>
 
-<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong></p>
+<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong>
 
 <p>If you upload a JPG image, a border will be added to the image, which is not the case with PNG images (the transparency of which will also be kept).</p>
Index: locales/es/plugins.po
===================================================================
--- locales/es/plugins.po	(revision 1126)
+++ locales/es/plugins.po	(revision 1354)
@@ -1576,5 +1576,5 @@
 msgstr ""
 
-msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the + sign next to their name."
+msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the arrow next to their name."
 msgstr ""
 
Index: locales/eu/help/blowupConfig.html
===================================================================
--- locales/eu/help/blowupConfig.html	(revision 1264)
+++ locales/eu/help/blowupConfig.html	(revision 1280)
@@ -35,5 +35,5 @@
 <p>You can choose a header image among the list to use in place of the default one.</p>
 
-<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong></p>
+<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong>
 
 <p>If you upload a JPG image, a border will be added to the image, which is not the case with PNG images (the transparency of which will also be kept).</p>
Index: locales/eu/plugins.po
===================================================================
--- locales/eu/plugins.po	(revision 1126)
+++ locales/eu/plugins.po	(revision 1354)
@@ -1529,5 +1529,5 @@
 msgstr ""
 
-msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the + sign next to their name."
+msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the arrow next to their name."
 msgstr ""
 
Index: locales/fr/help/blowupConfig.html
===================================================================
--- locales/fr/help/blowupConfig.html	(revision 1264)
+++ locales/fr/help/blowupConfig.html	(revision 1348)
@@ -14,5 +14,5 @@
 <p>Quand vous devez indiquer une valeur de couleur, celle-ci doit être au format
 hexadécimal. Par exemple&nbsp;: "#FF0000" donnera du rouge. Vous pouvez vous aider
-de la pipette à côté de chaque champs de couleur.</p>
+de la pipette à côté de chaque champ de couleur.</p>
 <p>Si vous manquez d'inspiration vous pouvez consulter&nbsp;:</p>
 <ul>
@@ -44,5 +44,5 @@
 <p>En choisissant "Personnalisé..." parmi la liste d'images, vous pourrez
 déposer votre propre image. <strong>Celle-ci doit être au format JPG ou PNG et
-avoir une largeur exacte de 800 pixels.</strong></p>
+avoir une largeur exacte de 800 pixels.</strong>
 
 <p>Si vous déposez une image au format JPG, un cadre sera ajouté autours de
Index: locales/fr/help/core_blog_pref.html
===================================================================
--- locales/fr/help/core_blog_pref.html	(revision 990)
+++ locales/fr/help/core_blog_pref.html	(revision 1354)
@@ -13,5 +13,6 @@
   
   <dt>Nom du blog</dt>
-  <dd>Nom du blog, obligatoire.</dd>
+  <dd>Nom du blog, obligatoire. Il peut être modifié à tout moment sans incidence sur
+  le fonctionnement du blog.</dd>
   
   <dt>URL du blog</dt>
@@ -44,5 +45,5 @@
   <dt>Nom de l'éditeur du blog</dt>
   <dd>Nom de la personne responsable du contenu du blog. Peut être le propriétaire
-  ou le directeur de publication s'il existe. Information affichée dans les
+  ou le directeur de publication s'il existe. Cette information sera affichée dans les
   informations du flux de syndication.</dd>
   
@@ -53,5 +54,5 @@
   <dd>Langue de l'interface du blog. Si cette langue existe parmi les
   traductions, l'interface sera traduite dans celle-ci, sinon elle apparaîtra
-  en Anglais.</dd>
+  en anglais.</dd>
   
   <dt>Fuseau horaire du blog</dt>
Index: locales/fr/main.po
===================================================================
--- locales/fr/main.po	(revision 1364)
+++ locales/fr/main.po	(revision 1365)
@@ -1038,5 +1038,5 @@
 #, fuzzy, php-format
 msgid "Path <strong>%s</strong> is not writable."
-msgstr "Le répertoire <strong>%s</strong> n'est pas accessible en écriture."
+msgstr "Le répertoire de cache %s n'est pas accessible en écriture."
 
 #, fuzzy
@@ -1123,5 +1123,5 @@
 #, php-format
 msgid "You can change your user language in your <a href=\"%1$s\">preferences</a> or change your blog's main language in your <a href=\"%2$s\">blog settings</a>."
-msgstr "Vous pouvez changer votre langue d'utilisateur dans vos <a href=\"%1$s\">préférences</a> ou changer la langue principale de votre blog dans vos <a href=\"%2$s\">paramètres du blog</a>."
+msgstr "Vous pouvez changer votre langue d'utilisateur dans vos <a href=\"%1$s\">préférences</a> ou changer la langue principale de votre blog dans vos <a href=\"%2$s\">paramètres de blog</a>."
 
 msgid "Installed languages"
@@ -1193,10 +1193,4 @@
 msgstr "Gestionnaire de médias"
 
-msgid "Go to %s folder"
-msgstr "Aller au dossier %s"
-
-msgid "Media details of %s"
-msgstr "Détails du média %s"
-
 msgid "confirm removal"
 msgstr "Confirmer la suppression"
@@ -1490,5 +1484,5 @@
 
 msgid "Plugins"
-msgstr "Extensions"
+msgstr "Plugins"
 
 msgid "Activated plugins"
@@ -1568,5 +1562,5 @@
 
 msgid "Search"
-msgstr "Recherche"
+msgstr "Rechercher"
 
 msgid "cancel"
@@ -1628,5 +1622,5 @@
 
 msgid "Text formating:"
-msgstr "Format du texte :"
+msgstr "Syntaxe de saisie :"
 
 msgid "Convert to XHTML"
@@ -1923,9 +1917,9 @@
 msgstr "Requête :"
 
-msgid "Search entries"
-msgstr "Rechercher des billets"
-
-msgid "Search comments"
-msgstr "Rechercher des commentaires"
+msgid "Search in entries"
+msgstr "Rechercher dans les billets"
+
+msgid "Search in comments"
+msgstr "Rechercher dans les commentaires"
 
 msgid "schedule"
@@ -2000,13 +1994,7 @@
 msgstr "Les fichiers suivants de votre installation de Dotclear ne peuvent pas être écrits. Veuillez corriger la situation ou <a href=\"http://fr.dotclear.org/download\">mettre à jour manuellement</a>."
 
-msgid "Manual checking of update done successfully."
-msgstr "Vérification manuelle de mise à jour effectuée avec succès."
-
 msgid "No newer Dotclear version available."
 msgstr "Aucune nouvelle version de Dotclear n'est disponible."
 
-msgid "Force checking update Dotclear"
-msgstr "Forcer la vérification de mise à jour de Dotclear"
-
 #, php-format
 msgid "Dotclear %s is available."
@@ -2064,5 +2052,5 @@
 
 msgid "Mandatory for password recovering procedure."
-msgstr "Obligatoire pour la procédure de récupération de mot de passe."
+msgstr "Indispensable pour la procédure de récupération de mot de passe."
 
 msgid "Password change required to connect"
@@ -2145,9 +2133,9 @@
 #, fuzzy
 msgid "Go to the content"
-msgstr "Aller au contenu"
+msgstr "Voir ce billet sur le site"
 
 #, fuzzy
 msgid "Go to the menu"
-msgstr "Aller au menu"
+msgstr "Aller sur le site"
 
 msgid "Go to site"
@@ -2174,4 +2162,7 @@
 msgstr "Aide"
 
+msgid "Help about this page"
+msgstr "Aide pour cette page"
+
 msgid "uncover"
 msgstr "dévoiler"
@@ -2256,5 +2247,5 @@
 
 msgid "XHTML markup validator"
-msgstr "Validation XHTML"
+msgstr "Vérifier la validité XHTML"
 
 msgid "XHTML content is valid."
@@ -2267,7 +2258,4 @@
 msgstr "Vous avez des modifications non sauvegardées. Changer de format vous fera perdre ces modifications. Continuer ?"
 
-msgid "Warning: post format change will not convert existing content. You will need to apply new format by yourself. Proceed anyway?"
-msgstr "Attention : le changement de syntaxe ne transformera pas les balises des contenus déjà saisis. Pensez à les réadapter après cette opération. Confirmez-vous ce changement de syntaxe ?"
-
 msgid "Loading enhanced uploader, please wait."
 msgstr "Chargement de l'interface avancée."
@@ -2518,5 +2506,5 @@
 #, fuzzy
 msgid "You are not allowed to reset categories order"
-msgstr "Vous n'êtes pas autorisé à réinitialiser l'ordre des catégories"
+msgstr "Vous n'êtes pas autorisé à supprimer des catégories"
 
 msgid "Category URL must be unique."
@@ -2941,4 +2929,61 @@
 msgstr "Date de publication invalide"
 
-msgid "(No cat)"
-msgstr "(aucune)"
+msgid "System settings"
+msgstr "Réglages système"
+
+msgid "Additional plugins"
+msgstr "Modules complémentaires"
+
+msgid "Personal notes:"
+msgstr "Notes personnelles :"
+
+msgid "New user"
+msgstr "Nouvel utilisateur"
+
+msgid "Published"
+msgstr "Publié"
+
+msgid "Unpublished"
+msgstr "Non publié"
+
+msgid "Pending"
+msgstr "En attente"
+
+msgid "Junk"
+msgstr "Indésirable"
+
+msgid "Scheduled"
+msgstr "Programmé"
+
+msgid "Protected"
+msgstr "Protégé"
+
+msgid "Publish"
+msgstr "Publier"
+
+msgid "Unpublish"
+msgstr "Mettre hors ligne"
+
+msgid "Mark as pending"
+msgstr "Mettre en attente"
+
+msgid "Mark as junk"
+msgstr "Mettre en indésirable"
+
+msgid "Next entry"
+msgstr "Billet suivant"
+
+msgid "Previous entry"
+msgstr "Billet précédent"
+
+msgid "Add an introduction to the post."
+msgstr "Ajoute une introduction au billet."
+
+msgid "Add unpublished notes."
+msgstr "Ajoute des notes non publiées."
+
+msgid "Edit basename:"
+msgstr "Modifier l'URL spécifique :"
+
+msgid "Protect with password"
+msgstr "Protéger par un mot de passe"
Index: locales/fr/plugins.po
===================================================================
--- locales/fr/plugins.po	(revision 1286)
+++ locales/fr/plugins.po	(revision 1354)
@@ -238,6 +238,6 @@
 
 #, php-format
-msgid "%s configuration"
-msgstr "configuration %s"
+msgid "%s filter configuration"
+msgstr "Configuration du filtre %s"
 
 msgid "Information"
@@ -1024,6 +1024,6 @@
 msgid ""
 "On the other hand, in WordPress, a post can not be uncategorized, and a "
-"default installation has a first category labelised <i>\"Uncategorized\"</"
-"i>. If you did not change that category, you can just ignore it while "
+"default installation has a first category labelised <i>\"Uncategorized\"</i>."
+"If you did not change that category, you can just ignore it while "
 "importing your blog, as Dotclear allows you to actually keep your posts "
 "uncategorized."
@@ -1031,5 +1031,5 @@
 "D'autre part, dans WordPress, un billet ne peut pas être sans catégorie, et "
 "une installation par défaut possède systématiquement une première catégorie "
-"nommée <i>« sans catégorie »</i>. Si vous n'avez pas changé cette "
+"nommée <i>« sans catégorie »</ i>. Si vous n'avez pas changé cette "
 "catégorie, vous pouvez simplement l'ignorer lors de l'importation sur votre "
 "blog, puisque Dotclear vous permet réellement de conserver votre message "
@@ -1131,5 +1131,5 @@
 
 msgid "Vacuum tables"
-msgstr "Optimiser les tables"
+msgstr "Vidage des tables"
 
 msgid "Counters"
@@ -1137,5 +1137,5 @@
 
 msgid "Reset comments and ping counters"
-msgstr "Recalculer les compteurs de commentaires et de signalements"
+msgstr "Remet à zéro les compteurs de commentaires et de signalements"
 
 msgid "Search engine index"
@@ -1146,8 +1146,8 @@
 
 msgid "Index all posts"
-msgstr "Indexer tous les billets"
+msgstr "Indexation de tous les billets"
 
 msgid "Index all comments"
-msgstr "Indexer tous les commentaires"
+msgstr "Indexation de tous les commentaires"
 
 msgid "Vacuum logs"
@@ -1155,5 +1155,5 @@
 
 msgid "Delete all logs"
-msgstr "Supprimer tous les journaux"
+msgstr "Suppression de tous les journaux"
 
 msgid "Empty templates cache directory"
@@ -1161,5 +1161,5 @@
 
 msgid "Empty directory"
-msgstr "Vider le répertoire"
+msgstr "Vidage du répertoire"
 
 msgid "Pages"
@@ -1241,5 +1241,5 @@
 
 msgid "Go to this page on the site"
-msgstr "Aller sur cette page"
+msgstr "Voir cette page sur le site"
 
 msgid "Page status:"
@@ -1777,8 +1777,8 @@
 msgid ""
 "Once included in a sidebar, widgets have configuration options that you can "
-"reach by clicking on the + sign next to their name."
+"reach by clicking on the arrow next to their name."
 msgstr ""
 "Une fois inclus dans un bandeau, les widgets ont généralement des options "
-"que vous pouvez configurer. Cliquez sur le signe + à côté de leur nom pour y "
+"que vous pouvez configurer. Cliquez sur la flèche à côté de leur nom pour y "
 "accéder."
 
@@ -1913,2 +1913,15 @@
 #~ msgid "The backup file does not appear to be well formed."
 #~ msgstr "Le fichier de sauvegarde semble mal formaté."
+
+msgid "Settings for %s"
+msgstr "Réglages pour %s"
+
+msgid "Settings for %s"
+msgstr "Réglages pour %s"
+
+msgid "User preferences"
+msgstr "Préférences utilisateur"
+
+msgid "Global preferences"
+msgstr "Préférences globales"
+
Index: locales/fr/resources.php
===================================================================
--- locales/fr/resources.php	(revision 1179)
+++ locales/fr/resources.php	(revision 1343)
@@ -15,9 +15,9 @@
 
 $__resources['doc'] = array(
-	"Accueil de l'aide Dotclear 2" => 'http://doc.dotclear.net/2.0',
-	'Présentation de Dotclear 2' => 'http://doc.dotclear.net/2.0/overview/tour',
+	"Accueil de l'aide Dotclear" => 'http://fr.dotclear.org/documentation/2.0',
+	'Présentation de Dotclear' => 'http://doc.dotclear.net/2.0/overview/tour',
 	"Manuel de l'utilisateur" => 'http://doc.dotclear.net/2.0/usage',
 	"Guide d'installation et d'administration" => 'http://doc.dotclear.net/2.0/admin',
-	"Forum de support de Dotclear 2" => 'http://forum.dotclear.net/'
+	"Forum de support de Dotclear" => 'http://forum.dotclear.net/'
 );
 ?>
Index: locales/hu/help/blowupConfig.html
===================================================================
--- locales/hu/help/blowupConfig.html	(revision 1264)
+++ locales/hu/help/blowupConfig.html	(revision 1280)
@@ -35,5 +35,5 @@
 <p>You can choose a header image among the list to use in place of the default one.</p>
 
-<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong></p>
+<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong>
 
 <p>If you upload a JPG image, a border will be added to the image, which is not the case with PNG images (the transparency of which will also be kept).</p>
Index: locales/hu/plugins.po
===================================================================
--- locales/hu/plugins.po	(revision 1126)
+++ locales/hu/plugins.po	(revision 1354)
@@ -1582,5 +1582,5 @@
 msgstr ""
 
-msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the + sign next to their name."
+msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the arrow next to their name."
 msgstr ""
 
Index: locales/it/help/blowupConfig.html
===================================================================
--- locales/it/help/blowupConfig.html	(revision 1264)
+++ locales/it/help/blowupConfig.html	(revision 1280)
@@ -35,5 +35,5 @@
 <p>You can choose a header image among the list to use in place of the default one.</p>
 
-<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong></p>
+<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong>
 
 <p>If you upload a JPG image, a border will be added to the image, which is not the case with PNG images (the transparency of which will also be kept).</p>
Index: locales/it/plugins.po
===================================================================
--- locales/it/plugins.po	(revision 1126)
+++ locales/it/plugins.po	(revision 1354)
@@ -1529,5 +1529,5 @@
 msgstr ""
 
-msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the + sign next to their name."
+msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the arrow next to their name."
 msgstr ""
 
Index: locales/ja/help/blowupConfig.html
===================================================================
--- locales/ja/help/blowupConfig.html	(revision 1264)
+++ locales/ja/help/blowupConfig.html	(revision 1280)
@@ -35,5 +35,5 @@
 <p>デフォルトで指定されているものの代わりに、リストからヘッダ画像を選ぶことができます。</p>
 
-<p>画像リストで「カスタム...」を選んだ場合、独自の画像をアップロードすることができます。 <strong>画像ファイルは JPG または PNG フォーマットで、横幅が正確に800ピクセルである必要があります。</strong></p>
+<p>画像リストで「カスタム...」を選んだ場合、独自の画像をアップロードすることができます。 <strong>画像ファイルは JPG または PNG フォーマットで、横幅が正確に800ピクセルである必要があります。</strong>
 
 <p>JPG画像がアップロードされた場合、画像に境界線が付加されます。 PNG画像の場合には付加されず、透過性も維持されます。</p>
Index: locales/ja/plugins.po
===================================================================
--- locales/ja/plugins.po	(revision 1126)
+++ locales/ja/plugins.po	(revision 1354)
@@ -1576,5 +1576,5 @@
 msgstr ""
 
-msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the + sign next to their name."
+msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the arrow next to their name."
 msgstr ""
 
Index: locales/ko/help/blowupConfig.html
===================================================================
--- locales/ko/help/blowupConfig.html	(revision 1264)
+++ locales/ko/help/blowupConfig.html	(revision 1280)
@@ -34,5 +34,5 @@
 <p>기본이미지 대신, 목록에 있는 머리글 이미지를 쓰실 수 있습니다.</p>
 
-<p>이미지 목록에서 "개성에 맞게..."를 선택하시면, 당신 자신이 보유한 이미지를 올릴 수 있습니다. <strong>이미지 파일은 JPG나 PNG 포맷이어야하고 폭은 정확히 800px 이어야 합니다.</strong></p>
+<p>이미지 목록에서 "개성에 맞게..."를 선택하시면, 당신 자신이 보유한 이미지를 올릴 수 있습니다. <strong>이미지 파일은 JPG나 PNG 포맷이어야하고 폭은 정확히 800px 이어야 합니다.</strong>
 
 <p>JPG 이미지를 올리실 때는, 윤곽선이 추가됩니다. PNG 이미지의 경우는 해당되지 않습니다. (PNG 이미지의 투명도도 또한 유지됩니다.)</p>
Index: locales/ko/plugins.po
===================================================================
--- locales/ko/plugins.po	(revision 1126)
+++ locales/ko/plugins.po	(revision 1354)
@@ -1583,5 +1583,5 @@
 msgstr ""
 
-msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the + sign next to their name."
+msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the arrow next to their name."
 msgstr ""
 
Index: locales/lt/help/blowupConfig.html
===================================================================
--- locales/lt/help/blowupConfig.html	(revision 1264)
+++ locales/lt/help/blowupConfig.html	(revision 1280)
@@ -35,5 +35,5 @@
 <p>Du kannst ein Bild Deiner Wahl statt des Standardbildes einsetzen.</p>
 
-<p>Wenn Du  "Benutzerdefiniert..." in der Bilderliste ausw&auml;hlst, dann hast Du die M&ouml;glichkeit, Dein eigenes Bild upzuloaden. <strong>Das Dateiformat muss entweder JPG der PNG sein und es muss 800px breit sein.</strong></p>
+<p>Wenn Du  "Benutzerdefiniert..." in der Bilderliste ausw&auml;hlst, dann hast Du die M&ouml;glichkeit, Dein eigenes Bild upzuloaden. <strong>Das Dateiformat muss entweder JPG der PNG sein und es muss 800px breit sein.</strong>
 
 <p>Wenn Du ein JPG-Bild uploadest, dann wird automatisch ein Rahmen um das Bild gesetzt. Dies geschieht nicht bei der Verwendung eines PNG-Bildes und die Transparenz wird ebenfalls beibehalten.</p>
Index: locales/nl/help/blowupConfig.html
===================================================================
--- locales/nl/help/blowupConfig.html	(revision 1264)
+++ locales/nl/help/blowupConfig.html	(revision 1280)
@@ -35,5 +35,5 @@
 <p>You can choose a header image among the list to use in place of the default one.</p>
 
-<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong></p>
+<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong>
 
 <p>If you upload a JPG image, a border will be added to the image, which is not the case with PNG images (the transparency of which will also be kept).</p>
Index: locales/nl/plugins.po
===================================================================
--- locales/nl/plugins.po	(revision 1126)
+++ locales/nl/plugins.po	(revision 1354)
@@ -1536,5 +1536,5 @@
 msgstr ""
 
-msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the + sign next to their name."
+msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the arrow next to their name."
 msgstr ""
 
Index: locales/oc/help/blowupConfig.html
===================================================================
--- locales/oc/help/blowupConfig.html	(revision 1264)
+++ locales/oc/help/blowupConfig.html	(revision 1280)
@@ -35,5 +35,5 @@
 <p>You can choose a header image among the list to use in place of the default one.</p>
 
-<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong></p>
+<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong>
 
 <p>If you upload a JPG image, a border will be added to the image, which is not the case with PNG images (the transparency of which will also be kept).</p>
Index: locales/oc/plugins.po
===================================================================
--- locales/oc/plugins.po	(revision 1126)
+++ locales/oc/plugins.po	(revision 1354)
@@ -1529,5 +1529,5 @@
 msgstr ""
 
-msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the + sign next to their name."
+msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the arrow next to their name."
 msgstr ""
 
Index: locales/pl/help/blowupConfig.html
===================================================================
--- locales/pl/help/blowupConfig.html	(revision 1264)
+++ locales/pl/help/blowupConfig.html	(revision 1280)
@@ -35,5 +35,5 @@
 <p>You can choose a header image among the list to use in place of the default one.</p>
 
-<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong></p>
+<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong>
 
 <p>If you upload a JPG image, a border will be added to the image, which is not the case with PNG images (the transparency of which will also be kept).</p>
Index: locales/pl/plugins.po
===================================================================
--- locales/pl/plugins.po	(revision 1126)
+++ locales/pl/plugins.po	(revision 1354)
@@ -1559,5 +1559,5 @@
 msgstr ""
 
-msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the + sign next to their name."
+msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the arrow next to their name."
 msgstr ""
 
Index: locales/pt-br/help/blowupConfig.html
===================================================================
--- locales/pt-br/help/blowupConfig.html	(revision 1264)
+++ locales/pt-br/help/blowupConfig.html	(revision 1280)
@@ -35,5 +35,5 @@
 <p>You can choose a header image among the list to use in place of the default one.</p>
 
-<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong></p>
+<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong>
 
 <p>If you upload a JPG image, a border will be added to the image, which is not the case with PNG images (the transparency of which will also be kept).</p>
Index: locales/pt-br/plugins.po
===================================================================
--- locales/pt-br/plugins.po	(revision 1126)
+++ locales/pt-br/plugins.po	(revision 1354)
@@ -1529,5 +1529,5 @@
 msgstr ""
 
-msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the + sign next to their name."
+msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the arrow next to their name."
 msgstr ""
 
Index: locales/pt/help/blowupConfig.html
===================================================================
--- locales/pt/help/blowupConfig.html	(revision 1264)
+++ locales/pt/help/blowupConfig.html	(revision 1280)
@@ -51,5 +51,5 @@
 <br />
 
-<em>NOTA: Uma bordura aparecera a volta da imagem o formato JPG, isto não acontece com as imagem em PNG -é a transparência dos PNGs fica efectiva-</em></p>
+<em>NOTA: Uma bordura aparecera a volta da imagem o formato JPG, isto não acontece com as imagem em PNG -é a transparência dos PNGs fica efectiva-</em>
 
 <h4>Estilos pré-definidos</h4>
Index: locales/pt/plugins.po
===================================================================
--- locales/pt/plugins.po	(revision 1126)
+++ locales/pt/plugins.po	(revision 1354)
@@ -1576,5 +1576,5 @@
 msgstr ""
 
-msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the + sign next to their name."
+msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the arrow next to their name."
 msgstr ""
 
Index: locales/ro/help/blowupConfig.html
===================================================================
--- locales/ro/help/blowupConfig.html	(revision 1264)
+++ locales/ro/help/blowupConfig.html	(revision 1280)
@@ -35,5 +35,5 @@
 <p>You can choose a header image among the list to use in place of the default one.</p>
 
-<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong></p>
+<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong>
 
 <p>If you upload a JPG image, a border will be added to the image, which is not the case with PNG images (the transparency of which will also be kept).</p>
Index: locales/ro/plugins.po
===================================================================
--- locales/ro/plugins.po	(revision 1126)
+++ locales/ro/plugins.po	(revision 1354)
@@ -1554,5 +1554,5 @@
 msgstr ""
 
-msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the + sign next to their name."
+msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the arrow next to their name."
 msgstr ""
 
Index: locales/ru/plugins.po
===================================================================
--- locales/ru/plugins.po	(revision 1126)
+++ locales/ru/plugins.po	(revision 1354)
@@ -1565,5 +1565,5 @@
 msgstr ""
 
-msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the + sign next to their name."
+msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the arrow next to their name."
 msgstr ""
 
Index: locales/sr/help/blowupConfig.html
===================================================================
--- locales/sr/help/blowupConfig.html	(revision 1264)
+++ locales/sr/help/blowupConfig.html	(revision 1280)
@@ -35,5 +35,5 @@
 <p>You can choose a header image among the list to use in place of the default one.</p>
 
-<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong></p>
+<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong>
 
 <p>If you upload a JPG image, a border will be added to the image, which is not the case with PNG images (the transparency of which will also be kept).</p>
Index: locales/sr/plugins.po
===================================================================
--- locales/sr/plugins.po	(revision 1126)
+++ locales/sr/plugins.po	(revision 1354)
@@ -1529,5 +1529,5 @@
 msgstr ""
 
-msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the + sign next to their name."
+msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the arrow next to their name."
 msgstr ""
 
Index: locales/sv/help/blowupConfig.html
===================================================================
--- locales/sv/help/blowupConfig.html	(revision 1264)
+++ locales/sv/help/blowupConfig.html	(revision 1280)
@@ -35,5 +35,5 @@
 <p>You can choose a header image among the list to use in place of the default one.</p>
 
-<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong></p>
+<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong>
 
 <p>If you upload a JPG image, a border will be added to the image, which is not the case with PNG images (the transparency of which will also be kept).</p>
Index: locales/sv/plugins.po
===================================================================
--- locales/sv/plugins.po	(revision 1126)
+++ locales/sv/plugins.po	(revision 1354)
@@ -1529,5 +1529,5 @@
 msgstr ""
 
-msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the + sign next to their name."
+msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the arrow next to their name."
 msgstr ""
 
Index: locales/te/help/blowupConfig.html
===================================================================
--- locales/te/help/blowupConfig.html	(revision 1264)
+++ locales/te/help/blowupConfig.html	(revision 1280)
@@ -35,5 +35,5 @@
 <p>You can choose a header image among the list to use in place of the default one.</p>
 
-<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong></p>
+<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong>
 
 <p>If you upload a JPG image, a border will be added to the image, which is not the case with PNG images (the transparency of which will also be kept).</p>
Index: locales/te/plugins.po
===================================================================
--- locales/te/plugins.po	(revision 1126)
+++ locales/te/plugins.po	(revision 1354)
@@ -1558,5 +1558,5 @@
 msgstr ""
 
-msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the + sign next to their name."
+msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the arrow next to their name."
 msgstr ""
 
Index: locales/tr/help/blowupConfig.html
===================================================================
--- locales/tr/help/blowupConfig.html	(revision 1264)
+++ locales/tr/help/blowupConfig.html	(revision 1280)
@@ -35,5 +35,5 @@
 <p>You can choose a header image among the list to use in place of the default one.</p>
 
-<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong></p>
+<p>When you choose "Custom..." in the image list, you will be able to upload your own image. <strong>The image file must be in JPG or PNG format and must be precisely 800px wide.</strong>
 
 <p>If you upload a JPG image, a border will be added to the image, which is not the case with PNG images (the transparency of which will also be kept).</p>
Index: locales/tr/plugins.po
===================================================================
--- locales/tr/plugins.po	(revision 1126)
+++ locales/tr/plugins.po	(revision 1354)
@@ -1546,5 +1546,5 @@
 msgstr ""
 
-msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the + sign next to their name."
+msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the arrow next to their name."
 msgstr ""
 
Index: locales/zh-cn/help/blowupConfig.html
===================================================================
--- locales/zh-cn/help/blowupConfig.html	(revision 1264)
+++ locales/zh-cn/help/blowupConfig.html	(revision 1280)
@@ -35,5 +35,5 @@
 <p>您可以从列表中选择一个头部图片来取代默认的。</p>
 
-<p>当您在图片列表中选择“定制...”，您将可以上传自己的图片。<strong>图片必须是 JPG 或者 PNG 格式并且必须精确等于 800 像素宽。</strong></p>
+<p>当您在图片列表中选择“定制...”，您将可以上传自己的图片。<strong>图片必须是 JPG 或者 PNG 格式并且必须精确等于 800 像素宽。</strong>
 
 <p>如果您上传一个 JPG 图片，一个边框将会被添加。而 PNG 图片不会如此(透明特性也会被保留)。</p>
Index: locales/zh-cn/plugins.po
===================================================================
--- locales/zh-cn/plugins.po	(revision 1126)
+++ locales/zh-cn/plugins.po	(revision 1354)
@@ -1573,5 +1573,5 @@
 msgstr ""
 
-msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the + sign next to their name."
+msgid "Once included in a sidebar, widgets have configuration options that you can reach by clicking on the arrow next to their name."
 msgstr ""
 
Index: plugins/aboutConfig/_admin.php
===================================================================
--- plugins/aboutConfig/_admin.php	(revision 1179)
+++ plugins/aboutConfig/_admin.php	(revision 1294)
@@ -12,5 +12,5 @@
 if (!defined('DC_CONTEXT_ADMIN')) { return; }
 
-$_menu['Plugins']->addItem('about:config','plugin.php?p=aboutConfig','index.php?pf=aboutConfig/icon.png',
+$_menu['System']->addItem('about:config','plugin.php?p=aboutConfig','index.php?pf=aboutConfig/icon.png',
 		preg_match('/plugin.php\?p=aboutConfig(&.*)?$/',$_SERVER['REQUEST_URI']),
 		$core->auth->isSuperAdmin());
Index: plugins/aboutConfig/index.php
===================================================================
--- plugins/aboutConfig/index.php	(revision 1274)
+++ plugins/aboutConfig/index.php	(revision 1358)
@@ -85,6 +85,6 @@
 	
 	return
-	'<tr>'.
-	'<td scope="row"><label for="s_'.$id.'">'.sprintf($slabel,html::escapeHTML($id)).'</label></td>'.
+	'<tr class="line">'.
+	'<td scope="raw"><label for="s_'.$id.'">'.sprintf($slabel,html::escapeHTML($id)).'</label></td>'.
 	'<td>'.$field.'</td>'.
 	'<td>'.$s['type'].'</td>'.
@@ -97,10 +97,5 @@
   <title>about:config</title>
   <?php echo dcPage::jsPageTabs($part); ?>
-  <style type="text/css">
-  table.settings { border: 1px solid #999; margin-bottom: 2em; }
-  table.settings th { background: #f5f5f5; color: #444; padding-top: 0.3em; padding-bottom: 0.3em; }
-  p.anchor-nav {float: right; }
-  </style>
-	<script type="text/javascript">
+  <script type="text/javascript">
 	//<![CDATA[
 	$(function() {
@@ -120,4 +115,10 @@
 <body>
 <?php
+echo dcPage::breadcrumb(
+	array(
+		__('System') => '',
+		html::escapeHTML($core->blog->name) => '',
+		'<span class="page-title">'.__('about:config').'</span>' => ''
+	));
 if (!empty($_GET['upd'])) {
 	dcPage::message(__('Configuration successfully updated'));
@@ -128,10 +129,10 @@
 }
 ?>
-<h2><?php echo html::escapeHTML($core->blog->name); ?> &rsaquo; <span class="page-title">about:config</span></h2>
-
-<div id="local" class="multi-part" title="<?php echo __('blog settings'); ?>">
-
-<?php 
-$table_header = '<table class="settings" id="%s"><caption>%s</caption>'.
+
+<div id="local" class="multi-part" title="<?php echo sprintf(__('Settings for %s'),html::escapeHTML($core->blog->name)); ?>">
+
+
+<?php
+$table_header = '<table class="settings" id="%s"><caption class="as_h3">%s</caption>'.
 '<thead>'.
 '<tr>'."\n".
Index: plugins/antispam/filters/class.dc.filter.iplookup.php
===================================================================
--- plugins/antispam/filters/class.dc.filter.iplookup.php	(revision 1361)
+++ plugins/antispam/filters/class.dc.filter.iplookup.php	(revision 1179)
@@ -44,13 +44,19 @@
 		}
 
+		$match = array();
+
 		$bls = $this->getServers();
 		$bls = preg_split('/\s*,\s*/',$bls);
 
-		foreach ($bls as $bl) {
+		foreach ($bls as $bl)
+		{
 			if ($this->dnsblLookup($ip,$bl)) {
-				// Pass by reference $status to contain matching DNSBL
-				$status = $bl;
-				return true;
+				$match[] = $bl;
 			}
+		}
+
+		if (!empty($match)) {
+			$status = substr(implode(', ',$match),0,128);
+			return true;
 		}
 	}
Index: plugins/antispam/index.php
===================================================================
--- plugins/antispam/index.php	(revision 1274)
+++ plugins/antispam/index.php	(revision 1358)
@@ -123,6 +123,10 @@
 if ($filter_gui !== false)
 {
-	echo '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <a href="'.$p_url.'">'.$page_name.'</a>'.
-		' &rsaquo; <span class="page-title">'.sprintf(__('%s configuration'),$filter->name).'</span></h2>';
+	echo dcPage::breadcrumb(
+		array(
+			__('Plugins') => '',
+			$page_name => $p_url,
+			'<span class="page-title">'.sprintf(__('%s filter configuration'),$filter->name).'</span>' => ''
+		));
 
 	echo $filter_gui;
@@ -130,5 +134,9 @@
 else
 {
-	echo '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <span class="page-title">'.$page_name.'</span></h2>';
+	echo dcPage::breadcrumb(
+		array(
+			__('Plugins') => '',
+			'<span class="page-title">'.$page_name.'</span>' => ''
+		));
 
 	# Information
@@ -170,5 +178,5 @@
 	# Filters
 	echo
-	'<form action="'.$p_url.'" method="post" class="fieldset" id="filters-form">';
+	'<form action="'.$p_url.'" method="post" id="filters-form">';
 
 	if (!empty($_GET['upd'])) {
@@ -178,5 +186,5 @@
 	echo
 	'<table class="dragable">'.
-	'<caption>'.__('Available spam filters').'</caption>'.
+	'<caption class="as_h3">'.__('Available spam filters').'</caption>'.
 	'<thead><tr>'.
 	'<th>'.__('Order').'</th>'.
@@ -204,5 +212,5 @@
 		'<td class="nowrap">'.form::checkbox(array('filters_active[]'),$fid,$f->active, '', '', false, 'title="'.__('Active').'"').'</td>'.
 		'<td class="nowrap">'.form::checkbox(array('filters_auto_del[]'),$fid,$f->auto_delete, '', '', false, 'title="'.__('Auto Del.').'"').'</td>'.
-		'<td class="nowrap" scope="row">'.$f->name.'</td>'.
+		'<td class="nowrap" scope="raw">'.$f->name.'</td>'.
 		'<td class="maximal">'.$f->description.'</td>'.
 		'<td class="status">'.$gui_link.'</td>'.
Index: plugins/antispam/style.css
===================================================================
--- plugins/antispam/style.css	(revision 0)
+++ plugins/antispam/style.css	(revision 1330)
@@ -8,5 +8,4 @@
 	margin: 0.5em 0;
 	padding-left: 16px;
-	/*background: url(index.php?pf=antispam/feed.png) no-repeat center left;*/
 	background-color: transparent;
 	background-position: center left;
Index: plugins/attachments/_admin.php
===================================================================
--- plugins/attachments/_admin.php	(revision 1179)
+++ plugins/attachments/_admin.php	(revision 1365)
@@ -24,5 +24,5 @@
 			$post_media = $core->media->getPostMedia($post->post_id);
 			echo
-			'<h3 class="clear">'.__('Attachments').'</h3>';
+			'<h5 class="clear">'.__('Attachments').'</h5>';
 			foreach ($post_media as $f)
 			{
@@ -53,5 +53,5 @@
 			
 			if (empty($post_media)) {
-				echo '<p>'.__('No attachment.').'</p>';
+				echo '<p class="form-note">'.__('No attachment.').'</p>';
 			} else {
 			}
Index: plugins/attachments/_public.php
===================================================================
--- plugins/attachments/_public.php	(revision 1266)
+++ plugins/attachments/_public.php	(revision 1280)
@@ -40,16 +40,12 @@
 		"<?php\n".
 		'if ($_ctx->posts !== null && $core->media) {'."\n".
-		'$_ctx->attachments = $core->media->getPostMedia($_ctx->posts->post_id, null, true);'."\n".
+			'$_ctx->attachments = new ArrayObject($core->media->getPostMedia($_ctx->posts->post_id));'."\n".
 		"?>\n".
 		
-		'<?php $attach_i = 0; ?>'. // LEGACY
-		'<?php while ($_ctx->attachments->fetch()) : ?>'.
-		
-		'<?php $GLOBALS[\'attach_i\'] = $attach_i; $attach_f = $_ctx->attachments; $GLOBALS[\'attach_f\'] = $attach_f;'. // LEGACY
-		'$_ctx->file_url = $attach_f->file_url; ?>'. // LEGACY
+		'<?php foreach ($_ctx->attachments as $attach_i => $attach_f) : '.
+		'$GLOBALS[\'attach_i\'] = $attach_i; $GLOBALS[\'attach_f\'] = $attach_f;'.
+		'$_ctx->file_url = $attach_f->file_url; ?>'.
 		$content.
-		'<?php $attach_i++; ?>'. // LEGACY
-		'<?php endwhile; '.
-		'$_ctx->attachments = null; ?>'.
+		'<?php endforeach; $_ctx->attachments = null; unset($attach_i,$attach_f,$_ctx->file_url); ?>'.
 		
 		"<?php } ?>\n";
@@ -64,5 +60,5 @@
 	{
 		return
-		"<?php if (\$_ctx->attachments->isStart()) : ?>".
+		"<?php if (\$attach_i == 0) : ?>".
 		$content.
 		"<?php endif; ?>";
@@ -75,5 +71,5 @@
 	{
 		return
-		"<?php if (\$_ctx->attachments->isEnd()) : ?>".
+		"<?php if (\$attach_i+1 == count(\$_ctx->attachments)) : ?>".
 		$content.
 		"<?php endif; ?>";
@@ -97,15 +93,15 @@
 		if (isset($attr['is_image'])) {
 			$sign = (boolean) $attr['is_image'] ? '' : '!';
-			$if[] = $sign.'$_ctx->attachments->media_image';
+			$if[] = $sign.'$attach_f->media_image';
 		}
 		
 		if (isset($attr['has_thumb'])) {
 			$sign = (boolean) $attr['has_thumb'] ? '' : '!';
-			$if[] = $sign.'isset($_ctx->attachments->media_thumb[\'sq\'])';
+			$if[] = $sign.'isset($attach_f->media_thumb[\'sq\'])';
 		}
 		
 		if (isset($attr['is_mp3'])) {
 			$sign = (boolean) $attr['is_mp3'] ? '==' : '!=';
-			$if[] = '$_ctx->attachments->type '.$sign.' "audio/mpeg3"';
+			$if[] = '$attach_f->type '.$sign.' "audio/mpeg3"';
 		}
 		
@@ -113,7 +109,7 @@
 			$sign = (boolean) $attr['is_flv'] ? '' : '!';
 			$if[] = $sign.
-				'($_ctx->attachments->type == "video/x-flv" || '.
-				'$_ctx->attachments->type == "video/mp4" || '.
-				'$_ctx->attachments->type == "video/x-m4v")';
+				'($attach_f->type == "video/x-flv" || '.
+				'$attach_f->type == "video/mp4" || '.
+				'$attach_f->type == "video/x-m4v")';
 		}
 		
@@ -131,5 +127,5 @@
 	{
 		$f = $GLOBALS['core']->tpl->getFilters($attr);
-		return '<?php echo '.sprintf($f,'$_ctx->attachments->type').'; ?>';
+		return '<?php echo '.sprintf($f,'$attach_f->type').'; ?>';
 	}
 	
@@ -140,5 +136,5 @@
 	{
 		$f = $GLOBALS['core']->tpl->getFilters($attr);
-		return '<?php echo '.sprintf($f,'$_ctx->attachments->media_type').'; ?>';
+		return '<?php echo '.sprintf($f,'$attach_f->media_type').'; ?>';
 	}
 	
@@ -149,5 +145,5 @@
 	{
 		$f = $GLOBALS['core']->tpl->getFilters($attr);
-		return '<?php echo '.sprintf($f,'$_ctx->attachments->basename').'; ?>';
+		return '<?php echo '.sprintf($f,'$attach_f->basename').'; ?>';
 	}
 	
@@ -162,7 +158,7 @@
 		$f = $GLOBALS['core']->tpl->getFilters($attr);
 		if (!empty($attr['full'])) {
-			return '<?php echo '.sprintf($f,'$_ctx->attachments->size').'; ?>';
-		}
-		return '<?php echo '.sprintf($f,'files::size($_ctx->attachments->size)').'; ?>';
+			return '<?php echo '.sprintf($f,'$attach_f->size').'; ?>';
+		}
+		return '<?php echo '.sprintf($f,'files::size($attach_f->size)').'; ?>';
 	}
 	
@@ -173,5 +169,5 @@
 	{
 		$f = $GLOBALS['core']->tpl->getFilters($attr);
-		return '<?php echo '.sprintf($f,'$_ctx->attachments->media_title').'; ?>';
+		return '<?php echo '.sprintf($f,'$attach_f->media_title').'; ?>';
 	}
 	
@@ -184,6 +180,6 @@
 		return
 		'<?php '.
-		'if (isset($_ctx->attachments->media_thumb[\'sq\'])) {'.
-			'echo '.sprintf($f,'$_ctx->attachments->media_thumb[\'sq\']').';'.
+		'if (isset($attach_f->media_thumb[\'sq\'])) {'.
+			'echo '.sprintf($f,'$attach_f->media_thumb[\'sq\']').';'.
 		'}'.
 		'?>';
@@ -196,5 +192,5 @@
 	{
 		$f = $GLOBALS['core']->tpl->getFilters($attr);
-		return '<?php echo '.sprintf($f,'$_ctx->attachments->file_url').'; ?>';
+		return '<?php echo '.sprintf($f,'$attach_f->file_url').'; ?>';
 	}
 	
Index: plugins/blogroll/_admin.php
===================================================================
--- plugins/blogroll/_admin.php	(revision 1179)
+++ plugins/blogroll/_admin.php	(revision 1296)
@@ -25,5 +25,5 @@
 }
 
-$_menu['Plugins']->addItem(__('Blogroll'),'plugin.php?p=blogroll','index.php?pf=blogroll/icon-small.png',
+$_menu['Blog']->addItem(__('Blogroll'),'plugin.php?p=blogroll','index.php?pf=blogroll/icon-small.png',
                 preg_match('/plugin.php\?p=blogroll(&.*)?$/',$_SERVER['REQUEST_URI']),
                 $core->auth->check('usage,contentadmin',$core->blog->id));
Index: plugins/blogroll/edit.php
===================================================================
--- plugins/blogroll/edit.php	(revision 1179)
+++ plugins/blogroll/edit.php	(revision 1358)
@@ -95,4 +95,12 @@
 
 <body>
+<?php
+	echo dcPage::breadcrumb(
+		array(
+			html::escapeHTML($core->blog->name) => '',
+			'<span class="page-title">'.__('Blogroll').'</span>' => $p_url
+		));
+?>
+
 <?php echo '<p><a href="'.$p_url.'">'.__('Return to blogroll').'</a></p>'; ?>
 
Index: plugins/blogroll/index.php
===================================================================
--- plugins/blogroll/index.php	(revision 1179)
+++ plugins/blogroll/index.php	(revision 1358)
@@ -177,5 +177,11 @@
 
 <body>
-<h2><?php echo html::escapeHTML($core->blog->name); ?> &rsaquo; <span class="page-title"><?php echo __('Blogroll'); ?></span></h2>
+<?php
+	echo dcPage::breadcrumb(
+		array(
+			html::escapeHTML($core->blog->name) => '',
+			'<span class="page-title">'.__('Blogroll').'</span>' => ''
+		));
+?>
 
 <?php
Index: plugins/blowupConfig/index.php
===================================================================
--- plugins/blowupConfig/index.php	(revision 1179)
+++ plugins/blowupConfig/index.php	(revision 1358)
@@ -221,7 +221,12 @@
 <body>
 <?php
-echo
-'<h2>'.html::escapeHTML($core->blog->name).
-' &rsaquo; <a href="blog_theme.php">'.__('Blog appearance').'</a> &rsaquo; <span class="page-title">'.__('Blowup configuration').'</span></h2>'.
+echo dcPage::breadcrumb(
+	array(
+		html::escapeHTML($core->blog->name) => '',
+		__('Blog appearance') => 'blog_theme.php',
+		'<span class="page-title">'.__('Blowup configuration').'</span>' => ''
+	));
+
+echo
 '<p><a class="back" href="blog_theme.php">'.__('back').'</a></p>';
 
Index: plugins/daInstaller/index.php
===================================================================
--- plugins/daInstaller/index.php	(revision 1237)
+++ plugins/daInstaller/index.php	(revision 1358)
@@ -255,6 +255,14 @@
 '</head>'.
 '<body>'.
-infoMessages().
-'<h2 class="page-title">'.__('DotAddict.org Installer').'</h2>'.
+
+dcPage::breadcrumb(
+	array(
+		__('System') => '',
+		'<span class="page-title">'.__('DotAddict.org Installer').'</span>' => ''
+	)).
+
+infoMessages();
+
+echo
 '<p>'.__('Install and update your extensions live from DotAddict.org').'</p>';
 
Index: plugins/importExport/inc/class.dc.import.flat.php
===================================================================
--- plugins/importExport/inc/class.dc.import.flat.php	(revision 939)
+++ plugins/importExport/inc/class.dc.import.flat.php	(revision 1298)
@@ -184,12 +184,12 @@
 		'<p>'.sprintf(__('This will import a single blog backup as new content in the current blog: %s.'),html::escapeHTML($this->core->blog->name)).'</p>'.
 		
-		'<p><label for="up_single_file">'.__('Upload a backup file').
-		' ('.sprintf(__('Maximum size %s'),files::size(DC_MAX_UPLOAD_SIZE)).')'.'</label>'.
-		'<input type="file" id="up_single_file" name="up_single_file" size="20" />'.
+		'<p><label for="up_single_file" class="classic">'.__('Upload a backup file').
+		' ('.sprintf(__('Maximum size %s'),files::size(DC_MAX_UPLOAD_SIZE)).')'.' </label>'.
+		' <input type="file" id="up_single_file" name="up_single_file" size="20" />'.
 		'</p>';
 		
 		if ($has_files) {
 			echo 
-			'<p><label for="public_single_file">'.__('or pick up a local file in your public directory').' '.
+			'<p><label for="public_single_file" class="classic">'.__('or pick up a local file in your public directory').' '.
 			form::combo('public_single_file',$public_files).
 			'</label></p>';
@@ -211,8 +211,8 @@
 			'<form action="'.$this->getURL(true).'" method="post" enctype="multipart/form-data" id="formfull">'.
 			'<fieldset><legend>'.__('Multiple blogs').'</legend>'.
-			'<p>'.__('This will reset all the content of your database, except users.').'</p>'.
-			
-			'<p><label for="up_full_file">'.__('Upload a backup file').
-			' ('.sprintf(__('Maximum size %s'),files::size(DC_MAX_UPLOAD_SIZE)).')'.'</label>'.
+			'<p class="warning">'.__('This will reset all the content of your database, except users.').'</p>'.
+			
+			'<p><label for="up_full_file" class="classic">'.__('Upload a backup file').' '.
+			' ('.sprintf(__('Maximum size %s'),files::size(DC_MAX_UPLOAD_SIZE)).')'.' </label>'.
 			'<input type="file" id="up_full_file" name="up_full_file" size="20" />'.
 			'</p>';
@@ -220,5 +220,5 @@
 			if ($has_files) {
 				echo 
-				'<p><label for="public_full_file">'.__('or pick up a local file in your public directory').'</label>'.
+				'<p><label for="public_full_file" class="classic">'.__('or pick up a local file in your public directory').' </label>'.
 				form::combo('public_full_file',$public_files).
 				'</p>';
Index: plugins/importExport/index.php
===================================================================
--- plugins/importExport/index.php	(revision 840)
+++ plugins/importExport/index.php	(revision 1358)
@@ -74,7 +74,12 @@
 
 if ($type && $module !== null) {
+	echo dcPage::breadcrumb(
+		array(
+			__('Plugins') => '',
+			$title => $p_url,
+			'<span class="page-title">'.html::escapeHTML($module->name).'</span>' => ''
+		));
+
 	echo
-	'<h2><a href="'.$p_url.'">'.$title.'</a>'.
-	' &rsaquo; <span class="page-title">'.html::escapeHTML($module->name).'</span></h2>'.
 	'<div id="ie-gui">';
 	
@@ -84,6 +89,11 @@
 }
 else {
+	echo dcPage::breadcrumb(
+		array(
+			__('Plugins') => '',
+			'<span class="page-title">'.$title.'</span>' => ''
+		));
+
 	echo
-	'<h2 class="page-title">'.$title.'</h2>'.
 	'<h3>'.__('Import').'</h3>'.listImportExportModules($core,$modules['import']).
 	'<h3>'.__('Export').'</h3>'.listImportExportModules($core,$modules['export']);
Index: plugins/maintenance/index.php
===================================================================
--- plugins/maintenance/index.php	(revision 1179)
+++ plugins/maintenance/index.php	(revision 1358)
@@ -69,5 +69,11 @@
 
 <body>
-<h2 class="page-title"><?php echo __('Maintenance'); ?></h2>
+<?php
+	echo dcPage::breadcrumb(
+		array(
+			__('Plugins') => '',
+			'<span class="page-title">'.__('Maintenance').'</span>' => ''
+		));
+?>
 
 <?php
Index: plugins/maintenance/locales/fr/help/maintenance.html
===================================================================
--- plugins/maintenance/locales/fr/help/maintenance.html	(revision 1272)
+++ plugins/maintenance/locales/fr/help/maintenance.html	(revision 1280)
@@ -10,8 +10,8 @@
 <dl>
   <dt>Optimiser l'espace de la base de données</dt>
-  <dd>Au fur et à mesure des suppressions ou modifications dans vos billets, les tables de la 
+  <dd>Au fur at à mesure des suppressions ou modifications dans vos billets, les tables de la 
   base de données se fragmentent. L'opération d'optimisation permet de compacter celles-ci.<br />
   Cette opération n'a aucun impact sur l'intégrité de vos données.<br />
-  Il est fortement conseillé d'optimiser la base de données avant tout export de blog.</dd>
+  Il est fortement conseillé d'optimiser la base de données avant tout export de blog</dd>
   
   <dt>Compteurs</dt>
Index: plugins/pages/list.php
===================================================================
--- plugins/pages/list.php	(revision 1179)
+++ plugins/pages/list.php	(revision 1358)
@@ -177,5 +177,11 @@
 <body>
 <?php
-echo '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <span class="page-title">'.__('Pages').'</span></h2>'.
+echo dcPage::breadcrumb(
+	array(
+		html::escapeHTML($core->blog->name) => '',
+		'<span class="page-title">'.__('Pages').'</span>' => ''
+	));
+
+echo
 '<p class="top-add"><a class="button add" href="'.$p_url.'&amp;act=page">'.__('New page').'</a></p>';
 
Index: plugins/pages/page.php
===================================================================
--- plugins/pages/page.php	(revision 1239)
+++ plugins/pages/page.php	(revision 1358)
@@ -302,5 +302,4 @@
   dcPage::jsToolBar().
   dcPage::jsModal().
-  dcPage::jsMetaEditor().
   dcPage::jsLoad('js/_post.js').
   dcPage::jsConfirmClose('entry-form','comment-form').
@@ -316,4 +315,32 @@
 <?php
 
+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_title = '&ldquo;'.$post_title.'&rdquo;'.' '.$img_status;
+} else {
+	$edit_entry_title = $page_title;
+}
+echo dcPage::breadcrumb(
+	array(
+		html::escapeHTML($core->blog->name) => '',
+		__('Pages') => $p_url,
+		'<span class="page-title">'.$edit_entry_title.'</span>' => ''
+	));
+
 if (!empty($_GET['upd'])) {
 	dcPage::message(__('Page has been successfully updated.'));
@@ -339,29 +366,6 @@
 }
 
-echo '<h2>'.html::escapeHTML($core->blog->name).
-' &rsaquo; <a href="'.$p_url.'">'.__('Pages').'</a> &rsaquo; <span class="page-title">'.$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 = '';
-		}
-		echo ' &ldquo;'.$post_title.'&rdquo;'.' '.$img_status;
-	}
-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 page on the site').' <img src="images/outgoing-blue.png" alt="" /></a></p>';
+	echo '<p><a class="preview_link" href="'.$post->getURL().'" onclick="window.open(this.href);return false;" title="'.$post_title.' ('.__('new window').')'.'">'.__('Go to this page on the site').' <img src="images/outgoing-blue.png" alt="" /></a></p>';
 }
 
@@ -370,7 +374,7 @@
 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; }
 	
Index: plugins/pings/index.php
===================================================================
--- plugins/pings/index.php	(revision 1179)
+++ plugins/pings/index.php	(revision 1358)
@@ -51,5 +51,10 @@
 <body>
 <?php
-echo '<h2 class="page-title">'.__('Pings configuration').'</h2>';
+
+echo dcPage::breadcrumb(
+	array(
+		__('Plugins') => '',
+		'<span class="page-title">'.__('Pings configuration').'</span>' => ''
+	));
 
 if (!empty($_GET['up'])) {
Index: plugins/pings/lib.pings.php
===================================================================
--- plugins/pings/lib.pings.php	(revision 1179)
+++ plugins/pings/lib.pings.php	(revision 1365)
@@ -59,5 +59,5 @@
 		}
 		
-		echo '<h3 class="ping-services">'.__('Pings:').'</h3>';
+		echo '<h5 class="ping-services">'.__('Pings:').'</h5>';
 		$i = 0;
 		foreach ($pings_uris as $k => $v)
Index: plugins/pings/post.js
===================================================================
--- plugins/pings/post.js	(revision 0)
+++ plugins/pings/post.js	(revision 1365)
@@ -12,5 +12,5 @@
 			$('p.ping-services:last').after(p.append(a));
 		}
-		$('h3.ping-services').toggleWithLegend($('p.ping-services'),{
+		$('h5.ping-services').toggleWithLegend($('p.ping-services'),{
 			cookie: 'dcx_ping_services'
 		});
Index: plugins/simpleMenu/_admin.php
===================================================================
--- plugins/simpleMenu/_admin.php	(revision 1179)
+++ plugins/simpleMenu/_admin.php	(revision 1292)
@@ -25,5 +25,5 @@
 }
 
-$_menu['Plugins']->addItem(__('Simple menu'),'plugin.php?p=simpleMenu','index.php?pf=simpleMenu/icon-small.png',
+$_menu['Blog']->addItem(__('Simple menu'),'plugin.php?p=simpleMenu','index.php?pf=simpleMenu/icon-small.png',
                 preg_match('/plugin.php\?p=simpleMenu(&.*)?$/',$_SERVER['REQUEST_URI']),
                 $core->auth->check('usage,contentadmin',$core->blog->id));
Index: plugins/simpleMenu/index.php
===================================================================
--- plugins/simpleMenu/index.php	(revision 1273)
+++ plugins/simpleMenu/index.php	(revision 1358)
@@ -368,4 +368,19 @@
 <?php
 
+if ($step) {
+	echo dcPage::breadcrumb(
+		array(
+			html::escapeHTML($core->blog->name) => '',
+			$page_title => $p_url,
+			'<span class="page-title">'.__('Add item').'</span>' => ''
+		));
+} else {
+	echo dcPage::breadcrumb(
+		array(
+			html::escapeHTML($core->blog->name) => '',
+			'<span class="page-title">'.$page_title.'</span>' => ''
+		));
+}
+
 if (!empty($_GET['added'])) {
 	dcPage::message(__('Menu item has been successfully added.'));
@@ -381,13 +396,11 @@
 }
 
-if ($step) 
+if ($step)
 {
 	// Formulaire d'ajout d'un item
-	echo '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <a href="'.$p_url.'">'.$page_title.'</a> &rsaquo; <span class="page-title">'.__('Add item').'</span></h2>';
-	
 	switch ($step) {
 		case 1:
 			// Selection du type d'item
-			echo '<form id="additem" action="'.$p_url.'&amp;add=2" method="post">';
+			echo '<form id="additem" action="'.$p_url.'&add=2" method="post">';
 			echo '<fieldset><legend>'.__('Select type').'</legend>';
 			echo '<p class="field"><label for="item_type" class="classic">'.__('Type of item menu:').'</label>'.form::combo('item_type',$items_combo,'').'</p>';
@@ -399,5 +412,5 @@
 			if ($items[$item_type][1]) {
 				// Choix à faire
-				echo '<form id="additem" action="'.$p_url.'&amp;add=3" method="post">';
+				echo '<form id="additem" action="'.$p_url.'&add=3" method="post">';
 				echo '<fieldset><legend>'.$item_type_label.'</legend>';
 				switch ($item_type) {
@@ -436,5 +449,5 @@
 		case 3:
 			// Libellé et description
-			echo '<form id="additem" action="'.$p_url.'&amp;add=4" method="post">';
+			echo '<form id="additem" action="'.$p_url.'&add=4" method="post">';
 			echo '<fieldset><legend>'.$item_type_label.($item_select_label != '' ? ' ('.$item_select_label.')' : '').'</legend>';
 			echo '<p class="field"><label for="item_label" class="classic required"><abbr title="'.__('Required field').'">*</abbr> '.
@@ -454,10 +467,6 @@
 // Liste des items
 if (!$step) {
-	echo '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <span class="page-title">'.$page_title.'</span></h2>';
-}
-
-if (!$step) {
-	echo '<form id="menuitemsappend" action="'.$p_url.'&amp;add=1" method="post">';
-	echo '<p>'.$core->formNonce().'<input class="add" type="submit" name="appendaction" value="'.__('Add an item').'" /></p>';
+	echo '<form id="menuitemsappend" action="'.$p_url.'&add=1" method="post">';
+	echo '<p class="top-add">'.$core->formNonce().'<input class="button add" type="submit" name="appendaction" value="'.__('Add an item').'" /></p>';
 	echo '</form>';
 }
Index: plugins/tags/_admin.php
===================================================================
--- plugins/tags/_admin.php	(revision 1239)
+++ plugins/tags/_admin.php	(revision 1365)
@@ -23,6 +23,4 @@
 $core->addBehavior('adminAfterPostUpdate',array('tagsBehaviors','setTags'));
 
-$core->addBehavior('adminPageHeaders',array('tagsBehaviors','pageHeaders'));
-
 $core->addBehavior('adminPostHeaders',array('tagsBehaviors','postHeaders'));
 $core->addBehavior('adminPostsActionsHeaders',array('tagsBehaviors','postsActionsHeaders'));
@@ -84,5 +82,5 @@
 		
 		echo
-		'<h3><label for="post_tags">'.__('Tags:').'</label></h3>'.
+		'<h5><label for="post_tags">'.__('Tags:').'</label></h5>'.
 		'<div class="p" id="tags-edit">'.form::textarea('post_tags',20,3,$value,'maximal').'</div>';
 	}
@@ -101,33 +99,4 @@
 			}
 		}
-	}
-
-	public static function pageHeaders()
-	{
-		$tag_url = $GLOBALS['core']->blog->url.$GLOBALS['core']->url->getURLFor('tag');
-		
-		$opts = $GLOBALS['core']->auth->getOptions();
-		$type = isset($opts['tag_list_format']) ? $opts['tag_list_format'] : 'more';
-		
-		return 
-		'<script type="text/javascript" src="index.php?pf=tags/js/jquery.autocomplete.js"></script>'.
-		'<script type="text/javascript" src="index.php?pf=tags/js/page.js"></script>'.
-		'<script type="text/javascript">'."\n".
-		"//<![CDATA[\n".
-		"metaEditor.prototype.meta_url = 'plugin.php?p=tags&m=tag_posts&amp;tag=';\n".
-		"metaEditor.prototype.meta_type = '".html::escapeJS($type)."';\n".
-		"metaEditor.prototype.text_confirm_remove = '".html::escapeJS(__('Are you sure you want to remove this %s?'))."';\n".
-		"metaEditor.prototype.text_add_meta = '".html::escapeJS(__('Add a %s to this entry'))."';\n".
-		"metaEditor.prototype.text_choose = '".html::escapeJS(__('Choose from list'))."';\n".
-		"metaEditor.prototype.text_all = '".html::escapeJS(__('all'))."';\n".
-		"metaEditor.prototype.text_separation = '';\n".
-		"jsToolBar.prototype.elements.tag.title = '".html::escapeJS(__('Tag'))."';\n".
-		"jsToolBar.prototype.elements.tag.url = '".html::escapeJS($tag_url)."';\n".
-		"dotclear.msg.tags_autocomplete = '".html::escapeJS(__('used in %e - frequency %p%'))."';\n".
-		"dotclear.msg.entry = '".html::escapeJS(__('entry'))."';\n".
-		"dotclear.msg.entries = '".html::escapeJS(__('entries'))."';\n".
-		"\n//]]>\n".
-		"</script>\n".
-		'<link rel="stylesheet" type="text/css" href="index.php?pf=tags/style.css" />';
 	}
 	
Index: lugins/tags/js/page.js
===================================================================
--- plugins/tags/js/page.js	(revision 1240)
+++ 	(revision )
@@ -1,70 +1,0 @@
-$(function () {
-    $('#edit-entry').onetabload(function () {
-        var tags_edit = $('#tags-edit');
-        var post_id = $('#id');
-        var meta_field = null;
-        if (tags_edit.length > 0) {
-            post_id = (post_id.length > 0) ? post_id.get(0).value : false;
-            if (post_id == false) {
-                meta_field = $('<input type="hidden" name="post_tags" />');
-                meta_field.val($('#post_tags').val());
-            }
-            var mEdit = new metaEditor(tags_edit, meta_field, 'tag');
-            mEdit.meta_url = 'plugin.php?p=tags&m=tag_posts&amp;tag=';
-            mEdit.displayMeta('tag', post_id);
-            window.dc_tag_editor = mEdit;
-        }
-    });
-});
-jsToolBar.prototype.elements.tagSpace = {
-    type: 'space'
-};
-jsToolBar.prototype.elements.tag = {
-    type: 'button',
-    title: 'Keyword',
-    fn: {}
-};
-jsToolBar.prototype.elements.tag.context = 'post';
-jsToolBar.prototype.elements.tag.icon = 'index.php?pf=tags/img/tag-add.png';
-jsToolBar.prototype.elements.tag.fn.wiki = function () {
-    this.encloseSelection('', '', function (str) {
-        if (str == '') {
-            window.alert(dotclear.msg.no_selection);
-            return '';
-        }
-        if (str.indexOf(',') != -1) {
-            return str;
-        } else {
-            return '[' + str + '|tag:' + str + ']';
-        }
-    });
-};
-jsToolBar.prototype.elements.tag.fn.xhtml = function () {
-    var url = this.elements.tag.url;
-    this.encloseSelection('', '', function (str) {
-        if (str == '') {
-            window.alert(dotclear.msg.no_selection);
-            return '';
-        }
-        if (str.indexOf(',') != -1) {
-            return str;
-        } else {
-            return '<a href="' + this.stripBaseURL(url + '/' + str) + '">' + str + '</a>';
-        }
-    });
-};
-jsToolBar.prototype.elements.tag.fn.wysiwyg = function () {
-    var t = this.getSelectedText();
-    if (t == '') {
-        window.alert(dotclear.msg.no_selection);
-        return;
-    }
-    if (t.indexOf(',') != -1) {
-        return;
-    }
-    var n = this.getSelectedNode();
-    var a = document.createElement('a');
-    a.href = this.stripBaseURL(this.elements.tag.url + '/' + t);
-    a.appendChild(n);
-    this.insertNode(a);
-};
Index: plugins/tags/tag_posts.php
===================================================================
--- plugins/tags/tag_posts.php	(revision 1288)
+++ plugins/tags/tag_posts.php	(revision 1358)
@@ -109,6 +109,12 @@
 <body>
 
-<h2><?php echo html::escapeHTML($core->blog->name); ?> &rsaquo;
-<span class="page-title"><?php echo __('Edit tag').' &ldquo;'.html::escapeHTML($tag).'&rdquo;'; ?></span></h2>
+<?php
+echo dcPage::breadcrumb(
+	array(
+		html::escapeHTML($core->blog->name) => '',
+		__('Tags') => $p_url.'&amp;m=tags',
+		'<span class="page-title">'.__('Tag').' &ldquo;'.html::escapeHTML($tag).'&rdquo;'.'</span>' => ''
+	));
+?>
 
 <?php
Index: plugins/tags/tags.php
===================================================================
--- plugins/tags/tags.php	(revision 1179)
+++ plugins/tags/tags.php	(revision 1358)
@@ -20,6 +20,11 @@
 
 <body>
-<h2><?php echo html::escapeHTML($core->blog->name); ?> &rsaquo;
-<span class="page-title"><?php echo __('Tags'); ?></span></h2>
+<?php
+echo dcPage::breadcrumb(
+	array(
+		html::escapeHTML($core->blog->name) => '',
+		'<span class="page-title">'.__('Tags').'</span>' => ''
+	));
+?>
 
 <?php
Index: plugins/themeEditor/index.php
===================================================================
--- plugins/themeEditor/index.php	(revision 1179)
+++ plugins/themeEditor/index.php	(revision 1358)
@@ -86,6 +86,12 @@
 
 <body>
-<?php echo '<h2>'.html::escapeHTML($core->blog->name).
-' &rsaquo; <a href="blog_theme.php">'.__('Blog appearance').'</a> &rsaquo; <span class="page-title">'.__('Theme Editor').'</span></h2>'; ?>
+<?php
+echo dcPage::breadcrumb(
+	array(
+		html::escapeHTML($core->blog->name) => '',
+		__('Blog appearance') => 'blog_theme.php',
+		'<span class="page-title">'.__('Theme Editor').'</span>' => ''
+	));
+?>
 
 <p><strong><?php echo sprintf(__('Your current theme on this blog is "%s".'),html::escapeHTML($T['name'])); ?></strong></p>
Index: plugins/userPref/_admin.php
===================================================================
--- plugins/userPref/_admin.php	(revision 1179)
+++ plugins/userPref/_admin.php	(revision 1293)
@@ -12,5 +12,5 @@
 if (!defined('DC_CONTEXT_ADMIN')) { return; }
 
-$_menu['Plugins']->addItem('user:preferences','plugin.php?p=userPref','index.php?pf=userPref/icon.png',
+$_menu['System']->addItem('user:preferences','plugin.php?p=userPref','index.php?pf=userPref/icon.png',
 		preg_match('/plugin.php\?p=userPref(&.*)?$/',$_SERVER['REQUEST_URI']),
 		$core->auth->isSuperAdmin());
Index: plugins/userPref/index.php
===================================================================
--- plugins/userPref/index.php	(revision 1274)
+++ plugins/userPref/index.php	(revision 1358)
@@ -81,6 +81,6 @@
 	
 	return
-	'<tr>'.
-	'<td scope="row"><label for="s_'.$id.'">'.sprintf($slabel,html::escapeHTML($id)).'</label></td>'.
+	'<tr class="line">'.
+	'<td scope="raw"><label for="s_'.$id.'">'.sprintf($slabel,html::escapeHTML($id)).'</label></td>'.
 	'<td>'.$field.'</td>'.
 	'<td>'.$s['type'].'</td>'.
@@ -93,9 +93,4 @@
   <title>user:preferences</title>
   <?php echo dcPage::jsPageTabs($part); ?>
-  <style type="text/css">
-	table.prefs { border: 1px solid #999; margin-bottom: 2em; }
-	table.prefs th { background: #f5f5f5; color: #444; padding-top: 0.3em; padding-bottom: 0.3em; }
-	p.anchor-nav {float: right; }
-  </style>
 	<script type="text/javascript">
 	//<![CDATA[
@@ -116,4 +111,11 @@
 <body>
 <?php
+echo dcPage::breadcrumb(
+	array(
+		__('System') => '',
+		html::escapeHTML($core->auth->userID()) => '',
+		'<span class="page-title">'.__('user:preferences').'</span>' => ''
+	));
+
 if (!empty($_GET['upd'])) {
 	dcPage::message(__('Preferences successfully updated'));
@@ -124,10 +126,9 @@
 }
 ?>
-<h2><?php echo html::escapeHTML($core->auth->userID()); ?> &rsaquo; <span class="page-title">user:preferences</span></h2>
-
-<div id="local" class="multi-part" title="<?php echo __('user preferences'); ?>">
+
+<div id="local" class="multi-part" title="<?php echo __('User preferences'); ?>">
 
 <?php 
-$table_header = '<table class="prefs" id="%s"><caption>%s</caption>'.
+$table_header = '<table class="prefs" id="%s"><caption class="as_h3">%s</caption>'.
 '<thead>'.
 '<tr>'."\n".
@@ -184,5 +185,5 @@
 </div>
 
-<div id="global" class="multi-part" title="<?php echo __('global preferences'); ?>">
+<div id="global" class="multi-part" title="<?php echo __('Global preferences'); ?>">
 
 <?php
Index: plugins/widgets/_widgets_functions.php
===================================================================
--- plugins/widgets/_widgets_functions.php	(revision 1253)
+++ plugins/widgets/_widgets_functions.php	(revision 1280)
@@ -29,6 +29,8 @@
 		($w->title ? '<h2><label for="q">'.html::escapeHTML($w->title).'</label></h2>' : '').
 		'<form action="'.$core->blog->url.'" method="get">'.
+		'<fieldset>'.
 		'<p><input type="text" size="10" maxlength="255" id="q" name="q" value="'.$value.'" /> '.
 		'<input type="submit" class="submit" value="ok" /></p>'.
+		'</fieldset>'.
 		'</form>'.
 		($w->content_only ? '' : '</div>');
Index: plugins/widgets/index.php
===================================================================
--- plugins/widgets/index.php	(revision 1179)
+++ plugins/widgets/index.php	(revision 1358)
@@ -188,5 +188,9 @@
 <body>
 <?php
-echo '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <span class="page-title">'.__('Widgets').'</span></h2>';
+echo dcPage::breadcrumb(
+	array(
+		html::escapeHTML($core->blog->name) => '',
+		'<span class="page-title">'.__('Widgets').'</span>' => ''
+	));
 
 # All widgets
@@ -248,5 +252,5 @@
 'drag it from the Available widgets list on the left to one of the sidebars on the right of this page. You can order '.
 'your widgets in a sidebar by dragging them up or down. You must update sidebars to apply your changes.').'</p>'.
-'<p>'.__('Once included in a sidebar, widgets have configuration options that you can reach by clicking on the + sign next '.
+'<p>'.__('Once included in a sidebar, widgets have configuration options that you can reach by clicking on the arrow next '.
 'to their name.').'</p>'.
 '<p>'.__('Reset sidebars to get back to default widgets installation.').'</p>'.
Index: plugins/widgets/style.css
===================================================================
--- plugins/widgets/style.css	(revision 665)
+++ plugins/widgets/style.css	(revision 1301)
@@ -40,5 +40,5 @@
 
 .widgets p.widget-name {
-	background: #E5E3DA;
+	background: #F0EFEA;
 	color: #000;
 	padding: 4px;
@@ -46,5 +46,5 @@
 	border-width: 1px 1px 1px 1px;
 	border-style: solid;
-	border-color: #666;
+	border-color: #bbb;
 	font-weight: bold;
 }
