If repository path is not UTF-8, Ruby 1.9 shows trace. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4921 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
11e4c5c1ea
commit
1d6fbe5602
|
@ -132,10 +132,17 @@ module RepositoriesHelper
|
||||||
# do nothing here and try the next encoding
|
# do nothing here and try the next encoding
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
str = replace_invalid_utf8(str)
|
||||||
|
end
|
||||||
|
|
||||||
|
def replace_invalid_utf8(str)
|
||||||
if str.respond_to?(:force_encoding)
|
if str.respond_to?(:force_encoding)
|
||||||
str = str.encode("ASCII-8BIT", :invalid => :replace,
|
str.force_encoding('UTF-8')
|
||||||
|
if ! str.valid_encoding?
|
||||||
|
str = str.encode("US-ASCII", :invalid => :replace,
|
||||||
:undef => :replace, :replace => '?').encode("UTF-8")
|
:undef => :replace, :replace => '?').encode("UTF-8")
|
||||||
end
|
end
|
||||||
|
end
|
||||||
str
|
str
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -1,25 +1,27 @@
|
||||||
<% @entries.each do |entry| %>
|
<% @entries.each do |entry| %>
|
||||||
<% tr_id = Digest::MD5.hexdigest(entry.path)
|
<% tr_id = Digest::MD5.hexdigest(entry.path)
|
||||||
depth = params[:depth].to_i %>
|
depth = params[:depth].to_i %>
|
||||||
|
<% ent_path = replace_invalid_utf8(entry.path) %>
|
||||||
|
<% ent_name = replace_invalid_utf8(entry.name) %>
|
||||||
<tr id="<%= tr_id %>" class="<%= h params[:parent_id] %> entry <%= entry.kind %>">
|
<tr id="<%= tr_id %>" class="<%= h params[:parent_id] %> entry <%= entry.kind %>">
|
||||||
<td style="padding-left: <%=18 * depth%>px;" class="filename">
|
<td style="padding-left: <%=18 * depth%>px;" class="filename">
|
||||||
<% if entry.is_dir? %>
|
<% if entry.is_dir? %>
|
||||||
<span class="expander" onclick="<%= remote_function :url => {:action => 'show', :id => @project, :path => to_path_param(entry.path), :rev => @rev, :depth => (depth + 1), :parent_id => tr_id},
|
<span class="expander" onclick="<%= remote_function :url => {:action => 'show', :id => @project, :path => to_path_param(ent_path), :rev => @rev, :depth => (depth + 1), :parent_id => tr_id},
|
||||||
:method => :get,
|
:method => :get,
|
||||||
:update => { :success => tr_id },
|
:update => { :success => tr_id },
|
||||||
:position => :after,
|
:position => :after,
|
||||||
:success => "scmEntryLoaded('#{tr_id}')",
|
:success => "scmEntryLoaded('#{tr_id}')",
|
||||||
:condition => "scmEntryClick('#{tr_id}')"%>"> </span>
|
:condition => "scmEntryClick('#{tr_id}')"%>"> </span>
|
||||||
<% end %>
|
<% end %>
|
||||||
<%= link_to h(entry.name),
|
<%= link_to h(ent_name),
|
||||||
{:action => (entry.is_dir? ? 'show' : 'changes'), :id => @project, :path => to_path_param(entry.path), :rev => @rev},
|
{:action => (entry.is_dir? ? 'show' : 'changes'), :id => @project, :path => to_path_param(ent_path), :rev => @rev},
|
||||||
:class => (entry.is_dir? ? 'icon icon-folder' : "icon icon-file #{Redmine::MimeType.css_class_of(entry.name)}")%>
|
:class => (entry.is_dir? ? 'icon icon-folder' : "icon icon-file #{Redmine::MimeType.css_class_of(ent_name)}")%>
|
||||||
</td>
|
</td>
|
||||||
<td class="size"><%= (entry.size ? number_to_human_size(entry.size) : "?") unless entry.is_dir? %></td>
|
<td class="size"><%= (entry.size ? number_to_human_size(entry.size) : "?") unless entry.is_dir? %></td>
|
||||||
<% changeset = @project.repository.find_changeset_by_name(entry.lastrev.identifier) if entry.lastrev && entry.lastrev.identifier %>
|
<% changeset = @project.repository.find_changeset_by_name(entry.lastrev.identifier) if entry.lastrev && entry.lastrev.identifier %>
|
||||||
<td class="revision"><%= link_to_revision(changeset, @project) if changeset %></td>
|
<td class="revision"><%= link_to_revision(changeset, @project) if changeset %></td>
|
||||||
<td class="age"><%= distance_of_time_in_words(entry.lastrev.time, Time.now) if entry.lastrev && entry.lastrev.time %></td>
|
<td class="age"><%= distance_of_time_in_words(entry.lastrev.time, Time.now) if entry.lastrev && entry.lastrev.time %></td>
|
||||||
<td class="author"><%= changeset.nil? ? h(entry.lastrev.author.to_s.split('<').first) : changeset.author if entry.lastrev %></td>
|
<td class="author"><%= changeset.nil? ? h(replace_invalid_utf8(entry.lastrev.author.to_s.split('<').first)) : changeset.author if entry.lastrev %></td>
|
||||||
<td class="comments"><%=h truncate(changeset.comments, :length => 50) unless changeset.nil? %></td>
|
<td class="comments"><%=h truncate(changeset.comments, :length => 50) unless changeset.nil? %></td>
|
||||||
</tr>
|
</tr>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
Loading…
Reference in New Issue