added the ability to set the sort order for issue statuses
git-svn-id: http://redmine.rubyforge.org/svn/trunk@205 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
d29ba0b80f
commit
fe22797d69
|
@ -19,13 +19,16 @@ class IssueStatusesController < ApplicationController
|
|||
layout 'base'
|
||||
before_filter :require_admin
|
||||
|
||||
verify :method => :post, :only => [ :destroy, :create, :update, :move ],
|
||||
:redirect_to => { :action => :list }
|
||||
|
||||
def index
|
||||
list
|
||||
render :action => 'list' unless request.xhr?
|
||||
end
|
||||
|
||||
def list
|
||||
@issue_status_pages, @issue_statuses = paginate :issue_statuses, :per_page => 10
|
||||
@issue_status_pages, @issue_statuses = paginate :issue_statuses, :per_page => 25, :order => "position"
|
||||
render :action => "list", :layout => false if request.xhr?
|
||||
end
|
||||
|
||||
|
@ -55,6 +58,21 @@ class IssueStatusesController < ApplicationController
|
|||
else
|
||||
render :action => 'edit'
|
||||
end
|
||||
end
|
||||
|
||||
def move
|
||||
@issue_status = IssueStatus.find(params[:id])
|
||||
case params[:position]
|
||||
when 'highest'
|
||||
@issue_status.move_to_top
|
||||
when 'higher'
|
||||
@issue_status.move_higher
|
||||
when 'lower'
|
||||
@issue_status.move_lower
|
||||
when 'lowest'
|
||||
@issue_status.move_to_bottom
|
||||
end if params[:position]
|
||||
redirect_to :action => 'list'
|
||||
end
|
||||
|
||||
def destroy
|
||||
|
|
|
@ -25,7 +25,7 @@ class IssuesController < ApplicationController
|
|||
include IfpdfHelper
|
||||
|
||||
def show
|
||||
@status_options = @issue.status.workflows.find(:all, :include => :new_status, :conditions => ["role_id=? and tracker_id=?", self.logged_in_user.role_for_project(@project.id), @issue.tracker.id]).collect{ |w| w.new_status } if self.logged_in_user
|
||||
@status_options = @issue.status.workflows.find(:all, :order => 'position', :include => :new_status, :conditions => ["role_id=? and tracker_id=?", self.logged_in_user.role_for_project(@project.id), @issue.tracker.id]).collect{ |w| w.new_status } if self.logged_in_user
|
||||
@custom_values = @issue.custom_values.find(:all, :include => :custom_field)
|
||||
@journals_count = @issue.journals.count
|
||||
@journals = @issue.journals.find(:all, :include => [:user, :details], :limit => 15, :order => "journals.created_on desc")
|
||||
|
@ -83,7 +83,7 @@ class IssuesController < ApplicationController
|
|||
|
||||
def change_status
|
||||
#@history = @issue.histories.build(params[:history])
|
||||
@status_options = @issue.status.workflows.find(:all, :conditions => ["role_id=? and tracker_id=?", self.logged_in_user.role_for_project(@project.id), @issue.tracker.id]).collect{ |w| w.new_status } if self.logged_in_user
|
||||
@status_options = @issue.status.workflows.find(:all, :order => 'position', :include => :new_status, :conditions => ["role_id=? and tracker_id=?", self.logged_in_user.role_for_project(@project.id), @issue.tracker.id]).collect{ |w| w.new_status } if self.logged_in_user
|
||||
@new_status = IssueStatus.find(params[:new_status_id])
|
||||
if params[:confirm]
|
||||
begin
|
||||
|
|
|
@ -20,7 +20,7 @@ class ReportsController < ApplicationController
|
|||
before_filter :find_project, :authorize
|
||||
|
||||
def issue_report
|
||||
@statuses = IssueStatus.find :all
|
||||
@statuses = IssueStatus.find(:all, :order => 'position')
|
||||
|
||||
case params[:detail]
|
||||
when "tracker"
|
||||
|
|
|
@ -79,6 +79,6 @@ class RolesController < ApplicationController
|
|||
end
|
||||
@roles = Role.find :all
|
||||
@trackers = Tracker.find :all
|
||||
@statuses = IssueStatus.find(:all, :include => :workflows)
|
||||
@statuses = IssueStatus.find(:all, :include => :workflows, :order => 'position')
|
||||
end
|
||||
end
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
class IssueStatus < ActiveRecord::Base
|
||||
before_destroy :check_integrity
|
||||
has_many :workflows, :foreign_key => "old_status_id"
|
||||
acts_as_list
|
||||
|
||||
validates_presence_of :name
|
||||
validates_uniqueness_of :name
|
||||
|
|
|
@ -69,7 +69,7 @@ class Query < ActiveRecord::Base
|
|||
|
||||
def available_filters
|
||||
return @available_filters if @available_filters
|
||||
@available_filters = { "status_id" => { :type => :list_status, :order => 1, :values => IssueStatus.find(:all).collect{|s| [s.name, s.id.to_s] } },
|
||||
@available_filters = { "status_id" => { :type => :list_status, :order => 1, :values => IssueStatus.find(:all, :order => 'position').collect{|s| [s.name, s.id.to_s] } },
|
||||
"tracker_id" => { :type => :list, :order => 2, :values => Tracker.find(:all).collect{|s| [s.name, s.id.to_s] } },
|
||||
"priority_id" => { :type => :list, :order => 3, :values => Enumeration.find(:all, :conditions => ['opt=?','IPRI']).collect{|s| [s.name, s.id.to_s] } },
|
||||
"subject" => { :type => :text, :order => 8 },
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
<th><%=l(:field_status)%></th>
|
||||
<th><%=l(:field_is_default)%></th>
|
||||
<th><%=l(:field_is_closed)%></th>
|
||||
<th><%=l(:button_sort)%></th>
|
||||
<th></th>
|
||||
</tr></thead>
|
||||
<tbody>
|
||||
|
@ -17,6 +18,12 @@
|
|||
<td><div class="square" style="background:#<%= status.html_color %>;"></div> <%= link_to status.name, :action => 'edit', :id => status %></td>
|
||||
<td align="center"><%= image_tag 'true.png' if status.is_default? %></td>
|
||||
<td align="center"><%= image_tag 'true.png' if status.is_closed? %></td>
|
||||
<td align="center">
|
||||
<%= link_to image_tag('2uparrow.png', :alt => l(:label_sort_highest)), {:action => 'move', :id => status, :position => 'highest'}, :method => :post, :title => l(:label_sort_highest) %>
|
||||
<%= link_to image_tag('1uparrow.png', :alt => l(:label_sort_higher)), {:action => 'move', :id => status, :position => 'higher'}, :method => :post, :title => l(:label_sort_higher) %> -
|
||||
<%= link_to image_tag('1downarrow.png', :alt => l(:label_sort_lower)), {:action => 'move', :id => status, :position => 'lower'}, :method => :post, :title => l(:label_sort_lower) %>
|
||||
<%= link_to image_tag('2downarrow.png', :alt => l(:label_sort_lowest)), {:action => 'move', :id => status, :position => 'lowest'}, :method => :post, :title => l(:label_sort_lowest) %>
|
||||
</td>
|
||||
<td align="center">
|
||||
<%= button_to l(:button_delete), { :action => 'destroy', :id => status }, :confirm => l(:text_are_you_sure), :class => "button-small" %>
|
||||
</td>
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
class AddIssueStatusPosition < ActiveRecord::Migration
|
||||
def self.up
|
||||
add_column :issue_statuses, :position, :integer, :default => 1, :null => false
|
||||
IssueStatus.find(:all).each_with_index {|status, i| status.update_attribute(:position, i+1)}
|
||||
end
|
||||
|
||||
def self.down
|
||||
remove_column :issue_statuses, :position
|
||||
end
|
||||
end
|
|
@ -11,6 +11,7 @@ http://redmine.rubyforge.org/
|
|||
* settings are now stored in the database and editable through the application in: Admin -> Settings (config_custom.rb is no longer used)
|
||||
* mail notifications added when a document, a file or an attachment is added
|
||||
* tooltips added on Gantt chart and calender to view the details of the issues
|
||||
* ability to set the sort order for issue statuses
|
||||
* added missing fields to csv export: priority, start date, due date, done ratio
|
||||
* all icons replaced (new icons are based on GPL icon set: "KDE Crystal Diamond 2.5" -by paolino- and "kNeu! Alpha v0.1" -by Pablo Fabregat-)
|
||||
* added back "fixed version" field on issue screen and in filters
|
||||
|
|
|
@ -309,6 +309,10 @@ label_latest_revision: Neueste Neuausgabe
|
|||
label_view_revisions: Die Neuausgaben ansehen
|
||||
label_max_size: Maximale Größe
|
||||
label_on: auf
|
||||
label_sort_highest: Erste
|
||||
label_sort_higher: Aufzurichten
|
||||
label_sort_lower: Herabzusteigen
|
||||
label_sort_lowest: Letzter
|
||||
|
||||
button_login: Einloggen
|
||||
button_submit: Einreichen
|
||||
|
@ -332,6 +336,7 @@ button_move: Bewegen
|
|||
button_back: Rückkehr
|
||||
button_cancel: Annullieren
|
||||
button_activate: Aktivieren
|
||||
button_sort: Sortieren
|
||||
|
||||
text_select_mail_notifications: Aktionen für die Mailbenachrichtigung aktiviert werden soll.
|
||||
text_regexp_info: eg. ^[A-Z0-9]+$
|
||||
|
|
|
@ -309,6 +309,10 @@ label_latest_revision: Latest revision
|
|||
label_view_revisions: View revisions
|
||||
label_max_size: Maximum size
|
||||
label_on: 'on'
|
||||
label_sort_highest: Move to top
|
||||
label_sort_higher: Move up
|
||||
label_sort_lower: Move down
|
||||
label_sort_lowest: Move to bottom
|
||||
|
||||
button_login: Login
|
||||
button_submit: Submit
|
||||
|
@ -332,6 +336,7 @@ button_move: Move
|
|||
button_back: Back
|
||||
button_cancel: Cancel
|
||||
button_activate: Activate
|
||||
button_sort: Sort
|
||||
|
||||
text_select_mail_notifications: Select actions for which mail notifications should be sent.
|
||||
text_regexp_info: eg. ^[A-Z0-9]+$
|
||||
|
|
|
@ -309,6 +309,10 @@ label_latest_revision: La revisión más última
|
|||
label_view_revisions: Ver las revisiones
|
||||
label_max_size: Tamaño máximo
|
||||
label_on: en
|
||||
label_sort_highest: Primero
|
||||
label_sort_higher: Subir
|
||||
label_sort_lower: Bajar
|
||||
label_sort_lowest: Último
|
||||
|
||||
button_login: Conexión
|
||||
button_submit: Someter
|
||||
|
@ -332,6 +336,7 @@ button_move: Mover
|
|||
button_back: Atrás
|
||||
button_cancel: Cancelar
|
||||
button_activate: Activar
|
||||
button_sort: Clasificar
|
||||
|
||||
text_select_mail_notifications: Seleccionar las actividades que necesitan la activación de la notificación por mail.
|
||||
text_regexp_info: eg. ^[A-Z0-9]+$
|
||||
|
|
|
@ -309,6 +309,10 @@ label_latest_revision: Dernière révision
|
|||
label_view_revisions: Voir les révisions
|
||||
label_max_size: Taille maximale
|
||||
label_on: sur
|
||||
label_sort_highest: Remonter en premier
|
||||
label_sort_higher: Remonter
|
||||
label_sort_lower: Descendre
|
||||
label_sort_lowest: Descendre en dernier
|
||||
|
||||
button_login: Connexion
|
||||
button_submit: Soumettre
|
||||
|
@ -332,6 +336,7 @@ button_move: Déplacer
|
|||
button_back: Retour
|
||||
button_cancel: Annuler
|
||||
button_activate: Activer
|
||||
button_sort: Trier
|
||||
|
||||
text_select_mail_notifications: Sélectionner les actions pour lesquelles la notification par mail doit être activée.
|
||||
text_regexp_info: ex. ^[A-Z0-9]+$
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 461 B |
Binary file not shown.
After Width: | Height: | Size: 433 B |
Binary file not shown.
After Width: | Height: | Size: 576 B |
Binary file not shown.
After Width: | Height: | Size: 526 B |
Loading…
Reference in New Issue