Feature #2530 » projectStatuses.patch
app/models/principal.rb (kopia robocza) | ||
---|---|---|
19 | 19 |
set_table_name 'users' |
20 | 20 | |
21 | 21 |
has_many :members, :foreign_key => 'user_id', :dependent => :destroy |
22 |
has_many :memberships, :class_name => 'Member', :foreign_key => 'user_id', :include => [ :project, :roles ], :conditions => "#{Project.table_name}.status=#{Project::STATUS_ACTIVE}", :order => "#{Project.table_name}.name"
|
|
22 |
has_many :memberships, :class_name => 'Member', :foreign_key => 'user_id', :include => [ :project, :roles ], :conditions => "#{Project.table_name}.status_id IN (SELECT ps.id FROM #{ProjectStatus.table_name} ps WHERE ps.is_archived = 0)", :order => "#{Project.table_name}.name"
|
|
23 | 23 |
has_many :projects, :through => :memberships |
24 | 24 | |
25 | 25 |
# Groups and active users |
app/models/project_status.rb (wersja 0) | ||
---|---|---|
1 |
# redMine - project management software |
|
2 |
# Copyright (C) 2006 Jean-Philippe Lang |
|
3 |
# |
|
4 |
# This program is free software; you can redistribute it and/or |
|
5 |
# modify it under the terms of the GNU General Public License |
|
6 |
# as published by the Free Software Foundation; either version 2 |
|
7 |
# of the License, or (at your option) any later version. |
|
8 |
# |
|
9 |
# This program is distributed in the hope that it will be useful, |
|
10 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
11 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
12 |
# GNU General Public License for more details. |
|
13 |
# |
|
14 |
# You should have received a copy of the GNU General Public License |
|
15 |
# along with this program; if not, write to the Free Software |
|
16 |
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
|
17 | ||
18 |
class ProjectStatus < ActiveRecord::Base |
|
19 |
before_destroy :check_integrity |
|
20 |
has_many :workflows, :foreign_key => "old_status_id", :dependent => :delete_all |
|
21 |
acts_as_list |
|
22 | ||
23 |
validates_presence_of :name |
|
24 |
validates_uniqueness_of :name |
|
25 |
validates_length_of :name, :maximum => 30 |
|
26 |
validates_format_of :name, :with => /^[\w\s\'\-]*$/i |
|
27 | ||
28 |
def after_save |
|
29 |
ProjectStatus.update_all("is_default=#{connection.quoted_false}", ['id <> ?', id]) if self.is_default? |
|
30 |
end |
|
31 |
|
|
32 |
# Returns the default status for new issues |
|
33 |
def self.default |
|
34 |
find(:first, :conditions =>["is_default=?", true]) |
|
35 |
end |
|
36 | ||
37 |
def <=>(status) |
|
38 |
position <=> status.position |
|
39 |
end |
|
40 |
|
|
41 |
def to_s; name end |
|
42 | ||
43 |
private |
|
44 |
def check_integrity |
|
45 |
raise "Can't delete status" if Project.find(:first, :conditions => ["status_id=?", self.id]) |
|
46 |
end |
|
47 |
end |
app/models/mailer.rb (kopia robocza) | ||
---|---|---|
295 | 295 | |
296 | 296 |
s = ARCondition.new ["#{IssueStatus.table_name}.is_closed = ? AND #{Issue.table_name}.due_date <= ?", false, days.day.from_now.to_date] |
297 | 297 |
s << "#{Issue.table_name}.assigned_to_id IS NOT NULL" |
298 |
s << "#{Project.table_name}.status = #{Project::STATUS_ACTIVE}"
|
|
298 |
s << "#{Project.table_name}.status_id IN (SELECT ps.id FROM #{ProjectStatus.table_name} ps WHERE ps.is_archived = 0)"
|
|
299 | 299 |
s << "#{Issue.table_name}.project_id = #{project.id}" if project |
300 | 300 |
s << "#{Issue.table_name}.tracker_id = #{tracker.id}" if tracker |
301 | 301 |
app/models/project.rb (kopia robocza) | ||
---|---|---|
16 | 16 |
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
17 | 17 | |
18 | 18 |
class Project < ActiveRecord::Base |
19 |
# Project statuses |
|
20 |
STATUS_ACTIVE = 1 |
|
21 |
STATUS_ARCHIVED = 9 |
|
19 |
belongs_to :status, :class_name => 'ProjectStatus', :foreign_key => 'status_id' |
|
22 | 20 |
|
23 | 21 |
# Specific overidden Activities |
24 | 22 |
has_many :time_entry_activities do |
... | ... | |
80 | 78 |
before_destroy :delete_all_members |
81 | 79 | |
82 | 80 |
named_scope :has_module, lambda { |mod| { :conditions => ["#{Project.table_name}.id IN (SELECT em.project_id FROM #{EnabledModule.table_name} em WHERE em.name=?)", mod.to_s] } } |
83 |
named_scope :active, { :conditions => "#{Project.table_name}.status = #{STATUS_ACTIVE}"}
|
|
81 |
named_scope :active, { :conditions => "#{Project.table_name}.status_id IN (SELECT ps.id FROM #{ProjectStatus.table_name} ps WHERE ps.is_archived = 0)"}
|
|
84 | 82 |
named_scope :all_public, { :conditions => { :is_public => true } } |
85 | 83 |
named_scope :visible, lambda { { :conditions => Project.visible_by(User.current) } } |
86 | 84 |
|
... | ... | |
120 | 118 |
# Projects.visible_by(normal_user) => "projects.status = 1 AND projects.is_public = 1" |
121 | 119 |
def self.visible_by(user=nil) |
122 | 120 |
user ||= User.current |
121 |
base_statement = "#{Project.table_name}.status_id IN (SELECT ps.id FROM #{ProjectStatus.table_name} ps WHERE ps.is_archived = 0)" #status active |
|
123 | 122 |
if user && user.admin? |
124 |
return "#{Project.table_name}.status=#{Project::STATUS_ACTIVE}"
|
|
123 |
return base_statement
|
|
125 | 124 |
elsif user && user.memberships.any? |
126 |
return "#{Project.table_name}.status=#{Project::STATUS_ACTIVE} AND (#{Project.table_name}.is_public = #{connection.quoted_true} or #{Project.table_name}.id IN (#{user.memberships.collect{|m| m.project_id}.join(',')}))"
|
|
125 |
return base_statement + " AND (#{Project.table_name}.is_public = #{connection.quoted_true} or #{Project.table_name}.id IN (#{user.memberships.collect{|m| m.project_id}.join(',')}))"
|
|
127 | 126 |
else |
128 |
return "#{Project.table_name}.status=#{Project::STATUS_ACTIVE} AND #{Project.table_name}.is_public = #{connection.quoted_true}"
|
|
127 |
return base_statement + " AND #{Project.table_name}.is_public = #{connection.quoted_true}"
|
|
129 | 128 |
end |
130 | 129 |
end |
131 | 130 |
|
132 | 131 |
def self.allowed_to_condition(user, permission, options={}) |
133 | 132 |
statements = [] |
134 |
base_statement = "#{Project.table_name}.status=#{Project::STATUS_ACTIVE}"
|
|
133 |
base_statement = "#{Project.table_name}.status_id IN (SELECT ps.id FROM #{ProjectStatus.table_name} ps WHERE ps.is_archived = 0)" #status active
|
|
135 | 134 |
if perm = Redmine::AccessControl.permission(permission) |
136 | 135 |
unless perm.project_module.nil? |
137 | 136 |
# If the permission belongs to a project module, make sure the module is enabled |
... | ... | |
233 | 232 |
end |
234 | 233 |
|
235 | 234 |
def active? |
236 |
self.status == STATUS_ACTIVE
|
|
235 |
!self.status.is_archived
|
|
237 | 236 |
end |
238 | 237 |
|
239 | 238 |
# Archives the project and its descendants recursively |
... | ... | |
242 | 241 |
children.each do |subproject| |
243 | 242 |
subproject.archive |
244 | 243 |
end |
245 |
update_attribute :status, STATUS_ARCHIVED
|
|
244 |
update_attribute :status, ProjectStatus.find_all_by_is_archived(true).first
|
|
246 | 245 |
end |
247 | 246 |
|
248 | 247 |
# Unarchives the project |
249 | 248 |
# All its ancestors must be active |
250 | 249 |
def unarchive |
251 | 250 |
return false if ancestors.detect {|a| !a.active?} |
252 |
update_attribute :status, STATUS_ACTIVE
|
|
251 |
update_attribute :status, ProjectStatus.find_all_by_is_archived(false).first
|
|
253 | 252 |
end |
254 | 253 |
|
255 | 254 |
# Returns an array of projects the project can be moved to |
... | ... | |
300 | 299 |
@rolled_up_trackers ||= |
301 | 300 |
Tracker.find(:all, :include => :projects, |
302 | 301 |
:select => "DISTINCT #{Tracker.table_name}.*", |
303 |
:conditions => ["#{Project.table_name}.lft >= ? AND #{Project.table_name}.rgt <= ? AND #{Project.table_name}.status = #{STATUS_ACTIVE}", lft, rgt],
|
|
302 |
:conditions => ["#{Project.table_name}.lft >= ? AND #{Project.table_name}.rgt <= ? AND #{Project.table_name}.status_id IN (SELECT ps.id FROM #{ProjectStatus.table_name} ps WHERE ps.is_archived = 0)", lft, rgt],
|
|
304 | 303 |
:order => "#{Tracker.table_name}.position") |
305 | 304 |
end |
306 | 305 |
|
app/controllers/project_statuses_controller.rb (wersja 0) | ||
---|---|---|
1 |
# redMine - project management software |
|
2 |
# Copyright (C) 2006 Jean-Philippe Lang |
|
3 |
# |
|
4 |
# This program is free software; you can redistribute it and/or |
|
5 |
# modify it under the terms of the GNU General Public License |
|
6 |
# as published by the Free Software Foundation; either version 2 |
|
7 |
# of the License, or (at your option) any later version. |
|
8 |
# |
|
9 |
# This program is distributed in the hope that it will be useful, |
|
10 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
11 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
12 |
# GNU General Public License for more details. |
|
13 |
# |
|
14 |
# You should have received a copy of the GNU General Public License |
|
15 |
# along with this program; if not, write to the Free Software |
|
16 |
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
|
17 | ||
18 |
class ProjectStatusesController < ApplicationController |
|
19 |
before_filter :require_admin |
|
20 | ||
21 |
verify :method => :post, :only => [ :destroy, :create, :update, :move ], |
|
22 |
:redirect_to => { :action => :list } |
|
23 |
|
|
24 |
def index |
|
25 |
list |
|
26 |
render :action => 'list' unless request.xhr? |
|
27 |
end |
|
28 | ||
29 |
def list |
|
30 |
@project_status_pages, @project_statuses = paginate :project_statuses, :per_page => 25, :order => "position" |
|
31 |
render :action => "list", :layout => false if request.xhr? |
|
32 |
end |
|
33 | ||
34 |
def new |
|
35 |
@project_status = ProjectStatus.new |
|
36 |
end |
|
37 | ||
38 |
def create |
|
39 |
@project_status = ProjectStatus.new(params[:project_status]) |
|
40 |
if @project_status.save |
|
41 |
flash[:notice] = l(:notice_successful_create) |
|
42 |
redirect_to :action => 'list' |
|
43 |
else |
|
44 |
render :action => 'new' |
|
45 |
end |
|
46 |
end |
|
47 | ||
48 |
def edit |
|
49 |
@project_status = ProjectStatus.find(params[:id]) |
|
50 |
end |
|
51 | ||
52 |
def update |
|
53 |
@project_status = ProjectStatus.find(params[:id]) |
|
54 |
if @project_status.update_attributes(params[:project_status]) |
|
55 |
flash[:notice] = l(:notice_successful_update) |
|
56 |
redirect_to :action => 'list' |
|
57 |
else |
|
58 |
render :action => 'edit' |
|
59 |
end |
|
60 |
end |
|
61 | ||
62 |
def destroy |
|
63 |
ProjectStatus.find(params[:id]).destroy |
|
64 |
redirect_to :action => 'list' |
|
65 |
rescue |
|
66 |
flash[:error] = "Unable to delete project status" |
|
67 |
redirect_to :action => 'list' |
|
68 |
end |
|
69 |
end |
app/controllers/admin_controller.rb (kopia robocza) | ||
---|---|---|
27 | 27 |
|
28 | 28 |
def projects |
29 | 29 |
@status = params[:status] ? params[:status].to_i : 1 |
30 |
c = ARCondition.new(@status == 0 ? "status <> 0" : ["status = ?", @status])
|
|
30 |
c = ARCondition.new(@status == 0 ? "status_id <> 0" : "status_id IN (SELECT ps.id FROM #{ProjectStatus.table_name} ps WHERE ps.is_archived = 0)")
|
|
31 | 31 |
|
32 | 32 |
unless params[:name].blank? |
33 | 33 |
name = "%#{params[:name].strip.downcase}%" |
app/controllers/projects_controller.rb (kopia robocza) | ||
---|---|---|
92 | 92 |
@issue_custom_fields = IssueCustomField.find(:all, :order => "#{CustomField.table_name}.position") |
93 | 93 |
@trackers = Tracker.all |
94 | 94 |
@root_projects = Project.find(:all, |
95 |
:conditions => "parent_id IS NULL AND status = #{Project::STATUS_ACTIVE}",
|
|
95 |
:conditions => "parent_id IS NULL AND status_id IN (SELECT ps.id FROM #{ProjectStatus.table_name} ps WHERE ps.is_archived = 0)",
|
|
96 | 96 |
:order => 'name') |
97 | 97 |
if request.get? |
98 | 98 |
@project = Project.copy_from(params[:id]) |
app/views/project_statuses/list.rhtml (wersja 0) | ||
---|---|---|
1 |
<div class="contextual"> |
|
2 |
<%= link_to l(:label_project_status_new), {:action => 'new'}, :class => 'icon icon-add' %> |
|
3 |
</div> |
|
4 | ||
5 |
<h2><%=l(:label_project_status_plural)%></h2> |
|
6 |
|
|
7 |
<table class="list"> |
|
8 |
<thead><tr> |
|
9 |
<th><%=l(:field_status)%></th> |
|
10 |
<th><%=l(:field_is_default)%></th> |
|
11 |
<th><%=l(:field_is_archived)%></th> |
|
12 |
<th><%=l(:button_sort)%></th> |
|
13 |
<th></th> |
|
14 |
</tr></thead> |
|
15 |
<tbody> |
|
16 |
<% for status in @project_statuses %> |
|
17 |
<tr class="<%= cycle("odd", "even") %>"> |
|
18 |
<td><%= link_to status.name, :action => 'edit', :id => status %></td> |
|
19 |
<td align="center"><%= image_tag 'true.png' if status.is_default? %></td> |
|
20 |
<td align="center"><%= image_tag 'true.png' if status.is_archived? %></td> |
|
21 |
<td align="center" style="width:15%;"><%= reorder_links('project_status', {:action => 'update', :id => status}) %></td> |
|
22 |
<td class="buttons"> |
|
23 |
<%= link_to(l(:button_delete), { :action => 'destroy', :id => status }, |
|
24 |
:method => :post, |
|
25 |
:confirm => l(:text_are_you_sure), |
|
26 |
:class => 'icon icon-del') %> |
|
27 |
</td> |
|
28 |
</tr> |
|
29 |
<% end %> |
|
30 |
</tbody> |
|
31 |
</table> |
|
32 | ||
33 |
<p class="pagination"><%= pagination_links_full @project_status_pages %></p> |
|
34 | ||
35 |
<% html_title(l(:label_project_status_plural)) -%> |
app/views/project_statuses/_form.rhtml (wersja 0) | ||
---|---|---|
1 |
<%= error_messages_for 'project_status' %> |
|
2 | ||
3 |
<div class="box"> |
|
4 |
<!--[form:project_status]--> |
|
5 |
<p><label for="project_status_name"><%=l(:field_name)%><span class="required"> *</span></label> |
|
6 |
<%= text_field 'project_status', 'name' %></p> |
|
7 | ||
8 |
<p><label for="project_status_is_archived"><%=l(:field_is_archived)%></label> |
|
9 |
<%= check_box 'project_status', 'is_archived' %></p> |
|
10 | ||
11 |
<p><label for="project_status_is_default"><%=l(:field_is_default)%></label> |
|
12 |
<%= check_box 'project_status', 'is_default' %></p> |
|
13 | ||
14 |
<%= call_hook(:view_project_statuses_form, :project_status => @project_status) %> |
|
15 | ||
16 |
<!--[eoform:project_status]--> |
|
17 |
</div> |
app/views/project_statuses/edit.rhtml (wersja 0) | ||
---|---|---|
1 |
<h2><%= link_to l(:label_project_status_plural), :controller => 'project_statuses', :action => 'index' %> » <%=h @project_status %></h2> |
|
2 | ||
3 |
<% form_tag({:action => 'update', :id => @project_status}, :class => "tabular") do %> |
|
4 |
<%= render :partial => 'form' %> |
|
5 |
<%= submit_tag l(:button_save) %> |
|
6 |
<% end %> |
app/views/project_statuses/new.rhtml (wersja 0) | ||
---|---|---|
1 |
<h2><%= link_to l(:label_project_status_plural), :controller => 'project_statuses', :action => 'index' %> » <%=l(:label_project_status_new)%></h2> |
|
2 | ||
3 |
<% form_tag({:action => 'create'}, :class => "tabular") do %> |
|
4 |
<%= render :partial => 'form' %> |
|
5 |
<%= submit_tag l(:button_create) %> |
|
6 |
<% end %> |
app/views/admin/index.rhtml (kopia robocza) | ||
---|---|---|
24 | 24 |
<p class="icon22 icon22-tracker"> |
25 | 25 |
<%= link_to l(:label_tracker_plural), :controller => 'trackers' %> | |
26 | 26 |
<%= link_to l(:label_issue_status_plural), :controller => 'issue_statuses' %> | |
27 |
<%= link_to l(:label_project_status_plural), :controller => 'project_statuses' %> | |
|
27 | 28 |
<%= link_to l(:label_workflow), :controller => 'workflows', :action => 'edit' %> |
28 | 29 |
</p> |
29 | 30 |
app/views/projects/_form.rhtml (kopia robocza) | ||
---|---|---|
7 | 7 |
<% if User.current.admin? && !@project.possible_parents.empty? %> |
8 | 8 |
<p><label><%= l(:field_parent) %></label><%= parent_project_select_tag(@project) %></p> |
9 | 9 |
<% end %> |
10 | ||
10 |
<p><%= f.select :status_id, (ProjectStatus.find(:all).sort.collect {|p| [p.name, p.id]}), :required => true %></p> |
|
11 | 11 |
<p><%= f.text_area :description, :rows => 5, :class => 'wiki-edit' %></p> |
12 | 12 |
<p><%= f.text_field :identifier, :required => true, :disabled => @project.identifier_frozen? %> |
13 | 13 |
<% unless @project.identifier_frozen? %> |
app/views/projects/show.rhtml (kopia robocza) | ||
---|---|---|
4 | 4 |
<%= textilizable @project.description %> |
5 | 5 |
<ul> |
6 | 6 |
<% unless @project.homepage.blank? %><li><%=l(:field_homepage)%>: <%= link_to(h(@project.homepage), @project.homepage) %></li><% end %> |
7 |
<li><%=l(:field_status)%>: <%= @project.status.name%></li> |
|
7 | 8 |
<% if @subprojects.any? %> |
8 | 9 |
<li><%=l(:label_subproject_plural)%>: |
9 | 10 |
<%= @subprojects.collect{|p| link_to(h(p), :action => 'show', :id => p)}.join(", ") %></li> |
db/migrate/20091021011305_add_status_to_project.rb (wersja 0) | ||
---|---|---|
1 |
class AddStatusToProject < ActiveRecord::Migration |
|
2 |
include Redmine::I18n |
|
3 |
def self.up |
|
4 |
set_language_if_valid Setting.default_language |
|
5 |
create_table "project_statuses", :force => true do |t| |
|
6 |
t.column "name", :string, :limit => 30, :default => "", :null => false |
|
7 |
t.column "is_archived", :boolean, :default => false, :null => false |
|
8 |
t.column "is_default", :boolean, :default => false, :null => false |
|
9 |
t.column :position, :integer, :default => 1 |
|
10 |
end |
|
11 |
remove_column(:projects, :status) |
|
12 |
add_column :projects, :status_id, :integer, :default => 1, :null => false |
|
13 | ||
14 |
# Project statuses |
|
15 |
proposed = ProjectStatus.create!(:name => l(:default_project_status_proposed), :is_archived => false, :is_default => true, :position => 1) |
|
16 |
in_planning = ProjectStatus.create!(:name => l(:default_project_status_in_planning), :is_archived => false, :is_default => false, :position => 2) |
|
17 |
in_progress = ProjectStatus.create!(:name => l(:default_project_status_in_progress), :is_archived => false, :is_default => false, :position => 3) |
|
18 |
on_hold = ProjectStatus.create!(:name => l(:default_project_status_on_hold), :is_archived => false, :is_default => false, :position => 4) |
|
19 |
complete = ProjectStatus.create!(:name => l(:default_project_status_complete), :is_archived => false, :is_default => false, :position => 5) |
|
20 |
archived = ProjectStatus.create!(:name => l(:default_project_status_archived), :is_archived => true, :is_default => false, :position => 6) |
|
21 | ||
22 |
Project.find(:all).each do |project| |
|
23 |
project.status = in_progress |
|
24 |
project.save |
|
25 |
end |
|
26 |
end |
|
27 | ||
28 |
def self.down |
|
29 |
raise ActiveRecord::IrreversibleMigration, "Can't recover deleted data" |
|
30 |
end |
|
31 |
end |
config/locales/lt.yml (kopia robocza) | ||
---|---|---|
862 | 862 |
text_journal_added: "{{label}} {{value}} added" |
863 | 863 |
field_active: Active |
864 | 864 |
enumeration_system_activity: System Activity |
865 | ||
866 |
label_project_status_plural: Project statuses |
|
867 |
label_project_status_new: New status |
|
868 |
default_project_status_proposed: Proposed |
|
869 |
default_project_status_in_planning: In Planning |
|
870 |
default_project_status_in_progress: In Progress |
|
871 |
default_project_status_on_hold: On Hold |
|
872 |
default_project_status_complete: Colmplete |
|
873 |
default_project_status_archived: Archived |
|
874 |
field_is_archived: Archived |
|
875 |
|
config/locales/ro.yml (kopia robocza) | ||
---|---|---|
829 | 829 |
text_journal_added: "{{label}} {{value}} added" |
830 | 830 |
field_active: Active |
831 | 831 |
enumeration_system_activity: System Activity |
832 | ||
833 |
label_project_status_plural: Project statuses |
|
834 |
label_project_status_new: New status |
|
835 |
default_project_status_proposed: Proposed |
|
836 |
default_project_status_in_planning: In Planning |
|
837 |
default_project_status_in_progress: In Progress |
|
838 |
default_project_status_on_hold: On Hold |
|
839 |
default_project_status_complete: Colmplete |
|
840 |
default_project_status_archived: Archived |
|
841 |
field_is_archived: Archived |
|
842 |
|
config/locales/zh.yml (kopia robocza) | ||
---|---|---|
854 | 854 |
enumeration_activities: 活动(时间跟踪) |
855 | 855 |
field_active: Active |
856 | 856 |
enumeration_system_activity: System Activity |
857 | ||
858 |
label_project_status_plural: Project statuses |
|
859 |
label_project_status_new: New status |
|
860 |
default_project_status_proposed: Proposed |
|
861 |
default_project_status_in_planning: In Planning |
|
862 |
default_project_status_in_progress: In Progress |
|
863 |
default_project_status_on_hold: On Hold |
|
864 |
default_project_status_complete: Colmplete |
|
865 |
default_project_status_archived: Archived |
|
866 |
field_is_archived: Archived |
|
867 |
|
config/locales/pt.yml (kopia robocza) | ||
---|---|---|
844 | 844 |
text_journal_added: "{{label}} {{value}} added" |
845 | 845 |
field_active: Active |
846 | 846 |
enumeration_system_activity: System Activity |
847 | ||
848 |
label_project_status_plural: Project statuses |
|
849 |
label_project_status_new: New status |
|
850 |
default_project_status_proposed: Proposed |
|
851 |
default_project_status_in_planning: In Planning |
|
852 |
default_project_status_in_progress: In Progress |
|
853 |
default_project_status_on_hold: On Hold |
|
854 |
default_project_status_complete: Colmplete |
|
855 |
default_project_status_archived: Archived |
|
856 |
field_is_archived: Archived |
|
857 |
|
config/locales/ca.yml (kopia robocza) | ||
---|---|---|
829 | 829 |
text_journal_added: "{{label}} {{value}} added" |
830 | 830 |
field_active: Active |
831 | 831 |
enumeration_system_activity: System Activity |
832 | ||
833 |
label_project_status_plural: Project statuses |
|
834 |
label_project_status_new: New status |
|
835 |
default_project_status_proposed: Proposed |
|
836 |
default_project_status_in_planning: In Planning |
|
837 |
default_project_status_in_progress: In Progress |
|
838 |
default_project_status_on_hold: On Hold |
|
839 |
default_project_status_complete: Colmplete |
|
840 |
default_project_status_archived: Archived |
|
841 |
field_is_archived: Archived |
|
842 |
|
config/locales/pt-BR.yml (kopia robocza) | ||
---|---|---|
858 | 858 |
text_journal_added: "{{label}} {{value}} adicionado" |
859 | 859 |
field_active: Active |
860 | 860 |
enumeration_system_activity: System Activity |
861 | ||
862 |
label_project_status_plural: Project statuses |
|
863 |
label_project_status_new: New status |
|
864 |
default_project_status_proposed: Proposed |
|
865 |
default_project_status_in_planning: In Planning |
|
866 |
default_project_status_in_progress: In Progress |
|
867 |
default_project_status_on_hold: On Hold |
|
868 |
default_project_status_complete: Colmplete |
|
869 |
default_project_status_archived: Archived |
|
870 |
field_is_archived: Archived |
|
871 |
|
config/locales/tr.yml (kopia robocza) | ||
---|---|---|
859 | 859 |
text_journal_added: "{{label}} {{value}} added" |
860 | 860 |
field_active: Active |
861 | 861 |
enumeration_system_activity: System Activity |
862 | ||
863 |
label_project_status_plural: Project statuses |
|
864 |
label_project_status_new: New status |
|
865 |
default_project_status_proposed: Proposed |
|
866 |
default_project_status_in_planning: In Planning |
|
867 |
default_project_status_in_progress: In Progress |
|
868 |
default_project_status_on_hold: On Hold |
|
869 |
default_project_status_complete: Colmplete |
|
870 |
default_project_status_archived: Archived |
|
871 |
field_is_archived: Archived |
|
872 |
|
config/locales/ru.yml (kopia robocza) | ||
---|---|---|
940 | 940 |
text_journal_added: "{{label}} {{value}} added" |
941 | 941 |
field_active: Active |
942 | 942 |
enumeration_system_activity: System Activity |
943 | ||
944 |
label_project_status_plural: Project statuses |
|
945 |
label_project_status_new: New status |
|
946 |
default_project_status_proposed: Proposed |
|
947 |
default_project_status_in_planning: In Planning |
|
948 |
default_project_status_in_progress: In Progress |
|
949 |
default_project_status_on_hold: On Hold |
|
950 |
default_project_status_complete: Colmplete |
|
951 |
default_project_status_archived: Archived |
|
952 |
field_is_archived: Archived |
|
953 |
|
config/locales/el.yml (kopia robocza) | ||
---|---|---|
832 | 832 |
text_journal_added: "{{label}} {{value}} added" |
833 | 833 |
field_active: Active |
834 | 834 |
enumeration_system_activity: System Activity |
835 | ||
836 |
label_project_status_plural: Project statuses |
|
837 |
label_project_status_new: New status |
|
838 |
default_project_status_proposed: Proposed |
|
839 |
default_project_status_in_planning: In Planning |
|
840 |
default_project_status_in_progress: In Progress |
|
841 |
default_project_status_on_hold: On Hold |
|
842 |
default_project_status_complete: Colmplete |
|
843 |
default_project_status_archived: Archived |
|
844 |
field_is_archived: Archived |
|
845 |
|
config/locales/en.yml (kopia robocza) | ||
---|---|---|
831 | 831 |
enumeration_doc_categories: Document categories |
832 | 832 |
enumeration_activities: Activities (time tracking) |
833 | 833 |
enumeration_system_activity: System Activity |
834 | ||
835 |
label_project_status_plural: Project statuses |
|
836 |
label_project_status_new: New status |
|
837 |
default_project_status_proposed: Proposed |
|
838 |
default_project_status_in_planning: In Planning |
|
839 |
default_project_status_in_progress: In Progress |
|
840 |
default_project_status_on_hold: On Hold |
|
841 |
default_project_status_complete: Colmplete |
|
842 |
default_project_status_archived: Archived |
|
843 |
field_is_archived: Archived |
|
844 |
|
config/locales/gl.yml (kopia robocza) | ||
---|---|---|
852 | 852 |
text_journal_added: "{{label}} {{value}} added" |
853 | 853 |
field_active: Active |
854 | 854 |
enumeration_system_activity: System Activity |
855 | ||
856 |
label_project_status_plural: Project statuses |
|
857 |
label_project_status_new: New status |
|
858 |
default_project_status_proposed: Proposed |
|
859 |
default_project_status_in_planning: In Planning |
|
860 |
default_project_status_in_progress: In Progress |
|
861 |
default_project_status_on_hold: On Hold |
|
862 |
default_project_status_complete: Colmplete |
|
863 |
default_project_status_archived: Archived |
|
864 |
field_is_archived: Archived |
config/locales/cs.yml (kopia robocza) | ||
---|---|---|
832 | 832 |
text_journal_added: "{{label}} {{value}} added" |
833 | 833 |
field_active: Active |
834 | 834 |
enumeration_system_activity: System Activity |
835 | ||
836 |
label_project_status_plural: Project statuses |
|
837 |
label_project_status_new: New status |
|
838 |
default_project_status_proposed: Proposed |
|
839 |
default_project_status_in_planning: In Planning |
|
840 |
default_project_status_in_progress: In Progress |
|
841 |
default_project_status_on_hold: On Hold |
|
842 |
default_project_status_complete: Colmplete |
|
843 |
default_project_status_archived: Archived |
|
844 |
field_is_archived: Archived |
|
845 |
|
config/locales/es.yml (kopia robocza) | ||
---|---|---|
873 | 873 |
text_journal_added: "{{label}} {{value}} added" |
874 | 874 |
field_active: Active |
875 | 875 |
enumeration_system_activity: System Activity |
876 | ||
877 |
label_project_status_plural: Project statuses |
|
878 |
label_project_status_new: New status |
|
879 |
default_project_status_proposed: Proposed |
|
880 |
default_project_status_in_planning: In Planning |
|
881 |
default_project_status_in_progress: In Progress |
|
882 |
default_project_status_on_hold: On Hold |
|
883 |
default_project_status_complete: Colmplete |
|
884 |
default_project_status_archived: Archived |
|
885 |
field_is_archived: Archived |
|
886 |
|
config/locales/ko.yml (kopia robocza) | ||
---|---|---|
892 | 892 |
text_journal_added: "{{label}} {{value}} added" |
893 | 893 |
field_active: Active |
894 | 894 |
enumeration_system_activity: System Activity |
895 | ||
896 |
label_project_status_plural: Project statuses |
|
897 |
label_project_status_new: New status |
|
898 |
default_project_status_proposed: Proposed |
|
899 |
default_project_status_in_planning: In Planning |
|
900 |
default_project_status_in_progress: In Progress |
|
901 |
default_project_status_on_hold: On Hold |
|
902 |
default_project_status_complete: Colmplete |
|
903 |
default_project_status_archived: Archived |
|
904 |
field_is_archived: Archived |
|
905 |
|
config/locales/zh-TW.yml (kopia robocza) | ||
---|---|---|
921 | 921 |
enumeration_activities: 活動 (時間追蹤) |
922 | 922 |
field_active: Active |
923 | 923 |
enumeration_system_activity: System Activity |
924 | ||
925 |
label_project_status_plural: Project statuses |
|
926 |
label_project_status_new: New status |
|
927 |
default_project_status_proposed: Proposed |
|
928 |
default_project_status_in_planning: In Planning |
|
929 |
default_project_status_in_progress: In Progress |
|
930 |
default_project_status_on_hold: On Hold |
|
931 |
default_project_status_complete: Colmplete |
|
932 |
default_project_status_archived: Archived |
|
933 |
field_is_archived: Archived |
|
934 |
|
config/locales/it.yml (kopia robocza) | ||
---|---|---|
839 | 839 |
text_journal_added: "{{label}} {{value}} added" |
840 | 840 |
field_active: Active |
841 | 841 |
enumeration_system_activity: System Activity |
842 | ||
843 |
label_project_status_plural: Project statuses |
|
844 |
label_project_status_new: New status |
|
845 |
default_project_status_proposed: Proposed |
|
846 |
default_project_status_in_planning: In Planning |
|
847 |
default_project_status_in_progress: In Progress |
|
848 |
default_project_status_on_hold: On Hold |
|
849 |
default_project_status_complete: Colmplete |
|
850 |
default_project_status_archived: Archived |
|
851 |
field_is_archived: Archived |
|
852 |
|
config/locales/sk.yml (kopia robocza) | ||
---|---|---|
831 | 831 |
text_journal_added: "{{label}} {{value}} added" |
832 | 832 |
field_active: Active |
833 | 833 |
enumeration_system_activity: System Activity |
834 | ||
835 |
label_project_status_plural: Project statuses |
|
836 |
label_project_status_new: New status |
|
837 |
default_project_status_proposed: Proposed |
|
838 |
default_project_status_in_planning: In Planning |
|
839 |
default_project_status_in_progress: In Progress |
|
840 |
default_project_status_on_hold: On Hold |
|
841 |
default_project_status_complete: Colmplete |
|
842 |
default_project_status_archived: Archived |
|
843 |
field_is_archived: Archived |
|
844 |
|
config/locales/sl.yml (kopia robocza) | ||
---|---|---|
828 | 828 |
text_journal_added: "{{label}} {{value}} added" |
829 | 829 |
field_active: Active |
830 | 830 |
enumeration_system_activity: System Activity |
831 | ||
832 |
label_project_status_plural: Project statuses |
|
833 |
label_project_status_new: New status |
|
834 |
default_project_status_proposed: Proposed |
|
835 |
default_project_status_in_planning: In Planning |
|
836 |
default_project_status_in_progress: In Progress |
|
837 |
default_project_status_on_hold: On Hold |
|
838 |
default_project_status_complete: Colmplete |
|
839 |
default_project_status_archived: Archived |
|
840 |
field_is_archived: Archived |
|
841 |
|
config/locales/uk.yml (kopia robocza) | ||
---|---|---|
828 | 828 |
text_journal_added: "{{label}} {{value}} added" |
829 | 829 |
field_active: Active |
830 | 830 |
enumeration_system_activity: System Activity |
831 | ||
832 |
label_project_status_plural: Project statuses |
|
833 |
label_project_status_new: New status |
|
834 |
default_project_status_proposed: Proposed |
|
835 |
default_project_status_in_planning: In Planning |
|
836 |
default_project_status_in_progress: In Progress |
|
837 |
default_project_status_on_hold: On Hold |
|
838 |
default_project_status_complete: Colmplete |
|
839 |
default_project_status_archived: Archived |
|
840 |
field_is_archived: Archived |
|
841 |
|
config/locales/sr.yml (kopia robocza) | ||
---|---|---|
847 | 847 |
text_journal_added: "{{label}} {{value}} added" |
848 | 848 |
field_active: Active |
849 | 849 |
enumeration_system_activity: System Activity |
850 | ||
851 |
label_project_status_plural: Project statuses |
|
852 |
label_project_status_new: New status |
|
853 |
default_project_status_proposed: Proposed |
|
854 |
default_project_status_in_planning: In Planning |
|
855 |
default_project_status_in_progress: In Progress |
|
856 |
default_project_status_on_hold: On Hold |
|
857 |
default_project_status_complete: Colmplete |
|
858 |
default_project_status_archived: Archived |
|
859 |
field_is_archived: Archived |
|
860 |
|
config/locales/da.yml (kopia robocza) | ||
---|---|---|
852 | 852 |
text_journal_added: "{{label}} {{value}} added" |
853 | 853 |
field_active: Active |
854 | 854 |
enumeration_system_activity: System Activity |
855 | ||
856 |
label_project_status_plural: Project statuses |
|
857 |
label_project_status_new: New status |
|
858 |
default_project_status_proposed: Proposed |
|
859 |
default_project_status_in_planning: In Planning |
|
860 |
default_project_status_in_progress: In Progress |
|
861 |
default_project_status_on_hold: On Hold |
|
862 |
default_project_status_complete: Colmplete |
|
863 |
default_project_status_archived: Archived |
|
864 |
field_is_archived: Archived |
|
865 |
|
config/locales/sv.yml (kopia robocza) | ||
---|---|---|
879 | 879 |
label_time_entry_plural: Spent time |
880 | 880 |
field_active: Active |
881 | 881 |
enumeration_system_activity: System Activity |
882 | ||
883 |
label_project_status_plural: Project statuses |
|
884 |
label_project_status_new: New status |
|
885 |
default_project_status_proposed: Proposed |
|
886 |
default_project_status_in_planning: In Planning |
|
887 |
default_project_status_in_progress: In Progress |
|
888 |
default_project_status_on_hold: On Hold |
|
889 |
default_project_status_complete: Colmplete |
|
890 |
default_project_status_archived: Archived |
|
891 |
field_is_archived: Archived |
|
892 |
|
config/locales/bg.yml (kopia robocza) | ||
---|---|---|
826 | 826 |
text_journal_added: "{{label}} {{value}} added" |
827 | 827 |
field_active: Active |
828 | 828 |
enumeration_system_activity: System Activity |
829 | ||
830 |
label_project_status_plural: Project statuses |
|
831 |
label_project_status_new: New status |
|
832 |
default_project_status_proposed: Proposed |
|
833 |
default_project_status_in_planning: In Planning |
|
834 |
default_project_status_in_progress: In Progress |
|
835 |
default_project_status_on_hold: On Hold |
|
836 |
default_project_status_complete: Colmplete |
|
837 |
default_project_status_archived: Archived |
|
838 |
field_is_archived: Archived |
|
839 |
|
config/locales/de.yml (kopia robocza) | ||
---|---|---|
852 | 852 |
text_journal_added: "{{label}} {{value}} added" |
853 | 853 |
field_active: Active |
854 | 854 |
enumeration_system_activity: System Activity |
855 | ||
856 |
label_project_status_plural: Project statuses |
|
857 |
label_project_status_new: New status |
|
858 |
default_project_status_proposed: Proposed |
|
859 |
default_project_status_in_planning: In Planning |
|
860 |
default_project_status_in_progress: In Progress |
|
861 |
default_project_status_on_hold: On Hold |
|
862 |
default_project_status_complete: Colmplete |
|
863 |
default_project_status_archived: Archived |
|
864 |
field_is_archived: Archived |
|
865 |
|
config/locales/ja.yml (kopia robocza) | ||
---|---|---|
861 | 861 |
text_journal_added: "{{label}} {{value}} added" |
862 | 862 |
field_active: Active |
863 | 863 |
enumeration_system_activity: System Activity |
864 | ||
865 |
label_project_status_plural: Project statuses |
|
866 |
label_project_status_new: New status |
|
867 |
default_project_status_proposed: Proposed |
|
868 |
default_project_status_in_planning: In Planning |
|
869 |
default_project_status_in_progress: In Progress |
|
870 |
default_project_status_on_hold: On Hold |
|
871 |
default_project_status_complete: Colmplete |
|
872 |
default_project_status_archived: Archived |
|
873 |
field_is_archived: Archived |
|
874 |
|
config/locales/he.yml (kopia robocza) | ||
---|---|---|
836 | 836 |
text_journal_added: "{{label}} {{value}} added" |
837 | 837 |
field_active: Active |
838 | 838 |
enumeration_system_activity: System Activity |
839 | ||
840 |
label_project_status_plural: Project statuses |
|
841 |
label_project_status_new: New status |
|
842 |
default_project_status_proposed: Proposed |
|
843 |
default_project_status_in_planning: In Planning |
|
844 |
default_project_status_in_progress: In Progress |
|
845 |
default_project_status_on_hold: On Hold |
|
846 |
default_project_status_complete: Colmplete |
|
847 |
default_project_status_archived: Archived |
|
848 |
field_is_archived: Archived |
config/locales/fi.yml (kopia robocza) | ||
---|---|---|
862 | 862 |
text_journal_added: "{{label}} {{value}} added" |
863 | 863 |
field_active: Active |
864 | 864 |
enumeration_system_activity: System Activity |
865 | ||
866 |
label_project_status_plural: Project statuses |
|
867 |
label_project_status_new: New status |
|
868 |
default_project_status_proposed: Proposed |
|
869 |
default_project_status_in_planning: In Planning |
|
870 |
default_project_status_in_progress: In Progress |
|
871 |
default_project_status_on_hold: On Hold |
|
872 |
default_project_status_complete: Colmplete |
|
873 |
default_project_status_archived: Archived |
|
874 |
field_is_archived: Archived |
|
875 |
|
config/locales/bs.yml (kopia robocza) | ||
---|---|---|
850 | 850 |
text_journal_added: "{{label}} {{value}} added" |
851 | 851 |
field_active: Active |
852 | 852 |
enumeration_system_activity: System Activity |
853 | ||
854 |
label_project_status_plural: Project statuses |
|
855 |
label_project_status_new: New status |
|
856 |
default_project_status_proposed: Proposed |
|
857 |
default_project_status_in_planning: In Planning |
|
858 |
default_project_status_in_progress: In Progress |
|
859 |
default_project_status_on_hold: On Hold |
|
860 |
default_project_status_complete: Colmplete |
|
861 |
default_project_status_archived: Archived |
|
862 |
field_is_archived: Archived |
|
863 |
|
config/locales/fr.yml (kopia robocza) | ||
---|---|---|
854 | 854 |
text_journal_added: "{{label}} {{value}} ajouté" |
855 | 855 |
field_active: Actif |
856 | 856 |
enumeration_system_activity: Activité système |
857 | ||
858 |
label_project_status_plural: Project statuses |
|
859 |
label_project_status_new: New status |
|
860 |
default_project_status_proposed: Proposed |
|
861 |
default_project_status_in_planning: In Planning |
|
862 |
default_project_status_in_progress: In Progress |
|
863 |
default_project_status_on_hold: On Hold |
|
864 |
default_project_status_complete: Colmplete |
|
865 |
default_project_status_archived: Archived |
|
866 |
field_is_archived: Archived |
|
867 |
|
config/locales/nl.yml (kopia robocza) | ||
---|---|---|
814 | 814 |
text_journal_added: "{{label}} {{value}} added" |
815 | 815 |
field_active: Active |
816 | 816 |
enumeration_system_activity: System Activity |
817 | ||
818 |
label_project_status_plural: Project statuses |
|
819 |
label_project_status_new: New status |
|
820 |
default_project_status_proposed: Proposed |
|
821 |
default_project_status_in_planning: In Planning |
|
822 |
default_project_status_in_progress: In Progress |
|
823 |
default_project_status_on_hold: On Hold |
|
824 |
default_project_status_complete: Colmplete |
|
825 |
default_project_status_archived: Archived |
|
826 |
field_is_archived: Archived |
|
827 |
|
config/locales/pl.yml (kopia robocza) | ||
---|---|---|
855 | 855 |
text_journal_added: "Dodano {{label}} {{value}}" |
856 | 856 |
field_active: Active |
857 | 857 |
enumeration_system_activity: System Activity |
858 | ||
859 |
label_project_status_plural: Statusy projektów |
|
860 |
label_project_status_new: Nowy status |
|
861 |
default_project_status_proposed: Zaproponowany |
|
862 |
default_project_status_in_planning: Planowany |
|
863 |
default_project_status_in_progress: W Toku |
|
864 |
default_project_status_on_hold: Wstrzymany |
|
865 |
default_project_status_complete: Ukończony |
|
866 |
default_project_status_archived: Zarchiwizowany |
|
867 |
field_is_archived: Zarchiwizowany |
|
868 |
|
config/locales/th.yml (kopia robocza) | ||
---|---|---|
829 | 829 |
text_journal_added: "{{label}} {{value}} added" |
830 | 830 |
field_active: Active |
831 | 831 |
enumeration_system_activity: System Activity |
832 | ||
833 |
label_project_status_plural: Project statuses |
|
834 |
label_project_status_new: New status |
|
835 |
default_project_status_proposed: Proposed |
|
836 |
default_project_status_in_planning: In Planning |
|
837 |
default_project_status_in_progress: In Progress |
|
838 |
default_project_status_on_hold: On Hold |
|
839 |
default_project_status_complete: Colmplete |
|
840 |
default_project_status_archived: Archived |
|
841 |
field_is_archived: Archived |
|
842 |
|
config/locales/no.yml (kopia robocza) | ||
---|---|---|
827 | 827 |
text_journal_added: "{{label}} {{value}} added" |
828 | 828 |
field_active: Active |
829 | 829 |
enumeration_system_activity: System Activity |
830 | ||
831 |
label_project_status_plural: Project statuses |
|
832 |
label_project_status_new: New status |
|
833 |
default_project_status_proposed: Proposed |
|
834 |
default_project_status_in_planning: In Planning |
|
835 |
default_project_status_in_progress: In Progress |
|
836 |
default_project_status_on_hold: On Hold |
|
837 |
default_project_status_complete: Colmplete |
|
838 |
default_project_status_archived: Archived |
|
839 |
field_is_archived: Archived |
|
840 |
|
config/locales/hu.yml (kopia robocza) | ||
---|---|---|
857 | 857 |
text_journal_added: "{{label}} {{value}} added" |
858 | 858 |
field_active: Active |
859 | 859 |
enumeration_system_activity: System Activity |
860 | ||
861 |
label_project_status_plural: Project statuses |
|
862 |
label_project_status_new: New status |
|
863 |
default_project_status_proposed: Proposed |
|
864 |
default_project_status_in_planning: In Planning |
|
865 |
default_project_status_in_progress: In Progress |
|
866 |
default_project_status_on_hold: On Hold |
|
867 |
default_project_status_complete: Colmplete |
|
868 |
default_project_status_archived: Archived |
|
869 |
field_is_archived: Archived |
|
870 |
|
config/locales/vi.yml (kopia robocza) | ||
---|---|---|
891 | 891 |
text_journal_added: "{{label}} {{value}} added" |
892 | 892 |
field_active: Active |
893 | 893 |
enumeration_system_activity: System Activity |
894 | ||
895 |
label_project_status_plural: Project statuses |
|
896 |
label_project_status_new: New status |
|
897 |
default_project_status_proposed: Proposed |
|
898 |
default_project_status_in_planning: In Planning |
|
899 |
default_project_status_in_progress: In Progress |
|
900 |
default_project_status_on_hold: On Hold |
|
901 |
default_project_status_complete: Colmplete |
|
902 |
default_project_status_archived: Archived |
|
903 |
field_is_archived: Archived |
|
904 |
|