Index: inc/public/class.dc.template.php
===================================================================
--- inc/public/class.dc.template.php	(revision 2646)
+++ inc/public/class.dc.template.php	(revision 2610)
@@ -385,33 +385,4 @@
 	}
 
-	public function displayCounter($variable,$values,$attr,$count_only_by_default=false) {
-		if (isset($attr['count_only'])) {
-			$count_only=($attr['count_only']==1);
-		} else {
-			$count_only = $count_only_by_default;
-		}
-		if ($count_only) {
-			return "<?php echo ".$variable."; ?>";
-		} else {
-			$v=$values;
-			if (isset($attr['none'])) {
-				$v['none'] = addslashes($attr['none']);
-			}
-			if (isset($attr['one'])) {
-				$v['one'] = addslashes($attr['one']);
-			}
-			if (isset($attr['more'])) {
-				$v['more'] = addslashes($attr['more']);
-			}
-			return
-				"<?php if (".$variable." == 0) {\n".
-				"  printf(__('".$v['none']."'),".$variable.");\n".
-				"} elseif (".$variable." == 1) {\n".
-				"  printf(__('".$v['one']."'),".$variable.");\n".
-				"} else {\n".
-				"  printf(__('".$v['more']."'),".$variable.");\n".
-				"} ?>";
-		}
-	}
 	/* TEMPLATE FUNCTIONS
 	------------------------------------------------------- */
@@ -574,14 +545,5 @@
 	{
 		$f = $this->getFilters($attr);
-		return $this->displayCounter(
-			sprintf($f,'$_ctx->archives->nb_post'),
-			array(
-				'none' => 'no archive',
-				'one'  => 'one archive',
-				'more' => '%d archives'
-			),
-			$attr,
-			true
-		);
+		return '<?php echo '.sprintf($f,'$_ctx->archives->nb_post').'; ?>';
 	}
 
@@ -1059,14 +1021,5 @@
 	{
 		$f = $this->getFilters($attr);
-		return $this->displayCounter(
-			sprintf($f,'$_ctx->categories->nb_post'),
-			array(
-				'none' => 'No post',
-				'one'  => 'One post',
-				'more' => '%d posts'
-			),
-			$attr,
-			true
-		);
+		return '<?php echo '.sprintf($f,'$_ctx->categories->nb_post').'; ?>';
 	}
 
@@ -1767,7 +1720,4 @@
 	}
 
-
-
-
 	/*dtd
 	<!ELEMENT tpl:EntryCommentCount - O -- Number of comments for entry -->
@@ -1781,4 +1731,18 @@
 	public function EntryCommentCount($attr)
 	{
+		$none = 'no comment';
+		$one = 'one comment';
+		$more = '%d comments';
+
+		if (isset($attr['none'])) {
+			$none = addslashes($attr['none']);
+		}
+		if (isset($attr['one'])) {
+			$one = addslashes($attr['one']);
+		}
+		if (isset($attr['more'])) {
+			$more = addslashes($attr['more']);
+		}
+
 		if (empty($attr['count_all'])) {
 			$operation = '$_ctx->posts->nb_comment';
@@ -1787,14 +1751,12 @@
 		}
 
-		return $this->displayCounter(
-			$operation,
-			array(
-				'none' => 'no comment',
-				'one'  => 'one comment',
-				'more' => '%d comments'
-				),
-			$attr,
-			false
-		);
+		return
+		"<?php if (".$operation." == 0) {\n".
+		"  printf(__('".$none."'),".$operation.");\n".
+		"} elseif (".$operation." == 1) {\n".
+		"  printf(__('".$one."'),".$operation.");\n".
+		"} else {\n".
+		"  printf(__('".$more."'),".$operation.");\n".
+		"} ?>";
 	}
 
@@ -1809,14 +1771,26 @@
 	public function EntryPingCount($attr)
 	{
-		return $this->displayCounter(
-			'$_ctx->posts->nb_trackback',
-			array(
-				'none' => 'no trackback',
-				'one'  => 'one trackback',
-				'more' => '%d trackbacks'
-				),
-			$attr,
-			false
-		);
+		$none = 'no trackback';
+		$one = 'one trackback';
+		$more = '%d trackbacks';
+
+		if (isset($attr['none'])) {
+			$none = addslashes($attr['none']);
+		}
+		if (isset($attr['one'])) {
+			$one = addslashes($attr['one']);
+		}
+		if (isset($attr['more'])) {
+			$more = addslashes($attr['more']);
+		}
+
+		return
+		"<?php if (\$_ctx->posts->nb_trackback == 0) {\n".
+		"  printf(__('".$none."'),(integer) \$_ctx->posts->nb_trackback);\n".
+		"} elseif (\$_ctx->posts->nb_trackback == 1) {\n".
+		"  printf(__('".$one."'),(integer) \$_ctx->posts->nb_trackback);\n".
+		"} else {\n".
+		"  printf(__('".$more."'),(integer) \$_ctx->posts->nb_trackback);\n".
+		"} ?>";
 	}
 
Index: locales/en/plugins.po
===================================================================
--- locales/en/plugins.po	(revision 2516)
+++ locales/en/plugins.po	(revision 2647)
@@ -1965,2 +1965,11 @@
 msgid "Drag widgets here to remove."
 msgstr ""
+
+msgid "From theme:"
+msgstr ""
+
+msgid "From parent:"
+msgstr ""
+
+msgid "From template set:"
+msgstr ""
Index: locales/fr/plugins.po
===================================================================
--- locales/fr/plugins.po	(revision 2546)
+++ locales/fr/plugins.po	(revision 2647)
@@ -1983,4 +1983,13 @@
 msgstr "Glisser les widgets ici pour les retirer du volet."
 
+msgid "From theme:"
+msgstr "Du thème :"
+
+msgid "From parent:"
+msgstr "Du thème parent :"
+
+msgid "From template set:"
+msgstr "Du jeu de template :"
+
 #~ msgid "RSS or Atom feed subscription links"
 #~ msgstr "Liens d'abonnement aux flux RSS ou Atom"
Index: plugins/attachments/_public.php
===================================================================
--- plugins/attachments/_public.php	(revision 2646)
+++ plugins/attachments/_public.php	(revision 2566)
@@ -211,15 +211,26 @@
 	public static function EntryAttachmentCount($attr)
 	{
-		global $core;
-		return $core->tpl->displayCounter(
-			'$_ctx->posts->countMedia()',
-			array(
-				'none' => 'no attachment',
-				'one'  => 'one attachment',
-				'more' => '%d attachments'
-			),
-			$attr,
-			false
-		);
+		$none = 'no attachment';
+		$one = 'one attachment';
+		$more = '%d attachments';
+
+		if (isset($attr['none'])) {
+			$none = addslashes($attr['none']);
+		}
+		if (isset($attr['one'])) {
+			$one = addslashes($attr['one']);
+		}
+		if (isset($attr['more'])) {
+			$more = addslashes($attr['more']);
+		}
+
+		return
+		"<?php if (\$_ctx->posts->countMedia() == 0) {\n".
+		"  printf(__('".$none."'),(integer) \$_ctx->posts->countMedia());\n".
+		"} elseif (\$_ctx->posts->countMedia() == 1) {\n".
+		"  printf(__('".$one."'),(integer) \$_ctx->posts->countMedia());\n".
+		"} else {\n".
+		"  printf(__('".$more."'),(integer) \$_ctx->posts->countMedia());\n".
+		"} ?>";
 	}
 }
Index: plugins/themeEditor/class.themeEditor.php
===================================================================
--- plugins/themeEditor/class.themeEditor.php	(revision 2607)
+++ plugins/themeEditor/class.themeEditor.php	(revision 2647)
@@ -47,5 +47,5 @@
 	}
 
-	public function filesList($type,$item='%1$s')
+	public function filesList($type,$item='%1$s',$split=true)
 	{
 		$files = $this->getFilesFromType($type);
@@ -56,14 +56,47 @@
 
 		$list = '';
-		foreach ($files as $k => $v)
-		{
-			if (strpos($v,$this->user_theme) === 0) {
-				$li = sprintf('<li class="default-file">%s</li>',$item);
-			} elseif ($this->parent_theme && strpos($v,$this->parent_theme) === 0) {
-				$li = sprintf('<li class="parent-file">%s</li>',$item);
-			} else {
-				$li = sprintf('<li>%s</li>',$item);
-			}
-			$list .= sprintf($li,$k,html::escapeHTML($k));
+		if ($split) {
+			// First part for current theme
+			$list_theme = '';
+			foreach ($files as $k => $v)
+			{
+				if (strpos($v,$this->user_theme) === 0) {
+					$li = sprintf('<li class="default-file">%s</li>',$item);
+					$list_theme .= sprintf($li,$k,html::escapeHTML($k));
+				}
+			}
+			// Second part for parent theme if any
+			$list_parent = '';
+			foreach ($files as $k => $v)
+			{
+				if ((strpos($v,$this->user_theme) !== 0) && ($this->parent_theme && strpos($v,$this->parent_theme) === 0)) {
+					$li = sprintf('<li class="parent-file">%s</li>',$item);
+					$list_parent .= sprintf($li,$k,html::escapeHTML($k));
+				}
+			}
+			// Third part for template set
+			$list_tpl = '';
+			foreach ($files as $k => $v)
+			{
+				if ((strpos($v,$this->user_theme) !== 0) && ($this->parent_theme && strpos($v,$this->parent_theme) !== 0)) {
+					$li = sprintf('<li>%s</li>',$item);
+					$list_tpl .= sprintf($li,$k,html::escapeHTML($k));
+				}
+			}
+			$list .= ($list_theme != '' ? sprintf('<li class="group-file">'.__('From theme:').'<ul>%s</ul></li>',$list_theme) : '');
+			$list .= ($list_parent != '' ? sprintf('<li class="group-file">'.__('From parent:').'<ul>%s</ul></li>',$list_parent) : '');
+			$list .= ($list_tpl != '' ? sprintf('<li class="group-file">'.__('From template set:').'<ul>%s</ul></li>',$list_tpl) : '');
+		} else {
+			foreach ($files as $k => $v)
+			{
+				if (strpos($v,$this->user_theme) === 0) {
+					$li = sprintf('<li class="default-file">%s</li>',$item);
+				} elseif ($this->parent_theme && strpos($v,$this->parent_theme) === 0) {
+					$li = sprintf('<li class="parent-file">%s</li>',$item);
+				} else {
+					$li = sprintf('<li>%s</li>',$item);
+				}
+				$list .= sprintf($li,$k,html::escapeHTML($k));
+			}
 		}
 
Index: plugins/themeEditor/locales/en/help/help.html
===================================================================
--- plugins/themeEditor/locales/en/help/help.html	(revision 2534)
+++ plugins/themeEditor/locales/en/help/help.html	(revision 2647)
@@ -17,10 +17,19 @@
 </ul>
 
+<p>Each section of files may have three sub-sections :</p>
+<ul>
+	<li>Files belonging to the current theme</li>
+	<li>Files belonging to the parent theme</li>
+	<li>Files belonging to the template set</li>
+</ul>
+
 <p>The bullet in front of each file can have three different colors:</p>
 <ul>
-<li><strong>Black</strong> means it is in the <code>default</code> theme.</li>
-<li><strong>Yellow </strong> means it belongs to the current theme.</li> 
+<li><strong>Yellow </strong> means it belongs to the current theme.</li>
 <li><strong>Red </strong> means it belongs to a parent theme.</li>
+<li><strong>Black</strong> means it is in the template set.</li>
 </ul>
+
+<p>The files belonging to the current theme are also in bold.</p>
 
 <h4>File mofidication</h4>
@@ -29,5 +38,5 @@
 <p>Be careful: Modifications are applied immediately after saving.</p>
 
-<p>If you modify a file that comes from the <code>default</code> theme, the file will be copied into your current theme.</p>
+<p>If you modify a file that comes from the template set or the parent theme, the file will be copied into your current theme.</p>
 
 <h4>Syntax highlighting</h4>
Index: plugins/themeEditor/locales/fr/help/help.html
===================================================================
--- plugins/themeEditor/locales/fr/help/help.html	(revision 2433)
+++ plugins/themeEditor/locales/fr/help/help.html	(revision 2647)
@@ -13,14 +13,23 @@
   <li>fichiers du thème&nbsp;: les templates,</li>
   <li>fichiers CSS&nbsp;: les feuilles de style,</li>
-  <li>fichiers JavaScript.</li>
+  <li>fichiers JavaScript,</li>
   <li>fichiers de traduction.</li>
+</ul>
+
+<p>Chaque groupe de fichiers peut contenir trois sous-groupes :</p>
+<ul>
+	<li>fichiers du thème actif,</li>
+	<li>fichiers du thème parent,</li>
+	<li>fichiers du jeu de "template".</li>
 </ul>
 
 <p>A la gauche de chaque fichier, chaque puce se voit attribuée une couleur :</p>
 <ul>
-<li><b>noire</b> indique qu'il se trouve dans le thème "default".</li>
-<li><b>jaune</b> indique qu'il fait partie du thème actif.</li> 
-<li><b>rouge</b> indique qu'il fait partie d'un thème parent.</li>
+<li><b>jaune</b> indique qu'il fait partie du thème actif.</li>
+<li><b>rouge</b> indique qu'il fait partie du thème parent.</li>
+<li><b>noire</b> indique qu'il se trouve dans le jeu de "template".</li>
 </ul>
+
+<p>Les fichiers du thème actif sont également repérés en gras.</p>
 
 <h4>Modification des fichiers</h4>
@@ -31,5 +40,5 @@
 <p>Les modifications sont immédiatement appliquées lors de la sauvegarde, soyez vigilants.</p>
 
-<p>A noter que si vous modifiez un fichier se trouvant dans le thème "default", celui-ci sera copié dans votre thème en cours d'utilisation.</p>
+<p>A noter que si vous modifiez un fichier se trouvant dans le jeu de "template" ou dans le thème parent, celui-ci sera copié dans votre thème en cours d'utilisation.</p>
 
 <h4>Coloration syntaxique</h4>
Index: plugins/themeEditor/style.css
===================================================================
--- plugins/themeEditor/style.css	(revision 2566)
+++ plugins/themeEditor/style.css	(revision 2647)
@@ -21,8 +21,16 @@
 #file-chooser li.default-file {
 	color: #f90;
+	font-weight: bold;
 }
 #file-chooser li.parent-file {
 	color:#c00;
 }
+#file-chooser li.group-file {
+	list-style: none;
+	margin-bottom: 1em;
+}
+#file-chooser li.group-file ul {
+	margin-top: .5em;
+}
 textarea {
 	font: 1em Monaco,"Courier New",Courier,monospace;
