Index: .hgsubstate
===================================================================
--- .hgsubstate	(revision 1624)
+++ .hgsubstate	(revision 1529)
@@ -1,1 +1,1 @@
-f5e0517435fc94082b6acaad5f4f111252b6149f inc/libs/clearbricks
+716e99c54652d08c2e4395d5179e817e0f98182d inc/libs/clearbricks
Index: admin/blog.php
===================================================================
--- admin/blog.php	(revision 1615)
+++ admin/blog.php	(revision 1482)
@@ -82,12 +82,7 @@
 	'<p><label class="required" for="blog_id"><abbr title="'.__('Required field').'">*</abbr> '.__('Blog ID:').'</label> '.
 	form::field('blog_id',30,32,html::escapeHTML($blog_id)).'</p>'.
-	'<p class="form-note">'.__('At least 2 characters using letters, numbers or symbols.').'</p> ';
-
-	if ($blog_id) {
-		echo
-		'<p class="form-note warn">'.__('Please note that changing your blog ID may require changes in your public index.php file.').'</p>';
-	}
+	'<p class="form-note">'.__('At least 2 characters using letters, numbers or symbols.').'</p> '.
+	'<p class="form-note warn">'.__('Please note that changing your blog ID may require changes in your public index.php file.').'</p>'.
 	
-	echo
 	'<p><label class="required" for="blog_name"><abbr title="'.__('Required field').'">*</abbr> '.__('Blog name:').'</label> '.
 	form::field('blog_name',30,255,html::escapeHTML($blog_name)).'</p>'.
Index: admin/blog_pref.php
===================================================================
--- admin/blog_pref.php	(revision 1620)
+++ admin/blog_pref.php	(revision 1553)
@@ -111,12 +111,8 @@
 # Image default size combo
 $img_default_size_combo = array();
-try {
-	$media = new dcMedia($core);
-	$img_default_size_combo[__('original')] = 'o';
-	foreach ($media->thumb_sizes as $code => $size) {
-		$img_default_size_combo[__($size[2])] = $code;
-	}
-} catch (Exception $e) {
-	$core->error->add($e->getMessage());
+$media = new dcMedia($core);
+$img_default_size_combo[__('original')] = 'o';
+foreach ($media->thumb_sizes as $code => $size) {
+	$img_default_size_combo[__($size[2])] = $code;
 }
 
@@ -174,5 +170,5 @@
 			
 			if ($rs) {
-				throw new Exception(__('This blog ID is already used.'));
+				throw new Exception(__('That blog Id is already in use.'));
 			}
 		}
Index: admin/index.php
===================================================================
--- admin/index.php	(revision 1620)
+++ admin/index.php	(revision 1558)
@@ -247,26 +247,4 @@
 }
 
-$err = array();
-
-# Check cache directory
-if (!is_dir(DC_TPL_CACHE)) {
-	$err[] = '<p>'.sprintf(__('Cache directory %s does not exist.'),DC_TPL_CACHE).'</p>';
-} else if (!is_writable(DC_TPL_CACHE)) {
-	$err[] = '<p>'.sprintf(__('Cache directory %s is not writable.'),DC_TPL_CACHE).'</p>';
-}
-
-# Check public directory
-if (!is_dir($core->blog->public_path)) {
-	$err[] = '<p>'.sprintf(__('Directory %s does not exist.'),$core->blog->public_path).'</p>';
-} else if (!is_writable($core->blog->public_path)) {
-	$err[] = '<p>'.sprintf(__('Directory %s is not writable.'),$core->blog->public_path).'</p>';
-}
-
-# Error list
-if (count($err) > 0) {
-	echo '<div class="error"><p><strong>Erreur&nbsp;:</strong></p>'.
-	'<ul><li>'.implode("</li><li>",$err).'</li></ul></div>';
-}
-
 # Plugins install messages
 if (!empty($plugins_install['success']))
@@ -289,21 +267,4 @@
 # Dashboard columns (processed first, as we need to know the result before displaying the icons.)
 $dashboardItems = '';
-
-# Dotclear updates notifications
-if ($core->auth->isSuperAdmin() && is_readable(DC_DIGESTS))
-{
-	$updater = new dcUpdate(DC_UPDATE_URL,'dotclear',DC_UPDATE_VERSION,DC_TPL_CACHE.'/versions');
-	$new_v = $updater->check(DC_VERSION);
-	$version_info = $new_v ? $updater->getInfoURL() : '';
-	
-	if ($updater->getNotify() && $new_v) {
-		$dashboardItems .=
-		'<div id="upg-notify" class="static-msg"><p>'.sprintf(__('Dotclear %s is available!'),$new_v).'</p> '.
-		'<ul><li><strong><a href="update.php">'.sprintf(__('Upgrade now'),$new_v).'</a></strong>'.
-		'</li><li><a href="update.php?hide_msg=1">'.__('Remind me later').'</a>'.
-		($version_info ? ' </li><li>'.sprintf(__('<a href=\"%s\">Information about this version</a>.'),$version_info) : '').
-		'</li></ul></div>';
-	}
-}
 
 # Errors modules notifications
Index: admin/install/index.php
===================================================================
--- admin/install/index.php	(revision 1620)
+++ admin/install/index.php	(revision 1553)
@@ -267,5 +267,4 @@
 
   <script type="text/javascript" src="../js/jquery/jquery.js"></script>
-  <?php echo dcPage::jsLoad('../js/jquery/jquery.pwstrength.js'); ?>
   <script type="text/javascript">
   //<![CDATA[
@@ -279,11 +278,4 @@
       $(this).val(this.value.replace(login_re,''));
     });
-    
-	<?php echo "\$('#u_pwd').pwstrength({texts: ['".
-				sprintf(__('Password strength: %s'),__('very weak'))."', '".
-				sprintf(__('Password strength: %s'),__('weak'))."', '".
-				sprintf(__('Password strength: %s'),__('mediocre'))."', '".
-				sprintf(__('Password strength: %s'),__('strong'))."', '".
-				sprintf(__('Password strength: %s'),__('very strong'))."']});\n"; ?>
     
     $('#u_login').parent().after($('<input type="hidden" name="u_date" value="' + Date().toLocaleString() + '" />'));
@@ -337,18 +329,10 @@
 	
 	'<fieldset><legend>'.__('Username and password').'</legend>'.
-	'<p><label for="u_login" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Username:').' '.
-	form::field('u_login',30,32,html::escapeHTML($u_login)).'</label></p>'.
-	'<div class="pw-table">'.
-		'<p class="pw-cell">'.
-			'<label for="u_pwd" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('New password:').'</label>'.
-			form::password('u_pwd',30,255,'','','',false,' data-indicator="pwindicator" ').
-		'</p>'.
-		'<div id="pwindicator">'.
-		'    <div class="bar"></div>'.
-		'    <p class="label no-margin"></p>'.
-		'</div>'.
-	'</div>'.
-	'<p><label for="u_pwd2" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Confirm password:').' '.
-	form::password('u_pwd2',30,255).'</label></p>'.
+	'<p><label for="u_login" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Username:').'</label> '.
+	form::field('u_login',30,32,html::escapeHTML($u_login)).'</p>'.
+	'<p><label for="u_pwd" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Password:').'</label> '.
+	form::password('u_pwd',30,255).'</p>'.
+	'<p><label for="u_pwd2" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Confirm password:').'</label> '.
+	form::password('u_pwd2',30,255).'</p>'.
 	'</fieldset>'.
 	
Index: admin/js/_post.js
===================================================================
--- admin/js/_post.js	(revision 1619)
+++ admin/js/_post.js	(revision 1606)
@@ -145,5 +145,5 @@
 			legend_click: true
 		});
-		$('#label_format').toggleWithLegend($('#label_format').parent().children().not('#label_format'),{
+		$('#post_format').parent().children('label').toggleWithLegend($('#post_format'),{
 			cookie: 'dcx_post_format',
 			legend_click: true
Index: admin/js/jsToolBar/jsToolBar.wysiwyg.js
===================================================================
--- admin/js/jsToolBar/jsToolBar.wysiwyg.js	(revision 1626)
+++ admin/js/jsToolBar/jsToolBar.wysiwyg.js	(revision 925)
@@ -209,5 +209,5 @@
 		
 		This.setSwitcher();
-		try { This.iwin.document.designMode = 'on'; } catch (e) {}; // Firefox needs this
+		setTimeout(function(){This.focusEditor();},1);
 		
 		return true;
Index: admin/js/prelude.js
===================================================================
--- admin/js/prelude.js	(revision 1615)
+++ admin/js/prelude.js	(revision 1600)
@@ -8,5 +8,4 @@
 				$('#prelude a').removeClass('hidden');
 				$('#wrapper').css('padding-top', '1em');
-				$('#help-button').css('top', '4em');
 			}
 		}
Index: admin/plugins.php
===================================================================
--- admin/plugins.php	(revision 1622)
+++ admin/plugins.php	(revision 1605)
@@ -374,5 +374,6 @@
 	form::password(array('your_pwd','your_pwd2'),20,255).'</p>'.
 	'<p><input type="submit" name="fetch_pkg" value="'.__('Download plugin').'" />'.
-	$core->formNonce().'</p>'.
+	$core->formNonce().
+	'</fieldset>'.
 	'</form>';
 }
Index: admin/post.php
===================================================================
--- admin/post.php	(revision 1621)
+++ admin/post.php	(revision 1550)
@@ -58,5 +58,5 @@
 			str_repeat('&nbsp;&nbsp;',$categories->level-1).($categories->level-1 == 0 ? '' : '&bull; ').html::escapeHTML($categories->cat_title),
 			$categories->cat_id
-	);
+		);
 	}
 } catch (Exception $e) { }
@@ -147,7 +147,5 @@
 		try {
 			$core->media = new dcMedia($core);
-		} catch (Exception $e) {
-			$core->error->add($e->getMessage());
-		}
+		} catch (Exception $e) {}
 	}
 }
@@ -441,11 +439,10 @@
 					'</p>',
 				'post_format' =>
-					'<div>'.
-					'<h5 id="label_format"><label for="post_format" class="ib">'.__('Text formating').'</label></h5>'.
-					'<p>'.form::combo('post_format',$formaters_combo,$post_format,'maximal').
+					'<p><label for="post_format" class="ib">'.__('Text formating').'</label>'.
+					form::combo('post_format',$formaters_combo,$post_format,'maximal').
 					'</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></div>')),
+					__('Convert to XHTML').'</a>' : '').'</p>')),
 		'metas-box' => array(
 			'title' => __('Ordering'),
@@ -630,13 +627,11 @@
 	}
 	
+	# --BEHAVIOR-- adminCommentsActionsCombo
+	$core->callBehavior('adminCommentsActionsCombo',array(&$combo_action));
+	
+	$has_action = !empty($combo_action) && (!$trackbacks->isEmpty() || !$comments->isEmpty());
+	
 	echo
 	'<div id="comments" class="multi-part" title="'.__('Comments').'">';
-		
-	# --BEHAVIOR-- adminCommentsActionsCombo
-	$core->callBehavior('adminCommentsActionsCombo',array(&$combo_action));
-	
-	$has_action = !empty($combo_action) && (!$trackbacks->isEmpty() || !$comments->isEmpty());
-	echo 
-	'<p class="top-add"><a class="button add onblog_link" href="#comment-form">'.__('Add a comment').'</a></p>';
 	
 	if ($has_action) {
@@ -672,9 +667,14 @@
 		'</form>';
 	}
-	/* Add a comment
-	-------------------------------------------------------- */
-
+	
+	echo '</div>';
+}
+
+/* Add a comment
+-------------------------------------------------------- */
+if ($post_id)
+{
 	echo
-	'<div class="fieldset clear">'.
+	'<div class="multi-part" id="add-comment" title="'.__('Add a comment').'">'.
 	'<h3>'.__('Add a comment').'</h3>'.
 	
@@ -701,9 +701,7 @@
 	$core->formNonce().
 	'<input type="submit" name="add" value="'.__('Save').'" /></p>'.
-	'</div>'. #constrained
-
+	'</div>'.
 	'</form>'.
-	'</div>'. #add comment
-	'</div>'; #comments
+	'</div>';
 }
 
Index: admin/post_media.php
===================================================================
--- admin/post_media.php	(revision 1537)
+++ admin/post_media.php	(revision 1179)
@@ -26,12 +26,12 @@
 }
 
+if ($post_id && $media_id && !empty($_POST['attach']))
+{
+	$core->media = new dcMedia($core);
+	$core->media->addPostMedia($post_id,$media_id);
+	http::redirect($core->getPostAdminURL($rs->post_type,$post_id,false));
+}
+
 try {
-	if ($post_id && $media_id && !empty($_POST['attach']))
-	{
-		$core->media = new dcMedia($core);
-		$core->media->addPostMedia($post_id,$media_id);
-		http::redirect($core->getPostAdminURL($rs->post_type,$post_id,false));
-	}
-
 	$core->media = new dcMedia($core);
 	$f = $core->media->getPostMedia($post_id,$media_id);
Index: admin/preferences.php
===================================================================
--- admin/preferences.php	(revision 1609)
+++ admin/preferences.php	(revision 1607)
@@ -393,7 +393,8 @@
 
 echo
-'<h3 class="hidden-if-js">'.__('My profile').'</h3>'.
 '<form action="preferences.php" method="post" id="user-form">'.
-
+'<fieldset><legend>'.__('My profile').'</legend>'.
+'<div class="two-cols">'.
+'<div class="col">'.
 '<p><label for="user_name">'.__('Last Name:').'</label>'.
 form::field('user_name',20,255,html::escapeHTML($user_name)).'</p>'.
@@ -409,10 +410,25 @@
 
 '<p><label for="user_url">'.__('URL:').'</label>'.
-form::field('user_url',30,255,html::escapeHTML($user_url)).'</p>';
+form::field('user_url',30,255,html::escapeHTML($user_url)).'</p>'.
+
+'</div>'.
+
+'<div class="col">'.
+
+'<p><label for="user_lang">'.__('Language for my interface:').'</label>'.
+form::combo('user_lang',$lang_combo,$user_lang,'l10n').'</p>'.
+
+'<p><label for="user_tz">'.__('My timezone:').'</label>'.
+form::combo('user_tz',dt::getZones(true,true),$user_tz).'</p>'.
+
+'</div>'.
+'</div>'.
+'</fieldset>';
 
 if ($core->auth->allowPassChange())
 {
 	echo
-	'<h4 class="vertical-separator">'.__('Change my password').'</h4>'.
+	'<fieldset>'.
+	'<legend>'.__('Change my password').'</legend>'.
 	
 	'<div class="pw-table">'.
@@ -427,19 +443,20 @@
 	'<p><label for="new_pwd_c">'.__('Confirm new password:').'</label>'.
 	form::password('new_pwd_c',20,255).'</p>'.
+	'</fieldset>'.
 	
-	'<p><label for="cur_pwd">'.__('Your current password:').'</label>'.
+	'<div class="fieldset">'.
+	'<p class="form-note warn">'.__('If you have changed your email or password you must provide your current password to save these modifications.').'</p>'.
+	'<p><label for="cur_pwd">'.__('Your password:').'</label>'.
 	form::password('cur_pwd',20,255).'</p>'.
-	'<p class="form-note warn">'.
-	__('If you have changed your email or password you must provide your current password to save these modifications.').
-	'</p>';
+	'</div>';
 }
 
 echo
-'<p class="clear vertical-separator">'.
+'<p class="clear">'.
 $core->formNonce().
-'<input type="submit" accesskey="s" value="'.__('Update my profile').'" /></p>'.
-'</form>'.
-
-'</div>';
+'<input type="submit" accesskey="s" value="'.__('Save').'" /></p>'.
+'</form>';
+
+echo '</div>';
 
 # User options : some from actual user profile, dashboard modules, ...
@@ -448,21 +465,34 @@
 echo
 '<form action="preferences.php" method="post" id="opts-forms">'.
-'<h3 class="hidden-if-js">'.__('My options').'</h3>';
-
-echo
-'<div class="two-cols">'.
-
-'<div class="col">'.
-'<h4>'.__('Interface').'</h4>'.
-
-'<p><label for="user_lang">'.__('Language for my interface:').'</label>'.
-form::combo('user_lang',$lang_combo,$user_lang,'l10n').'</p>'.
-
-'<p><label for="user_tz">'.__('My timezone:').'</label>'.
-form::combo('user_tz',dt::getZones(true,true),$user_tz).'</p>'.
+'<fieldset><legend>'.__('My options').'</legend>'.
+
+'<p><label class="ib" for="user_post_format">'.__('Preferred format:').'</label>'.
+form::combo('user_post_format',$formaters_combo,$user_options['post_format']).'</p>'.
+
+'<p><label class="ib" for="user_post_status">'.__('Default entry status:').'</label>'.
+form::combo('user_post_status',$status_combo,$user_post_status).'</p>'.
+
+'<p><label class="ib" for="user_edit_size">'.__('Entry edit field height:').'</label>'.
+form::field('user_edit_size',5,4,(integer) $user_options['edit_size']).'</p>'.
+
+'<p><label for="user_wysiwyg" class="classic">'.
+form::checkbox('user_wysiwyg',1,$user_options['enable_wysiwyg']).' '.
+__('Enable WYSIWYG mode').'</label></p>'.
 
 '<p><label for="user_ui_enhanceduploader" class="classic">'.
 form::checkbox('user_ui_enhanceduploader',1,$user_ui_enhanceduploader).' '.
-__('Activate enhanced uploader in media manager').'</label></p>';
+__('Activate enhanced uploader in media manager').'</label></p>'.
+
+'<p><label for="user_ui_nofavmenu" class="classic">'.
+form::checkbox('user_ui_nofavmenu',1,$user_ui_nofavmenu).' '.
+__('Hide My favorites menu').'</label></p>';
+
+if (count($iconsets_combo) > 1) {
+	echo 
+		'<p><label class="ib" for="user_ui_iconset">'.__('Iconset:').'</label>'.
+		form::combo('user_ui_iconset',$iconsets_combo,$user_ui_iconset).'</p>';
+} else {
+	form::hidden('user_ui_iconset','');
+}
 
 if ($core->auth->isSuperAdmin()) {
@@ -472,9 +502,12 @@
 	__('Do not use standard favicon').'</label></p>'.
 	'<p class="clear form-note warn">'.__('This will be applied for all users').'.'.
-	'</p>';//Opera sucks;
-}
+	'<br class="clear" /></p>';//Opera sucks;
+}
+
+echo 
+'</fieldset>';
 
 echo
-'<h5>'.__('Accessibility').'</h5>'.
+'<fieldset><legend>'.__('Accessibility options').'</legend>'.
 
 '<p><label for="user_acc_nodragdrop" class="classic">'.
@@ -482,48 +515,9 @@
 __('Disable javascript powered drag and drop for ordering items').'</label></p>'.
 
-'<p class="clear form-note">'.__('If checked, numeric fields will allow to type the elements\' ordering number.').'</p>';
+'<p class="clear form-note info">'.__('Numeric fields will allow to type the elements\' ordering number.').'</p>'.
+'</fieldset>';
 
 echo
-'<h4 class="border-top">'.__('Edition').'</h4>'.
-
-'<p><label for="user_post_format">'.__('Preferred format:').'</label>'.
-form::combo('user_post_format',$formaters_combo,$user_options['post_format']).'</p>'.
-
-'<p><label for="user_post_status">'.__('Default entry status:').'</label>'.
-form::combo('user_post_status',$status_combo,$user_post_status).'</p>'.
-
-'<p><label for="user_edit_size">'.__('Entry edit field height:').'</label>'.
-form::field('user_edit_size',5,4,(integer) $user_options['edit_size']).'</p>'.
-
-'<p><label for="user_wysiwyg" class="classic">'.
-form::checkbox('user_wysiwyg',1,$user_options['enable_wysiwyg']).' '.
-__('Enable WYSIWYG mode').'</label></p>';
-
-echo
-'<h4 class="border-top">'.__('Other options').'</h4>';
-
-# --BEHAVIOR-- adminPreferencesForm
-$core->callBehavior('adminPreferencesForm',$core);
-
-echo
-'</div>'.
-
-'<div class="col">'.
-'<h4>'.__('Dashboard and menu').'</h4>'.
-
-'<p><label for="user_ui_nofavmenu" class="classic">'.
-form::checkbox('user_ui_nofavmenu',1,$user_ui_nofavmenu).' '.
-__('Hide My favorites menu').'</label></p>';
-
-if (count($iconsets_combo) > 1) {
-	echo 
-		'<p><label for="user_ui_iconset" class="classic">'.__('Iconset:').'</label> '.
-		form::combo('user_ui_iconset',$iconsets_combo,$user_ui_iconset).'</p>';
-} else {
-	form::hidden('user_ui_iconset','');
-}
-
-echo
-'<h5>'.('Dashboard modules').'</h5>'.
+'<fieldset><legend>'.__('Dashboard modules').'</legend>'.
 
 '<p><label for="user_dm_doclinks" class="classic">'.
@@ -538,14 +532,15 @@
 form::checkbox('user_dm_quickentry',1,$user_dm_quickentry).' '.
 __('Display quick entry form').'</label><br class="clear" />'. //Opera sucks
-'</p>';
+'</p>'.
+
+'</fieldset>';
+
+# --BEHAVIOR-- adminPreferencesForm
+$core->callBehavior('adminPreferencesForm',$core);
 
 echo
-'</div>'.
-'</div>';
-
-echo
-'<p class="clear border-top">'.
+'<p class="clear">'.
 $core->formNonce().
-'<input type="submit" accesskey="s" value="'.__('Save my options').'" /></p>'.
+'<input type="submit" accesskey="s" value="'.__('Save').'" /></p>'.
 '</form>';
 
@@ -557,5 +552,4 @@
 echo '<form action="preferences.php" method="post" id="favs-form">';
 echo '<div class="two-cols">';
-
 echo '<div class="col70">';
 echo '<div id="my-favs" class="fieldset"><h3>'.__('My favorites').'</h3>';
@@ -606,5 +600,5 @@
 
 echo '<div id="default-favs"><h3>'.__('Default favorites').'</h3>';
-echo '<p>'.__('Those favorites are displayed when My Favorites list is empty.').'</p>';
+echo '<p class="form-note info clear">'.__('Those favorites are displayed when My Favorites list is empty.').'</p>';
 $count = 0;
 foreach ($ws->dumpPrefs() as $k => $v) {
@@ -623,6 +617,4 @@
 echo '</div>';
 echo '</div>';
-
-
 echo '<div class="col30 fieldset" id="available-favs">';
 # Available favorites
@@ -654,6 +646,4 @@
 '<input type="submit" name="appendaction" value="'.__('Add to my favorites').'" /></p>';
 echo '</div>';
-
-
 echo '</div>'; # Two-cols
 echo '</form>';
Index: admin/services.php
===================================================================
--- admin/services.php	(revision 1538)
+++ admin/services.php	(revision 1500)
@@ -238,8 +238,6 @@
 		}
 		
-		try {
-			$core->media = new dcMedia($core);
-			$file = $core->media->getFile($id);
-		} catch (Exception $e) {}
+		$core->media = new dcMedia($core);
+		$file = $core->media->getFile($id);
 		
 		if ($file === null || $file->type != 'application/zip' || !$file->editable) {
Index: admin/style/default.css
===================================================================
--- admin/style/default.css	(revision 1621)
+++ admin/style/default.css	(revision 1608)
@@ -26,5 +26,4 @@
 	padding: 0;
 }
-
 a, a:link, a:visited {
 	color: #2373A8;
@@ -79,5 +78,5 @@
 h5 {
 	font-size: 12px; /* ie < 9 sucks */
-	font-size: 1.2rem;
+	font-size: 1.3rem;
 	color: #575859;
 }
@@ -379,11 +378,9 @@
 }
 #search-menu * {
-	height: 22px; /* ie < 9 sucks */
-	height: 2.2rem;
+	height: 20px; /* ie < 9 sucks */
+	height: 2rem;
+}
+#search-menu p {
 	display: inline-block;
-	vertical-align: top;
-	line-height: 22px;
-}
-#search-menu p {
 	border: 1px solid #999;
 	border-radius: .3em;
@@ -391,23 +388,17 @@
 	overflow: hidden;
 }
-#qx {
-	width: 124px; /* ie < 9 sucks */
-	width: 12.4rem;
+#search-menu #qx {
+	width: 120px; /* ie < 9 sucks */
+	width: 12rem;
 	border-bottom-left-radius: .3em;
 	border-top-left-radius: .3em;
 	background: transparent url(search.png) no-repeat 4px center;
 	text-indent: 18px;
-	padding: 0;
+	padding: 0 2px;
 	border: none;
-	height: 22px;
-	height: 2.2rem;
-}
-#qx:focus {
-	border: 2px solid #BBDB58;
 }
 #search-menu input[type="submit"] {
 	padding: 0 3px;
 	padding: 0 .3rem;
-	margin-left: -4px;
 	background: #dfdfdf;
 	border-color: #999;
@@ -520,4 +511,5 @@
 #icons a img {
 	padding: 2em;
+	margin-bottom: .3em;
 	-moz-box-shadow: 0px 1px 0px 0px #ffffff;
 	-webkit-box-shadow: 0px 1px 0px 0px #ffffff;
@@ -533,5 +525,5 @@
 	display:inline-block;
 }
-#icons a:focus img, #icons a:hover img {
+#icons a img:hover, #icons a:focus img {
 	background: #BBDB58;
 }
@@ -630,9 +622,7 @@
 	float: right;
 }
+#entry-sidebar input[type="text"],
 #entry-sidebar select {
-	width: 100%;
-}
-#entry-sidebar input#post_position {
-	width: 4em;
+	width: 14em; /* to prevent inline with label */
 }
 .box {
@@ -642,7 +632,4 @@
 #comments {
 	clear: both;
-}
-#trackback-form textarea {
-	width: 98%;
 }
 /* ------------------------------------------------------------------ categories */
@@ -795,5 +782,5 @@
 /* ------------------------------------------------------------------ preferences */
 #my-favs {
-	border: 1px solid #A8DC26;
+	border: 2px solid #A8DC26;
 	padding: 1em 2em
 }
@@ -859,19 +846,4 @@
 	width: 14em;
 	padding-right: 1em;
-}
-.blog-perm {
-	margin-top: 2em;
-	font-weight: bold;
-}
-.ul-perm {
-	list-style-type: square;
-	margin-left: 0;
-	padding-left: 3.5em;
-	margin-bottom: 0
-}
-.add-perm {
-	padding-top: .5em;
-	padding-left: 2.5em;
-	margin-left: 0;
 }
 /* -------------------------------------------------------------------- Themes */
@@ -991,8 +963,4 @@
 	border: 1px solid #fff;
 }
-#themes a:focus div, #themes a:hover div,
-#themes a:focus div.current-theme, #themes a:hover div.current-theme {
-	background: #BBDB58;
-}
 /* ----------------------------------------------------------  Plugins list */
 #plugins td.action {
@@ -1186,10 +1154,4 @@
 	margin: 0;
 }
-.vertical-separator {
-	margin-top: 2em;
-}
-p.clear.vertical-separator {
-	padding-top: 2em;
-}
 .border-top {
 	border-top: 1px solid #999;
@@ -1429,10 +1391,7 @@
 	background: #f9f9f9;
 	color: #000;
-	border-width: 2px;
+	border-width: 1px;
 	border-style: solid;
-	border-color: #ccc #ddd #ddd #ccc; 
-}
-select {
-	border-right: none;
+	border-color: #666 #ccc #ccc #999;
 }
 input.invalid, textarea.invalid, select.invalid {
@@ -1481,9 +1440,7 @@
 p.form-note.warn, p.form-note.info, p.warning {
 	font-style: normal;
-	padding: .2em .66em .2em;
-	text-indent: 24px;
+	padding: .2em 1em .3em 32px;
 	color: #333;
 	display: inline-block;
-	line-height: 1.5em;
 }
 p.form-note.warn, p.warning {
@@ -1558,10 +1515,5 @@
 	background: transparent;
 }
-input:focus, textarea:focus, select:focus {
-	-webkit-box-sizing: border-box;
-	-moz-box-sizing: border-box;
-	box-sizing: border-box;
-	border: 2px solid #BBDB58;
-}
+
 /* --------------------------------------------------------------- buttons */
 /* commun */
Index: admin/style/install.css
===================================================================
--- admin/style/install.css	(revision 1620)
+++ admin/style/install.css	(revision 1330)
@@ -158,43 +158,2 @@
 	border: 1px solid #2C8FD1;
 }
-
-
-/* --------------------------------------------------------------- password indcator */
-.pw-table {
-	display: table;
-	margin-bottom: 1em;
-}
-.pw-cell {
-	display: table-cell;
-	margin-bottom: 1em;
-}
-#pwindicator {
-	display: table-cell;
-	vertical-align: bottom;
-	padding-left: 1.5em;
-	height: 3.8em;
-}
-#pwindicator .bar {
-	height: 6px;
-	margin-bottom: 4px;
-}
-.pw-very-weak .bar {
-	background: #900;
-	width: 30px;
-}
-.pw-weak .bar {
-	background: #c00;
-	width: 60px;
-}
-.pw-mediocre .bar {
-	background: #f60;
-	width: 90px;
-}
-.pw-strong .bar {
-	background: #060;
-	width: 120px;
-}
-.pw-very-strong .bar {
-	background: #0c0;
-	width: 150px;
-}
Index: admin/style/jsToolBar/jsToolBar.css
===================================================================
--- admin/style/jsToolBar/jsToolBar.css	(revision 1621)
+++ admin/style/jsToolBar/jsToolBar.css	(revision 1475)
@@ -6,11 +6,11 @@
 }
 .jstEditor textarea, .jstEditor iframe {
-	-webkit-box-sizing: border-box;
-	-moz-box-sizing: border-box;
-	box-sizing: border-box;	
-	margin: 0;
-	border: 2px solid #f9f9f9;
-  	width: 100%;
-  	padding: .5em 0 0 0;
+  margin: 0;
+  border: 0;
+  padding: 0;
+}
+.jstEditor textarea {
+  width: 99%;
+  padding: 1rem 0 0 1%;
 }
 .jstHandle {
@@ -23,7 +23,5 @@
 	border-style: solid;
 }
-.jstEditor textarea:focus, .jstEditor iframe:focus {
-	border: 2px solid #BBDB58;
-}
+
 .jstElements {
 	height: 28px;
@@ -158,4 +156,5 @@
 }
 
+
 /* WYSIWYG Iframe */
 .wysiwygIframe {
Index: admin/trackbacks.php
===================================================================
--- admin/trackbacks.php	(revision 1614)
+++ admin/trackbacks.php	(revision 1459)
@@ -120,6 +120,6 @@
 	$tb_urls = implode("\n",$TB->discover($post->post_excerpt_xhtml.' '.$post->post_content_xhtml));
 } else {
-	$auto_link = '<a class="button" href="trackbacks.php?id='.$id.'&amp;auto=1">'.
-	__('Auto discover ping URLs').'</a>';
+	$auto_link = '<strong><a class="button" href="trackbacks.php?id='.$id.'&amp;auto=1">'.
+	__('Auto discover ping URLs').'</a></strong>';
 }
 
@@ -132,5 +132,5 @@
 
 '<p><label for="tb_excerpt" class="area">'.__('Send excerpt:').'</label>'.
-form::textarea('tb_excerpt',60,5,$tb_excerpt).'</p>'.
+form::textarea('tb_excerpt',60,3,$tb_excerpt).'</p>'.
 
 '<p>'.form::hidden('id',$id).
Index: admin/update.php
===================================================================
--- admin/update.php	(revision 1620)
+++ admin/update.php	(revision 1553)
@@ -249,5 +249,5 @@
 	'<p class="message">'.
 	__("Congratulations, you're one click away from the end of the update.").
-	' <strong><a href="index.php?logout=1">'.__('Finish the update.').'</a></strong>'.
+	' <strong><a href="index.php?logout=1">'.__('Finish the update').'</a>.</strong>'.
 	'</p>';
 }
Index: admin/user.php
===================================================================
--- admin/user.php	(revision 1621)
+++ admin/user.php	(revision 1605)
@@ -172,17 +172,4 @@
 dcPage::open($page_title,
 	dcPage::jsConfirmClose('user-form').
-	dcPage::jsLoad('js/jquery/jquery.pwstrength.js').
-		'<script type="text/javascript">'."\n".
-		"//<![CDATA[\n".
-		"\$(function() {\n".
-		"	\$('#new_pwd').pwstrength({texts: ['".
-				sprintf(__('Password strength: %s'),__('very weak'))."', '".
-				sprintf(__('Password strength: %s'),__('weak'))."', '".
-				sprintf(__('Password strength: %s'),__('mediocre'))."', '".
-				sprintf(__('Password strength: %s'),__('strong'))."', '".
-				sprintf(__('Password strength: %s'),__('very strong'))."']});\n".
-		"});\n".
-		"\n//]]>\n".
-		"</script>\n".
 	
 	# --BEHAVIOR-- adminUserHeaders
@@ -205,16 +192,4 @@
 }
 
-echo
-'<form action="user.php" method="post" id="user-form">'.
-'<div class="two-cols">'.
-
-'<div class="col">'.
-'<h3>'.__('User profile').'</h3>'.
-
-'<p><label for="user_id" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('User ID:').'</label> '.
-form::field('user_id',20,255,html::escapeHTML($user_id)).
-'</p>'.
-'<p class="form-note">'.__('At least 2 characters using letters, numbers or symbols.').'</p>';
-
 if ($user_id == $core->auth->userID()) {
 	echo
@@ -224,16 +199,18 @@
 
 echo
-'<div class="pw-table">'.
-	'<p class="pw-cell">'.
-		'<label for="new_pwd" '.($user_id != '' ? '' : 'class="required"').'>'.
-		($user_id != '' ? '' : '<abbr title="'.__('Required field').'">*</abbr> ').
-		($user_id != '' ? __('New password:') : __('Password:')).'</label>'.
-		form::password('new_pwd',20,255,'','','',false,' data-indicator="pwindicator" ').
-	'</p>'.
-	'<div id="pwindicator">'.
-	'    <div class="bar"></div>'.
-    '    <p class="label no-margin"></p>'.
-    '</div>'.
-'</div>'.
+'<form action="user.php" method="post" id="user-form">'.
+'<fieldset><legend>'.__('User information').'</legend>'.
+'<div class="two-cols">'.
+'<div class="col">'.
+'<p><label for="user_id" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('User ID:').'</label> '.
+form::field('user_id',20,255,html::escapeHTML($user_id)).
+'</p>'.
+'<p class="form-note">'.__('At least 2 characters using letters, numbers or symbols.').'</p>'.
+
+'<p><label for="new_pwd" '.($user_id != '' ? '' : 'class="required"').'>'.
+($user_id != '' ? '' : '<abbr title="'.__('Required field').'">*</abbr> ').
+($user_id != '' ? __('New password:') : __('Password:')).'</label> '.
+form::password('new_pwd',20,255).
+'</p>'.
 '<p class="form-note">'.__('Password must contain at least 6 characters.').'</p>'.
 
@@ -241,4 +218,46 @@
 ($user_id != '' ? '' : '<abbr title="'.__('Required field').'">*</abbr> ').__('Confirm password:').'</label> '.
 form::password('new_pwd_c',20,255).
+'</p>'.
+
+'<p><label for="user_name">'.__('Last Name:').'</label> '.
+form::field('user_name',20,255,html::escapeHTML($user_name)).
+'</p>'.
+
+'<p><label for="user_firstname">'.__('First Name:').'</label> '.
+form::field('user_firstname',20,255,html::escapeHTML($user_firstname)).
+'</p>'.
+
+'<p><label for="user_displayname">'.__('Display name:').'</label> '.
+form::field('user_displayname',20,255,html::escapeHTML($user_displayname)).
+'</p>'.
+
+'<p><label for="user_email">'.__('Email:').'</label> '.
+form::field('user_email',20,255,html::escapeHTML($user_email)).
+'</p>'.
+'<p class="form-note">'.__('Mandatory for password recovering procedure.').'</p>'.
+'</div>'.
+
+'<div class="col">'.
+'<p><label for="user_url">'.__('URL:').'</label> '.
+form::field('user_url',30,255,html::escapeHTML($user_url)).
+'</p>'.
+'<p><label for="user_post_format">'.__('Preferred format:').'</label> '.
+form::combo('user_post_format',$formaters_combo,$user_options['post_format']).
+'</p>'.
+
+'<p><label for="user_post_status">'.__('Default entry status:').'</label> '.
+form::combo('user_post_status',$status_combo,$user_post_status).
+'</p>'.
+
+'<p><label for="user_edit_size">'.__('Entry edit field height:').'</label> '.
+form::field('user_edit_size',5,4,(integer) $user_options['edit_size']).
+'</p>'.
+
+'<p><label for="user_lang">'.__('User language:').'</label> '.
+form::combo('user_lang',$lang_combo,$user_lang,'l10n').
+'</p>'.
+
+'<p><label for="user_tz">'.__('User timezone:').'</label> '.
+form::combo('user_tz',dt::getZones(true,true),$user_tz).
 '</p>';
 
@@ -251,65 +270,18 @@
 
 $super_disabled = $user_super && $user_id == $core->auth->userID();
+
 echo
 '<p><label for="user_super" class="classic">'.form::checkbox('user_super','1',$user_super,'','',$super_disabled).' '.
 __('Super administrator').'</label></p>'.
-
-'<p><label for="user_name">'.__('Last Name:').'</label> '.
-form::field('user_name',20,255,html::escapeHTML($user_name)).
-'</p>'.
-
-'<p><label for="user_firstname">'.__('First Name:').'</label> '.
-form::field('user_firstname',20,255,html::escapeHTML($user_firstname)).
-'</p>'.
-
-'<p><label for="user_displayname">'.__('Display name:').'</label> '.
-form::field('user_displayname',20,255,html::escapeHTML($user_displayname)).
-'</p>'.
-
-'<p><label for="user_email">'.__('Email:').'</label> '.
-form::field('user_email',20,255,html::escapeHTML($user_email)).
-'</p>'.
-'<p class="form-note">'.__('Mandatory for password recovering procedure.').'</p>'.
-
-'<p><label for="user_url">'.__('URL:').'</label> '.
-form::field('user_url',30,255,html::escapeHTML($user_url)).
-'</p>'.
 '</div>'.
-
-'<div class="col">'.
-'<h3>'.__('Options').'</h3>'.
-'<h4>'.__('Interface').'</h4>'.
-'<p><label for="user_lang">'.__('Language:').'</label> '.
-form::combo('user_lang',$lang_combo,$user_lang,'l10n').
-'</p>'.
-
-'<p><label for="user_tz">'.__('Timezone:').'</label> '.
-form::combo('user_tz',dt::getZones(true,true),$user_tz).
-'</p>'.
-
-'<h4>'.__('Edition').'</h4>'.
-'<p><label for="user_post_format">'.__('Preferred format:').'</label> '.
-form::combo('user_post_format',$formaters_combo,$user_options['post_format']).
-'</p>'.
-
-'<p><label for="user_post_status">'.__('Default entry status:').'</label> '.
-form::combo('user_post_status',$status_combo,$user_post_status).
-'</p>'.
-
-'<p><label for="user_edit_size">'.__('Entry edit field height:').'</label> '.
-form::field('user_edit_size',5,4,(integer) $user_options['edit_size']).
-'</p>';
+'</div>'.
+'</fieldset>';
 
 # --BEHAVIOR-- adminUserForm
 $core->callBehavior('adminUserForm',isset($rs) ? $rs : null);
 
-echo 
-'</div>'.
-'</div>';
-
-
 echo
-'<p class="clear vertical-separator"><label for="your_pwd" class="required">'.
-'<abbr title="'.__('Required field').'">*</abbr> '.__('Your password:').'</label>'.
+'<p><label for="your_pwd" '.($user_id != '' ? '' : 'class="required"').'>'.
+($user_id != '' ? '' : '<abbr title="'.__('Required field').'">*</abbr> ').__('Your password:').'</label>'.
 form::password('your_pwd',20,255).'</p>'.
 '<p class="clear"><input type="submit" name="save" accesskey="s" value="'.__('Save').'" />'.
@@ -323,61 +295,51 @@
 if ($user_id)
 {
-	echo '<div class="clear fieldset">'.
-	'<h3>'.__('Permissions').'</h3>';
-
-	if (!$user_super)
+	echo '<div class="clear fieldset"><h3>'.__('Permissions').'</h3>'.
+	'<form action="users_actions.php" method="post">'.
+	'<p><input type="submit" value="'.__('Add new permissions').'" />'.
+	form::hidden(array('redir'),'user.php?id='.$user_id).
+	form::hidden(array('action'),'blogs').
+	form::hidden(array('users[]'),$user_id).
+	$core->formNonce().
+	'</p>'.
+	'</form>';
+	
+	$permissions = $core->getUserPermissions($user_id);
+	$perm_types = $core->auth->getPermissionsTypes();
+	
+	if (count($permissions) == 0)
 	{
-		echo
-		'<form action="users_actions.php" method="post">'.
-		'<p><input type="submit" value="'.__('Add new permissions').'" />'.
-		form::hidden(array('redir'),'user.php?id='.$user_id).
-		form::hidden(array('action'),'blogs').
-		form::hidden(array('users[]'),$user_id).
-		$core->formNonce().
-		'</p>'.
-		'</form>';
-		
-		$permissions = $core->getUserPermissions($user_id);
-		$perm_types = $core->auth->getPermissionsTypes();
-		
-		if (count($permissions) == 0)
+		echo '<p>'.__('No permissions.').'</p>';
+	}
+	else
+	{
+		foreach ($permissions as $k => $v)
 		{
-			echo '<p>'.__('No permissions so far.').'</p>';
-		}
-		else
-		{
-			foreach ($permissions as $k => $v)
+			if (count($v['p']) > 0)
 			{
-				if (count($v['p']) > 0)
-				{
-					echo 
-					'<form action="users_actions.php" method="post">'.
-					'<p class="blog-perm">'.__('Blog:').' <a href="blog.php?id='.html::escapeHTML($k).'">'.
-					html::escapeHTML($v['name']).'</a> ('.html::escapeHTML($k).')</p>';
-					
-					echo '<ul class="ul-perm">';
-					foreach ($v['p'] as $p => $V) {
-						if (isset($perm_types[$p])) {
-							echo '<li>'.__($perm_types[$p]).'</li>';
-						}
+				echo 
+				'<form action="users_actions.php" method="post">'.
+				'<h4><a href="blog.php?id='.html::escapeHTML($k).'">'.
+				html::escapeHTML($v['name']).'</a> ('.html::escapeHTML($k).')</h4>';
+				
+				echo '<ul>';
+				foreach ($v['p'] as $p => $V) {
+					if (isset($perm_types[$p])) {
+						echo '<li>'.__($perm_types[$p]).'</li>';
 					}
-					echo
-					'</ul>'.
-					'<p class="add-perm"><input type="submit" class="reset" value="'.__('Change permissions').'" />'.
-					form::hidden(array('redir'),'user.php?id='.$user_id).
-					form::hidden(array('action'),'perms').
-					form::hidden(array('users[]'),$user_id).
-					form::hidden(array('blogs[]'),$k).
-					$core->formNonce().
-					'</p>'.
-					'</form>';
 				}
-			}
-		}	
-
-	} 
-	else {
-		echo '<p>'.sprintf(__('%s is super admin (all rights on all blogs).'),'<strong>'.$user_id.'</strong>').'</p>';
-	}	
+				echo '</ul>'.
+				'<p><input type="submit" value="'.__('Change permissions').'" />'.
+				form::hidden(array('redir'),'user.php?id='.$user_id).
+				form::hidden(array('action'),'perms').
+				form::hidden(array('users[]'),$user_id).
+				form::hidden(array('blogs[]'),$k).
+				$core->formNonce().
+				'</p>'.
+				'</form>';
+			}
+		}
+	}
+	
 	echo '</div>';
 }
Index: admin/users.php
===================================================================
--- admin/users.php	(revision 1609)
+++ admin/users.php	(revision 1514)
@@ -112,5 +112,5 @@
 	
 	echo
-	'<p class="top-add"><strong><a class="button add" href="user.php">'.__('New user').'</a></strong></p>';
+	'<p class="top-add"><strong><a class="button add" href="user.php">'.__('Create a new user').'</a></strong></p>';
 	
 	if (!$show_filters) {
Index: admin/users_actions.php
===================================================================
--- admin/users_actions.php	(revision 1620)
+++ admin/users_actions.php	(revision 1499)
Index: inc/admin/lib.pager.php
===================================================================
--- inc/admin/lib.pager.php	(revision 1622)
+++ inc/admin/lib.pager.php	(revision 1600)
@@ -333,5 +333,5 @@
 		'<td class="nowrap">'.
 		form::checkbox(array('comments[]'),$this->rs->comment_id,'','','',0).'</td>'.
-		'<td class="status txt-center">'.
+		'<td class="status class="txt-center">'.
 			'<a href="'.$comment_url.'">'.
 			'<img src="images/edit-mini.png" alt="" title="'.__('Edit').'" /> '.
Index: inc/admin/prepend.php
===================================================================
--- inc/admin/prepend.php	(revision 1620)
+++ inc/admin/prepend.php	(revision 1604)
@@ -322,5 +322,5 @@
 		$core->auth->check('usage,contentadmin',$core->blog->id),'menu-new-post');
 	
-	$_menu['System']->prependItem(__('Update'),'update.php','images/menu/update.png',
+	$_menu['System']->prependItem(__('Updates'),'update.php','images/menu/update.png',
 		preg_match('/update.php(\?.*)?$/',$_SERVER['REQUEST_URI']),
 		$core->auth->isSuperAdmin() && is_readable(DC_DIGESTS));
Index: inc/config.php.in
===================================================================
--- inc/config.php.in	(revision 1535)
+++ inc/config.php.in	(revision 1179)
@@ -50,5 +50,5 @@
 
 // Template cache directory
-define('DC_TPL_CACHE',path::real(dirname(__FILE__).'/..').'/cache');
+define('DC_TPL_CACHE',dirname(__FILE__).'/../cache');
 
 
Index: inc/core/class.dc.blog.php
===================================================================
--- inc/core/class.dc.blog.php	(revision 1620)
+++ inc/core/class.dc.blog.php	(revision 1532)
@@ -203,64 +203,75 @@
 	@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)
-	{
-		$comments_ids = dcUtils::cleanIds($ids);
-		
-		# Get posts affected by comments edition
-		if (empty($affected_posts)) {
-			$strReq = 
-				'SELECT post_id '.
-				'FROM '.$this->prefix.'comment '.
-				'WHERE comment_id'.$this->con->in($comments_ids).
-				'GROUP BY post_id';
-			
-			$rs = $this->con->select($strReq);
-			
-			$affected_posts = array();
-			while ($rs->fetch()) {
-				$affected_posts[] = (integer) $rs->post_id;
-			}
-		}
-		
-		if (!is_array($affected_posts) || empty($affected_posts)) {
-			return;
-		}
-		
-		# Count number of comments if exists for affected posts
+	*/
+	public function triggerComments($ids,$del=false)
+	{
+		$co_ids = dcUtils::cleanIds($ids);
+		
+		# a) Retrieve posts affected by comments edition
 		$strReq = 
-			'SELECT post_id, COUNT(post_id) AS nb_comment, comment_trackback '.
+			'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;
+		}
+		
+		# b) Count comments of each posts previously retrieved
+		# Note that this does not return posts without comment
+		$strReq = 
+			'SELECT post_id, COUNT(post_id) AS nb_comment,comment_trackback '.
 			'FROM '.$this->prefix.'comment '.
 			'WHERE comment_status = 1 '.
-			'AND post_id'.$this->con->in($affected_posts).
+			(count($a_ids) > 0 ? 'AND post_id'.$this->con->in($a_ids) : ' ');
+		
+		if ($del) {
+			$strReq .= 
+				'AND comment_id NOT'.$this->con->in($co_ids);
+		}
+		
+		$strReq .= 
 			'GROUP BY post_id,comment_trackback';
 		
 		$rs = $this->con->select($strReq);
 		
-		$posts = array();
+		$b_ids = $b_tbs = $b_nbs = array();
 		while ($rs->fetch()) {
-			if ($rs->comment_trackback) {
-				$posts[$rs->post_id]['trackback'] = $rs->nb_comment;
+			$b_ids[] = (integer) $rs->post_id;
+			$b_tbs[] = (integer) $rs->comment_trackback;
+			$b_nbs[] = (integer) $rs->nb_comment;
+		}
+		
+		# c) Update comments numbers on posts
+		# This compare previous requests to update also posts without comment
+		$cur = $this->con->openCursor($this->prefix.'post');
+		
+		foreach($a_ids as $a_key => $a_id)
+		{
+			$nb_comment = $nb_trackback = 0;
+			foreach($b_ids as $b_key => $b_id)
+			{
+				if ($a_id != $b_id || $a_tbs[$a_key] != $b_tbs[$b_key]) {
+					continue;
+				}
+				
+				if ($b_tbs[$b_key]) {
+					$nb_trackback = $b_nbs[$b_key];
+				} else {
+					$nb_comment = $b_nbs[$b_key];
+				}
+			}
+			
+			if ($a_tbs[$a_key]) {
+				$cur->nb_trackback = $nb_trackback;
 			} else {
-				$posts[$rs->post_id]['comment'] = $rs->nb_comment;
-			}
-		}
-		
-		# Update number of comments on affected posts
-		$cur = $this->con->openCursor($this->prefix.'post');
-		foreach($affected_posts as $post_id)
-		{
-			$cur->clean();
-			
-			if (!array_key_exists($post_id,$posts)) {
-				$cur->nb_trackback = 0;
-				$cur->nb_comment = 0;
-			} else {
-				$cur->nb_trackback = empty($posts[$post_id]['trackback']) ? 0 : $posts[$post_id]['trackback'];
-				$cur->nb_comment = empty($posts[$post_id]['comment']) ? 0 : $posts[$post_id]['comment'];
-			}
-			
-			$cur->update('WHERE post_id = '.$post_id);
+				$cur->nb_comment = $nb_comment;
+			}
+			$cur->update('WHERE post_id = '.$a_id);
 		}
 	}
@@ -300,9 +311,5 @@
 		$counter = $this->getCategoriesCounter($c_params);
 		
-		if (isset($params['without_empty']) && ($params['without_empty'] == false)) {
-			$without_empty = false;
-		} else {
-			$without_empty = $this->core->auth->userID() == false; # Get all categories if in admin display
-		}
+		$without_empty = $this->core->auth->userID() == false; # For public display
 		
 		$start = isset($params['start']) ? (integer) $params['start'] : 0;
@@ -498,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
@@ -734,5 +735,5 @@
 	- no_content: Don't retrieve entry content (excerpt and content)
 	- post_type: Get only entries with given type (default "post", array for many types and '' for no type)
-	- post_id: (integer or array) Get entry with given post_id
+	- post_id: (integer) Get entry with given post_id
 	- post_url: Get entry with given post_url field
 	- user_id: (integer) Get entries belonging to given user ID
@@ -754,5 +755,4 @@
 	- limit: Limit parameter
 	- sql_only : return the sql request instead of results. Only ids are selected
-	- exclude_post_id : (integer or array) Exclude entries with given post_id
 	
 	Please note that on every cat_id or cat_url, you can add ?not to exclude
@@ -848,13 +848,4 @@
 			}
 			$strReq .= 'AND P.post_id '.$this->con->in($params['post_id']);
-		}
-		
-		if (isset($params['exclude_post_id']) && $params['exclude_post_id'] !== '') {
-			if (is_array($params['exclude_post_id'])) {
-				array_walk($params['exclude_post_id'],create_function('&$v,$k','if($v!==null){$v=(integer)$v;}'));
-			} else {
-				$params['exclude_post_id'] = array((integer) $params['exclude_post_id']);
-			}
-			$strReq .= 'AND P.post_id NOT '.$this->con->in($params['exclude_post_id']);
 		}
 		
@@ -2240,20 +2231,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 post_id '.
-			'FROM '.$this->prefix.'comment '.
-			'WHERE comment_id'.$this->con->in($co_ids).
-			'GROUP BY post_id';
-		
-		$rs = $this->con->select($strReq);
-		
-		while ($rs->fetch()) {
-			$affected_posts[] = (integer) $rs->post_id;
 		}
 		
@@ -2285,5 +2262,5 @@
 		
 		$this->con->execute($strReq);
-		$this->triggerComments($co_ids, true, $affected_posts);
+		$this->triggerComments($co_ids,true);
 		$this->triggerBlog();
 	}
@@ -2340,8 +2317,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.core.php
===================================================================
--- inc/core/class.dc.core.php	(revision 1593)
+++ inc/core/class.dc.core.php	(revision 1179)
@@ -928,5 +928,5 @@
 		
 		if (!empty($params['q'])) {
-			$params['q'] = strtolower(str_replace('*','%',$params['q']));
+			$params['q'] = str_replace('*','%',$params['q']);
 			$where .=
 			'AND ('.
Index: inc/public/class.dc.template.php
===================================================================
--- inc/public/class.dc.template.php	(revision 1611)
+++ inc/public/class.dc.template.php	(revision 1280)
@@ -955,8 +955,4 @@
 			$p .= "\$params['level'] = ".(integer) $attr['level'].";\n";
 		}
-
-		if (isset($attr['with_empty']) && ((boolean) $attr['with_empty'] == true)) {
-			$p .= '$params[\'without_empty\'] = false;';
-		}
 		
 		$res = "<?php\n";
Index: inc/public/lib.tpl.context.php
===================================================================
--- inc/public/lib.tpl.context.php	(revision 1537)
+++ inc/public/lib.tpl.context.php	(revision 1179)
@@ -416,67 +416,62 @@
 		global $core, $_ctx;
 		
-		try {
-			$media = new dcMedia($core);
-			$sizes = implode('|',array_keys($media->thumb_sizes)).'|o';
-			if (!preg_match('/^'.$sizes.'$/',$size)) {
-				$size = 's';
-			}
-			$p_url = $core->blog->settings->system->public_url;
-			$p_site = preg_replace('#^(.+?//.+?)/(.*)$#','$1',$core->blog->url);
-			$p_root = $core->blog->public_path;
-			
-			$pattern = '(?:'.preg_quote($p_site,'/').')?'.preg_quote($p_url,'/');
-			$pattern = sprintf('/<img.+?src="%s(.*?\.(?:jpg|jpeg|gif|png))"[^>]+/msui',$pattern);
-			
-			$src = '';
-			$alt = '';
-			
-			# We first look in post content
-			if (!$cat_only && $_ctx->posts)
+		$media = new dcMedia($core);
+		$sizes = implode('|',array_keys($media->thumb_sizes)).'|o';
+		if (!preg_match('/^'.$sizes.'$/',$size)) {
+			$size = 's';
+		}
+		$p_url = $core->blog->settings->system->public_url;
+		$p_site = preg_replace('#^(.+?//.+?)/(.*)$#','$1',$core->blog->url);
+		$p_root = $core->blog->public_path;
+		
+		$pattern = '(?:'.preg_quote($p_site,'/').')?'.preg_quote($p_url,'/');
+		$pattern = sprintf('/<img.+?src="%s(.*?\.(?:jpg|jpeg|gif|png))"[^>]+/msui',$pattern);
+		
+		$src = '';
+		$alt = '';
+		
+		# We first look in post content
+		if (!$cat_only && $_ctx->posts)
+		{
+			$subject = ($content_only ? '' : $_ctx->posts->post_excerpt_xhtml).$_ctx->posts->post_content_xhtml;
+			if (preg_match_all($pattern,$subject,$m) > 0)
 			{
-				$subject = ($content_only ? '' : $_ctx->posts->post_excerpt_xhtml).$_ctx->posts->post_content_xhtml;
-				if (preg_match_all($pattern,$subject,$m) > 0)
-				{
-					foreach ($m[1] as $i => $img) {
-						if (($src = self::ContentFirstImageLookup($p_root,$img,$size)) !== false) {
-							$dirname = str_replace('\\', '/', dirname($img)); 
-							$src = $p_url.($dirname != '/' ? $dirname : '').'/'.$src;
-							if (preg_match('/alt="([^"]+)"/',$m[0][$i],$malt)) {
-								$alt = $malt[1];
-							}
-							break;
+				foreach ($m[1] as $i => $img) {
+					if (($src = self::ContentFirstImageLookup($p_root,$img,$size)) !== false) {
+						$dirname = str_replace('\\', '/', dirname($img)); 
+						$src = $p_url.($dirname != '/' ? $dirname : '').'/'.$src;
+						if (preg_match('/alt="([^"]+)"/',$m[0][$i],$malt)) {
+							$alt = $malt[1];
 						}
+						break;
 					}
 				}
 			}
-			
-			# No src, look in category description if available
-	        if (!$src && $with_category && $_ctx->posts->cat_desc)
-	        {
-				if (preg_match_all($pattern,$_ctx->posts->cat_desc,$m) > 0)
-				{
-					foreach ($m[1] as $i => $img) {
-						if (($src = self::ContentFirstImageLookup($p_root,$img,$size)) !== false) {
-							$dirname = str_replace('\\', '/', dirname($img)); 
-							$src = $p_url.($dirname != '/' ? $dirname : '').'/'.$src;
-							if (preg_match('/alt="([^"]+)"/',$m[0][$i],$malt)) {
-								$alt = $malt[1];
-							}
-							break;
+		}
+		
+		# No src, look in category description if available
+        if (!$src && $with_category && $_ctx->posts->cat_desc)
+        {
+			if (preg_match_all($pattern,$_ctx->posts->cat_desc,$m) > 0)
+			{
+				foreach ($m[1] as $i => $img) {
+					if (($src = self::ContentFirstImageLookup($p_root,$img,$size)) !== false) {
+						$dirname = str_replace('\\', '/', dirname($img)); 
+						$src = $p_url.($dirname != '/' ? $dirname : '').'/'.$src;
+						if (preg_match('/alt="([^"]+)"/',$m[0][$i],$malt)) {
+							$alt = $malt[1];
 						}
+						break;
 					}
-				};
-			}
-			
-			if ($src) {
-				if ($no_tag) {
-					return $src;
-				} else {
-					return '<img alt="'.$alt.'" src="'.$src.'" class="'.$class.'" />';
 				}
-			}
-			
-		} catch (Exception $e) {
-			$core->error->add($e->getMessage());
+			};
+		}
+		
+		if ($src) {
+			if ($no_tag) {
+				return $src;
+			} else {
+				return '<img alt="'.$alt.'" src="'.$src.'" class="'.$class.'" />';
+			}
 		}
 	}
@@ -490,41 +485,37 @@
 		$base = $info['base'];
 		
-		try {
-			$media = new dcMedia($core);
-			$sizes = implode('|',array_keys($media->thumb_sizes));
-			if (preg_match('/^\.(.+)_('.$sizes.')$/',$base,$m)) {
-				$base = $m[1];
-			}
-			
-			$res = false;
-			if ($size != 'o' && file_exists($root.'/'.$info['dirname'].'/.'.$base.'_'.$size.'.jpg'))
-			{
-				$res = '.'.$base.'_'.$size.'.jpg';
-			}
-			else
-			{
-				$f = $root.'/'.$info['dirname'].'/'.$base;
-				if (file_exists($f.'.'.$info['extension'])) {
-					$res = $base.'.'.$info['extension'];
-				} elseif (file_exists($f.'.jpg')) {
-					$res = $base.'.jpg';
-				} elseif (file_exists($f.'.jpeg')) {
-					$res = $base.'.jpeg';
-				} elseif (file_exists($f.'.png')) {
-					$res = $base.'.png';
-				} elseif (file_exists($f.'.gif')) {
-					$res = $base.'.gif';
-				} elseif (file_exists($f.'.JPG')) {
-					$res = $base.'.JPG';
-				} elseif (file_exists($f.'.JPEG')) {
-					$res = $base.'.JPEG';
-				} elseif (file_exists($f.'.PNG')) {
-					$res = $base.'.PNG';
-				} elseif (file_exists($f.'.GIF')) {
-					$res = $base.'.GIF';
-				}
-			}
-		} catch (Exception $e) {
-			$core->error->add($e->getMessage());
+		$media = new dcMedia($core);
+		$sizes = implode('|',array_keys($media->thumb_sizes));
+		if (preg_match('/^\.(.+)_('.$sizes.')$/',$base,$m)) {
+			$base = $m[1];
+		}
+		
+		$res = false;
+		if ($size != 'o' && file_exists($root.'/'.$info['dirname'].'/.'.$base.'_'.$size.'.jpg'))
+		{
+			$res = '.'.$base.'_'.$size.'.jpg';
+		}
+		else
+		{
+			$f = $root.'/'.$info['dirname'].'/'.$base;
+			if (file_exists($f.'.'.$info['extension'])) {
+				$res = $base.'.'.$info['extension'];
+			} elseif (file_exists($f.'.jpg')) {
+				$res = $base.'.jpg';
+			} elseif (file_exists($f.'.jpeg')) {
+				$res = $base.'.jpeg';
+			} elseif (file_exists($f.'.png')) {
+				$res = $base.'.png';
+			} elseif (file_exists($f.'.gif')) {
+				$res = $base.'.gif';
+			} elseif (file_exists($f.'.JPG')) {
+				$res = $base.'.JPG';
+			} elseif (file_exists($f.'.JPEG')) {
+				$res = $base.'.JPEG';
+			} elseif (file_exists($f.'.PNG')) {
+				$res = $base.'.PNG';
+			} elseif (file_exists($f.'.GIF')) {
+				$res = $base.'.GIF';
+			}
 		}
 		
Index: inc/public/lib.urlhandlers.php
===================================================================
--- inc/public/lib.urlhandlers.php	(revision 1610)
+++ inc/public/lib.urlhandlers.php	(revision 1179)
@@ -263,6 +263,5 @@
 			$params = new ArrayObject(array(
 				'cat_url' => $args,
-				'post_type' => 'post',
-				'without_empty' => false));
+				'post_type' => 'post'));
 			
 			$core->callBehavior('publicCategoryBeforeGetCategories',$params,$args);
Index: locales/bn/main.po
===================================================================
--- locales/bn/main.po	(revision 1620)
+++ locales/bn/main.po	(revision 1556)
@@ -215,5 +215,5 @@
 
 #, fuzzy
-msgid "This blog ID is already used."
+msgid "That blog Id is already in use."
 msgstr "Dotclear ইতিমধ্যেই ইন্সটল করা আছে।"
 
@@ -836,5 +836,5 @@
 msgstr "পড়ে মনে করিয়ে দিও"
 
-msgid "<a href=\"%s\">Information about this version</a>."
+msgid "information about this version"
 msgstr ""
 
@@ -2397,5 +2397,5 @@
 msgstr "ব্লগ"
 
-msgid "Update"
+msgid "Updates"
 msgstr ""
 
Index: locales/ca/main.po
===================================================================
--- locales/ca/main.po	(revision 1620)
+++ locales/ca/main.po	(revision 1556)
@@ -219,5 +219,5 @@
 
 #, fuzzy
-msgid "This blog ID is already used."
+msgid "That blog Id is already in use."
 msgstr "DotClear esta instal·lat."
 
@@ -867,5 +867,5 @@
 msgstr ""
 
-msgid "<a href=\"%s\">Information about this version</a>."
+msgid "information about this version"
 msgstr ""
 
@@ -2478,5 +2478,5 @@
 msgstr "Blog"
 
-msgid "Update"
+msgid "Updates"
 msgstr ""
 
Index: locales/cs/main.po
===================================================================
--- locales/cs/main.po	(revision 1620)
+++ locales/cs/main.po	(revision 1556)
@@ -214,5 +214,5 @@
 msgstr "Zakázat vyhledavacím enginům indexovat nebo archivovat obsah blogu."
 
-msgid "This blog ID is already used."
+msgid "That blog Id is already in use."
 msgstr "Blog ID je už použito."
 
@@ -844,5 +844,5 @@
 msgstr "Připomenout později"
 
-msgid "<a href=\"%s\">Information about this version</a>."
+msgid "information about this version"
 msgstr ""
 
@@ -2399,5 +2399,5 @@
 msgstr "Blog"
 
-msgid "Update"
+msgid "Updates"
 msgstr "Aktualizace"
 
Index: locales/da/main.po
===================================================================
--- locales/da/main.po	(revision 1620)
+++ locales/da/main.po	(revision 1556)
@@ -215,5 +215,5 @@
 
 #, fuzzy
-msgid "This blog ID is already used."
+msgid "That blog Id is already in use."
 msgstr "Dotclear er allerede installeret."
 
@@ -845,5 +845,5 @@
 msgstr "Påmind mig senere"
 
-msgid "<a href=\"%s\">Information about this version</a>."
+msgid "information about this version"
 msgstr ""
 
@@ -2409,5 +2409,5 @@
 msgstr ""
 
-msgid "Update"
+msgid "Updates"
 msgstr ""
 
Index: locales/de/main.po
===================================================================
--- locales/de/main.po	(revision 1620)
+++ locales/de/main.po	(revision 1556)
@@ -212,5 +212,5 @@
 msgstr "Erlaube Suchmaschinen weder das Durchsuchen und Archivieren des Inhaltes noch des Archivs dieses Blogs."
 
-msgid "This blog ID is already used."
+msgid "That blog Id is already in use."
 msgstr "Diese Blog-ID wird schon verwendet."
 
@@ -841,5 +841,5 @@
 msgstr "Erinnere mich später"
 
-msgid "<a href=\"%s\">Information about this version</a>."
+msgid "information about this version"
 msgstr "Informationen zu dieser Version"
 
@@ -2400,5 +2400,5 @@
 msgstr "Blog"
 
-msgid "Update"
+msgid "Updates"
 msgstr "Aktualisierungen"
 
Index: locales/en/main.po
===================================================================
--- locales/en/main.po	(revision 1622)
+++ locales/en/main.po	(revision 1557)
@@ -211,5 +211,5 @@
 msgstr ""
 
-msgid "This blog ID is already used."
+msgid "That blog Id is already in use."
 msgstr ""
 
@@ -547,5 +547,5 @@
 
 msgid "Entries (all types)"
-msgstr "Entries &amp; pages"
+msgstr "Entries & pages"
 
 msgid "Status"
@@ -829,6 +829,5 @@
 msgstr ""
 
-#, php-format
-msgid "<a href=\"%s\">Information about this version</a>."
+msgid "information about this version"
 msgstr ""
 
@@ -2359,5 +2358,5 @@
 msgstr ""
 
-msgid "Update"
+msgid "Updates"
 msgstr ""
 
Index: locales/eo/main.po
===================================================================
--- locales/eo/main.po	(revision 1620)
+++ locales/eo/main.po	(revision 1556)
@@ -211,5 +211,5 @@
 msgstr ""
 
-msgid "This blog ID is already used."
+msgid "That blog Id is already in use."
 msgstr ""
 
@@ -826,5 +826,5 @@
 msgstr ""
 
-msgid "<a href=\"%s\">Information about this version</a>."
+msgid "information about this version"
 msgstr ""
 
@@ -2346,5 +2346,5 @@
 msgstr ""
 
-msgid "Update"
+msgid "Updates"
 msgstr ""
 
Index: locales/es-ar/main.po
===================================================================
--- locales/es-ar/main.po	(revision 1620)
+++ locales/es-ar/main.po	(revision 1556)
@@ -217,5 +217,5 @@
 
 #, fuzzy
-msgid "This blog ID is already used."
+msgid "That blog Id is already in use."
 msgstr "Dotclear ya está instalado."
 
@@ -847,5 +847,5 @@
 msgstr "Recordar mas tarde"
 
-msgid "<a href=\"%s\">Information about this version</a>."
+msgid "information about this version"
 msgstr ""
 
@@ -2416,5 +2416,5 @@
 msgstr "Blog"
 
-msgid "Update"
+msgid "Updates"
 msgstr "Actualizaciones"
 
Index: locales/es/main.po
===================================================================
--- locales/es/main.po	(revision 1620)
+++ locales/es/main.po	(revision 1556)
@@ -218,5 +218,5 @@
 
 #, fuzzy
-msgid "This blog ID is already used."
+msgid "That blog Id is already in use."
 msgstr "Dotclear ya está instalado."
 
@@ -850,5 +850,5 @@
 msgstr "Recordármelo más tarde"
 
-msgid "<a href=\"%s\">Information about this version</a>."
+msgid "information about this version"
 msgstr ""
 
@@ -2421,5 +2421,5 @@
 msgstr "Blog"
 
-msgid "Update"
+msgid "Updates"
 msgstr "Actualizaciones"
 
Index: locales/eu/main.po
===================================================================
--- locales/eu/main.po	(revision 1620)
+++ locales/eu/main.po	(revision 1556)
@@ -211,5 +211,5 @@
 msgstr ""
 
-msgid "This blog ID is already used."
+msgid "That blog Id is already in use."
 msgstr ""
 
@@ -826,5 +826,5 @@
 msgstr ""
 
-msgid "<a href=\"%s\">Information about this version</a>."
+msgid "information about this version"
 msgstr ""
 
@@ -2346,5 +2346,5 @@
 msgstr ""
 
-msgid "Update"
+msgid "Updates"
 msgstr ""
 
Index: locales/fr/help/core_trackbacks.html
===================================================================
--- locales/fr/help/core_trackbacks.html	(revision 1614)
+++ locales/fr/help/core_trackbacks.html	(revision 1573)
@@ -7,5 +7,5 @@
 
 <h4>Rétroliens</h4>
-<p>Pour envoyer un rétrolien cliquez sur le lien <em>Faire des rétroliens</em>.
+<p>Pour faire un rétrolien cliquez sur le lien <em>Faire des rétroliens</em>.
 Si vous ne voyez pas ce lien, vérifiez que votre billet est bien dans l'état
 <em>publié</em>.</p>
Index: locales/fr/help/core_user.html
===================================================================
--- locales/fr/help/core_user.html	(revision 1609)
+++ locales/fr/help/core_user.html	(revision 1605)
@@ -58,5 +58,5 @@
   <dd>Ce choix déterminera l'affichage de l'heure de publication des billets.</dd>
 
-  <dt>Changement de mot de passe requis à la prochaine connexion</dt>
+  <dt>Changement de mot de passe requis pour la connexion</dt>
   <dd>Cocher cette case permettra au nouvel utilisateur de choisir par lui-même son mot de passe à sa première connexion.</dd>
 
Index: locales/fr/main.po
===================================================================
--- locales/fr/main.po	(revision 1622)
+++ locales/fr/main.po	(revision 1607)
@@ -89,5 +89,5 @@
 
 msgid "Confirm password:"
-msgstr "Confirmer le mot de passe :"
+msgstr "Confirmez le mot de passe :"
 
 msgid "change"
@@ -230,5 +230,5 @@
 msgstr "Je souhaite que mon blog ne soit ni indexé ni archivé par les moteurs de recherche et archiveurs."
 
-msgid "This blog ID is already used."
+msgid "That blog Id is already in use."
 msgstr "Cet identifiant est déjà utilisé."
 
@@ -578,5 +578,5 @@
 
 msgid "Entries (all types)"
-msgstr "Billets &amp; pages"
+msgstr "Billets & pages"
 
 msgid "Status"
@@ -889,7 +889,6 @@
 msgstr "Me le rappeler plus tard"
 
-#, php-format
-msgid "<a href=\"%s\">Information about this version</a>."
-msgstr "<a href=\"%s\">Information à propos de cette version</a>."
+msgid "information about this version"
+msgstr "Information à propos de cette version"
 
 msgid "Some plugins are installed twice:"
@@ -1679,5 +1678,5 @@
 
 msgid "Ping blogs"
-msgstr "Envoyer des rétroliens"
+msgstr "Faire des rétroliens"
 
 msgid "Trackbacks"
@@ -1887,5 +1886,5 @@
 
 msgid "Disable javascript powered drag and drop for ordering items"
-msgstr "Désactiver le glisser-déposer pour ordonnancer les éléments"
+msgstr "Désactiver le drag and drop javascript pour ordonnancer les éléments"
 
 msgid "Numeric fields will allow to type the elements' ordering number."
@@ -1917,10 +1916,4 @@
 msgstr "Retirer les favoris sélectionnés"
 
-msgid "Your current password:"
-msgstr "Votre mot de passe actuel :"
-
-msgid "Update my profile"
-msgstr "Mettre à jour mon profil"
-
 msgid "Are you sure you want to remove selected favorites?"
 msgstr "Êtes-vous sûr de vouloir retirer les favoris sélectionnés ?"
@@ -2100,5 +2093,5 @@
 
 msgid "Password change required to connect"
-msgstr "Changement de mot de passe requis à la prochaine connexion"
+msgstr "Changement de mot de passe requis pour la connexion"
 
 msgid "Save and create another"
@@ -2517,6 +2510,6 @@
 msgstr "Blog"
 
-msgid "Update"
-msgstr "Mise à jour"
+msgid "Updates"
+msgstr "Mises à jour"
 
 msgid "Languages"
@@ -3238,37 +3231,4 @@
 msgstr "Cliquez ici pour déverrouiller ce champ"
 
-msgid "User profile"
-msgstr "Profil utilisateur"
-
-msgid "User ID:"
-msgstr "Identifiant (login) :"
-
-msgid "%s is super admin (all rights on all blogs)."
-msgstr "%s est super administrateur (tous les droits sur tous les blogs)."
-
-msgid "Interface"
-msgstr "Interface"
-
-msgid "Edition"
-msgstr "Édition"
-
-msgid "Other options"
-msgstr "Autres options"
-
-msgid "No permissions so far."
-msgstr "Aucune permission pour le moment."
-
-msgid "Accessibility"
-msgstr "Accessibilité"
-
-msgid "Dashboard and menu"
-msgstr "Tableau de bord et menu"
-
-msgid "Dashboard modules"
-msgstr "Modules du tableau de bord"
-
-msgid "If checked, numeric fields will allow to type the elements' ordering number."
-msgstr "Si cette option est cochée, des champs numérique permettront l'ordonnancement des éléments."
-
-msgid "Save my options"
-msgstr "Enregistrer mes options"
+msgid "User ID"
+msgstr "Identifiant (login)"
Index: locales/fr/plugins.po
===================================================================
--- locales/fr/plugins.po	(revision 1619)
+++ locales/fr/plugins.po	(revision 1605)
@@ -1675,7 +1675,4 @@
 msgstr "Avec le nombre de billets"
 
-msgid "Include empty categories"
-msgstr "Inclure les catégories vides"
-
 msgid "Subscribe links"
 msgstr "Liens de souscription"
@@ -1978,8 +1975,2 @@
 msgid "Are you sure you want to remove tag: “%s”?"
 msgstr "Êtes-vous sûr de vouloir supprimer le mot-clé “%s” ?"
-
-msgid "Syntax color for theme editor"
-msgstr "Coloration syntaxique de l'éditeur de thème"
-
-msgid "Hide in widget Pages"
-msgstr "Ne pas lister dans le widget Pages"
Index: locales/hu/main.po
===================================================================
--- locales/hu/main.po	(revision 1620)
+++ locales/hu/main.po	(revision 1556)
@@ -219,5 +219,5 @@
 
 #, fuzzy
-msgid "This blog ID is already used."
+msgid "That blog Id is already in use."
 msgstr "A DotClear már telepítve van."
 
@@ -867,5 +867,5 @@
 msgstr "Értesíts később"
 
-msgid "<a href=\"%s\">Information about this version</a>."
+msgid "information about this version"
 msgstr ""
 
@@ -2457,5 +2457,5 @@
 msgstr "Blog"
 
-msgid "Update"
+msgid "Updates"
 msgstr "Frissítések"
 
Index: locales/it/main.po
===================================================================
--- locales/it/main.po	(revision 1620)
+++ locales/it/main.po	(revision 1556)
@@ -212,5 +212,5 @@
 msgstr "Impedisci ai motori di ricerca e ai sistemi di archiviazione di indicizzare o salvare il contenuto del blog."
 
-msgid "This blog ID is already used."
+msgid "That blog Id is already in use."
 msgstr "L'ID del blog è già in uso."
 
@@ -843,5 +843,5 @@
 msgstr "Ricorda in seguito"
 
-msgid "<a href=\"%s\">Information about this version</a>."
+msgid "information about this version"
 msgstr ""
 
@@ -2398,5 +2398,5 @@
 msgstr "Blog"
 
-msgid "Update"
+msgid "Updates"
 msgstr "Aggiornamenti"
 
Index: locales/ja/main.po
===================================================================
--- locales/ja/main.po	(revision 1620)
+++ locales/ja/main.po	(revision 1556)
@@ -222,5 +222,5 @@
 
 #, fuzzy
-msgid "This blog ID is already used."
+msgid "That blog Id is already in use."
 msgstr "Dotclear はすでにインストールされています。"
 
@@ -852,5 +852,5 @@
 msgstr "後で再度知らせる"
 
-msgid "<a href=\"%s\">Information about this version</a>."
+msgid "information about this version"
 msgstr ""
 
@@ -2430,5 +2430,5 @@
 msgstr "ブログ"
 
-msgid "Update"
+msgid "Updates"
 msgstr "アップデート"
 
Index: locales/ko/main.po
===================================================================
--- locales/ko/main.po	(revision 1620)
+++ locales/ko/main.po	(revision 1556)
@@ -220,5 +220,5 @@
 
 #, fuzzy
-msgid "This blog ID is already used."
+msgid "That blog Id is already in use."
 msgstr "Dotclear가 이미 설치되어 있습니다."
 
@@ -851,5 +851,5 @@
 msgstr "나중에 다시 알려줌"
 
-msgid "<a href=\"%s\">Information about this version</a>."
+msgid "information about this version"
 msgstr ""
 
@@ -2431,5 +2431,5 @@
 msgstr "블로그"
 
-msgid "Update"
+msgid "Updates"
 msgstr "DotClear 갱신"
 
Index: locales/lt/main.po
===================================================================
--- locales/lt/main.po	(revision 1620)
+++ locales/lt/main.po	(revision 1556)
@@ -193,5 +193,5 @@
 msgstr "Nenoriu, kad paieškos sistemos ir archyvatoriai indeksuotų ir archyvuotų mano blogo turinio."
 
-msgid "This blog ID is already used."
+msgid "That blog Id is already in use."
 msgstr "Šito blogo ID jau yra naudojamas."
 
@@ -2205,5 +2205,5 @@
 msgstr "Blogas"
 
-msgid "Update"
+msgid "Updates"
 msgstr "Atnaujinimai"
 
Index: locales/nl/main.po
===================================================================
--- locales/nl/main.po	(revision 1620)
+++ locales/nl/main.po	(revision 1556)
@@ -211,5 +211,5 @@
 msgstr "Zoekmachines mogen mijn blog niet indexeren en archiveren."
 
-msgid "This blog ID is already used."
+msgid "That blog Id is already in use."
 msgstr ""
 
@@ -829,5 +829,5 @@
 msgstr ""
 
-msgid "<a href=\"%s\">Information about this version</a>."
+msgid "information about this version"
 msgstr ""
 
@@ -2361,5 +2361,5 @@
 msgstr ""
 
-msgid "Update"
+msgid "Updates"
 msgstr ""
 
Index: locales/oc/main.po
===================================================================
--- locales/oc/main.po	(revision 1620)
+++ locales/oc/main.po	(revision 1556)
@@ -212,5 +212,5 @@
 msgstr ""
 
-msgid "This blog ID is already used."
+msgid "That blog Id is already in use."
 msgstr ""
 
@@ -835,5 +835,5 @@
 msgstr ""
 
-msgid "<a href=\"%s\">Information about this version</a>."
+msgid "information about this version"
 msgstr ""
 
@@ -2379,5 +2379,5 @@
 msgstr "Blòg"
 
-msgid "Update"
+msgid "Updates"
 msgstr ""
 
Index: locales/pl/main.po
===================================================================
--- locales/pl/main.po	(revision 1620)
+++ locales/pl/main.po	(revision 1556)
@@ -212,5 +212,5 @@
 msgstr "Chcę, aby wyszukiwarki i archiwizery nie indeksowały i nie archiwizowały zawartości mojego bloga."
 
-msgid "This blog ID is already used."
+msgid "That blog Id is already in use."
 msgstr "Ten identyfikator bloga jest już używany."
 
@@ -837,5 +837,5 @@
 msgstr "Przypomnij mi później"
 
-msgid "<a href=\"%s\">Information about this version</a>."
+msgid "information about this version"
 msgstr "informacje o tej wersji"
 
@@ -2372,5 +2372,5 @@
 msgstr "Blog"
 
-msgid "Update"
+msgid "Updates"
 msgstr "Uaktualnienia"
 
Index: locales/pt-br/main.po
===================================================================
--- locales/pt-br/main.po	(revision 1620)
+++ locales/pt-br/main.po	(revision 1556)
@@ -219,5 +219,5 @@
 
 #, fuzzy
-msgid "This blog ID is already used."
+msgid "That blog Id is already in use."
 msgstr "DotClear já está instalado."
 
@@ -870,5 +870,5 @@
 msgstr ""
 
-msgid "<a href=\"%s\">Information about this version</a>."
+msgid "information about this version"
 msgstr ""
 
@@ -2497,5 +2497,5 @@
 msgstr "Blog"
 
-msgid "Update"
+msgid "Updates"
 msgstr ""
 
Index: locales/pt/main.po
===================================================================
--- locales/pt/main.po	(revision 1620)
+++ locales/pt/main.po	(revision 1556)
@@ -218,5 +218,5 @@
 
 #, fuzzy
-msgid "This blog ID is already used."
+msgid "That blog Id is already in use."
 msgstr "Dotclear já está instalado."
 
@@ -848,5 +848,5 @@
 msgstr "Lembrar-me mais tarde"
 
-msgid "<a href=\"%s\">Information about this version</a>."
+msgid "information about this version"
 msgstr ""
 
@@ -2408,5 +2408,5 @@
 msgstr "Blog"
 
-msgid "Update"
+msgid "Updates"
 msgstr "Actualizações"
 
Index: locales/ro/main.po
===================================================================
--- locales/ro/main.po	(revision 1620)
+++ locales/ro/main.po	(revision 1556)
@@ -213,5 +213,5 @@
 msgstr ""
 
-msgid "This blog ID is already used."
+msgid "That blog Id is already in use."
 msgstr ""
 
@@ -828,5 +828,5 @@
 msgstr ""
 
-msgid "<a href=\"%s\">Information about this version</a>."
+msgid "information about this version"
 msgstr ""
 
@@ -2357,5 +2357,5 @@
 msgstr ""
 
-msgid "Update"
+msgid "Updates"
 msgstr ""
 
Index: locales/ru/main.po
===================================================================
--- locales/ru/main.po	(revision 1620)
+++ locales/ru/main.po	(revision 1556)
@@ -216,5 +216,5 @@
 msgstr "Я не хочу, чтобы мой блог индексировался и архивировался поисковыми машинами."
 
-msgid "This blog ID is already used."
+msgid "That blog Id is already in use."
 msgstr "Dotclear уже установлен."
 
@@ -847,5 +847,5 @@
 msgstr "Напомнить мне позже"
 
-msgid "<a href=\"%s\">Information about this version</a>."
+msgid "information about this version"
 msgstr ""
 
@@ -2399,5 +2399,5 @@
 msgstr "Блог"
 
-msgid "Update"
+msgid "Updates"
 msgstr "Обновления"
 
Index: locales/sr/main.po
===================================================================
--- locales/sr/main.po	(revision 1620)
+++ locales/sr/main.po	(revision 1579)
@@ -217,5 +217,5 @@
 
 #, fuzzy
-msgid "This blog ID is already used."
+msgid "That blog Id is already in use."
 msgstr "Dotclear est déjà installé."
 
@@ -858,5 +858,5 @@
 msgstr ""
 
-msgid "<a href=\"%s\">Information about this version</a>."
+msgid "information about this version"
 msgstr ""
 
@@ -1654,5 +1654,5 @@
 
 msgid "Ping blogs"
-msgstr "Envoyer des rétroliens"
+msgstr "Faire des rétroliens"
 
 msgid "Trackbacks"
@@ -2444,5 +2444,5 @@
 msgstr "Blog"
 
-msgid "Update"
+msgid "Updates"
 msgstr ""
 
Index: locales/sv/main.po
===================================================================
--- locales/sv/main.po	(revision 1620)
+++ locales/sv/main.po	(revision 1556)
@@ -211,5 +211,5 @@
 msgstr ""
 
-msgid "This blog ID is already used."
+msgid "That blog Id is already in use."
 msgstr ""
 
@@ -826,5 +826,5 @@
 msgstr ""
 
-msgid "<a href=\"%s\">Information about this version</a>."
+msgid "information about this version"
 msgstr ""
 
@@ -2346,5 +2346,5 @@
 msgstr ""
 
-msgid "Update"
+msgid "Updates"
 msgstr ""
 
Index: locales/te/main.po
===================================================================
--- locales/te/main.po	(revision 1620)
+++ locales/te/main.po	(revision 1556)
@@ -215,5 +215,5 @@
 
 #, fuzzy
-msgid "This blog ID is already used."
+msgid "That blog Id is already in use."
 msgstr "డాట్‌క్లియర్ ఇప్పటికే స్థాపితమైవుంది."
 
@@ -854,5 +854,5 @@
 msgstr ""
 
-msgid "<a href=\"%s\">Information about this version</a>."
+msgid "information about this version"
 msgstr ""
 
@@ -2426,5 +2426,5 @@
 msgstr "బ్లాగు"
 
-msgid "Update"
+msgid "Updates"
 msgstr ""
 
Index: locales/tr/main.po
===================================================================
--- locales/tr/main.po	(revision 1620)
+++ locales/tr/main.po	(revision 1556)
@@ -217,5 +217,5 @@
 
 #, fuzzy
-msgid "This blog ID is already used."
+msgid "That blog Id is already in use."
 msgstr "Dotclear evvelce kurulmuş."
 
@@ -840,5 +840,5 @@
 msgstr "Gelecekte beni hatırla"
 
-msgid "<a href=\"%s\">Information about this version</a>."
+msgid "information about this version"
 msgstr ""
 
@@ -2404,5 +2404,5 @@
 msgstr "Blog"
 
-msgid "Update"
+msgid "Updates"
 msgstr "Güncellemeler"
 
Index: locales/zh-cn/main.po
===================================================================
--- locales/zh-cn/main.po	(revision 1620)
+++ locales/zh-cn/main.po	(revision 1556)
@@ -215,5 +215,5 @@
 
 #, fuzzy
-msgid "This blog ID is already used."
+msgid "That blog Id is already in use."
 msgstr "Dotclear 已被安装。"
 
@@ -845,5 +845,5 @@
 msgstr "稍后提醒我"
 
-msgid "<a href=\"%s\">Information about this version</a>."
+msgid "information about this version"
 msgstr ""
 
@@ -2407,5 +2407,5 @@
 msgstr "博客"
 
-msgid "Update"
+msgid "Updates"
 msgstr "更新"
 
Index: plugins/antispam/filters/class.dc.filter.iplookup.php
===================================================================
--- plugins/antispam/filters/class.dc.filter.iplookup.php	(revision 1622)
+++ plugins/antispam/filters/class.dc.filter.iplookup.php	(revision 1499)
@@ -81,5 +81,5 @@
 		form::textarea('bls',40,3,html::escapeHTML($bls),'maximal').
 		'</p>'.
-		'<p><input type="submit" value="'.__('Save').'" />'.
+		'<p><input type="submit" value="'.__('Save').'" /></p>'.
 		$this->core->formNonce().'</p>'.
 		'</form>';
Index: plugins/attachments/_admin.php
===================================================================
--- plugins/attachments/_admin.php	(revision 1620)
+++ plugins/attachments/_admin.php	(revision 1501)
@@ -15,7 +15,4 @@
 $core->addBehavior ('adminPostAfterForm',array('attachmentAdmin','adminPostAfterForm'));
 $core->addBehavior('adminPostHeaders',array('attachmentAdmin','postHeaders'));
-$core->addBehavior ('adminPageFormItems',array('attachmentAdmin','adminPostFormItems'));
-$core->addBehavior ('adminPageAfterForm',array('attachmentAdmin','adminPostAfterForm'));
-$core->addBehavior('adminPageHeaders',array('attachmentAdmin','postHeaders'));
 
 class attachmentAdmin
Index: plugins/importExport/inc/class.dc.import.dc1.php
===================================================================
--- plugins/importExport/inc/class.dc.import.dc1.php	(revision 1622)
+++ plugins/importExport/inc/class.dc.import.dc1.php	(revision 1569)
@@ -160,5 +160,5 @@
 				'<p><label for="db_prefix">'.__('Database Tables Prefix:').'</label> '.
 				form::field('db_prefix',30,255,html::escapeHTML($this->vars['db_prefix'])).'</p>'.
-				'<h3 class="vertical-separator">'.__('Entries import options').'</h3>'.
+				'<h3>'.__('Entries import options').'</h3>'.
 				'<p><label for="post_limit">'.__('Number of entries to import at once:').'</label> '.
 				form::field('post_limit',3,3,html::escapeHTML($this->vars['post_limit'])).'</p>'
@@ -190,5 +190,5 @@
 			case 6:
 				echo 
-				'<h3 class="vertical-separator">'.__('Please read carefully').'</h3>'.
+				'<h3>'.__('Please read carefully').'</h3>'.
 				'<ul>'.
 				'<li>'.__('Every newly imported user has received a random password '.
@@ -216,9 +216,9 @@
 		return
 		'<form action="'.$this->getURL(true).'" method="post">'.
-		'<h3 class="vertical-separator">'.$legend.'</h3>'.
-		'<div>'.$this->core->formNonce().
+		'<h3>'.$legend.'</h3>'.
+		$this->core->formNonce().
 		form::hidden(array('do'),'step'.$step).
-		'%s'.'</div>'.
-		'<p class="vertical-separator"><input type="submit" value="'.$submit_value.'" /></p>'.
+		'%s'.
+		'<p><input type="submit" value="'.$submit_value.'" /></p>'.
 		'<p class="form-note info">'.__('Depending on the size of your blog, it could take a few minutes.').'</p>'.
 		'</form>';
Index: plugins/importExport/inc/class.dc.import.wp.php
===================================================================
--- plugins/importExport/inc/class.dc.import.wp.php	(revision 1622)
+++ plugins/importExport/inc/class.dc.import.wp.php	(revision 1569)
@@ -192,8 +192,5 @@
 				form::field('db_prefix',30,255,html::escapeHTML($this->vars['db_prefix'])).'</p>'.
 
-				'<h3 class="vertical-separator">'.__('Entries import options').'</h3>'.
-				'<div class="two-cols">'.
-
-				'<div class="col">'.
+				'<h3>'.__('Entries import options').'</h3>'.
 				'<p>'.__('WordPress and Dotclear\'s handling of categories are quite different. '.
 				'You can assign several categories to a single post in WordPress. In the Dotclear world, '.
@@ -206,7 +203,5 @@
 				'importing your blog, as Dotclear allows you to actually keep your posts '.
 				'uncategorized.').'</p>'.
-				'</div>'.
 
-				'<div class="col">'.
 				'<p><label for="ignore_first_cat" class="classic">'.form::checkbox('ignore_first_cat',1,$this->vars['ignore_first_cat']).' '.
 				__('Ignore the first category:').'</label></p>'.
@@ -219,14 +214,11 @@
 				'<p><label for="post_limit">'.__('Number of entries to import at once:').'</label> '.
 				form::field('post_limit',3,3,html::escapeHTML($this->vars['post_limit'])).'</p>'.
-				'</div>'.
 				
-				'</div>'.
-
-				'<h3 class="clear vertical-separator">'.__('Content filters').'</h3>'.
+				'<h3>'.__('Content filters').'</h3>'.
 				'<p>'.__('You may want to process your post and/or comment content with the following filters.').'</p>'.
 				'<p><label for="post_formater">'.__('Post content formatter:').'</label> '.
 				form::combo('post_formater',$this->formaters,$this->vars['post_formater']).'</p>'.
 				'<p><label for="comment_formater">'.__('Comment content formatter:').'</label> '
-				.form::combo('comment_formater',$this->formaters,$this->vars['comment_formater']).'</p>'
+				.form::combo('comment_formater',$this->formaters,$this->vars['comment_formater']).'</label></p>'
 				);
 				break;
@@ -273,8 +265,8 @@
 		return
 		'<form action="'.$this->getURL(true).'" method="post">'.
-		'<h3 class="vertical-separator">'.$legend.'</h3>'.
-		'<div>'.$this->core->formNonce().
+		'<h3>'.$legend.'</h3>'.
+		$this->core->formNonce().
 		form::hidden(array('do'),'step'.$step).
-		'%s'.'</div>'.
+		'%s'.
 		'<p><input type="submit" value="'.$submit_value.'" /></p>'.
 		'<p class="form-note info">'.__('Depending on the size of your blog, it could take a few minutes.').'</p>'.
Index: plugins/pages/page.php
===================================================================
--- plugins/pages/page.php	(revision 1621)
+++ plugins/pages/page.php	(revision 1553)
@@ -139,7 +139,5 @@
 			$core->media = new dcMedia($core);
 			$post_media = $core->media->getPostMedia($post_id);
-		} catch (Exception $e) {
-			$core->error->add($e->getMessage());
-		}
+		} catch (Exception $e) {}
 	}
 }
@@ -394,110 +392,8 @@
 
 
-/* Post form if we can edit page
+/* Post form if we can edit post
 -------------------------------------------------------- */
 if ($can_edit_page)
 {
-	$sidebar_items = new ArrayObject(array(
-		'status-box' => array(
-			'title' => __('Status'),
-			'items' => array(
-				'post_status' => 
-					'<p><label for="post_status" class="ib">'.__('Page status:').'</label> '.
-					form::combo('post_status',$status_combo,$post_status,'','',!$can_publish).
-					'</p>',
-				'post_dt' => 
-					'<p><label for="post_dt" class="ib">'.__('Publication date and hour').'</label>'.
-					form::field('post_dt',16,16,$post_dt,($bad_dt ? 'invalid' : '')).
-					'</p>',
-				'post_lang' =>
-					'<p><label for="post_lang" class="ib">'.__('Page lang:').'</label>'.
-					form::combo('post_lang',$lang_combo,$post_lang).
-					'</p>',
-				'post_format' =>
-					'<div>'.
-					'<h5 id="label_format"><label for="post_format" class="ib">'.__('Text formating').'</label></h5>'.
-					'<p>'.form::combo('post_format',$formaters_combo,$post_format,'maximal').
-					'</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></div>')),
-		'metas-box' => array(
-			'title' => __('Ordering'),
-			'items' => array(
-				'post_position' => 
-					'<p><label for="post_position" class="classic">'.__('Page position:').'</label> '.
-					form::field('post_position',3,3,(string) $post_position).
-					'</p>')),
-		'options-box' => array(
-			'title' => __('Options'),
-			'items' => array(
-				'post_open_comment' =>
-					'<p><label for="post_open_comment" class="classic">'.
-					form::checkbox('post_open_comment',1,$post_open_comment).' '.
-					__('Accept comments').'</label></p>'.
-					($core->blog->settings->system->allow_comments ? 
-						(isContributionAllowed($post_id,strtotime($post_dt),true) ? 
-							'' :
-							'<p class="form-note warn">'.
-							__('Warning: Comments are not more accepted for this entry.').'</p>') : 
-						'<p class="form-note warn">'.
-						__('Warning: Comments are not accepted on this blog.').'</p>'),
-				'post_open_tb' =>
-					'<p><label for="post_open_tb" class="classic">'.
-					form::checkbox('post_open_tb',1,$post_open_tb).' '.
-					__('Accept trackbacks').'</label></p>'.
-					($core->blog->settings->system->allow_trackbacks ? 
-						(isContributionAllowed($post_id,strtotime($post_dt),false) ? 
-							'' :
-							'<p class="form-note warn">'.
-							__('Warning: Trackbacks are not more accepted for this entry.').'</p>') : 
-						'<p class="form-note warn">'.__('Warning: Trackbacks are not accepted on this blog.').'</p>'),
-				'post_hide' =>	
-					'<p><label for="post_selected" class="classic">'.form::checkbox('post_selected',1,$post_selected).' '.
-					__('Hide in widget Pages').'</label>'.
-					'</p>',
-				'post_password' =>
-					'<p><label for="post_password" class="ib">'.__('Password').'</label>'.
-					form::field('post_password',10,32,html::escapeHTML($post_password),'maximal').
-					'</p>',
-				'post_url' =>
-					'<div class="lockable">'.
-					'<p><label for="post_url" class="ib">'.__('Edit basename').'</label>'.
-					form::field('post_url',10,255,html::escapeHTML($post_url),'maximal').
-					'</p>'.
-					'<p class="form-note warn">'.
-					__('Warning: If you set the URL manually, it may conflict with another entry.').
-					'</p></div>'
-	))));
-	$main_items = new ArrayObject(array(
-		"post_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').
-			'</p>',
-		
-		"post_excerpt" =>
-			'<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>',
-		
-		"post_content" =>
-			'<p class="area"><label class="required" '.
-			'for="post_content"><abbr title="'.__('Required field').'">*</abbr> '.__('Content:').'</label> '.
-			form::textarea('post_content',50,$core->auth->getOption('edit_size'),html::escapeHTML($post_content)).
-			'</p>',
-		
-		"post_notes" =>
-			'<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>'
-		)
-	);
-
-	# --BEHAVIOR-- adminPostFormItems
-	$core->callBehavior('adminPageFormItems',$main_items,$sidebar_items, isset($post) ? $post : null);
-
 	echo '<div class="multi-part" title="'.__('Edit page').'" id="edit-entry">';
 	echo '<form action="'.html::escapeURL($redir_url).'" method="post" id="entry-form">';
@@ -506,8 +402,24 @@
 	echo '<div id="entry-content"><div class="constrained">';
 	
-	
-	foreach ($main_items as $id => $item) {
-		echo $item;
-	}
+	echo
+	'<p class="col"><label for="post_title" class="required no-margin"><abbr title="'.__('Required field').'">*</abbr> '.__('Title:').'</label>'.
+	form::field('post_title',20,255,html::escapeHTML($post_title),'maximal').
+	'</p>'.
+	
+	'<p class="area" id="excerpt-area"><label for="post_excerpt">'.__('Excerpt:').
+	'<span class="form-note">'.__('Add an introduction to the page.').'</span></label> '.
+	form::textarea('post_excerpt',50,5,html::escapeHTML($post_excerpt)).
+	'</p>'.
+	
+	'<p class="area"><label class="required" '.
+	'for="post_content"><abbr title="'.__('Required field').'">*</abbr> '.__('Content:').'</label> '.
+	form::textarea('post_content',50,$core->auth->getOption('edit_size'),html::escapeHTML($post_content)).
+	'</p>';
+	
+	echo
+	'<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>';
 
 	# --BEHAVIOR-- adminPageForm
@@ -542,11 +454,94 @@
 	echo '<div id="entry-sidebar">';
 	
-	foreach ($sidebar_items as $id => $c) {
-		echo '<div id="'.$id.'" class="box">'.
-			'<h4>'.$c['title'].'</h4>';
-		foreach ($c['items'] as $e_name=>$e_content) {
-			echo $e_content;
-		}
-		echo '</div>';
+	echo
+	'<p><label for="post_status" class="ib">'.__('Page status:').'</label> '.
+	form::combo('post_status',$status_combo,$post_status,'','',!$can_publish).
+	'</p>'.
+	
+	'<p><label for="post_dt" class="ib">'.__('Published on:').'</label>'.
+	form::field('post_dt',16,16,$post_dt,($bad_dt ? 'invalid' : '')).'</p>'.
+	
+	'<p><label for="post_format" class="ib">'.__('Text formating:').'</label>'.
+	form::combo('post_format',$formaters_combo,$post_format).
+	($post_id && $post_format != 'xhtml' ? '<a class="button" href="'.html::escapeURL($redir_url).'&amp;id='.$post_id.'&amp;xconv=1">'.__('Convert to XHTML').'</a>' : '').
+	'</p>'.
+	
+	'<p><label for="post_open_comment" class="classic">'.form::checkbox('post_open_comment',1,$post_open_comment).' '.
+	__('Accept comments').'</label></p>'.
+	($core->blog->settings->system->allow_comments ? 
+		(isContributionAllowed($post_id,strtotime($post_dt),true) ? 
+			'' :
+			'<p class="form-note warn">'.__('Warning: Comments are not more accepted for this page.').'</p>') : 
+		'<p class="form-note warn">'.__('Warning: Comments are not accepted on this blog.').'</p>').
+
+	'<p><label for="post_open_tb" class="classic">'.form::checkbox('post_open_tb',1,$post_open_tb).' '.
+	__('Accept trackbacks').'</label></p>'.
+	($core->blog->settings->system->allow_trackbacks ? 
+		(isContributionAllowed($post_id,strtotime($post_dt),false) ? 
+			'' :
+			'<p class="form-note warn">'.__('Warning: Trackbacks are not more accepted for this page.').'</p>') : 
+		'<p class="form-note warn">'.__('Warning: Trackbacks are not accepted on this blog.').'</p>').
+	
+	'<p><label for="post_selected" class="classic">'.form::checkbox('post_selected',1,$post_selected).' '.
+	__('Hide').'</label></p>'.
+	'<p class="form-note">'.
+	__('If checked this page will be active but not listed in widget Pages.').
+	'</p>'.
+
+	'<p><label for="post_position" class="classic">'.__('Page position:').'</label> '.
+	form::field('post_position',3,3,(string) $post_position).
+	'</p>'.
+	
+	'<p><label for="post_lang" class="ib">'.__('Page lang:').'</label>'.
+	form::combo('post_lang',$lang_combo,$post_lang).'</p>'.
+	
+	'<p><label for="post_password" class="ib">'.__('Page password:').'</label>'.
+	form::field('post_password',10,32,html::escapeHTML($post_password),'maximal').
+	'</p>'.
+	
+	'<div class="lockable ib">'.
+	'<p><label for="post_url" class="ib">'.__('Basename:').'</label>'.
+	form::field('post_url',10,255,html::escapeHTML($post_url),'maximal').
+	'</p>'.
+	'<p class="form-note warn">'.
+	__('Warning: If you set the URL manually, it may conflict with another page.').
+	'</p>'.
+	'</div>';
+	
+	if ($post_id)
+	{
+		echo
+		'<h4 class="clear">'.__('Attachments').'</h4>';
+		foreach ($post_media as $f)
+		{
+			$ftitle = $f->media_title;
+			if (strlen($ftitle) > 18) {
+				$ftitle = substr($ftitle,0,16).'...';
+			}
+			echo
+			'<div class="media-item">'.
+			'<a class="media-icon" href="media_item.php?id='.$f->media_id.'">'.
+			'<img src="'.$f->media_icon.'" alt="" title="'.$f->basename.'" /></a>'.
+			'<ul>'.
+			'<li><a class="media-link" href="media_item.php?id='.$f->media_id.'"'.
+			'title="'.$f->basename.'">'.$ftitle.'</a></li>'.
+			'<li>'.$f->media_dtstr.'</li>'.
+			'<li>'.files::size($f->size).' - '.
+			'<a href="'.$f->file_url.'">'.__('open').'</a>'.'</li>'.
+			
+			'<li class="media-action"><a class="attachment-remove" id="attachment-'.$f->media_id.'" '.
+			'href="post_media.php?post_id='.$post_id.'&amp;media_id='.$f->media_id.'&amp;remove=1">'.
+			'<img src="images/check-off.png" alt="'.__('Remove').'" /></a>'.
+			'</li>'.
+			
+			'</ul>'.
+			'</div>';
+		}
+		unset($f);
+		
+		if (empty($post_media)) {
+			echo '<p class="form-note">'.__('No attachment.').'</p>';
+		}
+		echo '<p><a class="button" href="media.php?post_id='.$post_id.'">'.__('Add files to this page').'</a></p>';
 	}
 	
@@ -557,5 +552,5 @@
 	
 	echo '</form>';
-	echo '</div>';		// End 
+	echo '</div>';
 	
 	if ($post_id && !empty($post_media))
@@ -600,7 +595,4 @@
 	'<div id="comments" class="multi-part" title="'.__('Comments').'">';
 	
-	echo
-	'<p class="top-add"><a class="button add onblog_link" href="#comment-form">'.__('Add a comment').'</a></p>';
-
 	if ($has_action) {
 		echo '<form action="comments_actions.php" method="post">';
@@ -635,9 +627,14 @@
 		'</form>';
 	}
-		/* Add a comment
-	-------------------------------------------------------- */
-
+	
+	echo '</div>';
+}
+
+/* Add a comment
+-------------------------------------------------------- */
+if ($post_id)
+{
 	echo
-	'<div class="fieldset clear">'.
+	'<div class="multi-part" id="add-comment" title="'.__('Add a comment').'">'.
 	'<h3>'.__('Add a comment').'</h3>'.
 	
@@ -656,6 +653,5 @@
 	'</p>'.
 	
-	'<p class="area"><label for="comment_content" class="required"><abbr title="'.__('Required field').'">*</abbr> '.
-	__('Comment:').'</label> '.
+	'<p class="area"><label for="comment_content" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Comment:').'</label> '.
 	form::textarea('comment_content',50,8,html::escapeHTML('')).
 	'</p>'.
@@ -664,9 +660,7 @@
 	$core->formNonce().
 	'<input type="submit" name="add" value="'.__('Save').'" /></p>'.
-	'</div>'. #constrained
-
+	'</div>'.
 	'</form>'.
-	'</div>'. #add comment
-	'</div>'; #comments
+	'</div>';
 }
 
Index: plugins/tags/_admin.php
===================================================================
--- plugins/tags/_admin.php	(revision 1609)
+++ plugins/tags/_admin.php	(revision 1518)
@@ -321,7 +321,8 @@
 		
 		echo
+		'<fieldset><legend>'.__('Tags').'</legend>'.
 		'<p><label for="user_tag_list_format">'.__('Tags list format:').'</label> '.
 		form::combo('user_tag_list_format',$combo,$value).
-		'</p>';
+		'</p></fieldset>';
 	}
 	
Index: plugins/themeEditor/_admin.php
===================================================================
--- plugins/themeEditor/_admin.php	(revision 1609)
+++ plugins/themeEditor/_admin.php	(revision 1454)
@@ -50,9 +50,13 @@
 		$core->auth->user_prefs->addWorkspace('interface');
 
-		echo		
+		echo
+		'<fieldset><legend>'.__('Theme Editor').'</legend>'.
+		
 		'<p><label for="colorsyntax" class="classic">'.
 		form::checkbox('colorsyntax',1,$core->auth->user_prefs->interface->colorsyntax).'</label>'.
-		__('Syntax color for theme editor').
-		'</p>';
+		__('Syntax color').
+		'<br class="clear" />'. //Opera sucks
+		'</p>'.
+		'</fieldset>';
 	}
 }
Index: plugins/widgets/_default_widgets.php
===================================================================
--- plugins/widgets/_default_widgets.php	(revision 1610)
+++ plugins/widgets/_default_widgets.php	(revision 1179)
@@ -47,8 +47,7 @@
 $__widgets->langs->setting('class',__('CSS class:'),'');
 
-$__widgets->create('categories',__('Categories'),array('defaultWidgets','categories'),null,'List of categories');
+$__widgets->create('categories',__('Categories list'),array('defaultWidgets','categories'),null,'List of categories');
 $__widgets->categories->setting('title',__('Title:'),__('Categories'));
 $__widgets->categories->setting('postcount',__('With entries counts'),0,'check');
-$__widgets->categories->setting('with_empty',__('Include empty categories'),0,'check');
 $__widgets->categories->setting('homeonly',__('Display on:'),0,'combo',
 	array(__('All pages') => 0, __('Home page only') => 1, __('Except on home page') => 2));
Index: plugins/widgets/_widgets_functions.php
===================================================================
--- plugins/widgets/_widgets_functions.php	(revision 1610)
+++ plugins/widgets/_widgets_functions.php	(revision 1280)
@@ -77,5 +77,5 @@
 		}
 
-		$rs = $core->blog->getCategories(array('post_type'=>'post','without_empty'=> !$w->with_empty));
+		$rs = $core->blog->getCategories(array('post_type'=>'post'));
 		if ($rs->isEmpty()) {
 			return;
Index: plugins/widgets/style.css
===================================================================
--- plugins/widgets/style.css	(revision 1526)
+++ plugins/widgets/style.css	(revision 1629)
@@ -63,4 +63,9 @@
 	margin-bottom: -1px;
 }
+.widget-name a.aexpand, .widget-name a.aexpand:link, .widget-name a.aexpand:visited {
+    border: 0 none;
+    color: #000000;
+    text-decoration: none;
+}
 .removeWidget {
 	padding: 8px 6px;
Index: plugins/widgets/widgets.js
===================================================================
--- plugins/widgets/widgets.js	(revision 665)
+++ plugins/widgets/widgets.js	(revision 1629)
@@ -132,4 +132,7 @@
 			// Append config control
 			title = $('p.widget-name',items[i]).get(0);
+			order = $(title).find('input[name*=order]');
+			link = $('<a href="#" alt="expand" class="aexpand"/>').append($(title).text());
+			$(title).empty().append(order).append(link);
 			img_ctrl = title.firstChild;
 			
@@ -149,4 +152,8 @@
 			img.control = title.nextSibling;
 			img.onclick = function() { widgetConfig.call(this); };
+			link.click(function(e) {
+				e.preventDefault();
+				widgetConfig.call($(this).prevAll('img').get(0));
+			});
 			space = document.createTextNode(' ');
 			title.insertBefore(img,img_ctrl);
Index: themes/ductile/_config.php
===================================================================
--- themes/ductile/_config.php	(revision 1622)
+++ themes/ductile/_config.php	(revision 1526)
@@ -471,6 +471,6 @@
 	'<td class="handle minimal">'.form::field(array('order['.$i.']'),2,3,$count,'position','',false).
 		form::hidden(array('dynorder[]','dynorder-'.$i),$i).'</td>'.
-	'<td>'.form::hidden(array('sticker_image[]'),$v['image']).'<img src="'.$img_url.$v['image'].'" alt="'.$v['image'].'" /> '.'</td>'.
-	'<td scope="row">'.form::field(array('sticker_label[]','dsl-'.$i),20,255,$v['label']).'</td>'.
+	'<td>'.form::hidden(array('sticker_image[]'),$v['image']).'<img src="'.$img_url.$v['image'].'" /> '.'</td>'.
+	'<td scope="raw">'.form::field(array('sticker_label[]','dsl-'.$i),20,255,$v['label']).'</td>'.
 	'<td>'.form::field(array('sticker_url[]','dsu-'.$i),40,255,$v['url']).'</td>'.
 	'</tr>';
@@ -496,5 +496,5 @@
 	echo 
 		'<tr>'.
-		'<td scope="row">'.$contexts[$k].'</td>'.
+		'<td scope="raw">'.$contexts[$k].'</td>'.
 		'<td>'.form::hidden(array('list_ctx[]'),$k).form::combo(array('list_type[]'),$list_types,$v).'</td>';
 	if (array_key_exists($k,$ductile_counts)) {
@@ -517,5 +517,5 @@
 echo '</fieldset>';
 
-echo '<p><input type="hidden" name="conf_tab" value="html" /></p>';
+echo '<input type="hidden" name="conf_tab" value="html">';
 echo '<p class="clear">'.form::hidden('ds_order','').'<input type="submit" value="'.__('Save').'" />'.$core->formNonce().'</p>';
 echo '</form>';
@@ -674,5 +674,5 @@
 echo '</div>';
 
-echo '<p><input type="hidden" name="conf_tab" value="css" /></p>';
+echo '<input type="hidden" name="conf_tab" value="css">';
 echo '<p class="clear"><input type="submit" value="'.__('Save').'" />'.$core->formNonce().'</p>';
 echo '</form>';
