diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2007-10-04 17:04:50 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2007-10-04 17:04:50 +0000 |
commit | c216ab325bc56123819fb5b700a759753959ead8 (patch) | |
tree | a90493432ae7a2ca681c193e65627d16341bf53e | |
parent | 479b9b54336c3fa5ce3f9fccb56307a52b48dd0c (diff) | |
download | redmine-c216ab325bc56123819fb5b700a759753959ead8.tar.gz redmine-c216ab325bc56123819fb5b700a759753959ead8.zip |
Added position on Enumeration model.
git-svn-id: http://redmine.rubyforge.org/svn/trunk@800 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r-- | app/controllers/enumerations_controller.rb | 15 | ||||
-rw-r--r-- | app/models/enumeration.rb | 28 | ||||
-rw-r--r-- | app/views/enumerations/list.rhtml | 38 | ||||
-rw-r--r-- | db/migrate/072_add_enumerations_position.rb | 12 |
4 files changed, 66 insertions, 27 deletions
diff --git a/app/controllers/enumerations_controller.rb b/app/controllers/enumerations_controller.rb index e77af49ab..7a7f1685a 100644 --- a/app/controllers/enumerations_controller.rb +++ b/app/controllers/enumerations_controller.rb @@ -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) diff --git a/app/models/enumeration.rb b/app/models/enumeration.rb index 46d350a21..b0ad48bc7 100644 --- a/app/models/enumeration.rb +++ b/app/models/enumeration.rb @@ -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 diff --git a/app/views/enumerations/list.rhtml b/app/views/enumerations/list.rhtml index f7756ce30..f92ca0a31 100644 --- a/app/views/enumerations/list.rhtml +++ b/app/views/enumerations/list.rhtml @@ -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 %>
\ No newline at end of file +<p><%= link_to l(:label_enumeration_new), { :action => 'new', :opt => option } %></p> +<% end %> diff --git a/db/migrate/072_add_enumerations_position.rb b/db/migrate/072_add_enumerations_position.rb new file mode 100644 index 000000000..7def86772 --- /dev/null +++ b/db/migrate/072_add_enumerations_position.rb @@ -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 |