From: ppp <ttak...@gmail.com>
Subject: [Redmine] チケット一覧で表示される各項目の幅を自由に変えたい
Date: Tue, 19 May 2009 19:39:55 -0700 (PDT)
> チケット一覧で表示される各項目の幅を自由に変えたいのです。
> 例えば「題名」の幅をもっと広くしたいです。
>
> 可能であれば ブラウザから各人で幅変更できるように。
ちょっと探したところ、便利なライブラリがありましたので対応してみました。
JKL.Resizable - サイズ可変エレメント
http://www.kawa.net/works/js/jkl/resizable.html
上記からダウンロードした jkl-resizable.js を public/javascripts に置い
て以下のパッチをあててみてください。
チケット一覧のタイトル部分の項目と項目の間でマウスカーソルが変わるとこ
ろが掴めるようになります。
ただし、全体の横幅は変わらないなどの問題がありますので、必要であれば、
public/stylesheets/application.css の body の max-width を増やすなど、
css を調整するとよいかもしれません。
よろしければ参考にしてください。
p.s.
よくよく調べると、javascript による resizable element の実装ってたくさ
んありすぎて、いったいどれを使うべきなんでしょうね。Rails で採用してい
るので、script.aculo.us の標準で持っていてくれればよいのですけど。
diff -ruN redmine-0.7.1.orig/app/helpers/queries_helper.rb redmine-0.7.1/app/helpers/queries_helper.rb
--- redmine-0.7.1.orig/app/helpers/queries_helper.rb 2008-05-04 19:29:56.000000000 +0900
+++ redmine-0.7.1/app/helpers/queries_helper.rb 2009-05-20 16:25:21.000000000 +0900
@@ -23,8 +23,9 @@
def column_header(column)
column.sortable ? sort_header_tag(column.sortable, :caption => column.caption,
- :default_order => column.default_order) :
- content_tag('th', column.caption)
+ :default_order => column.default_order,
+ :id => "#{column.name}_header") :
+ content_tag('th', column.caption, :id => "#{column.name}_header")
end
def column_content(column, issue)
diff -ruN redmine-0.7.1.orig/app/views/issues/_list.rhtml redmine-0.7.1/app/views/issues/_list.rhtml
--- redmine-0.7.1.orig/app/views/issues/_list.rhtml 2008-05-04 19:30:02.000000000 +0900
+++ redmine-0.7.1/app/views/issues/_list.rhtml 2009-05-20 17:07:36.000000000 +0900
@@ -6,7 +6,7 @@
</th>
<%= sort_header_tag("#{Issue.table_name}.id", :caption => '#', :default_order => 'desc') %>
<% query.columns.each do |column| %>
- <%= column_header(column) %>
+ <%= column_header(column) %><%= content_tag('th', '', :id => "#{column.name}_east", :style => "width: 1px;") %>
<% end %>
</tr></thead>
<tbody>
@@ -14,9 +14,20 @@
<tr id="issue-<%= issue.id %>" class="issue hascontextmenu <%= cycle('odd', 'even') %> <%= "status-#{issue.status.position} priority-#{issue.priority.position}" %>">
<td class="checkbox"><%= check_box_tag("ids[]", issue.id, false, :id => nil) %></td>
<td><%= link_to issue.id, :controller => 'issues', :action => 'show', :id => issue %></td>
- <% query.columns.each do |column| %><%= content_tag 'td', column_content(column, issue), :class => column.name %><% end %>
+ <% query.columns.each do |column| %><%= content_tag 'td', column_content(column, issue), :class => column.name %><%= content_tag('td', "", :style => "width: 1px;") %><% end %>
</tr>
<% end -%>
</tbody>
</table>
<% end -%>
+<% javascript_tag do %>
+ window.onload = function() {
+ <% query.columns.each do |column| %>
+ var res1 = new JKL.Resizable('<%= column.name %>_header');
+ res1.setEast('<%= column.name %>_east');
+ <% end %>
+ }
+<% end %>
+<% content_for :header_tags do %>
+ <%= javascript_include_tag 'jkl-resizable' %>
+<% end %>