From 1930cf3d4603f996e1639ca535b3b6a5b2604d44 Mon Sep 17 00:00:00 2001
From: Jean-Philippe Lang <jp_lang@yahoo.fr>
Date: Mon, 4 May 2009 18:04:09 +0000
Subject: [PATCH] Adds group folding on issue list (#2679).

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@2711 e93f8b46-1217-0410-a6f0-8f06a7374b81
---
 app/views/issues/_list.rhtml       |  3 ++-
 public/javascripts/application.js  | 10 ++++++++++
 public/stylesheets/application.css |  6 +++---
 3 files changed, 15 insertions(+), 4 deletions(-)

diff --git a/app/views/issues/_list.rhtml b/app/views/issues/_list.rhtml
index 89756e42c..43a41cd77 100644
--- a/app/views/issues/_list.rhtml
+++ b/app/views/issues/_list.rhtml
@@ -15,8 +15,9 @@
   <% if @query.grouped? && issue.send(@query.group_by) != group %>
     <% group = issue.send(@query.group_by) %>
     <% reset_cycle %>
-    <tr class="group">
+    <tr class="group open">
     	<td colspan="<%= query.columns.size + 2 %>">
+    		<span class="expander" onclick="toggleRowGroup(this); return false;">&nbsp;</span>
       	<%= group.blank? ? 'None' : group %> <span class="count">(<%= @issue_count_by_group[group] %>)</span>
     	</td>
 		</tr>
diff --git a/public/javascripts/application.js b/public/javascripts/application.js
index 3becbeb21..93d4a8bda 100644
--- a/public/javascripts/application.js
+++ b/public/javascripts/application.js
@@ -23,6 +23,16 @@ function showAndScrollTo(id, focus) {
 	Element.scrollTo(id);
 }
 
+function toggleRowGroup(el) {
+	var tr = Element.up(el, 'tr');
+	var n = Element.next(tr);
+	tr.toggleClassName('open');
+	while (n != undefined && !n.hasClassName('group')) {
+		Element.toggle(n);
+		n = Element.next(n);
+	}
+}
+
 var fileFieldCount = 1;
 
 function addFileField() {
diff --git a/public/stylesheets/application.css b/public/stylesheets/application.css
index a2ccb9026..b3db22619 100644
--- a/public/stylesheets/application.css
+++ b/public/stylesheets/application.css
@@ -102,11 +102,11 @@ tr.entry td.filename { width: 30%; }
 tr.entry td.size { text-align: right; font-size: 90%; }
 tr.entry td.revision, tr.entry td.author { text-align: center; }
 tr.entry td.age { text-align: right; }
-
-tr.entry span.expander {background-image: url(../images/bullet_toggle_plus.png); padding-left: 8px; margin-left: 0; cursor: pointer;}
-tr.entry.open span.expander {background-image: url(../images/bullet_toggle_minus.png);}
 tr.entry.file td.filename a { margin-left: 16px; }
 
+tr span.expander {background-image: url(../images/bullet_toggle_plus.png); padding-left: 8px; margin-left: 0; cursor: pointer;}
+tr.open span.expander {background-image: url(../images/bullet_toggle_minus.png);}
+
 tr.changeset td.author { text-align: center; width: 15%; }
 tr.changeset td.committed_on { text-align: center; width: 15%; }
 
-- 
GitLab