Index: inc/admin/class.dc.favorites.php
===================================================================
--- inc/admin/class.dc.favorites.php	(revision 3075)
+++ inc/admin/class.dc.favorites.php	(revision 2725)
@@ -315,6 +315,5 @@
 				true,
 				$v['id'],
-				$v['class'],
-				true
+				$v['class']
 			);
 		}
Index: inc/admin/class.dc.menu.php
===================================================================
--- inc/admin/class.dc.menu.php	(revision 3075)
+++ inc/admin/class.dc.menu.php	(revision 2566)
@@ -22,29 +22,18 @@
 		$this->title = $title;
 		$this->itemSpace = $itemSpace;
-		$this->pinned = array();
 		$this->items = array();
 	}
 
-	public function addItem($title,$url,$img,$active,$show=true,$id=null,$class=null,$pinned=false)
+	public function addItem($title,$url,$img,$active,$show=true,$id=null,$class=null)
 	{
 		if($show) {
-			$item = $this->itemDef($title,$url,$img,$active,$id,$class);
-			if ($pinned) {
-				$this->pinned[] = $item;
-			} else {
-				$this->items[$title] = $item;
-			}
+			$this->items[] = $this->itemDef($title,$url,$img,$active,$id,$class);
 		}
 	}
 
-	public function prependItem($title,$url,$img,$active,$show=true,$id=null,$class=null,$pinned=false)
+	public function prependItem($title,$url,$img,$active,$show=true,$id=null,$class=null)
 	{
 		if ($show) {
-			$item = $this->itemDef($title,$url,$img,$active,$id,$class);
-			if ($pinned) {
-				array_unshift($this->pinned,$item);
-			} else {
-				$this->items[$title] = $item;
-			}
+			array_unshift($this->items,$this->itemDef($title,$url,$img,$active,$id,$class));
 		}
 	}
@@ -52,5 +41,5 @@
 	public function draw()
 	{
-		if (count($this->items) + count($this->pinned) == 0) {
+		if (count($this->items) == 0) {
 			return '';
 		}
@@ -61,27 +50,12 @@
 		'<ul>'."\n";
 
-		// 1. Display pinned items (unsorted)
-		for ($i=0; $i<count($this->pinned); $i++)
+		for ($i=0; $i<count($this->items); $i++)
 		{
-			if ($i+1 < count($this->pinned) && $this->itemSpace != '') {
-				$res .= preg_replace('|</li>$|',$this->itemSpace.'</li>',$this->pinned[$i]);
+			if ($i+1 < count($this->items) && $this->itemSpace != '') {
+				$res .= preg_replace('|</li>$|',$this->itemSpace.'</li>',$this->items[$i]);
 				$res .= "\n";
 			} else {
-				$res .= $this->pinned[$i]."\n";
+				$res .= $this->items[$i]."\n";
 			}
-		}
-
-		// 2. Display unpinned itmes (sorted)
-		$i = 0;
-		dcUtils::lexicalKeySort($this->items);
-		foreach ($this->items as $title => $item)
-		{
-			if ($i+1 < count($this->items) && $this->itemSpace != '') {
-				$res .= preg_replace('|</li>$|',$this->itemSpace.'</li>',$item);
-				$res .= "\n";
-			} else {
-				$res .= $item."\n";
-			}
-			$i++;
 		}
 
Index: inc/admin/lib.admincombos.php
===================================================================
--- inc/admin/lib.admincombos.php	(revision 3082)
+++ inc/admin/lib.admincombos.php	(revision 3011)
@@ -37,5 +37,5 @@
 		while ($categories->fetch()) {
 			$categories_combo[] = new formSelectOption (
-                html::escapeHTML($categories->cat_title).' ('.$categories->nb_post.')',
+				str_repeat('&nbsp;&nbsp;',$categories->level-1).($categories->level-1 == 0 ? '' : '&bull; ').html::escapeHTML($categories->cat_title).' ('.$categories->nb_post.')',
 				($use_url ? $categories->cat_url : $categories->cat_id),
 				($categories->level-1 ? 'sub-option'.($categories->level-1) : '')
@@ -152,5 +152,5 @@
 			$editors_combo[$v] = $v;
 		}
-
+		
 		return $editors_combo;
 	}
Index: inc/admin/lib.dc.page.php
===================================================================
--- inc/admin/lib.dc.page.php	(revision 3086)
+++ inc/admin/lib.dc.page.php	(revision 3080)
@@ -177,27 +177,24 @@
 		}
 
-		// Display breadcrumb (if given) before any error messages
+		// Display breadcrumb (if given) before any error message
 		echo $breadcrumb;
 
-		// Display notices and errors
-		echo self::notices();
-	}
-
-	public static function notices()
-	{
-		global $core;
-		static $error_displayed = false;
-		$res = '';
-
-		// return error messages if any
-		if ($core->error->flag() && !$error_displayed) {
-			$res .= '<div class="error"><p><strong>'.(count($core->error->getErrors()) > 1 ? __('Errors:') : __('Error:')).'</strong></p>'.
+		if ($core->error->flag()) {
+			echo
+			'<div class="error"><p><strong>'.(count($core->error->getErrors()) > 1 ? __('Errors:') : __('Error:')).'</strong></p>'.
 			$core->error->toHTML().
 			'</div>';
-			$error_displayed = true;
-		}
-
+		}
+
+		// Display notices
+		echo self::notices();
+	}
+
+	public static function notices()
+	{
 		// return notices if any
+		$res = '';
 		if (isset($_SESSION['notifications'])) {
+			$notifications = $_SESSION['notifications'];
 			foreach ($_SESSION['notifications'] as $notification) {
 				$res .= self::getNotification($notification);
@@ -369,6 +366,10 @@
 		echo $breadcrumb;
 
-		// Display notices and errors
-		echo self::notices();
+		if ($core->error->flag()) {
+			echo
+			'<div class="error" role="alert"><strong>'.__('Errors:').'</strong>'.
+			$core->error->toHTML().
+			'</div>';
+		}
 	}
 
@@ -544,10 +545,10 @@
 	}
 
-	public static function cssLoad($src,$media='screen',$v='')
+	public static function cssLoad($src, $media='screen')
 	{
 		$escaped_src = html::escapeHTML($src);
 		if (!isset(self::$loaded_css[$escaped_src])) {
 			self::$loaded_css[$escaped_src] = true;
-			$escaped_src = self::appendVersion($escaped_src,$v);
+			$escaped_src = self::appendVersion($escaped_src);
 
 			return '<link rel="stylesheet" href="'.$escaped_src.'" type="text/css" media="'.$media.'" />'."\n";
@@ -555,22 +556,28 @@
 	}
 
-	public static function jsLoad($src,$v='')
+	public static function jsLoad($src)
 	{
 		$escaped_src = html::escapeHTML($src);
 		if (!isset(self::$loaded_js[$escaped_src])) {
 			self::$loaded_js[$escaped_src] = true;
-			$escaped_src = self::appendVersion($escaped_src,$v);
+			$escaped_src = self::appendVersion($escaped_src);
 			return '<script type="text/javascript" src="'.$escaped_src.'"></script>'."\n";
 		}
 	}
 
-	private static function appendVersion($src,$v='')
-	{
-		$src .= (strpos($src,'?') === false ? '?' : '&').'v=';
+	private static function appendVersion($src)
+	{
+		if (strpos($src,'?')===false) {
+			$src .= '?v=';
+		} else {
+			$src .= '&v=';
+		}
+
 		if (defined('DC_DEV') && DC_DEV === true) {
 			$src .= md5(uniqid());
 		} else {
-			$src .= ($v === '' ? DC_VERSION : $v);
-		}
+			$src .= DC_VERSION;
+		}
+
 		return $src;
 	}
Index: inc/admin/lib.pager.php
===================================================================
--- inc/admin/lib.pager.php	(revision 3048)
+++ inc/admin/lib.pager.php	(revision 3087)
@@ -52,8 +52,8 @@
 			if (is_array($v)) {
 				foreach ($v as $k2=>$v2) {
-					$this->form_hidden .= form::hidden(array($k.'[]'),$v2);
+					$this->form_hidden .= form::hidden(array($k.'[]'),html::escapeHTML($v2));
 				}
 			} else {
-				$this->form_hidden .= form::hidden(array($k),$v);
+				$this->form_hidden .= form::hidden(array($k),html::escapeHTML($v));
 			}
 		}
Index: inc/admin/prepend.php
===================================================================
--- inc/admin/prepend.php	(revision 3075)
+++ inc/admin/prepend.php	(revision 3059)
@@ -69,6 +69,5 @@
 
 	$url = $core->adminurl->get($adminurl);
-	$_menu[$section]->prependItem($desc,$url,$icon,
-		preg_match('/'.preg_quote($url).'(\?.*)?$/',$_SERVER['REQUEST_URI']),$perm,null,null,true);
+	$_menu[$section]->prependItem($desc,$url,$icon,preg_match('/'.preg_quote($url).'(\?.*)?$/',$_SERVER['REQUEST_URI']),$perm);
 }
 
Index: inc/core/class.dc.error.php
===================================================================
--- inc/core/class.dc.error.php	(revision 3074)
+++ inc/core/class.dc.error.php	(revision 2566)
@@ -30,4 +30,13 @@
 	/** @var string HTML error item pattern */
 	protected $html_item = "<li>%s</li>\n";
+
+	/**
+	* Object constructor.
+	*/
+	public function __construct()
+	{
+		$this->code = 0;
+		$this->msg = '';
+	}
 
 	/**
Index: inc/prepend.php
===================================================================
--- inc/prepend.php	(revision 3081)
+++ inc/prepend.php	(revision 3079)
@@ -140,5 +140,5 @@
 # Constants
 define('DC_ROOT',path::real(dirname(__FILE__).'/..'));
-define('DC_VERSION','2.9-dev');
+define('DC_VERSION','2.8.1');
 define('DC_DIGESTS',dirname(__FILE__).'/digests');
 define('DC_L10N_ROOT',dirname(__FILE__).'/../locales');
