]> source.dussan.org Git - redmine.git/commitdiff
SCM browser: directories can now be collapsed and re-expanded with no additional...
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Mon, 22 Oct 2007 19:34:21 +0000 (19:34 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Mon, 22 Oct 2007 19:34:21 +0000 (19:34 +0000)
git-svn-id: http://redmine.rubyforge.org/svn/trunk@863 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/views/repositories/_dir_list.rhtml
app/views/repositories/_dir_list_content.rhtml
public/javascripts/application.js

index b9c3fd54c6ec60eb4cb159bee4a8c334b7d05d57..1ed623ae8f0764b585ba907e60863306fd2c685f 100644 (file)
@@ -1,4 +1,4 @@
-<table class="list">
+<table class="list" id="browser">
 <thead>
 <tr id="root">
 <th><%= l(:field_name) %></th>
index 742da4951bce84e3cc6f081e28719e3d57ecb313..3dfe4319baa8a42259c56fdf591b9d8bcb176810 100644 (file)
@@ -1,15 +1,15 @@
 <% @entries.each do |entry| %>
 <% tr_id = Digest::MD5.hexdigest(entry.path)
    depth = params[:depth].to_i %>
-<tr id="<%= tr_id %>">
+<tr id="<%= tr_id %>" class="<%= params[:parent_id] %>">
 <td>
 <%= if entry.is_dir?
   link_to_remote h(entry.name),
-                 {:url => {:action => 'browse', :id => @project, :path => entry.path, :rev => @rev, :depth => (depth + 1)},
+                 {:url => {:action => 'browse', :id => @project, :path => entry.path, :rev => @rev, :depth => (depth + 1), :parent_id => tr_id},
                   :update => tr_id,
                   :position => :after,
-                  :success => "Element.addClassName('#{tr_id}', 'open');",
-                  :condition => "!Element.hasClassName('#{tr_id}', 'open')"
+                  :success => "scmEntryLoaded('#{tr_id}')",
+                  :condition => "scmEntryClick('#{tr_id}')"
                  },
                  {:href => url_for({:action => 'browse', :id => @project, :path => entry.path, :rev => @rev}),
                   :class => ('icon icon-folder'),
index bf86f398af9fe2b46d92d027aeb634bdd89aca29..8432685ddc9061aad8b43456c805737cf416e722 100644 (file)
@@ -59,6 +59,40 @@ function checkBulkEdit(form) {
     return false;
 }
 
+function collapseScmEntry(id) {
+    var els = document.getElementsByClassName(id, 'browser');
+       for (var i = 0; i < els.length; i++) {
+          collapseScmEntry(els[i].id);
+       Element.hide(els[i]);
+    }
+    $(id).removeClassName('open');
+}
+
+function expandScmEntry(id) {
+    var els = document.getElementsByClassName(id, 'browser');
+       for (var i = 0; i < els.length; i++) {
+       Element.show(els[i]);
+    }
+    $(id).addClassName('open');
+}
+
+function scmEntryClick(id) {
+    el = $(id);
+    if (el.hasClassName('open')) {
+        collapseScmEntry(id);
+        return false;
+    } else if (el.hasClassName('loaded')) {
+        expandScmEntry(id);
+        return false;
+    }
+    return true;
+}
+
+function scmEntryLoaded(id) {
+    Element.addClassName(id, 'open');
+    Element.addClassName(id, 'loaded');
+}
+
 /* shows and hides ajax indicator */
 Ajax.Responders.register({
     onCreate: function(){