Index: admin/_charte.php
===================================================================
--- admin/_charte.php	(revision 2501)
+++ admin/_charte.php	(revision 2504)
@@ -31,4 +31,5 @@
 	<script type="text/javascript" src="js/jquery/jquery.js"></script>
 	<script type="text/javascript" src="js/jquery/jquery-ui.custom.js"></script>
+	<script type="text/javascript" src="js/jquery/jquery.ui.touch-punch.js"></script>
 	<script type="text/javascript" src="js/jquery/jquery.pageTabs.js"></script>
 	<script type="text/javascript" src="js/jquery/jquery.biscuit.js"></script>
Index: admin/categories.php
===================================================================
--- admin/categories.php	(revision 2464)
+++ admin/categories.php	(revision 2496)
@@ -109,4 +109,5 @@
 	&& $rs->count()>1) {
 		$starting_script .= dcPage::jsLoad('js/jquery/jquery-ui.custom.js');
+		$starting_script .= dcPage::jsLoad('js/jquery/jquery.ui.touch-punch.js');
 		$starting_script .= dcPage::jsLoad('js/jquery/jquery.mjs.nestedSortable.js');
 }
Index: admin/js/jquery/jquery.ui.touch-punch.js
===================================================================
--- admin/js/jquery/jquery.ui.touch-punch.js	(revision 2495)
+++ admin/js/jquery/jquery.ui.touch-punch.js	(revision 2495)
@@ -0,0 +1,160 @@
+/*!
+ * jQuery UI Touch Punch 0.2.2
+ *
+ * Copyright 2011, Dave Furfero
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ *
+ * Depends:
+ *  jquery.ui.widget.js
+ *  jquery.ui.mouse.js
+ */
+(function ($) {
+
+  // Detect touch support
+  $.support.touch = 'ontouchend' in document;
+
+  // Ignore browsers without touch support
+  if (!$.support.touch) {
+    return;
+  }
+
+  var mouseProto = $.ui.mouse.prototype,
+      _mouseInit = mouseProto._mouseInit,
+      touchHandled;
+
+  /**
+   * Simulate a mouse event based on a corresponding touch event
+   * @param {Object} event A touch event
+   * @param {String} simulatedType The corresponding mouse event
+   */
+  function simulateMouseEvent (event, simulatedType) {
+
+    // Ignore multi-touch events
+    if (event.originalEvent.touches.length > 1) {
+      return;
+    }
+
+    event.preventDefault();
+
+    var touch = event.originalEvent.changedTouches[0],
+        simulatedEvent = document.createEvent('MouseEvents');
+    
+    // Initialize the simulated mouse event using the touch event's coordinates
+    simulatedEvent.initMouseEvent(
+      simulatedType,    // type
+      true,             // bubbles                    
+      true,             // cancelable                 
+      window,           // view                       
+      1,                // detail                     
+      touch.screenX,    // screenX                    
+      touch.screenY,    // screenY                    
+      touch.clientX,    // clientX                    
+      touch.clientY,    // clientY                    
+      false,            // ctrlKey                    
+      false,            // altKey                     
+      false,            // shiftKey                   
+      false,            // metaKey                    
+      0,                // button                     
+      null              // relatedTarget              
+    );
+
+    // Dispatch the simulated event to the target element
+    event.target.dispatchEvent(simulatedEvent);
+  }
+
+  /**
+   * Handle the jQuery UI widget's touchstart events
+   * @param {Object} event The widget element's touchstart event
+   */
+  mouseProto._touchStart = function (event) {
+
+    var self = this;
+
+    // Ignore the event if another widget is already being handled
+    if (touchHandled || !self._mouseCapture(event.originalEvent.changedTouches[0])) {
+      return;
+    }
+
+    // Set the flag to prevent other widgets from inheriting the touch event
+    touchHandled = true;
+
+    // Track movement to determine if interaction was a click
+    self._touchMoved = false;
+
+    // Simulate the mouseover event
+    simulateMouseEvent(event, 'mouseover');
+
+    // Simulate the mousemove event
+    simulateMouseEvent(event, 'mousemove');
+
+    // Simulate the mousedown event
+    simulateMouseEvent(event, 'mousedown');
+  };
+
+  /**
+   * Handle the jQuery UI widget's touchmove events
+   * @param {Object} event The document's touchmove event
+   */
+  mouseProto._touchMove = function (event) {
+
+    // Ignore event if not handled
+    if (!touchHandled) {
+      return;
+    }
+
+    // Interaction was not a click
+    this._touchMoved = true;
+
+    // Simulate the mousemove event
+    simulateMouseEvent(event, 'mousemove');
+  };
+
+  /**
+   * Handle the jQuery UI widget's touchend events
+   * @param {Object} event The document's touchend event
+   */
+  mouseProto._touchEnd = function (event) {
+
+    // Ignore event if not handled
+    if (!touchHandled) {
+      return;
+    }
+
+    // Simulate the mouseup event
+    simulateMouseEvent(event, 'mouseup');
+
+    // Simulate the mouseout event
+    simulateMouseEvent(event, 'mouseout');
+
+    // If the touch interaction did not move, it should trigger a click
+    if (!this._touchMoved) {
+
+      // Simulate the click event
+      simulateMouseEvent(event, 'click');
+    }
+
+    // Unset the flag to allow other widgets to inherit the touch event
+    touchHandled = false;
+  };
+
+  /**
+   * A duck punch of the $.ui.mouse _mouseInit method to support touch events.
+   * This method extends the widget with bound touch event handlers that
+   * translate touch events to mouse events and pass them to the widget's
+   * original mouse event handling methods.
+   */
+  mouseProto._mouseInit = function () {
+    
+    var self = this;
+
+    // Delegate the touch handlers to the widget's element
+    self.element
+      .bind('touchstart', $.proxy(self, '_touchStart'))
+      .bind('touchmove', $.proxy(self, '_touchMove'))
+      .bind('touchend', $.proxy(self, '_touchEnd'));
+
+    // Call the original $.ui.mouse init method
+    _mouseInit.call(self);
+  };
+
+})(jQuery);
Index: admin/preferences.php
===================================================================
--- admin/preferences.php	(revision 2449)
+++ admin/preferences.php	(revision 2496)
@@ -47,6 +47,6 @@
 $default_tab = !empty($_GET['tab']) ? html::escapeHTML($_GET['tab']) : 'user-profile';
 
-if (!empty($_GET['append']) || !empty($_GET['removed']) || !empty($_GET['neworder']) || 
-	!empty($_GET['replaced']) || !empty($_POST['appendaction']) || !empty($_POST['removeaction']) || 
+if (!empty($_GET['append']) || !empty($_GET['removed']) || !empty($_GET['neworder']) ||
+	!empty($_GET['replaced']) || !empty($_POST['appendaction']) || !empty($_POST['removeaction']) ||
 	!empty($_GET['db-updated'])) {
 	$default_tab = 'user-favorites';
@@ -84,11 +84,11 @@
 	{
 		$pwd_check = !empty($_POST['cur_pwd']) && $core->auth->checkPassword(crypt::hmac(DC_MASTER_KEY,$_POST['cur_pwd']));
-		
+
 		if ($core->auth->allowPassChange() && !$pwd_check && $user_email != $_POST['user_email']) {
 			throw new Exception(__('If you want to change your email or password you must provide your current password.'));
 		}
-		
+
 		$cur = $core->con->openCursor($core->prefix.'user');
-		
+
 		$cur->user_name = $user_name = $_POST['user_name'];
 		$cur->user_firstname = $user_firstname = $_POST['user_firstname'];
@@ -100,5 +100,5 @@
 
 		$cur->user_options = new ArrayObject($user_options);
-		
+
 		if ($core->auth->allowPassChange() && !empty($_POST['new_pwd']))
 		{
@@ -106,21 +106,21 @@
 				throw new Exception(__('If you want to change your email or password you must provide your current password.'));
 			}
-			
+
 			if ($_POST['new_pwd'] != $_POST['new_pwd_c']) {
 				throw new Exception(__("Passwords don't match"));
 			}
-			
+
 			$cur->user_pwd = $_POST['new_pwd'];
 		}
-		
+
 		# --BEHAVIOR-- adminBeforeUserUpdate
 		$core->callBehavior('adminBeforeUserProfileUpdate',$cur,$core->auth->userID());
-		
+
 		# Udate user
 		$core->updUser($core->auth->userID(),$cur);
-		
+
 		# --BEHAVIOR-- adminAfterUserUpdate
 		$core->callBehavior('adminAfterUserProfileUpdate',$cur,$core->auth->userID());
-		
+
 		dcPage::addSuccessNotice(__('Personal information has been successfully updated.'));
 
@@ -134,10 +134,10 @@
 
 # Update user options
-if (isset($_POST['user_post_format'])) 
+if (isset($_POST['user_post_format']))
 {
 	try
 	{
 		$cur = $core->con->openCursor($core->prefix.'user');
-		
+
 		$cur->user_name = $user_name;
 		$cur->user_firstname = $user_firstname;
@@ -149,5 +149,5 @@
 
 		$cur->user_post_status = $user_post_status = $_POST['user_post_status'];
-		
+
 		$user_options['edit_size'] = (integer) $_POST['user_edit_size'];
 		if ($user_options['edit_size'] < 1) {
@@ -156,10 +156,10 @@
 		$user_options['post_format'] = $_POST['user_post_format'];
 		$user_options['enable_wysiwyg'] = !empty($_POST['user_wysiwyg']);
-		
+
 		$cur->user_options = new ArrayObject($user_options);
-		
+
 		# --BEHAVIOR-- adminBeforeUserOptionsUpdate
 		$core->callBehavior('adminBeforeUserOptionsUpdate',$cur,$core->auth->userID());
-		
+
 		# Update user prefs
 		$core->auth->user_prefs->accessibility->put('nodragdrop',!empty($_POST['user_acc_nodragdrop']),'boolean');
@@ -170,11 +170,11 @@
 		}
 		$core->auth->user_prefs->interface->put('media_by_page',(integer)$_POST['user_ui_media_by_page'],'integer');
-		
+
 		# Udate user
 		$core->updUser($core->auth->userID(),$cur);
-		
+
 		# --BEHAVIOR-- adminAfterUserOptionsUpdate
 		$core->callBehavior('adminAfterUserOptionsUpdate',$cur,$core->auth->userID());
-		
+
 		dcPage::addSuccessNotice(__('Personal options has been successfully updated.'));
 		http::redirect('preferences.php#user-options');
@@ -192,5 +192,5 @@
 		# --BEHAVIOR-- adminBeforeUserOptionsUpdate
 		$core->callBehavior('adminBeforeDashboardOptionsUpdate',$core->auth->userID());
-		
+
 		# Update user prefs
 		$core->auth->user_prefs->dashboard->put('doclinks',!empty($_POST['user_dm_doclinks']),'boolean');
@@ -199,8 +199,8 @@
 		$core->auth->user_prefs->interface->put('iconset',(!empty($_POST['user_ui_iconset']) ? $_POST['user_ui_iconset'] : ''));
 		$core->auth->user_prefs->interface->put('nofavmenu',empty($_POST['user_ui_nofavmenu']),'boolean');
-		
+
 		# --BEHAVIOR-- adminAfterUserOptionsUpdate
 		$core->callBehavior('adminAfterDashboardOptionsUpdate',$core->auth->userID());
-		
+
 		dcPage::addSuccessNotice(__('Dashboard options has been successfully updated.'));
 		http::redirect('preferences.php#user-favorites');
@@ -213,5 +213,5 @@
 
 # Add selected favorites
-if (!empty($_POST['appendaction'])) 
+if (!empty($_POST['appendaction']))
 {
 	try {
@@ -280,5 +280,5 @@
 			unset($order[$k]);
 		}
-	}	
+	}
 	$core->favs->setFavoriteIDs($order,false);
 	if (!$core->error->flag()) {
@@ -305,4 +305,5 @@
 	($user_acc_nodragdrop ? '' : dcPage::jsLoad('js/_preferences-dragdrop.js')).
 	dcPage::jsLoad('js/jquery/jquery-ui.custom.js').
+	dcPage::jsLoad('js/jquery/jquery.ui.touch-punch.js').
 	dcPage::jsLoad('js/jquery/jquery.pwstrength.js').
 		'<script type="text/javascript">'."\n".
@@ -320,5 +321,5 @@
 	dcPage::jsPageTabs($default_tab).
 	dcPage::jsConfirmClose('user-form').
-	
+
 	# --BEHAVIOR-- adminPreferencesHeaders
 	$core->callBehavior('adminPreferencesHeaders'),
@@ -386,5 +387,5 @@
 	echo
 	'<h4 class="vertical-separator pretty-title">'.__('Change my password').'</h4>'.
-	
+
 	'<div class="pw-table">'.
 	'<p class="pw-cell"><label for="new_pwd">'.__('New password:').'</label>'.
@@ -395,8 +396,8 @@
 	'</div>'.
 	'</div>'.
-	
+
 	'<p><label for="new_pwd_c">'.__('Confirm new password:').'</label>'.
 	form::password('new_pwd_c',20,255).'</p>'.
-	
+
 	'<p><label for="cur_pwd">'.__('Your current password:').'</label>'.
 	form::password('cur_pwd',20,255).'</p>'.
@@ -589,5 +590,5 @@
 
 if (count($iconsets_combo) > 1) {
-	echo 
+	echo
 		'<div class="fieldset">'.
 		'<h4>'.__('Dashboard icons').'</h4>'.
Index: inc/core/class.dc.blog.php
===================================================================
--- inc/core/class.dc.blog.php	(revision 2318)
+++ inc/core/class.dc.blog.php	(revision 2521)
@@ -27,5 +27,5 @@
 	/** @var string Database table prefix */
 	public $prefix;
-	
+
 	/** @var string Blog ID */
 	public $id;
@@ -46,5 +46,5 @@
 	/** @var string Blog status */
 	public $status;
-	
+
 	/** @var dcSettings dcSettings object */
 	public $settings;
@@ -53,16 +53,16 @@
 	/** @var string Blog public path */
 	public $public_path;
-	
+
 	private $post_status = array();
 	private $comment_status = array();
-	
+
 	private $categories;
-	
+
 	/** @var boolean Disallow entries password protection */
 	public $without_password = true;
-	
+
 	/**
 	Inits dcBlog object
-	
+
 	@param	core		<b>dcCore</b>		Dotclear core reference
 	@param	id		<b>string</b>		Blog ID
@@ -73,5 +73,5 @@
 		$this->prefix = $core->prefix;
 		$this->core =& $core;
-		
+
 		if (($b = $this->core->getBlog($id)) !== false)
 		{
@@ -85,25 +85,25 @@
 			$this->upddt = strtotime($b->blog_upddt);
 			$this->status = $b->blog_status;
-			
+
 			$this->settings = new dcSettings($this->core,$this->id);
-			
+
 			$this->themes_path = path::fullFromRoot($this->settings->system->themes_path,DC_ROOT);
 			$this->public_path = path::fullFromRoot($this->settings->system->public_path,DC_ROOT);
-			
+
 			$this->post_status['-2'] = __('Pending');
 			$this->post_status['-1'] = __('Scheduled');
 			$this->post_status['0'] = __('Unpublished');
 			$this->post_status['1'] = __('Published');
-			
+
 			$this->comment_status['-2'] = __('Junk');
 			$this->comment_status['-1'] = __('Pending');
 			$this->comment_status['0'] = __('Unpublished');
 			$this->comment_status['1'] = __('Published');
-			
+
 			# --BEHAVIOR-- coreBlogConstruct
 			$this->core->callBehavior('coreBlogConstruct',$this);
 		}
 	}
-	
+
 	/// @name Common public methods
 	//@{
@@ -116,12 +116,12 @@
 			return $this->url.'?';
 		}
-		
+
 		return $this->url;
 	}
-	
+
 	/**
 	Returns an entry status name given to a code. Status are translated, never
 	use it for tests. If status code does not exist, returns <i>unpublished</i>.
-	
+
 	@param	s	<b>integer</b> Status code
 	@return	<b>string</b> Blog status name
@@ -134,8 +134,8 @@
 		return $this->post_status['0'];
 	}
-	
+
 	/**
 	Returns an array of available entry status codes and names.
-	
+
 	@return	<b>array</b> Simple array with codes in keys and names in value
 	*/
@@ -144,8 +144,8 @@
 		return $this->post_status;
 	}
-	
+
 	/**
 	Returns an array of available comment status codes and names.
-	
+
 	@return	<b>array</b> Simple array with codes in keys and names in value
 	*/
@@ -154,9 +154,9 @@
 		return $this->comment_status;
 	}
-	
+
 	/**
 	Disallows entries password protection. You need to set it to
 	<var>false</var> while serving a public blog.
-	
+
 	@param	v		<b>boolean</b>
 	*/
@@ -166,5 +166,5 @@
 	}
 	//@}
-	
+
 	/// @name Triggers methods
 	//@{
@@ -176,17 +176,17 @@
 	{
 		$cur = $this->con->openCursor($this->prefix.'blog');
-		
+
 		$cur->blog_upddt = date('Y-m-d H:i:s');
-		
+
 		$cur->update("WHERE blog_id = '".$this->con->escape($this->id)."' ");
-		
+
 		# --BEHAVIOR-- coreBlogAfterTriggerBlog
 		$this->core->callBehavior('coreBlogAfterTriggerBlog',$cur);
 	}
-	
+
 	/**
 	Updates comment and trackback counters in post table. Should be called
 	every time a comment or trackback is added, removed or changed its status.
-	
+
 	@param	id		<b>integer</b>		Comment ID
 	@param	del		<b>boolean</b>		If comment is delete, set this to true
@@ -196,9 +196,9 @@
 		$this->triggerComments($id,$del);
 	}
-	
+
 	/**
 	Updates comments and trackbacks counters in post table. Should be called
 	every time comments or trackbacks are added, removed or changed their status.
-	
+
 	@param	ids		<b>mixed</b>		Comment(s) ID(s)
 	@param	del		<b>boolean</b>		If comment is delete, set this to true
@@ -208,15 +208,15 @@
 	{
 		$comments_ids = dcUtils::cleanIds($ids);
-		
+
 		# Get posts affected by comments edition
 		if (empty($affected_posts)) {
-			$strReq = 
+			$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()) {
@@ -224,11 +224,11 @@
 			}
 		}
-		
+
 		if (!is_array($affected_posts) || empty($affected_posts)) {
 			return;
 		}
-		
+
 		# Count number of comments if exists for affected posts
-		$strReq = 
+		$strReq =
 			'SELECT post_id, COUNT(post_id) AS nb_comment, comment_trackback '.
 			'FROM '.$this->prefix.'comment '.
@@ -236,7 +236,7 @@
 			'AND post_id'.$this->con->in($affected_posts).
 			'GROUP BY post_id,comment_trackback';
-		
+
 		$rs = $this->con->select($strReq);
-		
+
 		$posts = array();
 		while ($rs->fetch()) {
@@ -247,5 +247,5 @@
 			}
 		}
-		
+
 		# Update number of comments on affected posts
 		$cur = $this->con->openCursor($this->prefix.'post');
@@ -253,5 +253,5 @@
 		{
 			$cur->clean();
-			
+
 			if (!array_key_exists($post_id,$posts)) {
 				$cur->nb_trackback = 0;
@@ -261,10 +261,10 @@
 				$cur->nb_comment = empty($posts[$post_id]['comment']) ? 0 : $posts[$post_id]['comment'];
 			}
-			
+
 			$cur->update('WHERE post_id = '.$post_id);
 		}
 	}
 	//@}
-	
+
 	/// @name Categories management methods
 	//@{
@@ -274,12 +274,12 @@
 			$this->categories = new dcCategories($this->core);
 		}
-		
+
 		return $this->categories;
 	}
-	
+
 	/**
 	Retrieves categories. <var>$params</var> is an associative array which can
 	take the following parameters:
-	
+
 	- post_type: Get only entries with given type (default "post")
 	- cat_url: filter on cat_url field
@@ -287,5 +287,5 @@
 	- start: start with a given category
 	- level: categories level to retrieve
-	
+
 	@param	params	<b>array</b>		Parameters
 	@return	<b>record</b>
@@ -299,5 +299,5 @@
 		}
 		$counter = $this->getCategoriesCounter($c_params);
-		
+
 		if (isset($params['without_empty']) && ($params['without_empty'] == false)) {
 			$without_empty = false;
@@ -305,10 +305,10 @@
 			$without_empty = $this->core->auth->userID() == false; # Get all categories if in admin display
 		}
-		
+
 		$start = isset($params['start']) ? (integer) $params['start'] : 0;
 		$l = isset($params['level']) ? (integer) $params['level'] : 0;
-		
+
 		$rs = $this->categories()->getChildren($start,null,'desc');
-		
+
 		# Get each categories total posts count
 		$data = array();
@@ -319,5 +319,5 @@
 		{
 			$nb_post = isset($counter[$rs->cat_id]) ? (integer) $counter[$rs->cat_id] : 0;
-			
+
 			if ($rs->level > $level) {
 				$nb_total = $nb_post;
@@ -335,11 +335,11 @@
 				unset($stack[$rs->level+1]);
 			}
-			
+
 			if ($nb_total == 0 && $without_empty) {
 				continue;
 			}
-			
+
 			$level = $rs->level;
-			
+
 			$t = array();
 			foreach ($cols as $c) {
@@ -348,10 +348,10 @@
 			$t['nb_post'] = $nb_post;
 			$t['nb_total'] = $nb_total;
-			
+
 			if ($l == 0 || ($l > 0 && $l == $rs->level)) {
 				array_unshift($data,$t);
 			}
 		}
-		
+
 		# We need to apply filter after counting
 		if (isset($params['cat_id']) && $params['cat_id'] !== '')
@@ -369,6 +369,6 @@
 			}
 		}
-		
-		if (isset($params['cat_url']) && ($params['cat_url'] !== '') 
+
+		if (isset($params['cat_url']) && ($params['cat_url'] !== '')
 			&& !isset($params['cat_id']))
 		{
@@ -385,11 +385,11 @@
 			}
 		}
-		
+
 		return staticRecord::newFromArray($data);
 	}
-	
+
 	/**
 	Retrieves a category by its ID.
-	
+
 	@param	id		<b>integer</b>		Category ID
 	@return	<b>record</b>
@@ -399,8 +399,8 @@
 		return $this->getCategories(array('cat_id' => $id));
 	}
-	
+
 	/**
 	Retrieves parents of a given category.
-	
+
 	@param	id		<b>integer</b>		Category ID
 	@return	<b>record</b>
@@ -410,8 +410,8 @@
 		return $this->categories()->getParents($id);
 	}
-	
+
 	/**
 	Retrieves first parent of a given category.
-	
+
 	@param	id		<b>integer</b>		Category ID
 	@return	<b>record</b>
@@ -421,8 +421,8 @@
 		return $this->categories()->getParent($id);
 	}
-	
+
 	/**
 	Retrieves all category's first children
-	
+
 	@param	id		<b>integer</b>		Category ID
 	@return	<b>record</b>
@@ -432,5 +432,5 @@
 		return $this->getCategories(array('start' => $id,'level' => $id == 0 ? 1 : 2));
 	}
-	
+
 	private function getCategoriesCounter($params=array())
 	{
@@ -440,15 +440,15 @@
 		'JOIN '.$this->prefix."post P ON (C.cat_id = P.cat_id AND P.blog_id = '".$this->con->escape($this->id)."' ) ".
 		"WHERE C.blog_id = '".$this->con->escape($this->id)."' ";
-		
+
 		if (!$this->core->auth->userID()) {
 			$strReq .= 'AND P.post_status = 1 ';
 		}
-		
+
 		if (!empty($params['post_type'])) {
 			$strReq .= 'AND P.post_type '.$this->con->in($params['post_type']);
 		}
-		
+
 		$strReq .= 'GROUP BY C.cat_id ';
-		
+
 		$rs = $this->con->select($strReq);
 		$counters = array();
@@ -456,12 +456,12 @@
 			$counters[$rs->cat_id] = $rs->nb_post;
 		}
-		
+
 		return $counters;
 	}
-	
+
 	/**
 	Creates a new category. Takes a cursor as input and returns the new category
 	ID.
-	
+
 	@param	cur		<b>cursor</b>		Category cursor
 	@return	<b>integer</b>		New category ID
@@ -472,5 +472,5 @@
 			throw new Exception(__('You are not allowed to add categories'));
 		}
-		
+
 		$url = array();
 		if ($parent != 0)
@@ -483,5 +483,5 @@
 			}
 		}
-		
+
 		if ($cur->cat_url == '') {
 			$url[] = text::tidyURL($cur->cat_title,false);
@@ -489,13 +489,13 @@
 			$url[] = $cur->cat_url;
 		}
-		
+
 		$cur->cat_url = implode('/',$url);
-		
+
 		$this->getCategoryCursor($cur);
 		$cur->blog_id = (string) $this->id;
-		
+
 		# --BEHAVIOR-- coreBeforeCategoryCreate
 		$this->core->callBehavior('coreBeforeCategoryCreate',$this,$cur);
-		
+
 		$id = $this->categories()->addNode($cur,$parent);
 		# Update category's cursor
@@ -505,15 +505,15 @@
 			$cur->cat_rgt = $rs->cat_rgt;
 		}
-		
+
 		# --BEHAVIOR-- coreAfterCategoryCreate
 		$this->core->callBehavior('coreAfterCategoryCreate',$this,$cur);
 		$this->triggerBlog();
-		
+
 		return $cur->cat_id;
 	}
-	
+
 	/**
 	Updates an existing category.
-	
+
 	@param	id		<b>integer</b>		Category ID
 	@param	cur		<b>cursor</b>		Category cursor
@@ -524,5 +524,5 @@
 			throw new Exception(__('You are not allowed to update categories'));
 		}
-		
+
 		if ($cur->cat_url == '')
 		{
@@ -534,22 +534,22 @@
 				}
 			}
-			
-			
+
+
 			$url[] = text::tidyURL($cur->cat_title,false);
 			$cur->cat_url = implode('/',$url);
 		}
-		
+
 		$this->getCategoryCursor($cur,$id);
-		
+
 		# --BEHAVIOR-- coreBeforeCategoryUpdate
 		$this->core->callBehavior('coreBeforeCategoryUpdate',$this,$cur);
-		
+
 		$cur->update(
 		'WHERE cat_id = '.(integer) $id.' '.
 		"AND blog_id = '".$this->con->escape($this->id)."' ");
-		
+
 		# --BEHAVIOR-- coreAfterCategoryUpdate
 		$this->core->callBehavior('coreAfterCategoryUpdate',$this,$cur);
-		
+
 		$this->triggerBlog();
 	}
@@ -567,9 +567,9 @@
                 $this->triggerBlog();
         }
-	
+
 	/**
 	DEPRECATED METHOD. Use dcBlog::setCategoryParent and dcBlog::moveCategory
 	instead.
-	
+
 	@param	id		<b>integer</b>		Category ID
 	@param	order	<b>integer</b>		Category position
@@ -579,8 +579,8 @@
 		return;
 	}
-	
+
 	/**
 	Set a category parent
-	
+
 	@param	id		<b>integer</b>		Category ID
 	@param	parent	<b>integer</b>		Parent Category ID
@@ -591,8 +591,8 @@
 		$this->triggerBlog();
 	}
-	
+
 	/**
 	Set category position
-	
+
 	@param	id		<b>integer</b>		Category ID
 	@param	sibling	<b>integer</b>		Sibling Category ID
@@ -604,8 +604,8 @@
 		$this->triggerBlog();
 	}
-	
+
 	/**
 	Deletes a category.
-	
+
 	@param	id		<b>integer</b>		Category ID
 	*/
@@ -615,20 +615,20 @@
 			throw new Exception(__('You are not allowed to delete categories'));
 		}
-		
+
 		$strReq = 'SELECT COUNT(post_id) AS nb_post '.
 				'FROM '.$this->prefix.'post '.
 				'WHERE cat_id = '.(integer) $id.' '.
 				"AND blog_id = '".$this->con->escape($this->id)."' ";
-		
+
 		$rs = $this->con->select($strReq);
-		
+
 		if ($rs->nb_post > 0) {
 			throw new Exception(__('This category is not empty.'));
 		}
-		
+
 		$this->categories()->deleteNode($id,true);
 		$this->triggerBlog();
 	}
-	
+
 	/**
 	Reset categories order and relocate them to first level
@@ -639,13 +639,13 @@
 			throw new Exception(__('You are not allowed to reset categories order'));
 		}
-		
+
 		$this->categories()->resetOrder();
 		$this->triggerBlog();
 	}
-	
+
 	private function checkCategory($title,$url,$id=null)
 	{
 		# Let's check if URL is taken...
-		$strReq = 
+		$strReq =
 			'SELECT cat_url FROM '.$this->prefix.'category '.
 			"WHERE cat_url = '".$this->con->escape($url)."' ".
@@ -653,7 +653,7 @@
 			"AND blog_id = '".$this->con->escape($this->id)."' ".
 			'ORDER BY cat_url DESC';
-		
+
 		$rs = $this->con->select($strReq);
-		
+
 		if (!$rs->isEmpty())
 		{
@@ -665,5 +665,5 @@
 				$clause = "LIKE '".$this->con->escape($url)."%'";
 			}
-			$strReq = 
+			$strReq =
 				'SELECT cat_url FROM '.$this->prefix.'category '.
 				"WHERE cat_url ".$clause.' '.
@@ -671,5 +671,5 @@
 				"AND blog_id = '".$this->con->escape($this->id)."' ".
 				'ORDER BY cat_url DESC ';
-			
+
 			$rs = $this->con->select($strReq);
 			$a = array();
@@ -677,8 +677,8 @@
 				$a[] = $rs->cat_url;
 			}
-			
+
 			natsort($a);
 			$t_url = end($a);
-			
+
 			if (preg_match('/(.*?)([0-9]+)$/',$t_url,$m)) {
 				$i = (integer) $m[2];
@@ -687,16 +687,16 @@
 				$i = 1;
 			}
-			
+
 			return $url.($i+1);
 		}
-		
+
 		# URL is empty?
 		if ($url == '') {
 			throw new Exception(__('Empty category URL'));
 		}
-		
+
 		return $url;
 	}
-	
+
 	private function getCategoryCursor($cur,$id=null)
 	{
@@ -704,10 +704,10 @@
 			throw new Exception(__('You must provide a category title'));
 		}
-		
+
 		# If we don't have any cat_url, let's do one
 		if ($cur->cat_url == '') {
 			$cur->cat_url = text::tidyURL($cur->cat_title,false);
 		}
-		
+
 		# Still empty ?
 		if ($cur->cat_url == '') {
@@ -716,8 +716,8 @@
 			$cur->cat_url = text::tidyURL($cur->cat_url,true);
 		}
-		
+
 		# Check if title or url are unique
 		$cur->cat_url = $this->checkCategory($cur->cat_title,$cur->cat_url,$id);
-		
+
 		if ($cur->cat_desc !== null) {
 			$cur->cat_desc = $this->core->HTMLfilter($cur->cat_desc);
@@ -725,5 +725,5 @@
 	}
 	//@}
-	
+
 	/// @name Entries management methods
 	//@{
@@ -731,5 +731,5 @@
 	Retrieves entries. <b>$params</b> is an array taking the following
 	optionnal parameters:
-	
+
 	- 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)
@@ -755,8 +755,8 @@
 	- 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
 	the category and ?sub to get subcategories.
-	
+
 	@param	params		<b>array</b>		Parameters
 	@param	count_only	<b>boolean</b>		Only counts results
@@ -773,5 +773,5 @@
 			$strReq = 'SELECT count(DISTINCT P.post_id) ';
 		}
-		elseif (!empty($params['sql_only'])) 
+		elseif (!empty($params['sql_only']))
 		{
 			$strReq = 'SELECT P.post_id ';
@@ -786,9 +786,9 @@
 				'post_content, post_content_xhtml, post_notes, ';
 			}
-			
+
 			if (!empty($params['columns']) && is_array($params['columns'])) {
 				$content_req .= implode(', ',$params['columns']).', ';
 			}
-			
+
 
 			$strReq =
@@ -802,5 +802,5 @@
 			'C.cat_title, C.cat_url, C.cat_desc ';
 		}
-		
+
 		$strReq .=
 		'FROM '.$this->prefix.'post P '.
@@ -811,16 +811,16 @@
 			$strReq .= $params['from'].' ';
 		}
-		
+
 		$strReq .=
 		"WHERE P.blog_id = '".$this->con->escape($this->id)."' ";
-		
+
 		if (!$this->core->auth->check('contentadmin',$this->id)) {
 			$strReq .= 'AND ((post_status = 1 ';
-			
+
 			if ($this->without_password) {
 				$strReq .= 'AND post_password IS NULL ';
 			}
 			$strReq .= ') ';
-			
+
 			if ($this->core->auth->userID()) {
 				$strReq .= "OR P.user_id = '".$this->con->escape($this->core->auth->userID())."')";
@@ -829,5 +829,5 @@
 			}
 		}
-		
+
 		#Adding parameters
 		if (isset($params['post_type']))
@@ -841,5 +841,5 @@
 			$strReq .= "AND post_type = 'post' ";
 		}
-		
+
 		if (isset($params['post_id']) && $params['post_id'] !== '') {
 			if (is_array($params['post_id'])) {
@@ -850,5 +850,5 @@
 			$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'])) {
@@ -859,13 +859,13 @@
 			$strReq .= 'AND P.post_id NOT '.$this->con->in($params['exclude_post_id']);
 		}
-		
+
 		if (isset($params['post_url']) && $params['post_url'] !== '') {
 			$strReq .= "AND post_url = '".$this->con->escape($params['post_url'])."' ";
 		}
-		
+
 		if (!empty($params['user_id'])) {
 			$strReq .= "AND U.user_id = '".$this->con->escape($params['user_id'])."' ";
 		}
-		
+
 		if (isset($params['cat_id']) && $params['cat_id'] !== '')
 		{
@@ -888,37 +888,37 @@
 			$strReq .= 'AND '.$this->getPostsCategoryFilter($params['cat_url'],'cat_url').' ';
 		}
-		
+
 		/* Other filters */
 		if (isset($params['post_status'])) {
 			$strReq .= 'AND post_status = '.(integer) $params['post_status'].' ';
 		}
-		
+
 		if (isset($params['post_selected'])) {
 			$strReq .= 'AND post_selected = '.(integer) $params['post_selected'].' ';
 		}
-		
+
 		if (!empty($params['post_year'])) {
 			$strReq .= 'AND '.$this->con->dateFormat('post_dt','%Y').' = '.
 			"'".sprintf('%04d',$params['post_year'])."' ";
 		}
-		
+
 		if (!empty($params['post_month'])) {
 			$strReq .= 'AND '.$this->con->dateFormat('post_dt','%m').' = '.
 			"'".sprintf('%02d',$params['post_month'])."' ";
 		}
-		
+
 		if (!empty($params['post_day'])) {
 			$strReq .= 'AND '.$this->con->dateFormat('post_dt','%d').' = '.
 			"'".sprintf('%02d',$params['post_day'])."' ";
 		}
-		
+
 		if (!empty($params['post_lang'])) {
 			$strReq .= "AND P.post_lang = '".$this->con->escape($params['post_lang'])."' ";
 		}
-		
+
 		if (!empty($params['search']))
 		{
 			$words = text::splitWords($params['search']);
-			
+
 			if (!empty($words))
 			{
@@ -927,5 +927,5 @@
 					$this->core->callBehavior('corePostSearch',$this->core,array(&$words,&$strReq,&$params));
 				}
-				
+
 				if ($words)
 				{
@@ -937,10 +937,10 @@
 			}
 		}
-		
+
 		if (isset($params['media'])) {
 			if ($params['media'] == '0') {
 				$strReq .= 'AND NOT ';
 			} else {
-				$strReq .= 'AND ';				
+				$strReq .= 'AND ';
 			}
 			$strReq .= 'EXISTS (SELECT M.post_id FROM '.$this->prefix.'post_media M '.
@@ -964,9 +964,9 @@
 			}
 		}
-		
+
 		if (!$count_only && !empty($params['limit'])) {
 			$strReq .= $this->con->limit($params['limit']);
 		}
-		
+
 		if (!empty($params['sql_only'])) {
 			return $strReq;
@@ -977,16 +977,16 @@
 		$rs->_nb_media = array();
 		$rs->extend('rsExtPost');
-		
+
 		# --BEHAVIOR-- coreBlogGetPosts
 		$this->core->callBehavior('coreBlogGetPosts',$rs);
-		
+
 		return $rs;
 	}
-	
+
 	/**
 	Returns a record with post id, title and date for next or previous post
 	according to the post ID.
 	$dir could be 1 (next post) or -1 (previous post).
-	
+
 	@param	post_id				<b>integer</b>		Post ID
 	@param	dir					<b>integer</b>		Search direction
@@ -999,5 +999,5 @@
 		$dt = $post->post_dt;
 		$post_id = (integer) $post->post_id;
-		
+
 		if($dir > 0) {
 			$sign = '>';
@@ -1008,5 +1008,5 @@
 			$order = 'DESC';
 		}
-		
+
 		$params['post_type'] = $post->post_type;
 		$params['limit'] = 1;
@@ -1017,31 +1017,31 @@
 		"	OR post_dt ".$sign." '".$this->con->escape($dt)."' ".
 		') ';
-		
+
 		if ($restrict_to_category) {
 			$params['sql'] .= $post->cat_id ? 'AND P.cat_id = '.(integer) $post->cat_id.' ' : 'AND P.cat_id IS NULL ';
 		}
-		
+
 		if ($restrict_to_lang) {
 			$params['sql'] .= $post->post_lang ? 'AND P.post_lang = \''. $this->con->escape($post->post_lang) .'\' ': 'AND P.post_lang IS NULL ';
 		}
-		
+
 		$rs = $this->getPosts($params);
-		
+
 		if ($rs->isEmpty()) {
 			return null;
 		}
-		
+
 		return $rs;
 	}
-	
+
 	/**
 	Retrieves different languages and post count on blog, based on post_lang
 	field. <var>$params</var> is an array taking the following optionnal
 	parameters:
-	
+
 	- post_type: Get only entries with given type (default "post", '' for no type)
 	- lang: retrieve post count for selected lang
 	- order: order statement (default post_lang DESC)
-	
+
 	@param	params	<b>array</b>		Parameters
 	@return	record
@@ -1054,13 +1054,13 @@
 				"AND post_lang <> '' ".
 				"AND post_lang IS NOT NULL ";
-		
+
 		if (!$this->core->auth->check('contentadmin',$this->id)) {
 			$strReq .= 'AND ((post_status = 1 ';
-			
+
 			if ($this->without_password) {
 				$strReq .= 'AND post_password IS NULL ';
 			}
 			$strReq .= ') ';
-			
+
 			if ($this->core->auth->userID()) {
 				$strReq .= "OR user_id = '".$this->con->escape($this->core->auth->userID())."')";
@@ -1069,5 +1069,5 @@
 			}
 		}
-		
+
 		if (isset($params['post_type'])) {
 			if ($params['post_type'] != '') {
@@ -1077,11 +1077,11 @@
 			$strReq .= "AND post_type = 'post' ";
 		}
-		
+
 		if (isset($params['lang'])) {
 			$strReq .= "AND post_lang = '".$this->con->escape($params['lang'])."' ";
 		}
-		
+
 		$strReq .= 'GROUP BY post_lang ';
-		
+
 		$order = 'desc';
 		if (!empty($params['order']) && preg_match('/^(desc|asc)$/i',$params['order'])) {
@@ -1089,12 +1089,12 @@
 		}
 		$strReq .= 'ORDER BY post_lang '.$order.' ';
-		
+
 		return $this->con->select($strReq);
 	}
-	
+
 	/**
 	Returns a record with all distinct blog dates and post count.
 	<var>$params</var> is an array taking the following optionnal parameters:
-	
+
 	- type: (day|month|year) Get days, months or years
 	- year: (integer) Get dates for given year
@@ -1107,5 +1107,5 @@
 	- previous: Get date before match
 	- order: Sort by date "ASC" or "DESC"
-	
+
 	@param	params	<b>array</b>		Parameters array
 	@return	record
@@ -1126,7 +1126,7 @@
 		$dt_f .= ' 00:00:00';
 		$dt_fc .= '000000';
-		
+
 		$cat_field = $catReq = $limit = '';
-		
+
 		if (isset($params['cat_id']) && $params['cat_id'] !== '') {
 			$catReq = 'AND P.cat_id = '.(integer) $params['cat_id'].' ';
@@ -1139,5 +1139,5 @@
 			$catReq = 'AND P.post_lang = \''. $params['post_lang'].'\' ';
 		}
-		
+
 		$strReq = 'SELECT DISTINCT('.$this->con->dateFormat('post_dt',$dt_f).') AS dt '.
 				$cat_field.
@@ -1147,13 +1147,13 @@
 				"WHERE P.blog_id = '".$this->con->escape($this->id)."' ".
 				$catReq;
-		
+
 		if (!$this->core->auth->check('contentadmin',$this->id)) {
 			$strReq .= 'AND ((post_status = 1 ';
-			
+
 			if ($this->without_password) {
 				$strReq .= 'AND post_password IS NULL ';
 			}
 			$strReq .= ') ';
-			
+
 			if ($this->core->auth->userID()) {
 				$strReq .= "OR P.user_id = '".$this->con->escape($this->core->auth->userID())."')";
@@ -1162,5 +1162,5 @@
 			}
 		}
-		
+
 		if (!empty($params['post_type'])) {
 			$strReq .= "AND post_type ".$this->con->in($params['post_type'])." ";
@@ -1168,17 +1168,17 @@
 			$strReq .= "AND post_type = 'post' ";
 		}
-		
+
 		if (!empty($params['year'])) {
 			$strReq .= 'AND '.$this->con->dateFormat('post_dt','%Y')." = '".sprintf('%04d',$params['year'])."' ";
 		}
-		
+
 		if (!empty($params['month'])) {
 			$strReq .= 'AND '.$this->con->dateFormat('post_dt','%m')." = '".sprintf('%02d',$params['month'])."' ";
 		}
-		
+
 		if (!empty($params['day'])) {
 			$strReq .= 'AND '.$this->con->dateFormat('post_dt','%d')." = '".sprintf('%02d',$params['day'])."' ";
 		}
-		
+
 		# Get next or previous date
 		if (!empty($params['next']) || !empty($params['previous']))
@@ -1193,31 +1193,31 @@
 				$dt = $params['previous'];
 			}
-			
+
 			$dt = date('YmdHis',strtotime($dt));
-			
+
 			$strReq .= 'AND '.$this->con->dateFormat('post_dt',$dt_fc).$pdir."'".$dt."' ";
 			$limit = $this->con->limit(1);
 		}
-		
+
 		$strReq .= 'GROUP BY dt '.$cat_field;
-		
+
 		$order = 'desc';
 		if (!empty($params['order']) && preg_match('/^(desc|asc)$/i',$params['order'])) {
 			$order = $params['order'];
 		}
-		
+
 		$strReq .=
 		'ORDER BY dt '.$order.' '.
 		$limit;
-		
+
 		$rs = $this->con->select($strReq);
 		$rs->extend('rsExtDates');
 		return $rs;
 	}
-	
+
 	/**
 	Creates a new entry. Takes a cursor as input and returns the new entry
 	ID.
-	
+
 	@param	cur		<b>cursor</b>		Post cursor
 	@return	<b>integer</b>		New post ID
@@ -1228,5 +1228,5 @@
 			throw new Exception(__('You are not allowed to create an entry'));
 		}
-		
+
 		$this->con->writeLock($this->prefix.'post');
 		try
@@ -1235,7 +1235,7 @@
 			$rs = $this->con->select(
 				'SELECT MAX(post_id) '.
-				'FROM '.$this->prefix.'post ' 
+				'FROM '.$this->prefix.'post '
 				);
-			
+
 			$cur->post_id = (integer) $rs->f(0) + 1;
 			$cur->blog_id = (string) $this->id;
@@ -1243,19 +1243,19 @@
 			$cur->post_upddt = date('Y-m-d H:i:s');
 			$cur->post_tz = $this->core->auth->getInfo('user_tz');
-			
+
 			# Post excerpt and content
 			$this->getPostContent($cur,$cur->post_id);
-			
+
 			$this->getPostCursor($cur);
-			
+
 			$cur->post_url = $this->getPostURL($cur->post_url,$cur->post_dt,$cur->post_title,$cur->post_id);
-			
+
 			if (!$this->core->auth->check('publish,contentadmin',$this->id)) {
 				$cur->post_status = -2;
 			}
-			
+
 			# --BEHAVIOR-- coreBeforePostCreate
 			$this->core->callBehavior('coreBeforePostCreate',$this,$cur);
-			
+
 			$cur->insert();
 			$this->con->unlock();
@@ -1266,16 +1266,16 @@
 			throw $e;
 		}
-		
+
 		# --BEHAVIOR-- coreAfterPostCreate
 		$this->core->callBehavior('coreAfterPostCreate',$this,$cur);
-		
+
 		$this->triggerBlog();
-		
+
 		return $cur->post_id;
 	}
-	
+
 	/**
 	Updates an existing post.
-	
+
 	@param	id		<b>integer</b>		Post ID
 	@param	cur		<b>cursor</b>		Post cursor
@@ -1286,26 +1286,26 @@
 			throw new Exception(__('You are not allowed to update entries'));
 		}
-		
+
 		$id = (integer) $id;
-		
+
 		if (empty($id)) {
 			throw new Exception(__('No such entry ID'));
 		}
-		
+
 		# Post excerpt and content
 		$this->getPostContent($cur,$id);
-		
+
 		$this->getPostCursor($cur);
-		
+
 		if ($cur->post_url !== null) {
 			$cur->post_url = $this->getPostURL($cur->post_url,$cur->post_dt,$cur->post_title,$id);
 		}
-		
+
 		if (!$this->core->auth->check('publish,contentadmin',$this->id)) {
 			$cur->unsetField('post_status');
 		}
-		
+
 		$cur->post_upddt = date('Y-m-d H:i:s');
-		
+
 		#If user is only "usage", we need to check the post's owner
 		if (!$this->core->auth->check('contentadmin',$this->id))
@@ -1315,26 +1315,26 @@
 					'WHERE post_id = '.$id.' '.
 					"AND user_id = '".$this->con->escape($this->core->auth->userID())."' ";
-			
+
 			$rs = $this->con->select($strReq);
-			
+
 			if ($rs->isEmpty()) {
 				throw new Exception(__('You are not allowed to edit this entry'));
 			}
 		}
-		
+
 		# --BEHAVIOR-- coreBeforePostUpdate
 		$this->core->callBehavior('coreBeforePostUpdate',$this,$cur);
-		
+
 		$cur->update('WHERE post_id = '.$id.' ');
-		
+
 		# --BEHAVIOR-- coreAfterPostUpdate
 		$this->core->callBehavior('coreAfterPostUpdate',$this,$cur);
-		
+
 		$this->triggerBlog();
 	}
-	
+
 	/**
 	Updates post status.
-	
+
 	@param	id		<b>integer</b>		Post ID
 	@param	status	<b>integer</b>		Post status
@@ -1344,8 +1344,8 @@
 		$this->updPostsStatus($id,$status);
 	}
-	
+
 	/**
 	Updates posts status.
-	
+
 	@param	ids		<b>mixed</b>		Post(s) ID(s)
 	@param	status	<b>integer</b>		Post status
@@ -1356,11 +1356,11 @@
 			throw new Exception(__('You are not allowed to change this entry status'));
 		}
-		
+
 		$posts_ids = dcUtils::cleanIds($ids);
 		$status = (integer) $status;
-		
+
 		$strReq = "WHERE blog_id = '".$this->con->escape($this->id)."' ".
 				"AND post_id ".$this->con->in($posts_ids);
-		
+
 		#If user can only publish, we need to check the post's owner
 		if (!$this->core->auth->check('contentadmin',$this->id))
@@ -1368,17 +1368,17 @@
 			$strReq .= "AND user_id = '".$this->con->escape($this->core->auth->userID())."' ";
 		}
-		
+
 		$cur = $this->con->openCursor($this->prefix.'post');
-		
+
 		$cur->post_status = $status;
 		$cur->post_upddt = date('Y-m-d H:i:s');
-		
+
 		$cur->update($strReq);
 		$this->triggerBlog();
 	}
-	
+
 	/**
 	Updates post selection.
-	
+
 	@param	id		<b>integer</b>		Post ID
 	@param	selected	<b>integer</b>		Is selected post
@@ -1388,8 +1388,8 @@
 		$this->updPostsSelected($id,$selected);
 	}
-	
+
 	/**
 	Updates posts selection.
-	
+
 	@param	ids		<b>mixed</b>		Post(s) ID(s)
 	@param	selected	<b>integer</b>		Is selected post(s)
@@ -1400,11 +1400,11 @@
 			throw new Exception(__('You are not allowed to change this entry category'));
 		}
-		
+
 		$posts_ids = dcUtils::cleanIds($ids);
 		$selected = (boolean) $selected;
-		
+
 		$strReq = "WHERE blog_id = '".$this->con->escape($this->id)."' ".
 				"AND post_id ".$this->con->in($posts_ids);
-		
+
 		# If user is only usage, we need to check the post's owner
 		if (!$this->core->auth->check('contentadmin',$this->id))
@@ -1412,17 +1412,17 @@
 			$strReq .= "AND user_id = '".$this->con->escape($this->core->auth->userID())."' ";
 		}
-		
+
 		$cur = $this->con->openCursor($this->prefix.'post');
-		
+
 		$cur->post_selected = (integer) $selected;
 		$cur->post_upddt = date('Y-m-d H:i:s');
-		
+
 		$cur->update($strReq);
 		$this->triggerBlog();
 	}
-	
+
 	/**
 	Updates post category. <var>$cat_id</var> can be null.
-	
+
 	@param	id		<b>integer</b>		Post ID
 	@param	cat_id	<b>integer</b>		Category ID
@@ -1432,8 +1432,8 @@
 		$this->updPostsCategory($id,$cat_id);
 	}
-	
+
 	/**
 	Updates posts category. <var>$cat_id</var> can be null.
-	
+
 	@param	ids		<b>mixed</b>		Post(s) ID(s)
 	@param	cat_id	<b>integer</b>		Category ID
@@ -1444,11 +1444,11 @@
 			throw new Exception(__('You are not allowed to change this entry category'));
 		}
-		
+
 		$posts_ids = dcUtils::cleanIds($ids);
 		$cat_id = (integer) $cat_id;
-		
+
 		$strReq = "WHERE blog_id = '".$this->con->escape($this->id)."' ".
 				"AND post_id ".$this->con->in($posts_ids);
-		
+
 		# If user is only usage, we need to check the post's owner
 		if (!$this->core->auth->check('contentadmin',$this->id))
@@ -1456,17 +1456,17 @@
 			$strReq .= "AND user_id = '".$this->con->escape($this->core->auth->userID())."' ";
 		}
-		
+
 		$cur = $this->con->openCursor($this->prefix.'post');
-		
+
 		$cur->cat_id = ($cat_id ? $cat_id : null);
 		$cur->post_upddt = date('Y-m-d H:i:s');
-		
+
 		$cur->update($strReq);
 		$this->triggerBlog();
 	}
-	
+
 	/**
 	Updates posts category. <var>$new_cat_id</var> can be null.
-	
+
 	@param	old_cat_id	<b>integer</b>		Old category ID
 	@param	new_cat_id	<b>integer</b>		New category ID
@@ -1477,13 +1477,13 @@
 			throw new Exception(__('You are not allowed to change entries category'));
 		}
-		
+
 		$old_cat_id = (integer) $old_cat_id;
 		$new_cat_id = (integer) $new_cat_id;
-		
+
 		$cur = $this->con->openCursor($this->prefix.'post');
-		
+
 		$cur->cat_id = ($new_cat_id ? $new_cat_id : null);
 		$cur->post_upddt = date('Y-m-d H:i:s');
-		
+
 		$cur->update(
 			'WHERE cat_id = '.$old_cat_id.' '.
@@ -1492,8 +1492,8 @@
 		$this->triggerBlog();
 	}
-	
+
 	/**
 	Deletes a post.
-	
+
 	@param	id		<b>integer</b>		Post ID
 	*/
@@ -1502,8 +1502,8 @@
 		$this->delPosts($id);
 	}
-	
+
 	/**
 	Deletes multiple posts.
-	
+
 	@param	ids		<b>mixed</b>		Post(s) ID(s)
 	*/
@@ -1513,15 +1513,15 @@
 			throw new Exception(__('You are not allowed to delete entries'));
 		}
-		
+
 		$posts_ids = dcUtils::cleanIds($ids);
-		
+
 		if (empty($posts_ids)) {
 			throw new Exception(__('No such entry ID'));
 		}
-		
+
 		$strReq = 'DELETE FROM '.$this->prefix.'post '.
 				"WHERE blog_id = '".$this->con->escape($this->id)."' ".
 				"AND post_id ".$this->con->in($posts_ids);
-		
+
 		#If user can only delete, we need to check the post's owner
 		if (!$this->core->auth->check('contentadmin',$this->id))
@@ -1529,9 +1529,9 @@
 			$strReq .= "AND user_id = '".$this->con->escape($this->core->auth->userID())."' ";
 		}
-		
+
 		$this->con->execute($strReq);
 		$this->triggerBlog();
 	}
-	
+
 	/**
 	Publishes all entries flaged as "scheduled".
@@ -1543,7 +1543,7 @@
 				'WHERE post_status = -1 '.
 				"AND blog_id = '".$this->con->escape($this->id)."' ";
-		
+
 		$rs = $this->con->select($strReq);
-		
+
 		$now = dt::toUTC(time());
 		$to_change = new ArrayObject();
@@ -1552,13 +1552,13 @@
 			return;
 		}
-		
+
 		while ($rs->fetch())
 		{
 			# Now timestamp with post timezone
 			$now_tz = $now + dt::getTimeOffset($rs->post_tz,$now);
-			
+
 			# Post timestamp
 			$post_ts = strtotime($rs->post_dt);
-			
+
 			# If now_tz >= post_ts, we publish the entry
 			if ($now_tz >= $post_ts) {
@@ -1582,10 +1582,10 @@
 			$this->core->callBehavior('coreAfterScheduledEntriesPublish',$this,$to_change);
 		}
-		
-	}
-	
+
+	}
+
 	/**
 	Retrieves all users having posts on current blog.
-	
+
 	@param	post_type		<b>string</b>		post_type filter (post)
 	@return	record
@@ -1598,22 +1598,22 @@
 				'WHERE P.user_id = U.user_id '.
 				"AND blog_id = '".$this->con->escape($this->id)."' ";
-		
+
 		if ($post_type) {
 			$strReq .= "AND post_type = '".$this->con->escape($post_type)."' ";
 		}
-		
+
 		$strReq .= 'GROUP BY P.user_id, user_name, user_firstname, user_displayname, user_email ';
-		
+
 		return $this->con->select($strReq);
 	}
-	
+
 	private function getPostsCategoryFilter($arr,$field='cat_id')
 	{
 		$field = $field == 'cat_id' ? 'cat_id' : 'cat_url';
-		
+
 		$sub = array();
 		$not = array();
 		$queries = array();
-		
+
 		foreach ($arr as $v)
 		{
@@ -1622,5 +1622,5 @@
 			$id = array_shift($args);
 			$args = array_flip($args);
-			
+
 			if (isset($args['not'])) { $not[$id] = 1; }
 			if (isset($args['sub'])) { $sub[$id] = 1; }
@@ -1636,5 +1636,5 @@
 			}
 		}
-		
+
 		if (!empty($sub)) {
 			$rs = $this->con->select(
@@ -1643,10 +1643,10 @@
 				'AND '.$field.' '.$this->con->in(array_keys($sub))
 			);
-			
+
 			while ($rs->fetch()) {
 				$queries[$rs->f($field)] = '(C.cat_lft BETWEEN '.$rs->cat_lft.' AND '.$rs->cat_rgt.')';
 			}
 		}
-		
+
 		# Create queries
 		$sql = array(
@@ -1654,12 +1654,12 @@
 			1 => array()  # excluded categories
 		);
-		
+
 		foreach ($queries as $id => $q) {
 			$sql[(integer) isset($not[$id])][] = $q;
 		}
-		
+
 		$sql[0] = implode(' OR ',$sql[0]);
 		$sql[1] = implode(' OR ',$sql[1]);
-		
+
 		if ($sql[0]) {
 			$sql[0] = '('.$sql[0].')';
@@ -1667,5 +1667,5 @@
 			unset($sql[0]);
 		}
-		
+
 		if ($sql[1]) {
 			$sql[1] = '(P.cat_id IS NULL OR NOT('.$sql[1].'))';
@@ -1673,8 +1673,8 @@
 			unset($sql[1]);
 		}
-		
+
 		return implode(' AND ',$sql);
 	}
-	
+
 	private function getPostCursor($cur,$post_id=null)
 	{
@@ -1682,13 +1682,13 @@
 			throw new Exception(__('No entry title'));
 		}
-		
+
 		if ($cur->post_content == '') {
 			throw new Exception(__('No entry content'));
 		}
-		
+
 		if ($cur->post_password === '') {
 			$cur->post_password = null;
 		}
-		
+
 		if ($cur->post_dt == '') {
 			$offset = dt::getTimeOffset($this->core->auth->getInfo('user_tz'));
@@ -1696,11 +1696,11 @@
 			$cur->post_dt = date('Y-m-d H:i:00',$now);
 		}
-		
+
 		$post_id = is_int($post_id) ? $post_id : $cur->post_id;
-		
+
 		if ($cur->post_content_xhtml == '') {
 			throw new Exception(__('No entry content'));
 		}
-		
+
 		# Words list
 		if ($cur->post_title !== null && $cur->post_excerpt_xhtml !== null
@@ -1711,9 +1711,9 @@
 			$cur->post_excerpt_xhtml.' '.
 			$cur->post_content_xhtml;
-			
+
 			$cur->post_words = implode(' ',text::splitWords($words));
 		}
 	}
-	
+
 	private function getPostContent($cur,$post_id)
 	{
@@ -1722,5 +1722,5 @@
 		$post_content = $cur->post_content;
 		$post_content_xhtml = $cur->post_content_xhtml;
-		
+
 		$this->setPostContent(
 			$post_id,$cur->post_format,$cur->post_lang,
@@ -1728,5 +1728,5 @@
 			$post_content,$post_content_xhtml
 		);
-		
+
 		$cur->post_excerpt = $post_excerpt;
 		$cur->post_excerpt_xhtml = $post_excerpt_xhtml;
@@ -1734,8 +1734,8 @@
 		$cur->post_content_xhtml = $post_content_xhtml;
 	}
-	
+
 	/**
 	Creates post HTML content, taking format and lang into account.
-	
+
 	@param		post_id		<b>integer</b>		Post ID
 	@param		format		<b>string</b>		Post format
@@ -1771,5 +1771,5 @@
 			}
 		}
-		
+
 		if ($excerpt) {
 			$excerpt_xhtml = $this->core->callFormater($format,$excerpt);
@@ -1778,5 +1778,5 @@
 			$excerpt_xhtml = '';
 		}
-		
+
 		if ($content) {
 			$content_xhtml = $this->core->callFormater($format,$content);
@@ -1785,5 +1785,5 @@
 			$content_xhtml = '';
 		}
-		
+
 		# --BEHAVIOR-- coreAfterPostContentFormat
 		$this->core->callBehavior('coreAfterPostContentFormat',array(
@@ -1794,9 +1794,9 @@
 		));
 	}
-	
+
 	/**
 	Returns URL for a post according to blog setting <var>post_url_format</var>.
 	It will try to guess URL and append some figures if needed.
-	
+
 	@param	url			<b>string</b>		Origin URL, could be empty
 	@param	post_dt		<b>string</b>		Post date (in YYYY-MM-DD HH:mm:ss)
@@ -1808,5 +1808,5 @@
 	{
 		$url = trim($url);
-		
+
 		$url_patterns = array(
 		'{y}' => date('Y',strtotime($post_dt)),
@@ -1816,5 +1816,5 @@
 		'{id}' => (integer) $post_id
 		);
-		
+
 		# If URL is empty, we create a new one
 		if ($url == '')
@@ -1831,5 +1831,5 @@
 			$url = text::tidyURL($url);
 		}
-		
+
 		# Let's check if URL is taken...
 		$strReq = 'SELECT post_url FROM '.$this->prefix.'post '.
@@ -1838,7 +1838,7 @@
 				"AND blog_id = '".$this->con->escape($this->id)."' ".
 				'ORDER BY post_url DESC';
-		
+
 		$rs = $this->con->select($strReq);
-		
+
 		if (!$rs->isEmpty())
 		{
@@ -1855,5 +1855,5 @@
 					"AND blog_id = '".$this->con->escape($this->id)."' ".
 					'ORDER BY post_url DESC ';
-			
+
 			$rs = $this->con->select($strReq);
 			$a = array();
@@ -1861,8 +1861,8 @@
 				$a[] = $rs->post_url;
 			}
-			
+
 			natsort($a);
 			$t_url = end($a);
-			
+
 			if (preg_match('/(.*?)([0-9]+)$/',$t_url,$m)) {
 				$i = (integer) $m[2];
@@ -1871,17 +1871,17 @@
 				$i = 1;
 			}
-			
+
 			return $url.($i+1);
 		}
-		
+
 		# URL is empty?
 		if ($url == '') {
 			throw new Exception(__('Empty entry URL'));
 		}
-		
+
 		return $url;
 	}
 	//@}
-	
+
 	/// @name Comments management methods
 	//@{
@@ -1889,10 +1889,10 @@
 	Retrieves comments. <b>$params</b> is an array taking the following
 	optionnal parameters:
-	
+
 	- no_content: Don't retrieve comment content
-	- post_type: Get only entries with given type (default no type, array for many types) 
+	- post_type: Get only entries with given type (default no type, array for many types)
 	- post_id: (integer) Get comments belonging to given post_id
 	- cat_id: (integer or array) Get comments belonging to entries of given category ID
-	- comment_id: (integer) Get comment with given ID
+	- comment_id: (integer or array) Get comment with given ID (or IDs)
 	- comment_site: (string) Get comments with given comment_site
 	- comment_status: (integer) Get comments with given comment_status
@@ -1907,5 +1907,5 @@
 	- limit: Limit parameter
 	- sql_only : return the sql request instead of results. Only ids are selected
-	
+
 	@param	params		<b>array</b>		Parameters
 	@param	count_only	<b>boolean</b>		Only counts results
@@ -1918,5 +1918,5 @@
 			$strReq = 'SELECT count(comment_id) ';
 		}
-		elseif (!empty($params['sql_only'])) 
+		elseif (!empty($params['sql_only']))
 		{
 			$strReq = 'SELECT P.post_id ';
@@ -1929,9 +1929,9 @@
 				$content_req = 'comment_content, ';
 			}
-			
+
 			if (!empty($params['columns']) && is_array($params['columns'])) {
 				$content_req .= implode(', ',$params['columns']).', ';
 			}
-			
+
 			$strReq =
 			'SELECT C.comment_id, comment_dt, comment_tz, comment_upddt, '.
@@ -1942,25 +1942,25 @@
 			'P.post_dt, P.user_id, U.user_email, U.user_url ';
 		}
-		
+
 		$strReq .=
 		'FROM '.$this->prefix.'comment C '.
 		'INNER JOIN '.$this->prefix.'post P ON C.post_id = P.post_id '.
 		'INNER JOIN '.$this->prefix.'user U ON P.user_id = U.user_id ';
-		
+
 		if (!empty($params['from'])) {
 			$strReq .= $params['from'].' ';
 		}
-		
+
 		$strReq .=
 		"WHERE P.blog_id = '".$this->con->escape($this->id)."' ";
-		
+
 		if (!$this->core->auth->check('contentadmin',$this->id)) {
 			$strReq .= 'AND ((comment_status = 1 AND P.post_status = 1 ';
-			
+
 			if ($this->without_password) {
 				$strReq .= 'AND post_password IS NULL ';
 			}
 			$strReq .= ') ';
-			
+
 			if ($this->core->auth->userID()) {
 				$strReq .= "OR P.user_id = '".$this->con->escape($this->core->auth->userID())."')";
@@ -1969,54 +1969,59 @@
 			}
 		}
-		
+
 		if (!empty($params['post_type']))
 		{
 			$strReq .= 'AND post_type '.$this->con->in($params['post_type']);
 		}
-		
+
 		if (isset($params['post_id']) && $params['post_id'] !== '') {
 			$strReq .= 'AND P.post_id = '.(integer) $params['post_id'].' ';
 		}
-		
+
 		if (isset($params['cat_id']) && $params['cat_id'] !== '') {
 			$strReq .= 'AND P.cat_id = '.(integer) $params['cat_id'].' ';
 		}
-		
+
 		if (isset($params['comment_id']) && $params['comment_id'] !== '') {
-			$strReq .= 'AND comment_id = '.(integer) $params['comment_id'].' ';
-		}
-		
+			if (is_array($params['comment_id'])) {
+				array_walk($params['comment_id'],create_function('&$v,$k','if($v!==null){$v=(integer)$v;}'));
+			} else {
+				$params['comment_id'] = array((integer) $params['comment_id']);
+			}
+			$strReq .= 'AND comment_id '.$this->con->in($params['comment_id']);
+		}
+
 		if (isset($params['comment_site'])) {
 			$comment_site = $this->con->escape(str_replace('*','%',$params['comment_site']));
 			$strReq .= "AND comment_site LIKE '".$comment_site."' ";
 		}
-		
+
 		if (isset($params['comment_status'])) {
 			$strReq .= 'AND comment_status = '.(integer) $params['comment_status'].' ';
 		}
-		
+
 		if (!empty($params['comment_status_not']))
 		{
 			$strReq .= 'AND comment_status <> '.(integer) $params['comment_status_not'].' ';
 		}
-		
+
 		if (isset($params['comment_trackback'])) {
 			$strReq .= 'AND comment_trackback = '.(integer) (boolean) $params['comment_trackback'].' ';
 		}
-		
+
 		if (isset($params['comment_ip'])) {
 			$comment_ip = $this->con->escape(str_replace('*','%',$params['comment_ip']));
 			$strReq .= "AND comment_ip LIKE '".$comment_ip."' ";
 		}
-		
+
 		if (isset($params['q_author'])) {
 			$q_author = $this->con->escape(str_replace('*','%',strtolower($params['q_author'])));
 			$strReq .= "AND LOWER(comment_author) LIKE '".$q_author."' ";
 		}
-		
+
 		if (!empty($params['search']))
 		{
 			$words = text::splitWords($params['search']);
-			
+
 			if (!empty($words))
 			{
@@ -2025,5 +2030,5 @@
 					$this->core->callBehavior('coreCommentSearch',$this->core,array(&$words,&$strReq,&$params));
 				}
-				
+
 				if ($words)
 				{
@@ -2035,9 +2040,9 @@
 			}
 		}
-		
+
 		if (!empty($params['sql'])) {
 			$strReq .= $params['sql'].' ';
 		}
-		
+
 		if (!$count_only)
 		{
@@ -2048,5 +2053,5 @@
 			}
 		}
-		
+
 		if (!$count_only && !empty($params['limit'])) {
 			$strReq .= $this->con->limit($params['limit']);
@@ -2056,19 +2061,19 @@
 			return $strReq;
 		}
-		
+
 		$rs = $this->con->select($strReq);
 		$rs->core = $this->core;
 		$rs->extend('rsExtComment');
-		
+
 		# --BEHAVIOR-- coreBlogGetComments
 		$this->core->callBehavior('coreBlogGetComments',$rs);
-		
+
 		return $rs;
 	}
-	
+
 	/**
 	Creates a new comment. Takes a cursor as input and returns the new comment
 	ID.
-	
+
 	@param	cur		<b>cursor</b>		Comment cursor
 	@return	<b>integer</b>		New comment ID
@@ -2082,23 +2087,23 @@
 			$rs = $this->con->select(
 				'SELECT MAX(comment_id) '.
-				'FROM '.$this->prefix.'comment ' 
+				'FROM '.$this->prefix.'comment '
 			);
-			
+
 			$cur->comment_id = (integer) $rs->f(0) + 1;
 			$cur->comment_upddt = date('Y-m-d H:i:s');
-			
+
 			$offset = dt::getTimeOffset($this->settings->system->blog_timezone);
 			$cur->comment_dt = date('Y-m-d H:i:s',time() + $offset);
 			$cur->comment_tz = $this->settings->system->blog_timezone;
-			
+
 			$this->getCommentCursor($cur);
-			
+
 			if ($cur->comment_ip === null) {
 				$cur->comment_ip = http::realIP();
 			}
-			
+
 			# --BEHAVIOR-- coreBeforeCommentCreate
 			$this->core->callBehavior('coreBeforeCommentCreate',$this,$cur);
-			
+
 			$cur->insert();
 			$this->con->unlock();
@@ -2109,18 +2114,18 @@
 			throw $e;
 		}
-		
+
 		# --BEHAVIOR-- coreAfterCommentCreate
 		$this->core->callBehavior('coreAfterCommentCreate',$this,$cur);
-		
+
 		$this->triggerComment($cur->comment_id);
 		if ($cur->comment_status != -2) {
 			$this->triggerBlog();
-		}	
+		}
 		return $cur->comment_id;
 	}
-	
+
 	/**
 	Updates an existing comment.
-	
+
 	@param	id		<b>integer</b>		Comment ID
 	@param	cur		<b>cursor</b>		Comment cursor
@@ -2131,17 +2136,17 @@
 			throw new Exception(__('You are not allowed to update comments'));
 		}
-		
+
 		$id = (integer) $id;
-		
+
 		if (empty($id)) {
 			throw new Exception(__('No such comment ID'));
 		}
-		
+
 		$rs = $this->getComments(array('comment_id' => $id));
-		
+
 		if ($rs->isEmpty()) {
 			throw new Exception(__('No such comment ID'));
 		}
-		
+
 		#If user is only usage, we need to check the post's owner
 		if (!$this->core->auth->check('contentadmin',$this->id))
@@ -2151,28 +2156,28 @@
 			}
 		}
-		
+
 		$this->getCommentCursor($cur);
-		
+
 		$cur->comment_upddt = date('Y-m-d H:i:s');
-		
+
 		if (!$this->core->auth->check('publish,contentadmin',$this->id)) {
 			$cur->unsetField('comment_status');
 		}
-		
+
 		# --BEHAVIOR-- coreBeforeCommentUpdate
 		$this->core->callBehavior('coreBeforeCommentUpdate',$this,$cur,$rs);
-		
+
 		$cur->update('WHERE comment_id = '.$id.' ');
-		
+
 		# --BEHAVIOR-- coreAfterCommentUpdate
 		$this->core->callBehavior('coreAfterCommentUpdate',$this,$cur,$rs);
-		
+
 		$this->triggerComment($id);
 		$this->triggerBlog();
 	}
-	
+
 	/**
 	Updates comment status.
-	
+
 	@param	id		<b>integer</b>		Comment ID
 	@param	status	<b>integer</b>		Comment status
@@ -2182,8 +2187,8 @@
 		$this->updCommentsStatus($id,$status);
 	}
-	
+
 	/**
 	Updates comments status.
-	
+
 	@param	ids		<b>mixed</b>		Comment(s) ID(s)
 	@param	status	<b>integer</b>		Comment status
@@ -2194,51 +2199,51 @@
 			throw new Exception(__("You are not allowed to change this comment's status"));
 		}
-		
+
 		$co_ids = dcUtils::cleanIds($ids);
 		$status = (integer) $status;
-		
-		$strReq = 
+
+		$strReq =
 			'UPDATE '.$this->prefix.'comment tc ';
-		
+
 		# mySQL uses "JOIN" synthax
 		if ($this->con->driver() == 'mysql' || $this->con->driver() == 'mysqli') {
-			$strReq .= 
+			$strReq .=
 				'JOIN '.$this->prefix.'post tp ON tc.post_id = tp.post_id ';
 		}
-		
-		$strReq .= 
+
+		$strReq .=
 			'SET comment_status = '.$status.' ';
-		
+
 		# pgSQL uses "FROM" synthax
 		if ($this->con->driver() != 'mysql' && $this->con->driver() != 'mysqli') {
-			$strReq .= 
+			$strReq .=
 				'FROM '.$this->prefix.'post tp ';
 		}
-		
+
 		$strReq .=
 			"WHERE blog_id = '".$this->con->escape($this->id)."' ".
 			'AND comment_id'.$this->con->in($co_ids);
-		
+
 		# add pgSQL "WHERE" clause
 		if ($this->con->driver() != 'mysql' && $this->con->driver() != 'mysqli') {
-			$strReq .= 
+			$strReq .=
 				'AND tc.post_id = tp.post_id ';
 		}
-		
+
 		#If user is only usage, we need to check the post's owner
 		if (!$this->core->auth->check('contentadmin',$this->id))
 		{
-			$strReq .= 
+			$strReq .=
 				"AND user_id = '".$this->con->escape($this->core->auth->userID())."' ";
 		}
-		
+
 		$this->con->execute($strReq);
 		$this->triggerComments($co_ids);
 		$this->triggerBlog();
 	}
-	
+
 	/**
 	Delete a comment
-	
+
 	@param	id		<b>integer</b>		Comment ID
 	*/
@@ -2247,8 +2252,8 @@
 		$this->delComments($id);
 	}
-	
+
 	/**
 	Delete comments
-	
+
 	@param	ids		<b>mixed</b>		Comment(s) ID(s)
 	*/
@@ -2258,11 +2263,11 @@
 			throw new Exception(__('You are not allowed to delete comments'));
 		}
-		
+
 		$co_ids = dcUtils::cleanIds($ids);
-		
+
 		if (empty($co_ids)) {
 			throw new Exception(__('No such comment ID'));
 		}
-		
+
 		# Retrieve posts affected by comments edition
 		$affected_posts = array();
@@ -2272,14 +2277,14 @@
 			'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;
 		}
-		
+
 		# mySQL uses "INNER JOIN" synthax
 		if ($this->con->driver() == 'mysql' || $this->con->driver() == 'mysqli') {
-			$strReq = 
+			$strReq =
 				'DELETE FROM tc '.
 				'USING '.$this->prefix.'comment tc '.
@@ -2288,21 +2293,21 @@
 		# pgSQL uses nothing special
 		else {
-			$strReq = 
+			$strReq =
 				'DELETE FROM '.$this->prefix.'comment tc '.
 				'USING '.$this->prefix.'post tp ';
 		}
-		
-		$strReq .= 
+
+		$strReq .=
 			'WHERE tc.post_id = tp.post_id '.
 			"AND tp.blog_id = '".$this->con->escape($this->id)."' ".
 			'AND comment_id'.$this->con->in($co_ids);
-		
+
 		#If user can only delete, we need to check the post's owner
 		if (!$this->core->auth->check('contentadmin',$this->id))
 		{
-			$strReq .= 
+			$strReq .=
 				"AND user_id = '".$this->con->escape($this->core->auth->userID())."' ";
 		}
-		
+
 		$this->con->execute($strReq);
 		$this->triggerComments($co_ids, true, $affected_posts);
@@ -2315,8 +2320,8 @@
 			throw new Exception(__('You are not allowed to delete comments'));
 		}
-		
+
 		# mySQL uses "INNER JOIN" synthax
 		if ($this->con->driver() == 'mysql' || $this->con->driver() == 'mysqli') {
-			$strReq = 
+			$strReq =
 				'DELETE FROM tc '.
 				'USING '.$this->prefix.'comment tc '.
@@ -2325,25 +2330,25 @@
 		# pgSQL uses nothing special
 		else {
-			$strReq = 
+			$strReq =
 				'DELETE FROM '.$this->prefix.'comment tc '.
 				'USING '.$this->prefix.'post tp ';
 		}
-		
-		$strReq .= 
+
+		$strReq .=
 			'WHERE tc.post_id = tp.post_id '.
 			"AND tp.blog_id = '".$this->con->escape($this->id)."' ".
 			'AND comment_status = -2';
-		
+
 		#If user can only delete, we need to check the post's owner
 		if (!$this->core->auth->check('contentadmin',$this->id))
 		{
-			$strReq .= 
+			$strReq .=
 				"AND user_id = '".$this->con->escape($this->core->auth->userID())."' ";
 		}
-		
+
 		$this->con->execute($strReq);
 		$this->triggerBlog();
 	}
-	
+
 	private function getCommentCursor($cur)
 	{
@@ -2351,13 +2356,13 @@
 			throw new Exception(__('You must provide a comment'));
 		}
-		
+
 		if ($cur->comment_author !== null && $cur->comment_author == '') {
 			throw new Exception(__('You must provide an author name'));
 		}
-		
+
 		if ($cur->comment_email != '' && !text::isEmail($cur->comment_email)) {
 			throw new Exception(__('Email address is not valid.'));
 		}
-		
+
 		if ($cur->comment_site !== null && $cur->comment_site != '') {
 			if (!preg_match('|^http(s?)://|i',$cur->comment_site, $matches)) {
@@ -2367,9 +2372,9 @@
 			}
 		}
-		
+
 		if ($cur->comment_status === null) {
 			$cur->comment_status = (integer) $this->settings->system->comments_pub;
 		}
-		
+
 		# Words list
 		if ($cur->comment_content !== null)
Index: inc/core/class.dc.namespace.php
===================================================================
--- inc/core/class.dc.namespace.php	(revision 1179)
+++ inc/core/class.dc.namespace.php	(revision 2505)
@@ -22,14 +22,14 @@
 	protected $table;		///< <b>string</b> Settings table name
 	protected $blog_id;		///< <b>string</b> Blog ID
-	
+
 	protected $global_settings = array();	///< <b>array</b> Global settings array
 	protected $local_settings = array();	///< <b>array</b> Local settings array
 	protected $settings = array();		///< <b>array</b> Associative settings array
 	protected $ns;			///< <b>string</b> Current namespace
-	
+
 	/**
 	Object constructor. Retrieves blog settings and puts them in $settings
 	array. Local (blog) settings have a highest priority than global settings.
-	
+
 	@param	name		<b>string</b>		ID for this namespace
 	*/
@@ -41,14 +41,14 @@
 			throw new Exception(sprintf(__('Invalid setting dcNamespace: %s'),$name));
 		}
-		
+
 		$this->con =& $core->con;
 		$this->table = $core->prefix.'setting';
 		$this->blog_id =& $blog_id;
-		
+
 		$this->getSettings($rs);
 	}
-	
+
 	private function getSettings($rs=null)
-	{	
+	{
 		if ($rs == null) {
 			$strReq = 'SELECT blog_id, setting_id, setting_value, '.
@@ -59,5 +59,5 @@
 					"AND setting_ns = '".$this->con->escape($this->ns)."' ".
 					'ORDER BY setting_id DESC ';
-		
+
 			try {
 				$rs = $this->con->select($strReq);
@@ -74,5 +74,5 @@
 			$value = $rs->f('setting_value');
 			$type = $rs->f('setting_type');
-			
+
 			if ($type == 'float' || $type == 'double') {
 				$type = 'float';
@@ -80,9 +80,9 @@
 				$type = 'string';
 			}
-			
+
 			settype($value,$type);
-			
+
 			$array = $rs->blog_id ? 'local' : 'global';
-			
+
 			$this->{$array.'_settings'}[$id] = array(
 				'ns' => $this->ns,
@@ -93,14 +93,14 @@
 			);
 		}
-		
+
 		$this->settings = $this->global_settings;
-		
+
 		foreach ($this->local_settings as $id => $v) {
 			$this->settings[$id] = $v;
 		}
-		
+
 		return true;
 	}
-	
+
 	private function settingExists($id,$global=false)
 	{
@@ -108,8 +108,8 @@
 		return isset($this->{$array.'_settings'}[$id]);
 	}
-	
+
 	/**
 	Returns setting value if exists.
-	
+
 	@param	n		<b>string</b>		Setting name
 	@return	<b>mixed</b>
@@ -120,8 +120,38 @@
 			return $this->settings[$n]['value'];
 		}
-		
+
 		return null;
 	}
-	
+
+	/**
+	Returns global setting value if exists.
+
+	@param	n		<b>string</b>		setting name
+	@return	<b>mixed</b>
+	*/
+	public function getGlobal($n)
+	{
+		if (isset($this->global_settings[$n]['value'])) {
+			return $this->global_settings[$n]['value'];
+		}
+
+		return null;
+	}
+
+	/**
+	Returns local setting value if exists.
+
+	@param	n		<b>string</b>		setting name
+	@return	<b>mixed</b>
+	*/
+	public function getLocal($n)
+	{
+		if (isset($this->local_settings[$n]['value'])) {
+			return $this->local_settings[$n]['value'];
+		}
+
+		return null;
+	}
+
 	/**
 	Magic __get method.
@@ -132,9 +162,9 @@
 		return $this->get($n);
 	}
-	
+
 	/**
 	Sets a setting in $settings property. This sets the setting for script
 	execution time only and if setting exists.
-	
+
 	@param	n		<b>string</b>		Setting name
 	@param	v		<b>mixed</b>		Setting value
@@ -146,5 +176,5 @@
 		}
 	}
-	
+
 	/**
 	Magic __set method.
@@ -155,14 +185,14 @@
 		$this->set($n,$v);
 	}
-	
+
 	/**
 	Creates or updates a setting.
-	
+
 	$type could be 'string', 'integer', 'float', 'boolean' or null. If $type is
 	null and setting exists, it will keep current setting type.
-	
+
 	$value_change allow you to not change setting. Useful if you need to change
 	a setting label or type and don't want to change its value.
-	
+
 	@param	id			<b>string</b>		Setting ID
 	@param	value		<b>mixed</b>		Setting value
@@ -177,5 +207,5 @@
 			throw new Exception(sprintf(__('%s is not a valid setting id'),$id));
 		}
-		
+
 		# We don't want to change setting value
 		if (!$value_change)
@@ -187,5 +217,5 @@
 			}
 		}
-		
+
 		# Setting type
 		if ($type == 'double')
@@ -207,5 +237,5 @@
 			$type = 'string';
 		}
-		
+
 		# We don't change label
 		if ($label == null)
@@ -217,12 +247,12 @@
 			}
 		}
-		
+
 		settype($value,$type);
-		
+
 		$cur = $this->con->openCursor($this->table);
 		$cur->setting_value = ($type == 'boolean') ? (string) (integer) $value : (string) $value;
 		$cur->setting_type = $type;
 		$cur->setting_label = $label;
-		
+
 		#If we are local, compare to global value
 		if (!$global && $this->settingExists($id,true))
@@ -231,5 +261,5 @@
 			$same_setting = $g['ns'] == $this->ns && $g['value'] == $value
 			&& $g['type'] == $type && $g['label'] == $label;
-			
+
 			# Drop setting if same value as global
 			if ($same_setting && $this->settingExists($id,false)) {
@@ -239,5 +269,5 @@
 			}
 		}
-		
+
 		if ($this->settingExists($id,$global) && $this->ns == $this->settings[$id]['ns'])
 		{
@@ -247,5 +277,5 @@
 				$where = "WHERE blog_id = '".$this->con->escape($this->blog_id)."' ";
 			}
-			
+
 			$cur->update($where."AND setting_id = '".$this->con->escape($id)."' AND setting_ns = '".$this->con->escape($this->ns)."' ");
 		}
@@ -255,5 +285,5 @@
 			$cur->blog_id = $global ? null : $this->blog_id;
 			$cur->setting_ns = $this->ns;
-			
+
 			$cur->insert();
 		}
@@ -272,5 +302,5 @@
 			throw new Exception(__('No namespace specified'));
 		}
-		
+
 		if (!array_key_exists($oldId,$this->settings) || array_key_exists($newId,$this->settings)) {
 			return false;
@@ -291,6 +321,6 @@
 
 	/**
-	Removes an existing setting in a Namespace 
-	
+	Removes an existing setting in a Namespace
+
 	@param	id		<b>string</b>		Setting ID
 	*/
@@ -300,7 +330,7 @@
 			throw new Exception(__('No namespace specified'));
 		}
-		
+
 		$strReq =	'DELETE FROM '.$this->table.' ';
-		
+
 		if ($this->blog_id === null) {
 			$strReq .= 'WHERE blog_id IS NULL ';
@@ -308,14 +338,14 @@
 			$strReq .= "WHERE blog_id = '".$this->con->escape($this->blog_id)."' ";
 		}
-		
+
 		$strReq .= "AND setting_id = '".$this->con->escape($id)."' ";
 		$strReq .= "AND setting_ns = '".$this->con->escape($this->ns)."' ";
-		
+
 		$this->con->execute($strReq);
 	}
-	
-	/**
-	Removes all existing settings in a Namespace 
-	
+
+	/**
+	Removes all existing settings in a Namespace
+
 	@param	force_global	<b>boolean</b>	Force global pref drop
 	*/
@@ -325,7 +355,7 @@
 			throw new Exception(__('No namespace specified'));
 		}
-		
+
 		$strReq =	'DELETE FROM '.$this->table.' ';
-		
+
 		if (($force_global) || ($this->blog_id === null)) {
 			$strReq .= 'WHERE blog_id IS NULL ';
@@ -335,20 +365,20 @@
 			$global = false;
 		}
-		
+
 		$strReq .= "AND setting_ns = '".$this->con->escape($this->ns)."' ";
-		
+
 		$this->con->execute($strReq);
-		
+
 		$array = $global ? 'global' : 'local';
 		unset($this->{$array.'_settings'});
 		$this->{$array.'_settings'} = array();
-		
+
 		$array = $global ? 'local' : 'global';
 		$this->settings = $this->{$array.'_settings'};
 	}
-	
+
 	/**
 	Returns $settings property content.
-	
+
 	@return	<b>array</b>
 	*/
@@ -357,8 +387,8 @@
 		return $this->settings;
 	}
-	
+
 	/**
 	Returns $global_settings property content.
-	
+
 	@return	<b>array</b>
 	*/
Index: inc/core/class.dc.themes.php
===================================================================
--- inc/core/class.dc.themes.php	(revision 2492)
+++ inc/core/class.dc.themes.php	(revision 2541)
@@ -22,5 +22,5 @@
 */
 class dcThemes extends dcModules
-{	
+{
 	protected static $type = 'theme';
 
@@ -28,18 +28,18 @@
 	This method registers a theme in modules list. You should use this to
 	register a new theme.
-	
+
 	<var>$parent</var> is a optional value to indicate them inheritance.
-	If <var>$parent</var> is null / not set, we simply fall back to 
+	If <var>$parent</var> is null / not set, we simply fall back to
 	the standard behavior, by using 'default'.
-	
+
 	<var>$priority</var> is an integer. Modules are sorted by priority and name.
 	Lowest priority comes first. This property is currently ignored when dealing
 	with themes.
-	
+
 	@param	name			<b>string</b>		Module name
 	@param	desc			<b>string</b>		Module description
 	@param	author		<b>string</b>		Module author name
 	@param	version		<b>string</b>		Module version
-	@param	properties	<b>array</b>		extra properties 
+	@param	properties	<b>array</b>		extra properties
 	(currently available keys : parent, priority, standalone_config, type)
 	*/
@@ -59,5 +59,5 @@
 		# Themes specifics properties
 		$properties = array_merge(
-			array('parent' => null),
+			array('parent' => null, 'tplset' => 'legacy'),
 			$properties,
 			array('permissions' => 'admin') // force themes perms
@@ -65,11 +65,11 @@
 
 		parent::registerModule($name, $desc, $author, $version, $properties);
-	}	
-	
+	}
+
 	/**
 	Loads namespace <var>$ns</var> specific file for module with ID
 	<var>$id</var>
 	Note : actually, only 'public' namespace is supported with themes.
-	
+
 	@param	id		<b>string</b>		Module ID
 	@param	ns		<b>string</b>		Namespace name
Index: inc/prepend.php
===================================================================
--- inc/prepend.php	(revision 2555)
+++ inc/prepend.php	(revision 2557)
@@ -135,5 +135,5 @@
 # Constants
 define('DC_ROOT',path::real(dirname(__FILE__).'/..'));
-define('DC_VERSION','2.6.1');
+define('DC_VERSION','2.7-dev');
 define('DC_DIGESTS',dirname(__FILE__).'/digests');
 define('DC_L10N_ROOT',dirname(__FILE__).'/../locales');
Index: nc/public/default-templates/404.html
===================================================================
--- inc/public/default-templates/404.html	(revision 199)
+++ 	(revision )
@@ -1,62 +1,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="{{tpl:BlogLanguage}}" lang="{{tpl:BlogLanguage}}">
-<head>
-  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
-  <meta name="ROBOTS" content="{{tpl:BlogMetaRobots robots="NOINDEX,NOARCHIVE"}}" />
-  
-  <title>{{tpl:lang Document not found}} - {{tpl:BlogName encode_html="1"}}</title>
-  <meta name="copyright" content="{{tpl:BlogCopyrightNotice encode_html="1"}}" />
-  <meta name="author" content="{{tpl:BlogEditor encode_html="1"}}" />
-  
-  <link rel="schema.dc" href="http://purl.org/dc/elements/1.1/" />
-  <meta name="dc.title" lang="{{tpl:BlogLanguage}}" content="{{tpl:lang Document not found}} - {{tpl:BlogName encode_html="1"}}" />
-  <meta name="dc.language" content="{{tpl:BlogLanguage}}" />
-  <meta name="dc.publisher" content="{{tpl:BlogEditor encode_html="1"}}" />
-  <meta name="dc.rights" content="{{tpl:BlogCopyrightNotice encode_html="1"}}" />
-  <meta name="dc.type" content="text" />
-  <meta name="dc.format" content="text/html" />
-  
-  <link rel="top" href="{{tpl:BlogURL}}" title="{{tpl:lang Home}}" />
-  <link rel="contents" title="{{tpl:lang Archives}}" href="{{tpl:BlogArchiveURL}}" />
-  <link rel="alternate" type="application/atom+xml" title="Atom 1.0" href="{{tpl:BlogFeedURL type="atom"}}" />
-  
-  {{tpl:include src="_head.html"}}
-</head>
-
-<body class="dc-404">
-<div id="page">
-{{tpl:include src="_top.html"}}
-
-<div id="wrapper">
-
-<div id="main">
-  <div id="content">
-  
-  <div id="content-info">
-    <h2>{{tpl:lang Document not found}}</h2>
-  </div>
-  
-  <div class="content-inner">
-    <p>{{tpl:lang The document you are looking for does not exist.}}</p>
-  </div>
-  
-  </div>
-</div>
-
-<div id="sidebar">
-  <div id="blognav">
-    {{tpl:Widgets type="nav"}}
-  </div> <!-- End #blognav -->
-  
-  <div id="blogextra">
-    {{tpl:Widgets type="extra"}}
-  </div> <!-- End #blogextra -->
-</div>
-
-</div> <!-- End #wrapper -->
-
-{{tpl:include src="_footer.html"}}
-</div> <!-- End #page -->
-</body>
-</html>
Index: nc/public/default-templates/_flv_player.html
===================================================================
--- inc/public/default-templates/_flv_player.html	(revision 0)
+++ 	(revision )
@@ -1,8 +1,0 @@
-<object type="application/x-shockwave-flash" data="{{tpl:BlogQmarkURL}}pf=player_flv.swf"
-width="400" height="300">
-<param name="movie" value="{{tpl:BlogQmarkURL}}pf=player_flv.swf" />
-<param name="wmode" value="transparent" />
-<param name="allowFullScreen" value="true" />
-<param name="FlashVars" value="flv={{tpl:MediaURL}}&amp;width=400&amp;height=300&amp;margin=1&amp;showfullscreen=1&amp;showvolume=1&amp;showtime=1" />
-{{tpl:lang Embedded Audio Player}}
-</object>
Index: nc/public/default-templates/_footer.html
===================================================================
--- inc/public/default-templates/_footer.html	(revision 0)
+++ 	(revision )
@@ -1,5 +1,0 @@
-<div id="footer">
-  <p>{{tpl:SysPoweredBy}}</p>
-</div>
-
-{{tpl:SysBehavior behavior="publicFooterContent"}}
Index: nc/public/default-templates/_head.html
===================================================================
--- inc/public/default-templates/_head.html	(revision 2083)
+++ 	(revision )
@@ -1,8 +1,0 @@
-<link rel="stylesheet" type="text/css" href="{{tpl:BlogThemeURL}}/style.css" media="screen" />
-<link rel="stylesheet" type="text/css" href="{{tpl:BlogThemeURL}}/../default/print.css" media="print" />
-
-<script type="text/javascript" src="{{tpl:BlogThemeURL}}/../default/js/jquery.js"></script>
-<script type="text/javascript" src="{{tpl:BlogThemeURL}}/../default/js/jquery.cookie.js"></script>
-
-{{tpl:include src="user_head.html"}}
-{{tpl:SysBehavior behavior="publicHeadContent"}}
Index: nc/public/default-templates/_mp3_player.html
===================================================================
--- inc/public/default-templates/_mp3_player.html	(revision 0)
+++ 	(revision )
@@ -1,6 +1,0 @@
-<object type="application/x-shockwave-flash" data="{{tpl:BlogQmarkURL}}pf=player_mp3.swf" width="200" height="20">
-<param name="movie" value="{{tpl:BlogQmarkURL}}pf=player_mp3.swf" />
-<param name="wmode" value="transparent" />
-<param name="FlashVars" value="mp3={{tpl:MediaURL}}&amp;showvolume=1&amp;loadingcolor=ff9900&amp;bgcolor1=eeeeee&amp;bgcolor2=cccccc&amp;buttoncolor=0066cc&amp;buttonovercolor=ff9900&amp;slidercolor1=cccccc&amp;slidercolor2=999999&amp;sliderovercolor=0066cc" />
-{{tpl:lang Embedded Audio Player}}
-</object>
Index: nc/public/default-templates/_top.html
===================================================================
--- inc/public/default-templates/_top.html	(revision 0)
+++ 	(revision )
@@ -1,10 +1,0 @@
-<div id="top">
-  <h1><span><a href="{{tpl:BlogURL}}">{{tpl:BlogName encode_html="1"}}</a></span></h1>
-  
-  <!-- # --BEHAVIOR-- publicTopAfterContent -->
-  {{tpl:SysBehavior behavior="publicTopAfterContent"}}
-</div>
-
-<p id="prelude"><a href="#main">{{tpl:lang To content}}</a> |
-<a href="#blognav">{{tpl:lang To menu}}</a> |
-<a href="#search">{{tpl:lang To search}}</a></p>
Index: nc/public/default-templates/archive.html
===================================================================
--- inc/public/default-templates/archive.html	(revision 199)
+++ 	(revision )
@@ -1,79 +1,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="{{tpl:BlogLanguage}}" lang="{{tpl:BlogLanguage}}">
-<head>
-  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
-  <meta name="ROBOTS" content="{{tpl:BlogMetaRobots}}" />
-  
-  <title>{{tpl:lang Archives}} - {{tpl:BlogName encode_html="1"}}</title>
-  <meta name="copyright" content="{{tpl:BlogCopyrightNotice encode_html="1"}}" />
-  <meta name="author" content="{{tpl:BlogEditor encode_html="1"}}" />
-  <meta name="date" scheme="W3CDTF" content="{{tpl:BlogUpdateDate iso8601="1"}}" />
-  
-  <link rel="schema.dc" href="http://purl.org/dc/elements/1.1/" />
-  <meta name="dc.title" lang="{{tpl:BlogLanguage}}" content="{{tpl:lang Archives}} - {{tpl:BlogName encode_html="1"}}" />
-  <meta name="dc.language" content="{{tpl:BlogLanguage}}" />
-  <meta name="dc.publisher" content="{{tpl:BlogEditor encode_html="1"}}" />
-  <meta name="dc.rights" content="{{tpl:BlogCopyrightNotice encode_html="1"}}" />
-  <meta name="dc.date" scheme="W3CDTF" content="{{tpl:BlogUpdateDate iso8601="1"}}" />
-  <meta name="dc.type" content="text" />
-  <meta name="dc.format" content="text/html" />
-  
-  <link rel="top" href="{{tpl:BlogURL}}" title="{{tpl:lang Home}}" />
-  
-  <tpl:Archives>
-    <link rel="chapter" href="{{tpl:ArchiveURL}}" title="{{tpl:ArchiveDate encode_html="1"}}" />
-  </tpl:Archives>
-  
-  <link rel="alternate" type="application/atom+xml" title="Atom 1.0" href="{{tpl:BlogFeedURL type="atom"}}" />
-  
-  {{tpl:include src="_head.html"}}
-</head>
-
-<body class="dc-archive">
-<div id="page">
-{{tpl:include src="_top.html"}}
-
-<div id="wrapper">
-
-<div id="main">
-  <div id="content">
-  
-  <div id="content-info">
-    <h2>{{tpl:lang Archives}}</h2>
-  </div>
-  
-  <div class="content-inner">
-  <tpl:Archives>
-    <tpl:ArchivesYearHeader>
-      <h3>{{tpl:ArchiveDate format="%Y"}}</h3>
-      <ul>
-    </tpl:ArchivesYearHeader>
-      <li><a href="{{tpl:ArchiveURL}}"
-      title="{{tpl:ArchiveDate encode_html="1"}}">{{tpl:ArchiveDate encode_html="1" format="%B"}}</a>
-      ({{tpl:ArchiveEntriesCount}})</li>
-    <tpl:ArchivesYearFooter>
-      </ul>
-    </tpl:ArchivesYearFooter>
-  </tpl:Archives>
-  </div>
-  
-  </div>
-</div> <!-- End #main -->
-
-<div id="sidebar">
-  <div id="blognav">
-    {{tpl:Widgets type="nav"}}
-  </div> <!-- End #blognav -->
-  
-  <div id="blogextra">
-    {{tpl:Widgets type="extra"}}
-  </div> <!-- End #blogextra -->
-</div>
-
-</div> <!-- End #wrapper -->
-
-{{tpl:include src="_footer.html"}}
-</div> <!-- End #page -->
-</body>
-</html>
Index: nc/public/default-templates/archive_month.html
===================================================================
--- inc/public/default-templates/archive_month.html	(revision 199)
+++ 	(revision )
@@ -1,96 +1,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="{{tpl:BlogLanguage}}" lang="{{tpl:BlogLanguage}}">
-<head>
-  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
-  <meta name="ROBOTS" content="{{tpl:BlogMetaRobots robots="NOINDEX"}}" />
-  
-  <title>{{tpl:lang Archives}} - {{tpl:ArchiveDate}} - {{tpl:BlogName encode_html="1"}}</title>
-  <meta name="copyright" content="{{tpl:BlogCopyrightNotice encode_html="1"}}" />
-  <meta name="author" content="{{tpl:BlogEditor encode_html="1"}}" />
-  <meta name="date" scheme="W3CDTF" content="{{tpl:BlogUpdateDate iso8601="1"}}" />
-  
-  <link rel="schema.dc" href="http://purl.org/dc/elements/1.1/" />
-  <meta name="dc.title" lang="{{tpl:BlogLanguage}}" content="{{tpl:lang Archives}} - {{tpl:ArchiveDate}} - {{tpl:BlogName encode_html="1"}}" />
-  <meta name="dc.language" content="{{tpl:BlogLanguage}}" />
-  <meta name="dc.publisher" content="{{tpl:BlogEditor encode_html="1"}}" />
-  <meta name="dc.rights" content="{{tpl:BlogCopyrightNotice encode_html="1"}}" />
-  <meta name="dc.date" scheme="W3CDTF" content="{{tpl:BlogUpdateDate iso8601="1"}}" />
-  <meta name="dc.type" content="text" />
-  <meta name="dc.format" content="text/html" />
-  
-  <link rel="top" href="{{tpl:BlogURL}}" title="{{tpl:lang Home}}" />
-  <link rel="up" href="{{tpl:BlogArchiveURL}}" title="{{tpl:lang Archives}}" />
-  <link rel="contents" href="{{tpl:BlogArchiveURL}}" title="{{tpl:lang Archives}}" />
-  
-  
-  <tpl:ArchiveNext><link rel="next" href="{{tpl:ArchiveURL}}"
-  title="{{tpl:ArchiveDate encode_html="1"}}" /></tpl:ArchiveNext>
-  <tpl:ArchivePrevious><link rel="prev" href="{{tpl:ArchiveURL}}"
-  title="{{tpl:ArchiveDate encode_html="1"}}" /></tpl:ArchivePrevious>
-  
-  <tpl:Entries no_content="1">
-  <link rel="chapter" href="{{tpl:EntryURL}}" title="{{tpl:EntryTitle encode_html="1"}}" />
-  </tpl:Entries>
-  
-  {{tpl:include src="_head.html"}}
-</head>
-
-<body class="dc-archive-month">
-<div id="page">
-{{tpl:include src="_top.html"}}
-
-<div id="wrapper">
-
-<div id="main">
-  <div id="content">
-  
-  <p id="navlinks">
-  <tpl:ArchivePrevious><a href="{{tpl:ArchiveURL}}" class="prev">&#171; {{tpl:ArchiveDate encode_html="1"}}</a>
-  - </tpl:ArchivePrevious>
-  <a href="{{tpl:BlogArchiveURL}}">{{tpl:lang Archives}}</a>
-  <tpl:ArchiveNext> - <a href="{{tpl:ArchiveURL}}" class="next">{{tpl:ArchiveDate encode_html="1"}} &#187;</a></tpl:ArchiveNext>
-  </p>
-  
-  <div id="content-info">
-    <h2>{{tpl:ArchiveDate}}</h2>
-  </div>
-  
-  <div class="content-inner">
-  <tpl:Entries no_content="1">
-    <!-- # New day date -->
-    <tpl:DateHeader><p class="day-date">{{tpl:EntryDate}}</p></tpl:DateHeader>
-    
-    <h2 id="p{{tpl:EntryID}}" class="post-title" lang="{{tpl:EntryLang}}" xml:lang="{{tpl:EntryLang}}"><a
-    href="{{tpl:EntryURL}}" title="{{tpl:lang Read}} {{tpl:EntryTitle encode_html="1"}}">{{tpl:EntryTitle encode_html="1"}}</a></h2>
-    
-    <p class="post-info">{{tpl:lang By}} {{tpl:EntryAuthorLink}}
-    <tpl:EntryIf show_comments="1">
-    - <a href="{{tpl:EntryURL}}#comments">{{tpl:EntryCommentCount}}</a>
-    </tpl:EntryIf>
-    <tpl:EntryIf show_pings="1">
-    - <a href="{{tpl:EntryURL}}#pings">{{tpl:EntryPingCount}}</a></tpl:EntryIf>
-    <tpl:EntryIf has_attachment="1">
-    - <a href="{{tpl:EntryURL}}#attachments">{{tpl:EntryAttachmentCount}}</a></tpl:EntryIf>
-    </p>
-  </tpl:Entries>
-  </div>
-  </div>
-</div> <!-- End #main -->
-
-<div id="sidebar">
-  <div id="blognav">
-    {{tpl:Widgets type="nav"}}
-  </div> <!-- End #blognav -->
-  
-  <div id="blogextra">
-    {{tpl:Widgets type="extra"}}
-  </div> <!-- End #blogextra -->
-</div>
-
-</div> <!-- End #wrapper -->
-
-{{tpl:include src="_footer.html"}}
-</div> <!-- End #page -->
-</body>
-</html>
Index: nc/public/default-templates/atom-comments.xml
===================================================================
--- inc/public/default-templates/atom-comments.xml	(revision 0)
+++ 	(revision )
@@ -1,47 +1,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="{{tpl:BlogLanguage}}">
-  
-  <title type="html">{{tpl:BlogName encode_xml="1"}}{{tpl:SysFeedSubtitle encode_xml="1"}}
-  - {{tpl:lang Comments}}</title>
-  <subtitle type="html">{{tpl:BlogDescription encode_xml="1"}}</subtitle>
-  <link href="{{tpl:SysSelfURI}}" rel="self" type="application/atom+xml"/>
-  <link href="{{tpl:BlogURL}}" rel="alternate" type="text/html"
-  title="{{tpl:BlogDescription encode_xml="1"}}"/>
-  <updated>{{tpl:BlogUpdateDate iso8601="1"}}</updated>
-  <author>
-    <name>{{tpl:BlogEditor encode_xml="1"}}</name>
-  </author>
-  <id>{{tpl:BlogFeedID}}</id>
-  <generator uri="http://www.dotclear.org/">Dotclear</generator>
-  
-  <tpl:Comments order="desc" with_pings="1">
-  
-  <tpl:CommentIf is_ping="1">
-  <entry>
-    <title>[ping] {{tpl:PingEntryTitle encode_xml="1"}} - {{tpl:PingBlogName encode_xml="1"}}</title>
-    <link href="{{tpl:PingPostURL encode_xml="1"}}#c{{tpl:PingID}}" rel="alternate" type="text/html"
-    title="[ping] {{tpl:PingEntryTitle encode_xml="1"}} - {{tpl:PingBlogName encode_xml="1"}}" />
-    <id>{{tpl:PingFeedID}}</id>
-    <published>{{tpl:PingDate iso8601="1"}}</published>
-    <updated>{{tpl:PingDate iso8601="1" upddt="1"}}</updated>
-    <author><name>{{tpl:PingBlogName encode_xml="1"}}</name></author>
-    <content type="html">&lt;p&gt;&lt;a href="{{tpl:PingAuthorURL encode_xml="1"}}"&gt;{{tpl:PingTitle encode_xml="1"}}&lt;/a&gt;&lt;/p&gt; {{tpl:PingContent encode_xml="1"}}</content>
-  </entry>
-  
-  </tpl:CommentIf>
-  
-  <tpl:CommentIf is_ping="0">
-  <entry>
-    <title>{{tpl:CommentEntryTitle encode_xml="1"}} - {{tpl:CommentAuthor encode_xml="1"}}</title>
-    <link href="{{tpl:CommentPostURL encode_xml="1"}}#c{{tpl:CommentID}}" rel="alternate" type="text/html"
-    title="{{tpl:CommentEntryTitle encode_xml="1"}} - {{tpl:CommentAuthor encode_xml="1"}}" />
-    <id>{{tpl:CommentFeedID}}</id>
-    <published>{{tpl:CommentDate iso8601="1"}}</published>
-    <updated>{{tpl:CommentDate iso8601="1" upddt="1"}}</updated>
-    <author><name>{{tpl:CommentAuthor encode_xml="1"}}</name></author>
-    <content type="html">{{tpl:CommentContent absolute_urls="1" encode_xml="1"}}</content>
-  </entry>
-  </tpl:CommentIf>
-  </tpl:Comments>
-  
-</feed>
Index: nc/public/default-templates/atom.xml
===================================================================
--- inc/public/default-templates/atom.xml	(revision 912)
+++ 	(revision )
@@ -1,55 +1,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<feed xmlns="http://www.w3.org/2005/Atom"
-  xmlns:dc="http://purl.org/dc/elements/1.1/"
-  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
-  xml:lang="{{tpl:BlogLanguage}}">
-  
-  <title type="html">{{tpl:BlogName encode_xml="1"}}{{tpl:SysFeedSubtitle encode_xml="1"}}</title>
-  <subtitle type="html">{{tpl:BlogDescription encode_xml="1"}}</subtitle>
-  <link href="{{tpl:SysSelfURI}}" rel="self" type="application/atom+xml"/>
-  <link href="{{tpl:BlogURL}}" rel="alternate" type="text/html"
-  title="{{tpl:BlogDescription encode_xml="1"}}"/>
-  <updated>{{tpl:BlogUpdateDate iso8601="1"}}</updated>
-  <author>
-    <name>{{tpl:BlogEditor encode_xml="1"}}</name>
-  </author>
-  <id>{{tpl:BlogFeedID}}</id>
-  <generator uri="http://www.dotclear.org/">Dotclear</generator>
-  
-  <tpl:Entries>
-  
-  <entry>
-    <title>{{tpl:EntryTitle encode_xml="1"}}</title>
-    <link href="{{tpl:EntryURL}}" rel="alternate" type="text/html"
-    title="{{tpl:EntryTitle encode_xml="1"}}" />
-    <id>{{tpl:EntryFeedID}}</id>
-    <published>{{tpl:EntryDate iso8601="1"}}</published>
-    <tpl:EntryIf republished="1">
-      <updated>{{tpl:EntryDate iso8601="1" upddt="1"}}</updated>
-    </tpl:EntryIf>
-    <tpl:EntryIf republished="0">
-      <updated>{{tpl:EntryDate iso8601="1"}}</updated>
-    </tpl:EntryIf>
-    <author><name>{{tpl:EntryAuthorCommonName encode_xml="1"}}</name></author>
-    <tpl:EntryIf has_category="1">
-    <dc:subject>{{tpl:EntryCategory encode_html="1"}}</dc:subject>
-    </tpl:EntryIf>
-    <tpl:EntryTags><dc:subject>{{tpl:TagID}}</dc:subject></tpl:EntryTags>
-    
-    <content type="html">{{tpl:EntryExcerpt absolute_urls="1" encode_xml="1"}}
-    {{tpl:EntryContent absolute_urls="1" encode_xml="1"}}</content>
-    
-    <tpl:Attachments>
-      <link rel="enclosure" href="{{tpl:AttachmentURL}}"
-      length="{{tpl:AttachmentSize full="1"}}" type="{{tpl:AttachmentMimeType}}" />
-    </tpl:Attachments>
-
-    
-    <tpl:EntryIf comments_active="1">
-      <wfw:comment>{{tpl:EntryURL}}#comment-form</wfw:comment>
-      <wfw:commentRss>{{tpl:BlogFeedURL type="atom"}}/comments/{{tpl:EntryID}}</wfw:commentRss>
-    </tpl:EntryIf>
-  </entry>
-  </tpl:Entries>
-
-</feed>
Index: nc/public/default-templates/category.html
===================================================================
--- inc/public/default-templates/category.html	(revision 199)
+++ 	(revision )
@@ -1,167 +1,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="{{tpl:BlogLanguage}}" lang="{{tpl:BlogLanguage}}">
-<head>
-  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
-  <meta name="ROBOTS" content="{{tpl:BlogMetaRobots robots="NOINDEX"}}" />
-  
-  <title>{{tpl:CategoryTitle encode_html="1"}} - {{tpl:BlogName encode_html="1"}}<tpl:PaginationIf start="0"> - {{tpl:lang page}} {{tpl:PaginationCurrent}}</tpl:PaginationIf></title>
-  <meta name="description" lang="{{tpl:BlogLanguage}}" content="{{tpl:CategoryDescription cut_string="180" remove_html="1"}}" />
-  <meta name="copyright" content="{{tpl:BlogCopyrightNotice encode_html="1"}}" />
-  <meta name="author" content="{{tpl:BlogEditor encode_html="1"}}" />
-  <meta name="date" scheme="W3CDTF" content="{{tpl:BlogUpdateDate iso8601="1"}}" />
-  
-  <link rel="schema.dc" href="http://purl.org/dc/elements/1.1/" />
-  <meta name="dc.title" lang="{{tpl:BlogLanguage}}" content="{{tpl:CategoryTitle encode_html="1"}} - {{tpl:BlogName encode_html="1"}}<tpl:PaginationIf start="0"> - {{tpl:lang page}} {{tpl:PaginationCurrent}}</tpl:PaginationIf>" />
-  <meta name="dc.description" lang="{{tpl:BlogLanguage}}" content="{{tpl:CategoryDescription remove_html="1"}}" />
-  <meta name="dc.language" content="{{tpl:BlogLanguage}}" />
-  <meta name="dc.publisher" content="{{tpl:BlogEditor encode_html="1"}}" />
-  <meta name="dc.rights" content="{{tpl:BlogCopyrightNotice encode_html="1"}}" />
-  <meta name="dc.date" scheme="W3CDTF" content="{{tpl:BlogUpdateDate iso8601="1"}}" />
-  <meta name="dc.type" content="text" />
-  <meta name="dc.format" content="text/html" />
-  
-  <link rel="top" href="{{tpl:BlogURL}}" title="{{tpl:lang Home}}" />
-  <link rel="contents" href="{{tpl:BlogArchiveURL}}" title="{{tpl:lang Archives}}" />
-  
-  <tpl:Entries no_content="1">
-    <tpl:EntriesHeader>
-      <tpl:Pagination>
-        <tpl:PaginationIf end="0">
-        <link rel="prev" title="{{tpl:lang previous entries}}" href="{{tpl:PaginationURL offset="1"}}" />
-        </tpl:PaginationIf>
-        
-        <tpl:PaginationIf start="0">
-        <link rel="next" title="{{tpl:lang next entries}}" href="{{tpl:PaginationURL offset="-1"}}" />
-        </tpl:PaginationIf>
-      </tpl:Pagination>
-    </tpl:EntriesHeader>
-    
-    <link rel="chapter" href="{{tpl:EntryURL}}" title="{{tpl:EntryTitle encode_html="1"}}" />
-  </tpl:Entries>
-  
-  <link rel="alternate" type="application/atom+xml" title="Atom 1.0" href="{{tpl:CategoryFeedURL type="atom"}}" />
-  
-  {{tpl:include src="_head.html"}}
-</head>
-
-<body class="dc-category">
-<div id="page">
-{{tpl:include src="_top.html"}}
-
-<div id="wrapper">
-
-<div id="main">
-  <div id="content">
-
-  <div id="content-info">
-    <h2><tpl:CategoryParents><a href="{{tpl:CategoryURL}}">{{tpl:CategoryTitle encode_html="1"}}</a> &rsaquo; </tpl:CategoryParents>
-    {{tpl:CategoryTitle encode_html="1"}}</h2>
-    {{tpl:CategoryDescription}}
-    
-    <tpl:CategoryIf has_entries="1">
-      <p><a type="application/atom+xml" href="{{tpl:CategoryFeedURL type="atom"}}"
-      title="{{tpl:lang This category's entries Atom feed}}" class="feed">{{tpl:lang Entries feed}}</a>
-      
-      <tpl:SysIf operator="or" comments_active="1" pings_active="1">
-      - <a type="application/atom+xml" href="{{tpl:CategoryFeedURL type="atom"}}/comments"
-      title="{{tpl:lang This category's comments Atom feed}}" class="feed">{{tpl:lang Comments feed}}</a>
-      </tpl:SysIf>
-      </p>
-    </tpl:CategoryIf>
-  </div>
-  
-  <tpl:CategoryFirstChildren>
-    <tpl:CategoriesHeader>
-      <div id="subcategories">
-      <h3>{{tpl:lang Subcategories}}</h3>
-      <ul>
-    </tpl:CategoriesHeader>
-    <li><a href="{{tpl:CategoryURL}}">{{tpl:CategoryTitle encode_html="1"}}</a></li>
-    <tpl:CategoriesFooter>
-      </ul>
-      </div>
-    </tpl:CategoriesFooter>
-  </tpl:CategoryFirstChildren>
-  
-  <tpl:Entries>
-    <div id="p{{tpl:EntryID}}" class="post {{tpl:EntryIfOdd}} {{tpl:EntryIfFirst}}" lang="{{tpl:EntryLang}}" xml:lang="{{tpl:EntryLang}}">
-    <!-- # New day date -->
-    <tpl:DateHeader><p class="day-date">{{tpl:EntryDate}}</p></tpl:DateHeader>
-    
-    <h2 class="post-title"><a
-    href="{{tpl:EntryURL}}">{{tpl:EntryTitle encode_html="1"}}</a></h2>
-    
-    <p class="post-info">{{tpl:lang By}} {{tpl:EntryAuthorLink}}
-    {{tpl:lang on}} {{tpl:EntryDate}}, {{tpl:EntryTime}}</p>
-    
-    <tpl:EntryTags>
-    <tpl:TagsHeader><ul class="post-tags"></tpl:TagsHeader>
-    <li><a href="{{tpl:TagURL}}">{{tpl:TagID}}</a></li>
-    <tpl:TagsFooter></ul></tpl:TagsFooter>
-    </tpl:EntryTags>
-    
-    <!-- # --BEHAVIOR-- publicEntryBeforeContent -->
-    {{tpl:SysBehavior behavior="publicEntryBeforeContent"}}
-    
-    <!-- # Entry with an excerpt -->
-    <tpl:EntryIf extended="1">
-      <div class="post-content">{{tpl:EntryExcerpt}}</div>
-      <p class="read-it"><a href="{{tpl:EntryURL}}"
-      title="{{tpl:lang Continue reading}} {{tpl:EntryTitle encode_html="1"}}">{{tpl:lang Continue
-      reading}}</a>...</p>
-    </tpl:EntryIf>
-    
-    <!-- # Entry without excerpt -->
-    <tpl:EntryIf extended="0">
-      <div class="post-content">{{tpl:EntryContent}}</div>
-    </tpl:EntryIf>
-    
-    <!-- # --BEHAVIOR-- publicEntryAfterContent -->
-    {{tpl:SysBehavior behavior="publicEntryAfterContent"}}
-    
-    <!-- # Number of comments, trackbacks and attachments -->
-    <tpl:EntryIf operator="or" show_comments="1" show_pings="1" has_attachment="1">
-      <p class="post-info-co">
-    </tpl:EntryIf>
-    <tpl:EntryIf show_comments="1">
-      <a href="{{tpl:EntryURL}}#comments" class="comment_count">{{tpl:EntryCommentCount}}</a>
-    </tpl:EntryIf>
-    <tpl:EntryIf show_pings="1">
-      <a href="{{tpl:EntryURL}}#pings" class="ping_count">{{tpl:EntryPingCount}}</a></tpl:EntryIf>
-    <tpl:EntryIf has_attachment="1">
-      <a href="{{tpl:EntryURL}}#attachments" class="attach_count">{{tpl:EntryAttachmentCount}}</a></tpl:EntryIf>
-    <tpl:EntryIf operator="or" show_comments="1" show_pings="1" has_attachment="1">
-      </p>
-    </tpl:EntryIf>
-    </div>
-    
-    <tpl:EntriesFooter>
-      <tpl:Pagination>
-        <p class="pagination"><tpl:PaginationIf end="0"><a href="{{tpl:PaginationURL offset="+1"}}" class="prev">&#171;
-        {{tpl:lang previous entries}}</a> - </tpl:PaginationIf>
-        {{tpl:lang page}} {{tpl:PaginationCurrent}} {{tpl:lang of}} {{tpl:PaginationCounter}}
-        <tpl:PaginationIf start="0"> - <a href="{{tpl:PaginationURL offset="-1"}}" class="next">{{tpl:lang next entries}}
-        &#187;</a></tpl:PaginationIf></p>
-      </tpl:Pagination>
-    </tpl:EntriesFooter>
-  </tpl:Entries>
-  </div>
-</div> <!-- End #main -->
-
-<div id="sidebar">
-  <div id="blognav">
-    {{tpl:Widgets type="nav"}}
-  </div> <!-- End #blognav -->
-  
-  <div id="blogextra">
-    {{tpl:Widgets type="extra"}}
-  </div> <!-- End #blogextra -->
-</div>
-
-</div> <!-- End #wrapper -->
-
-{{tpl:include src="_footer.html"}}
-</div> <!-- End #page -->
-</body>
-</html>
Index: nc/public/default-templates/home.html
===================================================================
--- inc/public/default-templates/home.html	(revision 199)
+++ 	(revision )
@@ -1,144 +1,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="{{tpl:BlogLanguage}}" lang="{{tpl:BlogLanguage}}">
-<head>
-  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
-  <meta name="ROBOTS" content="{{tpl:BlogMetaRobots}}" />
-  
-  <title>{{tpl:BlogName encode_html="1"}}<tpl:PaginationIf start="0"> - {{tpl:lang page}} {{tpl:PaginationCurrent}}</tpl:PaginationIf></title>
-  <meta name="description" lang="{{tpl:BlogLanguage}}" content="{{tpl:BlogDescription cut_string="180" encode_html="1"}}<tpl:PaginationIf start="0"> - {{tpl:lang page}} {{tpl:PaginationCurrent}}</tpl:PaginationIf>" />
-  <meta name="copyright" content="{{tpl:BlogCopyrightNotice encode_html="1"}}" />
-  <meta name="author" content="{{tpl:BlogEditor encode_html="1"}}" />
-  <meta name="date" scheme="W3CDTF" content="{{tpl:BlogUpdateDate iso8601="1"}}" />
-  
-  <link rel="schema.dc" href="http://purl.org/dc/elements/1.1/" />
-  <meta name="dc.title" lang="{{tpl:BlogLanguage}}" content="{{tpl:BlogName encode_html="1"}}<tpl:PaginationIf start="0"> - {{tpl:lang page}} {{tpl:PaginationCurrent}}</tpl:PaginationIf>" />
-  <meta name="dc.description" lang="{{tpl:BlogLanguage}}" content="{{tpl:BlogDescription encode_html="1"}}" />
-  <meta name="dc.language" content="{{tpl:BlogLanguage}}" />
-  <meta name="dc.publisher" content="{{tpl:BlogEditor encode_html="1"}}" />
-  <meta name="dc.rights" content="{{tpl:BlogCopyrightNotice encode_html="1"}}" />
-  <meta name="dc.date" scheme="W3CDTF" content="{{tpl:BlogUpdateDate iso8601="1"}}" />
-  <meta name="dc.type" content="text" />
-  <meta name="dc.format" content="text/html" />
-  
-  <link rel="contents" title="{{tpl:lang Archives}}" href="{{tpl:BlogArchiveURL}}" />
-  <tpl:Categories>
-  <link rel="section" href="{{tpl:CategoryURL}}" title="{{tpl:CategoryTitle encode_html="1"}}" />
-  </tpl:Categories>
-  
-  <tpl:Entries no_content="1">
-    <tpl:EntriesHeader>
-      <tpl:Pagination>
-        <tpl:PaginationIf end="0">
-        <link rel="prev" title="{{tpl:lang previous entries}}" href="{{tpl:PaginationURL offset="1"}}" />
-        </tpl:PaginationIf>
-        
-        <tpl:PaginationIf start="0">
-        <link rel="next" title="{{tpl:lang next entries}}" href="{{tpl:PaginationURL offset="-1"}}" />
-        </tpl:PaginationIf>
-      </tpl:Pagination>
-    </tpl:EntriesHeader>
-    
-    <link rel="chapter" href="{{tpl:EntryURL}}" title="{{tpl:EntryTitle encode_html="1"}}" />
-  </tpl:Entries>
-  
-  <link rel="alternate" type="application/atom+xml" title="Atom 1.0" href="{{tpl:BlogFeedURL type="atom"}}" />
-  <link rel="EditURI" type="application/rsd+xml" title="RSD" href="{{tpl:BlogRSDURL}}" />
-  <link rel="meta" type="application/xbel+xml" title="Blogroll" href="{{tpl:BlogrollXbelLink}}" />
-  
-  {{tpl:include src="_head.html"}}
-</head>
-
-<body class="dc-home">
-<div id="page">
-{{tpl:include src="_top.html"}}
-
-<div id="wrapper">
-
-<div id="main">
-  <div id="content">
-  <tpl:Entries>
-    <div id="p{{tpl:EntryID}}" class="post {{tpl:EntryIfOdd}} {{tpl:EntryIfFirst}}" lang="{{tpl:EntryLang}}" xml:lang="{{tpl:EntryLang}}">
-    <!-- # New day date -->
-    <tpl:DateHeader><p class="day-date">{{tpl:EntryDate}}</p></tpl:DateHeader>
-    
-    <h2 class="post-title"><a
-    href="{{tpl:EntryURL}}">{{tpl:EntryTitle encode_html="1"}}</a></h2>
-    
-    <p class="post-info">{{tpl:lang By}} {{tpl:EntryAuthorLink}}
-    {{tpl:lang on}} {{tpl:EntryDate}}, {{tpl:EntryTime}}
-    <tpl:EntryIf has_category="1">
-    - <a href="{{tpl:EntryCategoryURL}}">{{tpl:EntryCategory encode_html="1"}}</a>
-    </tpl:EntryIf>
-    </p>
-    
-    <tpl:EntryTags>
-    <tpl:TagsHeader><ul class="post-tags"></tpl:TagsHeader>
-    <li><a href="{{tpl:TagURL}}">{{tpl:TagID}}</a></li>
-    <tpl:TagsFooter></ul></tpl:TagsFooter>
-    </tpl:EntryTags>
-    
-    <!-- # --BEHAVIOR-- publicEntryBeforeContent -->
-    {{tpl:SysBehavior behavior="publicEntryBeforeContent"}}
-    
-    <!-- # Entry with an excerpt -->
-    <tpl:EntryIf extended="1">
-      <div class="post-content">{{tpl:EntryExcerpt}}</div>
-      <p class="read-it"><a href="{{tpl:EntryURL}}"
-      title="{{tpl:lang Continue reading}} {{tpl:EntryTitle encode_html="1"}}">{{tpl:lang Continue
-      reading}}</a>...</p>
-    </tpl:EntryIf>
-    
-    <!-- # Entry without excerpt -->
-    <tpl:EntryIf extended="0">
-      <div class="post-content">{{tpl:EntryContent}}</div>
-    </tpl:EntryIf>
-    
-    <!-- # --BEHAVIOR-- publicEntryAfterContent -->
-    {{tpl:SysBehavior behavior="publicEntryAfterContent"}}
-    
-    <!-- # Number of comments, trackbacks and attachments -->
-    <tpl:EntryIf operator="or" show_comments="1" show_pings="1" has_attachment="1">
-      <p class="post-info-co">
-    </tpl:EntryIf>
-    <tpl:EntryIf show_comments="1">
-      <a href="{{tpl:EntryURL}}#comments" class="comment_count">{{tpl:EntryCommentCount}}</a>
-    </tpl:EntryIf>
-    <tpl:EntryIf show_pings="1">
-      <a href="{{tpl:EntryURL}}#pings" class="ping_count">{{tpl:EntryPingCount}}</a></tpl:EntryIf>
-    <tpl:EntryIf has_attachment="1">
-      <a href="{{tpl:EntryURL}}#attachments" class="attach_count">{{tpl:EntryAttachmentCount}}</a></tpl:EntryIf>
-    <tpl:EntryIf operator="or" show_comments="1" show_pings="1" has_attachment="1">
-      </p>
-    </tpl:EntryIf>
-    </div>
-    
-    <tpl:EntriesFooter>
-      <tpl:Pagination>
-        <p class="pagination"><tpl:PaginationIf end="0"><a href="{{tpl:PaginationURL offset="+1"}}" class="prev">&#171;
-        {{tpl:lang previous entries}}</a> - </tpl:PaginationIf>
-        {{tpl:lang page}} {{tpl:PaginationCurrent}} {{tpl:lang of}} {{tpl:PaginationCounter}}
-        <tpl:PaginationIf start="0"> - <a href="{{tpl:PaginationURL offset="-1"}}" class="next">{{tpl:lang next entries}}
-        &#187;</a></tpl:PaginationIf></p>
-      </tpl:Pagination>
-    </tpl:EntriesFooter>
-  </tpl:Entries>
-  </div>
-</div> <!-- End #main -->
-
-<div id="sidebar">
-  <div id="blognav">
-    {{tpl:Widgets type="nav"}}
-  </div> <!-- End #blognav -->
-  
-  <div id="blogextra">
-    {{tpl:Widgets type="extra"}}
-  </div> <!-- End #blogextra -->
-</div>
-
-</div> <!-- End #wrapper -->
-
-{{tpl:include src="_footer.html"}}
-</div> <!-- End #page -->
-</body>
-</html>
Index: inc/public/default-templates/legacy/404.html
===================================================================
--- inc/public/default-templates/legacy/404.html	(revision 2541)
+++ inc/public/default-templates/legacy/404.html	(revision 2541)
@@ -0,0 +1,62 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="{{tpl:BlogLanguage}}" lang="{{tpl:BlogLanguage}}">
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+  <meta name="ROBOTS" content="{{tpl:BlogMetaRobots robots="NOINDEX,NOARCHIVE"}}" />
+  
+  <title>{{tpl:lang Document not found}} - {{tpl:BlogName encode_html="1"}}</title>
+  <meta name="copyright" content="{{tpl:BlogCopyrightNotice encode_html="1"}}" />
+  <meta name="author" content="{{tpl:BlogEditor encode_html="1"}}" />
+  
+  <link rel="schema.dc" href="http://purl.org/dc/elements/1.1/" />
+  <meta name="dc.title" lang="{{tpl:BlogLanguage}}" content="{{tpl:lang Document not found}} - {{tpl:BlogName encode_html="1"}}" />
+  <meta name="dc.language" content="{{tpl:BlogLanguage}}" />
+  <meta name="dc.publisher" content="{{tpl:BlogEditor encode_html="1"}}" />
+  <meta name="dc.rights" content="{{tpl:BlogCopyrightNotice encode_html="1"}}" />
+  <meta name="dc.type" content="text" />
+  <meta name="dc.format" content="text/html" />
+  
+  <link rel="top" href="{{tpl:BlogURL}}" title="{{tpl:lang Home}}" />
+  <link rel="contents" title="{{tpl:lang Archives}}" href="{{tpl:BlogArchiveURL}}" />
+  <link rel="alternate" type="application/atom+xml" title="Atom 1.0" href="{{tpl:BlogFeedURL type="atom"}}" />
+  
+  {{tpl:include src="_head.html"}}
+</head>
+
+<body class="dc-404">
+<div id="page">
+{{tpl:include src="_top.html"}}
+
+<div id="wrapper">
+
+<div id="main">
+  <div id="content">
+  
+  <div id="content-info">
+    <h2>{{tpl:lang Document not found}}</h2>
+  </div>
+  
+  <div class="content-inner">
+    <p>{{tpl:lang The document you are looking for does not exist.}}</p>
+  </div>
+  
+  </div>
+</div>
+
+<div id="sidebar">
+  <div id="blognav">
+    {{tpl:Widgets type="nav"}}
+  </div> <!-- End #blognav -->
+  
+  <div id="blogextra">
+    {{tpl:Widgets type="extra"}}
+  </div> <!-- End #blogextra -->
+</div>
+
+</div> <!-- End #wrapper -->
+
+{{tpl:include src="_footer.html"}}
+</div> <!-- End #page -->
+</body>
+</html>
Index: inc/public/default-templates/legacy/_flv_player.html
===================================================================
--- inc/public/default-templates/legacy/_flv_player.html	(revision 2541)
+++ inc/public/default-templates/legacy/_flv_player.html	(revision 2541)
@@ -0,0 +1,8 @@
+<object type="application/x-shockwave-flash" data="{{tpl:BlogQmarkURL}}pf=player_flv.swf"
+width="400" height="300">
+<param name="movie" value="{{tpl:BlogQmarkURL}}pf=player_flv.swf" />
+<param name="wmode" value="transparent" />
+<param name="allowFullScreen" value="true" />
+<param name="FlashVars" value="flv={{tpl:MediaURL}}&amp;width=400&amp;height=300&amp;margin=1&amp;showfullscreen=1&amp;showvolume=1&amp;showtime=1" />
+{{tpl:lang Embedded Audio Player}}
+</object>
Index: inc/public/default-templates/legacy/_footer.html
===================================================================
--- inc/public/default-templates/legacy/_footer.html	(revision 2541)
+++ inc/public/default-templates/legacy/_footer.html	(revision 2541)
@@ -0,0 +1,5 @@
+<div id="footer">
+  <p>{{tpl:SysPoweredBy}}</p>
+</div>
+
+{{tpl:SysBehavior behavior="publicFooterContent"}}
Index: inc/public/default-templates/legacy/_head.html
===================================================================
--- inc/public/default-templates/legacy/_head.html	(revision 2541)
+++ inc/public/default-templates/legacy/_head.html	(revision 2541)
@@ -0,0 +1,8 @@
+<link rel="stylesheet" type="text/css" href="{{tpl:BlogThemeURL}}/style.css" media="screen" />
+<link rel="stylesheet" type="text/css" href="{{tpl:BlogThemeURL}}/../default/print.css" media="print" />
+
+<script type="text/javascript" src="{{tpl:BlogThemeURL}}/../default/js/jquery.js"></script>
+<script type="text/javascript" src="{{tpl:BlogThemeURL}}/../default/js/jquery.cookie.js"></script>
+
+{{tpl:include src="user_head.html"}}
+{{tpl:SysBehavior behavior="publicHeadContent"}}
Index: inc/public/default-templates/legacy/_mp3_player.html
===================================================================
--- inc/public/default-templates/legacy/_mp3_player.html	(revision 2541)
+++ inc/public/default-templates/legacy/_mp3_player.html	(revision 2541)
@@ -0,0 +1,6 @@
+<object type="application/x-shockwave-flash" data="{{tpl:BlogQmarkURL}}pf=player_mp3.swf" width="200" height="20">
+<param name="movie" value="{{tpl:BlogQmarkURL}}pf=player_mp3.swf" />
+<param name="wmode" value="transparent" />
+<param name="FlashVars" value="mp3={{tpl:MediaURL}}&amp;showvolume=1&amp;loadingcolor=ff9900&amp;bgcolor1=eeeeee&amp;bgcolor2=cccccc&amp;buttoncolor=0066cc&amp;buttonovercolor=ff9900&amp;slidercolor1=cccccc&amp;slidercolor2=999999&amp;sliderovercolor=0066cc" />
+{{tpl:lang Embedded Audio Player}}
+</object>
Index: inc/public/default-templates/legacy/_top.html
===================================================================
--- inc/public/default-templates/legacy/_top.html	(revision 2541)
+++ inc/public/default-templates/legacy/_top.html	(revision 2541)
@@ -0,0 +1,10 @@
+<div id="top">
+  <h1><span><a href="{{tpl:BlogURL}}">{{tpl:BlogName encode_html="1"}}</a></span></h1>
+  
+  <!-- # --BEHAVIOR-- publicTopAfterContent -->
+  {{tpl:SysBehavior behavior="publicTopAfterContent"}}
+</div>
+
+<p id="prelude"><a href="#main">{{tpl:lang To content}}</a> |
+<a href="#blognav">{{tpl:lang To menu}}</a> |
+<a href="#search">{{tpl:lang To search}}</a></p>
Index: inc/public/default-templates/legacy/archive.html
===================================================================
--- inc/public/default-templates/legacy/archive.html	(revision 2541)
+++ inc/public/default-templates/legacy/archive.html	(revision 2541)
@@ -0,0 +1,79 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="{{tpl:BlogLanguage}}" lang="{{tpl:BlogLanguage}}">
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+  <meta name="ROBOTS" content="{{tpl:BlogMetaRobots}}" />
+  
+  <title>{{tpl:lang Archives}} - {{tpl:BlogName encode_html="1"}}</title>
+  <meta name="copyright" content="{{tpl:BlogCopyrightNotice encode_html="1"}}" />
+  <meta name="author" content="{{tpl:BlogEditor encode_html="1"}}" />
+  <meta name="date" scheme="W3CDTF" content="{{tpl:BlogUpdateDate iso8601="1"}}" />
+  
+  <link rel="schema.dc" href="http://purl.org/dc/elements/1.1/" />
+  <meta name="dc.title" lang="{{tpl:BlogLanguage}}" content="{{tpl:lang Archives}} - {{tpl:BlogName encode_html="1"}}" />
+  <meta name="dc.language" content="{{tpl:BlogLanguage}}" />
+  <meta name="dc.publisher" content="{{tpl:BlogEditor encode_html="1"}}" />
+  <meta name="dc.rights" content="{{tpl:BlogCopyrightNotice encode_html="1"}}" />
+  <meta name="dc.date" scheme="W3CDTF" content="{{tpl:BlogUpdateDate iso8601="1"}}" />
+  <meta name="dc.type" content="text" />
+  <meta name="dc.format" content="text/html" />
+  
+  <link rel="top" href="{{tpl:BlogURL}}" title="{{tpl:lang Home}}" />
+  
+  <tpl:Archives>
+    <link rel="chapter" href="{{tpl:ArchiveURL}}" title="{{tpl:ArchiveDate encode_html="1"}}" />
+  </tpl:Archives>
+  
+  <link rel="alternate" type="application/atom+xml" title="Atom 1.0" href="{{tpl:BlogFeedURL type="atom"}}" />
+  
+  {{tpl:include src="_head.html"}}
+</head>
+
+<body class="dc-archive">
+<div id="page">
+{{tpl:include src="_top.html"}}
+
+<div id="wrapper">
+
+<div id="main">
+  <div id="content">
+  
+  <div id="content-info">
+    <h2>{{tpl:lang Archives}}</h2>
+  </div>
+  
+  <div class="content-inner">
+  <tpl:Archives>
+    <tpl:ArchivesYearHeader>
+      <h3>{{tpl:ArchiveDate format="%Y"}}</h3>
+      <ul>
+    </tpl:ArchivesYearHeader>
+      <li><a href="{{tpl:ArchiveURL}}"
+      title="{{tpl:ArchiveDate encode_html="1"}}">{{tpl:ArchiveDate encode_html="1" format="%B"}}</a>
+      ({{tpl:ArchiveEntriesCount}})</li>
+    <tpl:ArchivesYearFooter>
+      </ul>
+    </tpl:ArchivesYearFooter>
+  </tpl:Archives>
+  </div>
+  
+  </div>
+</div> <!-- End #main -->
+
+<div id="sidebar">
+  <div id="blognav">
+    {{tpl:Widgets type="nav"}}
+  </div> <!-- End #blognav -->
+  
+  <div id="blogextra">
+    {{tpl:Widgets type="extra"}}
+  </div> <!-- End #blogextra -->
+</div>
+
+</div> <!-- End #wrapper -->
+
+{{tpl:include src="_footer.html"}}
+</div> <!-- End #page -->
+</body>
+</html>
Index: inc/public/default-templates/legacy/archive_month.html
===================================================================
--- inc/public/default-templates/legacy/archive_month.html	(revision 2541)
+++ inc/public/default-templates/legacy/archive_month.html	(revision 2541)
@@ -0,0 +1,96 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="{{tpl:BlogLanguage}}" lang="{{tpl:BlogLanguage}}">
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+  <meta name="ROBOTS" content="{{tpl:BlogMetaRobots robots="NOINDEX"}}" />
+  
+  <title>{{tpl:lang Archives}} - {{tpl:ArchiveDate}} - {{tpl:BlogName encode_html="1"}}</title>
+  <meta name="copyright" content="{{tpl:BlogCopyrightNotice encode_html="1"}}" />
+  <meta name="author" content="{{tpl:BlogEditor encode_html="1"}}" />
+  <meta name="date" scheme="W3CDTF" content="{{tpl:BlogUpdateDate iso8601="1"}}" />
+  
+  <link rel="schema.dc" href="http://purl.org/dc/elements/1.1/" />
+  <meta name="dc.title" lang="{{tpl:BlogLanguage}}" content="{{tpl:lang Archives}} - {{tpl:ArchiveDate}} - {{tpl:BlogName encode_html="1"}}" />
+  <meta name="dc.language" content="{{tpl:BlogLanguage}}" />
+  <meta name="dc.publisher" content="{{tpl:BlogEditor encode_html="1"}}" />
+  <meta name="dc.rights" content="{{tpl:BlogCopyrightNotice encode_html="1"}}" />
+  <meta name="dc.date" scheme="W3CDTF" content="{{tpl:BlogUpdateDate iso8601="1"}}" />
+  <meta name="dc.type" content="text" />
+  <meta name="dc.format" content="text/html" />
+  
+  <link rel="top" href="{{tpl:BlogURL}}" title="{{tpl:lang Home}}" />
+  <link rel="up" href="{{tpl:BlogArchiveURL}}" title="{{tpl:lang Archives}}" />
+  <link rel="contents" href="{{tpl:BlogArchiveURL}}" title="{{tpl:lang Archives}}" />
+  
+  
+  <tpl:ArchiveNext><link rel="next" href="{{tpl:ArchiveURL}}"
+  title="{{tpl:ArchiveDate encode_html="1"}}" /></tpl:ArchiveNext>
+  <tpl:ArchivePrevious><link rel="prev" href="{{tpl:ArchiveURL}}"
+  title="{{tpl:ArchiveDate encode_html="1"}}" /></tpl:ArchivePrevious>
+  
+  <tpl:Entries no_content="1">
+  <link rel="chapter" href="{{tpl:EntryURL}}" title="{{tpl:EntryTitle encode_html="1"}}" />
+  </tpl:Entries>
+  
+  {{tpl:include src="_head.html"}}
+</head>
+
+<body class="dc-archive-month">
+<div id="page">
+{{tpl:include src="_top.html"}}
+
+<div id="wrapper">
+
+<div id="main">
+  <div id="content">
+  
+  <p id="navlinks">
+  <tpl:ArchivePrevious><a href="{{tpl:ArchiveURL}}" class="prev">&#171; {{tpl:ArchiveDate encode_html="1"}}</a>
+  - </tpl:ArchivePrevious>
+  <a href="{{tpl:BlogArchiveURL}}">{{tpl:lang Archives}}</a>
+  <tpl:ArchiveNext> - <a href="{{tpl:ArchiveURL}}" class="next">{{tpl:ArchiveDate encode_html="1"}} &#187;</a></tpl:ArchiveNext>
+  </p>
+  
+  <div id="content-info">
+    <h2>{{tpl:ArchiveDate}}</h2>
+  </div>
+  
+  <div class="content-inner">
+  <tpl:Entries no_content="1">
+    <!-- # New day date -->
+    <tpl:DateHeader><p class="day-date">{{tpl:EntryDate}}</p></tpl:DateHeader>
+    
+    <h2 id="p{{tpl:EntryID}}" class="post-title" lang="{{tpl:EntryLang}}" xml:lang="{{tpl:EntryLang}}"><a
+    href="{{tpl:EntryURL}}" title="{{tpl:lang Read}} {{tpl:EntryTitle encode_html="1"}}">{{tpl:EntryTitle encode_html="1"}}</a></h2>
+    
+    <p class="post-info">{{tpl:lang By}} {{tpl:EntryAuthorLink}}
+    <tpl:EntryIf show_comments="1">
+    - <a href="{{tpl:EntryURL}}#comments">{{tpl:EntryCommentCount}}</a>
+    </tpl:EntryIf>
+    <tpl:EntryIf show_pings="1">
+    - <a href="{{tpl:EntryURL}}#pings">{{tpl:EntryPingCount}}</a></tpl:EntryIf>
+    <tpl:EntryIf has_attachment="1">
+    - <a href="{{tpl:EntryURL}}#attachments">{{tpl:EntryAttachmentCount}}</a></tpl:EntryIf>
+    </p>
+  </tpl:Entries>
+  </div>
+  </div>
+</div> <!-- End #main -->
+
+<div id="sidebar">
+  <div id="blognav">
+    {{tpl:Widgets type="nav"}}
+  </div> <!-- End #blognav -->
+  
+  <div id="blogextra">
+    {{tpl:Widgets type="extra"}}
+  </div> <!-- End #blogextra -->
+</div>
+
+</div> <!-- End #wrapper -->
+
+{{tpl:include src="_footer.html"}}
+</div> <!-- End #page -->
+</body>
+</html>
Index: inc/public/default-templates/legacy/atom-comments.xml
===================================================================
--- inc/public/default-templates/legacy/atom-comments.xml	(revision 2541)
+++ inc/public/default-templates/legacy/atom-comments.xml	(revision 2541)
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="{{tpl:BlogLanguage}}">
+  
+  <title type="html">{{tpl:BlogName encode_xml="1"}}{{tpl:SysFeedSubtitle encode_xml="1"}}
+  - {{tpl:lang Comments}}</title>
+  <subtitle type="html">{{tpl:BlogDescription encode_xml="1"}}</subtitle>
+  <link href="{{tpl:SysSelfURI}}" rel="self" type="application/atom+xml"/>
+  <link href="{{tpl:BlogURL}}" rel="alternate" type="text/html"
+  title="{{tpl:BlogDescription encode_xml="1"}}"/>
+  <updated>{{tpl:BlogUpdateDate iso8601="1"}}</updated>
+  <author>
+    <name>{{tpl:BlogEditor encode_xml="1"}}</name>
+  </author>
+  <id>{{tpl:BlogFeedID}}</id>
+  <generator uri="http://www.dotclear.org/">Dotclear</generator>
+  
+  <tpl:Comments order="desc" with_pings="1">
+  
+  <tpl:CommentIf is_ping="1">
+  <entry>
+    <title>[ping] {{tpl:PingEntryTitle encode_xml="1"}} - {{tpl:PingBlogName encode_xml="1"}}</title>
+    <link href="{{tpl:PingPostURL encode_xml="1"}}#c{{tpl:PingID}}" rel="alternate" type="text/html"
+    title="[ping] {{tpl:PingEntryTitle encode_xml="1"}} - {{tpl:PingBlogName encode_xml="1"}}" />
+    <id>{{tpl:PingFeedID}}</id>
+    <published>{{tpl:PingDate iso8601="1"}}</published>
+    <updated>{{tpl:PingDate iso8601="1" upddt="1"}}</updated>
+    <author><name>{{tpl:PingBlogName encode_xml="1"}}</name></author>
+    <content type="html">&lt;p&gt;&lt;a href="{{tpl:PingAuthorURL encode_xml="1"}}"&gt;{{tpl:PingTitle encode_xml="1"}}&lt;/a&gt;&lt;/p&gt; {{tpl:PingContent encode_xml="1"}}</content>
+  </entry>
+  
+  </tpl:CommentIf>
+  
+  <tpl:CommentIf is_ping="0">
+  <entry>
+    <title>{{tpl:CommentEntryTitle encode_xml="1"}} - {{tpl:CommentAuthor encode_xml="1"}}</title>
+    <link href="{{tpl:CommentPostURL encode_xml="1"}}#c{{tpl:CommentID}}" rel="alternate" type="text/html"
+    title="{{tpl:CommentEntryTitle encode_xml="1"}} - {{tpl:CommentAuthor encode_xml="1"}}" />
+    <id>{{tpl:CommentFeedID}}</id>
+    <published>{{tpl:CommentDate iso8601="1"}}</published>
+    <updated>{{tpl:CommentDate iso8601="1" upddt="1"}}</updated>
+    <author><name>{{tpl:CommentAuthor encode_xml="1"}}</name></author>
+    <content type="html">{{tpl:CommentContent absolute_urls="1" encode_xml="1"}}</content>
+  </entry>
+  </tpl:CommentIf>
+  </tpl:Comments>
+  
+</feed>
Index: inc/public/default-templates/legacy/atom.xml
===================================================================
--- inc/public/default-templates/legacy/atom.xml	(revision 2541)
+++ inc/public/default-templates/legacy/atom.xml	(revision 2541)
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<feed xmlns="http://www.w3.org/2005/Atom"
+  xmlns:dc="http://purl.org/dc/elements/1.1/"
+  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
+  xml:lang="{{tpl:BlogLanguage}}">
+  
+  <title type="html">{{tpl:BlogName encode_xml="1"}}{{tpl:SysFeedSubtitle encode_xml="1"}}</title>
+  <subtitle type="html">{{tpl:BlogDescription encode_xml="1"}}</subtitle>
+  <link href="{{tpl:SysSelfURI}}" rel="self" type="application/atom+xml"/>
+  <link href="{{tpl:BlogURL}}" rel="alternate" type="text/html"
+  title="{{tpl:BlogDescription encode_xml="1"}}"/>
+  <updated>{{tpl:BlogUpdateDate iso8601="1"}}</updated>
+  <author>
+    <name>{{tpl:BlogEditor encode_xml="1"}}</name>
+  </author>
+  <id>{{tpl:BlogFeedID}}</id>
+  <generator uri="http://www.dotclear.org/">Dotclear</generator>
+  
+  <tpl:Entries>
+  
+  <entry>
+    <title>{{tpl:EntryTitle encode_xml="1"}}</title>
+    <link href="{{tpl:EntryURL}}" rel="alternate" type="text/html"
+    title="{{tpl:EntryTitle encode_xml="1"}}" />
+    <id>{{tpl:EntryFeedID}}</id>
+    <published>{{tpl:EntryDate iso8601="1"}}</published>
+    <tpl:EntryIf republished="1">
+      <updated>{{tpl:EntryDate iso8601="1" upddt="1"}}</updated>
+    </tpl:EntryIf>
+    <tpl:EntryIf republished="0">
+      <updated>{{tpl:EntryDate iso8601="1"}}</updated>
+    </tpl:EntryIf>
+    <author><name>{{tpl:EntryAuthorCommonName encode_xml="1"}}</name></author>
+    <tpl:EntryIf has_category="1">
+    <dc:subject>{{tpl:EntryCategory encode_html="1"}}</dc:subject>
+    </tpl:EntryIf>
+    <tpl:EntryTags><dc:subject>{{tpl:TagID}}</dc:subject></tpl:EntryTags>
+    
+    <content type="html">{{tpl:EntryExcerpt absolute_urls="1" encode_xml="1"}}
+    {{tpl:EntryContent absolute_urls="1" encode_xml="1"}}</content>
+    
+    <tpl:Attachments>
+      <link rel="enclosure" href="{{tpl:AttachmentURL}}"
+      length="{{tpl:AttachmentSize full="1"}}" type="{{tpl:AttachmentMimeType}}" />
+    </tpl:Attachments>
+
+    
+    <tpl:EntryIf comments_active="1">
+      <wfw:comment>{{tpl:EntryURL}}#comment-form</wfw:comment>
+      <wfw:commentRss>{{tpl:BlogFeedURL type="atom"}}/comments/{{tpl:EntryID}}</wfw:commentRss>
+    </tpl:EntryIf>
+  </entry>
+  </tpl:Entries>
+
+</feed>
Index: inc/public/default-templates/legacy/category.html
===================================================================
--- inc/public/default-templates/legacy/category.html	(revision 2541)
+++ inc/public/default-templates/legacy/category.html	(revision 2541)
@@ -0,0 +1,167 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="{{tpl:BlogLanguage}}" lang="{{tpl:BlogLanguage}}">
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+  <meta name="ROBOTS" content="{{tpl:BlogMetaRobots robots="NOINDEX"}}" />
+  
+  <title>{{tpl:CategoryTitle encode_html="1"}} - {{tpl:BlogName encode_html="1"}}<tpl:PaginationIf start="0"> - {{tpl:lang page}} {{tpl:PaginationCurrent}}</tpl:PaginationIf></title>
+  <meta name="description" lang="{{tpl:BlogLanguage}}" content="{{tpl:CategoryDescription cut_string="180" remove_html="1"}}" />
+  <meta name="copyright" content="{{tpl:BlogCopyrightNotice encode_html="1"}}" />
+  <meta name="author" content="{{tpl:BlogEditor encode_html="1"}}" />
+  <meta name="date" scheme="W3CDTF" content="{{tpl:BlogUpdateDate iso8601="1"}}" />
+  
+  <link rel="schema.dc" href="http://purl.org/dc/elements/1.1/" />
+  <meta name="dc.title" lang="{{tpl:BlogLanguage}}" content="{{tpl:CategoryTitle encode_html="1"}} - {{tpl:BlogName encode_html="1"}}<tpl:PaginationIf start="0"> - {{tpl:lang page}} {{tpl:PaginationCurrent}}</tpl:PaginationIf>" />
+  <meta name="dc.description" lang="{{tpl:BlogLanguage}}" content="{{tpl:CategoryDescription remove_html="1"}}" />
+  <meta name="dc.language" content="{{tpl:BlogLanguage}}" />
+  <meta name="dc.publisher" content="{{tpl:BlogEditor encode_html="1"}}" />
+  <meta name="dc.rights" content="{{tpl:BlogCopyrightNotice encode_html="1"}}" />
+  <meta name="dc.date" scheme="W3CDTF" content="{{tpl:BlogUpdateDate iso8601="1"}}" />
+  <meta name="dc.type" content="text" />
+  <meta name="dc.format" content="text/html" />
+  
+  <link rel="top" href="{{tpl:BlogURL}}" title="{{tpl:lang Home}}" />
+  <link rel="contents" href="{{tpl:BlogArchiveURL}}" title="{{tpl:lang Archives}}" />
+  
+  <tpl:Entries no_content="1">
+    <tpl:EntriesHeader>
+      <tpl:Pagination>
+        <tpl:PaginationIf end="0">
+        <link rel="prev" title="{{tpl:lang previous entries}}" href="{{tpl:PaginationURL offset="1"}}" />
+        </tpl:PaginationIf>
+        
+        <tpl:PaginationIf start="0">
+        <link rel="next" title="{{tpl:lang next entries}}" href="{{tpl:PaginationURL offset="-1"}}" />
+        </tpl:PaginationIf>
+      </tpl:Pagination>
+    </tpl:EntriesHeader>
+    
+    <link rel="chapter" href="{{tpl:EntryURL}}" title="{{tpl:EntryTitle encode_html="1"}}" />
+  </tpl:Entries>
+  
+  <link rel="alternate" type="application/atom+xml" title="Atom 1.0" href="{{tpl:CategoryFeedURL type="atom"}}" />
+  
+  {{tpl:include src="_head.html"}}
+</head>
+
+<body class="dc-category">
+<div id="page">
+{{tpl:include src="_top.html"}}
+
+<div id="wrapper">
+
+<div id="main">
+  <div id="content">
+
+  <div id="content-info">
+    <h2><tpl:CategoryParents><a href="{{tpl:CategoryURL}}">{{tpl:CategoryTitle encode_html="1"}}</a> &rsaquo; </tpl:CategoryParents>
+    {{tpl:CategoryTitle encode_html="1"}}</h2>
+    {{tpl:CategoryDescription}}
+    
+    <tpl:CategoryIf has_entries="1">
+      <p><a type="application/atom+xml" href="{{tpl:CategoryFeedURL type="atom"}}"
+      title="{{tpl:lang This category's entries Atom feed}}" class="feed">{{tpl:lang Entries feed}}</a>
+      
+      <tpl:SysIf operator="or" comments_active="1" pings_active="1">
+      - <a type="application/atom+xml" href="{{tpl:CategoryFeedURL type="atom"}}/comments"
+      title="{{tpl:lang This category's comments Atom feed}}" class="feed">{{tpl:lang Comments feed}}</a>
+      </tpl:SysIf>
+      </p>
+    </tpl:CategoryIf>
+  </div>
+  
+  <tpl:CategoryFirstChildren>
+    <tpl:CategoriesHeader>
+      <div id="subcategories">
+      <h3>{{tpl:lang Subcategories}}</h3>
+      <ul>
+    </tpl:CategoriesHeader>
+    <li><a href="{{tpl:CategoryURL}}">{{tpl:CategoryTitle encode_html="1"}}</a></li>
+    <tpl:CategoriesFooter>
+      </ul>
+      </div>
+    </tpl:CategoriesFooter>
+  </tpl:CategoryFirstChildren>
+  
+  <tpl:Entries>
+    <div id="p{{tpl:EntryID}}" class="post {{tpl:EntryIfOdd}} {{tpl:EntryIfFirst}}" lang="{{tpl:EntryLang}}" xml:lang="{{tpl:EntryLang}}">
+    <!-- # New day date -->
+    <tpl:DateHeader><p class="day-date">{{tpl:EntryDate}}</p></tpl:DateHeader>
+    
+    <h2 class="post-title"><a
+    href="{{tpl:EntryURL}}">{{tpl:EntryTitle encode_html="1"}}</a></h2>
+    
+    <p class="post-info">{{tpl:lang By}} {{tpl:EntryAuthorLink}}
+    {{tpl:lang on}} {{tpl:EntryDate}}, {{tpl:EntryTime}}</p>
+    
+    <tpl:EntryTags>
+    <tpl:TagsHeader><ul class="post-tags"></tpl:TagsHeader>
+    <li><a href="{{tpl:TagURL}}">{{tpl:TagID}}</a></li>
+    <tpl:TagsFooter></ul></tpl:TagsFooter>
+    </tpl:EntryTags>
+    
+    <!-- # --BEHAVIOR-- publicEntryBeforeContent -->
+    {{tpl:SysBehavior behavior="publicEntryBeforeContent"}}
+    
+    <!-- # Entry with an excerpt -->
+    <tpl:EntryIf extended="1">
+      <div class="post-content">{{tpl:EntryExcerpt}}</div>
+      <p class="read-it"><a href="{{tpl:EntryURL}}"
+      title="{{tpl:lang Continue reading}} {{tpl:EntryTitle encode_html="1"}}">{{tpl:lang Continue
+      reading}}</a>...</p>
+    </tpl:EntryIf>
+    
+    <!-- # Entry without excerpt -->
+    <tpl:EntryIf extended="0">
+      <div class="post-content">{{tpl:EntryContent}}</div>
+    </tpl:EntryIf>
+    
+    <!-- # --BEHAVIOR-- publicEntryAfterContent -->
+    {{tpl:SysBehavior behavior="publicEntryAfterContent"}}
+    
+    <!-- # Number of comments, trackbacks and attachments -->
+    <tpl:EntryIf operator="or" show_comments="1" show_pings="1" has_attachment="1">
+      <p class="post-info-co">
+    </tpl:EntryIf>
+    <tpl:EntryIf show_comments="1">
+      <a href="{{tpl:EntryURL}}#comments" class="comment_count">{{tpl:EntryCommentCount}}</a>
+    </tpl:EntryIf>
+    <tpl:EntryIf show_pings="1">
+      <a href="{{tpl:EntryURL}}#pings" class="ping_count">{{tpl:EntryPingCount}}</a></tpl:EntryIf>
+    <tpl:EntryIf has_attachment="1">
+      <a href="{{tpl:EntryURL}}#attachments" class="attach_count">{{tpl:EntryAttachmentCount}}</a></tpl:EntryIf>
+    <tpl:EntryIf operator="or" show_comments="1" show_pings="1" has_attachment="1">
+      </p>
+    </tpl:EntryIf>
+    </div>
+    
+    <tpl:EntriesFooter>
+      <tpl:Pagination>
+        <p class="pagination"><tpl:PaginationIf end="0"><a href="{{tpl:PaginationURL offset="+1"}}" class="prev">&#171;
+        {{tpl:lang previous entries}}</a> - </tpl:PaginationIf>
+        {{tpl:lang page}} {{tpl:PaginationCurrent}} {{tpl:lang of}} {{tpl:PaginationCounter}}
+        <tpl:PaginationIf start="0"> - <a href="{{tpl:PaginationURL offset="-1"}}" class="next">{{tpl:lang next entries}}
+        &#187;</a></tpl:PaginationIf></p>
+      </tpl:Pagination>
+    </tpl:EntriesFooter>
+  </tpl:Entries>
+  </div>
+</div> <!-- End #main -->
+
+<div id="sidebar">
+  <div id="blognav">
+    {{tpl:Widgets type="nav"}}
+  </div> <!-- End #blognav -->
+  
+  <div id="blogextra">
+    {{tpl:Widgets type="extra"}}
+  </div> <!-- End #blogextra -->
+</div>
+
+</div> <!-- End #wrapper -->
+
+{{tpl:include src="_footer.html"}}
+</div> <!-- End #page -->
+</body>
+</html>
Index: inc/public/default-templates/legacy/home.html
===================================================================
--- inc/public/default-templates/legacy/home.html	(revision 2541)
+++ inc/public/default-templates/legacy/home.html	(revision 2541)
@@ -0,0 +1,144 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="{{tpl:BlogLanguage}}" lang="{{tpl:BlogLanguage}}">
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+  <meta name="ROBOTS" content="{{tpl:BlogMetaRobots}}" />
+  
+  <title>{{tpl:BlogName encode_html="1"}}<tpl:PaginationIf start="0"> - {{tpl:lang page}} {{tpl:PaginationCurrent}}</tpl:PaginationIf></title>
+  <meta name="description" lang="{{tpl:BlogLanguage}}" content="{{tpl:BlogDescription cut_string="180" encode_html="1"}}<tpl:PaginationIf start="0"> - {{tpl:lang page}} {{tpl:PaginationCurrent}}</tpl:PaginationIf>" />
+  <meta name="copyright" content="{{tpl:BlogCopyrightNotice encode_html="1"}}" />
+  <meta name="author" content="{{tpl:BlogEditor encode_html="1"}}" />
+  <meta name="date" scheme="W3CDTF" content="{{tpl:BlogUpdateDate iso8601="1"}}" />
+  
+  <link rel="schema.dc" href="http://purl.org/dc/elements/1.1/" />
+  <meta name="dc.title" lang="{{tpl:BlogLanguage}}" content="{{tpl:BlogName encode_html="1"}}<tpl:PaginationIf start="0"> - {{tpl:lang page}} {{tpl:PaginationCurrent}}</tpl:PaginationIf>" />
+  <meta name="dc.description" lang="{{tpl:BlogLanguage}}" content="{{tpl:BlogDescription encode_html="1"}}" />
+  <meta name="dc.language" content="{{tpl:BlogLanguage}}" />
+  <meta name="dc.publisher" content="{{tpl:BlogEditor encode_html="1"}}" />
+  <meta name="dc.rights" content="{{tpl:BlogCopyrightNotice encode_html="1"}}" />
+  <meta name="dc.date" scheme="W3CDTF" content="{{tpl:BlogUpdateDate iso8601="1"}}" />
+  <meta name="dc.type" content="text" />
+  <meta name="dc.format" content="text/html" />
+  
+  <link rel="contents" title="{{tpl:lang Archives}}" href="{{tpl:BlogArchiveURL}}" />
+  <tpl:Categories>
+  <link rel="section" href="{{tpl:CategoryURL}}" title="{{tpl:CategoryTitle encode_html="1"}}" />
+  </tpl:Categories>
+  
+  <tpl:Entries no_content="1">
+    <tpl:EntriesHeader>
+      <tpl:Pagination>
+        <tpl:PaginationIf end="0">
+        <link rel="prev" title="{{tpl:lang previous entries}}" href="{{tpl:PaginationURL offset="1"}}" />
+        </tpl:PaginationIf>
+        
+        <tpl:PaginationIf start="0">
+        <link rel="next" title="{{tpl:lang next entries}}" href="{{tpl:PaginationURL offset="-1"}}" />
+        </tpl:PaginationIf>
+      </tpl:Pagination>
+    </tpl:EntriesHeader>
+    
+    <link rel="chapter" href="{{tpl:EntryURL}}" title="{{tpl:EntryTitle encode_html="1"}}" />
+  </tpl:Entries>
+  
+  <link rel="alternate" type="application/atom+xml" title="Atom 1.0" href="{{tpl:BlogFeedURL type="atom"}}" />
+  <link rel="EditURI" type="application/rsd+xml" title="RSD" href="{{tpl:BlogRSDURL}}" />
+  <link rel="meta" type="application/xbel+xml" title="Blogroll" href="{{tpl:BlogrollXbelLink}}" />
+  
+  {{tpl:include src="_head.html"}}
+</head>
+
+<body class="dc-home">
+<div id="page">
+{{tpl:include src="_top.html"}}
+
+<div id="wrapper">
+
+<div id="main">
+  <div id="content">
+  <tpl:Entries>
+    <div id="p{{tpl:EntryID}}" class="post {{tpl:EntryIfOdd}} {{tpl:EntryIfFirst}}" lang="{{tpl:EntryLang}}" xml:lang="{{tpl:EntryLang}}">
+    <!-- # New day date -->
+    <tpl:DateHeader><p class="day-date">{{tpl:EntryDate}}</p></tpl:DateHeader>
+    
+    <h2 class="post-title"><a
+    href="{{tpl:EntryURL}}">{{tpl:EntryTitle encode_html="1"}}</a></h2>
+    
+    <p class="post-info">{{tpl:lang By}} {{tpl:EntryAuthorLink}}
+    {{tpl:lang on}} {{tpl:EntryDate}}, {{tpl:EntryTime}}
+    <tpl:EntryIf has_category="1">
+    - <a href="{{tpl:EntryCategoryURL}}">{{tpl:EntryCategory encode_html="1"}}</a>
+    </tpl:EntryIf>
+    </p>
+    
+    <tpl:EntryTags>
+    <tpl:TagsHeader><ul class="post-tags"></tpl:TagsHeader>
+    <li><a href="{{tpl:TagURL}}">{{tpl:TagID}}</a></li>
+    <tpl:TagsFooter></ul></tpl:TagsFooter>
+    </tpl:EntryTags>
+    
+    <!-- # --BEHAVIOR-- publicEntryBeforeContent -->
+    {{tpl:SysBehavior behavior="publicEntryBeforeContent"}}
+    
+    <!-- # Entry with an excerpt -->
+    <tpl:EntryIf extended="1">
+      <div class="post-content">{{tpl:EntryExcerpt}}</div>
+      <p class="read-it"><a href="{{tpl:EntryURL}}"
+      title="{{tpl:lang Continue reading}} {{tpl:EntryTitle encode_html="1"}}">{{tpl:lang Continue
+      reading}}</a>...</p>
+    </tpl:EntryIf>
+    
+    <!-- # Entry without excerpt -->
+    <tpl:EntryIf extended="0">
+      <div class="post-content">{{tpl:EntryContent}}</div>
+    </tpl:EntryIf>
+    
+    <!-- # --BEHAVIOR-- publicEntryAfterContent -->
+    {{tpl:SysBehavior behavior="publicEntryAfterContent"}}
+    
+    <!-- # Number of comments, trackbacks and attachments -->
+    <tpl:EntryIf operator="or" show_comments="1" show_pings="1" has_attachment="1">
+      <p class="post-info-co">
+    </tpl:EntryIf>
+    <tpl:EntryIf show_comments="1">
+      <a href="{{tpl:EntryURL}}#comments" class="comment_count">{{tpl:EntryCommentCount}}</a>
+    </tpl:EntryIf>
+    <tpl:EntryIf show_pings="1">
+      <a href="{{tpl:EntryURL}}#pings" class="ping_count">{{tpl:EntryPingCount}}</a></tpl:EntryIf>
+    <tpl:EntryIf has_attachment="1">
+      <a href="{{tpl:EntryURL}}#attachments" class="attach_count">{{tpl:EntryAttachmentCount}}</a></tpl:EntryIf>
+    <tpl:EntryIf operator="or" show_comments="1" show_pings="1" has_attachment="1">
+      </p>
+    </tpl:EntryIf>
+    </div>
+    
+    <tpl:EntriesFooter>
+      <tpl:Pagination>
+        <p class="pagination"><tpl:PaginationIf end="0"><a href="{{tpl:PaginationURL offset="+1"}}" class="prev">&#171;
+        {{tpl:lang previous entries}}</a> - </tpl:PaginationIf>
+        {{tpl:lang page}} {{tpl:PaginationCurrent}} {{tpl:lang of}} {{tpl:PaginationCounter}}
+        <tpl:PaginationIf start="0"> - <a href="{{tpl:PaginationURL offset="-1"}}" class="next">{{tpl:lang next entries}}
+        &#187;</a></tpl:PaginationIf></p>
+      </tpl:Pagination>
+    </tpl:EntriesFooter>
+  </tpl:Entries>
+  </div>
+</div> <!-- End #main -->
+
+<div id="sidebar">
+  <div id="blognav">
+    {{tpl:Widgets type="nav"}}
+  </div> <!-- End #blognav -->
+  
+  <div id="blogextra">
+    {{tpl:Widgets type="extra"}}
+  </div> <!-- End #blogextra -->
+</div>
+
+</div> <!-- End #wrapper -->
+
+{{tpl:include src="_footer.html"}}
+</div> <!-- End #page -->
+</body>
+</html>
Index: inc/public/default-templates/legacy/password-form.html
===================================================================
--- inc/public/default-templates/legacy/password-form.html	(revision 2541)
+++ inc/public/default-templates/legacy/password-form.html	(revision 2541)
@@ -0,0 +1,41 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+  <meta name="ROBOTS" content="NOARCHIVE,NOINDEX,NOFOLLOW" />
+  <title>{{tpl:lang Password needed}} - {{tpl:BlogName encode_html="1"}}</title>
+  
+  <style type="text/css">
+  body {
+  font: 0.8em Verdana,Arial,Geneva,sans-serif;
+  }
+  
+  form {
+  display : block;
+  width : 500px;
+  margin : 0 auto;
+  padding : 1em;
+  background : #eee;
+  }
+  
+  h2 { font : 140% Arial,Helvetica,sans-serif; margin : 0; }
+  
+  label { font-weight : bold; }
+  
+  input { border-width : 1px; }
+  </style>
+</head>
+
+<body>
+
+<form action="{{tpl:EntryURL}}" method="post">
+<h2>{{tpl:lang Password needed}}</h2>
+
+<p>{{tpl:lang You must give a password to access this area.}}</p>
+<p><label>{{tpl:lang Password:}} <input type="password" name="password" value="" /></label> <input type="submit" value="ok" /></p>
+
+</form>
+
+</body>
+</html>
Index: inc/public/default-templates/legacy/post.html
===================================================================
--- inc/public/default-templates/legacy/post.html	(revision 2541)
+++ inc/public/default-templates/legacy/post.html	(revision 2541)
@@ -0,0 +1,275 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="{{tpl:BlogLanguage}}" lang="{{tpl:BlogLanguage}}">
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+  <meta name="ROBOTS" content="{{tpl:BlogMetaRobots}}" />
+  
+  <title>{{tpl:EntryTitle encode_html="1"}} - {{tpl:BlogName encode_html="1"}}</title>
+  <meta name="description" lang="{{tpl:EntryLang}}" content="{{tpl:EntryContent full="1" encode_html="1" remove_html="1" cut_string="180"}}" />
+  <meta name="copyright" content="{{tpl:BlogCopyrightNotice encode_html="1"}}" />
+  <meta name="author" content="{{tpl:EntryAuthorCommonName encode_html="1"}}" />
+  <meta name="date" scheme="W3CDTF" content="{{tpl:EntryDate iso8601="1"}}" />
+  
+  <link rel="schema.dc" href="http://purl.org/dc/elements/1.1/" />
+  <meta name="dc.title" content="{{tpl:EntryTitle encode_html="1"}}" />
+  <meta name="dc.description" lang="{{tpl:EntryLang}}" content="{{tpl:EntryContent full="1" encode_html="1" remove_html="1" cut_string="180"}}" />
+  <meta name="dc.creator" content="{{tpl:EntryAuthorCommonName encode_html="1"}}" />
+  <meta name="dc.language" content="{{tpl:EntryLang}}" />
+  <meta name="dc.publisher" content="{{tpl:BlogEditor encode_html="1"}}" />
+  <meta name="dc.rights" content="{{tpl:BlogCopyrightNotice encode_html="1"}}" />
+  <meta name="dc.date" scheme="W3CDTF" content="{{tpl:EntryDate iso8601="1"}}" />
+  <meta name="dc.type" content="text" />
+  <meta name="dc.format" content="text/html" />
+  
+  <link rel="top" href="{{tpl:BlogURL}}" title="{{tpl:lang Home}}" />
+  <link rel="contents" href="{{tpl:BlogArchiveURL}}" title="{{tpl:lang Archives}}" />
+  <tpl:EntryIf pings_active="1"><link rel="pingback" href="{{tpl:BlogXMLRPCURL}}" /></tpl:EntryIf>
+  
+  <tpl:EntryNext><link rel="next" href="{{tpl:EntryURL}}"
+  title="{{tpl:EntryTitle encode_html="1"}}" /></tpl:EntryNext>
+  
+  <tpl:EntryPrevious><link rel="prev" href="{{tpl:EntryURL}}"
+  title="{{tpl:EntryTitle encode_html="1"}}" /></tpl:EntryPrevious>
+  
+  <link rel="alternate" type="application/atom+xml" title="Atom 1.0" href="{{tpl:BlogFeedURL type="atom"}}" />
+  
+  {{tpl:include src="_head.html"}}
+  
+  <script type="text/javascript" src="{{tpl:BlogThemeURL}}/../default/js/post.js"></script>
+  <script type="text/javascript">
+  //<![CDATA[
+  var post_remember_str = '{{tpl:lang Remember me on this blog}}';
+  //]]>
+  </script>
+</head>
+
+<body class="dc-post">
+<div id="page">
+{{tpl:EntryPingData}}
+
+{{tpl:include src="_top.html"}}
+
+<div id="wrapper">
+
+<div id="main">
+  <div id="content">
+  
+  <p id="navlinks">
+  <tpl:EntryPrevious><a href="{{tpl:EntryURL}}"
+  title="{{tpl:EntryTitle encode_html="1"}}" class="prev">&#171; {{tpl:EntryTitle encode_html="1"
+  cut_string="50"}}</a></tpl:EntryPrevious>
+  <tpl:EntryNext> <span>-</span> <a href="{{tpl:EntryURL}}"
+  title="{{tpl:EntryTitle encode_html="1"}}" class="next">{{tpl:EntryTitle encode_html="1"
+  cut_string="50"}} &#187;</a></tpl:EntryNext>
+  </p>
+  
+  <div id="p{{tpl:EntryID}}" class="post">
+    <h2 class="post-title">{{tpl:EntryTitle encode_html="1"}}</h2>
+    
+    <p class="post-info">{{tpl:lang By}} {{tpl:EntryAuthorLink}}
+    {{tpl:lang on}} {{tpl:EntryDate}}, {{tpl:EntryTime}}
+    <tpl:EntryIf has_category="1">
+    - <a href="{{tpl:EntryCategoryURL}}">{{tpl:EntryCategory encode_html="1"}}</a>
+    </tpl:EntryIf>
+    - <a href="{{tpl:EntryURL}}">{{tpl:lang Permalink}}</a>
+    </p>
+    
+    <tpl:EntryTags>
+    <tpl:TagsHeader><ul class="post-tags"></tpl:TagsHeader>
+    <li><a href="{{tpl:TagURL}}" rel="tag">{{tpl:TagID}}</a></li>
+    <tpl:TagsFooter></ul></tpl:TagsFooter>
+    </tpl:EntryTags>
+    
+    <!-- # --BEHAVIOR-- publicEntryBeforeContent -->
+    {{tpl:SysBehavior behavior="publicEntryBeforeContent"}}
+    
+    <!-- # Entry with an excerpt -->
+    <tpl:EntryIf extended="1">
+      <div class="post-excerpt">{{tpl:EntryExcerpt}}</div>
+    </tpl:EntryIf>
+    
+    <div class="post-content">{{tpl:EntryContent}}</div>
+    
+    <!-- # --BEHAVIOR-- publicEntryAfterContent -->
+    {{tpl:SysBehavior behavior="publicEntryAfterContent"}}
+  </div>
+  
+  <!-- # Attachments -->
+  <tpl:Attachments>
+    <tpl:AttachmentsHeader>
+      <div id="attachments">
+      <h3>{{tpl:lang Attachments}}</h3>
+      <ul>
+    </tpl:AttachmentsHeader>
+      <li class="{{tpl:AttachmentType}}">
+        <tpl:AttachmentIf is_mp3="1">
+          {{tpl:include src="_mp3_player.html"/}} - 
+        </tpl:AttachmentIf>
+        <tpl:AttachmentIf is_flv="1">
+	     {{tpl:include src="_flv_player.html"/}}
+	   </tpl:AttachmentIf>
+	   <tpl:AttachmentIf is_flv="0">
+	   	<a href="{{tpl:AttachmentURL}}"
+		title="{{tpl:AttachmentFileName}} ({{tpl:AttachmentSize}})">{{tpl:AttachmentTitle}}</a>
+        </tpl:AttachmentIf>
+      </li>
+    <tpl:AttachmentsFooter>
+      </ul>
+      </div>
+    </tpl:AttachmentsFooter>
+  </tpl:Attachments>
+ 
+  <!-- # Comments -->
+  <tpl:EntryIf show_comments="1">
+    <tpl:Comments>
+    <tpl:CommentsHeader>
+      <div id="comments">
+        <h3>{{tpl:lang Comments}}</h3>
+      <dl>
+    </tpl:CommentsHeader>
+      <dt id="c{{tpl:CommentID}}" class="{{tpl:CommentIfMe}} {{tpl:CommentIfOdd}} {{tpl:CommentIfFirst}}"><a
+      href="#c{{tpl:CommentID}}" class="comment-number">{{tpl:CommentOrderNumber}}.</a>
+      {{tpl:lang On}} {{tpl:CommentDate}}, {{tpl:CommentTime}}
+      {{tpl:lang by}} {{tpl:CommentAuthorLink}}</dt>
+      
+      <dd class="{{tpl:CommentIfMe}} {{tpl:CommentIfOdd}} {{tpl:CommentIfFirst}}">
+      <!-- # --BEHAVIOR-- publicCommentBeforeContent -->
+      {{tpl:SysBehavior behavior="publicCommentBeforeContent"}}
+      
+      {{tpl:CommentContent}}
+      
+      <!-- # --BEHAVIOR-- publicCommentAfterContent -->
+      {{tpl:SysBehavior behavior="publicCommentAfterContent"}}
+      </dd>
+    <tpl:CommentsFooter>
+      </dl>
+      </div>
+    </tpl:CommentsFooter>
+    </tpl:Comments>
+  </tpl:EntryIf>
+  
+  <tpl:EntryIf comments_active="1">    
+    <tpl:SysIfFormError>
+      <p class="error" id="pr">{{tpl:SysFormError}}</p>
+    </tpl:SysIfFormError>
+    
+    <tpl:SysIfCommentPublished>
+      <p class="message" id="pr">{{tpl:lang Your comment has been published.}}</p>
+    </tpl:SysIfCommentPublished>
+    
+    <tpl:SysIfCommentPending>
+      <p class="message" id="pr">{{tpl:lang Your comment has been submitted and
+      will be reviewed for publication.}}</p>
+    </tpl:SysIfCommentPending>
+    
+    <!-- # Comment form -->
+    <form action="{{tpl:EntryURL}}#pr" method="post" id="comment-form">
+      <tpl:IfCommentPreview>
+        <div id="pr">
+          <h3>{{tpl:lang Your comment}}</h3>
+          <dl>
+            <dd class="comment-preview">{{tpl:CommentPreviewContent}}</dd>
+          </dl>
+          <p class="buttons"><input type="submit" class="submit" value="{{tpl:lang send}}" /></p>
+        </div>
+      </tpl:IfCommentPreview>
+      
+      <h3>{{tpl:lang Add a comment}}</h3>
+      <fieldset>
+        <!-- # --BEHAVIOR-- publicCommentFormBeforeContent -->
+        {{tpl:SysBehavior behavior="publicCommentFormBeforeContent"}}
+        
+        <p class="field"><label for="c_name">{{tpl:lang Name or nickname}}&nbsp;:</label>
+        <input name="c_name" id="c_name" type="text" size="30" maxlength="255"
+        value="{{tpl:CommentPreviewName encode_html="1"}}" />
+        </p>
+        
+        <p class="field"><label for="c_mail">{{tpl:lang Email address}}&nbsp;:</label>
+        <input name="c_mail" id="c_mail" type="text" size="30" maxlength="255"
+        value="{{tpl:CommentPreviewEmail encode_html="1"}}" />
+        </p>
+        
+        <p class="field"><label for="c_site">{{tpl:lang Website}} ({{tpl:lang optional}})&nbsp;:</label>
+        <input name="c_site" id="c_site" type="text" size="30" maxlength="255"
+        value="{{tpl:CommentPreviewSite encode_html="1"}}" />
+        </p>
+        
+        <p style="display:none"><input name="f_mail" type="text" size="30"
+        maxlength="255" value="" /></p>
+        
+        <p class="field"><label for="c_content">{{tpl:lang Comment}}&nbsp;:</label>
+        <textarea name="c_content" id="c_content" cols="35"
+        rows="7">{{tpl:CommentPreviewContent raw="1" encode_html="1"}}</textarea>
+        </p>
+        <p class="form-help">{{tpl:CommentHelp}}</p>
+        
+        <!-- # --BEHAVIOR-- publicCommentFormAfterContent -->
+        {{tpl:SysBehavior behavior="publicCommentFormAfterContent"}}
+      </fieldset>
+      
+      <fieldset>
+        <p class="buttons"><input type="submit" class="preview" name="preview" value="{{tpl:lang preview}}" />
+        <tpl:IfCommentPreview><input type="submit" class="submit" value="{{tpl:lang send}}" /></tpl:IfCommentPreview></p>
+      </fieldset>
+    </form>
+  </tpl:EntryIf>
+  
+  <!-- # Trackbacks -->
+  <tpl:EntryIf show_pings="1">
+    <div id="pings">
+    <h3>{{tpl:lang They posted on the same topic}}</h3>
+    <tpl:Pings>
+      <tpl:PingsHeader>
+      <dl>
+      </tpl:PingsHeader>
+        <dt id="c{{tpl:PingID}}" class="{{tpl:PingIfOdd}} {{tpl:PingIfFirst}}"><a href="#c{{tpl:PingID}}"
+        class="ping-number">{{tpl:PingOrderNumber}}.</a>
+        {{tpl:lang On}} {{tpl:PingDate}}, {{tpl:PingTime}}
+        {{tpl:lang by}} {{tpl:PingBlogName encode_html="1"}}</dt>
+        
+        <dd class="{{tpl:PingIfOdd}} {{tpl:PingIfFirst}}">
+        <!-- # --BEHAVIOR-- publicPingBeforeContent -->
+        {{tpl:SysBehavior behavior="publicPingBeforeContent"}}
+        
+        <p><a href="{{tpl:PingAuthorURL}}"
+        {{tpl:PingNoFollow}}>{{tpl:PingTitle encode_html="1"}}</a></p>
+        {{tpl:PingContent}}
+        
+        <!-- # --BEHAVIOR-- publicPingAfterContent -->
+        {{tpl:SysBehavior behavior="publicPingAfterContent"}}
+        </dd>
+      <tpl:PingsFooter>
+      </dl>
+      </tpl:PingsFooter>
+    </tpl:Pings>
+    </div>
+  </tpl:EntryIf>
+  
+  <tpl:EntryIf pings_active="1">
+    <p id="ping-url">{{tpl:lang Trackback URL}}&nbsp;: {{tpl:EntryPingLink}}</p>
+  </tpl:EntryIf>
+  
+  <tpl:EntryIf operator="or" comments_active="1" pings_active="1">
+  <p id="comments-feed"><a class="feed" href="{{tpl:BlogFeedURL type="atom"}}/comments/{{tpl:EntryID}}"
+  title="{{tpl:lang This post's comments Atom feed}}">{{tpl:lang This post's comments feed}}</a></p>
+  </tpl:EntryIf>
+  </div>
+</div> <!-- End #main -->
+
+<div id="sidebar">
+  <div id="blognav">
+    {{tpl:Widgets type="nav"}}
+  </div> <!-- End #blognav -->
+  
+  <div id="blogextra">
+    {{tpl:Widgets type="extra"}}
+  </div> <!-- End #blogextra -->
+</div>
+
+</div> <!-- End #wrapper -->
+
+{{tpl:include src="_footer.html"}}
+</div> <!-- End #page -->
+</body>
+</html>
Index: inc/public/default-templates/legacy/rss2-comments.xml
===================================================================
--- inc/public/default-templates/legacy/rss2-comments.xml	(revision 2541)
+++ inc/public/default-templates/legacy/rss2-comments.xml	(revision 2541)
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<?xml-stylesheet title="XSL formatting" type="text/xsl" href="{{tpl:BlogURL}}feed/rss2/xslt" ?>
+<rss version="2.0"
+  xmlns:dc="http://purl.org/dc/elements/1.1/"
+  xmlns:content="http://purl.org/rss/1.0/modules/content/"
+  xmlns:atom="http://www.w3.org/2005/Atom">
+<channel>
+  <title>{{tpl:BlogName encode_xml="1"}}{{tpl:SysFeedSubtitle encode_xml="1"}}
+  - {{tpl:lang Comments}}</title>
+  <link>{{tpl:BlogURL}}</link>
+  <atom:link href="{{tpl:SysSelfURI}}" rel="self" type="application/rss+xml"/>
+  <description>{{tpl:BlogDescription encode_xml="1"}}</description>
+  <language>{{tpl:BlogLanguage}}</language>
+  <pubDate>{{tpl:BlogUpdateDate rfc822="1"}}</pubDate>
+  <copyright>{{tpl:BlogCopyrightNotice encode_xml="1"}}</copyright>
+  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
+  <generator>Dotclear</generator>
+  
+  <tpl:Comments order="desc" with_pings="1">
+  
+  <tpl:CommentIf is_ping="1">
+  <item>
+    <title>[ping] {{tpl:PingEntryTitle encode_xml="1"}} - {{tpl:PingBlogName encode_xml="1"}}</title>
+    <link>{{tpl:PingPostURL encode_xml="1"}}#c{{tpl:PingID}}</link>
+    <guid isPermaLink="false">{{tpl:PingFeedID}}</guid>
+    <pubDate>{{tpl:PingDate rfc822="1"}}</pubDate>
+    <dc:creator>{{tpl:PingBlogName encode_xml="1"}}</dc:creator>
+    
+    <description>&lt;p&gt;&lt;a href="{{tpl:PingAuthorURL encode_xml="1"}}"&gt;{{tpl:PingTitle encode_xml="1"}}&lt;/a&gt;&lt;/p&gt;
+    {{tpl:PingContent encode_xml="1"}}</description>
+  </item>
+  </tpl:CommentIf>
+  
+  <tpl:CommentIf is_ping="0">
+  <item>
+    <title>{{tpl:CommentEntryTitle encode_xml="1"}} - {{tpl:CommentAuthor encode_xml="1"}}</title>
+    <link>{{tpl:CommentPostURL encode_xml="1"}}#c{{tpl:CommentID}}</link>
+    <guid isPermaLink="false">{{tpl:CommentFeedID}}</guid>
+    <pubDate>{{tpl:CommentDate rfc822="1"}}</pubDate>
+    <dc:creator>{{tpl:CommentAuthor encode_xml="1"}}</dc:creator>
+    
+    <description>{{tpl:CommentContent absolute_urls="1" encode_xml="1"}}</description>
+  </item>
+  </tpl:CommentIf>
+  </tpl:Comments>
+  
+</channel>
+</rss>
Index: inc/public/default-templates/legacy/rss2.xml
===================================================================
--- inc/public/default-templates/legacy/rss2.xml	(revision 2541)
+++ inc/public/default-templates/legacy/rss2.xml	(revision 2541)
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<?xml-stylesheet title="XSL formatting" type="text/xsl" href="{{tpl:BlogURL}}feed/rss2/xslt" ?>
+<rss version="2.0"
+  xmlns:dc="http://purl.org/dc/elements/1.1/"
+  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
+  xmlns:content="http://purl.org/rss/1.0/modules/content/"
+  xmlns:atom="http://www.w3.org/2005/Atom">
+<channel>
+  <title>{{tpl:BlogName encode_xml="1"}}{{tpl:SysFeedSubtitle encode_xml="1"}}</title>
+  <link>{{tpl:BlogURL}}</link>
+  <atom:link href="{{tpl:SysSelfURI}}" rel="self" type="application/rss+xml"/>
+  <description>{{tpl:BlogDescription encode_xml="1"}}</description>
+  <language>{{tpl:BlogLanguage}}</language>
+  <pubDate>{{tpl:BlogUpdateDate rfc822="1"}}</pubDate>
+  <copyright>{{tpl:BlogCopyrightNotice encode_xml="1"}}</copyright>
+  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
+  <generator>Dotclear</generator>
+  
+  <tpl:Entries>
+  
+  <item>
+    <title>{{tpl:EntryTitle encode_xml="1"}}</title>
+    <link>{{tpl:EntryURL}}</link>
+    <guid isPermaLink="false">{{tpl:EntryFeedID}}</guid>
+    <pubDate>{{tpl:EntryDate rfc822="1"}}</pubDate>
+    <dc:creator>{{tpl:EntryAuthorCommonName encode_xml="1"}}</dc:creator>
+    <tpl:EntryIf has_category="1">
+    <category>{{tpl:EntryCategory encode_html="1"}}</category>
+    </tpl:EntryIf>
+    <tpl:EntryTags><category>{{tpl:TagID}}</category></tpl:EntryTags>
+    
+    <description>{{tpl:EntryExcerpt absolute_urls="1" encode_xml="1"}}
+    {{tpl:EntryContent absolute_urls="1" encode_xml="1"}}</description>
+    
+    <tpl:Attachments>
+      <enclosure url="{{tpl:AttachmentURL}}"
+      length="{{tpl:AttachmentSize full="1"}}" type="{{tpl:AttachmentMimeType}}" />
+    </tpl:Attachments>
+    
+    <tpl:EntryIf comments_active="1">
+      <comments>{{tpl:EntryURL}}#comment-form</comments>
+      <wfw:comment>{{tpl:EntryURL}}#comment-form</wfw:comment>
+      <wfw:commentRss>{{tpl:BlogFeedURL}}/comments/{{tpl:EntryID}}</wfw:commentRss>
+    </tpl:EntryIf>
+  </item>
+  </tpl:Entries>
+  
+</channel>
+</rss>
Index: inc/public/default-templates/legacy/rss2.xsl
===================================================================
--- inc/public/default-templates/legacy/rss2.xsl	(revision 2541)
+++ inc/public/default-templates/legacy/rss2.xsl	(revision 2541)
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0"
+xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+xmlns:content="http://purl.org/rss/1.0/modules/content/"
+xmlns="http://www.w3.org/1999/xhtml">
+
+<xsl:output method="html"/>
+
+<xsl:template match="/">
+<html>
+  <head>
+    <title>{{tpl:lang Subscribe to}} <xsl:value-of select="/rss/channel/title"/></title>
+    <style type="text/css">
+    <![CDATA[
+    body {
+      font: 80% Verdana,Arial,sans-serif;
+      margin: 20px 0;
+      padding: 0 0;
+      background: #fff;
+      color: #000;
+    }
+    a { color: #039; }
+    h1, h2 { font-family: Arial,sans-serif; }
+    h1 { font-size: 160%; margin: 0; }
+    h2 { font-size: 140%; font-weight: bold; margin: 0.5em 0 0.2em 0; }
+    h2 a { text-decoration: none; }
+    p { margin: 0 0 0.5em 0; }
+    #page {
+      margin: 0 80px;
+    }
+    #top {
+      background: #036;
+      padding : 1em;
+      color: #fff;
+    }
+    #top a {
+      color: #fff;
+      text-decoration: none;
+    }
+    #what {
+      padding: 1em;
+      background: #eee;
+      border-bottom: 1px solid #000;
+      font-size: 80%;
+    }
+    #what p {
+      margin: 0 0 0.5em 0;
+    }
+    #footer {
+      border-top: 1px solid #000;
+    }
+    #items {
+      background: #fff;
+      color: inherit;
+    }
+    #items div {
+      margin: 0 0 1em 0;
+    }
+    ]]>
+    </style>
+    <script type="text/javascript"><![CDATA[
+    window.onload = function() {
+      document.getElementById('feedurl').value = window.location.href;
+      
+      // Ugly but works ;)
+      var c = document.getElementsByTagName('div');
+      var t = '';
+      for (var i=0; c.length-i != 0; i++) {
+        if (c[i].className == 'item-content') {
+          if (c[i].textContent) {
+            t = c[i].textContent;
+          } else if (c[i].innerText) {
+            t = c[i].innerText;
+          } else {
+            t = '';
+          }
+          
+          if (t) { c[i].innerHTML = t; }
+        }
+      }
+    };
+    ]]></script>
+  </head>
+  <body>
+    <div id="page">
+      <div id="top">
+        <h1><a href="{/rss/channel/link}"><xsl:value-of select="/rss/channel/title"/></a></h1>
+        <p><xsl:value-of select="/rss/channel/description"/></p>
+      </div>
+      <div id="what">
+      <h3>{{tpl:lang What is an RSS feed?}}</h3>
+      <p>{{tpl:lang RSS feed is a free blog summary. It provides content
+      (either posts or comments) or  summaries of content, together with links
+      to the full versions, and other metadata. The last published items may
+      then be read by your favorite RSS
+      <a href="http://en.wikipedia.org/wiki/Aggregator">aggregator</a>.}}</p>
+      <h3>{{tpl:lang Subscribe}}</h3>
+      <p>{{tpl:lang Simply copy the following URL into your aggregator:}}</p>
+      <p><input type="text" size="60" value="" id="feedurl" /></p>
+      </div>
+      <div id="items">
+        <xsl:apply-templates select="//item"/>
+      </div>
+      <div id="footer">
+        <p><xsl:value-of select="/rss/channel/copyright"/></p>
+      </div>
+    </div>
+  </body>
+</html>
+</xsl:template>
+
+<!-- Item template -->
+<xsl:template match="item">
+  <div>
+    <h2><a href="{link}"><xsl:value-of select="title"/></a></h2>
+    <div class="item-content"><xsl:value-of select="description" /></div>
+  </div>
+</xsl:template>
+
+</xsl:stylesheet>
Index: inc/public/default-templates/legacy/search.html
===================================================================
--- inc/public/default-templates/legacy/search.html	(revision 2541)
+++ inc/public/default-templates/legacy/search.html	(revision 2541)
@@ -0,0 +1,152 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="{{tpl:BlogLanguage}}" lang="{{tpl:BlogLanguage}}">
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+  <meta name="ROBOTS" content="{{tpl:BlogMetaRobots robots="NOINDEX,NOARCHIVE"}}" />
+  
+  <title>{{tpl:lang Search}} - {{tpl:SysSearchString encode_html="1"}} - {{tpl:BlogName encode_html="1"}}<tpl:PaginationIf start="0"> - {{tpl:lang page}} {{tpl:PaginationCurrent}}</tpl:PaginationIf></title>
+  <meta name="copyright" content="{{tpl:BlogCopyrightNotice encode_html="1"}}" />
+  <meta name="author" content="{{tpl:BlogEditor encode_html="1"}}" />
+  <meta name="date" scheme="W3CDTF" content="{{tpl:BlogUpdateDate iso8601="1"}}" />
+  
+  <link rel="schema.dc" href="http://purl.org/dc/elements/1.1/" />
+  <meta name="dc.title" lang="{{tpl:BlogLanguage}}" content="{{tpl:lang Search}} - {{tpl:SysSearchString encode_html="1"}} - {{tpl:BlogName encode_html="1"}}<tpl:PaginationIf start="0"> - {{tpl:lang page}} {{tpl:PaginationCurrent}}</tpl:PaginationIf>" />
+  <meta name="dc.language" content="{{tpl:BlogLanguage}}" />
+  <meta name="dc.publisher" content="{{tpl:BlogEditor encode_html="1"}}" />
+  <meta name="dc.rights" content="{{tpl:BlogCopyrightNotice encode_html="1"}}" />
+  <meta name="dc.date" scheme="W3CDTF" content="{{tpl:BlogUpdateDate iso8601="1"}}" />
+  <meta name="dc.type" content="text" />
+  <meta name="dc.format" content="text/html" />
+  
+  <link rel="top" href="{{tpl:BlogURL}}" title="{{tpl:lang Home}}" />
+  <link rel="contents" href="{{tpl:BlogArchiveURL}}" title="{{tpl:lang Archives}}" />
+  
+  <tpl:Entries no_content="1">
+    <tpl:EntriesHeader>
+      <tpl:Pagination>
+        <tpl:PaginationIf end="0">
+        <link rel="prev" title="{{tpl:lang previous entries}}" href="{{tpl:PaginationURL offset="1"}}" />
+        </tpl:PaginationIf>
+        
+        <tpl:PaginationIf start="0">
+        <link rel="next" title="{{tpl:lang next entries}}" href="{{tpl:PaginationURL offset="-1"}}" />
+        </tpl:PaginationIf>
+      </tpl:Pagination>
+    </tpl:EntriesHeader>
+    
+    <link rel="chapter" href="{{tpl:EntryURL}}" title="{{tpl:EntryTitle encode_html="1"}}" />
+  </tpl:Entries>
+  
+  <link rel="meta" type="application/xbel+xml" title="Blogroll" href="{{tpl:BlogrollXbelLink}}" />
+  
+  {{tpl:include src="_head.html"}}
+</head>
+
+<body class="dc-search">
+<div id="page">
+{{tpl:include src="_top.html"}}
+
+<div id="wrapper">
+
+<div id="main">
+  <div id="content">
+  
+  <div id="content-info">
+    <h2>{{tpl:lang Search}}</h2>
+    <tpl:SysIf search_count="==0">
+      <p>{{tpl:SysSearchString encode_html="1" string="Your search for <em>%1$s</em> returned no result."}}</p>
+    </tpl:SysIf>
+    <tpl:SysIf search_count="==1">
+      <p>{{tpl:SysSearchString encode_html="1" string="Your search for <em>%1$s</em> returned <strong>%2$s</strong> result."}}</p>
+    </tpl:SysIf>
+    <tpl:SysIf search_count="&gt;1">
+      <p>{{tpl:SysSearchString encode_html="1" string="Your search for <em>%1$s</em> returned <strong>%2$s</strong> results."}}</p>
+    </tpl:SysIf>
+  </div>
+  
+  <tpl:Entries>
+    <div id="p{{tpl:EntryID}}" class="post {{tpl:EntryIfOdd}} {{tpl:EntryIfFirst}}" lang="{{tpl:EntryLang}}" xml:lang="{{tpl:EntryLang}}">
+    <!-- # New day date -->
+    <tpl:DateHeader><p class="day-date">{{tpl:EntryDate}}</p></tpl:DateHeader>
+    
+    <h2 class="post-title"><a
+    href="{{tpl:EntryURL}}">{{tpl:EntryTitle encode_html="1"}}</a></h2>
+    
+    <p class="post-info">{{tpl:lang By}} {{tpl:EntryAuthorLink}}
+    {{tpl:lang on}} {{tpl:EntryDate}}, {{tpl:EntryTime}}
+    <tpl:EntryIf has_category="1">
+    - <a href="{{tpl:EntryCategoryURL}}">{{tpl:EntryCategory encode_html="1"}}</a>
+    </tpl:EntryIf>
+    </p>
+    
+    <tpl:EntryTags>
+    <tpl:TagsHeader><ul class="post-tags"></tpl:TagsHeader>
+    <li><a href="{{tpl:TagURL}}">{{tpl:TagID}}</a></li>
+    <tpl:TagsFooter></ul></tpl:TagsFooter>
+    </tpl:EntryTags>
+    
+    <!-- # --BEHAVIOR-- publicEntryBeforeContent -->
+    {{tpl:SysBehavior behavior="publicEntryBeforeContent"}}
+    
+    <!-- # Entry with an excerpt -->
+    <tpl:EntryIf extended="1">
+      <div class="post-content">{{tpl:EntryExcerpt}}</div>
+      <p class="read-it"><a href="{{tpl:EntryURL}}"
+      title="{{tpl:lang Continue reading}} {{tpl:EntryTitle encode_html="1"}}">{{tpl:lang Continue
+      reading}}</a>...</p>
+    </tpl:EntryIf>
+    
+    <!-- # Entry without excerpt -->
+    <tpl:EntryIf extended="0">
+      <div class="post-content">{{tpl:EntryContent}}</div>
+    </tpl:EntryIf>
+    
+    <!-- # --BEHAVIOR-- publicEntryAfterContent -->
+    {{tpl:SysBehavior behavior="publicEntryAfterContent"}}
+    
+    <!-- # Number of comments, trackbacks and attachments -->
+    <tpl:EntryIf operator="or" show_comments="1" show_pings="1" has_attachment="1">
+      <p class="post-info-co">
+    </tpl:EntryIf>
+    <tpl:EntryIf show_comments="1">
+      <a href="{{tpl:EntryURL}}#comments" class="comment_count">{{tpl:EntryCommentCount}}</a>
+    </tpl:EntryIf>
+    <tpl:EntryIf show_pings="1">
+      <a href="{{tpl:EntryURL}}#pings" class="ping_count">{{tpl:EntryPingCount}}</a></tpl:EntryIf>
+    <tpl:EntryIf has_attachment="1">
+      <a href="{{tpl:EntryURL}}#attachments" class="attach_count">{{tpl:EntryAttachmentCount}}</a></tpl:EntryIf>
+    <tpl:EntryIf operator="or" show_comments="1" show_pings="1" has_attachment="1">
+      </p>
+    </tpl:EntryIf>
+    </div>
+    
+    <tpl:EntriesFooter>
+      <tpl:Pagination>
+        <p class="pagination"><tpl:PaginationIf end="0"><a href="{{tpl:PaginationURL offset="+1"}}" class="prev">&#171;
+        {{tpl:lang previous entries}}</a> - </tpl:PaginationIf>
+        {{tpl:lang page}} {{tpl:PaginationCurrent}} {{tpl:lang of}} {{tpl:PaginationCounter}}
+        <tpl:PaginationIf start="0"> - <a href="{{tpl:PaginationURL offset="-1"}}" class="next">{{tpl:lang next entries}}
+        &#187;</a></tpl:PaginationIf></p>
+      </tpl:Pagination>
+    </tpl:EntriesFooter>
+  </tpl:Entries>
+  </div>
+</div> <!-- End #main -->
+
+<div id="sidebar">
+  <div id="blognav">
+    {{tpl:Widgets type="nav"}}
+  </div> <!-- End #blognav -->
+  
+  <div id="blogextra">
+    {{tpl:Widgets type="extra"}}
+  </div> <!-- End #blogextra -->
+</div>
+
+</div> <!-- End #wrapper -->
+
+{{tpl:include src="_footer.html"}}
+</div> <!-- End #page -->
+</body>
+</html>
Index: inc/public/default-templates/legacy/user_head.html
===================================================================
--- inc/public/default-templates/legacy/user_head.html	(revision 2541)
+++ inc/public/default-templates/legacy/user_head.html	(revision 2541)
@@ -0,0 +1,1 @@
+<!-- # This template is included at the end of _head.html template -->
Index: nc/public/default-templates/password-form.html
===================================================================
--- inc/public/default-templates/password-form.html	(revision 454)
+++ 	(revision )
@@ -1,41 +1,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
-  <meta name="ROBOTS" content="NOARCHIVE,NOINDEX,NOFOLLOW" />
-  <title>{{tpl:lang Password needed}} - {{tpl:BlogName encode_html="1"}}</title>
-  
-  <style type="text/css">
-  body {
-  font: 0.8em Verdana,Arial,Geneva,sans-serif;
-  }
-  
-  form {
-  display : block;
-  width : 500px;
-  margin : 0 auto;
-  padding : 1em;
-  background : #eee;
-  }
-  
-  h2 { font : 140% Arial,Helvetica,sans-serif; margin : 0; }
-  
-  label { font-weight : bold; }
-  
-  input { border-width : 1px; }
-  </style>
-</head>
-
-<body>
-
-<form action="{{tpl:EntryURL}}" method="post">
-<h2>{{tpl:lang Password needed}}</h2>
-
-<p>{{tpl:lang You must give a password to access this area.}}</p>
-<p><label>{{tpl:lang Password:}} <input type="password" name="password" value="" /></label> <input type="submit" value="ok" /></p>
-
-</form>
-
-</body>
-</html>
Index: nc/public/default-templates/post.html
===================================================================
--- inc/public/default-templates/post.html	(revision 1674)
+++ 	(revision )
@@ -1,275 +1,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="{{tpl:BlogLanguage}}" lang="{{tpl:BlogLanguage}}">
-<head>
-  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
-  <meta name="ROBOTS" content="{{tpl:BlogMetaRobots}}" />
-  
-  <title>{{tpl:EntryTitle encode_html="1"}} - {{tpl:BlogName encode_html="1"}}</title>
-  <meta name="description" lang="{{tpl:EntryLang}}" content="{{tpl:EntryContent full="1" encode_html="1" remove_html="1" cut_string="180"}}" />
-  <meta name="copyright" content="{{tpl:BlogCopyrightNotice encode_html="1"}}" />
-  <meta name="author" content="{{tpl:EntryAuthorCommonName encode_html="1"}}" />
-  <meta name="date" scheme="W3CDTF" content="{{tpl:EntryDate iso8601="1"}}" />
-  
-  <link rel="schema.dc" href="http://purl.org/dc/elements/1.1/" />
-  <meta name="dc.title" content="{{tpl:EntryTitle encode_html="1"}}" />
-  <meta name="dc.description" lang="{{tpl:EntryLang}}" content="{{tpl:EntryContent full="1" encode_html="1" remove_html="1" cut_string="180"}}" />
-  <meta name="dc.creator" content="{{tpl:EntryAuthorCommonName encode_html="1"}}" />
-  <meta name="dc.language" content="{{tpl:EntryLang}}" />
-  <meta name="dc.publisher" content="{{tpl:BlogEditor encode_html="1"}}" />
-  <meta name="dc.rights" content="{{tpl:BlogCopyrightNotice encode_html="1"}}" />
-  <meta name="dc.date" scheme="W3CDTF" content="{{tpl:EntryDate iso8601="1"}}" />
-  <meta name="dc.type" content="text" />
-  <meta name="dc.format" content="text/html" />
-  
-  <link rel="top" href="{{tpl:BlogURL}}" title="{{tpl:lang Home}}" />
-  <link rel="contents" href="{{tpl:BlogArchiveURL}}" title="{{tpl:lang Archives}}" />
-  <tpl:EntryIf pings_active="1"><link rel="pingback" href="{{tpl:BlogXMLRPCURL}}" /></tpl:EntryIf>
-  
-  <tpl:EntryNext><link rel="next" href="{{tpl:EntryURL}}"
-  title="{{tpl:EntryTitle encode_html="1"}}" /></tpl:EntryNext>
-  
-  <tpl:EntryPrevious><link rel="prev" href="{{tpl:EntryURL}}"
-  title="{{tpl:EntryTitle encode_html="1"}}" /></tpl:EntryPrevious>
-  
-  <link rel="alternate" type="application/atom+xml" title="Atom 1.0" href="{{tpl:BlogFeedURL type="atom"}}" />
-  
-  {{tpl:include src="_head.html"}}
-  
-  <script type="text/javascript" src="{{tpl:BlogThemeURL}}/../default/js/post.js"></script>
-  <script type="text/javascript">
-  //<![CDATA[
-  var post_remember_str = '{{tpl:lang Remember me on this blog}}';
-  //]]>
-  </script>
-</head>
-
-<body class="dc-post">
-<div id="page">
-{{tpl:EntryPingData}}
-
-{{tpl:include src="_top.html"}}
-
-<div id="wrapper">
-
-<div id="main">
-  <div id="content">
-  
-  <p id="navlinks">
-  <tpl:EntryPrevious><a href="{{tpl:EntryURL}}"
-  title="{{tpl:EntryTitle encode_html="1"}}" class="prev">&#171; {{tpl:EntryTitle encode_html="1"
-  cut_string="50"}}</a></tpl:EntryPrevious>
-  <tpl:EntryNext> <span>-</span> <a href="{{tpl:EntryURL}}"
-  title="{{tpl:EntryTitle encode_html="1"}}" class="next">{{tpl:EntryTitle encode_html="1"
-  cut_string="50"}} &#187;</a></tpl:EntryNext>
-  </p>
-  
-  <div id="p{{tpl:EntryID}}" class="post">
-    <h2 class="post-title">{{tpl:EntryTitle encode_html="1"}}</h2>
-    
-    <p class="post-info">{{tpl:lang By}} {{tpl:EntryAuthorLink}}
-    {{tpl:lang on}} {{tpl:EntryDate}}, {{tpl:EntryTime}}
-    <tpl:EntryIf has_category="1">
-    - <a href="{{tpl:EntryCategoryURL}}">{{tpl:EntryCategory encode_html="1"}}</a>
-    </tpl:EntryIf>
-    - <a href="{{tpl:EntryURL}}">{{tpl:lang Permalink}}</a>
-    </p>
-    
-    <tpl:EntryTags>
-    <tpl:TagsHeader><ul class="post-tags"></tpl:TagsHeader>
-    <li><a href="{{tpl:TagURL}}" rel="tag">{{tpl:TagID}}</a></li>
-    <tpl:TagsFooter></ul></tpl:TagsFooter>
-    </tpl:EntryTags>
-    
-    <!-- # --BEHAVIOR-- publicEntryBeforeContent -->
-    {{tpl:SysBehavior behavior="publicEntryBeforeContent"}}
-    
-    <!-- # Entry with an excerpt -->
-    <tpl:EntryIf extended="1">
-      <div class="post-excerpt">{{tpl:EntryExcerpt}}</div>
-    </tpl:EntryIf>
-    
-    <div class="post-content">{{tpl:EntryContent}}</div>
-    
-    <!-- # --BEHAVIOR-- publicEntryAfterContent -->
-    {{tpl:SysBehavior behavior="publicEntryAfterContent"}}
-  </div>
-  
-  <!-- # Attachments -->
-  <tpl:Attachments>
-    <tpl:AttachmentsHeader>
-      <div id="attachments">
-      <h3>{{tpl:lang Attachments}}</h3>
-      <ul>
-    </tpl:AttachmentsHeader>
-      <li class="{{tpl:AttachmentType}}">
-        <tpl:AttachmentIf is_mp3="1">
-          {{tpl:include src="_mp3_player.html"/}} - 
-        </tpl:AttachmentIf>
-        <tpl:AttachmentIf is_flv="1">
-	     {{tpl:include src="_flv_player.html"/}}
-	   </tpl:AttachmentIf>
-	   <tpl:AttachmentIf is_flv="0">
-	   	<a href="{{tpl:AttachmentURL}}"
-		title="{{tpl:AttachmentFileName}} ({{tpl:AttachmentSize}})">{{tpl:AttachmentTitle}}</a>
-        </tpl:AttachmentIf>
-      </li>
-    <tpl:AttachmentsFooter>
-      </ul>
-      </div>
-    </tpl:AttachmentsFooter>
-  </tpl:Attachments>
- 
-  <!-- # Comments -->
-  <tpl:EntryIf show_comments="1">
-    <tpl:Comments>
-    <tpl:CommentsHeader>
-      <div id="comments">
-        <h3>{{tpl:lang Comments}}</h3>
-      <dl>
-    </tpl:CommentsHeader>
-      <dt id="c{{tpl:CommentID}}" class="{{tpl:CommentIfMe}} {{tpl:CommentIfOdd}} {{tpl:CommentIfFirst}}"><a
-      href="#c{{tpl:CommentID}}" class="comment-number">{{tpl:CommentOrderNumber}}.</a>
-      {{tpl:lang On}} {{tpl:CommentDate}}, {{tpl:CommentTime}}
-      {{tpl:lang by}} {{tpl:CommentAuthorLink}}</dt>
-      
-      <dd class="{{tpl:CommentIfMe}} {{tpl:CommentIfOdd}} {{tpl:CommentIfFirst}}">
-      <!-- # --BEHAVIOR-- publicCommentBeforeContent -->
-      {{tpl:SysBehavior behavior="publicCommentBeforeContent"}}
-      
-      {{tpl:CommentContent}}
-      
-      <!-- # --BEHAVIOR-- publicCommentAfterContent -->
-      {{tpl:SysBehavior behavior="publicCommentAfterContent"}}
-      </dd>
-    <tpl:CommentsFooter>
-      </dl>
-      </div>
-    </tpl:CommentsFooter>
-    </tpl:Comments>
-  </tpl:EntryIf>
-  
-  <tpl:EntryIf comments_active="1">    
-    <tpl:SysIfFormError>
-      <p class="error" id="pr">{{tpl:SysFormError}}</p>
-    </tpl:SysIfFormError>
-    
-    <tpl:SysIfCommentPublished>
-      <p class="message" id="pr">{{tpl:lang Your comment has been published.}}</p>
-    </tpl:SysIfCommentPublished>
-    
-    <tpl:SysIfCommentPending>
-      <p class="message" id="pr">{{tpl:lang Your comment has been submitted and
-      will be reviewed for publication.}}</p>
-    </tpl:SysIfCommentPending>
-    
-    <!-- # Comment form -->
-    <form action="{{tpl:EntryURL}}#pr" method="post" id="comment-form">
-      <tpl:IfCommentPreview>
-        <div id="pr">
-          <h3>{{tpl:lang Your comment}}</h3>
-          <dl>
-            <dd class="comment-preview">{{tpl:CommentPreviewContent}}</dd>
-          </dl>
-          <p class="buttons"><input type="submit" class="submit" value="{{tpl:lang send}}" /></p>
-        </div>
-      </tpl:IfCommentPreview>
-      
-      <h3>{{tpl:lang Add a comment}}</h3>
-      <fieldset>
-        <!-- # --BEHAVIOR-- publicCommentFormBeforeContent -->
-        {{tpl:SysBehavior behavior="publicCommentFormBeforeContent"}}
-        
-        <p class="field"><label for="c_name">{{tpl:lang Name or nickname}}&nbsp;:</label>
-        <input name="c_name" id="c_name" type="text" size="30" maxlength="255"
-        value="{{tpl:CommentPreviewName encode_html="1"}}" />
-        </p>
-        
-        <p class="field"><label for="c_mail">{{tpl:lang Email address}}&nbsp;:</label>
-        <input name="c_mail" id="c_mail" type="text" size="30" maxlength="255"
-        value="{{tpl:CommentPreviewEmail encode_html="1"}}" />
-        </p>
-        
-        <p class="field"><label for="c_site">{{tpl:lang Website}} ({{tpl:lang optional}})&nbsp;:</label>
-        <input name="c_site" id="c_site" type="text" size="30" maxlength="255"
-        value="{{tpl:CommentPreviewSite encode_html="1"}}" />
-        </p>
-        
-        <p style="display:none"><input name="f_mail" type="text" size="30"
-        maxlength="255" value="" /></p>
-        
-        <p class="field"><label for="c_content">{{tpl:lang Comment}}&nbsp;:</label>
-        <textarea name="c_content" id="c_content" cols="35"
-        rows="7">{{tpl:CommentPreviewContent raw="1" encode_html="1"}}</textarea>
-        </p>
-        <p class="form-help">{{tpl:CommentHelp}}</p>
-        
-        <!-- # --BEHAVIOR-- publicCommentFormAfterContent -->
-        {{tpl:SysBehavior behavior="publicCommentFormAfterContent"}}
-      </fieldset>
-      
-      <fieldset>
-        <p class="buttons"><input type="submit" class="preview" name="preview" value="{{tpl:lang preview}}" />
-        <tpl:IfCommentPreview><input type="submit" class="submit" value="{{tpl:lang send}}" /></tpl:IfCommentPreview></p>
-      </fieldset>
-    </form>
-  </tpl:EntryIf>
-  
-  <!-- # Trackbacks -->
-  <tpl:EntryIf show_pings="1">
-    <div id="pings">
-    <h3>{{tpl:lang They posted on the same topic}}</h3>
-    <tpl:Pings>
-      <tpl:PingsHeader>
-      <dl>
-      </tpl:PingsHeader>
-        <dt id="c{{tpl:PingID}}" class="{{tpl:PingIfOdd}} {{tpl:PingIfFirst}}"><a href="#c{{tpl:PingID}}"
-        class="ping-number">{{tpl:PingOrderNumber}}.</a>
-        {{tpl:lang On}} {{tpl:PingDate}}, {{tpl:PingTime}}
-        {{tpl:lang by}} {{tpl:PingBlogName encode_html="1"}}</dt>
-        
-        <dd class="{{tpl:PingIfOdd}} {{tpl:PingIfFirst}}">
-        <!-- # --BEHAVIOR-- publicPingBeforeContent -->
-        {{tpl:SysBehavior behavior="publicPingBeforeContent"}}
-        
-        <p><a href="{{tpl:PingAuthorURL}}"
-        {{tpl:PingNoFollow}}>{{tpl:PingTitle encode_html="1"}}</a></p>
-        {{tpl:PingContent}}
-        
-        <!-- # --BEHAVIOR-- publicPingAfterContent -->
-        {{tpl:SysBehavior behavior="publicPingAfterContent"}}
-        </dd>
-      <tpl:PingsFooter>
-      </dl>
-      </tpl:PingsFooter>
-    </tpl:Pings>
-    </div>
-  </tpl:EntryIf>
-  
-  <tpl:EntryIf pings_active="1">
-    <p id="ping-url">{{tpl:lang Trackback URL}}&nbsp;: {{tpl:EntryPingLink}}</p>
-  </tpl:EntryIf>
-  
-  <tpl:EntryIf operator="or" comments_active="1" pings_active="1">
-  <p id="comments-feed"><a class="feed" href="{{tpl:BlogFeedURL type="atom"}}/comments/{{tpl:EntryID}}"
-  title="{{tpl:lang This post's comments Atom feed}}">{{tpl:lang This post's comments feed}}</a></p>
-  </tpl:EntryIf>
-  </div>
-</div> <!-- End #main -->
-
-<div id="sidebar">
-  <div id="blognav">
-    {{tpl:Widgets type="nav"}}
-  </div> <!-- End #blognav -->
-  
-  <div id="blogextra">
-    {{tpl:Widgets type="extra"}}
-  </div> <!-- End #blogextra -->
-</div>
-
-</div> <!-- End #wrapper -->
-
-{{tpl:include src="_footer.html"}}
-</div> <!-- End #page -->
-</body>
-</html>
Index: nc/public/default-templates/rss2-comments.xml
===================================================================
--- inc/public/default-templates/rss2-comments.xml	(revision 0)
+++ 	(revision )
@@ -1,48 +1,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<?xml-stylesheet title="XSL formatting" type="text/xsl" href="{{tpl:BlogURL}}feed/rss2/xslt" ?>
-<rss version="2.0"
-  xmlns:dc="http://purl.org/dc/elements/1.1/"
-  xmlns:content="http://purl.org/rss/1.0/modules/content/"
-  xmlns:atom="http://www.w3.org/2005/Atom">
-<channel>
-  <title>{{tpl:BlogName encode_xml="1"}}{{tpl:SysFeedSubtitle encode_xml="1"}}
-  - {{tpl:lang Comments}}</title>
-  <link>{{tpl:BlogURL}}</link>
-  <atom:link href="{{tpl:SysSelfURI}}" rel="self" type="application/rss+xml"/>
-  <description>{{tpl:BlogDescription encode_xml="1"}}</description>
-  <language>{{tpl:BlogLanguage}}</language>
-  <pubDate>{{tpl:BlogUpdateDate rfc822="1"}}</pubDate>
-  <copyright>{{tpl:BlogCopyrightNotice encode_xml="1"}}</copyright>
-  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
-  <generator>Dotclear</generator>
-  
-  <tpl:Comments order="desc" with_pings="1">
-  
-  <tpl:CommentIf is_ping="1">
-  <item>
-    <title>[ping] {{tpl:PingEntryTitle encode_xml="1"}} - {{tpl:PingBlogName encode_xml="1"}}</title>
-    <link>{{tpl:PingPostURL encode_xml="1"}}#c{{tpl:PingID}}</link>
-    <guid isPermaLink="false">{{tpl:PingFeedID}}</guid>
-    <pubDate>{{tpl:PingDate rfc822="1"}}</pubDate>
-    <dc:creator>{{tpl:PingBlogName encode_xml="1"}}</dc:creator>
-    
-    <description>&lt;p&gt;&lt;a href="{{tpl:PingAuthorURL encode_xml="1"}}"&gt;{{tpl:PingTitle encode_xml="1"}}&lt;/a&gt;&lt;/p&gt;
-    {{tpl:PingContent encode_xml="1"}}</description>
-  </item>
-  </tpl:CommentIf>
-  
-  <tpl:CommentIf is_ping="0">
-  <item>
-    <title>{{tpl:CommentEntryTitle encode_xml="1"}} - {{tpl:CommentAuthor encode_xml="1"}}</title>
-    <link>{{tpl:CommentPostURL encode_xml="1"}}#c{{tpl:CommentID}}</link>
-    <guid isPermaLink="false">{{tpl:CommentFeedID}}</guid>
-    <pubDate>{{tpl:CommentDate rfc822="1"}}</pubDate>
-    <dc:creator>{{tpl:CommentAuthor encode_xml="1"}}</dc:creator>
-    
-    <description>{{tpl:CommentContent absolute_urls="1" encode_xml="1"}}</description>
-  </item>
-  </tpl:CommentIf>
-  </tpl:Comments>
-  
-</channel>
-</rss>
Index: nc/public/default-templates/rss2.xml
===================================================================
--- inc/public/default-templates/rss2.xml	(revision 0)
+++ 	(revision )
@@ -1,49 +1,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<?xml-stylesheet title="XSL formatting" type="text/xsl" href="{{tpl:BlogURL}}feed/rss2/xslt" ?>
-<rss version="2.0"
-  xmlns:dc="http://purl.org/dc/elements/1.1/"
-  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
-  xmlns:content="http://purl.org/rss/1.0/modules/content/"
-  xmlns:atom="http://www.w3.org/2005/Atom">
-<channel>
-  <title>{{tpl:BlogName encode_xml="1"}}{{tpl:SysFeedSubtitle encode_xml="1"}}</title>
-  <link>{{tpl:BlogURL}}</link>
-  <atom:link href="{{tpl:SysSelfURI}}" rel="self" type="application/rss+xml"/>
-  <description>{{tpl:BlogDescription encode_xml="1"}}</description>
-  <language>{{tpl:BlogLanguage}}</language>
-  <pubDate>{{tpl:BlogUpdateDate rfc822="1"}}</pubDate>
-  <copyright>{{tpl:BlogCopyrightNotice encode_xml="1"}}</copyright>
-  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
-  <generator>Dotclear</generator>
-  
-  <tpl:Entries>
-  
-  <item>
-    <title>{{tpl:EntryTitle encode_xml="1"}}</title>
-    <link>{{tpl:EntryURL}}</link>
-    <guid isPermaLink="false">{{tpl:EntryFeedID}}</guid>
-    <pubDate>{{tpl:EntryDate rfc822="1"}}</pubDate>
-    <dc:creator>{{tpl:EntryAuthorCommonName encode_xml="1"}}</dc:creator>
-    <tpl:EntryIf has_category="1">
-    <category>{{tpl:EntryCategory encode_html="1"}}</category>
-    </tpl:EntryIf>
-    <tpl:EntryTags><category>{{tpl:TagID}}</category></tpl:EntryTags>
-    
-    <description>{{tpl:EntryExcerpt absolute_urls="1" encode_xml="1"}}
-    {{tpl:EntryContent absolute_urls="1" encode_xml="1"}}</description>
-    
-    <tpl:Attachments>
-      <enclosure url="{{tpl:AttachmentURL}}"
-      length="{{tpl:AttachmentSize full="1"}}" type="{{tpl:AttachmentMimeType}}" />
-    </tpl:Attachments>
-    
-    <tpl:EntryIf comments_active="1">
-      <comments>{{tpl:EntryURL}}#comment-form</comments>
-      <wfw:comment>{{tpl:EntryURL}}#comment-form</wfw:comment>
-      <wfw:commentRss>{{tpl:BlogFeedURL}}/comments/{{tpl:EntryID}}</wfw:commentRss>
-    </tpl:EntryIf>
-  </item>
-  </tpl:Entries>
-  
-</channel>
-</rss>
Index: nc/public/default-templates/rss2.xsl
===================================================================
--- inc/public/default-templates/rss2.xsl	(revision 0)
+++ 	(revision )
@@ -1,120 +1,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xsl:stylesheet version="1.0"
-xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-xmlns:content="http://purl.org/rss/1.0/modules/content/"
-xmlns="http://www.w3.org/1999/xhtml">
-
-<xsl:output method="html"/>
-
-<xsl:template match="/">
-<html>
-  <head>
-    <title>{{tpl:lang Subscribe to}} <xsl:value-of select="/rss/channel/title"/></title>
-    <style type="text/css">
-    <![CDATA[
-    body {
-      font: 80% Verdana,Arial,sans-serif;
-      margin: 20px 0;
-      padding: 0 0;
-      background: #fff;
-      color: #000;
-    }
-    a { color: #039; }
-    h1, h2 { font-family: Arial,sans-serif; }
-    h1 { font-size: 160%; margin: 0; }
-    h2 { font-size: 140%; font-weight: bold; margin: 0.5em 0 0.2em 0; }
-    h2 a { text-decoration: none; }
-    p { margin: 0 0 0.5em 0; }
-    #page {
-      margin: 0 80px;
-    }
-    #top {
-      background: #036;
-      padding : 1em;
-      color: #fff;
-    }
-    #top a {
-      color: #fff;
-      text-decoration: none;
-    }
-    #what {
-      padding: 1em;
-      background: #eee;
-      border-bottom: 1px solid #000;
-      font-size: 80%;
-    }
-    #what p {
-      margin: 0 0 0.5em 0;
-    }
-    #footer {
-      border-top: 1px solid #000;
-    }
-    #items {
-      background: #fff;
-      color: inherit;
-    }
-    #items div {
-      margin: 0 0 1em 0;
-    }
-    ]]>
-    </style>
-    <script type="text/javascript"><![CDATA[
-    window.onload = function() {
-      document.getElementById('feedurl').value = window.location.href;
-      
-      // Ugly but works ;)
-      var c = document.getElementsByTagName('div');
-      var t = '';
-      for (var i=0; c.length-i != 0; i++) {
-        if (c[i].className == 'item-content') {
-          if (c[i].textContent) {
-            t = c[i].textContent;
-          } else if (c[i].innerText) {
-            t = c[i].innerText;
-          } else {
-            t = '';
-          }
-          
-          if (t) { c[i].innerHTML = t; }
-        }
-      }
-    };
-    ]]></script>
-  </head>
-  <body>
-    <div id="page">
-      <div id="top">
-        <h1><a href="{/rss/channel/link}"><xsl:value-of select="/rss/channel/title"/></a></h1>
-        <p><xsl:value-of select="/rss/channel/description"/></p>
-      </div>
-      <div id="what">
-      <h3>{{tpl:lang What is an RSS feed?}}</h3>
-      <p>{{tpl:lang RSS feed is a free blog summary. It provides content
-      (either posts or comments) or  summaries of content, together with links
-      to the full versions, and other metadata. The last published items may
-      then be read by your favorite RSS
-      <a href="http://en.wikipedia.org/wiki/Aggregator">aggregator</a>.}}</p>
-      <h3>{{tpl:lang Subscribe}}</h3>
-      <p>{{tpl:lang Simply copy the following URL into your aggregator:}}</p>
-      <p><input type="text" size="60" value="" id="feedurl" /></p>
-      </div>
-      <div id="items">
-        <xsl:apply-templates select="//item"/>
-      </div>
-      <div id="footer">
-        <p><xsl:value-of select="/rss/channel/copyright"/></p>
-      </div>
-    </div>
-  </body>
-</html>
-</xsl:template>
-
-<!-- Item template -->
-<xsl:template match="item">
-  <div>
-    <h2><a href="{link}"><xsl:value-of select="title"/></a></h2>
-    <div class="item-content"><xsl:value-of select="description" /></div>
-  </div>
-</xsl:template>
-
-</xsl:stylesheet>
Index: nc/public/default-templates/search.html
===================================================================
--- inc/public/default-templates/search.html	(revision 199)
+++ 	(revision )
@@ -1,152 +1,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="{{tpl:BlogLanguage}}" lang="{{tpl:BlogLanguage}}">
-<head>
-  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
-  <meta name="ROBOTS" content="{{tpl:BlogMetaRobots robots="NOINDEX,NOARCHIVE"}}" />
-  
-  <title>{{tpl:lang Search}} - {{tpl:SysSearchString encode_html="1"}} - {{tpl:BlogName encode_html="1"}}<tpl:PaginationIf start="0"> - {{tpl:lang page}} {{tpl:PaginationCurrent}}</tpl:PaginationIf></title>
-  <meta name="copyright" content="{{tpl:BlogCopyrightNotice encode_html="1"}}" />
-  <meta name="author" content="{{tpl:BlogEditor encode_html="1"}}" />
-  <meta name="date" scheme="W3CDTF" content="{{tpl:BlogUpdateDate iso8601="1"}}" />
-  
-  <link rel="schema.dc" href="http://purl.org/dc/elements/1.1/" />
-  <meta name="dc.title" lang="{{tpl:BlogLanguage}}" content="{{tpl:lang Search}} - {{tpl:SysSearchString encode_html="1"}} - {{tpl:BlogName encode_html="1"}}<tpl:PaginationIf start="0"> - {{tpl:lang page}} {{tpl:PaginationCurrent}}</tpl:PaginationIf>" />
-  <meta name="dc.language" content="{{tpl:BlogLanguage}}" />
-  <meta name="dc.publisher" content="{{tpl:BlogEditor encode_html="1"}}" />
-  <meta name="dc.rights" content="{{tpl:BlogCopyrightNotice encode_html="1"}}" />
-  <meta name="dc.date" scheme="W3CDTF" content="{{tpl:BlogUpdateDate iso8601="1"}}" />
-  <meta name="dc.type" content="text" />
-  <meta name="dc.format" content="text/html" />
-  
-  <link rel="top" href="{{tpl:BlogURL}}" title="{{tpl:lang Home}}" />
-  <link rel="contents" href="{{tpl:BlogArchiveURL}}" title="{{tpl:lang Archives}}" />
-  
-  <tpl:Entries no_content="1">
-    <tpl:EntriesHeader>
-      <tpl:Pagination>
-        <tpl:PaginationIf end="0">
-        <link rel="prev" title="{{tpl:lang previous entries}}" href="{{tpl:PaginationURL offset="1"}}" />
-        </tpl:PaginationIf>
-        
-        <tpl:PaginationIf start="0">
-        <link rel="next" title="{{tpl:lang next entries}}" href="{{tpl:PaginationURL offset="-1"}}" />
-        </tpl:PaginationIf>
-      </tpl:Pagination>
-    </tpl:EntriesHeader>
-    
-    <link rel="chapter" href="{{tpl:EntryURL}}" title="{{tpl:EntryTitle encode_html="1"}}" />
-  </tpl:Entries>
-  
-  <link rel="meta" type="application/xbel+xml" title="Blogroll" href="{{tpl:BlogrollXbelLink}}" />
-  
-  {{tpl:include src="_head.html"}}
-</head>
-
-<body class="dc-search">
-<div id="page">
-{{tpl:include src="_top.html"}}
-
-<div id="wrapper">
-
-<div id="main">
-  <div id="content">
-  
-  <div id="content-info">
-    <h2>{{tpl:lang Search}}</h2>
-    <tpl:SysIf search_count="==0">
-      <p>{{tpl:SysSearchString encode_html="1" string="Your search for <em>%1$s</em> returned no result."}}</p>
-    </tpl:SysIf>
-    <tpl:SysIf search_count="==1">
-      <p>{{tpl:SysSearchString encode_html="1" string="Your search for <em>%1$s</em> returned <strong>%2$s</strong> result."}}</p>
-    </tpl:SysIf>
-    <tpl:SysIf search_count="&gt;1">
-      <p>{{tpl:SysSearchString encode_html="1" string="Your search for <em>%1$s</em> returned <strong>%2$s</strong> results."}}</p>
-    </tpl:SysIf>
-  </div>
-  
-  <tpl:Entries>
-    <div id="p{{tpl:EntryID}}" class="post {{tpl:EntryIfOdd}} {{tpl:EntryIfFirst}}" lang="{{tpl:EntryLang}}" xml:lang="{{tpl:EntryLang}}">
-    <!-- # New day date -->
-    <tpl:DateHeader><p class="day-date">{{tpl:EntryDate}}</p></tpl:DateHeader>
-    
-    <h2 class="post-title"><a
-    href="{{tpl:EntryURL}}">{{tpl:EntryTitle encode_html="1"}}</a></h2>
-    
-    <p class="post-info">{{tpl:lang By}} {{tpl:EntryAuthorLink}}
-    {{tpl:lang on}} {{tpl:EntryDate}}, {{tpl:EntryTime}}
-    <tpl:EntryIf has_category="1">
-    - <a href="{{tpl:EntryCategoryURL}}">{{tpl:EntryCategory encode_html="1"}}</a>
-    </tpl:EntryIf>
-    </p>
-    
-    <tpl:EntryTags>
-    <tpl:TagsHeader><ul class="post-tags"></tpl:TagsHeader>
-    <li><a href="{{tpl:TagURL}}">{{tpl:TagID}}</a></li>
-    <tpl:TagsFooter></ul></tpl:TagsFooter>
-    </tpl:EntryTags>
-    
-    <!-- # --BEHAVIOR-- publicEntryBeforeContent -->
-    {{tpl:SysBehavior behavior="publicEntryBeforeContent"}}
-    
-    <!-- # Entry with an excerpt -->
-    <tpl:EntryIf extended="1">
-      <div class="post-content">{{tpl:EntryExcerpt}}</div>
-      <p class="read-it"><a href="{{tpl:EntryURL}}"
-      title="{{tpl:lang Continue reading}} {{tpl:EntryTitle encode_html="1"}}">{{tpl:lang Continue
-      reading}}</a>...</p>
-    </tpl:EntryIf>
-    
-    <!-- # Entry without excerpt -->
-    <tpl:EntryIf extended="0">
-      <div class="post-content">{{tpl:EntryContent}}</div>
-    </tpl:EntryIf>
-    
-    <!-- # --BEHAVIOR-- publicEntryAfterContent -->
-    {{tpl:SysBehavior behavior="publicEntryAfterContent"}}
-    
-    <!-- # Number of comments, trackbacks and attachments -->
-    <tpl:EntryIf operator="or" show_comments="1" show_pings="1" has_attachment="1">
-      <p class="post-info-co">
-    </tpl:EntryIf>
-    <tpl:EntryIf show_comments="1">
-      <a href="{{tpl:EntryURL}}#comments" class="comment_count">{{tpl:EntryCommentCount}}</a>
-    </tpl:EntryIf>
-    <tpl:EntryIf show_pings="1">
-      <a href="{{tpl:EntryURL}}#pings" class="ping_count">{{tpl:EntryPingCount}}</a></tpl:EntryIf>
-    <tpl:EntryIf has_attachment="1">
-      <a href="{{tpl:EntryURL}}#attachments" class="attach_count">{{tpl:EntryAttachmentCount}}</a></tpl:EntryIf>
-    <tpl:EntryIf operator="or" show_comments="1" show_pings="1" has_attachment="1">
-      </p>
-    </tpl:EntryIf>
-    </div>
-    
-    <tpl:EntriesFooter>
-      <tpl:Pagination>
-        <p class="pagination"><tpl:PaginationIf end="0"><a href="{{tpl:PaginationURL offset="+1"}}" class="prev">&#171;
-        {{tpl:lang previous entries}}</a> - </tpl:PaginationIf>
-        {{tpl:lang page}} {{tpl:PaginationCurrent}} {{tpl:lang of}} {{tpl:PaginationCounter}}
-        <tpl:PaginationIf start="0"> - <a href="{{tpl:PaginationURL offset="-1"}}" class="next">{{tpl:lang next entries}}
-        &#187;</a></tpl:PaginationIf></p>
-      </tpl:Pagination>
-    </tpl:EntriesFooter>
-  </tpl:Entries>
-  </div>
-</div> <!-- End #main -->
-
-<div id="sidebar">
-  <div id="blognav">
-    {{tpl:Widgets type="nav"}}
-  </div> <!-- End #blognav -->
-  
-  <div id="blogextra">
-    {{tpl:Widgets type="extra"}}
-  </div> <!-- End #blogextra -->
-</div>
-
-</div> <!-- End #wrapper -->
-
-{{tpl:include src="_footer.html"}}
-</div> <!-- End #page -->
-</body>
-</html>
Index: nc/public/default-templates/user_head.html
===================================================================
--- inc/public/default-templates/user_head.html	(revision 0)
+++ 	(revision )
@@ -1,1 +1,0 @@
-<!-- # This template is included at the end of _head.html template -->
Index: inc/public/prepend.php
===================================================================
--- inc/public/prepend.php	(revision 1949)
+++ inc/public/prepend.php	(revision 2541)
@@ -101,5 +101,5 @@
 	}
 }
-	
+
 # If theme doesn't exist, stop everything
 if (!$core->themes->moduleExists($__theme)) {
@@ -134,10 +134,15 @@
 	$__theme_tpl_path[] = $core->blog->themes_path.'/'.$__parent_theme.'/tpl';
 }
-
-$core->tpl->setPath(
-	$__theme_tpl_path,
-	dirname(__FILE__).'/default-templates',
-	$core->tpl->getPath());
-
+$tplset = $core->themes->moduleInfo($core->blog->settings->system->theme,'tplset');
+if (!empty($tplset) && is_dir(dirname(__FILE__).'/default-templates/'.$tplset)) {
+	$core->tpl->setPath(
+		$__theme_tpl_path,
+		dirname(__FILE__).'/default-templates/'.$tplset,
+		$core->tpl->getPath());
+} else {
+	$core->tpl->setPath(
+		$__theme_tpl_path,
+		$core->tpl->getPath());
+}
 $core->url->mode = $core->blog->settings->system->url_scan;
 
@@ -145,7 +150,7 @@
 	# --BEHAVIOR-- publicBeforeDocument
 	$core->callBehavior('publicBeforeDocument',$core);
-	
+
 	$core->url->getDocument();
-	
+
 	# --BEHAVIOR-- publicAfterDocument
 	$core->callBehavior('publicAfterDocument',$core);
@@ -155,3 +160,3 @@
 		,660);
 }
-?>
+
Index: plugins/antispam/filters/class.dc.filter.linkslookup.php
===================================================================
--- plugins/antispam/filters/class.dc.filter.linkslookup.php	(revision 1366)
+++ plugins/antispam/filters/class.dc.filter.linkslookup.php	(revision 2524)
@@ -15,17 +15,17 @@
 {
 	public $name = 'Links Lookup';
-	
+
 	private $server = 'multi.surbl.org';
-	
+
 	protected function setInfo()
 	{
 		$this->description = __('Checks links in comments against surbl.org');
 	}
-	
+
 	public function getStatusMessage($status,$comment_id)
 	{
 		return sprintf(__('Filtered by %1$s with server %2$s.'),$this->guiLink(),$status);
 	}
-	
+
 	public function isSpam($type,$author,$email,$site,$ip,$content,$post_id,&$status)
 	{
@@ -33,8 +33,8 @@
 			return;
 		}
-		
+
 		$urls = $this->getLinks($content);
 		array_unshift($urls,$site);
-		
+
 		foreach ($urls as $u)
 		{
@@ -48,4 +48,8 @@
 
 			$i = count($domain_elem) - 1;
+			if ($i == 0) {
+				// "domain" is 1 word long, don't check it
+				return null;
+			}
 			$host = $domain_elem[$i];
 			do
@@ -53,13 +57,13 @@
 				$host = $domain_elem[$i - 1].'.'.$host;
 				$i--;
-				if (substr(gethostbyname($host.'.'.$this->server),0,3) == "127" ) 
+				if (substr(gethostbyname($host.'.'.$this->server),0,3) == "127" )
 				{
 					$status = substr($domain,0,128);
 					return true;
-				}				
+				}
 			} while ($i > 0);
 		}
 	}
-	
+
 	private function getLinks($text)
 	{
Index: plugins/antispam/index.php
===================================================================
--- plugins/antispam/index.php	(revision 2322)
+++ plugins/antispam/index.php	(revision 2495)
@@ -117,4 +117,5 @@
 	echo
 		dcPage::jsLoad('js/jquery/jquery-ui.custom.js').
+		dcPage::jsLoad('js/jquery/jquery.ui.touch-punch.js').
 		dcPage::jsLoad('index.php?pf=antispam/antispam.js');
   }
Index: plugins/blogroll/index.php
===================================================================
--- plugins/blogroll/index.php	(revision 2256)
+++ plugins/blogroll/index.php	(revision 2495)
@@ -27,5 +27,5 @@
 {
 	$default_tab = 'import-links';
-	
+
 	try
 	{
@@ -35,5 +35,5 @@
 			throw new Exception(__('Unable to move uploaded file.'));
 		}
-		
+
 		require_once dirname(__FILE__).'/class.dc.importblogroll.php';
 		try {
@@ -44,6 +44,6 @@
 			throw $e;
 		}
-		
-		
+
+
 		if (empty($imported)) {
 			unset($imported);
@@ -69,12 +69,12 @@
 		}
 	}
-	
+
 	dcPage::addSuccessNotice(__('links have been successfully imported.'));
-	http::redirect($p_url);	
+	http::redirect($p_url);
 }
 
 if (!empty($_POST['cancel_import'])) {
 	$core->error->add(__('Import operation cancelled.'));
-	$default_tab = 'import-links';	
+	$default_tab = 'import-links';
 }
 
@@ -86,5 +86,5 @@
 	$link_desc = $_POST['link_desc'];
 	$link_lang = $_POST['link_lang'];
-	
+
 	try {
 		$blogroll->addLink($link_title,$link_href,$link_desc,$link_lang);
@@ -102,5 +102,5 @@
 {
 	$cat_title = $_POST['cat_title'];
-	
+
 	try {
 		$blogroll->addCategory($cat_title);
@@ -124,5 +124,5 @@
 		}
 	}
-	
+
 	if (!$core->error->flag()) {
 		dcPage::addSuccessNotice(__('Items have been successfully removed.'));
@@ -145,5 +145,5 @@
 	foreach ($order as $pos => $l) {
 		$pos = ((integer) $pos)+1;
-		
+
 		try {
 			$blogroll->updateOrder($l,$pos);
@@ -152,5 +152,5 @@
 		}
 	}
-	
+
 	if (!$core->error->flag()) {
 		dcPage::addSuccessNotice(__('Items order has been successfully updated'));
@@ -172,9 +172,10 @@
   <title><?php echo __('Blogroll'); ?></title>
   <?php echo dcPage::jsConfirmClose('links-form','add-link-form','add-category-form'); ?>
-  <?php 
+  <?php
 	$core->auth->user_prefs->addWorkspace('accessibility');
 	if (!$core->auth->user_prefs->accessibility->nodragdrop) {
 	echo
 		dcPage::jsLoad('js/jquery/jquery-ui.custom.js').
+		dcPage::jsLoad('js/jquery/jquery.ui.touch-punch.js').
 		dcPage::jsLoad('index.php?pf=blogroll/blogroll.js');
 	}
@@ -213,11 +214,11 @@
 {
 	$position = (string) $rs->index()+1;
-	
+
 	echo
 	'<tr class="line" id="l_'.$rs->link_id.'">'.
 	'<td class="handle minimal">'.form::field(array('order['.$rs->link_id.']'),2,5,$position,'position','',false,'title="'.__('position').'"').'</td>'.
 	'<td class="minimal">'.form::checkbox(array('remove[]'),$rs->link_id,'','','',false,'title="'.__('select this link').'"').'</td>';
-	
-	
+
+
 	if ($rs->is_cat)
 	{
@@ -235,5 +236,5 @@
 		'<td>'.html::escapeHTML($rs->link_lang).'</td>';
 	}
-	
+
 	echo '</tr>';
 }
@@ -245,5 +246,5 @@
 <p class="col">
 <?php
-	echo 
+	echo
 	form::hidden('links_order','').
 	form::hidden(array('p'),'blogroll').
@@ -252,5 +253,5 @@
 <input type="submit" name="saveorder" value="<?php echo __('Save order'); ?>" /></p>
 <p class="col right"><input type="submit" class="delete" name="removeaction"
-	 value="<?php echo __('Delete selected links'); ?>" 
+	 value="<?php echo __('Delete selected links'); ?>"
 	 onclick="return window.confirm('
 	 <?php echo html::escapeJS(__('Are you sure you want to delete selected links?')); ?>');" /></p>
@@ -330,5 +331,5 @@
 		'<th>'.__('Description').'</th>'.
 		'</tr>';
-		
+
 		$i = 0;
 		foreach ($imported as $entry) {
@@ -336,6 +337,6 @@
 			$title = html::escapeHTML($entry->title);
 			$desc  = html::escapeHTML($entry->desc);
-			
-			echo 
+
+			echo
 			'<tr><td>'.form::checkbox(array('entries[]'),$i,'','','').'</td>'.
 			'<td nowrap><a href="'.$url.'">'.$title.'</a>'.
@@ -345,5 +346,5 @@
 			'<td>'.$desc.
 			'<input type="hidden" name="desc['.$i.']" value="'.$desc.'" />'.
-			'</td></tr>'."\n";			
+			'</td></tr>'."\n";
 			$i++;
 		}
@@ -352,5 +353,5 @@
 		'<div class="two-cols">'.
 		'<p class="col checkboxes-helpers"></p>'.
-		
+
 		'<p class="col right">'.
 		form::hidden(array('p'),'blogroll').
Index: plugins/pages/list.php
===================================================================
--- plugins/pages/list.php	(revision 2442)
+++ plugins/pages/list.php	(revision 2496)
@@ -55,5 +55,7 @@
   <title><?php echo __('Pages'); ?></title>
   <?php
-  	echo dcPage::jsLoad('js/jquery/jquery-ui.custom.js').
+  	echo
+  		dcPage::jsLoad('js/jquery/jquery-ui.custom.js').
+		dcPage::jsLoad('js/jquery/jquery.ui.touch-punch.js').
 		dcPage::jsLoad('index.php?pf=pages/list.js').
 		'<script type="text/javascript">'.
@@ -89,10 +91,10 @@
 	$post_list->display($page,$nb_per_page,
 	'<form action="plugin.php" method="post" id="form-entries">'.
-	
+
 	'%s'.
-	
+
 	'<div class="two-cols">'.
 	'<p class="col checkboxes-helpers"></p>'.
-	
+
 	'<p class="col right"><label for="action" class="classic">'.__('Selected pages action:').'</label> '.
 	form::combo('action',$pages_actions_page->getCombo()).
Index: plugins/simpleMenu/index.php
===================================================================
--- plugins/simpleMenu/index.php	(revision 2455)
+++ plugins/simpleMenu/index.php	(revision 2496)
@@ -347,4 +347,5 @@
 			echo
 				dcPage::jsLoad('js/jquery/jquery-ui.custom.js').
+				dcPage::jsLoad('js/jquery/jquery.ui.touch-punch.js').
 				dcPage::jsLoad('index.php?pf=simpleMenu/simplemenu.js');
 		}
Index: plugins/widgets/index.php
===================================================================
--- plugins/widgets/index.php	(revision 2509)
+++ plugins/widgets/index.php	(revision 2520)
@@ -218,4 +218,5 @@
 		echo
 			dcPage::jsLoad('js/jquery/jquery-ui.custom.js').
+			dcPage::jsLoad('js/jquery/jquery.ui.touch-punch.js').
 			dcPage::jsLoad('index.php?pf=widgets/widgets.js');
   ?>
@@ -366,5 +367,5 @@
 		$altUp = $i == 0 ? ' alt=""' : ' alt="'.__('Up the widget').'"';
 		$altDown = $i == count($widgets->elements())-1 ? ' alt=""' : ' alt="'.__('Down the widget').'"';
-
+		
 		$iname = 'w['.$pr.']['.$i.']';
 
Index: themes/ductile/_prepend.php
===================================================================
--- themes/ductile/_prepend.php	(revision 1133)
+++ themes/ductile/_prepend.php	(revision 2495)
@@ -26,5 +26,6 @@
 		if (!$core->auth->user_prefs->accessibility->nodragdrop) {
 			echo
-				dcPage::jsLoad('js/jquery/jquery-ui.custom.js');
+				dcPage::jsLoad('js/jquery/jquery-ui.custom.js').
+				dcPage::jsLoad('js/jquery/jquery.ui.touch-punch.js');
 				echo <<<EOT
 <script type="text/javascript">
