Index: admin/preferences.php
===================================================================
--- admin/preferences.php	(revision 3245)
+++ admin/preferences.php	(revision 3265)
@@ -99,4 +99,28 @@
 $lang_combo = dcAdminCombos::getAdminLangsCombo();
 
+# Get default colums (admin lists)
+$cols = array(
+	'posts' => array(__('Posts'), array(
+		'date' => array(true,__('Date')),
+		'category' => array(true,__('Category')),
+		'author' => array(true,__('Author')),
+		'comments' => array(true,__('Comments')),
+		'trackbacks' => array(true,__('Trackbacks'))
+	))
+);
+$cols = new arrayObject($cols);
+$core->callBehavior('adminColumnsLists',$core,$cols);
+# Load user settings
+$cols_user = @$core->auth->user_prefs->interface->cols;
+if (is_array($cols_user)) {
+	foreach ($cols_user as $ct => $cv) {
+		foreach ($cv as $cn => $cd) {
+			if (isset($cols[$ct][1][$cn])) {
+				$cols[$ct][1][$cn][0] = $cd;
+			}
+		}
+	}
+}
+
 # Add or update user
 if (isset($_POST['user_name']))
@@ -196,4 +220,17 @@
 		$core->auth->user_prefs->interface->put('media_last_dirs',array(),'array',null,false);
 		$core->auth->user_prefs->interface->put('media_fav_dirs',array(),'array',null,false);
+
+		# Update user columns (lists)
+		$cu = array();
+		foreach ($cols as $col_type => $cols_list) {
+			$ct = array();
+			foreach ($cols_list[1] as $col_name => $col_data) {
+				$ct[$col_name] = isset($_POST['cols_'.$col_type]) && in_array($col_name,$_POST['cols_'.$col_type],true) ? true : false;
+			}
+			if (count($ct)) {
+				$cu[$col_type] = $ct;
+			}
+		}
+		$core->auth->user_prefs->interface->put('cols',$cu,'array');
 
 		# Update user
@@ -463,4 +500,17 @@
 echo
 '<div class="fieldset">'.
+'<h4>'.__('Optional columns displayed in lists').'</h4>';
+foreach ($cols as $col_type => $col_list) {
+	echo '<h5>'.$col_list[0].'</h5>';
+	foreach ($col_list[1] as $col_name => $col_data) {
+		echo
+		'<p><label for="cols_'.$col_type.'-"'.$col_name.'" class="classic">'.
+		form::checkbox(array('cols_'.$col_type.'[]','cols_'.$col_type.'-'.$col_name),$col_name,$col_data[0]).$col_data[1].'</label>';
+	}
+}
+echo '</div>';
+
+echo
+'<div class="fieldset">'.
 '<h4>'.__('Edition').'</h4>';
 
Index: inc/admin/lib.pager.php
===================================================================
--- inc/admin/lib.pager.php	(revision 3239)
+++ inc/admin/lib.pager.php	(revision 3265)
@@ -147,4 +147,18 @@
 		$this->html_next = __('next &#187;');
 	}
+
+	public function userColumns($type,$cols)
+	{
+		$cols_user = @$this->core->auth->user_prefs->interface->cols;
+		if (is_array($cols_user)) {
+			if (isset($cols_user[$type])) {
+				foreach ($cols_user[$type] as $cn => $cd) {
+					if (!$cd && isset($cols[$cn])) {
+						unset($cols[$cn]);
+					}
+				}
+			}
+		}
+	}
 }
 
@@ -218,4 +232,7 @@
 			$this->core->callBehavior('adminPostListHeader',$this->core,$this->rs,$cols);
 
+			// Cope with optional columns
+			$this->userColumns('posts',$cols);
+
 			$html_block .= '<tr>'.implode(iterator_to_array($cols)).'</tr>%s</table></div>';
 			if ($enclose_block) {
@@ -313,4 +330,7 @@
 		$this->core->callBehavior('adminPostListValue',$this->core,$this->rs,$cols);
 
+		// Cope with optional columns
+		$this->userColumns('posts',$cols);
+
 		$res .= implode(iterator_to_array($cols));
 		$res .= '</tr>';
@@ -345,4 +365,7 @@
 			$cols = new ArrayObject($cols);
 			$this->core->callBehavior('adminPostMiniListHeader',$this->core,$this->rs,$cols);
+
+			// Cope with optional columns
+			$this->userColumns('posts',$cols);
 
 			$html_block .= '<tr>'.implode(iterator_to_array($cols)).'</tr>%s</table></div>';
@@ -423,4 +446,7 @@
 		$cols = new ArrayObject($cols);
 		$this->core->callBehavior('adminPostMiniListValue',$this->core,$this->rs,$cols);
+
+		// Cope with optional columns
+		$this->userColumns('posts',$cols);
 
 		$res .= implode(iterator_to_array($cols));
Index: locales/fr/main.po
===================================================================
--- locales/fr/main.po	(revision 3245)
+++ locales/fr/main.po	(revision 3265)
@@ -2127,4 +2127,7 @@
 msgstr "Ce choix sera appliqué pour tous les utilisateurs"
 
+msgid "Optional columns displayed in lists"
+msgstr "Colonnes optionnelles affichées dans les listes"
+
 msgid "Edition"
 msgstr "Édition"
Index: plugins/pages/_admin.php
===================================================================
--- plugins/pages/_admin.php	(revision 2849)
+++ plugins/pages/_admin.php	(revision 3265)
@@ -12,6 +12,21 @@
 if (!defined('DC_CONTEXT_ADMIN')) { return; }
 
+$core->addBehavior('adminColumnsLists',array('pagesColumnsLists','adminColumnsLists'));
 $core->addBehavior('adminDashboardFavorites',array('pagesDashboard','pagesDashboardFavs'));
 $core->addBehavior('adminUsersActionsHeaders','pages_users_actions_headers');
+
+class pagesColumnsLists
+{
+	public static function adminColumnsLists($core,$cols)
+	{
+		// Set optional columns in pages lists
+		$cols['pages'] = array(__('Pages'), array(
+			'date' => array(true,__('Date')),
+			'author' => array(true,__('Author')),
+			'comments' => array(true,__('Comments')),
+			'trackbacks' => array(true,__('Trackbacks'))
+		));
+	}
+}
 
 class pagesDashboard
Index: plugins/pages/class.listpage.php
===================================================================
--- plugins/pages/class.listpage.php	(revision 3118)
+++ plugins/pages/class.listpage.php	(revision 3265)
@@ -47,4 +47,7 @@
 			$cols = new ArrayObject($cols);
 			$this->core->callBehavior('adminPagesListHeader',$this->core,$this->rs,$cols);
+
+			// Cope with optional columns
+			$this->userColumns('pages',$cols);
 
 			$html_block .= '<tr>'.implode(iterator_to_array($cols)).
@@ -135,4 +138,7 @@
 		$this->core->callBehavior('adminPagesListValue',$this->core,$this->rs,$cols);
 
+		// Cope with optional columns
+		$this->userColumns('pages',$cols);
+
 		$res .= implode(iterator_to_array($cols));
 		$res .= '</tr>';
