Refactor: makes issue id a regular QueryColumn.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11447 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
@@ -382,10 +382,10 @@ module IssuesHelper
|
||||
|
||||
export = FCSV.generate(:col_sep => l(:general_csv_separator)) do |csv|
|
||||
# csv header fields
|
||||
csv << [ "#" ] + columns.collect {|c| Redmine::CodesetUtil.from_utf8(c.caption.to_s, encoding) }
|
||||
csv << columns.collect {|c| Redmine::CodesetUtil.from_utf8(c.caption.to_s, encoding) }
|
||||
# csv lines
|
||||
issues.each do |issue|
|
||||
csv << [ issue.id.to_s ] + columns.collect {|c| Redmine::CodesetUtil.from_utf8(csv_content(c, issue), encoding) }
|
||||
csv << columns.collect {|c| Redmine::CodesetUtil.from_utf8(csv_content(c, issue), encoding) }
|
||||
end
|
||||
end
|
||||
export
|
||||
|
||||
@@ -67,7 +67,9 @@ module QueriesHelper
|
||||
when 'Date'
|
||||
format_date(value)
|
||||
when 'Fixnum'
|
||||
if column.name == :done_ratio
|
||||
if column.name == :id
|
||||
link_to value, issue_path(issue)
|
||||
elsif column.name == :done_ratio
|
||||
progress_bar(value, :width => '80px')
|
||||
else
|
||||
value.to_s
|
||||
|
||||
@@ -20,6 +20,7 @@ class IssueQuery < Query
|
||||
self.queried_class = Issue
|
||||
|
||||
self.available_columns = [
|
||||
QueryColumn.new(:id, :sortable => "#{Issue.table_name}.id", :default_order => 'desc', :caption => '#', :frozen => true),
|
||||
QueryColumn.new(:project, :sortable => "#{Project.table_name}.name", :groupable => true),
|
||||
QueryColumn.new(:tracker, :sortable => "#{Tracker.table_name}.position", :groupable => true),
|
||||
QueryColumn.new(:parent, :sortable => ["#{Issue.table_name}.root_id", "#{Issue.table_name}.lft ASC"], :default_order => 'desc', :caption => :field_parent_issue),
|
||||
@@ -216,10 +217,6 @@ class IssueQuery < Query
|
||||
@available_columns
|
||||
end
|
||||
|
||||
def sortable_columns
|
||||
{'id' => "#{Issue.table_name}.id"}.merge(super)
|
||||
end
|
||||
|
||||
def default_columns_names
|
||||
@default_columns_names ||= begin
|
||||
default_columns = Setting.issue_list_default_columns.map(&:to_sym)
|
||||
|
||||
+9
-3
@@ -28,11 +28,12 @@ class QueryColumn
|
||||
end
|
||||
self.default_order = options[:default_order]
|
||||
@inline = options.key?(:inline) ? options[:inline] : true
|
||||
@caption_key = options[:caption] || "field_#{name}"
|
||||
@caption_key = options[:caption] || "field_#{name}".to_sym
|
||||
@frozen = options[:frozen]
|
||||
end
|
||||
|
||||
def caption
|
||||
l(@caption_key)
|
||||
@caption_key.is_a?(Symbol) ? l(@caption_key) : @caption_key
|
||||
end
|
||||
|
||||
# Returns true if the column is sortable, otherwise false
|
||||
@@ -48,6 +49,10 @@ class QueryColumn
|
||||
@inline
|
||||
end
|
||||
|
||||
def frozen?
|
||||
@frozen
|
||||
end
|
||||
|
||||
def value(object)
|
||||
object.send name
|
||||
end
|
||||
@@ -382,9 +387,10 @@ class Query < ActiveRecord::Base
|
||||
|
||||
def columns
|
||||
# preserve the column_names order
|
||||
(has_default_columns? ? default_columns_names : column_names).collect do |name|
|
||||
cols = (has_default_columns? ? default_columns_names : column_names).collect do |name|
|
||||
available_columns.find { |col| col.name == name }
|
||||
end.compact
|
||||
available_columns.select(&:frozen?) | cols
|
||||
end
|
||||
|
||||
def inline_columns
|
||||
|
||||
@@ -9,7 +9,6 @@
|
||||
:onclick => 'toggleIssuesSelection(this); return false;',
|
||||
:title => "#{l(:button_check_all)}/#{l(:button_uncheck_all)}" %>
|
||||
</th>
|
||||
<%= sort_header_tag('id', :caption => '#', :default_order => 'desc') %>
|
||||
<% query.inline_columns.each do |column| %>
|
||||
<%= column_header(column) %>
|
||||
<% end %>
|
||||
@@ -32,13 +31,12 @@
|
||||
<% end %>
|
||||
<tr id="issue-<%= issue.id %>" class="hascontextmenu <%= cycle('odd', 'even') %> <%= issue.css_classes %> <%= level > 0 ? "idnt idnt-#{level}" : nil %>">
|
||||
<td class="checkbox hide-when-print"><%= check_box_tag("ids[]", issue.id, false, :id => nil) %></td>
|
||||
<td class="id"><%= link_to issue.id, issue_path(issue) %></td>
|
||||
<%= raw query.inline_columns.map {|column| "<td class=\"#{column.css_classes}\">#{column_content(column, issue)}</td>"}.join %>
|
||||
</tr>
|
||||
<% @query.block_columns.each do |column|
|
||||
if (text = column_content(column, issue)) && text.present? -%>
|
||||
<tr class="<%= current_cycle %>">
|
||||
<td colspan="<%= @query.inline_columns.size + 2 %>" class="<%= column.css_classes %>"><%= text %></td>
|
||||
<td colspan="<%= @query.inline_columns.size + 1 %>" class="<%= column.css_classes %>"><%= text %></td>
|
||||
</tr>
|
||||
<% end -%>
|
||||
<% end -%>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<%= label_tag "available_columns", l(:description_available_columns) %>
|
||||
<br />
|
||||
<%= select_tag 'available_columns',
|
||||
options_for_select((query.available_inline_columns - query.columns).collect {|column| [column.caption, column.name]}),
|
||||
options_for_select((query.available_inline_columns - query.columns).reject(&:frozen?).collect {|column| [column.caption, column.name]}),
|
||||
:multiple => true, :size => 10, :style => "width:150px",
|
||||
:ondblclick => "moveOptions(this.form.available_columns, this.form.selected_columns);" %>
|
||||
</td>
|
||||
@@ -18,7 +18,7 @@
|
||||
<%= label_tag "selected_columns", l(:description_selected_columns) %>
|
||||
<br />
|
||||
<%= select_tag((defined?(tag_name) ? tag_name : 'c[]'),
|
||||
options_for_select(query.inline_columns.collect {|column| [column.caption, column.name]}),
|
||||
options_for_select((query.inline_columns & query.available_inline_columns).reject(&:frozen?).collect {|column| [column.caption, column.name]}),
|
||||
:id => 'selected_columns', :multiple => true, :size => 10, :style => "width:150px",
|
||||
:ondblclick => "moveOptions(this.form.selected_columns, this.form.available_columns);") %>
|
||||
</td>
|
||||
|
||||
Reference in New Issue
Block a user