Localization plugin removed (replaced with GLoc)

git-svn-id: http://redmine.rubyforge.org/svn/trunk@14 e93f8b46-1217-0410-a6f0-8f06a7374b81
pull/351/head
Jean-Philippe Lang 19 years ago
parent 5b47d7bfcc
commit b862c447f1
  1. 22
      redmine/app/controllers/account_controller.rb
  2. 10
      redmine/app/controllers/application.rb
  3. 7
      redmine/app/controllers/enumerations_controller.rb
  4. 2
      redmine/app/controllers/help_controller.rb
  5. 2
      redmine/app/controllers/projects_controller.rb
  6. 7
      redmine/app/controllers/roles_controller.rb
  7. 12
      redmine/app/helpers/application_helper.rb
  8. 25
      redmine/app/helpers/search_filter_helper.rb
  9. 2
      redmine/app/models/auth_source_ldap.rb
  10. 12
      redmine/app/models/enumeration.rb
  11. 4
      redmine/app/models/issue_status.rb
  12. 3
      redmine/app/models/mailer.rb
  13. 18
      redmine/app/models/member.rb
  14. 18
      redmine/app/models/news.rb
  15. 32
      redmine/app/models/permission.rb
  16. 10
      redmine/app/models/role.rb
  17. 4
      redmine/app/models/tracker.rb
  18. 3
      redmine/app/models/user.rb
  19. 8
      redmine/app/views/account/my_account.rhtml
  20. 16
      redmine/app/views/account/register.rhtml
  21. 2
      redmine/app/views/admin/info.rhtml
  22. 2
      redmine/app/views/custom_fields/list.rhtml
  23. 2
      redmine/app/views/documents/_form.rhtml
  24. 4
      redmine/app/views/documents/edit.rhtml
  25. 20
      redmine/app/views/documents/show.rhtml
  26. 2
      redmine/app/views/enumerations/_form.rhtml
  27. 6
      redmine/app/views/enumerations/edit.rhtml
  28. 17
      redmine/app/views/enumerations/list.rhtml
  29. 4
      redmine/app/views/enumerations/new.rhtml
  30. 2
      redmine/app/views/issue_categories/_form.rhtml
  31. 4
      redmine/app/views/issue_categories/edit.rhtml
  32. 8
      redmine/app/views/issue_statuses/_form.rhtml
  33. 4
      redmine/app/views/issue_statuses/edit.rhtml
  34. 14
      redmine/app/views/issue_statuses/list.rhtml
  35. 4
      redmine/app/views/issue_statuses/new.rhtml
  36. 48
      redmine/app/views/issues/_list_simple.rhtml
  37. 13
      redmine/app/views/issues/change_status.rhtml
  38. 21
      redmine/app/views/issues/edit.rhtml
  39. 43
      redmine/app/views/issues/show.rhtml
  40. 60
      redmine/app/views/layouts/base.rhtml
  41. 4
      redmine/app/views/mailer/_issue.rhtml
  42. 6
      redmine/app/views/news/_form.rhtml
  43. 4
      redmine/app/views/news/edit.rhtml
  44. 6
      redmine/app/views/news/show.rhtml
  45. 12
      redmine/app/views/projects/_form.rhtml
  46. 4
      redmine/app/views/projects/add.rhtml
  47. 22
      redmine/app/views/projects/add_document.rhtml
  48. 9
      redmine/app/views/projects/add_file.rhtml
  49. 21
      redmine/app/views/projects/add_issue.rhtml
  50. 4
      redmine/app/views/projects/add_news.rhtml
  51. 4
      redmine/app/views/projects/add_version.rhtml
  52. 2
      redmine/app/views/projects/changelog.rhtml
  53. 8
      redmine/app/views/projects/destroy.rhtml
  54. 8
      redmine/app/views/projects/list.rhtml
  55. 6
      redmine/app/views/projects/list_documents.rhtml
  56. 14
      redmine/app/views/projects/list_files.rhtml
  57. 83
      redmine/app/views/projects/list_issues.rhtml
  58. 2
      redmine/app/views/projects/list_members.rhtml
  59. 6
      redmine/app/views/projects/list_news.rhtml
  60. 30
      redmine/app/views/projects/settings.rhtml
  61. 27
      redmine/app/views/projects/show.rhtml
  62. 6
      redmine/app/views/reports/_simple.rhtml
  63. 8
      redmine/app/views/reports/issue_report.rhtml
  64. 16
      redmine/app/views/roles/_form.rhtml
  65. 6
      redmine/app/views/roles/edit.rhtml
  66. 8
      redmine/app/views/roles/list.rhtml
  67. 7
      redmine/app/views/roles/new.rhtml
  68. 20
      redmine/app/views/roles/workflow.rhtml
  69. 4
      redmine/app/views/trackers/_form.rhtml
  70. 4
      redmine/app/views/trackers/edit.rhtml
  71. 8
      redmine/app/views/trackers/list.rhtml
  72. 4
      redmine/app/views/trackers/new.rhtml
  73. 20
      redmine/app/views/users/_form.rhtml
  74. 4
      redmine/app/views/users/add.rhtml
  75. 5
      redmine/app/views/users/edit.rhtml
  76. 24
      redmine/app/views/users/list.rhtml
  77. 6
      redmine/app/views/versions/_form.rhtml
  78. 4
      redmine/app/views/versions/edit.rhtml
  79. 13
      redmine/app/views/welcome/index.rhtml
  80. 89
      redmine/db/migrate/001_setup.rb
  81. 61
      redmine/db/migrate/002_default_configuration.rb
  82. BIN
      redmine/db/redmine_demo.db
  83. 9
      redmine/doc/CHANGELOG
  84. BIN
      redmine/doc/docbook/fr/images/issues_list.png
  85. BIN
      redmine/doc/docbook/fr/images/users_list.png
  86. BIN
      redmine/doc/docbook/fr/images/workflow.png
  87. 400
      redmine/doc/docbook/fr/redmine-userdoc-fr.xml
  88. 1
      redmine/lang/en.yml
  89. 103
      redmine/lang/fr.yml
  90. 43
      redmine/lib/tasks/load_default_data.rake
  91. 84
      redmine/test/fixtures/permissions.yml
  92. 4
      redmine/test/integration/account_test.rb

@ -41,7 +41,7 @@ class AccountController < ApplicationController
self.logged_in_user = user
redirect_back_or_default :controller => 'account', :action => 'my_page'
else
flash[:notice] = l(:notice_account_invalid_creditentials)
flash.now[:notice] = l(:notice_account_invalid_creditentials)
end
end
end
@ -64,7 +64,7 @@ class AccountController < ApplicationController
@user = self.logged_in_user
if request.post? and @user.update_attributes(@params[:user])
set_localization
flash[:notice] = l(:notice_account_updated)
flash.now[:notice] = l(:notice_account_updated)
self.logged_in_user.reload
end
end
@ -72,11 +72,12 @@ class AccountController < ApplicationController
# Change logged in user's password
def change_password
@user = self.logged_in_user
flash.now[:notice] = l(:notice_can_t_change_password) and render :action => 'my_account' and return if @user.auth_source_id
if @user.check_password?(@params[:password])
@user.password, @user.password_confirmation = params[:new_password], params[:new_password_confirmation]
flash[:notice] = l(:notice_account_password_updated) if @user.save
flash.now[:notice] = l(:notice_account_password_updated) if @user.save
else
flash[:notice] = l(:notice_account_wrong_password)
flash.now[:notice] = l(:notice_account_wrong_password)
end
render :action => 'my_account'
end
@ -100,11 +101,16 @@ class AccountController < ApplicationController
return
else
if request.post?
user = User.find_by_mail(params[:mail])
flash[:notice] = l(:notice_account_unknown_email) and return unless user
user = User.find_by_mail(params[:mail])
# user not found in db
flash.now[:notice] = l(:notice_account_unknown_email) and return unless user
# user uses an external authentification
flash.now[:notice] = l(:notice_can_t_change_password) and return if user.auth_source_id
# create a new token for password recovery
token = Token.new(:user => user, :action => "recovery")
if token.save
Mailer.set_language_if_valid(Localization.lang)
# send token to user via email
Mailer.set_language_if_valid(user.language)
Mailer.deliver_lost_password(token)
flash[:notice] = l(:notice_account_lost_email_sent)
redirect_to :action => 'login'
@ -143,7 +149,7 @@ class AccountController < ApplicationController
@user.custom_values = @custom_values
token = Token.new(:user => @user, :action => "register")
if @user.save and token.save
Mailer.set_language_if_valid(Localization.lang)
Mailer.set_language_if_valid(@user.language)
Mailer.deliver_register(token)
flash[:notice] = l(:notice_account_register_done)
redirect_to :controller => ''

@ -37,21 +37,19 @@ class ApplicationController < ActionController::Base
end
def set_localization
Localization.lang = begin
if self.logged_in_user and Localization.langs.keys.include? self.logged_in_user.language
lang = begin
if self.logged_in_user and self.logged_in_user.language and !self.logged_in_user.language.empty? and GLoc.valid_languages.include? self.logged_in_user.language.to_sym
self.logged_in_user.language
elsif request.env['HTTP_ACCEPT_LANGUAGE']
accept_lang = HTTPUtils.parse_qvalues(request.env['HTTP_ACCEPT_LANGUAGE']).first.split('-').first
if Localization.langs.keys.include? accept_lang
if accept_lang and !accept_lang.empty? and GLoc.valid_languages.include? accept_lang.to_sym
accept_lang
end
end
rescue
nil
end || $RDM_DEFAULT_LANG
set_language_if_valid(Localization.lang)
set_language_if_valid(lang)
end
def require_login

@ -38,7 +38,7 @@ class EnumerationsController < ApplicationController
def create
@enumeration = Enumeration.new(params[:enumeration])
if @enumeration.save
flash[:notice] = 'Enumeration was successfully created.'
flash[:notice] = l(:notice_successful_create)
redirect_to :action => 'list', :opt => @enumeration.opt
else
render :action => 'new'
@ -52,7 +52,7 @@ class EnumerationsController < ApplicationController
def update
@enumeration = Enumeration.find(params[:id])
if @enumeration.update_attributes(params[:enumeration])
flash[:notice] = 'Enumeration was successfully updated.'
flash[:notice] = l(:notice_successful_update)
redirect_to :action => 'list', :opt => @enumeration.opt
else
render :action => 'edit'
@ -60,7 +60,8 @@ class EnumerationsController < ApplicationController
end
def destroy
Enumeration.find(params[:id]).destroy
Enumeration.find(params[:id]).destroy
flash[:notice] = l(:notice_successful_delete)
redirect_to :action => 'list'
rescue
flash[:notice] = "Unable to delete enumeration"

@ -31,7 +31,7 @@ class HelpController < ApplicationController
end
end
# choose language according to available help translations
lang = (@help_config['langs'].include? Localization.lang) ? Localization.lang : @help_config['langs'].first
lang = (@help_config['langs'].include? current_language) ? current_language : @help_config['langs'].first
if template
redirect_to "/manual/#{lang}/#{template}"

@ -227,7 +227,7 @@ class ProjectsController < ApplicationController
CSV::Writer.generate(export, ',') do |csv|
csv << %w(Id Status Tracker Subject Author Created Updated)
@issues.each do |issue|
csv << [issue.id, issue.status.name, issue.tracker.name, issue.subject, issue.author.display_name, _('(time)', issue.created_on), _('(time)', issue.updated_on)]
csv << [issue.id, issue.status.name, issue.tracker.name, issue.subject, issue.author.display_name, l_datetime(issue.created_on), l_datetime(issue.updated_on)]
end
end
export.rewind

@ -37,7 +37,7 @@ class RolesController < ApplicationController
redirect_to :action => 'list'
end
end
@permissions = Permission.find(:all, :order => 'sort ASC')
@permissions = Permission.find(:all, :conditions => ["is_public=?", false], :order => 'sort ASC')
end
def edit
@ -48,7 +48,7 @@ class RolesController < ApplicationController
flash[:notice] = 'Role was successfully updated.'
redirect_to :action => 'list'
end
@permissions = Permission.find(:all, :order => 'sort ASC')
@permissions = Permission.find(:all, :conditions => ["is_public=?", false], :order => 'sort ASC')
end
def destroy
@ -61,8 +61,7 @@ class RolesController < ApplicationController
redirect_to :action => 'list'
end
def workflow
def workflow
@role = Role.find_by_id(params[:role_id])
@tracker = Tracker.find_by_id(params[:tracker_id])

@ -50,18 +50,18 @@ module ApplicationHelper
end
def format_date(date)
_('(date)', date) if date
l_date(date) if date
end
def format_time(time)
_('(time)', time) if time
l_datetime(time) if time
end
def pagination_links_full(paginator, options={}, html_options={})
html =''
html << link_to(('&#171; ' + _('Previous') ), { :page => paginator.current.previous }) + ' ' if paginator.current.previous
html << link_to(('&#171; ' + l(:label_previous) ), { :page => paginator.current.previous }) + ' ' if paginator.current.previous
html << (pagination_links(paginator, options, html_options) || '')
html << ' ' + link_to((_('Next') + ' &#187;'), { :page => paginator.current.next }) if paginator.current.next
html << ' ' + link_to((l(:label_next) + ' &#187;'), { :page => paginator.current.next }) if paginator.current.next
html
end
@ -90,4 +90,8 @@ module ApplicationHelper
""
end
end
def lang_options_for_select
GLoc.valid_languages.collect {|lang| [ l_lang_name(lang.to_s, lang), lang.to_s]}
end
end

@ -58,42 +58,43 @@ module SearchFilterHelper
def search_filter_init_list_issues
search_filter_criteria('status_id') {
[ [_('[Open]'), "O", ["issue_statuses.is_closed=?", false]],
[_('[All]'), "A", nil]
[ [('['+l(:label_open_issues_plural)+']'), "O", ["issue_statuses.is_closed=?", false]],
[('['+l(:label_closed_issues_plural)+']'), "C", ["issue_statuses.is_closed=?", true]],
[('['+l(:label_all)+']'), "A", nil]
] + IssueStatus.find(:all).collect {|s| [s.name, s.id, ["issues.status_id=?", s.id]] }
}
search_filter_criteria('tracker_id') {
[ [_('[All]'), "A", nil]
[ [('['+l(:label_all)+']'), "A", nil]
] + Tracker.find(:all).collect {|s| [s.name, s.id, ["issues.tracker_id=?", s.id]] }
}
search_filter_criteria('priority_id') {
[ [_('[All]'), "A", nil]
[ [('['+l(:label_all)+']'), "A", nil]
] + Enumeration.find(:all, :conditions => ['opt=?','IPRI']).collect {|s| [s.name, s.id, ["issues.priority_id=?", s.id]] }
}
search_filter_criteria('category_id') {
[ [_('[All]'), "A", nil],
[_('[None]'), "N", ["issues.category_id is null"]]
[ [('['+l(:label_all)+']'), "A", nil],
[('['+l(:label_none)+']'), "N", ["issues.category_id is null"]]
] + @project.issue_categories.find(:all).collect {|s| [s.name, s.id, ["issues.category_id=?", s.id]] }
}
search_filter_criteria('fixed_version_id') {
[ [_('[All]'), "A", nil],
[_('[None]'), "N", ["issues.fixed_version_id is null"]]
[ [('['+l(:label_all)+']'), "A", nil],
[('['+l(:label_none)+']'), "N", ["issues.fixed_version_id is null"]]
] + @project.versions.collect {|s| [s.name, s.id, ["issues.fixed_version_id=?", s.id]] }
}
search_filter_criteria('assigned_to_id') {
[ [_('[All]'), "A", nil],
[_('[None]'), "N", ["issues.assigned_to_id is null"]]
[ [('['+l(:label_all)+']'), "A", nil],
[('['+l(:label_none)+']'), "N", ["issues.assigned_to_id is null"]]
] + @project.users.collect {|s| [s.display_name, s.id, ["issues.assigned_to_id=?", s.id]] }
}
search_filter_criteria('subproject_id') {
[ [_('[None]'), "N", ["issues.project_id=?", @project.id]],
[_('[All]'), "A", ["(issues.project_id=? or projects.parent_id=?)", @project.id, @project.id]]
[ [('['+l(:label_none)+']'), "N", ["issues.project_id=?", @project.id]],
[('['+l(:label_all)+']'), "A", ["(issues.project_id=? or projects.parent_id=?)", @project.id, @project.id]]
]
}
end

@ -30,7 +30,7 @@ class AuthSourceLdap < AuthSource
# get user's DN
ldap_con = initialize_ldap_con(self.account, self.account_password)
login_filter = Net::LDAP::Filter.eq( self.attr_login, login )
object_filter = Net::LDAP::Filter.eq( "objectClass", "organizationalPerson" )
object_filter = Net::LDAP::Filter.eq( "objectClass", "*" )
dn = String.new
ldap_con.search( :base => self.base_dn,
:filter => object_filter & login_filter,

@ -21,18 +21,14 @@ class Enumeration < ActiveRecord::Base
validates_presence_of :opt, :name
validates_uniqueness_of :name, :scope => [:opt]
OPTIONS = [
["Issue priorities", "IPRI"],
["Document categories", "DCAT"]
].freeze
OPTIONS = {
"IPRI" => :enumeration_issue_priorities,
"DCAT" => :enumeration_doc_categories
}.freeze
def self.get_values(option)
find(:all, :conditions => ['opt=?', option])
end
def name
_ self.attributes['name']
end
private
def check_integrity

@ -38,10 +38,6 @@ class IssueStatus < ActiveRecord::Base
statuses
end
def name
_ self.attributes['name']
end
private
def check_integrity
raise "Can't delete status" if Issue.find(:first, :conditions => ["status_id=?", self.id]) or IssueHistory.find(:first, :conditions => ["status_id=?", self.id])

@ -45,6 +45,5 @@ class Mailer < ActionMailer::Base
@from = 'redmine@somenet.foo'
@subject = "redMine account activation"
@body['token'] = token
end
end
end

@ -16,14 +16,14 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class Member < ActiveRecord::Base
belongs_to :user
belongs_to :role
belongs_to :project
validates_presence_of :role, :user, :project
belongs_to :user
belongs_to :role
belongs_to :project
validates_presence_of :role, :user, :project
validates_uniqueness_of :user_id, :scope => :project_id
def name
self.user.display_name
end
def name
self.user.display_name
end
end

@ -16,13 +16,13 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class News < ActiveRecord::Base
belongs_to :project
belongs_to :author, :class_name => 'User', :foreign_key => 'author_id'
validates_presence_of :title, :description
# returns last created news
def self.latest
find(:all, :limit => 5, :include => [ :author, :project ], :order => "news.created_on DESC")
end
belongs_to :project
belongs_to :author, :class_name => 'User', :foreign_key => 'author_id'
validates_presence_of :title, :description
# returns last created news
def self.latest
find(:all, :limit => 5, :include => [ :author, :project ], :order => "news.created_on DESC")
end
end

@ -16,27 +16,27 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class Permission < ActiveRecord::Base
has_and_belongs_to_many :roles
validates_presence_of :controller, :action, :description
has_and_belongs_to_many :roles
validates_presence_of :controller, :action, :description
GROUPS = {
100 => "Project",
200 => "Membres",
300 => "Versions",
400 => "Issue categories",
1000 => "Issues",
1100 => "News",
1200 => "Documents",
1300 => "Files",
}.freeze
100 => :label_project,
200 => :label_member_plural,
300 => :label_version_plural,
400 => :label_issue_category_plural,
1000 => :label_issue_plural,
1100 => :label_news_plural,
1200 => :label_document_plural,
1300 => :label_attachment_plural,
}.freeze
@@cached_perms_for_public = nil
@@cached_perms_for_roles = nil
def name
self.controller + "/" + self.action
end
def name
self.controller + "/" + self.action
end
def group_id
(self.sort / 100)*100

@ -17,13 +17,13 @@
class Role < ActiveRecord::Base
before_destroy :check_integrity
has_and_belongs_to_many :permissions
has_and_belongs_to_many :permissions
has_many :workflows, :dependent => true
has_many :members
validates_presence_of :name
validates_uniqueness_of :name
validates_presence_of :name
validates_uniqueness_of :name
private
def check_integrity
raise "Can't delete role" if Member.find(:first, :conditions =>["role_id=?", self.id])

@ -24,10 +24,6 @@ class Tracker < ActiveRecord::Base
validates_presence_of :name
validates_uniqueness_of :name
def name
_ self.attributes['name']
end
private
def check_integrity
raise "Can't delete tracker" if Issue.find(:first, :conditions => ["tracker_id=?", self.id])

@ -57,7 +57,7 @@ class User < ActiveRecord::Base
# user has an external authentication method
return nil unless user.auth_source.authenticate(login, password)
else
# local authentication
# authentication with local password
return nil unless User.hash_password(password) == user.hashed_password
end
else
@ -69,6 +69,7 @@ class User < ActiveRecord::Base
onthefly.language = $RDM_DEFAULT_LANG
if onthefly.save
user = find(:first, :conditions => ["login=?", login])
logger.info("User '#{user.login}' created on the fly.") if logger
end
end
end

@ -23,7 +23,7 @@
<%= text_field 'user', 'mail' %></p>
<p><label for="user_language"><%=l(:field_language)%></label><br/>
<%= select("user", "language", Localization.langs.invert) %></p>
<%= select("user", "language", lang_options_for_select) %></p>
<!--[eoform:user]-->
<p><%= check_box 'user', 'mail_notification' %> <label for="user_mail_notification"><%=l(:field_mail_notification)%></label></p>
@ -34,7 +34,8 @@
</div>
<div class="splitcontentright">
<div class="splitcontentright">
<% unless @user.auth_source_id %>
<div class="box">
<h3><%=l(:field_password)%></h3>
&nbsp;
@ -51,5 +52,6 @@
<center><%= submit_tag l(:button_save) %></center>
<%= end_form_tag %>
</div>
</div>
<% end %>
</div>

@ -1,7 +1,6 @@
<h2><%=l(:label_register)%></h2>
<%= start_form_tag %>
<%= error_messages_for 'user' %>
<div class="box">
@ -25,22 +24,15 @@
<%= text_field 'user', 'mail' %></p>
<p><label for="user_language"><%=l(:field_language)%></label><br/>
<%= select("user", "language", Localization.langs.invert) %></p>
<%= select("user", "language", lang_options_for_select) %></p>
<% for custom_value in @custom_values %>
<div style="float:left;margin-right:10px;">
<p><%= content_tag "label", custom_value.custom_field.name %>
<% if custom_value.custom_field.is_required? %><span class="required">*</span><% end %>
<br />
<%= custom_field_tag custom_value %></p>
</div>
<% for custom_value in @custom_values %>
<p><%= custom_field_tag_with_label custom_value %></p>
<% end %>
<div style="clear: both;"></div>
<p><%= check_box 'user', 'mail_notification' %> <label for="user_mail_notification"><%=l(:field_mail_notification)%></label></p>
<!--[eoform:user]-->
</div>
<%= submit_tag l(:button_submit) %>
<%= submit_tag l(:button_submit) %>
<%= end_form_tag %>

@ -1,4 +1,4 @@
<h2><%=_('Information')%></h2>
<h2><%=l(:label_information_plural)%></h2>
<p><%=l(:field_version)%>: <strong><%= RDM_APP_NAME %> <%= RDM_APP_VERSION %></strong></p>

@ -7,7 +7,7 @@
<th><%=l(:field_field_format)%></th>
<th><%=l(:field_is_required)%></th>
<th><%=l(:field_is_for_all)%></th>
<th><%=_('Used by')%></th>
<th><%=l(:label_used_by)%></th>
<th></th>
</tr>
<% for custom_field in @custom_fields %>

@ -9,7 +9,7 @@
<p><label for="document_title"><%=l(:field_title)%> <span class="required">*</span></label><br />
<%= text_field 'document', 'title', :size => 60 %></p>
<p><label for="document_description"><%=l(:field_description)%> <span class="required">*</span></label><br />
<p><label for="document_description"><%=l(:field_description)%></label><br />
<%= text_area 'document', 'description', :cols => 60, :rows => 5 %></p>
<!--[eoform:document]-->

@ -1,8 +1,8 @@
<h2><%=_('Document')%></h2>
<h2><%=l(:label_document)%></h2>
<%= start_form_tag :action => 'edit', :id => @document %>
<%= render :partial => 'form' %>
<%= submit_tag _('Save') %>
<%= submit_tag l(:button_save) %>
<%= end_form_tag %>

@ -1,18 +1,18 @@
<h2><%= @document.title %></h2>
<strong><%=_('Description')%>:</strong> <%= @document.description %><br />
<strong><%=_('Category')%>:</strong> <%= @document.category.name %><br />
<strong><%=l(:field_description)%>:</strong> <%= @document.description %><br />
<strong><%=l(:field_category)%>:</strong> <%= @document.category.name %><br />
<br />
<% if authorize_for('documents', 'edit') %>
<%= start_form_tag ({ :controller => 'documents', :action => 'edit', :id => @document }, :method => 'get' ) %>
<%= submit_tag _('Edit') %>
<%= start_form_tag({ :controller => 'documents', :action => 'edit', :id => @document }, :method => 'get' ) %>
<%= submit_tag l(:button_edit) %>
<%= end_form_tag %>
<% end %>
<% if authorize_for('documents', 'destroy') %>
<%= start_form_tag ({ :controller => 'documents', :action => 'destroy', :id => @document } ) %>
<%= submit_tag _('Delete') %>
<%= start_form_tag({ :controller => 'documents', :action => 'destroy', :id => @document } ) %>
<%= submit_tag l(:button_delete) %>
<%= end_form_tag %>
<% end %>
@ -24,12 +24,12 @@
<td><%= link_to attachment.filename, :action => 'download', :id => @document, :attachment_id => attachment %></td>
<td align="center"><%= format_date(attachment.created_on) %></td>
<td align="center"><%= attachment.author.display_name %></td>
<td><%= human_size(attachment.filesize) %><br /><%= attachment.downloads %> <%=_('download')%>(s)</td>
<td><%= human_size(attachment.filesize) %><br /><%= lwr(:label_download, attachment.downloads) %></td>
<% if authorize_for('documents', 'destroy_attachment') %>
<td align="center">
<%= start_form_tag :action => 'destroy_attachment', :id => @document, :attachment_id => attachment %>
<%= submit_tag _('Delete'), :class => "button-small" %>
<%= submit_tag l(:button_delete), :class => "button-small" %>
<%= end_form_tag %>
</tr>
<% end %>
@ -40,8 +40,8 @@
<% if authorize_for('documents', 'add_attachment') %>
<%= start_form_tag ({ :controller => 'documents', :action => 'add_attachment', :id => @document }, :multipart => true) %>
<%=_('Add file')%><br /><%= file_field 'attachment', 'file' %>
<%= submit_tag _('Add') %>
<%=l(:label_attachment_new)%><br /><%= file_field 'attachment', 'file' %>
<%= submit_tag l(:button_add) %>
<%= end_form_tag %>
<% end %>

@ -3,7 +3,7 @@
<!--[form:optvalue]-->
<%= hidden_field 'enumeration', 'opt' %>
<p><label for="enumeration_name"><%=_('Name')%></label><br/>
<p><label for="enumeration_name"><%=l(:field_name)%></label><br/>
<%= text_field 'enumeration', 'name' %></p>
<!--[eoform:optvalue]-->

@ -1,10 +1,10 @@
<h2><%=_('Enumerations')%></h2>
<h2><%=l(:label_enumerations)%></h2>
<%= start_form_tag :action => 'update', :id => @enumeration %>
<%= render :partial => 'form' %>
<%= submit_tag _('Save') %>
<%= submit_tag l(:button_save) %>
<%= end_form_tag %>
<%= start_form_tag :action => 'destroy', :id => @enumeration %>
<%= submit_tag _('Delete') %>
<%= submit_tag l(:button_delete) %>
<%= end_form_tag %>

@ -1,22 +1,21 @@
<h2><%=_('Enumerations')%></h2>
<h2><%=l(:label_enumerations)%></h2>
<% for option in Enumeration::OPTIONS %>
<% Enumeration::OPTIONS.each do |option, name| %>
<% if @params[:opt]==option[1] %>
<% if @params[:opt]==option %>
<p><%= image_tag 'dir_open' %> <b><%=_ option[0] %></b></p>
<p><%= image_tag 'dir_open' %> <b><%= l(name) %></b></p>
<ul>
<% for value in Enumeration::find(:all, :conditions => [ "opt = ?", option[1]]) %>
<% for value in Enumeration.find(:all, :conditions => ["opt = ?", option]) %>
<li><%= link_to value.name, :action => 'edit', :id => value %></li>
<% end %>
</ul>
<ul>
<li><%= link_to ('&#187; ' + _('New')), :action => 'new', :opt => option[1] %></li>
<li><%= link_to ('&#187; ' + l(:label_new)), :action => 'new', :opt => option %></li>
</ul>
<% else %>
<p><%= image_tag 'dir' %> <%= link_to _(option[0]), :opt => option[1] %></p>
<p><%= image_tag 'dir' %> <%= link_to l(name), :opt => option %></p>
<% end %>
<% end %>
<% end %>

@ -1,6 +1,6 @@
<h2><%=_('New enumeration')%></h2>
<h2><%=l(:label_enumeration_new)%></h2>
<%= start_form_tag :action => 'create' %>
<%= render :partial => 'form' %>
<%= submit_tag _('Create') %>
<%= submit_tag l(:button_create) %>
<%= end_form_tag %>

@ -1,7 +1,7 @@
<%= error_messages_for 'issue_category' %>
<!--[form:issue_category]-->
<p><label for="issue_category_name"><%=_('Name')%></label><br/>
<p><label for="issue_category_name"><%l(:field_name)%></label><br/>
<%= text_field 'issue_category', 'name' %></p>
<!--[eoform:issue_category]-->

@ -1,6 +1,6 @@
<h2>Editing issue category</h2>
<h2><%=l(:label_issue_category)%></h2>
<%= start_form_tag :action => 'edit', :id => @category %>
<%= render :partial => 'form' %>
<%= submit_tag _('Save') %>
<%= submit_tag l(:button_save) %>
<%= end_form_tag %>

@ -1,16 +1,16 @@
<%= error_messages_for 'issue_status' %>
<!--[form:issue_status]-->
<p><label for="issue_status_name"><%=_('Name')%></label> <span class="required">*</span><br/>
<p><label for="issue_status_name"><%=l(:field_name)%></label> <span class="required">*</span><br/>
<%= text_field 'issue_status', 'name' %></p>
<p><%= check_box 'issue_status', 'is_closed' %>
<label for="issue_status_is_closed"><%=_('Issue closed')%></label></p>
<label for="issue_status_is_closed"><%=l(:field_is_closed)%></label></p>
<p><%= check_box 'issue_status', 'is_default' %>
<label for="issue_status_is_default"><%=_('Default status')%></label></p>
<label for="issue_status_is_default"><%=l(:field_is_default)%></label></p>
<p><label for="issue_status_html_color"><%=_('Color')%></label>
<p><label for="issue_status_html_color"><%=l(:field_html_color)%></label>
#<%= text_field 'issue_status', 'html_color', :maxlength => 6 %> <span class="required">*</span></p>
<!--[eoform:issue_status]-->

@ -1,6 +1,6 @@
<h2><%=_('Issue status')%></h2>
<h2><%=l(:label_issue_status)%></h2>
<%= start_form_tag :action => 'update', :id => @issue_status %>
<%= render :partial => 'form' %>
<%= submit_tag _('Save') %>
<%= submit_tag l(:button_save) %>
<%= end_form_tag %>

@ -1,11 +1,11 @@
<h2><%=_('Issue statuses')%></h2>
<h2><%=l(:label_issue_status_plural)%></h2>
<table border="0" cellspacing="1" cellpadding="2" class="listTableContent">
<tr class="ListHead">
<th><%=_('Status')%></th>
<th><%=_('Default status')%></th>
<th><%=_('Issue closed')%></th>
<th><%=_('Color')%></th>
<th><%=l(:field_status)%></th>
<th><%=l(:field_is_default)%></th>
<th><%=l(:field_is_closed)%></th>
<th><%=l(:field_html_color)%></th>
<th></th>
</tr>
@ -17,7 +17,7 @@
<td bgcolor="#<%= status.html_color %>">&nbsp</td>
<td align="center">
<%= start_form_tag :action => 'destroy', :id => status %>
<%= submit_tag _('Delete'), :class => "button-small" %>
<%= submit_tag l(:button_delete), :class => "button-small" %>
<%= end_form_tag %>
</td>
</tr>
@ -27,4 +27,4 @@
<%= pagination_links_full @issue_status_pages %>
<br />
<%= link_to '&#187; ' + _('New issue status'), :action => 'new' %>
<%= link_to '&#187; ' + l(:label_issue_status_new), :action => 'new' %>

@ -1,6 +1,6 @@
<h2><%=_('New issue status')%></h2>
<h2><%=l(:label_issue_status_new)%></h2>
<%= start_form_tag :action => 'create' %>
<%= render :partial => 'form' %>
<%= submit_tag _('Create') %>
<%= submit_tag l(:button_create) %>
<%= end_form_tag %>

@ -1,28 +1,28 @@
<% if issues.length > 0 %>
<table cellspacing="0" cellpadding="1" width="100%" border="0" class="listTable">
<tr><td>
<table width="100%" border="0" cellspacing="1" cellpadding="2" class="listTableContent">
<tr class="ListHead">
<th>#</th>
<th><%=_('Tracker')%></th>
<th><%=_('Subject')%></th>
</tr>
<% for issue in issues %>
<tr bgcolor="#<%= issue.status.html_color %>">
<td align="center">
<%= link_to issue.id, :controller => 'issues', :action => 'show', :id => issue %><br />
</td>
<td><p class="small"><%= issue.project.name %> - <%= issue.tracker.name %><br />
<%= issue.status.name %> - <%= format_time(issue.updated_on) %></p></td>
<td>
<p class="small"><%= link_to issue.subject, :controller => 'issues', :action => 'show', :id => issue %></p>
</td>
</tr>
<% end %>
</table>
</td>
<table cellspacing="0" cellpadding="1" width="100%" border="0" class="listTable">
<tr><td>
<table width="100%" border="0" cellspacing="1" cellpadding="2" class="listTableContent">
<tr class="ListHead">
<th>#</th>
<th><%=l(:field_tracker)%></th>
<th><%=l(:field_subject)%></th>
</tr>
</table>
<% for issue in issues %>
<tr bgcolor="#<%= issue.status.html_color %>">
<td align="center">
<%= link_to issue.id, :controller => 'issues', :action => 'show', :id => issue %><br />
</td>
<td><p class="small"><%= issue.project.name %> - <%= issue.tracker.name %><br />
<%= issue.status.name %> - <%= format_time(issue.updated_on) %></p></td>
<td>
<p class="small"><%= link_to issue.subject, :controller => 'issues', :action => 'show', :id => issue %></p>
</td>
</tr>
<% end %>
</table>
</td>
</tr>
</table>
<% else %>
<%=_('No issue')%>
<i><%=l(:label_no_data)%></i>
<% end %>

@ -1,4 +1,4 @@
<h2><%=_('Issue')%> #<%= @issue.id %>: <%= @issue.subject %></h2>
<h2><%=l(:label_issue)%> #<%= @issue.id %>: <%= @issue.subject %></h2>
<%= error_messages_for 'history' %>
<%= start_form_tag :action => 'change_status', :id => @issue %>
@ -7,26 +7,25 @@
<%= hidden_field 'history', 'status_id' %>
<div class="box">
<p><%=_('New status')%>: <b><%= @history.status.name %></b></p>
<p><%=l(:label_issue_status_new)%>: <b><%= @history.status.name %></b></p>
<div>
<p><label for="issue_assigned_to_id"><%=_('Assigned to')%></label><br/>
<p><label for="issue_assigned_to_id"><%=l(:field_assigned_to)%></label><br/>
<select name="issue[assigned_to_id]">
<option value=""></option>
<%= options_from_collection_for_select @assignable_to, "id", "display_name", @issue.assigned_to_id %></p>
</select></p>
</div>
<p><label for="issue_fixed_version"><%=_('Fixed in version')%></label><br/>
<p><label for="issue_fixed_version"><%=l(:field_fixed_version)%></label><br/>
<select name="issue[fixed_version_id]">
<option value="">--none--</option>
<%= options_from_collection_for_select @issue.project.versions, "id", "name", @issue.fixed_version_id %>
</select></p>
<p><label for="history_notes"><%=_('Notes')%></label><br />
<p><label for="history_notes"><%=l(:field_notes)%></label><br />
<%= text_area 'history', 'notes', :cols => 60, :rows => 10 %></p>
</div>
<%= submit_tag _('Save') %>
<%= submit_tag l(:button_save) %>
<%= end_form_tag %>

@ -1,21 +1,21 @@
<h2><%=_@issue.tracker.name%> #<%= @issue.id %> - <%= @issue.subject %></h2>
<h2><%= @issue.tracker.name %> #<%= @issue.id %> - <%= @issue.subject %></h2>
<%= error_messages_for 'issue' %>
<%= start_form_tag :action => 'edit', :id => @issue %>
<div class="box">
<!--[form:issue]-->
<p><%=_('Status')%>: <b><%= @issue.status.name %></b></p>
<p><%=l(:field_status)%>: <b><%= @issue.status.name %></b></p>
<div style="float:left;margin-right:10px;">
<p><label for="issue_priority_id"><%=_('Priority')%> <span class="required">*</span></label><br/>
<p><label for="issue_priority_id"><%=l(:field_priority)%> <span class="required">*</span></label><br/>
<select name="issue[priority_id]">
<%= options_from_collection_for_select @priorities, "id", "name", @issue.priority_id %></p>
</select></p>
</div>
<div style="float:left;margin-right:10px;">
<p><label for="issue_assigned_to_id"><%=_('Assigned to')%></label><br/>
<p><label for="issue_assigned_to_id"><%=l(:field_assigned_to)%></label><br/>
<select name="issue[assigned_to_id]">
<option value=""></option>
<%= options_from_collection_for_select @issue.project.members, "user_id", "name", @issue.assigned_to_id %></p>
@ -23,24 +23,27 @@
</div>
<div>
<p><label for="issue_category_id"><%=_('Category')%></label><br/>
<p><label for="issue_category_id"><%=l(:field_category)%></label><br/>
<select name="issue[category_id]">
<option value=""></option>
<%= options_from_collection_for_select @project.issue_categories, "id", "name", @issue.category_id %></p>
</select></p>
</div>
<p><label for="issue_subject"><%=_('Subject')%></label><span class="required">*</span><br/>
<p><label for="issue_subject"><%=l(:field_subject)%></label><span class="required">*</span><br/>
<%= text_field 'issue', 'subject', :size => 60 %></p>
<p><label for="issue_description"><%=_('Description')%></label><span class="required">*</span><br/>
<p><label for="issue_description"><%=l(:field_description)%></label><span class="required">*</span><br/>
<%= text_area 'issue', 'description', :cols => 60, :rows => 10 %></p>
<p><label for="issue_due_date"><%=l(:field_due_date)%></label><br />
<%= date_select 'issue', 'due_date', :start_year => Date.today.year, :include_blank => true %></p>
<% for custom_value in @custom_values %>
<p><%= custom_field_tag_with_label custom_value %></p>
<% end %>
<p><label for="issue_fixed_version"><%=_('Fixed in version')%></label><br/>
<p><label for="issue_fixed_version"><%=l(:field_fixed_version)%></label><br/>
<select name="issue[fixed_version_id]">
<option value="">--none--</option>
<%= options_from_collection_for_select @project.versions, "id", "name", @issue.fixed_version_id %>
@ -49,5 +52,5 @@
<!--[eoform:issue]-->
</div>
<%= submit_tag _('Save') %>
<%= submit_tag l(:button_save) %>
<%= end_form_tag %>

@ -1,42 +1,43 @@
<h2><%=_(@issue.tracker.name)%> #<%= @issue.id %> - <%= @issue.subject %></h2>
<h2><%= @issue.tracker.name %> #<%= @issue.id %> - <%= @issue.subject %></h2>
<div class="box">
<p><b><%=_('Status')%>:</b> <%= @issue.status.name %></p>
<p><b><%=_('Priority')%>:</b> <%= @issue.priority.name %></p>
<p><b><%=_('Category')%>:</b> <%= @issue.category.name unless @issue.category_id.nil? %></p>
<p><b><%=_('Author')%>:</b> <%= @issue.author.display_name %></p>
<p><b><%=_('Assigned to')%>:</b> <%= @issue.assigned_to.display_name unless @issue.assigned_to.nil? %></p>
<p><b><%=_('Subject')%>:</b> <%= @issue.subject %></p>
<p><b><%=_('Description')%>:</b> <%= simple_format auto_link @issue.description %></p>
<p><b><%=_('Created on')%>:</b> <%= format_date(@issue.created_on) %></p>
<p>
<b><%=l(:field_status)%> :</b> <%= @issue.status.name %> &nbsp &nbsp
<b><%=l(:field_priority)%> :</b> <%= @issue.priority.name %> &nbsp &nbsp
<b><%=l(:field_assigned_to)%> :</b> <%= @issue.assigned_to ? @issue.assigned_to.display_name : "-" %> &nbsp &nbsp
<b><%=l(:field_category)%> :</b> <%= @issue.category ? @issue.category.name : "-" %>
</p>
<p><b><%=l(:field_author)%> :</b> <%= @issue.author.display_name %></p>
<p><b><%=l(:field_subject)%> :</b> <%= @issue.subject %></p>
<p><b><%=l(:field_description)%> :</b> <%= simple_format auto_link @issue.description %></p>
<p><b><%=l(:field_due_date)%> :</b> <%= format_date(@issue.due_date) %></p>
<p><b><%=l(:field_created_on)%> :</b> <%= format_date(@issue.created_on) %></p>
<% for custom_value in @custom_values %>
<p><b><%= custom_value.custom_field.name %></b>: <%= show_value custom_value %></p>
<p><b><%= custom_value.custom_field.name %></b> : <%= show_value custom_value %></p>
<% end %>
<% if authorize_for('issues', 'edit') %>
<%= start_form_tag ({:controller => 'issues', :action => 'edit', :id => @issue}, :method => "get" ) %>
<%= submit_tag _('Edit') %>
<%= submit_tag l(:button_edit) %>
<%= end_form_tag %>
&nbsp;&nbsp;
<% end %>
<% if authorize_for('issues', 'change_status') and @status_options and !@status_options.empty? %>
<%= start_form_tag ({:controller => 'issues', :action => 'change_status', :id => @issue}) %>
<label for="history_status_id"><%=_('Change status')%>:</label>
<label for="history_status_id"><%=l(:label_change_status)%> :</label>
<select name="history[status_id]">
<%= options_from_collection_for_select @status_options, "id", "name" %>
</select>
<%= submit_tag _ "Update..." %>
<%= submit_tag l(:button_change) %>
<%= end_form_tag %>
&nbsp;&nbsp;
<% end %>
<% if authorize_for('issues', 'destroy') %>
<%= start_form_tag ({:controller => 'issues', :action => 'destroy', :id => @issue} ) %>
<%= submit_tag _ "Delete" %>
<%= submit_tag l(:button_delete) %>
<%= end_form_tag %>
&nbsp;&nbsp;
<% end %>
@ -46,7 +47,7 @@
<div class="splitcontentleft">
<div class="box">
<h3><%=_('History')%></h3>
<h3><%=l(:label_history)%></h3>
<table width="100%">
<% for history in @issue.histories.find(:all, :include => :author) %>
<tr>
@ -64,7 +65,7 @@
<div class="splitcontentright">
<div class="box">
<h3><%=_('Attachments')%></h3>
<h3><%=l(:label_attachment_plural)%></h3>
<table width="100%">
<% for attachment in @issue.attachments %>
<tr>
@ -74,7 +75,7 @@
<% if authorize_for('issues', 'destroy_attachment') %>
<td>
<%= start_form_tag :action => 'destroy_attachment', :id => @issue, :attachment_id => attachment %>
<%= submit_tag _('Delete'), :class => "button-small" %>
<%= submit_tag l(:button_delete), :class => "button-small" %>
<%= end_form_tag %>
</td>
<% end %>
@ -84,8 +85,8 @@
<br />
<% if authorize_for('issues', 'add_attachment') %>
<%= start_form_tag ({ :controller => 'issues', :action => 'add_attachment', :id => @issue }, :multipart => true) %>
<%=_('Add file')%>: <%= file_field 'attachment', 'file' %>
<%= submit_tag _('Add') %>
<%=l(:label_attachment_new)%>: <%= file_field 'attachment', 'file' %>
<%= submit_tag l(:button_add) %>
<%= end_form_tag %>
<% end %>
</div>

@ -14,33 +14,33 @@
<script type='text/javascript'>
var menu_contenu=' \
<div id="menuAdmin" class="menu" onmouseover="menuMouseover(event)"> \
<a class="menuItem" href="\/admin\/projects" onmouseover="menuItemMouseover(event,\'menuProjects\');"><span class="menuItemText"><%=_('Projects')%><\/span><span class="menuItemArrow">&#9654;<\/span><\/a> \
<a class="menuItem" href="\/users" onmouseover="menuItemMouseover(event,\'menuUsers\');"><span class="menuItemText"><%=_('Users')%><\/span><span class="menuItemArrow">&#9654;<\/span><\/a> \
<a class="menuItem" href="\/roles"><%=_('Roles and permissions')%><\/a> \
<a class="menuItem" href="\/trackers" onmouseover="menuItemMouseover(event,\'menuTrackers\');"><span class="menuItemText"><%=_('Trackers')%><\/span><span class="menuItemArrow">&#9654;<\/span><\/a> \
<a class="menuItem" href="\/custom_fields"><%=_('Custom fields')%><\/a> \
<a class="menuItem" href="\/enumerations"><%=_('Enumerations')%><\/a> \
<a class="menuItem" href="\/admin\/mail_options"><%=_('Mail notifications')%><\/a> \
<a class="menuItem" href="\/admin\/projects" onmouseover="menuItemMouseover(event,\'menuProjects\');"><span class="menuItemText"><%=l(:label_project_plural)%><\/span><span class="menuItemArrow">&#9654;<\/span><\/a> \
<a class="menuItem" href="\/users" onmouseover="menuItemMouseover(event,\'menuUsers\');"><span class="menuItemText"><%=l(:label_user_plural)%><\/span><span class="menuItemArrow">&#9654;<\/span><\/a> \
<a class="menuItem" href="\/roles"><%=l(:label_role_and_permissions)%><\/a> \
<a class="menuItem" href="\/trackers" onmouseover="menuItemMouseover(event,\'menuTrackers\');"><span class="menuItemText"><%=l(:label_tracker_plural)%><\/span><span class="menuItemArrow">&#9654;<\/span><\/a> \
<a class="menuItem" href="\/custom_fields"><%=l(:label_custom_field_plural)%><\/a> \
<a class="menuItem" href="\/enumerations"><%=l(:label_enumerations)%><\/a> \
<a class="menuItem" href="\/admin\/mail_options"><%=l(:field_mail_notification)%><\/a> \
<a class="menuItem" href="\/auth_sources"><%=l(:label_authentication)%><\/a> \
<a class="menuItem" href="\/admin\/info"><%=_('Information')%><\/a> \
<a class="menuItem" href="\/admin\/info"><%=l(:label_information_plural)%><\/a> \
<\/div> \
<div id="menuTrackers" class="menu"> \
<a class="menuItem" href="\/issue_statuses"><%=_('Issue Statuses')%><\/a> \
<a class="menuItem" href="\/roles\/workflow"><%=_('Workflow')%><\/a> \
<a class="menuItem" href="\/issue_statuses"><%=l(:label_issue_status_plural)%><\/a> \
<a class="menuItem" href="\/roles\/workflow"><%=l(:label_workflow)%><\/a> \
<\/div> \
<div id="menuProjects" class="menu"><a class="menuItem" href="\/projects\/add"><%=_('New')%><\/a><\/div> \
<div id="menuUsers" class="menu"><a class="menuItem" href="\/users\/add"><%=_('New')%><\/a><\/div> \
<div id="menuProjects" class="menu"><a class="menuItem" href="\/projects\/add"><%=l(:label_new)%><\/a><\/div> \
<div id="menuUsers" class="menu"><a class="menuItem" href="\/users\/add"><%=l(:label_new)%><\/a><\/div> \
\
<% unless @project.nil? || @project.id.nil? %> \
<div id="menuProject" class="menu" onmouseover="menuMouseover(event)"> \
<%= link_to _('Issues'), {:controller => 'projects', :action => 'list_issues', :id => @project }, :class => "menuItem" %> \
<%= link_to _('Reports'), {:controller => 'reports', :action => 'issue_report', :id => @project }, :class => "menuItem" %> \
<%= link_to _('News'), {:controller => 'projects', :action => 'list_news', :id => @project }, :class => "menuItem" %> \
<%= link_to _('Change log'), {:controller => 'projects', :action => 'changelog', :id => @project }, :class => "menuItem" %> \
<%= link_to _('Documents'), {:controller => 'projects', :action => 'list_documents', :id => @project }, :class => "menuItem" %> \
<%= link_to _('Members'), {:controller => 'projects', :action => 'list_members', :id => @project }, :class => "menuItem" %> \
<%= link_to _('Files'), {:controller => 'projects', :action => 'list_files', :id => @project }, :class => "menuItem" %> \
<%= link_to_if_authorized _('Settings'), {:controller => 'projects', :action => 'settings', :id => @project }, :class => "menuItem" %> \
<%= link_to l(:label_issue_plural), {:controller => 'projects', :action => 'list_issues', :id => @project }, :class => "menuItem" %> \
<%= link_to l(:label_report_plural), {:controller => 'reports', :action => 'issue_report', :id => @project }, :class => "menuItem" %> \
<%= link_to l(:label_news_plural), {:controller => 'projects', :action => 'list_news', :id => @project }, :class => "menuItem" %> \
<%= link_to l(:label_change_log), {:controller => 'projects', :action => 'changelog', :id => @project }, :class => "menuItem" %> \
<%= link_to l(:label_document_plural), {:controller => 'projects', :action => 'list_documents', :id => @project }, :class => "menuItem" %> \
<%= link_to l(:label_member_plural), {:controller => 'projects', :action => 'list_members', :id => @project }, :class => "menuItem" %> \
<%= link_to l(:label_attachment_plural), {:controller => 'projects', :action => 'list_files', :id => @project }, :class => "menuItem" %> \
<%= link_to_if_authorized l(:label_settings), {:controller => 'projects', :action => 'settings', :id => @project }, :class => "menuItem" %> \
<\/div> \
<% end %> \
';
@ -95,20 +95,20 @@ var menu_contenu=' \
<% unless @project.nil? || @project.id.nil? %>
<h2><%= @project.name %></h2>
<ul class="menublock">
<li><%= link_to _('Overview'), :controller => 'projects', :action => 'show', :id => @project %></li>
<li><%= link_to _('Issues'), :controller => 'projects', :action => 'list_issues', :id => @project %></li>
<li><%= link_to _('Reports'), :controller => 'reports', :action => 'issue_report', :id => @project %></li>
<li><%= link_to _('News'), :controller => 'projects', :action => 'list_news', :id => @project %></li>
<li><%= link_to _('Change log'), :controller => 'projects', :action => 'changelog', :id => @project %></li>
<li><%= link_to _('Documents'), :controller => 'projects', :action => 'list_documents', :id => @project %></li>
<li><%= link_to _('Members'), :controller => 'projects', :action => 'list_members', :id => @project %></li>
<li><%= link_to _('Files'), :controller => 'projects', :action => 'list_files', :id => @project %></li>
<li><%= link_to_if_authorized _('Settings'), :controller => 'projects', :action => 'settings', :id => @project %></li>
<li><%= link_to l(:label_overview), :controller => 'projects', :action => 'show', :id => @project %></li>
<li><%= link_to l(:label_issue_plural), :controller => 'projects', :action => 'list_issues', :id => @project %></li>
<li><%= link_to l(:label_report_plural), :controller => 'reports', :action => 'issue_report', :id => @project %></li>
<li><%= link_to l(:label_news_plural), :controller => 'projects', :action => 'list_news', :id => @project %></li>
<li><%= link_to l(:label_change_log), :controller => 'projects', :action => 'changelog', :id => @project %></li>
<li><%= link_to l(:label_document_plural), :controller => 'projects', :action => 'list_documents', :id => @project %></li>
<li><%= link_to l(:label_member_plural), :controller => 'projects', :action => 'list_members', :id => @project %></li>
<li><%= link_to l(:label_attachment_plural), :controller => 'projects', :action => 'list_files', :id => @project %></li>
<li><%= link_to_if_authorized l(:label_settings), :controller => 'projects', :action => 'settings', :id => @project %></li>
</ul>
<% end %>
<% if loggedin? and @logged_in_user.memberships.length > 0 %>
<h2><%=_('My projects') %></h2>
<h2><%=l(:label_my_projects) %></h2>
<ul class="menublock">
<% for membership in @logged_in_user.memberships %>
<li><%= link_to membership.project.name, :controller => 'projects', :action => 'show', :id => membership.project %></li>

@ -1,5 +1,5 @@
<%=_('Issue')%> #<%= issue.id %> - <%= issue.subject %>
<%=_('Author')%>: <%= issue.author.display_name %>
<%=l(:label_issue)%> #<%= issue.id %> - <%= issue.subject %>
<%=l(:field_author)%>: <%= issue.author.display_name %>
<%= issue.description %>

@ -1,13 +1,13 @@
<%= error_messages_for 'news' %>
<!--[form:news]-->
<p><label for="news_title"><%=_('Title')%></label> <span class="required">*</span><br/>
<p><label for="news_title"><%=l(:field_title)%></label> <span class="required">*</span><br/>
<%= text_field 'news', 'title', :size => 60 %></p>
<p><label for="news_summary"><%=_('Summary')%></label><br/>
<p><label for="news_summary"><%=l(:field_summary)%></label><br/>
<%= text_area 'news', 'summary', :cols => 60, :rows => 2 %></p>
<p><label for="news_description"><%=_('Description')%> <span class="required">*</span></label><br/>
<p><label for="news_description"><%=l(:field_description)%> <span class="required">*</span></label><br/>
<%= text_area 'news', 'description', :cols => 60, :rows => 10 %></p>
<!--[eoform:news]-->

@ -1,6 +1,6 @@
<h2><%=_('News')%></h2>
<h2><%=l(:label_news)%></h2>
<%= start_form_tag :action => 'edit', :id => @news %>
<%= render :partial => 'form' %>
<%= submit_tag _('Save') %>
<%= submit_tag l(:button_save) %>
<%= end_form_tag %>

@ -1,9 +1,9 @@
<h2><%= @news.title %></h2>
<p>
<b><%=_('Summary')%></b>: <%= @news.summary %><br />
<b><%=_('By')%></b>: <%= @news.author.display_name %><br />
<b><%=_('Date')%></b>: <%= format_time(@news.created_on) %>
<b><%=l(:field_summary)%></b>: <%= @news.summary %><br />
<b><%=l(:field_author)%></b>: <%= @news.author.display_name %><br />
<b><%=l(:field_created_on)%></b>: <%= format_time(@news.created_on) %>
</p>
<%= simple_format auto_link @news.description %>

@ -2,31 +2,31 @@
<div class="box">
<!--[form:project]-->
<p><label for="project_name"><%=_('Name')%> <span class="required">*</span></label><br/>
<p><label for="project_name"><%=l(:field_name)%> <span class="required">*</span></label><br/>
<%= text_field 'project', 'name' %></p>
<% if admin_loggedin? %>
<p><label for="project_parent_id"><%=_('Subproject of')%></label><br/>
<p><label for="project_parent_id"><%=l(:field_parent)%></label><br/>
<select name="project[parent_id]">
<option value=""></option>
<%= options_from_collection_for_select @root_projects, "id", "name", @project.parent_id %>
</select></p>
<% end %>
<p><label for="project_description"><%=_('Description')%> <span class="required">*</span></label><br/>
<p><label for="project_description"><%=l(:field_description)%> <span class="required">*</span></label><br/>
<%= text_area 'project', 'description', :cols => 60, :rows => 3 %></p>
<p><label for="project_homepage"><%=_('Homepage')%></label><br/>
<p><label for="project_homepage"><%=l(:field_homepage)%></label><br/>
<%= text_field 'project', 'homepage', :size => 40 %></p>
<p><%= check_box 'project', 'is_public' %>
<label for="project_is_public"><%=_('Public')%></label></p>
<label for="project_is_public"><%=l(:field_is_public)%></label></p>
<% for custom_value in @custom_values %>
<p><%= custom_field_tag_with_label custom_value %></p>
<% end %>
<fieldset><legend><%=_('Custom fields')%></legend>
<fieldset><legend><%=l(:label_custom_field_plural)%></legend>
<% for custom_field in @custom_fields %>
<input type="checkbox"

@ -1,6 +1,6 @@
<h2><%=_('New project')%></h2>
<h2><%=l(:label_project_new)%></h2>
<%= start_form_tag :action => 'add' %>
<%= render :partial => 'form' %>
<%= submit_tag _('Create') %>
<%= submit_tag l(:button_create) %>
<%= end_form_tag %>

@ -1,26 +1,12 @@
<h2><%=_('New document')%></h2>
<h2><%=l(:label_document_new)%></h2>
<%= error_messages_for 'document' %>
<%= start_form_tag( { :action => 'add_document', :id => @project }, :multipart => true) %>
<!--[form:document]-->
<p><label for="document_category_id"><%=_('Category')%></label><br />
<select name="document[category_id]">
<%= options_from_collection_for_select @categories, "id", "name",@document.category_id %>
</select></p>
<p><label for="document_title"><%=_('Title')%> <span class="required">*</span></label><br />
<%= text_field 'document', 'title', :size => 60 %></p>
<p><label for="document_description"><%=_('Description')%> <span class="required">*</span></label><br />
<%= text_area 'document', 'description', :cols => 60, :rows => 5 %></p>
<%= render :partial => 'documents/form' %>
<p><label for="attachment_file"><%=_('File')%></label><br/>
<p><label for="attachment_file"><%=l(:label_attachment)%></label><br/>
<%= file_field 'attachment', 'file' %></p>
<!--[eoform:document]-->
<%= submit_tag _('Create') %>
<%= submit_tag l(:button_create) %>
<%= end_form_tag %>

@ -1,13 +1,14 @@
<h2><%=_('New file')%></h2>
<h2><%=l(:label_attachment_new)%></h2>
<%= error_messages_for 'attachment' %>
<%= start_form_tag ({ :action => 'add_file', :project => @project }, :multipart => true) %>
<p><label for="version_id"><%=_('Version')%></label><br />
<p><label for="version_id"><%=l(:field_version)%></label><br />
<select name="version_id">
<%= options_from_collection_for_select @versions, "id", "name" %>
</select></p>
<p><b><%=_('File')%><b><br /><%= file_field 'attachment', 'file' %></p>
<p><b><%=l(:label_attachment)%><b><br /><%= file_field 'attachment', 'file' %></p>
<br/>
<%= submit_tag _('Add') %>
<%= submit_tag l(:button_add) %>
<%= end_form_tag %>

@ -1,4 +1,4 @@
<h2><%=_('New issue')%>: <%=_(@tracker.name)%></h2>
<h2><%=l(:label_issue_new)%>: <%= @tracker.name %></h2>
<%= start_form_tag( { :action => 'add_issue', :id => @project }, :multipart => true) %>
<%= error_messages_for 'issue' %>
@ -9,14 +9,14 @@
<%= hidden_field_tag 'tracker_id', @tracker.id %>
<div style="float:left;margin-right:10px;">
<p><label for="issue_priority_id"><%=_('Priority')%> <span class="required">*</span></label><br/>
<p><label for="issue_priority_id"><%=l(:field_priority)%> <span class="required">*</span></label><br />
<select name="issue[priority_id]">
<%= options_from_collection_for_select @priorities, "id", "name", @issue.priority_id %></p>
</select></p>
</div>
<div style="float:left;margin-right:10px;">
<p><label for="issue_assigned_to_id"><%=_('Assigned to')%></label><br/>
<p><label for="issue_assigned_to_id"><%=l(:field_assigned_to)%></label><br />
<select name="issue[assigned_to_id]">
<option value=""></option>
<%= options_from_collection_for_select @issue.project.members, "user_id", "name", @issue.assigned_to_id %></p>
@ -24,28 +24,29 @@
</div>
<div>
<p><label for="issue_category_id"><%=_('Category')%></label><br/>
<p><label for="issue_category_id"><%=l(:field_category)%></label><br />
<select name="issue[category_id]">
<option value=""></option><%= options_from_collection_for_select @project.issue_categories, "id", "name", @issue.category_id %>
</select></p>
</div>
<p><label for="issue_subject"><%=_('Subject')%> <span class="required">*</span></label><br/>
<p><label for="issue_subject"><%=l(:field_subject)%> <span class="required">*</span></label><br />
<%= text_field 'issue', 'subject', :size => 80 %></p>
<p><label for="issue_description"><%=_('Description')%> <span class="required">*</span></label><br/>
<p><label for="issue_description"><%=l(:field_description)%> <span class="required">*</span></label><br />
<%= text_area 'issue', 'description', :cols => 60, :rows => 10 %></p>
<p><label for="issue_due_date"><%=l(:field_due_date)%></label><br />
<%= date_select 'issue', 'due_date', :start_year => Date.today.year, :include_blank => true %></p>
<% for custom_value in @custom_values %>
<p><%= custom_field_tag_with_label custom_value %></p>
<% end %>
<p><label for="attachment_file"><%=_('Attachment')%></label><br/>
<p><label for="attachment_file"><%=l(:label_attachment)%></label><br />
<%= file_field 'attachment', 'file' %></p>
<!--[eoform:issue]-->
</div>
<%= submit_tag _('Create') %>
<%= submit_tag l(:button_create) %>
<%= end_form_tag %>

@ -1,7 +1,7 @@
<h2><%=('Add news')%></h2>
<h2><%=l(:label_news_new)%></h2>
<%= start_form_tag :action => 'add_news', :id => @project %>
<%= render :partial => 'news/form' %>
<%= submit_tag _('Create') %>
<%= submit_tag l(:button_create) %>
<%= end_form_tag %>

@ -1,7 +1,7 @@
<h2><%=_('New version')%></h2>
<h2><%=l(:label_version_new)%></h2>
<%= start_form_tag :action => 'add_version', :id => @project %>
<%= render :partial => 'versions/form' %>
<%= submit_tag _('Create') %>
<%= submit_tag l(:button_create) %>
<%= end_form_tag %>

@ -1,4 +1,4 @@
<h2><%=_('Change log')%></h2>
<h2><%=l(:label_change_log)%></h2>
<% fixed_issues = @fixed_issues.group_by {|i| i.fixed_version } %>
<% fixed_issues.each do |version, issues| %>

@ -1,11 +1,13 @@
<h2><%=_('Confirmation')%></h2>
<h2><%=l(:label_confirmation)%></h2>
<div class="box">
<center>
<p><%=_('Are you sure you want to delete project')%> <strong><%= @project.name %></strong> ?</p>
<p><strong><%= @project.name %></strong><br />
<%=l(:text_project_destroy_confirmation)%></p>
<p>
<%= start_form_tag({:controller => 'projects', :action => 'destroy', :id => @project}) %>
<%= hidden_field_tag "confirm", 1 %>
<%= submit_tag _('Delete') %>
<%= submit_tag l(:button_delete) %>
<%= end_form_tag %>
</p>
</center>

@ -1,10 +1,10 @@
<h2><%=_('Public projects')%></h2>
<h2><%=l(:label_public_projects)%></h2>
<table width="100%" cellspacing="1" cellpadding="2" class="listTableContent">
<tr class="ListHead">
<%= sort_header_tag('name', :caption => _('Project')) %>
<th>Description</th>
<%= sort_header_tag('created_on', :caption => _('Created on')) %>
<%= sort_header_tag('name', :caption => l(:label_project)) %>
<th><%=l(:field_description)%></th>
<%= sort_header_tag('created_on', :caption => l(:field_created_on)) %>
</tr>
<% for project in @projects %>

@ -1,4 +1,4 @@
<h2><%=_('Documents')%></h2>
<h2><%=l(:label_document_plural)%></h2>
<% documents = @documents.group_by {|d| d.category } %>
<% documents.each do |category, docs| %>
@ -8,7 +8,7 @@
<li>
<b><%= link_to d.title, :controller => 'documents', :action => 'show', :id => d %></b>
<br />
<%=_('Desciption')%>: <%= d.description %><br />
<%=l(:field_description)%>: <%= d.description %><br />
<%= format_time(d.created_on) %>
</li>
@ -17,5 +17,5 @@
<% end %>
<p>
<%= link_to_if_authorized '&#187; ' + _('New'), :controller => 'projects', :action => 'add_document', :id => @project %>
<%= link_to_if_authorized '&#187; ' + l(:label_document_new), :controller => 'projects', :action => 'add_document', :id => @project %>
</p>

@ -1,13 +1,13 @@
<h2><%=_('Files')%></h2>
<h2><%=l(:label_attachment_plural)%></h2>
<% delete_allowed = authorize_for('versions', 'destroy_file') %>
<table border="0" cellspacing="1" cellpadding="2" class="listTableContent">
<tr class="ListHead">
<th><%=_('Version')%></th>
<th><%=_('File')%></th>
<th><%=_('Date')%></th>
<th><%=_('Size')%></th>
<th><%=l(:field_version)%></th>
<th><%=l(:field_filename)%></th>
<th><%=l(:label_date)%></th>
<th><%=l(:field_filesize)%></th>
<th>D/L</th>
<th>MD5</th>
<% if delete_allowed %><th></th><% end %>
@ -28,7 +28,7 @@
<% if delete_allowed %>
<td align="center">
<%= start_form_tag :controller => 'versions', :action => 'destroy_file', :id => version, :attachment_id => file %>
<%= submit_tag _('Delete'), :class => "button-small" %>
<%= submit_tag l(:button_delete), :class => "button-small" %>
<%= end_form_tag %>
</td>
<% end %>
@ -40,7 +40,7 @@
<br />
<p>
<%= link_to_if_authorized '&#187; ' + _('New'), :controller => 'projects', :action => 'add_file', :id => @project %>
<%= link_to_if_authorized '&#187; ' + l(:label_attachment_new), :controller => 'projects', :action => 'add_file', :id => @project %>
</p>

@ -1,56 +1,53 @@
<h2><%=_('Issues')%></h2>
<h2><%=l(:label_issue_plural)%></h2>
<form method="post" class="noborder">
<table cellpadding=2>
<table cellpadding=2>
<tr>
<td><small><%=_('Status')%>:</small><br /><%= search_filter_tag 'status_id', :class => 'select-small' %></td>
<td><small><%=_('Tracker')%>:</small><br /><%= search_filter_tag 'tracker_id', :class => 'select-small' %></td>
<td><small><%=_('Priority')%>:</small><br /><%= search_filter_tag 'priority_id', :class => 'select-small' %></td>
<td><small><%=_('Category')%>:</small><br /><%= search_filter_tag 'category_id', :class => 'select-small' %></td>
<td><small><%=_('Fixed in version')%>:</small><br /><%= search_filter_tag 'fixed_version_id', :class => 'select-small' %></td>
<td><small><%=_('Assigned to')%>:</small><br /><%= search_filter_tag 'assigned_to_id', :class => 'select-small' %></td>
<td><small><%=_('Subprojects')%>:</small><br /><%= search_filter_tag 'subproject_id', :class => 'select-small' %></td>
<td><small><%=l(:field_status)%>:</small><br /><%= search_filter_tag 'status_id', :class => 'select-small' %></td>
<td><small><%=l(:field_tracker)%>:</small><br /><%= search_filter_tag 'tracker_id', :class => 'select-small' %></td>
<td><small><%=l(:field_priority)%>:</small><br /><%= search_filter_tag 'priority_id', :class => 'select-small' %></td>
<td><small><%=l(:field_category)%>:</small><br /><%= search_filter_tag 'category_id', :class => 'select-small' %></td>
<td><small><%=l(:field_fixed_version)%>:</small><br /><%= search_filter_tag 'fixed_version_id', :class => 'select-small' %></td>
<td><small><%=l(:field_assigned_to)%>:</small><br /><%= search_filter_tag 'assigned_to_id', :class => 'select-small' %></td>
<td><small><%=l(:label_subproject_plural)%>:</small><br /><%= search_filter_tag 'subproject_id', :class => 'select-small' %></td>
<td valign="bottom">
<%= submit_tag _('Apply filter'), :class => 'button-small' %>
<%= submit_tag l(:button_apply), :class => 'button-small' %>
<%= end_form_tag %>
<%= start_form_tag %>
<%= submit_tag _('Reset'), :class => 'button-small' %>
<%= submit_tag l(:button_clear), :class => 'button-small' %>
<%= end_form_tag %>
</td>
</tr>
</table>
&nbsp;
<table border="0" cellspacing="1" cellpadding="2" class="listTableContent">
<tr><td colspan="7" align="right">
<small><%= link_to 'Export to CSV', :action => 'export_issues_csv', :id => @project.id %></small>
</td></tr>
<tr class="ListHead">
<%= sort_header_tag('issues.id', :caption => '#') %>
<%= sort_header_tag('issue_statuses.name', :caption => _('Status')) %>
<%= sort_header_tag('issues.tracker_id', :caption => _('Tracker')) %>
<th><%=_('Subject')%></th>
<%= sort_header_tag('users.lastname', :caption => _('Author')) %>
<%= sort_header_tag('issues.created_on', :caption => _('Created on')) %>
<%= sort_header_tag('issues.updated_on', :caption => _('Last update')) %>
</tr>
<% for issue in @issues %>
<tr bgcolor="#<%= issue.status.html_color %>">
<td align="center"><%= link_to issue.long_id, :controller => 'issues', :action => 'show', :id => issue %></td>
<td align="center"><%= issue.status.name %></td>
<td align="center"><%= issue.tracker.name %></td>
<td><%= link_to issue.subject, :controller => 'issues', :action => 'show', :id => issue %></td>
<td align="center"><%= issue.author.display_name %></td>
<td align="center"><%= format_time(issue.created_on) %></td>
<td align="center"><%= format_time(issue.updated_on) %></td>
</tr>
<% end %>
</table>
<p>
<%= pagination_links_full @issue_pages %>
[ <%= @issue_pages.current.first_item %> - <%= @issue_pages.current.last_item %> / <%= @issue_count %> ]
</p>
<table border="0" cellspacing="1" cellpadding="2" class="listTableContent">
<tr><td colspan="7" align="right">
<small><%= link_to l(:label_export_csv), :action => 'export_issues_csv', :id => @project.id %></small>
</td></tr>
<tr class="ListHead">
<%= sort_header_tag('issues.id', :caption => '#') %>
<%= sort_header_tag('issue_statuses.name', :caption => l(:field_status)) %>
<%= sort_header_tag('issues.tracker_id', :caption => l(:field_tracker)) %>
<th><%=l(:field_subject)%></th>
<%= sort_header_tag('users.lastname', :caption => l(:field_author)) %>
<%= sort_header_tag('issues.created_on', :caption => l(:field_created_on)) %>
<%= sort_header_tag('issues.updated_on', :caption => l(:field_updated_on)) %>
</tr>
<% for issue in @issues %>
<tr bgcolor="#<%= issue.status.html_color %>">
<td align="center"><%= link_to issue.long_id, :controller => 'issues', :action => 'show', :id => issue %></td>
<td align="center"><%= issue.status.name %></td>
<td align="center"><%= issue.tracker.name %></td>
<td><%= link_to issue.subject, :controller => 'issues', :action => 'show', :id => issue %></td>
<td align="center"><%= issue.author.display_name %></td>
<td align="center"><%= format_time(issue.created_on) %></td>
<td align="center"><%= format_time(issue.updated_on) %></td>
</tr>
<% end %>
</table>
<p>
<%= pagination_links_full @issue_pages %>
[ <%= @issue_pages.current.first_item %> - <%= @issue_pages.current.last_item %> / <%= @issue_count %> ]
</p>

@ -1,4 +1,4 @@
<h2><%=_('Project members')%></h2>
<h2><%=l(:label_member_plural)%></h2>
<% members = @members.group_by {|m| m.role } %>
<% members.each do |role, member| %>

@ -1,4 +1,4 @@
<h2><%=_('News')%></h2>
<h2><%=l(:label_news_plural)%></h2>
<% for news in @news %>
<p>
@ -7,11 +7,11 @@
<%= link_to_if_authorized image_tag('delete'), { :controller => 'news', :action => 'destroy', :id => news }, :confirm => 'Are you sure?' %>
<br />
<%= news.summary %>
<small>[<%= link_to _('Read...'), :controller => 'news', :action => 'show', :id => news %>]</small>
<small>[<%= link_to l(:label_read), :controller => 'news', :action => 'show', :id => news %>]</small>
</p>
<% end %>
<%= pagination_links_full @news_pages %>
<p>
<%= link_to_if_authorized '&#187; ' + _('Add'), :controller => 'projects', :action => 'add_news', :id => @project %>
<%= link_to_if_authorized '&#187; ' + l(:label_news_new), :controller => 'projects', :action => 'add_news', :id => @project %>
</p>

@ -1,14 +1,14 @@
<h2><%=_('Settings')%></h2>
<h2><%=l(:label_settings)%></h2>
<%= start_form_tag :action => 'edit', :id => @project %>
<%= render :partial => 'form' %>
<center><%= submit_tag _('Save') %></center>
<center><%= submit_tag l(:button_save) %></center>
<%= end_form_tag %>
&nbsp;
<div class="box">
<h3><%=_('Members')%></h3>
<h3><%=l(:label_member_plural)%></h3>
<%= error_messages_for 'member' %>
<table>
<% for member in @project.members.find(:all, :include => :user) %>
@ -22,12 +22,12 @@
</select>
</td>
<td>
<%= submit_tag _('Save'), :class => "button-small" %>
<%= submit_tag l(:button_change), :class => "button-small" %>
<%= end_form_tag %>
</td>
<td>
<%= start_form_tag :controller => 'members', :action => 'destroy', :id => member %>
<%= submit_tag _('Delete'), :class => "button-small" %>
<%= submit_tag l(:button_delete), :class => "button-small" %>
<%= end_form_tag %>
</td>
</tr>
@ -35,7 +35,7 @@
<% end %>
</table>
<hr />
<label><%=_('New member')%></label><br/>
<label><%=l(:label_member_new)%></label><br/>
<%= start_form_tag :controller => 'projects', :action => 'add_member', :id => @project %>
<select name="member[user_id]">
<%= options_from_collection_for_select @users, "id", "display_name", @member.user_id %>
@ -43,12 +43,12 @@
<select name="member[role_id]">
<%= options_from_collection_for_select @roles, "id", "name", @member.role_id %>
</select>
<%= submit_tag _('Add') %>
<%= submit_tag l(:button_add) %>
<%= end_form_tag %>
</div>
<div class="box">
<h3><%=_('Versions')%></h3>
<h3><%=l(:label_version_plural)%></h3>
<table>
<% for version in @project.versions %>
@ -57,7 +57,7 @@
<td><%=h version.description %></td>
<td>
<%= start_form_tag :controller => 'versions', :action => 'destroy', :id => version %>
<%= submit_tag _('Delete'), :class => "button-small" %>
<%= submit_tag l(:button_delete), :class => "button-small" %>
<%= end_form_tag %>
</td>
</tr>
@ -65,13 +65,13 @@
</table>
<hr />
<%= start_form_tag ({ :controller => 'projects', :action => 'add_version', :id => @project }, :method => 'get' ) %>
<%= submit_tag _('New version...') %>
<%= submit_tag l(:label_version_new) %>
<%= end_form_tag %>
</div>
<div class="box">
<h3><%=_('Issue categories')%></h3>
<h3><%=l(:label_issue_category_plural)%></h3>
<table>
<% for @category in @project.issue_categories %>
<% unless @category.new_record? %>
@ -81,12 +81,12 @@
<%= text_field 'category', 'name', :size => 25 %>
</td>
<td>
<%= submit_tag _('Save'), :class => "button-small" %>
<%= submit_tag l(:button_save), :class => "button-small" %>
<%= end_form_tag %>
</td>
<td>
<%= start_form_tag :controller => 'issue_categories', :action => 'destroy', :id => @category %>
<%= submit_tag _('Delete'), :class => "button-small" %>
<%= submit_tag l(:button_delete), :class => "button-small" %>
<%= end_form_tag %>
</td>
</tr>
@ -96,10 +96,10 @@
<hr />
<%= start_form_tag :action => 'add_issue_category', :id => @project %>
<label for="issue_category_name"><%=l(:label_issue_category_new)%></label><br/>
<%= error_messages_for 'issue_category' %>
<label for="issue_category_name"><%=_('New category')%></label><br/>
<%= text_field 'issue_category', 'name', :size => 25 %>
<%= submit_tag _('Create') %>
<%= submit_tag l(:button_create) %>
<%= end_form_tag %>
</div>

@ -1,10 +1,10 @@
<h2><%=_('Overview')%></h2>
<h2><%=l(:label_overview)%></h2>
<div class="splitcontentleft">
<%= @project.description %>
<ul>
<li><%=_('Homepage')%>: <%= link_to @project.homepage, @project.homepage %></li>
<li><%=_('Created on')%>: <%= format_date(@project.created_on) %></li>
<li><%=l(:field_homepage)%>: <%= link_to @project.homepage, @project.homepage %></li>
<li><%=l(:field_created_on)%>: <%= format_date(@project.created_on) %></li>
<% for custom_value in @custom_values %>
<% if !custom_value.value.empty? %>
<li><%= custom_value.custom_field.name%>: <%= custom_value.value%></li>
@ -13,31 +13,32 @@
</ul>
<div class="box">
<h3><%= image_tag "tracker" %> <%=_('Trackers')%></h3>
<h3><%= image_tag "tracker" %> <%=l(:label_tracker_plural)%></h3>
<ul>
<% for tracker in @trackers %>
<li><%= link_to tracker.name, :controller => 'projects', :action => 'list_issues', :id => @project,
:set_filter => 1,
"tracker_id" => tracker.id %>:
<%= Issue.count(:conditions => ["project_id=? and tracker_id=? and issue_statuses.is_closed=?", @project.id, tracker.id, false], :include => :status) %> <%=_('open')%>
<%= issue_count = Issue.count(:conditions => ["project_id=? and tracker_id=? and issue_statuses.is_closed=?", @project.id, tracker.id, false], :include => :status) %>
<%= lwr(:label_open_issues, issue_count) %>
</li>
<% end %>
</ul>
<% if authorize_for 'projects', 'add_issue' %>
&#187; <%=_('Report an issue')%>:
&#187; <%=l(:label_issue_new)%>:
<ul>
<% @trackers.each do |tracker| %>
<li><%= link_to _(tracker.name), :controller => 'projects', :action => 'add_issue', :id => @project, :tracker_id => tracker %></li>
<li><%= link_to tracker.name, :controller => 'projects', :action => 'add_issue', :id => @project, :tracker_id => tracker %></li>
<% end %>
</ul>
<% end %>
<center><small>[ <%= link_to _('View all issues'), :controller => 'projects', :action => 'list_issues', :id => @project, :set_filter => 1 %> ]</small></center>
<center><small>[ <%= link_to l(:label_issue_view_all), :controller => 'projects', :action => 'list_issues', :id => @project, :set_filter => 1 %> ]</small></center>
</div>
</div>
<div class="splitcontentright">
<div class="box">
<h3><%= image_tag "users" %> <%=_('Members')%></h3>
<h3><%= image_tag "users" %> <%=l(:label_member_plural)%></h3>
<% for member in @members %>
<%= link_to_user member.user %> (<%= member.role.name %>)<br />
<% end %>
@ -45,7 +46,7 @@
<% if @subprojects %>
<div class="box">
<h3><%= image_tag "projects" %> <%=_('Subprojects')%></h3>
<h3><%= image_tag "projects" %> <%=l(:label_subproject_plural)%></h3>
<% for subproject in @subprojects %>
<%= link_to subproject.name, :action => 'show', :id => subproject %><br />
<% end %>
@ -53,16 +54,16 @@
<% end %>
<div class="box">
<h3><%=_('Latest news')%></h3>
<h3><%=l(:label_news_latest)%></h3>
<% for news in @news %>
<p>
<b><%= news.title %></b> <small>(<%= link_to_user news.author %> <%= format_time(news.created_on) %>)</small><br />
<%= news.summary %>
<small>[<%= link_to _('Read...'), :controller => 'news', :action => 'show', :id => news %>]</small>
<small>[<%= link_to l(:label_read), :controller => 'news', :action => 'show', :id => news %>]</small>
</p>
<hr />
<% end %>
<center><small>[ <%= link_to _('View all news'), :controller => 'projects', :action => 'list_news', :id => @project %> ]</small></center>
<center><small>[ <%= link_to l(:label_news_view_all), :controller => 'projects', :action => 'list_news', :id => @project %> ]</small></center>
</div>
</div>

@ -6,9 +6,9 @@
<% for status in @statuses %>
<td align="center" width="<%= col_width %>%" bgcolor="#<%= status.html_color %>"><small><%= status.name %></small></td>
<% end %>
<td align="center" width="<%= col_width %>%"><strong><%=_('Open')%></strong></td>
<td align="center" width="<%= col_width %>%"><strong><%=_('Closed')%></strong></td>
<td align="center" width="<%= col_width %>%"><strong><%=_('Total')%></strong></td>
<td align="center" width="<%= col_width %>%"><strong><%=l(:label_open_issues_plural)%></strong></td>
<td align="center" width="<%= col_width %>%"><strong><%=l(:label_closed_issues_plural)%></strong></td>
<td align="center" width="<%= col_width %>%"><strong><%=l(:label_total)%></strong></td>
</tr>
<% for row in rows %>

@ -1,13 +1,13 @@
<h2><%=_('Reports')%></h2>
<h2><%=l(:label_report_plural)%></h2>
<strong><%=_('Issues by tracker')%></strong>
<strong><%=l(:field_tracker)%></strong>
<%= render :partial => 'simple', :locals => { :data => @issues_by_tracker, :field_name => "tracker_id", :rows => @trackers } %>
<br />
<strong><%=_('Issues by priority')%></strong>
<strong><%=l(:field_priority)%></strong>
<%= render :partial => 'simple', :locals => { :data => @issues_by_priority, :field_name => "priority_id", :rows => @priorities } %>
<br />
<strong><%=_('Issues by category')%></strong>
<strong><%=l(:field_category)%></strong>
<%= render :partial => 'simple', :locals => { :data => @issues_by_category, :field_name => "category_id", :rows => @categories } %>

@ -2,22 +2,22 @@
<div class="box">
<!--[form:role]-->
<p><label for="role_name"><%=_('Name')%> <span class="required">*</span></label><br />
<p><label for="role_name"><%=l(:field_name)%> <span class="required">*</span></label><br />
<%= text_field 'role', 'name' %></p>
<strong><%=_('Permissions')%></strong>
<strong><%=l(:label_permissions)%>:</strong>
<% permissions = @permissions.group_by {|p| p.group_id } %>
<% permissions.keys.sort.each do |group_id| %>
<fieldset><legend><%= _(Permission::GROUPS[group_id]) %></legend>
<% permissions.keys.sort.each do |group_id| %>
<fieldset style="margin-top: 6px;"><legend><strong><%= l(Permission::GROUPS[group_id]) %></strong></legend>
<% permissions[group_id].each do |p| %>
<div style="width:200px;float:left;"><%= check_box_tag "permission_ids[]", p.id, (@role.permissions.include? p) %>
<%= _(p.description) %>
<div style="width:170px;float:left;"><%= check_box_tag "permission_ids[]", p.id, (@role.permissions.include? p) %>
<%= l(p.description.to_sym) %>
</div>
<% end %>
</fieldset>
<% end %>
<br />
<a href="javascript:checkAll('role_form', true)"><%=_('Check all')%></a> |
<a href="javascript:checkAll('role_form', false)"><%=_('Uncheck all')%></a><br />
<a href="javascript:checkAll('role_form', true)"><%=l(:button_check_all)%></a> |
<a href="javascript:checkAll('role_form', false)"><%=l(:button_uncheck_all)%></a><br />
<!--[eoform:role]-->
</div>

@ -1,10 +1,8 @@
<h2><%=_('Role')%></h2>
<h2><%=l(:label_role)%></h2>
<%= start_form_tag ({ :action => 'edit', :id => @role }, :id => 'role_form') %>
<%= render :partial => 'form' %>
<br />
<%= submit_tag _('Save') %>
<%= submit_tag l(:button_save) %>
<%= end_form_tag %>

@ -1,8 +1,8 @@
<h2><%=_('Roles')%></h2>
<h2><%=l(:label_role_plural)%></h2>
<table border="0" cellspacing="1" cellpadding="2" class="listTableContent">
<tr class="ListHead">
<th><%=_('Role')%></th>
<th><%=l(:label_role)%></th>
<th></th>
</tr>
@ -11,7 +11,7 @@
<td><%= link_to role.name, :action => 'edit', :id => role %></td>
<td align="center">
<%= start_form_tag :action => 'destroy', :id => role %>
<%= submit_tag _('Delete'), :class => "button-small" %>
<%= submit_tag l(:button_delete), :class => "button-small" %>
<%= end_form_tag %>
</tr>
<% end %>
@ -20,4 +20,4 @@
<%= pagination_links_full @role_pages %>
<br />
<%= link_to '&#187; ' + _('New role'), :action => 'new' %>
<%= link_to '&#187; ' + l(:label_role_new), :action => 'new' %>

@ -1,8 +1,7 @@
<h2><%=_('New role')%></h2>
<h2><%=l(:label_role_new)%></h2>
<%= start_form_tag ({ :action => 'new' }, :id => 'role_form') %>
<%= render :partial => 'form' %>
<br /><%= submit_tag _('Create') %>
<%= render :partial => 'form' %>
<%= submit_tag l(:button_create) %>
<%= end_form_tag %>

@ -1,22 +1,22 @@
<h2><%=_('Workflow setup')%></h2>
<h2><%=l(:label_workflow)%></h2>
<p><%=_('Select a workflow to edit')%>:</p>
<p><%=l(:text_workflow_edit)%>:</p>
<%= start_form_tag ({:action => 'workflow'}, :method => 'get') %>
<div style="float:left;margin-right:10px;">
<p><label for="role_id"><%=_('Role')%></label><br/>
<p><label for="role_id"><%=l(:label_role)%></label><br/>
<select id="role_id" name="role_id">
<%= options_from_collection_for_select @roles, "id", "name", (@role.id unless @role.nil?) %>
</select></p>
</div>
<div>
<p><label for="tracker_id"><%=_('Tracker')%></label><br/>
<p><label for="tracker_id"><%=l(:label_tracker)%></label><br/>
<select id="tracker_id" name="tracker_id">
<%= options_from_collection_for_select @trackers, "id", "name", (@tracker.id unless @tracker.nil?) %>
</select>
<%= submit_tag _('Edit') %>
<%= submit_tag l(:button_edit) %>
</p>
</div>
<%= end_form_tag %>
@ -28,8 +28,8 @@
<%= form_tag ({:action => 'workflow', :role_id => @role, :tracker_id => @tracker }, :id => 'workflow_form' ) %>
<table>
<tr>
<td align="center"><strong><%=_('Issue status')%></strong></td>
<td align="center" colspan="<%= @statuses.length %>"><strong><%=_('New statuses allowed')%></strong></td>
<td align="center"><strong><%=l(:label_current_status)%></strong></td>
<td align="center" colspan="<%= @statuses.length %>"><strong><%=l(:label_new_statuses_allowed)%></strong></td>
</tr>
<tr>
<td></td>
@ -59,11 +59,11 @@
</table>
<br />
<p>
<a href="javascript:checkAll('workflow_form', true)"><%=_('Check all')%></a> |
<a href="javascript:checkAll('workflow_form', false)"><%=_('Uncheck all')%></a>
<a href="javascript:checkAll('workflow_form', true)"><%=l(:button_check_all)%></a> |
<a href="javascript:checkAll('workflow_form', false)"><%=l(:button_uncheck_all)%></a>
</p>
<br />
<%= submit_tag _('Save') %>
<%= submit_tag l(:button_save) %>
<%= end_form_tag %>
<% end %>

@ -1,10 +1,10 @@
<%= error_messages_for 'tracker' %>
<!--[form:tracker]-->
<p><label for="tracker_name"><%=_('Name')%></label> <span class="required">*</span><br/>
<p><label for="tracker_name"><%=l(:field_name)%></label> <span class="required">*</span><br/>
<%= text_field 'tracker', 'name' %></p>
<p><%= check_box 'tracker', 'is_in_chlog' %>
<label for="tracker_is_in_chlog"><%=_('View issues in change log')%></label></p>
<label for="tracker_is_in_chlog"><%=l(:field_is_in_chlog)%></label></p>
<!--[eoform:tracker]-->

@ -1,6 +1,6 @@
<h2><%=_('Tracker')%></h2>
<h2><%=l(:label_tracker)%></h2>
<%= start_form_tag :action => 'edit', :id => @tracker %>
<%= render :partial => 'form' %>
<%= submit_tag _('Save') %>
<%= submit_tag l(:button_save) %>
<%= end_form_tag %>

@ -1,8 +1,8 @@
<h2><%=_('Trackers')%></h2>
<h2><%=l(:label_tracker_plural)%></h2>
<table border="0" cellspacing="1" cellpadding="2" class="listTableContent">
<tr class="ListHead">
<th><%=_('Tracker')%></th>
<th><%=l(:label_tracker)%></th>
<th></th>
</tr>
@ -11,7 +11,7 @@
<td><%= link_to tracker.name, :action => 'edit', :id => tracker %></td>
<td align="center">
<%= start_form_tag :action => 'destroy', :id => tracker %>
<%= submit_tag _('Delete'), :class => "button-small" %>
<%= submit_tag l(:button_delete), :class => "button-small" %>
<%= end_form_tag %>
</td>
</tr>
@ -21,4 +21,4 @@
<%= pagination_links_full @tracker_pages %>
<br />
<%= link_to '&#187; ' + _('New tracker'), :action => 'new' %>
<%= link_to '&#187; ' + l(:label_tracker_new), :action => 'new' %>

@ -1,7 +1,7 @@
<h2><%=_('New tracker')%></h2>
<h2><%=l(:label_tracker_new)%></h2>
<%= start_form_tag :action => 'new' %>
<%= render :partial => 'form' %>
<%= submit_tag _('Create') %>
<%= submit_tag l(:button_create) %>
<%= end_form_tag %>

@ -2,26 +2,26 @@
<div class="box">
<!--[form:user]-->
<p><label for="user_login"><%=_('Login')%></label> <span class="required">*</span><br/>
<p><label for="user_login"><%=l(:field_login)%></label> <span class="required">*</span><br/>
<%= text_field 'user', 'login', :size => 25 %></p>
<p><label for="password"><%=_('Password')%></label> <span class="required">*</span><br/>
<p><label for="password"><%=l(:field_password)%></label> <span class="required">*</span><br/>
<%= password_field_tag 'password', nil, :size => 25 %></p>
<p><label for="password_confirmation"><%=_('Confirmation')%></label> <span class="required">*</span><br/>
<p><label for="password_confirmation"><%=l(:field_password_confirmation)%></label> <span class="required">*</span><br/>
<%= password_field_tag 'password_confirmation', nil, :size => 25 %></p>
<p><label for="user_firstname"><%=_('Firstname')%></label> <span class="required">*</span><br/>
<p><label for="user_firstname"><%=l(:field_firstname)%></label> <span class="required">*</span><br/>
<%= text_field 'user', 'firstname' %></p>
<p><label for="user_lastname"><%=_('Lastname')%></label> <span class="required">*</span><br/>
<p><label for="user_lastname"><%=l(:field_lastname)%></label> <span class="required">*</span><br/>
<%= text_field 'user', 'lastname' %></p>
<p><label for="user_mail"><%=_('Mail')%></label> <span class="required">*</span><br/>
<p><label for="user_mail"><%=l(:field_mail)%></label> <span class="required">*</span><br/>
<%= text_field 'user', 'mail' %></p>
<p><label for="user_language"><%=_('Language')%></label><br/>
<%= select("user", "language", Localization.langs.invert) %></p>
<p><label for="user_language"><%=l(:field_language)%></label><br/>
<%= select("user", "language", lang_options_for_select) %></p>
<% for custom_value in @custom_values %>
<p><%= custom_field_tag_with_label custom_value %></p>
@ -29,9 +29,9 @@
<div style="clear: both;"></div>
<p><%= check_box 'user', 'admin' %> <label for="user_admin"><%=_('Administrator')%></label></p>
<p><%= check_box 'user', 'admin' %> <label for="user_admin"><%=l(:field_admin)%></label></p>
<p><%= check_box 'user', 'mail_notification' %> <label for="user_mail_notification"><%=_('Mail notifications')%></label></p>
<p><%= check_box 'user', 'mail_notification' %> <label for="user_mail_notification"><%=l(:field_mail_notification)%></label></p>
<!--[eoform:user]-->
</div>

@ -1,6 +1,6 @@
<h2><%=_('New user')%></h2>
<h2><%=l(:label_user_new)%></h2>
<%= start_form_tag :action => 'add' %>
<%= render :partial => 'form' %>
<%= submit_tag _('Create') %>
<%= submit_tag l(:button_create) %>
<%= end_form_tag %>

@ -1,7 +1,6 @@
<h2><%=_('User')%></h2>
<h2><%=l(:label_user)%></h2>
<%= start_form_tag :action => 'edit', :id => @user %>
<%= render :partial => 'form' %>
<%= submit_tag _('Save') %>
<%= submit_tag l(:button_save) %>
<%= end_form_tag %>

@ -1,15 +1,15 @@
<h2><%=_('Users')%></h2>
<h2><%=l(:label_user_plural)%></h2>
<table border="0" cellspacing="1" cellpadding="2" class="listTableContent">
<tr class="ListHead">
<%= sort_header_tag('login', :caption => _('Login')) %>
<%= sort_header_tag('firstname', :caption => _('Firstname')) %>
<%= sort_header_tag('lastname', :caption => _('Lastname')) %>
<th><%=_('Mail')%></th>
<%= sort_header_tag('admin', :caption => _('Admin')) %>
<%= sort_header_tag('status', :caption => _('Status')) %>
<%= sort_header_tag('created_on', :caption => _('Created on')) %>
<%= sort_header_tag('last_login_on', :caption => _('Last login')) %>
<%= sort_header_tag('login', :caption => l(:field_login)) %>
<%= sort_header_tag('firstname', :caption => l(:field_firstname)) %>
<%= sort_header_tag('lastname', :caption => l(:field_lastname)) %>
<th><%=l(:field_mail)%></th>
<%= sort_header_tag('admin', :caption => l(:field_admin)) %>
<%= sort_header_tag('status', :caption => l(:field_status)) %>
<%= sort_header_tag('created_on', :caption => l(:field_created_on)) %>
<%= sort_header_tag('last_login_on', :caption => l(:field_last_login_on)) %>
<th></th>
</tr>
<% for user in @users %>
@ -26,10 +26,10 @@
<%= start_form_tag :action => 'edit', :id => user %>
<% if user.locked? %>
<%= hidden_field_tag 'user[status]', User::STATUS_ACTIVE %>
<%= submit_tag _('Unlock'), :class => "button-small" %>
<%= submit_tag l(:button_unlock), :class => "button-small" %>
<% else %>
<%= hidden_field_tag 'user[status]', User::STATUS_LOCKED %>
<%= submit_tag _('Lock'), :class => "button-small" %>
<%= submit_tag l(:button_lock), :class => "button-small" %>
<% end %>
<%= end_form_tag %>
</td>
@ -42,5 +42,5 @@
</p>
<p>
<%= link_to '&#187; ' + _('New user'), :action => 'add' %>
<%= link_to '&#187; ' + l(:label_user_new), :action => 'add' %>
</p>

@ -1,13 +1,13 @@
<%= error_messages_for 'version' %>
<!--[form:version]-->
<p><label for="version_name"><%=_('Version')%></label> <span class="required">*</span><br/>
<p><label for="version_name"><%=l(:field_name)%></label> <span class="required">*</span><br/>
<%= text_field 'version', 'name', :size => 20 %></p>
<p><label for="version_description"><%=_('Description')%></label><br/>
<p><label for="version_description"><%=l(:field_description)%></label><br/>
<%= text_field 'version', 'description', :size => 60 %></p>
<p><label for="version_effective_date"><%=_('Date')%></label><br/>
<p><label for="version_effective_date"><%=l(:field_effective_date)%></label><br/>
<%= date_select 'version', 'effective_date' %></p>
<!--[eoform:version]-->

@ -1,8 +1,8 @@
<h2><%=_('Version')%></h2>
<h2><%=l(:label_version)%></h2>
<%= start_form_tag :action => 'edit', :id => @version %>
<%= render :partial => 'form' %>
<%= submit_tag _('Save') %>
<%= submit_tag l(:button_save) %>
<%= end_form_tag %>

@ -1,14 +1,14 @@
<div class="splitcontentleft">
<h2><%= $RDM_WELCOME_TITLE || _('Welcome') %> !</h2>
<h2><%= $RDM_WELCOME_TITLE || l(:label_home) %></h2>
<p><%= $RDM_WELCOME_TEXT %></p>
<div class="box">
<h3><%=_('Latest news')%></h3>
<h3><%=l(:label_news_latest)%></h3>
<% for news in @news %>
<p>
<b><%= news.title %></b> (<%= link_to_user news.author %> <%= format_time(news.created_on) %> - <%= news.project.name %>)<br />
<%= news.summary %><br />
[<%= link_to 'Read...', :controller => 'news', :action => 'show', :id => news %>]
[<%= link_to l(:label_read), :controller => 'news', :action => 'show', :id => news %>]
</p>
<hr />
<% end %>
@ -17,15 +17,14 @@
<div class="splitcontentright">
<div class="box">
<h3><%=_('Latest projects')%></h3>
<h3><%=l(:label_project_latest)%></h3>
<ul>
<% for project in @projects %>
<li>
<%= link_to project.name, :controller => 'projects', :action => 'show', :id => project %> (added <%= format_time(project.created_on) %>)<br />
<%= link_to project.name, :controller => 'projects', :action => 'show', :id => project %> (<%= format_time(project.created_on) %>)<br />
<%= project.description %>
</li>
<% end %>
</ul>
</div>
</div>
</div>

@ -78,7 +78,7 @@ class Setup < ActiveRecord::Migration
t.column "project_id", :integer, :default => 0, :null => false
t.column "category_id", :integer, :default => 0, :null => false
t.column "title", :string, :limit => 60, :default => "", :null => false
t.column "description", :text, :default => "", :null => false
t.column "description", :text, :default => ""
t.column "created_on", :timestamp
end
@ -113,7 +113,8 @@ class Setup < ActiveRecord::Migration
t.column "tracker_id", :integer, :default => 0, :null => false
t.column "project_id", :integer, :default => 0, :null => false
t.column "subject", :string, :default => "", :null => false
t.column "description", :text, :default => "", :null => false
t.column "description", :text, :default => "", :null => false
t.column "due_date", :date
t.column "category_id", :integer
t.column "status_id", :integer, :default => 0, :null => false
t.column "assigned_to_id", :integer
@ -219,55 +220,55 @@ class Setup < ActiveRecord::Migration
end
# project
Permission.create :controller => "projects", :action => "show", :description => "Overview", :sort => 100, :is_public => true
Permission.create :controller => "projects", :action => "changelog", :description => "View change log", :sort => 105, :is_public => true
Permission.create :controller => "reports", :action => "issue_report", :description => "View reports", :sort => 110, :is_public => true
Permission.create :controller => "projects", :action => "settings", :description => "Settings", :sort => 150
Permission.create :controller => "projects", :action => "edit", :description => "Edit", :sort => 151
Permission.create :controller => "projects", :action => "show", :description => "label_overview", :sort => 100, :is_public => true
Permission.create :controller => "projects", :action => "changelog", :description => "label_change_log", :sort => 105, :is_public => true
Permission.create :controller => "reports", :action => "issue_report", :description => "label_report_plural", :sort => 110, :is_public => true
Permission.create :controller => "projects", :action => "settings", :description => "label_settings", :sort => 150
Permission.create :controller => "projects", :action => "edit", :description => "button_edit", :sort => 151
# members
Permission.create :controller => "projects", :action => "list_members", :description => "View list", :sort => 200, :is_public => true
Permission.create :controller => "projects", :action => "add_member", :description => "New member", :sort => 220
Permission.create :controller => "members", :action => "edit", :description => "Edit", :sort => 221
Permission.create :controller => "members", :action => "destroy", :description => "Delete", :sort => 222
Permission.create :controller => "projects", :action => "list_members", :description => "button_list", :sort => 200, :is_public => true
Permission.create :controller => "projects", :action => "add_member", :description => "button_add", :sort => 220
Permission.create :controller => "members", :action => "edit", :description => "button_edit", :sort => 221
Permission.create :controller => "members", :action => "destroy", :description => "button_delete", :sort => 222
# versions
Permission.create :controller => "projects", :action => "add_version", :description => "New version", :sort => 320
Permission.create :controller => "versions", :action => "edit", :description => "Edit", :sort => 321
Permission.create :controller => "versions", :action => "destroy", :description => "Delete", :sort => 322
Permission.create :controller => "projects", :action => "add_version", :description => "button_add", :sort => 320
Permission.create :controller => "versions", :action => "edit", :description => "button_edit", :sort => 321
Permission.create :controller => "versions", :action => "destroy", :description => "button_delete", :sort => 322
# issue categories
Permission.create :controller => "projects", :action => "add_issue_category", :description => "New issue category", :sort => 420
Permission.create :controller => "issue_categories", :action => "edit", :description => "Edit", :sort => 421
Permission.create :controller => "issue_categories", :action => "destroy", :description => "Delete", :sort => 422
Permission.create :controller => "projects", :action => "add_issue_category", :description => "button_add", :sort => 420
Permission.create :controller => "issue_categories", :action => "edit", :description => "button_edit", :sort => 421
Permission.create :controller => "issue_categories", :action => "destroy", :description => "button_delete", :sort => 422
# issues
Permission.create :controller => "projects", :action => "list_issues", :description => "View list", :sort => 1000, :is_public => true
Permission.create :controller => "projects", :action => "export_issues_csv", :description => "Export list to CSV", :sort => 1001, :is_public => true
Permission.create :controller => "issues", :action => "show", :description => "View", :sort => 1005, :is_public => true
Permission.create :controller => "issues", :action => "download", :description => "Download file", :sort => 1010, :is_public => true
Permission.create :controller => "projects", :action => "add_issue", :description => "Report an issue", :sort => 1050, :mail_option => 1, :mail_enabled => 1
Permission.create :controller => "issues", :action => "edit", :description => "Edit", :sort => 1055
Permission.create :controller => "issues", :action => "change_status", :description => "Change status", :sort => 1060, :mail_option => 1, :mail_enabled => 1
Permission.create :controller => "issues", :action => "destroy", :description => "Delete", :sort => 1065
Permission.create :controller => "issues", :action => "add_attachment", :description => "Add file", :sort => 1070
Permission.create :controller => "issues", :action => "destroy_attachment", :description => "Delete file", :sort => 1075
Permission.create :controller => "projects", :action => "list_issues", :description => "button_list", :sort => 1000, :is_public => true
Permission.create :controller => "projects", :action => "export_issues_csv", :description => "label_export_csv", :sort => 1001, :is_public => true
Permission.create :controller => "issues", :action => "show", :description => "button_view", :sort => 1005, :is_public => true
Permission.create :controller => "issues", :action => "download", :description => "button_download", :sort => 1010, :is_public => true
Permission.create :controller => "projects", :action => "add_issue", :description => "button_add", :sort => 1050, :mail_option => 1, :mail_enabled => 1
Permission.create :controller => "issues", :action => "edit", :description => "button_edit", :sort => 1055
Permission.create :controller => "issues", :action => "change_status", :description => "label_change_status", :sort => 1060, :mail_option => 1, :mail_enabled => 1
Permission.create :controller => "issues", :action => "destroy", :description => "button_delete", :sort => 1065
Permission.create :controller => "issues", :action => "add_attachment", :description => "label_attachment_new", :sort => 1070
Permission.create :controller => "issues", :action => "destroy_attachment", :description => "label_attachment_delete", :sort => 1075
# news
Permission.create :controller => "projects", :action => "list_news", :description => "View list", :sort => 1100, :is_public => true
Permission.create :controller => "news", :action => "show", :description => "View", :sort => 1101, :is_public => true
Permission.create :controller => "projects", :action => "add_news", :description => "Add", :sort => 1120
Permission.create :controller => "news", :action => "edit", :description => "Edit", :sort => 1121
Permission.create :controller => "news", :action => "destroy", :description => "Delete", :sort => 1122
Permission.create :controller => "projects", :action => "list_news", :description => "button_list", :sort => 1100, :is_public => true
Permission.create :controller => "news", :action => "show", :description => "button_view", :sort => 1101, :is_public => true
Permission.create :controller => "projects", :action => "add_news", :description => "button_add", :sort => 1120
Permission.create :controller => "news", :action => "edit", :description => "button_edit", :sort => 1121
Permission.create :controller => "news", :action => "destroy", :description => "button_delete", :sort => 1122
# documents
Permission.create :controller => "projects", :action => "list_documents", :description => "View list", :sort => 1200, :is_public => true
Permission.create :controller => "documents", :action => "show", :description => "View", :sort => 1201, :is_public => true
Permission.create :controller => "documents", :action => "download", :description => "Download", :sort => 1202, :is_public => true
Permission.create :controller => "projects", :action => "add_document", :description => "Add", :sort => 1220
Permission.create :controller => "documents", :action => "edit", :description => "Edit", :sort => 1221
Permission.create :controller => "documents", :action => "destroy", :description => "Delete", :sort => 1222
Permission.create :controller => "documents", :action => "add_attachment", :description => "Add file", :sort => 1223
Permission.create :controller => "documents", :action => "destroy_attachment", :description => "Delete file", :sort => 1224
Permission.create :controller => "projects", :action => "list_documents", :description => "button_list", :sort => 1200, :is_public => true
Permission.create :controller => "documents", :action => "show", :description => "button_view", :sort => 1201, :is_public => true
Permission.create :controller => "documents", :action => "download", :description => "button_download", :sort => 1202, :is_public => true
Permission.create :controller => "projects", :action => "add_document", :description => "button_add", :sort => 1220
Permission.create :controller => "documents", :action => "edit", :description => "button_edit", :sort => 1221
Permission.create :controller => "documents", :action => "destroy", :description => "button_delete", :sort => 1222
Permission.create :controller => "documents", :action => "add_attachment", :description => "label_attachment_new", :sort => 1223
Permission.create :controller => "documents", :action => "destroy_attachment", :description => "label_attachment_delete", :sort => 1224
# files
Permission.create :controller => "projects", :action => "list_files", :description => "View list", :sort => 1300, :is_public => true
Permission.create :controller => "versions", :action => "download", :description => "Download", :sort => 1301, :is_public => true
Permission.create :controller => "projects", :action => "add_file", :description => "Add", :sort => 1320
Permission.create :controller => "versions", :action => "destroy_file", :description => "Delete", :sort => 1322
Permission.create :controller => "projects", :action => "list_files", :description => "button_list", :sort => 1300, :is_public => true
Permission.create :controller => "versions", :action => "download", :description => "button_download", :sort => 1301, :is_public => true
Permission.create :controller => "projects", :action => "add_file", :description => "button_add", :sort => 1320
Permission.create :controller => "versions", :action => "destroy_file", :description => "button_delete", :sort => 1322
# create default administrator account
user = User.create :firstname => "redMine", :lastname => "Admin", :mail => "admin@somenet.foo", :mail_notification => true, :language => "en"

@ -1,61 +0,0 @@
# redMine - project management software
# Copyright (C) 2006 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class DefaultConfiguration < ActiveRecord::Migration
def self.up
# roles
r = Role.create(:name => "Manager")
r.permissions = Permission.find(:all)
r = Role.create :name => "Developer"
r.permissions = Permission.find(:all)
r = Role.create :name => "Reporter"
r.permissions = Permission.find(:all)
# trackers
Tracker.create(:name => "Bug", :is_in_chlog => true)
Tracker.create(:name => "Feature request", :is_in_chlog => true)
Tracker.create(:name => "Support request", :is_in_chlog => false)
# issue statuses
IssueStatus.create(:name => "New", :is_closed => false, :is_default => true, :html_color => 'F98787')
IssueStatus.create(:name => "Assigned", :is_closed => false, :is_default => false, :html_color => 'C0C0FF')
IssueStatus.create(:name => "Resolved", :is_closed => false, :is_default => false, :html_color => '88E0B3')
IssueStatus.create(:name => "Feedback", :is_closed => false, :is_default => false, :html_color => 'F3A4F4')
IssueStatus.create(:name => "Closed", :is_closed => true, :is_default => false, :html_color => 'DBDBDB')
IssueStatus.create(:name => "Rejected", :is_closed => true, :is_default => false, :html_color => 'F5C28B')
# workflow
Tracker.find(:all).each { |t|
Role.find(:all).each { |r|
IssueStatus.find(:all).each { |os|
IssueStatus.find(:all).each { |ns|
Workflow.create(:tracker_id => t.id, :role_id => r.id, :old_status_id => os.id, :new_status_id => ns.id) unless os == ns
}
}
}
}
# enumeartions
Enumeration.create(:opt => "DCAT", :name => 'Uncategorized')
Enumeration.create(:opt => "DCAT", :name => 'User documentation')
Enumeration.create(:opt => "DCAT", :name => 'Technical documentation')
Enumeration.create(:opt => "IPRI", :name => 'Low')
Enumeration.create(:opt => "IPRI", :name => 'Normal')
Enumeration.create(:opt => "IPRI", :name => 'High')
Enumeration.create(:opt => "IPRI", :name => 'Urgent')
Enumeration.create(:opt => "IPRI", :name => 'Immediate')
end
def self.down
end
end

Binary file not shown.

@ -11,19 +11,20 @@ http://redmine.org/
* token based "lost password" functionality
* user self-registration functionality (optional)
* custom fields now available for issues, users and projects
* new custom field format "text" (textarea)
* project & administration drop down menus in navigation bar
* new custom field format "text" (displayed as a textarea field)
* project & administration drop down menus in navigation bar for quicker access
* "due date" field added on issues
* error messages internationalization
* Localization plugin replaced with GLoc 1.1.0
* new filter in issues list: "Fixed version"
* colored background for active filters on issues list
* active filters are displayed with colored background on issues list
* custom configuration is now defined in config/config_custom.rb
* user object no more stored in session (only user_id)
* news summary field is no longer required
* Fixed: boolean custom field not working
* Fixed: error messages for custom fields are not displayed
* Fixed: custom fields values are not validated on issue update
* Fixed: user unable to choose an empty value for 'List' custom fields
* Fixed: unable to choose an empty value for 'List' custom fields
* Fixed: no issue categories sorting
* Fixed: incorrect versions sorting

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

@ -0,0 +1,400 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
"http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd">
<book>
<title>Documentation redMine</title>
<chapter>
<title>Administration</title>
<section>
<title>Utilisateurs</title>
<para>Ces écrans vous permettent de gérer les utilisateurs de
l'application.</para>
<section>
<title>Liste des utilisateurs</title>
<para></para>
<screenshot>
<screeninfo>Liste des utilisateurs</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="images/users_list.png" />
</imageobject>
</mediaobject>
</screenshot>
<para>Les boutons Lock/Unlock vous permettent de
vérouiller/dévérouiller les comptes utilisateurs.</para>
<para>Un utilisateur dont le compte est vérouillé ne peut plus
s'identifier pour accéder à l'application.</para>
</section>
<section>
<title>Création ou modification d'un utilisateur</title>
<para>En mode modification, laissez le champ Password vide pour
laisser le mot de passe de l'utilisateur inchangé.</para>
<para>Un utilisateur déclaré comme administrateur dispose de toutes
les permissions sur l'application et sur tous les projets.</para>
<itemizedlist>
<listitem>
<para><guilabel>Administrateur</guilabel>: déclare l'utilisateur
comme administrateur de l'application.</para>
</listitem>
<listitem>
<para><guilabel>Notifications par mail</guilabel>: permet
d'activer ou non l'envoi automatique de notifications par mail
pour cet utilisateur</para>
</listitem>
<listitem>
<para><guilabel>Vérouillé</guilabel>: désactive le compte de
l'utilisateur</para>
</listitem>
</itemizedlist>
</section>
</section>
<section>
<title>Rôles et permissions</title>
<para>Les rôles permettent de définir les permissions des différents
membres d'un projet. Chaque membre d'un projet dispose d'un rôle unique
au sein d'un projet. Un utilisateur peut avoir différents rôles au sein
de différents projets.</para>
<para>Sur l'écran d'édition du rôle, cochez les actions que vous
souhaitez autoriser pour le rôle.</para>
</section>
<section>
<title>Trackers</title>
<para>Les trackers permettent de typer les demandes et de définir des
workflows spécifiques pour chacun de ces types.</para>
</section>
<section>
<title>Champs personnalisés</title>
<para>Les champs personnalisés vous permettent d'ajouter des
informations supplémentaires sur les demandes. Un champ personnalisé
peut être de l'un des types suivants:</para>
<itemizedlist>
<listitem>
<para><guilabel>Integer</guilabel>: entier positif ou négatif</para>
</listitem>
<listitem>
<para><guilabel>String</guilabel>: chaîne de caractère</para>
</listitem>
<listitem>
<para><guilabel>Date</guilabel>: date</para>
</listitem>
<listitem>
<para><guilabel>Boolean</guilabel>: booléen (case à cocher)</para>
</listitem>
<listitem>
<para><guilabel>List</guilabel>: valeur à sélectionnée parmi une
liste prédéfinie (liste déroulante)</para>
</listitem>
</itemizedlist>
<para>Des éléments de validation peuvent être définis:</para>
<itemizedlist>
<listitem>
<para><guilabel>Obligatoire</guilabel>: champ dont la saisie est
obligatoire sur les demandes</para>
</listitem>
<listitem>
<para><guilabel>Pour tous les projects</guilabel>: champ
automatiquement associé à l'ensemble des projets</para>
</listitem>
<listitem>
<para><guilabel>Min - max length</guilabel>: longueurs minimales et
maximales pour les champs en saisie libre (0 signifie qu'il n'y a
pas de restriction)</para>
</listitem>
<listitem>
<para><guilabel>Expression régulière</guilabel>: expression
régulière permettant de valider la valeur saisie</para>
</listitem>
<listitem>
<para><guilabel>Valeurs possibles</guilabel>: valeurs possibles pour
les champs de type "Liste". Les valeurs sont séparées par le
caractère |</para>
</listitem>
</itemizedlist>
<para>Si l'option <guilabel>Pour tous les projets</guilabel> n'est pas
activée, chaque projet pourra choisir d'utiliser ou non le champ pour
ses demandes.</para>
</section>
<section>
<title>Statut des demandes</title>
<para>Ces écrans vous permettent de définir les différents statuts
possibles des demandes.</para>
<itemizedlist>
<listitem>
<para><guilabel>Demande fermée</guilabel>: indique que le statut
correspond à une demande considérée comme fermée</para>
</listitem>
<listitem>
<para><guilabel>Statut par défaut</guilabel>: statut appliqué par
défaut aux nouvelles demandes (seul un statut peut être déclaré
comme statut par défaut)</para>
</listitem>
<listitem>
<para><guilabel>Couleur</guilabel>: code couleur HTML (6 caractères)
représentant le statut à l'affichage</para>
</listitem>
</itemizedlist>
<para></para>
</section>
<section>
<title>Workflow</title>
<para>Le workflow permet de définir les changements que les différents
membres d'un projet sont autorisés à effectuer sur les demandes, en
fonction de leur type.</para>
<para>Sélectionnez le rôle et le tracker pour lesquels vous souhaitez
modifier le workflow, puis cliquez sur Edit. L'écran vous permet alors
de modifier, pour le rôle et le tracker choisi, les changements
autorisés. Les lignes représentent les statuts initiaux des demandes.
Les colonnes représentent les statuts autorisés à être appliqués.</para>
<para>Remarque: pour qu'un rôle puisse changer le statut des demandes,
la permission doit lui être explicitement donnée indépendemment de la
configuration du workflow.</para>
<para></para>
<screenshot>
<screeninfo>Exemple de configuration d'un workflow</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="images/workflow.png" />
</imageobject>
</mediaobject>
</screenshot>
<para>Dans l'exemple ci-dessus, les demandes de type Bug au statut
Nouveau pourront être passées au statut Assignée ou Résolue par le rôle
Développeur. Celles au statut Assignée pourront être passées au statut
Résolue. Le statut de toutes les autres demandes de type Bug ne pourra
pas être modifié par le Développeur.</para>
</section>
<section>
<title>Listes de valeurs</title>
<para>Les listes de valeurs utilisées par l'application (exemple: les
priorités des demandes) peuvent être personnalisées. Cet écran vous
permet de définir les valeurs possibles pour chacune des listes
suivantes:</para>
<itemizedlist>
<listitem>
<para>Priorités des demandes</para>
</listitem>
<listitem>
<para>Catégories de documents</para>
</listitem>
</itemizedlist>
<para></para>
</section>
<section>
<title>Notifications par mail</title>
<para>Cet écran vous permet de sélectionner les actions qui donneront
lieu à une notification par mail aux membres du projet.</para>
<para>Remarque: l'envoi de mails doit être activé dans la configuration
de l'application si souhaitez effectuer des notifications.</para>
</section>
<section>
<title>Informations</title>
<para>Affiche des informations relatives à l'application et à son
environnement.</para>
</section>
</chapter>
<chapter>
<title>Projets</title>
<para></para>
<section>
<title>Aperçu du projet</title>
<para>L'aperçu vous présente les informations générales relatives au
projet, les principaux membres, les dernières annonces, ainsi qu'une
synthèse du nombre de demandes ouvertes par tracker.</para>
<para></para>
</section>
<section>
<title>Gestion des demandes</title>
<para></para>
<section>
<title>Liste des demandes</title>
<para>Par défaut, l'ensemble des demandes ouvertes du projet sont
affichées. Différents filtres vous permettent de sélectionner les
demandes à afficher. Si le projet comporte des sous-projets, vous avez
la possibilité d'afficher également les demandes relatives aux
sous-projets (non affichées par défaut).</para>
<para>Une fois appliqué, un filtre reste valable durant toute votre
session. Vous pouvez le redéfinir, ou le supprimer en cliquant sur
Annuler.</para>
<para></para>
<screenshot>
<screeninfo>Liste des demandes</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="images/issues_list.png" />
</imageobject>
</mediaobject>
</screenshot>
<para></para>
</section>
</section>
<section>
<title>Rapports</title>
<para>Cet écran présente la synthèse du nombre de demandes par statut et
selon différents critères (tracker, priorité, catégorie). Des liens
directs permettent d'accéder à la liste détaillée des demandes pour
chaque critère.</para>
</section>
<section>
<title>Historique</title>
<para>Cette page présente l'ensemble des demandes résolues dans chacune
des versions du projet. Certains types de demande peuvent être exclus de
cet affichage.</para>
</section>
<section>
<title>Annonces</title>
<para>Les nouvelles vous permettent d'informer les utilisateurs sur
l'activité du projet.</para>
</section>
<section>
<title>Documents</title>
<para>Les documents sont groupés par catégories (voir Listes de
valeurs). Un document peut contenir plusieurs fichiers (exemple:
révisions ou versions successives).</para>
</section>
<section>
<title>Fichiers</title>
<para>Ce module vous permet de publier les différents fichiers (sources,
binaires, ...) pour chaque version de l'application.</para>
</section>
<section>
<title>Configuration du projet</title>
<para></para>
<section>
<title>Propriétés du projet</title>
<para></para>
<itemizedlist>
<listitem>
<para><guilabel>Public</guilabel>: si le projet est public, il
sera visible (consultation des demandes, des documents, ...) pour
l'ensemble des utilisateurs, y compris ceux qui ne sont pas
membres du projet. Si le projet n'est pas public, seuls les
membres du projet y ont accès, en fonction de leur rôle.</para>
</listitem>
<listitem>
<para><guilabel>Champs personnalisés</guilabel>: sélectionner les
champs personnalisés que vous souhaitez utiliser au sein du
projet. Seul l'administrateur peut ajouter de nouveaux champs
personnalisés.</para>
</listitem>
</itemizedlist>
<para></para>
</section>
<section>
<title>Membres</title>
<para>Cet écran vous permet de définir les membres du projet ainsi que
leurs rôles respectifs. Un utilisateur ne peut avoir qu'un rôle au
sein d'un projet donné. Le rôle d'un membre détermine les permissions
dont il bénéficie sur le projet.</para>
</section>
<section>
<title>Versions</title>
<para>Les versions vous permettent de suivre les changements survenus
tout au long du projet. A la fermeture d'une demande, vous pouvez par
exemple indiquer quelle version la prend en compte. Vous pouvez par
ailleurs publier les différentes versions de l'application (voir
Fichiers).</para>
</section>
<section>
<title>Catégories des demandes</title>
<para>Les catégories de demande vous permettent de typer les demandes.
Les catégories peuvent par exemple correspondre aux différents modules
du projet.</para>
</section>
</section>
</chapter>
</book>

@ -42,6 +42,7 @@ general_text_No: 'No'
general_text_Yes: 'Yes'
general_text_no: 'no'
general_text_yes: 'yes'
general_lang_en: 'English'
notice_account_updated: Account was successfully updated.
notice_account_invalid_creditentials: Invalid user or password

@ -1,4 +1,4 @@
_gloc_rule_default: '|n| n==1 ? "" : "_plural" '
_gloc_rule_default: '|n| n<=1 ? "" : "_plural" '
actionview_datehelper_select_day_prefix:
actionview_datehelper_select_month_names: Janvier,Février,Mars,Avril,Mai,Juin,Juillet,Août,Septembre,Octobre,Novembre,Décembre
@ -42,6 +42,7 @@ general_text_No: 'Non'
general_text_Yes: 'Oui'
general_text_no: 'non'
general_text_yes: 'oui'
general_lang_fr: 'Français'
notice_account_updated: Le compte a été mis à jour avec succès.
notice_account_invalid_creditentials: Identifiant ou mot de passe invalide.
@ -49,10 +50,11 @@ notice_account_password_updated: Mot de passe mis à jour avec succès.
notice_account_wrong_password: Mot de passe incorrect
notice_account_register_done: Un message contenant les instructions pour activer votre compte vous a été envoyé.
notice_account_unknown_email: Aucun compte ne correspond à cette adresse.
notice_can_t_change_password: Ce compte utilise une authentification externe. Impossible de changer le mot de passe.
notice_account_lost_email_sent: Un message contenant les instructions pour choisir un nouveau mot de passe vous a été envoyé.
notice_account_activated: Votre compte a été activé. Vous pouvez à présent vous connecter.
notice_successful_update: Mise à jour effectuée avec succès.
notice_successful_create: Création effectuée avec succès.
notice_successful_update: Mise à jour effectuée avec succès.
notice_successful_delete: Suppression effectuée avec succès.
notice_successful_connection: Connection réussie.
@ -90,6 +92,7 @@ field_is_default: Statut par défaut
field_html_color: Couleur
field_tracker: Tracker
field_subject: Sujet
field_due_date: Date d'échéance
field_assigned_to: Assigné à
field_priority: Priorité
field_fixed_version: Version corrigée
@ -127,24 +130,36 @@ label_user_new: Nouvel utilisateur
label_project: Projet
label_project_new: Nouveau projet
label_project_plural: Projets
label_project_latest: Derniers projets
label_issue: Demande
label_issue_new: Nouvelle demande
label_issue_plural: Demandes
label_issue_view_all: Voir toutes les demandes
label_document: Document
label_document_new: Nouveau document
label_document_plural: Documents
label_role: Rôle
label_role_plural: Rôles
label_role_add: Nouveau rôle
label_role_new: Nouveau rôle
label_role_and_permissions: Rôles et permissions
label_member: Membre
label_member_new: Nouveau membre
label_member_plural: Membres
label_tracker: Tracker
label_tracker_plural: Trackers
label_tracker_add: Nouveau tracker
label_tracker_new: Nouveau tracker
label_workflow: Workflow
label_issue_status: Statut de demandes
label_issue_status_plural: Statuts de demandes
label_issue_status_add: Nouveau statut
label_issue_status_new: Nouveau statut
label_issue_category: Catégorie de demandes
label_issue_category_plural: Catégories de demandes
label_issue_category_new: Nouvelle catégorie
label_custom_field: Champ personnalisé
label_custom_field_plural: Champs personnalisés
label_custom_field_new: Nouveau champ personnalisé
label_enumerations: Listes de valeurs
label_enumeration_new: Nouvelle valeur
label_information: Information
label_information_plural: Informations
label_please_login: Identification
@ -153,6 +168,7 @@ label_password_lost: Mot de passe perdu
label_home: Accueil
label_my_page: Ma page
label_my_account: Mon compte
label_my_projects: Mes projets
label_administration: Administration
label_login: Connexion
label_logout: Déconnexion
@ -182,7 +198,45 @@ label_string: Chaîne
label_text: Texte
label_attribute: Attribut
label_attribute_plural: Attributs
label_download: %d Téléchargement
label_download_plural: %d Téléchargements
label_no_data: Aucune donnée à afficher
label_change_status: Changer le statut
label_history: Historique
label_attachment: Fichier
label_attachment_new: Nouveau fichier
label_attachment_delete: Supprimer le fichier
label_attachment_plural: Fichiers
label_report: Rapport
label_report_plural: Rapports
label_news: Annonce
label_news_new: Nouvelle annonce
label_news_plural: Annonces
label_news_latest: Dernières annonces
label_news_view_all: Voir toutes les annonces
label_change_log: Historique
label_settings: Configuration
label_overview: Aperçu
label_version: Version
label_version_new: Nouvelle version
label_version_plural: Versions
label_confirmation: Confirmation
label_export_csv: Exporter en CSV
label_read: Lire...
label_public_projects: Projets publics
label_open_issues: Ouverte
label_open_issues_plural: Ouvertes
label_closed_issues: Fermée
label_closed_issues_plural: Fermées
label_total: Total
label_permissions: Permissions
label_current_status: Statut actuel
label_new_statuses_allowed: Nouveaux statuts autorisés
label_all: Tous
label_none: Aucun
label_next: Suivant
label_previous: Précédent
label_used_by: Utilisé par
button_login: Connexion
button_submit: Soumettre
@ -192,8 +246,43 @@ button_uncheck_all: Tout décocher
button_delete: Supprimer
button_create: Créer
button_test: Tester
button_edit: Modifier
button_add: Ajouter
button_change: Changer
button_apply: Appliquer
button_clear: Effacer
button_lock: Verrouiller
button_unlock: Déverrouiller
button_download: Télécharger
button_list: Lister
button_view: Voir
text_select_mail_notifications: Sélectionner les actions pour lesquelles la notification par mail doit être activée.
text_regexp_info: eg. ^[A-Z0-9]+$
text_min_max_length_info: 0 pour aucune restriction
text_possible_values_info: valeurs séparées par |
text_possible_values_info: valeurs séparées par |
text_project_destroy_confirmation: Etes-vous sûr de vouloir supprimer ce projet et tout ce qui lui est rattaché ?
text_workflow_edit: Sélectionner un tracker et un rôle pour éditer le workflow
default_role_manager: Manager
default_role_developper: Développeur
default_role_reporter: Rapporteur
default_tracker_bug: Anomalie
default_tracker_feature: Evolution
default_tracker_support: Assistance
default_issue_status_new: Nouveau
default_issue_status_assigned: Assigné
default_issue_status_resolved: Résolu
default_issue_status_feedback: Commentaire
default_issue_status_closed: Fermé
default_issue_status_rejected: Rejeté
default_doc_category_user: Documentation utilisateur
default_doc_category_tech: Documentation technique
default_priority_low: Bas
default_priority_normal: Normal
default_priority_high: Haut
default_priority_urgent: Urgent
default_priority_immediate: Immédiat
enumeration_issue_priorities: Priorités des demandes
enumeration_doc_categories: Catégories des documents

@ -0,0 +1,43 @@
desc 'Load default configuration data (using default language)'
task :load_default_data => :environment do
include GLoc
set_language_if_valid($RDM_DEFAULT_LANG)
# roles
r = Role.create :name => l(:default_role_manager)
r.permissions = Permission.find(:all, :conditions => ["is_public=?", false])
r = Role.create :name => l(:default_role_developper)
r.permissions = Permission.find(:all, :conditions => ["is_public=?", false])
r = Role.create :name => l(:default_role_reporter)
r.permissions = Permission.find(:all, :conditions => ["is_public=?", false])
# trackers
Tracker.create(:name => l(:default_tracker_bug), :is_in_chlog => true)
Tracker.create(:name => l(:default_tracker_feature), :is_in_chlog => true)
Tracker.create(:name => l(:default_tracker_support), :is_in_chlog => false)
# issue statuses
IssueStatus.create(:name => l(:default_issue_status_new), :is_closed => false, :is_default => true, :html_color => 'F98787')
IssueStatus.create(:name => l(:default_issue_status_assigned), :is_closed => false, :is_default => false, :html_color => 'C0C0FF')
IssueStatus.create(:name => l(:default_issue_status_resolved), :is_closed => false, :is_default => false, :html_color => '88E0B3')
IssueStatus.create(:name => l(:default_issue_status_feedback), :is_closed => false, :is_default => false, :html_color => 'F3A4F4')
IssueStatus.create(:name => l(:default_issue_status_closed), :is_closed => true, :is_default => false, :html_color => 'DBDBDB')
IssueStatus.create(:name => l(:default_issue_status_rejected), :is_closed => true, :is_default => false, :html_color => 'F5C28B')
# workflow
Tracker.find(:all).each { |t|
Role.find(:all).each { |r|
IssueStatus.find(:all).each { |os|
IssueStatus.find(:all).each { |ns|
Workflow.create(:tracker_id => t.id, :role_id => r.id, :old_status_id => os.id, :new_status_id => ns.id) unless os == ns
}
}
}
}
# enumerations
Enumeration.create(:opt => "DCAT", :name => l(:default_doc_category_user))
Enumeration.create(:opt => "DCAT", :name => l(:default_doc_category_tech))
Enumeration.create(:opt => "IPRI", :name => l(:default_priority_low))
Enumeration.create(:opt => "IPRI", :name => l(:default_priority_normal))
Enumeration.create(:opt => "IPRI", :name => l(:default_priority_high))
Enumeration.create(:opt => "IPRI", :name => l(:default_priority_urgent))
Enumeration.create(:opt => "IPRI", :name => l(:default_priority_immediate))
end

@ -2,7 +2,7 @@
permissions_041:
action: add_file
id: 41
description: Add
description: button_add
controller: projects
mail_enabled: false
mail_option: false
@ -11,7 +11,7 @@ permissions_041:
permissions_030:
action: destroy
id: 30
description: Delete
description: button_delete
controller: news
mail_enabled: false
mail_option: false
@ -20,7 +20,7 @@ permissions_030:
permissions_019:
action: download
id: 19
description: Download file
description: button_download
controller: issues
mail_enabled: false
mail_option: false
@ -29,7 +29,7 @@ permissions_019:
permissions_008:
action: edit
id: 8
description: Edit
description: button_edit
controller: members
mail_enabled: false
mail_option: false
@ -38,7 +38,7 @@ permissions_008:
permissions_042:
action: destroy_file
id: 42
description: Delete
description: button_delete
controller: versions
mail_enabled: false
mail_option: false
@ -47,7 +47,7 @@ permissions_042:
permissions_031:
action: list_documents
id: 31
description: View list
description: button_list
controller: projects
mail_enabled: false
mail_option: false
@ -56,7 +56,7 @@ permissions_031:
permissions_020:
action: add_issue
id: 20
description: Report an issue
description: button_add
controller: projects
mail_enabled: true
mail_option: true
@ -65,7 +65,7 @@ permissions_020:
permissions_009:
action: destroy
id: 9
description: Delete
description: button_delete
controller: members
mail_enabled: false
mail_option: false
@ -74,7 +74,7 @@ permissions_009:
permissions_032:
action: show
id: 32
description: View
description: button_view
controller: documents
mail_enabled: false
mail_option: false
@ -83,7 +83,7 @@ permissions_032:
permissions_021:
action: edit
id: 21
description: Edit
description: button_edit
controller: issues
mail_enabled: false
mail_option: false
@ -92,7 +92,7 @@ permissions_021:
permissions_010:
action: add_version
id: 10
description: New version
description: button_add
controller: projects
mail_enabled: false
mail_option: false
@ -101,7 +101,7 @@ permissions_010:
permissions_033:
action: download
id: 33
description: Download
description: button_download
controller: documents
mail_enabled: false
mail_option: false
@ -110,7 +110,7 @@ permissions_033:
permissions_022:
action: change_status
id: 22
description: Change status
description: label_change_status
controller: issues
mail_enabled: true
mail_option: true
@ -119,7 +119,7 @@ permissions_022:
permissions_011:
action: edit
id: 11
description: Edit
description: button_edit
controller: versions
mail_enabled: false
mail_option: false
@ -128,7 +128,7 @@ permissions_011:
permissions_034:
action: add_document
id: 34
description: Add
description: button_add
controller: projects
mail_enabled: false
mail_option: false
@ -137,7 +137,7 @@ permissions_034:
permissions_023:
action: destroy
id: 23
description: Delete
description: button_delete
controller: issues
mail_enabled: false
mail_option: false
@ -146,7 +146,7 @@ permissions_023:
permissions_012:
action: destroy
id: 12
description: Delete
description: button_delete
controller: versions
mail_enabled: false
mail_option: false
@ -155,7 +155,7 @@ permissions_012:
permissions_001:
action: show
id: 1
description: Overview
description: label_overview
controller: projects
mail_enabled: false
mail_option: false
@ -164,7 +164,7 @@ permissions_001:
permissions_035:
action: edit
id: 35
description: Edit
description: button_edit
controller: documents
mail_enabled: false
mail_option: false
@ -173,7 +173,7 @@ permissions_035:
permissions_024:
action: add_attachment
id: 24
description: Add file
description: label_attachment_new
controller: issues
mail_enabled: false
mail_option: false
@ -182,7 +182,7 @@ permissions_024:
permissions_013:
action: add_issue_category
id: 13
description: New issue category
description: button_add
controller: projects
mail_enabled: false
mail_option: false
@ -191,7 +191,7 @@ permissions_013:
permissions_002:
action: changelog
id: 2
description: View change log
description: label_change_log
controller: projects
mail_enabled: false
mail_option: false
@ -200,7 +200,7 @@ permissions_002:
permissions_036:
action: destroy
id: 36
description: Delete
description: button_delete
controller: documents
mail_enabled: false
mail_option: false
@ -209,7 +209,7 @@ permissions_036:
permissions_025:
action: destroy_attachment
id: 25
description: Delete file
description: label_attachment_delete
controller: issues
mail_enabled: false
mail_option: false
@ -218,7 +218,7 @@ permissions_025:
permissions_014:
action: edit
id: 14
description: Edit
description: button_edit
controller: issue_categories
mail_enabled: false
mail_option: false
@ -227,7 +227,7 @@ permissions_014:
permissions_003:
action: issue_report
id: 3
description: View reports
description: label_report_plural
controller: reports
mail_enabled: false
mail_option: false
@ -236,7 +236,7 @@ permissions_003:
permissions_037:
action: add_attachment
id: 37
description: Add file
description: label_attachment_new
controller: documents
mail_enabled: false
mail_option: false
@ -245,7 +245,7 @@ permissions_037:
permissions_026:
action: list_news
id: 26
description: View list
description: button_list
controller: projects
mail_enabled: false
mail_option: false
@ -254,7 +254,7 @@ permissions_026:
permissions_015:
action: destroy
id: 15
description: Delete
description: button_delete
controller: issue_categories
mail_enabled: false
mail_option: false
@ -263,7 +263,7 @@ permissions_015:
permissions_004:
action: settings
id: 4
description: Settings
description: label_settings
controller: projects
mail_enabled: false
mail_option: false
@ -272,7 +272,7 @@ permissions_004:
permissions_038:
action: destroy_attachment
id: 38
description: Delete file
description: label_attachment_delete
controller: documents
mail_enabled: false
mail_option: false
@ -281,7 +281,7 @@ permissions_038:
permissions_027:
action: show
id: 27
description: View
description: button_view
controller: news
mail_enabled: false
mail_option: false
@ -290,7 +290,7 @@ permissions_027:
permissions_016:
action: list_issues
id: 16
description: View list
description: button_list
controller: projects
mail_enabled: false
mail_option: false
@ -299,7 +299,7 @@ permissions_016:
permissions_005:
action: edit
id: 5
description: Edit
description: button_edit
controller: projects
mail_enabled: false
mail_option: false
@ -308,7 +308,7 @@ permissions_005:
permissions_039:
action: list_files
id: 39
description: View list
description: button_list
controller: projects
mail_enabled: false
mail_option: false
@ -317,7 +317,7 @@ permissions_039:
permissions_028:
action: add_news
id: 28
description: Add
description: button_add
controller: projects
mail_enabled: false
mail_option: false
@ -326,7 +326,7 @@ permissions_028:
permissions_017:
action: export_issues_csv
id: 17
description: Export list to CSV
description: label_export_csv
controller: projects
mail_enabled: false
mail_option: false
@ -335,7 +335,7 @@ permissions_017:
permissions_006:
action: list_members
id: 6
description: View list
description: button_list
controller: projects
mail_enabled: false
mail_option: false
@ -344,7 +344,7 @@ permissions_006:
permissions_040:
action: download
id: 40
description: Download
description: button_download
controller: versions
mail_enabled: false
mail_option: false
@ -353,7 +353,7 @@ permissions_040:
permissions_029:
action: edit
id: 29
description: Edit
description: button_edit
controller: news
mail_enabled: false
mail_option: false
@ -362,7 +362,7 @@ permissions_029:
permissions_018:
action: show
id: 18
description: View
description: button_view
controller: issues
mail_enabled: false
mail_option: false
@ -371,7 +371,7 @@ permissions_018:
permissions_007:
action: add_member
id: 7
description: New member
description: button_add
controller: projects
mail_enabled: false
mail_option: false

@ -41,10 +41,6 @@ class AccountTest < ActionController::IntegrationTest
assert_response :success
assert_tag :tag => "div", :attributes => { :class => "errorExplanation" }
post "account/change_password", :password => 'admiN', :new_password => "hello", :new_password_confirmation => "hello"
assert_response :success
assert_equal 'Wrong password', flash[:notice]
post "account/change_password", :password => 'jsmith', :new_password => "hello", :new_password_confirmation => "hello"
assert_response :success
log_user('jsmith', 'hello')

Loading…
Cancel
Save