Added a bit of AJAX on the SCM browser (tree view).
git-svn-id: http://redmine.rubyforge.org/svn/trunk@862 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
b30b6717a2
commit
8ca4d35dcc
|
@ -56,7 +56,11 @@ class RepositoriesController < ApplicationController
|
||||||
|
|
||||||
def browse
|
def browse
|
||||||
@entries = @repository.entries(@path, @rev)
|
@entries = @repository.entries(@path, @rev)
|
||||||
show_error and return unless @entries
|
if request.xhr?
|
||||||
|
@entries ? render(:partial => 'dir_list_content') : render(:nothing => true)
|
||||||
|
else
|
||||||
|
show_error unless @entries
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def changes
|
def changes
|
||||||
|
|
|
@ -1,26 +1,15 @@
|
||||||
<table class="list">
|
<table class="list">
|
||||||
<thead><tr>
|
<thead>
|
||||||
|
<tr id="root">
|
||||||
<th><%= l(:field_name) %></th>
|
<th><%= l(:field_name) %></th>
|
||||||
<th><%= l(:field_filesize) %></th>
|
<th><%= l(:field_filesize) %></th>
|
||||||
<th><%= l(:label_revision) %></th>
|
<th><%= l(:label_revision) %></th>
|
||||||
<th><%= l(:label_date) %></th>
|
<th><%= l(:label_date) %></th>
|
||||||
<th><%= l(:field_author) %></th>
|
<th><%= l(:field_author) %></th>
|
||||||
<th><%= l(:field_comments) %></th>
|
<th><%= l(:field_comments) %></th>
|
||||||
</tr></thead>
|
|
||||||
<tbody>
|
|
||||||
<% total_size = 0
|
|
||||||
@entries.each do |entry| %>
|
|
||||||
<tr class="<%= cycle 'odd', 'even' %>">
|
|
||||||
<td><%= link_to h(entry.name), { :action => (entry.is_dir? ? 'browse' : 'changes'), :id => @project, :path => entry.path, :rev => @rev }, :class => ("icon " + (entry.is_dir? ? 'icon-folder' : 'icon-file')) %></td>
|
|
||||||
<td align="right"><%= (entry.size ? number_to_human_size(entry.size) : "?") unless entry.is_dir? %></td>
|
|
||||||
<td align="right"><%= link_to(entry.lastrev.name, :action => 'revision', :id => @project, :rev => entry.lastrev.identifier) if entry.lastrev && entry.lastrev.identifier %></td>
|
|
||||||
<td align="center"><%= format_time(entry.lastrev.time) if entry.lastrev %></td>
|
|
||||||
<td align="center"><em><%=h(entry.lastrev.author) if entry.lastrev %></em></td>
|
|
||||||
<% changeset = @project.repository.changesets.find_by_revision(entry.lastrev.identifier) if entry.lastrev %>
|
|
||||||
<td><%=h truncate(changeset.comments, 100) unless changeset.nil? %></td>
|
|
||||||
</tr>
|
</tr>
|
||||||
<% total_size += entry.size if entry.size
|
</thead>
|
||||||
end %>
|
<tbody>
|
||||||
|
<%= render :partial => 'dir_list_content' %>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<p class="textright"><em><%= l(:label_total) %>: <%= number_to_human_size(total_size) %></em></p>
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
<% @entries.each do |entry| %>
|
||||||
|
<% tr_id = Digest::MD5.hexdigest(entry.path)
|
||||||
|
depth = params[:depth].to_i %>
|
||||||
|
<tr id="<%= tr_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)},
|
||||||
|
:update => tr_id,
|
||||||
|
:position => :after,
|
||||||
|
:success => "Element.addClassName('#{tr_id}', 'open');",
|
||||||
|
:condition => "!Element.hasClassName('#{tr_id}', 'open')"
|
||||||
|
},
|
||||||
|
{:href => url_for({:action => 'browse', :id => @project, :path => entry.path, :rev => @rev}),
|
||||||
|
:class => ('icon icon-folder'),
|
||||||
|
:style => "margin-left: #{18 * depth}px;"
|
||||||
|
}
|
||||||
|
else
|
||||||
|
link_to h(entry.name),
|
||||||
|
{:action => (entry.is_dir? ? 'browse' : 'changes'), :id => @project, :path => entry.path, :rev => @rev},
|
||||||
|
:class => 'icon icon-file',
|
||||||
|
:style => "margin-left: #{18 * depth}px;"
|
||||||
|
end %>
|
||||||
|
</td>
|
||||||
|
<td align="right"><%= (entry.size ? number_to_human_size(entry.size) : "?") unless entry.is_dir? %></td>
|
||||||
|
<td align="right"><%= link_to(entry.lastrev.name, :action => 'revision', :id => @project, :rev => entry.lastrev.identifier) if entry.lastrev && entry.lastrev.identifier %></td>
|
||||||
|
<td align="center"><%= format_time(entry.lastrev.time) if entry.lastrev %></td>
|
||||||
|
<td align="center"><em><%=h(entry.lastrev.author) if entry.lastrev %></em></td>
|
||||||
|
<% changeset = @project.repository.changesets.find_by_revision(entry.lastrev.identifier) if entry.lastrev %>
|
||||||
|
<td><%=h truncate(changeset.comments, 50) unless changeset.nil? %></td>
|
||||||
|
</tr>
|
||||||
|
<% end %>
|
Binary file not shown.
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 506 B |
Binary file not shown.
After Width: | Height: | Size: 488 B |
|
@ -1629,7 +1629,7 @@ Abstract.Insertion.prototype = {
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
var tagName = this.element.tagName.toUpperCase();
|
var tagName = this.element.tagName.toUpperCase();
|
||||||
if (['TBODY', 'TR'].include(tagName)) {
|
if (['TBODY', 'TR'].include(tagName)) {
|
||||||
this.insertContent(this.contentFromAnonymousTable());
|
this.insertContent(this.contentFromAnonymousTable()._reverse());
|
||||||
} else {
|
} else {
|
||||||
throw e;
|
throw e;
|
||||||
}
|
}
|
||||||
|
|
|
@ -432,6 +432,7 @@ vertical-align: middle;
|
||||||
.icon-txt { background-image: url(../images/txt.png); }
|
.icon-txt { background-image: url(../images/txt.png); }
|
||||||
.icon-file { background-image: url(../images/file.png); }
|
.icon-file { background-image: url(../images/file.png); }
|
||||||
.icon-folder { background-image: url(../images/folder.png); }
|
.icon-folder { background-image: url(../images/folder.png); }
|
||||||
|
.open .icon-folder { background-image: url(../images/folder_open.png); }
|
||||||
.icon-package { background-image: url(../images/package.png); }
|
.icon-package { background-image: url(../images/package.png); }
|
||||||
.icon-home { background-image: url(../images/home.png); }
|
.icon-home { background-image: url(../images/home.png); }
|
||||||
.icon-user { background-image: url(../images/user.png); }
|
.icon-user { background-image: url(../images/user.png); }
|
||||||
|
|
Loading…
Reference in New Issue