git-svn-id: http://redmine.rubyforge.org/svn/trunk@800 e93f8b46-1217-0410-a6f0-8f06a7374b81tags/0.6.0
@@ -59,6 +59,21 @@ class EnumerationsController < ApplicationController | |||
end | |||
end | |||
def move | |||
@enumeration = Enumeration.find(params[:id]) | |||
case params[:position] | |||
when 'highest' | |||
@enumeration.move_to_top | |||
when 'higher' | |||
@enumeration.move_higher | |||
when 'lower' | |||
@enumeration.move_lower | |||
when 'lowest' | |||
@enumeration.move_to_bottom | |||
end if params[:position] | |||
redirect_to :action => 'index' | |||
end | |||
def destroy | |||
Enumeration.find(params[:id]).destroy | |||
flash[:notice] = l(:notice_successful_delete) |
@@ -16,27 +16,33 @@ | |||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
class Enumeration < ActiveRecord::Base | |||
acts_as_list :scope => 'opt = \'#{opt}\'' | |||
before_destroy :check_integrity | |||
validates_presence_of :opt, :name | |||
validates_uniqueness_of :name, :scope => [:opt] | |||
validates_length_of :name, :maximum => 30 | |||
validates_format_of :name, :with => /^[\w\s\'\-]*$/i | |||
OPTIONS = { | |||
"IPRI" => :enumeration_issue_priorities, | |||
"DCAT" => :enumeration_doc_categories, | |||
"ACTI" => :enumeration_activities | |||
}.freeze | |||
def self.get_values(option) | |||
find(:all, :conditions => ['opt=?', option]) | |||
end | |||
OPTIONS = { | |||
"IPRI" => :enumeration_issue_priorities, | |||
"DCAT" => :enumeration_doc_categories, | |||
"ACTI" => :enumeration_activities | |||
}.freeze | |||
def self.get_values(option) | |||
find(:all, :conditions => {:opt => option}, :order => 'position') | |||
end | |||
def option_name | |||
OPTIONS[self.opt] | |||
end | |||
#def <=>(enumeration) | |||
# position <=> enumeration.position | |||
#end | |||
def to_s; name end | |||
private |
@@ -1,19 +1,25 @@ | |||
<h2><%=l(:label_enumerations)%></h2> | |||
| |||
<% Enumeration::OPTIONS.each do |option, name| %> | |||
<h3><%= l(name) %></h3> | |||
<% enumerations = Enumeration.get_values(option) %> | |||
<% if enumerations.any? %> | |||
<table class="list"> | |||
<% enumerations.each do |enumeration| %> | |||
<tr class="<%= cycle('odd', 'even') %>"> | |||
<td><%= link_to enumeration.name, :action => 'edit', :id => enumeration %></td> | |||
<td style="width:15%;"> | |||
<%= link_to image_tag('2uparrow.png', :alt => l(:label_sort_highest)), {:action => 'move', :id => enumeration, :position => 'highest'}, :method => :post, :title => l(:label_sort_highest) %> | |||
<%= link_to image_tag('1uparrow.png', :alt => l(:label_sort_higher)), {:action => 'move', :id => enumeration, :position => 'higher'}, :method => :post, :title => l(:label_sort_higher) %> - | |||
<%= link_to image_tag('1downarrow.png', :alt => l(:label_sort_lower)), {:action => 'move', :id => enumeration, :position => 'lower'}, :method => :post, :title => l(:label_sort_lower) %> | |||
<%= link_to image_tag('2downarrow.png', :alt => l(:label_sort_lowest)), {:action => 'move', :id => enumeration, :position => 'lowest'}, :method => :post, :title => l(:label_sort_lowest) %> | |||
</td> | |||
</tr> | |||
<% end %> | |||
</table> | |||
<% reset_cycle %> | |||
<% end %> | |||
<% if params[:opt]==option %> | |||
<h3><%= l(name) %></h3> | |||
<ul> | |||
<% for value in Enumeration.find(:all, :conditions => ["opt = ?", option]) %> | |||
<li><%= link_to value.name, :action => 'edit', :id => value %></li> | |||
<% end %> | |||
</ul> | |||
<p><%= link_to l(:label_enumeration_new), { :action => 'new', :opt => option }, :class => "icon icon-add" %></p> | |||
<% else %> | |||
<h3><%= link_to l(name), :opt => option %></h3> | |||
<% end %> | |||
<% end %> | |||
<p><%= link_to l(:label_enumeration_new), { :action => 'new', :opt => option } %></p> | |||
<% end %> |
@@ -0,0 +1,12 @@ | |||
class AddEnumerationsPosition < ActiveRecord::Migration | |||
def self.up | |||
add_column :enumerations, :position, :integer, :default => 1, :null => false | |||
Enumeration.find(:all).group_by(&:opt).each_value do |enums| | |||
enums.each_with_index {|enum, i| enum.update_attribute(:position, i+1)} | |||
end | |||
end | |||
def self.down | |||
remove_column :enumerations, :position | |||
end | |||
end |