Commit f37089f5 authored by Jean-Philippe Lang's avatar Jean-Philippe Lang

v0.2.0

git-svn-id: http://redmine.rubyforge.org/svn/trunk@7 e93f8b46-1217-0410-a6f0-8f06a7374b81
parent 366ca57c
......@@ -17,6 +17,7 @@
class AccountController < ApplicationController
layout 'base'
# prevents login action to be filtered by check_if_login_required application scope filter
skip_before_filter :check_if_login_required, :only => :login
before_filter :require_login, :except => [:show, :login]
......@@ -29,10 +30,8 @@ class AccountController < ApplicationController
def login
if request.get?
session[:user] = nil
@user = User.new
else
@user = User.new(params[:user])
logged_in_user = @user.try_to_login
logged_in_user = User.try_to_login(params[:login], params[:password])
if logged_in_user
session[:user] = logged_in_user
redirect_back_or_default :controller => 'account', :action => 'my_page'
......@@ -67,14 +66,9 @@ class AccountController < ApplicationController
# Change current user's password
def change_password
@user = User.find(session[:user].id)
if @user.check_password?(@params[:old_password])
if @params[:new_password] == @params[:new_password_confirmation]
if @user.change_password(@params[:old_password], @params[:new_password])
flash[:notice] = 'Password was successfully updated.'
end
else
flash[:notice] = 'Password confirmation doesn\'t match!'
end
if @user.check_password?(@params[:password])
@user.password, @user.password_confirmation = params[:new_password], params[:new_password_confirmation]
flash[:notice] = 'Password was successfully updated.' if @user.save
else
flash[:notice] = 'Wrong password'
end
......
......@@ -26,16 +26,22 @@ class AdminController < ApplicationController
end
def projects
sort_init 'projects.name', 'asc'
sort_init 'name', 'asc'
sort_update
@project_pages, @projects = paginate :projects, :per_page => 15, :order => sort_clause
@project_count = Project.count
@project_pages = Paginator.new self, @project_count,
15,
@params['page']
@projects = Project.find :all, :order => sort_clause,
:limit => @project_pages.items_per_page,
:offset => @project_pages.current.offset
end
def mail_options
@actions = Permission.find(:all, :conditions => ["mail_option=?", true]) || []
if request.post?
@actions.each { |a|
a.mail_enabled = params[:action_ids].include? a.id.to_s
a.mail_enabled = (params[:action_ids] || []).include? a.id.to_s
a.save
}
flash[:notice] = "Mail options were successfully updated."
......@@ -45,5 +51,4 @@ class AdminController < ApplicationController
def info
@adapter_name = ActiveRecord::Base.connection.adapter_name
end
end
......@@ -24,7 +24,18 @@ class ApplicationController < ActionController::Base
end
def set_localization
Localization.lang = session[:user].nil? ? RDM_DEFAULT_LANG : (session[:user].language || RDM_DEFAULT_LANG)
Localization.lang = begin
if session[:user]
session[:user].language
elsif request.env['HTTP_ACCEPT_LANGUAGE']
accept_lang = HTTPUtils.parse_qvalues(request.env['HTTP_ACCEPT_LANGUAGE']).first.split('-').first
if Localization.langs.collect{ |l| l[1] }.include? accept_lang
accept_lang
end
end
rescue
nil
end || RDM_DEFAULT_LANG
end
def require_login
......@@ -49,26 +60,26 @@ class ApplicationController < ActionController::Base
# authorizes the user for the requested action.
def authorize
# check if action is allowed on public projects
if @project.public? and Permission.allowed_to_public "%s/%s" % [ @params[:controller], @params[:action] ]
if @project.is_public? and Permission.allowed_to_public "%s/%s" % [ @params[:controller], @params[:action] ]
return true
end
# if user is not logged in, he is redirect to login form
# if user not logged in, redirect to login form
unless session[:user]
store_location
redirect_to(:controller => "account", :action => "login")
return false
end
# check if user is authorized
# if logged in, check if authorized
if session[:user].admin? or Permission.allowed_to_role( "%s/%s" % [ @params[:controller], @params[:action] ], session[:user].role_for_project(@project.id) )
return true
end
flash[:notice] = "Acces denied"
redirect_to(:controller => "")
return false
false
end
# store current uri in the session.
# we can return to this location by calling redirect_back_or_default
# store current uri in session.
# return to this location by calling redirect_back_or_default
def store_location
session[:return_to] = @request.request_uri
end
......@@ -82,5 +93,4 @@ class ApplicationController < ActionController::Base
session[:return_to] = nil
end
end
end
\ No newline at end of file
......@@ -20,19 +20,23 @@ class HelpController < ApplicationController
skip_before_filter :check_if_login_required
before_filter :load_help_config
# displays help page for the requested controller/action
def index
if @params[:ctrl] and @help_config[@params[:ctrl]]
if @params[:page] and @help_config[@params[:ctrl]][@params[:page]]
template = @help_config[@params[:ctrl]][@params[:page]]
# select help page to display
if @params[:ctrl] and @help_config['pages'][@params[:ctrl]]
if @params[:page] and @help_config['pages'][@params[:ctrl]][@params[:page]]
template = @help_config['pages'][@params[:ctrl]][@params[:page]]
else
template = @help_config[@params[:ctrl]]['index']
template = @help_config['pages'][@params[:ctrl]]['index']
end
end
# choose language according to available help translations
lang = (@help_config['langs'].include? Localization.lang) ? Localization.lang : @help_config['langs'].first
if template
redirect_to "/manual/#{template}"
redirect_to "/manual/#{lang}/#{template}"
else
redirect_to "/manual/"
redirect_to "/manual/#{lang}/"
end
end
......
......@@ -34,14 +34,14 @@ class ProjectsController < ApplicationController
# Lists public projects
def list
sort_init 'projects.name', 'asc'
sort_init 'name', 'asc'
sort_update
@project_count = Project.count(["public=?", true])
@project_count = Project.count(["is_public=?", true])
@project_pages = Paginator.new self, @project_count,
15,
@params['page']
@projects = Project.find :all, :order => sort_clause,
:conditions => ["public=?", true],
:conditions => ["is_public=?", true],
:limit => @project_pages.items_per_page,
:offset => @project_pages.current.offset
end
......@@ -49,6 +49,7 @@ class ProjectsController < ApplicationController
# Add a new project
def add
@custom_fields = CustomField::find_all
@root_projects = Project::find(:all, :conditions => "parent_id is null")
@project = Project.new(params[:project])
if request.post?
@project.custom_fields = CustomField.find(@params[:custom_field_ids]) if @params[:custom_field_ids]
......@@ -62,9 +63,12 @@ class ProjectsController < ApplicationController
# Show @project
def show
@members = @project.members.find(:all, :include => [:user, :role])
@subprojects = @project.children if @project.children_count > 0
@news = @project.news.find(:all, :limit => 5, :include => [ :author, :project ], :order => "news.created_on DESC")
end
def settings
@root_projects = Project::find(:all, :conditions => ["parent_id is null and id <> ?", @project.id])
@custom_fields = CustomField::find_all
@issue_category ||= IssueCategory.new
@member ||= @project.members.new
......@@ -181,7 +185,7 @@ class ProjectsController < ApplicationController
end
end
# Show issues list of @project
# Show filtered/sorted issues list of @project
def list_issues
sort_init 'issues.id', 'desc'
sort_update
......@@ -189,10 +193,10 @@ class ProjectsController < ApplicationController
search_filter_init_list_issues
search_filter_update if params[:set_filter] or request.post?
@issue_count = Issue.count(:include => :status, :conditions => search_filter_clause)
@issue_count = Issue.count(:include => [:status, :project], :conditions => search_filter_clause)
@issue_pages = Paginator.new self, @issue_count, 15, @params['page']
@issues = Issue.find :all, :order => sort_clause,
:include => [ :author, :status, :tracker ],
:include => [ :author, :status, :tracker, :project ],
:conditions => search_filter_clause,
:limit => @issue_pages.items_per_page,
:offset => @issue_pages.current.offset
......@@ -206,7 +210,7 @@ class ProjectsController < ApplicationController
search_filter_init_list_issues
@issues = Issue.find :all, :order => sort_clause,
:include => [ :author, :status, :tracker ],
:include => [ :author, :status, :tracker, :project ],
:conditions => search_filter_clause
export = StringIO.new
......
......@@ -62,9 +62,6 @@ class RolesController < ApplicationController
end
def workflow
@roles = Role.find_all
@trackers = Tracker.find_all
@statuses = IssueStatus.find_all
@role = Role.find_by_id(params[:role_id])
@tracker = Tracker.find_by_id(params[:tracker_id])
......@@ -80,5 +77,8 @@ class RolesController < ApplicationController
flash[:notice] = 'Workflow was successfully updated.'
end
end
@roles = Role.find_all
@trackers = Tracker.find_all
@statuses = IssueStatus.find(:all, :include => :workflows)
end
end
......@@ -28,13 +28,13 @@ class UsersController < ApplicationController
end
def list
sort_init 'users.login', 'asc'
sort_init 'login', 'asc'
sort_update
@user_count = User.count
@user_pages = Paginator.new self, @user_count,
15,
@params['page']
@users = User.find :all, :order => sort_clause,
@users = User.find :all,:order => sort_clause,
:limit => @user_pages.items_per_page,
:offset => @user_pages.current.offset
end
......@@ -44,7 +44,9 @@ class UsersController < ApplicationController
@user = User.new
else
@user = User.new(params[:user])
@user.admin = params[:user][:admin]
@user.admin = params[:user][:admin] || false
@user.login = params[:user][:login]
@user.password, @user.password_confirmation = params[:password], params[:password_confirmation]
if @user.save
flash[:notice] = 'User was successfully created.'
redirect_to :action => 'list'
......@@ -56,6 +58,8 @@ class UsersController < ApplicationController
@user = User.find(params[:id])
if request.post?
@user.admin = params[:user][:admin] if params[:user][:admin]
@user.login = params[:user][:login] if params[:user][:login]
@user.password, @user.password_confirmation = params[:password], params[:password_confirmation] unless params[:password].nil? or params[:password].empty?
if @user.update_attributes(params[:user])
flash[:notice] = 'User was successfully updated.'
redirect_to :action => 'list'
......
......@@ -38,6 +38,9 @@ class VersionsController < ApplicationController
@attachment = @version.attachments.find(params[:attachment_id])
@attachment.increment_download
send_file @attachment.diskfile, :filename => @attachment.filename
rescue
flash[:notice]="Requested file doesn't exist or has been deleted."
redirect_to :controller => 'projects', :action => 'list_files', :id => @project
end
def destroy_file
......
......@@ -27,7 +27,7 @@ module ApplicationHelper
def authorize_for(controller, action)
# check if action is allowed on public projects
if @project.public? and Permission.allowed_to_public "%s/%s" % [ controller, action ]
if @project.is_public? and Permission.allowed_to_public "%s/%s" % [ controller, action ]
return true
end
# check if user is authorized
......
......@@ -18,68 +18,73 @@
module SearchFilterHelper
def search_filter_criteria(name, options = {})
session[:search_filter] ||= {}
session[:search_filter][name] ||= {}
unless session[:search_filter][name][:options] and session[:search_filter][name][:conditions]
session[:search_filter][name][:options] = []
session[:search_filter][name][:conditions] = {}
@search_filter ||= {}
@search_filter[name] ||= {}
@search_filter[name][:options] = []
@search_filter[name][:conditions] = {}
yield.each { |c|
session[:search_filter][name][:options] << [c[0], c[1].to_s]
session[:search_filter][name][:conditions].store(c[1].to_s, c[2])
@search_filter[name][:options] << [c[0], c[1].to_s]
@search_filter[name][:conditions].store(c[1].to_s, c[2])
}
end
end
def search_filter_update
session[:search_filter].each_key {|field| session[:search_filter][field][:value] = params[field] }
@search_filter.each_key {|field| session[:search_filter][field] = params[field] }
end
def search_filter_clause
clause = ["issues.project_id=?", @project.id]
session[:search_filter].each { |k, v|
v[:value] ||= v[:options][0][1]
if (!v[:conditions][v[:value]][0].empty?)
clause[0] = clause[0] + " AND " + v[:conditions][v[:value]][0]
clause << v[:conditions][v[:value]][1] if !v[:conditions][v[:value]][1].nil?
clause = ["1=1"]
@search_filter.each { |k, v|
filter_value = session[:search_filter][k] || v[:options][0][1]
if v[:conditions][filter_value]
clause[0] = clause[0] + " AND " + v[:conditions][filter_value].first
clause += v[:conditions][filter_value][1..-1]
end
}
clause
end
def search_filter_tag(criteria)
def search_filter_tag(criteria, options = {})
options[:name] = criteria
content_tag("select",
options_for_select(session[:search_filter][criteria][:options], session[:search_filter][criteria][:value]),
:name => criteria
options_for_select(@search_filter[criteria][:options], session[:search_filter][criteria]),
options
)
end
def search_filter_init_list_issues
search_filter_criteria('status_id') {
[ ["[Open]", "O", ["issue_statuses.is_closed=?", false]],
["[All]", "A", ["", false]]
[ [_('[Open]'), "O", ["issue_statuses.is_closed=?", false]],
[_('[All]'), "A", nil]
] + IssueStatus.find(:all).collect {|s| [s.name, s.id, ["issues.status_id=?", s.id]] }
}
search_filter_criteria('tracker_id') {
[ ["[All]", "A", ["", false]]
[ [_('[All]'), "A", nil]
] + Tracker.find(:all).collect {|s| [s.name, s.id, ["issues.tracker_id=?", s.id]] }
}
search_filter_criteria('priority_id') {
[ ["[All]", "A", ["", false]]
[ [_('[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", ["", false]],
["[None]", "N", ["issues.category_id is null"]]
[ [_('[All]'), "A", nil],
[_('[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('assigned_to_id') {
[ ["[All]", "A", ["", false]],
["[Nobody]", "N", ["issues.assigned_to_id is null"]]
] + User.find(:all).collect {|s| [s.display_name, s.id, ["issues.assigned_to_id=?", s.id]] }
[ [_('[All]'), "A", nil],
[_('[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]]
]
}
end
end
\ No newline at end of file
......@@ -30,7 +30,7 @@ class Attachment < ActiveRecord::Base
self.filename = sanitize_filename(@temp_file.original_filename)
self.disk_filename = DateTime.now.strftime("%y%m%d%H%M%S") + "_" + self.filename
self.content_type = @temp_file.content_type
self.size = @temp_file.size
self.filesize = @temp_file.size
end
end
end
......
......@@ -19,6 +19,7 @@ class Enumeration < ActiveRecord::Base
before_destroy :check_integrity
validates_presence_of :opt, :name
validates_uniqueness_of :name, :scope => [:opt]
OPTIONS = [
["Issue priorities", "IPRI"],
......
......@@ -20,6 +20,7 @@ class IssueCategory < ActiveRecord::Base
belongs_to :project
validates_presence_of :name
validates_uniqueness_of :name, :scope => [:project_id]
private
def check_integrity
......
......@@ -21,6 +21,8 @@ class IssueStatus < ActiveRecord::Base
validates_presence_of :name
validates_uniqueness_of :name
validates_length_of :html_color, :is=>6
validates_format_of :html_color, :with => /^[a-f0-9]*$/i
# Returns the default status for new issues
def self.default
......@@ -30,9 +32,9 @@ class IssueStatus < ActiveRecord::Base
# Returns an array of all statuses the given role can switch to
def new_statuses_allowed_to(role, tracker)
statuses = []
for workflow in self.workflows.find(:all, :include => :new_status)
for workflow in self.workflows
statuses << workflow.new_status if workflow.role_id == role.id and workflow.tracker_id == tracker.id
end unless role.nil?
end unless role.nil? or tracker.nil?
statuses
end
......
......@@ -43,7 +43,7 @@ class Permission < ActiveRecord::Base
end
def self.allowed_to_public(action)
@@cached_perms_for_public ||= find(:all, :conditions => ["public=?", true]).collect {|p| "#{p.controller}/#{p.action}"}
@@cached_perms_for_public ||= find(:all, :conditions => ["is_public=?", true]).collect {|p| "#{p.controller}/#{p.action}"}
@@cached_perms_for_public.include? action
end
......
......@@ -16,29 +16,33 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class Project < ActiveRecord::Base
has_many :versions, :dependent => true, :order => "versions.date DESC"
has_many :versions, :dependent => true, :order => "versions.effective_date DESC"
has_many :members, :dependent => true
has_many :users, :through => :members
has_many :issues, :dependent => true, :order => "issues.created_on DESC", :include => :status
has_many :documents, :dependent => true
has_many :news, :dependent => true, :order => "news.created_on DESC", :include => :author
has_many :news, :dependent => true, :include => :author
has_many :issue_categories, :dependent => true
has_and_belongs_to_many :custom_fields
acts_as_tree :order => "name", :counter_cache => true
validates_presence_of :name, :descr
validates_uniqueness_of :name
# returns 5 last created projects
def self.latest
find(:all, :limit => 5, :order => "created_on DESC")
end
# Returns current version of the project
def current_version
versions.find(:first, :conditions => [ "date <= ?", Date.today ], :order => "date DESC, id DESC")
end
# Returns an array of all custom fields enabled for project issues
# (explictly associated custom fields and custom fields enabled for all projects)
def custom_fields_for_issues
(CustomField.for_all + custom_fields).uniq
end
protected
def validate
errors.add(parent_id, " must be a root project") if parent and parent.parent
errors.add_to_base("A project with subprojects can't be a subproject") if parent and projects_count > 0
end
end
......@@ -20,6 +20,9 @@ class Tracker < ActiveRecord::Base
has_many :issues
has_many :workflows, :dependent => true
validates_presence_of :name
validates_uniqueness_of :name
def name
_ self.attributes['name']
end
......
......@@ -20,56 +20,44 @@ require "digest/sha1"
class User < ActiveRecord::Base
has_many :memberships, :class_name => 'Member', :include => [ :project, :role ], :dependent => true
attr_accessor :password
attr_accessor :password, :password_confirmation
attr_accessor :last_before_login_on
# Prevents unauthorized assignments
attr_protected :admin
attr_protected :login, :admin, :password, :password_confirmation, :hashed_password
validates_presence_of :login, :firstname, :lastname, :mail
validates_uniqueness_of :login, :mail
# Login must contain lettres, numbers, underscores only
validates_format_of :login, :with => /^[a-z0-9_]+$/i
validates_format_of :mail, :with => /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i
# Password length between 4 and 12
validates_length_of :password, :in => 4..12, :allow_nil => true
validates_confirmation_of :password, :allow_nil => true
def before_create
self.hashed_password = User.hash_password(self.password)
end
def after_create
@password = nil
def before_save
# update hashed_password if password was set
self.hashed_password = User.hash_password(self.password) if self.password
end
# Returns the user that matches user's login and password
def try_to_login
@user = User.login(self.login, self.password)
unless @user.nil?
@user.last_before_login_on = @user.last_login_on
@user.update_attribute(:last_login_on, DateTime.now)
# Returns the user that matches provided login and password, or nil
def self.try_to_login(login, password)
user = find(:first, :conditions => ["login=? and hashed_password=? and locked=?", login, User.hash_password(password), false])
if user
user.last_before_login_on = user.last_login_on
user.update_attribute(:last_login_on, Time.now)
end
@user
user
end
# Return user's full name for display
def display_name
firstname + " " + lastname #+ (self.admin ? " (Admin)" : "" )
end
# Returns the user that matches the given login and password
def self.login(login, password)
hashed_password = hash_password(password || "")
find(:first,
:conditions => ["login = ? and hashed_password = ? and locked = ?", login, hashed_password, false])
firstname + " " + lastname
end
def check_password?(clear_password)
User.hash_password(clear_password) == self.hashed_password
end
def change_password(current_password, new_password)
self.hashed_password = User.hash_password(new_password)
save
end
def role_for_project(project_id)
@role_for_projects ||=
......@@ -84,6 +72,6 @@ class User < ActiveRecord::Base
private
# Return password digest
def self.hash_password(clear_password)
Digest::SHA1.hexdigest(clear_password)
Digest::SHA1.hexdigest(clear_password || "")
end
end
......@@ -21,7 +21,8 @@ class Version < ActiveRecord::Base
has_many :fixed_issues, :class_name => 'Issue', :foreign_key => 'fixed_version_id'
has_many :attachments, :as => :container, :dependent => true
validates_presence_of :name, :descr
validates_presence_of :name
validates_uniqueness_of :name, :scope => [:project_id]
private
def check_integrity
......
......@@ -16,7 +16,6 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class Workflow < ActiveRecord::Base
belongs_to :role
belongs_to :old_status, :class_name => 'IssueStatus', :foreign_key => 'old_status_id'
belongs_to :new_status, :class_name => 'IssueStatus', :foreign_key => 'new_status_id'
......
<div class="box">
<h2><%=_ 'Please login' %></h2>
<h2><%=_('Please login') %></h2>
<%= start_form_tag :action=> "login" %>
<p><label for="user_login"><%=_ 'Login' %>:</label><br/>
<input type="text" name="user[login]" id="user_login" size="30" /></p>
<p><label for="login"><%=_ 'Login' %>:</label><br/>
<%= text_field_tag 'login', nil, :size => 25 %></p>
<p><label for="user_password"><%=_ 'Password' %>:</label><br/>
<input type="password" name="user[password]" id="user_password" size="30"/></p>
<%= password_field_tag 'password', nil, :size => 25 %></p>
<p><input type="submit" name="login" value="<%=_ 'Log in' %> &#187;" class="primary" /></p>
<%= end_form_tag %>
......
......@@ -4,12 +4,13 @@
<%=_('Created on')%>: <%= format_time(@user.created_on) %>,
<%=_('Last update')%>: <%= format_time(@user.updated_on) %></p>
<%= error_messages_for 'user' %>
<div class="splitcontentleft">
<div class="box">
<h3><%=_('Information')%></h3>
&nbsp;
<%= start_form_tag :action => 'my_account' %>
<%= error_messages_for 'user' %>
<!--[form:user]-->
<p><label for="user_firstname"><%=_('Firstname')%> <span class="required">*</span></label><br/>
......@@ -39,14 +40,14 @@
&nbsp;
<%= start_form_tag :action => 'change_password' %>
<p><label for="old_password"><%=_('Password')%> <span class="required">*</span></label><br/>
<%= password_field_tag 'old_password' %></p>
<p><label for="password"><%=_('Password')%> <span class="required">*</span></label><br/>
<%= password_field_tag 'password', nil, :size => 25 %></p>
<p><label for="new_password"><%=_('New password')%> <span class="required">*</span></label><br/>
<%= password_field_tag 'new_password' %></p>
<%= password_field_tag 'new_password', nil, :size => 25 %></p>
<p><label for="new_password_confirmation"><%=_('Confirmation')%> <span class="required">*</span></label><br/>
<%= password_field_tag 'new_password_confirmation' %></p>
<%= password_field_tag 'new_password_confirmation', nil, :size => 25 %></p>
<center><%= submit_tag _('Save') %></center>
<%= end_form_tag %>
......
<h2><%=_('Information')%></h2>
<%=_('Version')%>: <%= RDM_APP_NAME %> <%= RDM_APP_VERSION %><br />
<%=_('Database')%>: <%= @adapter_name %>
\ No newline at end of file
<p><%=_('Version')%>: <strong><%= RDM_APP_NAME %> <%= RDM_APP_VERSION %></strong></p>
Environment:
<ul>
<% Rails::Info.properties.each do |name, value| %>
<li><%= name %>: <%= value %></li>
<% end %>
</ul>
\ No newline at end of file
......@@ -2,20 +2,20 @@
<table width="100%" cellspacing="1" cellpadding="2" class="listTableContent">
<tr class="ListHead">
<%= sort_header_tag('projects.name', :caption => _('Project')) %>
<%= sort_header_tag('name', :caption => _('Project')) %>
<th><%=_('Description')%></th>
<th><%=_('Public')%></th>
<%= sort_header_tag('projects.created_on', :caption => _('Created on')) %>
<th><%=_('Subprojects')%></th>
<%= sort_header_tag('created_on', :caption => _('Created on')) %>
<th></th>
</tr>
<% odd_or_even = 1
for project in @projects
odd_or_even = 1 - odd_or_even %>
<tr class="ListLine<%= odd_or_even %>">
<% for project in @projects %>
<tr class="<%= cycle("odd", "even") %>">
<td><%= link_to project.name, :controller => 'projects', :action => 'settings', :id => project %>
<td><%= project.descr %>
<td align="center"><%= image_tag 'true' if project.public? %>
<td align="center"><%= image_tag 'true' if project.is_public? %>
<td align="center"><%= project.projects_count %>
<td align="center"><%= format_date(project.created_on) %>
<td align="center">
<%= start_form_tag({:controller => 'projects', :action => 'destroy', :id => project}) %>
......@@ -26,10 +26,7 @@
<% end %>
</table>
<%= link_to ('&#171; ' + _('Previous')), { :page => @project_pages.current.previous } if @project_pages.current.previous %>
<%= pagination_links(@project_pages) %>
<%= link_to (_('Next') + ' &#187;'), { :page => @project_pages.current.next } if @project_pages.current.next %>
<p><%= pagination_links_full @project_pages %>
[ <%= @project_pages.current.first_item %> - <%= @project_pages.current.last_item %> / <%= @project_count %> ]</p>
<br />
<%= link_to ('&#187; ' + _('New project')), :controller => 'projects', :action => 'add' %>
\ No newline at end of file
<p><%= link_to ('&#187; ' + _('New project')), :controller => 'projects', :action => 'add' %></p>
\ No newline at end of file
......@@ -10,7 +10,7 @@
<th></th>
</tr>
<% for custom_field in @custom_fields %>
<tr style="background-color:#CEE1ED">
<tr class="<%= cycle("odd", "even") %>">
<td><%= link_to custom_field.name, :action => 'edit', :id => custom_field %></td>
<td align="center"><%= CustomField::TYPES[custom_field.typ][0] %></td>
<td align="center"><%= image_tag 'true' if custom_field.is_required? %></td>
......
......@@ -24,7 +24,8 @@
<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.size) %><br /><%= attachment.downloads %> <%=_('download')%>(s)</td>
<td><%= human_size(attachment.filesize) %><br /><%= attachment.downloads %> <%=_('download')%>(s)</td>
<% if authorize_for('documents', 'destroy_attachment') %>
<td align="center">
<%= start_form_tag :action => 'destroy_attachment', :id => @document, :attachment_id => attachment %>
......@@ -32,6 +33,7 @@
<%= end_form_tag %>
</tr>
<% end %>
<% end %>
</table>
<br />
......
<%= error_messages_for 'issue_status' %>
<!--[form:issue_status]-->
<p><label for="issue_status_name"><%=_('Name')%></label><br/>
<p><label for="issue_status_name"><%=_('Name')%></label> <span class="required">*</span><br/>
<%= text_field 'issue_status', 'name' %></p>
<p><%= check_box 'issue_status', 'is_closed' %>
......@@ -11,7 +11,7 @@
<label for="issue_status_is_default"><%=_('Default status')%></label></p>
<p><label for="issue_status_html_color"><%=_('Color')%></label>
#<%= text_field 'issue_status', 'html_color', :size => 6 %></p>
#<%= text_field 'issue_status', 'html_color', :maxlength => 6 %> <span class="required">*</span></p>
<!--[eoform:issue_status]-->
......@@ -10,10 +10,10 @@
</tr>
<% for status in @issue_statuses %>
<tr style="background-color:#CEE1ED">
<tr class="<%= cycle("odd", "even") %>">
<td><%= link_to status.name, :action => 'edit', :id => status %></td>
<td align="center"><%= image_tag 'true' if status.is_default %></td>
<td align="center"><%= image_tag 'true' if status.is_closed %></td>
<td align="center"><%= image_tag 'true' if status.is_default? %></td>
<td align="center"><%= image_tag 'true' if status.is_closed? %></td>
<td bgcolor="#<%= status.html_color %>">&nbsp</td>
<td align="center">
<%= start_form_tag :action => 'destroy', :id => status %>
......
......@@ -10,7 +10,7 @@
<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> <%= @issue.descr %></p>
<p><b><%=_('Description')%>:</b> <%= simple_format auto_link @issue.descr %></p>
<p><b><%=_('Created on')%>:</b> <%= format_date(@issue.created_on) %></p>
<% if authorize_for('issues', 'edit') %>
......@@ -65,7 +65,7 @@
<table width="100%">
<% for attachment in @issue.attachments %>
<tr>
<td><%= link_to attachment.filename, :action => 'download', :id => @issue, :attachment_id => attachment %> (<%= human_size(attachment.size) %>)</td>
<td><%= link_to attachment.filename, :action => 'download', :id => @issue, :attachment_id => attachment %> (<%= human_size(attachment.filesize) %>)</td>
<td><%= format_date(attachment.created_on) %></td>
<td><%= attachment.author.display_name %></td>
<% if authorize_for('issues', 'destroy_attachment') %>
......
......@@ -81,7 +81,7 @@
</div>
<div id="footer">
<p><a href="http://redmine.sourceforge.net/" target="_new"><%= RDM_APP_NAME %></a> <%= RDM_APP_VERSION %></p>
<p><a href="http://redmine.org/" target="_new"><%= RDM_APP_NAME %></a> <%= RDM_APP_VERSION %></p>
</div>
</div>
......
......@@ -6,5 +6,5 @@
<b><%=_('Date')%></b>: <%= format_time(@news.created_on) %>
</p>
<%= @news.descr %>
<%= simple_format auto_link @news.descr %>
......@@ -4,14 +4,22 @@
<p><label for="project_name"><%=_('Name')%> <span class="required">*</span></label><br/>
<%= text_field 'project', 'name' %></p>
<% if session[:user].admin %>
<p><label for="project_parent_id"><%=_('Subproject of')%></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_descr"><%=_('Description')%> <span class="required">*</span></label><br/>
<%= text_field 'project', 'descr', :size => 60 %></p>
<%= text_area 'project', 'descr', :cols => 60, :rows => 3 %></p>
<p><label for="project_homepage"><%=_('Homepage')%></label><br/>
<%= text_field 'project', 'homepage', :size => 40 %></p>
<p><%= check_box 'project', 'public' %>
<label for="project_public"><%=_('Public')%></label></p>
<p><%= check_box 'project', 'is_public' %>
<label for="project_is_public"><%=_('Public')%></label></p>
<fieldset><legend><%=_('Custom fields')%></legend>
<% for custom_field in @custom_fields %>
......
......@@ -2,7 +2,7 @@
<% fixed_issues = @fixed_issues.group_by {|i| i.fixed_version } %>
<% fixed_issues.each do |version, issues| %>
<p><strong><%= version.name %></strong> - <%= format_date(version.date) %><br />
<p><strong><%= version.name %></strong> - <%= format_date(version.effective_date) %><br />
<%=h version.descr %></p>
<ul>
<% issues.each do |i| %>
......
......@@ -2,15 +2,13 @@
<table width="100%" cellspacing="1" cellpadding="2" class="listTableContent">
<tr class="ListHead">
<%= sort_header_tag('projects.name', :caption => _('Project')) %>
<%= sort_header_tag('name', :caption => _('Project')) %>
<th>Description</th>
<%= sort_header_tag('projects.created_on', :caption => _('Created on')) %>
<%= sort_header_tag('created_on', :caption => _('Created on')) %>
</tr>
<% odd_or_even = 1
for project in @projects
odd_or_even = 1 - odd_or_even %>
<tr class="ListLine<%= odd_or_even %>">
<% for project in @projects %>
<tr class="<%= cycle("odd", "even") %>">
<td><%= link_to project.name, :action => 'show', :id => project %>
<td><%= project.descr %>
<td align="center"><%= format_date(project.created_on) %>
......
......@@ -17,14 +17,12 @@
<tr>
<td colspan="7"><%= image_tag 'package' %> <b><%= version.name %></b></td>
</tr>
<% odd_or_even = 1
for file in version.attachments
odd_or_even = 1 - odd_or_even %>
<tr class="ListLine<%= odd_or_even %>">
<% for file in version.attachments %>
<tr class="<%= cycle("odd", "even") %>">
<td></td>
<td><%= link_to file.filename, :controller => 'versions', :action => 'download', :id => version, :attachment_id => file %></td>
<td align="center"><%= format_date(file.created_on) %></td>
<td align="center"><%= human_size(file.size) %></td>
<td align="center"><%= human_size(file.filesize) %></td>
<td align="center"><%= file.downloads %></td>
<td align="center"><small><%= file.digest %></small></td>
<% if delete_allowed %>
......@@ -35,7 +33,8 @@
</td>
<% end %>
</tr>
<% end %>
<% end
reset_cycle %>
<% end %>
</table>
......
......@@ -3,17 +3,19 @@
<form method="post" class="noborder">
<table cellpadding=2>
<tr>
<td><%=_('Status')%>:<br /><%= search_filter_tag("status_id") %></td>
<td><%=_('Tracker')%>:<br /><%= search_filter_tag("tracker_id") %></td>
<td><%=_('Priority')%>:<br /><%= search_filter_tag("priority_id") %></td>
<td><%=_('Category')%>:<br /><%= search_filter_tag("category_id") %></td>
<td><%=_('Assigned to')%>:<br /><%= search_filter_tag("assigned_to_id") %></td>
<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><%=_('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 valign="bottom">
<%= submit_tag _('Apply filter') %>
<%= submit_tag _('Apply filter'), :class => 'button-small' %>
<%= end_form_tag %>
<%= start_form_tag %>
<%= submit_tag _('Reset') %>
<%= submit_tag _('Reset'), :class => 'button-small' %>
<%= end_form_tag %>
</td>
</tr>
......
......@@ -13,8 +13,8 @@
<% for tracker in Tracker.find_all %>
<li><%= link_to tracker.name, :controller => 'projects', :action => 'list_issues', :id => @project,
:set_filter => 1,
"issues.tracker_id" => tracker.id %>:
<%= tracker.issues.count(["project_id=?", @project.id]) %> <%=_('open')%>
"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')%>
</li>
<% end %>
</ul>
......@@ -32,9 +32,18 @@
<% end %>
</div>
<% if @subprojects %>
<div class="box">
<h3><%= image_tag "projects" %> <%=_('Subprojects')%></h3>
<% for subproject in @subprojects %>
<%= link_to subproject.name, :action => 'show', :id => subproject %><br />
<% end %>
</div>
<% end %>
<div class="box">
<h3><%=_('Latest news')%></h3>
<% for news in @project.news %>
<% for news in @news %>
<p>
<b><%= news.title %></b> <small>(<%= link_to_user news.author %> <%= format_time(news.created_on) %>)</small><br />
<%= news.shortdescr %>
......
......@@ -7,7 +7,7 @@
</tr>
<% for role in @roles %>
<tr style="background-color:#CEE1ED">
<tr class="<%= cycle("odd", "even") %>">
<td><%= link_to role.name, :action => 'edit', :id => role %></td>
<td align="center">
<%= start_form_tag :action => 'destroy', :id => role %>
......
......@@ -7,7 +7,7 @@
</tr>
<% for tracker in @trackers %>
<tr style="background-color:#CEE1ED">
<tr class="<%= cycle("odd", "even") %>">
<td><%= link_to tracker.name, :action => 'edit', :id => tracker %></td>
<td align="center">
<%= start_form_tag :action => 'destroy', :id => tracker %>
......
......@@ -2,10 +2,13 @@
<!--[form:user]-->
<p><label for="user_login"><%=_('Login')%></label><br/>
<%= text_field 'user', 'login' %></p>
<%= text_field 'user', 'login', :size => 25 %></p>
<p><label for="user_password"><%=_('Password')%></label><br/>
<%= password_field 'user', 'password' %></p>
<p><label for="password"><%=_('Password')%></label><br/>
<%= password_field_tag 'password', nil, :size => 25 %></p>
<p><label for="password_confirmation"><%=_('Confirmation')%></label><br/>
<%= password_field_tag 'password_confirmation', nil, :size => 25 %></p>
<p><label for="user_firstname"><%=_('Firstname')%></label><br/>
<%= text_field 'user', 'firstname' %></p>
......
......@@ -2,18 +2,18 @@
<table border="0" cellspacing="1" cellpadding="2" class="listTableContent">
<tr class="ListHead">
<%= sort_header_tag('users.login', :caption => _('Login')) %>
<%= sort_header_tag('users.firstname', :caption => _('Firstname')) %>
<%= sort_header_tag('users.lastname', :caption => _('Lastname')) %>
<%= sort_header_tag('login', :caption => _('Login')) %>
<%= sort_header_tag('firstname', :caption => _('Firstname')) %>
<%= sort_header_tag('lastname', :caption => _('Lastname')) %>
<th><%=_('Mail')%></th>
<%= sort_header_tag('users.admin', :caption => _('Admin')) %>
<%= sort_header_tag('users.locked', :caption => _('Locked')) %>
<%= sort_header_tag('users.created_on', :caption => _('Created on')) %>
<%= sort_header_tag('users.last_login_on', :caption => _('Last login')) %>
<%= sort_header_tag('admin', :caption => _('Admin')) %>
<%= sort_header_tag('locked', :caption => _('Locked')) %>
<%= sort_header_tag('created_on', :caption => _('Created on')) %>
<%= sort_header_tag('last_login_on', :caption => _('Last login')) %>
<th></th>
</tr>
<% for user in @users %>
<tr style="background-color:#CEE1ED">
<tr class="<%= cycle("odd", "even") %>">
<td><%= link_to user.login, :action => 'edit', :id => user %></td>
<td><%= user.firstname %></td>
<td><%= user.lastname %></td>
......@@ -25,10 +25,10 @@
<td align="center">
<%= start_form_tag :action => 'edit', :id => user %>
<% if user.locked? %>
<%= hidden_field_tag 'user[locked]', false %>
<%= hidden_field_tag 'user[locked]', 0 %>
<%= submit_tag _('Unlock'), :class => "button-small" %>
<% else %>
<%= hidden_field_tag 'user[locked]', true %>
<%= hidden_field_tag 'user[locked]', 1 %>
<%= submit_tag _('Lock'), :class => "button-small" %>
<% end %>
<%= end_form_tag %>
......
<%= error_messages_for 'version' %>
<!--[form:version]-->
<p><label for="version_name"><%=_('Version')%></label><br/>
<p><label for="version_name"><%=_('Version')%></label> <span class="required">*</span><br/>
<%= text_field 'version', 'name', :size => 20 %></p>
<p><label for="version_descr"><%=_('Description')%></label><br/>
<%= text_field 'version', 'descr', :size => 60 %></p>
<p><label for="version_date"><%=_('Date')%></label><br/>
<%= date_select 'version', 'date' %></p>
<p><label for="version_effective_date"><%=_('Date')%></label><br/>
<%= date_select 'version', 'effective_date' %></p>
<!--[eoform:version]-->
......@@ -2,7 +2,7 @@
<h2><%=_('Welcome')%> !</h2>
<div class="box">
<h3>Latest news</h3>
<h3><%=_('Latest news')%></h3>
<% for news in @news %>
<p>
<b><%= news.title %></b> (<%= link_to_user news.author %> <%= format_time(news.created_on) %> - <%= news.project.name %>)<br />
......@@ -16,7 +16,7 @@
<div class="splitcontentright">
<div class="box">
<h3>Latest projects</h3>
<h3><%=_('Latest projects')%></h3>
<ul>
<% for project in @projects %>
<li>
......
......@@ -5,6 +5,14 @@
# (on OS X: gem install mysql -- --include=/usr/local/lib)
# And be sure to use new-style password hashing:
# http://dev.mysql.com/doc/refman/5.0/en/old-client.html
production:
adapter: mysql
database: redmine
host: localhost
username: root
password:
development:
adapter: mysql
database: redmine_development
......@@ -19,6 +27,17 @@ development_pgsql:
username: postgres
password: "postgres"
development_oracle:
adapter: oci
host: 192.168.0.14
username: rails
password: "rails"
development_sqlserver:
adapter: sqlserver
host: localhost,1157
database: redmine
test:
adapter: mysql
database: redmine_test
......@@ -26,14 +45,25 @@ test:
username: root
password:
test_pgsql:
adapter: postgresql
database: redmine
host: localhost
username: postgres
password: "postgres"
test_oracle:
adapter: oci
host: 192.168.0.14
username: rails_test
password: "rails"
test_sqlserver:
adapter: sqlserver
host: localhost,1157
database: redmine_test
demo:
adapter: sqlite3
dbfile: db/redmine_demo.db
production:
adapter: mysql
database: redmine
host: localhost
username: root
password:
\ No newline at end of file
......@@ -73,7 +73,7 @@ end
# application name
RDM_APP_NAME = "redMine"
# application version
RDM_APP_VERSION = "0.1.0"
RDM_APP_VERSION = "0.2.0"
# application host name
RDM_HOST_NAME = "somenet.foo"
# file storage path
......
# Settings specified here will take precedence over those in config/environment.rb
# In the development environment your application's code is reloaded on
# every request. This slows down response time but is perfect for development
# since you don't have to restart the webserver when you make code changes.
config.cache_classes = false
# Log error messages when you accidentally call methods on nil.
config.whiny_nils = true
# Enable the breakpoint server that script/breakpointer connects to
config.breakpoint_server = true
# Show full error reports and disable caching
config.action_controller.consider_all_requests_local = true
config.action_controller.perform_caching = false
# Don't care if the mailer can't send
config.action_mailer.raise_delivery_errors = false
# Settings specified here will take precedence over those in config/environment.rb
# In the development environment your application's code is reloaded on
# every request. This slows down response time but is perfect for development
# since you don't have to restart the webserver when you make code changes.
config.cache_classes = false
# Log error messages when you accidentally call methods on nil.
config.whiny_nils = true
# Enable the breakpoint server that script/breakpointer connects to
config.breakpoint_server = true
# Show full error reports and disable caching
config.action_controller.consider_all_requests_local = true
config.action_controller.perform_caching = false
# Don't care if the mailer can't send
config.action_mailer.raise_delivery_errors = false
# Settings specified here will take precedence over those in config/environment.rb
# The test environment is used exclusively to run your application's
# test suite. You never need to work with it otherwise. Remember that
# your test database is "scratch space" for the test suite and is wiped
# and recreated between test runs. Don't rely on the data there!
config.cache_classes = true
# Log error messages when you accidentally call methods on nil.
config.whiny_nils = true
# Show full error reports and disable caching
config.action_controller.consider_all_requests_local = true
config.action_controller.perform_caching = false
# Settings specified here will take precedence over those in config/environment.rb
# The test environment is used exclusively to run your application's
# test suite. You never need to work with it otherwise. Remember that
# your test database is "scratch space" for the test suite and is wiped
# and recreated between test runs. Don't rely on the data there!
config.cache_classes = true
# Log error messages when you accidentally call methods on nil.
config.whiny_nils = true
# Show full error reports and disable caching
config.action_controller.consider_all_requests_local = true
config.action_controller.perform_caching = false
# Settings specified here will take precedence over those in config/environment.rb
# The test environment is used exclusively to run your application's
# test suite. You never need to work with it otherwise. Remember that
# your test database is "scratch space" for the test suite and is wiped
# and recreated between test runs. Don't rely on the data there!
config.cache_classes = true
# Log error messages when you accidentally call methods on nil.
config.whiny_nils = true
# Show full error reports and disable caching
config.action_controller.consider_all_requests_local = true
config.action_controller.perform_caching = false
# administration
admin:
index: administration.html
mail_options: administration.html#mail_notifications
info: administration.html#app_info
users:
index: administration.html#users
roles:
index: administration.html#roles
workflow: administration.html#workflow
trackers:
index: administration.html#trackers
issue_statuses:
index: administration.html#issue_statuses
# 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.
# projects
projects:
add: projects.html#settings
# available languages for help pages
langs:
- fr
# issues
\ No newline at end of file
# mapping between controller/action and help pages
# if action is not defined here, 'index' page will be displayed
pages:
# administration
admin:
index: ch01.html
mail_options: ch01s08.html
info: ch01s09.html
users:
index: ch01s01.html
roles:
index: ch01s02.html
workflow: ch01s06.html
trackers:
index: ch01s03.html
issue_statuses:
index: ch01s05.html
# projects
projects:
index: ch02.html
add: ch02s08.html
show: ch02s01.html
add_document: ch02s06.html
list_documents: ch02s06.html
add_issue: ch02s02.html
list_issues: ch02s02.html
add_news: ch02s05.html
list_news: ch02s05.html
add_file: ch02s07.html
list_files: ch02s07.html
changelog: ch02s04.html
issues:
index: ch02s02.html
documents:
index: ch02s06.html
news:
index: ch02s05.html
versions:
index: ch02s08.html
reports:
index: ch02s03.html
\ No newline at end of file
This diff is collapsed.
# 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([1, 2, 3, 6, 10, 11, 12, 16, 17, 18, 19, 20, 21, 23, 25, 26, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41])
r.permissions = Permission.find(:all)
r = Role.create :name => "Reporter"
r.permissions = Permission.find([1, 2, 3, 6, 16, 17, 18, 19, 20, 21, 23, 25, 26, 30, 31, 32, 38, 39])
r.permissions = Permission.find(:all)
# trackers
Tracker.create(:name => "Bug", :is_in_chlog => true)
Tracker.create(:name => "Feature request", :is_in_chlog => true)
......
......@@ -2,13 +2,22 @@
redMine - project management software
Copyright (C) 2006 Jean-Philippe Lang
http://redmine.sourceforge.net/
http://redmine.org/
== xx/xx/2006
== 07/09/2006 - v0.2.0
* More filter options in issues list
* Issues list exportable to CSV
* new databases supported: Oracle, PostgreSQL, SQL Server
* projects/subprojects hierarchy (1 level of subprojects only)
* environment information display in admin/info
* more filter options in issues list (rev6)
* default language based on browser settings (Accept-Language HTTP header)
* issues list exportable to CSV (rev6)
* simple_format and auto_link on long text fields
* more data validations
* Fixed: error when all mail notifications are unchecked in admin/mail_options
* Fixed: all project news are displayed on project summary
* Fixed: Can't change user password in users/edit
* Fixed: Error on tables creation with PostgreSQL (rev5)
* Fixed: SQL error in "issue reports" view with PostgreSQL (rev5)
......
......@@ -2,15 +2,23 @@
redMine - project management software
Copyright (C) 2006 Jean-Philippe Lang
http://redmine.sourceforge.net/
http://redmine.org/
== Requirements
* Ruby on Rails 1.1
* Any database supported by Rails (developped using MySQL 5)
* a database (see compatibility below)
* (recommended) Apache/Lighttpd with FCGI support
Supported databases:
* MySQL (tested with MySQL 5)
* PostgreSQL (tested with PostgreSQL 8.1)
* Oracle (tested with Oracle 10g)
* SQL Server (tested with SQL Server 2005)
* SQLite (tested with SQLite 3)
== Installation
......@@ -20,9 +28,9 @@ http://redmine.sourceforge.net/
2. Create an empty database: "redmine" for example
3. Configure database parameters in config/database.yml
for "production" environment
for "production" environment (default database is MySQL)
4. Create database structure. Under application main directory:
4. Create the database structure. Under application main directory:
rake migrate RAILS_ENV="production"
It will create tables and default configuration data
......
......@@ -2,7 +2,7 @@
redMine - project management software
Copyright (C) 2006 Jean-Philippe Lang
http://redmine.sourceforge.net/
http://redmine.org/
== License
......@@ -34,6 +34,12 @@ redMine is a project management software written using Ruby on Rails.
* multilanguage support
== User documentation
User documentation for redMine is written using DocBook XML format.
It's also avaible as HTML files in /public/manual (contextual help)
== Versioning
redMine versioning scheme is major.minor.revision
......
......@@ -11,6 +11,10 @@ Localization.define('fr', 'Français') do |l|
l.store 'Closed', 'Fermée'
l.store 'Rejected', 'Rejetée'
l.store 'Feedback', 'Commentaire'
# filters
l.store '[All]', '[Tous]'
l.store '[Open]', '[Ouvert]'
l.store '[None]', '[Aucun]'
# issue priorities
l.store 'Issue priorities', 'Priorités des demandes'
......@@ -53,6 +57,9 @@ Localization.define('fr', 'Français') do |l|
l.store 'Reported issues', 'Demandes soumises'
l.store 'Assigned to me', 'Demandes qui me sont assignées'
# ./script/../config/../app/views/account/login.rhtml
l.store 'Please login', 'Identification'
# ./script/../config/../app/views/account/show.rhtml
l.store 'Registered on', 'Inscrit le'
l.store 'Projects', 'Projets'
......@@ -231,6 +238,7 @@ Localization.define('fr', 'Français') do |l|
l.store 'New file', 'Nouveau fichier'
# ./script/../config/../app/views/projects/list_issues.rhtml
l.store 'Subprojects', 'Sous-projets'
l.store 'Apply filter', 'Appliquer'
l.store 'Reset', 'Annuler'
l.store 'Report an issue', 'Nouvelle demande'
......@@ -311,6 +319,6 @@ Localization.define('fr', 'Français') do |l|
# ./script/../config/../app/views/versions/_form.rhtml
# ./script/../config/../app/views/welcome/index.rhtml
l.store 'Latest projects', 'Derniers projets'
end
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<head>
<title>redMine - Aide en ligne</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<meta name="description" content="redMine" />
<meta name="keywords" content="issue,bug,tracker" />
<link href="stylesheets/help.css" rel="stylesheet" type="text/css" />
</head>
<body>
<p align="right">[ <a href="index.html">Index</a> ]</p>
<h1>Administration</h1>
Sommaire:
<ol>
<li><a href="administration.html#users">Utilisateurs</a></li>
<li><a href="administration.html#roles">Rôles et permissions</a></li>
<li><a href="administration.html#trackers">Trackers</a></li>
<li><a href="administration.html#custom_fields">Champs personnalisés</a></li>
<li><a href="administration.html#issue_statuses">Statuts de demande</a></li>
<li><a href="administration.html#workflow">Workflow</a></li>
<li><a href="administration.html#enumerations">Listes de valeurs</a></li>
<li><a href="administration.html#mail_notifications">Notifications par mail</a></li>
<li><a href="administration.html#app_info">Informations</a></li>
</ol>
<h2><a name="users"></a>1. Utilisateurs</h2>
<p>Ces écrans vous permettent de gérer les utilisateurs de l'application.</p>
<h3>1.1 Liste des utilisateurs</h3>
<center><img src="images/users_list.png"><br />
<i><small>Liste des utilisateurs</small></i></center>
<h3>1.2 Création ou modification d'un utilisateur</h3>
<ul>
<li><b>Administrateur</b>: déclare l'utilisateur comme administrateur de l'application.</li>
<li><b>Notifications par mail</b>: permet d'activer ou non l'envoi automatique de notifications par mail pour cet utilisateur</li>
<li><b>Verrouillé</b>: désactive le compte de l'utilisateur</li>
</ul>
<p>En mode modification, laissez le champ <b>Password</b> vide pour laisser le mot de passe de l'utilisateur inchangé.</p>
<p>Un utilisateur déclaré comme administrateur dispose de toutes les permissions sur l'application et sur tous les projets.</p>
<h2><a name="roles"></a>2. Rôles et permissions</h2>
<p>Les rôles permettent de définir les permissions des différents membres d'un projet.<br />
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.</p>
<p>Sur l'écran d'édition du rôle, cochez les actions que vous souhaitez autoriser pour le rôle.</p>
<h2><a name="trackers"></a>3. Trackers</h2>
<p>Les trackers permettent de typer les demandes et de définir des workflows spécifiques pour chacun de ces types.</p>
<h2><a name="custom_fields"></a>4. Champs personnalisés</h2>
<p>Les champs personnalisés vous permettent d'ajouter des informations supplémentaires sur les demandes.</p>
Un champ personnalisé peut être de l'un des types suivants:
<ul>
<li><b>Integer</b>: entier positif ou négatif</li>
<li><b>String</b>: chaîne de caractère</li>
<li><b>Date</b>: date</li>
<li><b>Boolean</b>: booléen (case à cocher)</li>
<li><b>List</b>: valeur à sélectionnée parmi une liste prédéfinie (liste déroulante)</li>
</ul>
Des éléments de validation peuvent être définis:
<ul>
<li><b>Required</b>: champ dont la saisie est obligatoire sur les demandes</li>
<li><b>For all projects</b>: champ automatiquement associé à l'ensemble des projets</li>
<li><b>Min - max length</b>: longueurs minimales et maximales pour les champs en saisie libre (0 signifie qu'il n'y a pas de restriction)</li>
<li><b>Regular expression</b>: expression régulière permettant de valider la valeur saisie</li>
<li><b>Possible values (only for lists)</b>: valeurs possibles pour les champs de type "List". Les valeurs sont séparées par le caractère |</li>
</ul>
<p>Si l'option <b>For all projects</b> n'est pas activée, chaque projet pourra ou non utilisé le champ personnalisé pour ses demandes
(voir <a href="projects.html#settings">Project settings</a>).</p>
<h2><a name="issue_statuses"></a>5. Statuts des demandes</h2>
<p>Cet écran vous permet de définir les différents statuts possibles des demandes.</p>
<ul>
<li><b>Closed</b>: indique que le statut correspond à une demande considérée comme fermée</li>
<li><b>Default</b>: statut appliqué par défaut aux nouvelles demandes (seul un statut peut être déclaré comme statut par défaut)</li>
<li><b>HTML color</b>: code de couleur HTML représentant le statut à l'affichage</li>
</ul>
<h2><a name="workflow"></a>6. Workflow</h2>
<p>Le workflow permet de définir quels changements les différents membres d'un projet sont autorisés à effectuer sur le statut des demandes, en fonction de leur type.</p>
<p>Sélectionnez le rôle et le type de demande pour lesquels vous souhaitez modifier le workflow, puis cliquez sur <b>Edit</b>.
L'écran vous permet alors de modifier, pour le rôle et le type de demande choisi, les changements autorisés.</p>
<p>Les lignes représentent les statuts initiaux des demandes. Les colonnes représentent les statuts autorisés à être appliqués.</p>
<p>Dans l'exemple ci-dessous, les demandes de type Bug au statut New pourront être passées au statut Assigned ou Resolved par le rôle Développeur.<br />
Celles au statut Assigned pourront être passées au statut Resolved.<br />
Le statut de toutes les autres demandes de type Bug ne pourra pas être modifié par le Développeur.</p>
<center><img src="images/workflow.png"><br />
<i><small>Exemple de configuration d'un workflow</small></i></center>
<p><b>Remarque</b>: pour qu'un rôle puisse changer le statut des demandes, la permission <i>"Changer le statut des demandes"</i> doit lui être explicitement donnée indépendemment de la configuration du workflow (voir <a href="#roles">Roles et permissions</a>).
<h2><a name="enumerations"></a>7. Listes de valeurs</h2>
<p>Les listes de valeurs utilisées par l'application (exemple: les priorités des demandes) peuvent être personnalisées en fonction de vos besoins.<br />
Cet écran vous permet de définir les valeurs possibles pour chacune des listes suivantes:</p>
<ul>
<li><b>Priorités des demandes</b></li>
<li><b>Catégories de documents</b></li>
</ul>
<h2><a name="mail_notifications"></a>8. Notifications par mail</h2>
<p>Cet écran vous permet de sélectionner les actions qui donneront lieu à une notification par mail aux membres du projet.</p>
<p><b>Remarque</b>: l'envoi de mails doit être activé dans la configuration de l'application si souhaitez effectuer des notifications.</p>
<h2><a name="app_info"></a>9. Informations</h2>
<p>Affiche des informations relatives à l'application</p>
<ul>
<li><b>Version</b>: version de l'application</li>
<li><b>Database</b>: type de base de données utilisée</li>
</ul>
</body>
</html>
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Chapter&nbsp;1.&nbsp;Administration</title><link rel="stylesheet" href="html.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="start" href="index.html" title="Documentation redMine"><link rel="up" href="index.html" title="Documentation redMine"><link rel="prev" href="index.html" title="Documentation redMine"><link rel="next" href="ch01s01.html" title="1.&nbsp;Utilisateurs"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter&nbsp;1.&nbsp;Administration</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="index.html">Prev</a>&nbsp;</td><th width="60%" align="center">&nbsp;</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch01s01.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="d0e4"></a>Chapter&nbsp;1.&nbsp;Administration</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="ch01s01.html">1. Utilisateurs</a></span></dt><dd><dl><dt><span class="section"><a href="ch01s01.html#d0e12">1.1. Liste des utilisateurs</a></span></dt><dt><span class="section"><a href="ch01s01.html#d0e26">1.2. Cr&eacute;ation ou modification d'un utilisateur</a></span></dt></dl></dd><dt><span class="section"><a href="ch01s02.html">2. R&ocirc;les et permissions</a></span></dt><dt><span class="section"><a href="ch01s03.html">3. Trackers</a></span></dt><dt><span class="section"><a href="ch01s04.html">4. Champs personnalis&eacute;s</a></span></dt><dt><span class="section"><a href="ch01s05.html">5. Statut des demandes</a></span></dt><dt><span class="section"><a href="ch01s06.html">6. Workflow</a></span></dt><dt><span class="section"><a href="ch01s07.html">7. Listes de valeurs</a></span></dt><dt><span class="section"><a href="ch01s08.html">8. Notifications par mail</a></span></dt><dt><span class="section"><a href="ch01s09.html">9. Informations</a></span></dt></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="index.html">Prev</a>&nbsp;</td><td width="20%" align="center">&nbsp;</td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch01s01.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Documentation redMine&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">&nbsp;1.&nbsp;Utilisateurs</td></tr></table></div></body></html>
\ No newline at end of file
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>1.&nbsp;Utilisateurs</title><link rel="stylesheet" href="html.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="start" href="index.html" title="Documentation redMine"><link rel="up" href="ch01.html" title="Chapter&nbsp;1.&nbsp;Administration"><link rel="prev" href="ch01.html" title="Chapter&nbsp;1.&nbsp;Administration"><link rel="next" href="ch01s02.html" title="2.&nbsp;R&ocirc;les et permissions"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">1.&nbsp;Utilisateurs</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch01.html">Prev</a>&nbsp;</td><th width="60%" align="center">Chapter&nbsp;1.&nbsp;Administration</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch01s02.html">Next</a></td></tr></table><hr></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e7"></a>1.&nbsp;Utilisateurs</h2></div></div></div><p>Ces &eacute;crans vous permettent de g&eacute;rer les utilisateurs de l'application.</p><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e12"></a>1.1.&nbsp;Liste des utilisateurs</h3></div></div></div><p></p><div class="screenshot"><div class="mediaobject"><img src="resources/users_list.png"></div></div><p>Les boutons Lock/Unlock vous permettent de v&eacute;rouiller/d&eacute;v&eacute;rouiller les comptes utilisateurs.</p><p>Un utilisateur dont le compte est v&eacute;rouill&eacute; ne peut plus s'identifier pour acc&eacute;der &agrave; l'application.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e26"></a>1.2.&nbsp;Cr&eacute;ation ou modification d'un utilisateur</h3></div></div></div><p>En mode modification, laissez le champ Password vide pour laisser le mot de passe de l'utilisateur inchang&eacute;.</p><p>Un utilisateur d&eacute;clar&eacute; comme administrateur dispose de toutes les permissions sur l'application et sur tous les projets.</p><div class="itemizedlist"><ul type="disc"><li><p><span class="guilabel">Administrateur</span>: d&eacute;clare l'utilisateur comme administrateur de l'application.</p></li><li><p><span class="guilabel">Notifications par mail</span>: permet d'activer ou non l'envoi automatique de notifications par mail pour cet utilisateur</p></li><li><p><span class="guilabel">V&eacute;rouill&eacute;</span>: d&eacute;sactive le compte de l'utilisateur</p></li></ul></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch01.html">Prev</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch01.html">Up</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch01s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter&nbsp;1.&nbsp;Administration&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">&nbsp;2.&nbsp;R&ocirc;les et permissions</td></tr></table></div></body></html>
\ No newline at end of file
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>2.&nbsp;R&ocirc;les et permissions</title><link rel="stylesheet" href="html.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="start" href="index.html" title="Documentation redMine"><link rel="up" href="ch01.html" title="Chapter&nbsp;1.&nbsp;Administration"><link rel="prev" href="ch01s01.html" title="1.&nbsp;Utilisateurs"><link rel="next" href="ch01s03.html" title="3.&nbsp;Trackers"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">2.&nbsp;R&ocirc;les et permissions</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch01s01.html">Prev</a>&nbsp;</td><th width="60%" align="center">Chapter&nbsp;1.&nbsp;Administration</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch01s03.html">Next</a></td></tr></table><hr></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e49"></a>2.&nbsp;R&ocirc;les et permissions</h2></div></div></div><p>Les r&ocirc;les permettent de d&eacute;finir les permissions des diff&eacute;rents membres d'un projet. Chaque membre d'un projet dispose d'un r&ocirc;le unique au sein d'un projet. Un utilisateur peut avoir diff&eacute;rents r&ocirc;les au sein de diff&eacute;rents projets.</p><p>Sur l'&eacute;cran d'&eacute;dition du r&ocirc;le, cochez les actions que vous souhaitez autoriser pour le r&ocirc;le.</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch01s01.html">Prev</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch01.html">Up</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch01s03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">1.&nbsp;Utilisateurs&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">&nbsp;3.&nbsp;Trackers</td></tr></table></div></body></html>
\ No newline at end of file
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>3.&nbsp;Trackers</title><link rel="stylesheet" href="html.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="start" href="index.html" title="Documentation redMine"><link rel="up" href="ch01.html" title="Chapter&nbsp;1.&nbsp;Administration"><link rel="prev" href="ch01s02.html" title="2.&nbsp;R&ocirc;les et permissions"><link rel="next" href="ch01s04.html" title="4.&nbsp;Champs personnalis&eacute;s"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">3.&nbsp;Trackers</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch01s02.html">Prev</a>&nbsp;</td><th width="60%" align="center">Chapter&nbsp;1.&nbsp;Administration</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch01s04.html">Next</a></td></tr></table><hr></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e56"></a>3.&nbsp;Trackers</h2></div></div></div><p>Les trackers permettent de typer les demandes et de d&eacute;finir des workflows sp&eacute;cifiques pour chacun de ces types.</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch01s02.html">Prev</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch01.html">Up</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch01s04.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">2.&nbsp;R&ocirc;les et permissions&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">&nbsp;4.&nbsp;Champs personnalis&eacute;s</td></tr></table></div></body></html>
\ No newline at end of file
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>4.&nbsp;Champs personnalis&eacute;s</title><link rel="stylesheet" href="html.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="start" href="index.html" title="Documentation redMine"><link rel="up" href="ch01.html" title="Chapter&nbsp;1.&nbsp;Administration"><link rel="prev" href="ch01s03.html" title="3.&nbsp;Trackers"><link rel="next" href="ch01s05.html" title="5.&nbsp;Statut des demandes"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">4.&nbsp;Champs personnalis&eacute;s</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch01s03.html">Prev</a>&nbsp;</td><th width="60%" align="center">Chapter&nbsp;1.&nbsp;Administration</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch01s05.html">Next</a></td></tr></table><hr></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e61"></a>4.&nbsp;Champs personnalis&eacute;s</h2></div></div></div><p>Les champs personnalis&eacute;s vous permettent d'ajouter des informations suppl&eacute;mentaires sur les demandes. Un champ personnalis&eacute; peut &ecirc;tre de l'un des types suivants:</p><div class="itemizedlist"><ul type="disc"><li><p><span class="guilabel">Integer</span>: entier positif ou n&eacute;gatif</p></li><li><p><span class="guilabel">String</span>: cha&icirc;ne de caract&egrave;re</p></li><li><p><span class="guilabel">Date</span>: date</p></li><li><p><span class="guilabel">Boolean</span>: bool&eacute;en (case &agrave; cocher)</p></li><li><p><span class="guilabel">List</span>: valeur &agrave; s&eacute;lectionn&eacute;e parmi une liste pr&eacute;d&eacute;finie (liste d&eacute;roulante)</p></li></ul></div><p>Des &eacute;l&eacute;ments de validation peuvent &ecirc;tre d&eacute;finis:</p><div class="itemizedlist"><ul type="disc"><li><p><span class="guilabel">Obligatoire</span>: champ dont la saisie est obligatoire sur les demandes</p></li><li><p><span class="guilabel">Pour tous les projects</span>: champ automatiquement associ&eacute; &agrave; l'ensemble des projets</p></li><li><p><span class="guilabel">Min - max length</span>: longueurs minimales et maximales pour les champs en saisie libre (0 signifie qu'il n'y a pas de restriction)</p></li><li><p><span class="guilabel">Expression r&eacute;guli&egrave;re</span>: expression r&eacute;guli&egrave;re permettant de valider la valeur saisie</p></li><li><p><span class="guilabel">Valeurs possibles</span>: valeurs possibles pour les champs de type "Liste". Les valeurs sont s&eacute;par&eacute;es par le caract&egrave;re |</p></li></ul></div><p>Si l'option <span class="guilabel">Pour tous les projets</span> n'est pas activ&eacute;e, chaque projet pourra choisir d'utiliser ou non le champ pour ses demandes.</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch01s03.html">Prev</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch01.html">Up</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch01s05.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">3.&nbsp;Trackers&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">&nbsp;5.&nbsp;Statut des demandes</td></tr></table></div></body></html>
\ No newline at end of file
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>5.&nbsp;Statut des demandes</title><link rel="stylesheet" href="html.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="start" href="index.html" title="Documentation redMine"><link rel="up" href="ch01.html" title="Chapter&nbsp;1.&nbsp;Administration"><link rel="prev" href="ch01s04.html" title="4.&nbsp;Champs personnalis&eacute;s"><link rel="next" href="ch01s06.html" title="6.&nbsp;Workflow"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">5.&nbsp;Statut des demandes</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch01s04.html">Prev</a>&nbsp;</td><th width="60%" align="center">Chapter&nbsp;1.&nbsp;Administration</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch01s06.html">Next</a></td></tr></table><hr></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e125"></a>5.&nbsp;Statut des demandes</h2></div></div></div><p>Ces &eacute;crans vous permettent de d&eacute;finir les diff&eacute;rents statuts possibles des demandes.</p><div class="itemizedlist"><ul type="disc"><li><p><span class="guilabel">Demande ferm&eacute;e</span>: indique que le statut correspond &agrave; une demande consid&eacute;r&eacute;e comme ferm&eacute;e</p></li><li><p><span class="guilabel">Statut par d&eacute;faut</span>: statut appliqu&eacute; par d&eacute;faut aux nouvelles demandes (seul un statut peut &ecirc;tre d&eacute;clar&eacute; comme statut par d&eacute;faut)</p></li><li><p><span class="guilabel">Couleur</span>: code couleur HTML (6 caract&egrave;res) repr&eacute;sentant le statut &agrave; l'affichage</p></li></ul></div><p></p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch01s04.html">Prev</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch01.html">Up</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch01s06.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">4.&nbsp;Champs personnalis&eacute;s&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">&nbsp;6.&nbsp;Workflow</td></tr></table></div></body></html>
\ No newline at end of file
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>6.&nbsp;Workflow</title><link rel="stylesheet" href="html.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="start" href="index.html" title="Documentation redMine"><link rel="up" href="ch01.html" title="Chapter&nbsp;1.&nbsp;Administration"><link rel="prev" href="ch01s05.html" title="5.&nbsp;Statut des demandes"><link rel="next" href="ch01s07.html" title="7.&nbsp;Listes de valeurs"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">6.&nbsp;Workflow</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch01s05.html">Prev</a>&nbsp;</td><th width="60%" align="center">Chapter&nbsp;1.&nbsp;Administration</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch01s07.html">Next</a></td></tr></table><hr></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e147"></a>6.&nbsp;Workflow</h2></div></div></div><p>Le workflow permet de d&eacute;finir les changements que les diff&eacute;rents membres d'un projet sont autoris&eacute;s &agrave; effectuer sur les demandes, en fonction de leur type.</p><p>S&eacute;lectionnez le r&ocirc;le et le tracker pour lesquels vous souhaitez modifier le workflow, puis cliquez sur Edit. L'&eacute;cran vous permet alors de modifier, pour le r&ocirc;le et le tracker choisi, les changements autoris&eacute;s. Les lignes repr&eacute;sentent les statuts initiaux des demandes. Les colonnes repr&eacute;sentent les statuts autoris&eacute;s &agrave; &ecirc;tre appliqu&eacute;s.</p><p>Remarque: pour qu'un r&ocirc;le puisse changer le statut des demandes, la permission doit lui &ecirc;tre explicitement donn&eacute;e ind&eacute;pendemment de la configuration du workflow.</p><p></p><div class="screenshot"><div class="mediaobject"><img src="resources/workflow.png"></div></div><p>Dans l'exemple ci-dessus, les demandes de type Bug au statut Nouveau pourront &ecirc;tre pass&eacute;es au statut Assign&eacute;e ou R&eacute;solue par le r&ocirc;le D&eacute;veloppeur. Celles au statut Assign&eacute;e pourront &ecirc;tre pass&eacute;es au statut R&eacute;solue. Le statut de toutes les autres demandes de type Bug ne pourra pas &ecirc;tre modifi&eacute; par le D&eacute;veloppeur.</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch01s05.html">Prev</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch01.html">Up</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch01s07.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">5.&nbsp;Statut des demandes&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">&nbsp;7.&nbsp;Listes de valeurs</td></tr></table></div></body></html>
\ No newline at end of file
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>7.&nbsp;Listes de valeurs</title><link rel="stylesheet" href="html.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="start" href="index.html" title="Documentation redMine"><link rel="up" href="ch01.html" title="Chapter&nbsp;1.&nbsp;Administration"><link rel="prev" href="ch01s06.html" title="6.&nbsp;Workflow"><link rel="next" href="ch01s08.html" title="8.&nbsp;Notifications par mail"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">7.&nbsp;Listes de valeurs</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch01s06.html">Prev</a>&nbsp;</td><th width="60%" align="center">Chapter&nbsp;1.&nbsp;Administration</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch01s08.html">Next</a></td></tr></table><hr></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e165"></a>7.&nbsp;Listes de valeurs</h2></div></div></div><p>Les listes de valeurs utilis&eacute;es par l'application (exemple: les priorit&eacute;s des demandes) peuvent &ecirc;tre personnalis&eacute;es. Cet &eacute;cran vous permet de d&eacute;finir les valeurs possibles pour chacune des listes suivantes:</p><div class="itemizedlist"><ul type="disc"><li><p>Priorit&eacute;s des demandes</p></li><li><p>Cat&eacute;gories de documents</p></li></ul></div><p></p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch01s06.html">Prev</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch01.html">Up</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch01s08.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">6.&nbsp;Workflow&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">&nbsp;8.&nbsp;Notifications par mail</td></tr></table></div></body></html>
\ No newline at end of file
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>8.&nbsp;Notifications par mail</title><link rel="stylesheet" href="html.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="start" href="index.html" title="Documentation redMine"><link rel="up" href="ch01.html" title="Chapter&nbsp;1.&nbsp;Administration"><link rel="prev" href="ch01s07.html" title="7.&nbsp;Listes de valeurs"><link rel="next" href="ch01s09.html" title="9.&nbsp;Informations"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">8.&nbsp;Notifications par mail</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch01s07.html">Prev</a>&nbsp;</td><th width="60%" align="center">Chapter&nbsp;1.&nbsp;Administration</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch01s09.html">Next</a></td></tr></table><hr></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e178"></a>8.&nbsp;Notifications par mail</h2></div></div></div><p>Cet &eacute;cran vous permet de s&eacute;lectionner les actions qui donneront lieu &agrave; une notification par mail aux membres du projet.</p><p>Remarque: l'envoi de mails doit &ecirc;tre activ&eacute; dans la configuration de l'application si souhaitez effectuer des notifications.</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch01s07.html">Prev</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch01.html">Up</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch01s09.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">7.&nbsp;Listes de valeurs&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">&nbsp;9.&nbsp;Informations</td></tr></table></div></body></html>
\ No newline at end of file
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>9.&nbsp;Informations</title><link rel="stylesheet" href="html.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="start" href="index.html" title="Documentation redMine"><link rel="up" href="ch01.html" title="Chapter&nbsp;1.&nbsp;Administration"><link rel="prev" href="ch01s08.html" title="8.&nbsp;Notifications par mail"><link rel="next" href="ch02.html" title="Chapter&nbsp;2.&nbsp;Projets"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">9.&nbsp;Informations</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch01s08.html">Prev</a>&nbsp;</td><th width="60%" align="center">Chapter&nbsp;1.&nbsp;Administration</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch02.html">Next</a></td></tr></table><hr></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e185"></a>9.&nbsp;Informations</h2></div></div></div><p>Affiche des informations relatives &agrave; l'application et &agrave; son environnement.</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch01s08.html">Prev</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch01.html">Up</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">8.&nbsp;Notifications par mail&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">&nbsp;Chapter&nbsp;2.&nbsp;Projets</td></tr></table></div></body></html>
\ No newline at end of file
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Chapter&nbsp;2.&nbsp;Projets</title><link rel="stylesheet" href="html.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="start" href="index.html" title="Documentation redMine"><link rel="up" href="index.html" title="Documentation redMine"><link rel="prev" href="ch01s09.html" title="9.&nbsp;Informations"><link rel="next" href="ch02s01.html" title="1.&nbsp;Aper&ccedil;u du projet"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter&nbsp;2.&nbsp;Projets</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch01s09.html">Prev</a>&nbsp;</td><th width="60%" align="center">&nbsp;</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch02s01.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="d0e190"></a>Chapter&nbsp;2.&nbsp;Projets</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="ch02s01.html">1. Aper&ccedil;u du projet</a></span></dt><dt><span class="section"><a href="ch02s02.html">2. Gestion des demandes</a></span></dt><dd><dl><dt><span class="section"><a href="ch02s02.html#d0e204">2.1. Liste des demandes</a></span></dt></dl></dd><dt><span class="section"><a href="ch02s03.html">3. Rapports</a></span></dt><dt><span class="section"><a href="ch02s04.html">4. Historique</a></span></dt><dt><span class="section"><a href="ch02s05.html">5. Annonces</a></span></dt><dt><span class="section"><a href="ch02s06.html">6. Documents</a></span></dt><dt><span class="section"><a href="ch02s07.html">7. Fichiers</a></span></dt><dt><span class="section"><a href="ch02s08.html">8. Configuration du projet</a></span></dt><dd><dl><dt><span class="section"><a href="ch02s08.html#d0e248">8.1. Propri&eacute;t&eacute;s du projet</a></span></dt><dt><span class="section"><a href="ch02s08.html#d0e264">8.2. Membres</a></span></dt><dt><span class="section"><a href="ch02s08.html#d0e269">8.3. Versions</a></span></dt><dt><span class="section"><a href="ch02s08.html#d0e274">8.4. Cat&eacute;gories des demandes</a></span></dt></dl></dd></dl></div><p></p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch01s09.html">Prev</a>&nbsp;</td><td width="20%" align="center">&nbsp;</td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02s01.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">9.&nbsp;Informations&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">&nbsp;1.&nbsp;Aper&ccedil;u du projet</td></tr></table></div></body></html>
\ No newline at end of file
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>1.&nbsp;Aper&ccedil;u du projet</title><link rel="stylesheet" href="html.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="start" href="index.html" title="Documentation redMine"><link rel="up" href="ch02.html" title="Chapter&nbsp;2.&nbsp;Projets"><link rel="prev" href="ch02.html" title="Chapter&nbsp;2.&nbsp;Projets"><link rel="next" href="ch02s02.html" title="2.&nbsp;Gestion des demandes"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">1.&nbsp;Aper&ccedil;u du projet</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02.html">Prev</a>&nbsp;</td><th width="60%" align="center">Chapter&nbsp;2.&nbsp;Projets</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch02s02.html">Next</a></td></tr></table><hr></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e194"></a>1.&nbsp;Aper&ccedil;u du projet</h2></div></div></div><p>L'aper&ccedil;u vous pr&eacute;sente les informations g&eacute;n&eacute;rales relatives au projet, les principaux membres, les derni&egrave;res annonces, ainsi qu'une synth&egrave;se du nombre de demandes ouvertes par tracker.</p><p></p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02.html">Prev</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Up</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter&nbsp;2.&nbsp;Projets&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">&nbsp;2.&nbsp;Gestion des demandes</td></tr></table></div></body></html>
\ No newline at end of file
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>2.&nbsp;Gestion des demandes</title><link rel="stylesheet" href="html.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="start" href="index.html" title="Documentation redMine"><link rel="up" href="ch02.html" title="Chapter&nbsp;2.&nbsp;Projets"><link rel="prev" href="ch02s01.html" title="1.&nbsp;Aper&ccedil;u du projet"><link rel="next" href="ch02s03.html" title="3.&nbsp;Rapports"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">2.&nbsp;Gestion des demandes</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s01.html">Prev</a>&nbsp;</td><th width="60%" align="center">Chapter&nbsp;2.&nbsp;Projets</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch02s03.html">Next</a></td></tr></table><hr></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e200"></a>2.&nbsp;Gestion des demandes</h2></div></div></div><p></p><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e204"></a>2.1.&nbsp;Liste des demandes</h3></div></div></div><p>Par d&eacute;faut, l'ensemble des demandes ouvertes du projet sont affich&eacute;es. Diff&eacute;rents filtres vous permettent de s&eacute;lectionner les demandes &agrave; afficher. Si le projet comporte des sous-projets, vous avez la possibilit&eacute; d'afficher &eacute;galement les demandes relatives aux sous-projets (non affich&eacute;es par d&eacute;faut).</p><p>Une fois appliqu&eacute;, un filtre reste valable durant toute votre session. Vous pouvez le red&eacute;finir, ou le supprimer en cliquant sur Annuler.</p><p></p><div class="screenshot"><div class="mediaobject"><img src="resources/issues_list.png"></div></div><p></p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s01.html">Prev</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Up</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02s03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">1.&nbsp;Aper&ccedil;u du projet&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">&nbsp;3.&nbsp;Rapports</td></tr></table></div></body></html>
\ No newline at end of file
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>3.&nbsp;Rapports</title><link rel="stylesheet" href="html.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="start" href="index.html" title="Documentation redMine"><link rel="up" href="ch02.html" title="Chapter&nbsp;2.&nbsp;Projets"><link rel="prev" href="ch02s02.html" title="2.&nbsp;Gestion des demandes"><link rel="next" href="ch02s04.html" title="4.&nbsp;Historique"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">3.&nbsp;Rapports</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s02.html">Prev</a>&nbsp;</td><th width="60%" align="center">Chapter&nbsp;2.&nbsp;Projets</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch02s04.html">Next</a></td></tr></table><hr></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e219"></a>3.&nbsp;Rapports</h2></div></div></div><p>Cet &eacute;cran pr&eacute;sente la synth&egrave;se du nombre de demandes par statut et selon diff&eacute;rents crit&egrave;res (tracker, priorit&eacute;, cat&eacute;gorie). Des liens directs permettent d'acc&eacute;der &agrave; la liste d&eacute;taill&eacute;e des demandes pour chaque crit&egrave;re.</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s02.html">Prev</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Up</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02s04.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">2.&nbsp;Gestion des demandes&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">&nbsp;4.&nbsp;Historique</td></tr></table></div></body></html>
\ No newline at end of file
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>4.&nbsp;Historique</title><link rel="stylesheet" href="html.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="start" href="index.html" title="Documentation redMine"><link rel="up" href="ch02.html" title="Chapter&nbsp;2.&nbsp;Projets"><link rel="prev" href="ch02s03.html" title="3.&nbsp;Rapports"><link rel="next" href="ch02s05.html" title="5.&nbsp;Annonces"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">4.&nbsp;Historique</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s03.html">Prev</a>&nbsp;</td><th width="60%" align="center">Chapter&nbsp;2.&nbsp;Projets</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch02s05.html">Next</a></td></tr></table><hr></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e224"></a>4.&nbsp;Historique</h2></div></div></div><p>Cette page pr&eacute;sente l'ensemble des demandes r&eacute;solues dans chacune des versions du projet. Certains types de demande peuvent &ecirc;tre exclus de cet affichage.</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s03.html">Prev</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Up</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02s05.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">3.&nbsp;Rapports&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">&nbsp;5.&nbsp;Annonces</td></tr></table></div></body></html>
\ No newline at end of file
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>5.&nbsp;Annonces</title><link rel="stylesheet" href="html.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="start" href="index.html" title="Documentation redMine"><link rel="up" href="ch02.html" title="Chapter&nbsp;2.&nbsp;Projets"><link rel="prev" href="ch02s04.html" title="4.&nbsp;Historique"><link rel="next" href="ch02s06.html" title="6.&nbsp;Documents"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">5.&nbsp;Annonces</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s04.html">Prev</a>&nbsp;</td><th width="60%" align="center">Chapter&nbsp;2.&nbsp;Projets</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch02s06.html">Next</a></td></tr></table><hr></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e229"></a>5.&nbsp;Annonces</h2></div></div></div><p>Les nouvelles vous permettent d'informer les utilisateurs sur l'activit&eacute; du projet.</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s04.html">Prev</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Up</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02s06.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">4.&nbsp;Historique&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">&nbsp;6.&nbsp;Documents</td></tr></table></div></body></html>
\ No newline at end of file
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>6.&nbsp;Documents</title><link rel="stylesheet" href="html.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="start" href="index.html" title="Documentation redMine"><link rel="up" href="ch02.html" title="Chapter&nbsp;2.&nbsp;Projets"><link rel="prev" href="ch02s05.html" title="5.&nbsp;Annonces"><link rel="next" href="ch02s07.html" title="7.&nbsp;Fichiers"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">6.&nbsp;Documents</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s05.html">Prev</a>&nbsp;</td><th width="60%" align="center">Chapter&nbsp;2.&nbsp;Projets</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch02s07.html">Next</a></td></tr></table><hr></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e234"></a>6.&nbsp;Documents</h2></div></div></div><p>Les documents sont group&eacute;s par cat&eacute;gories (voir Listes de valeurs). Un document peut contenir plusieurs fichiers (exemple: r&eacute;visions ou versions successives).</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s05.html">Prev</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Up</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02s07.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">5.&nbsp;Annonces&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">&nbsp;7.&nbsp;Fichiers</td></tr></table></div></body></html>
\ No newline at end of file
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>7.&nbsp;Fichiers</title><link rel="stylesheet" href="html.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="start" href="index.html" title="Documentation redMine"><link rel="up" href="ch02.html" title="Chapter&nbsp;2.&nbsp;Projets"><link rel="prev" href="ch02s06.html" title="6.&nbsp;Documents"><link rel="next" href="ch02s08.html" title="8.&nbsp;Configuration du projet"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">7.&nbsp;Fichiers</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s06.html">Prev</a>&nbsp;</td><th width="60%" align="center">Chapter&nbsp;2.&nbsp;Projets</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch02s08.html">Next</a></td></tr></table><hr></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e239"></a>7.&nbsp;Fichiers</h2></div></div></div><p>Ce module vous permet de publier les diff&eacute;rents fichiers (sources, binaires, ...) pour chaque version de l'application.</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s06.html">Prev</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Up</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02s08.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">6.&nbsp;Documents&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">&nbsp;8.&nbsp;Configuration du projet</td></tr></table></div></body></html>
\ No newline at end of file
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>8.&nbsp;Configuration du projet</title><link rel="stylesheet" href="html.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="start" href="index.html" title="Documentation redMine"><link rel="up" href="ch02.html" title="Chapter&nbsp;2.&nbsp;Projets"><link rel="prev" href="ch02s07.html" title="7.&nbsp;Fichiers"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">8.&nbsp;Configuration du projet</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s07.html">Prev</a>&nbsp;</td><th width="60%" align="center">Chapter&nbsp;2.&nbsp;Projets</th><td width="20%" align="right">&nbsp;</td></tr></table><hr></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e244"></a>8.&nbsp;Configuration du projet</h2></div></div></div><p></p><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e248"></a>8.1.&nbsp;Propri&eacute;t&eacute;s du projet</h3></div></div></div><p></p><div class="itemizedlist"><ul type="disc"><li><p><span class="guilabel">Public</span>: 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&egrave;s, en fonction de leur r&ocirc;le.</p></li><li><p><span class="guilabel">Champs personnalis&eacute;s</span>: s&eacute;lectionner les champs personnalis&eacute;s que vous souhaitez utiliser au sein du projet. Seul l'administrateur peut ajouter de nouveaux champs personnalis&eacute;s.</p></li></ul></div><p></p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e264"></a>8.2.&nbsp;Membres</h3></div></div></div><p>Cet &eacute;cran vous permet de d&eacute;finir les membres du projet ainsi que leurs r&ocirc;les respectifs. Un utilisateur ne peut avoir qu'un r&ocirc;le au sein d'un projet donn&eacute;. Le r&ocirc;le d'un membre d&eacute;termine les permissions dont il b&eacute;n&eacute;ficie sur le projet.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e269"></a>8.3.&nbsp;Versions</h3></div></div></div><p>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&eacute;rentes versions de l'application (voir Fichiers).</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e274"></a>8.4.&nbsp;Cat&eacute;gories des demandes</h3></div></div></div><p>Les cat&eacute;gories de demande vous permettent de typer les demandes. Les cat&eacute;gories peuvent par exemple correspondre aux diff&eacute;rents modules du projet.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s07.html">Prev</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Up</a></td><td width="40%" align="right">&nbsp;</td></tr><tr><td width="40%" align="left" valign="top">7.&nbsp;Fichiers&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">&nbsp;</td></tr></table></div></body></html>
\ No newline at end of file
body {
background: #FFFFFF;
font: 0.8em Verdana,Tahoma,Arial,sans-serif;
}
h1, h2, h3, h4, h5 {
color: #800000;
font-family: sans-serif;
}
table {
font-size: 1em;
}
a{
color:#467aa7;
font-weight:bold;
text-decoration:none;
background-color:inherit;
}
a:hover{
color: #800000;
text-decoration:underline;
background-color:inherit;
}
a img{border:none;}
.screenshot {
text-align: center;
}
.guilabel {
font-weight: bold;
}
span.term {
font-weight: bold;
}
div.sidebar {
background: #F0F0F0;
border: 1px solid gray;
padding: 5px;
margin: 20px;
}
pre.programlisting {
background: #F0F0F0;
border: 1px solid gray;
padding: 2px;
font-size: 10pt;
white-space: pre;
}
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Documentation redMine</title><link rel="stylesheet" href="html.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="start" href="index.html" title="Documentation redMine"><link rel="next" href="ch01.html" title="Chapter&nbsp;1.&nbsp;Administration"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Documentation redMine</th></tr><tr><td width="20%" align="left">&nbsp;</td><th width="60%" align="center">&nbsp;</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch01.html">Next</a></td></tr></table><hr></div><div class="book" lang="en"><div class="titlepage"><div><div><h1 class="title"><a name="d0e1"></a>Documentation redMine</h1></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="ch01.html">1. Administration</a></span></dt><dd><dl><dt><span class="section"><a href="ch01s01.html">1. Utilisateurs</a></span></dt><dd><dl><dt><span class="section"><a href="ch01s01.html#d0e12">1.1. Liste des utilisateurs</a></span></dt><dt><span class="section"><a href="ch01s01.html#d0e26">1.2. Cr&eacute;ation ou modification d'un utilisateur</a></span></dt></dl></dd><dt><span class="section"><a href="ch01s02.html">2. R&ocirc;les et permissions</a></span></dt><dt><span class="section"><a href="ch01s03.html">3. Trackers</a></span></dt><dt><span class="section"><a href="ch01s04.html">4. Champs personnalis&eacute;s</a></span></dt><dt><span class="section"><a href="ch01s05.html">5. Statut des demandes</a></span></dt><dt><span class="section"><a href="ch01s06.html">6. Workflow</a></span></dt><dt><span class="section"><a href="ch01s07.html">7. Listes de valeurs</a></span></dt><dt><span class="section"><a href="ch01s08.html">8. Notifications par mail</a></span></dt><dt><span class="section"><a href="ch01s09.html">9. Informations</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch02.html">2. Projets</a></span></dt><dd><dl><dt><span class="section"><a href="ch02s01.html">1. Aper&ccedil;u du projet</a></span></dt><dt><span class="section"><a href="ch02s02.html">2. Gestion des demandes</a></span></dt><dd><dl><dt><span class="section"><a href="ch02s02.html#d0e204">2.1. Liste des demandes</a></span></dt></dl></dd><dt><span class="section"><a href="ch02s03.html">3. Rapports</a></span></dt><dt><span class="section"><a href="ch02s04.html">4. Historique</a></span></dt><dt><span class="section"><a href="ch02s05.html">5. Annonces</a></span></dt><dt><span class="section"><a href="ch02s06.html">6. Documents</a></span></dt><dt><span class="section"><a href="ch02s07.html">7. Fichiers</a></span></dt><dt><span class="section"><a href="ch02s08.html">8. Configuration du projet</a></span></dt><dd><dl><dt><span class="section"><a href="ch02s08.html#d0e248">8.1. Propri&eacute;t&eacute;s du projet</a></span></dt><dt><span class="section"><a href="ch02s08.html#d0e264">8.2. Membres</a></span></dt><dt><span class="section"><a href="ch02s08.html#d0e269">8.3. Versions</a></span></dt><dt><span class="section"><a href="ch02s08.html#d0e274">8.4. Cat&eacute;gories des demandes</a></span></dt></dl></dd></dl></dd></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left">&nbsp;</td><td width="20%" align="center">&nbsp;</td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch01.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">&nbsp;</td><td width="20%" align="center">&nbsp;</td><td width="40%" align="right" valign="top">&nbsp;Chapter&nbsp;1.&nbsp;Administration</td></tr></table></div></body></html>
\ No newline at end of file
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<head>
<title>redMine - Aide en ligne</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<meta name="description" content="redMine" />
<meta name="keywords" content="issue,bug,tracker" />
<link href="stylesheets/help.css" rel="stylesheet" type="text/css" />
</head>
<body>
<h1>Aide</h1>
<p>Documentation en ligne redMine</p>
Sommaire:
<ul>
<li>
<a href="administration.html">Administration</a>
<ol>
<li><a href="administration.html#users">Utilisateur</a></li>
<li><a href="administration.html#roles">Rles et permissions</a></li>
<li><a href="administration.html#trackers">Trackers</a></li>
<li><a href="administration.html#custom_fields">Champs personnaliss</a></li>
<li><a href="administration.html#issue_statuses">Statuts de demande</a></li>
<li><a href="administration.html#workflow">Workflow</a></li>
<li><a href="administration.html#enumerations">Liste de valeurs</a></li>
<li><a href="administration.html#mail_notifications">Notifications par mail</a></li>
<li><a href="administration.html#app_info">Informations</a></li>
</ol>
</li>
<li><a href="projects.html">Projets</a>
<ol>
<li><a href="projects.html#overview">Aperu</a></li>
<li><a href="projects.html#issues">Demandes</a>
<ul>
<li>Liste des demandes</li>
<li>Nouvelle demande</li>
<li>Changer le statut d'une demande</li>
</ul>
</li>
<li><a href="projects.html#reports">Rapports</a></li>
<li><a href="projects.html#news">Annonces</a></li>
<li><a href="projects.html#changelog">Historique</a></li>
<li><a href="projects.html#documents">Documents</a></li>
<li><a href="projects.html#members">Membres</a></li>
<li><a href="projects.html#files">Fichiers</a></li>
<li><a href="projects.html#settings">Configuration</a></li>
<ul>
<li>Projet</li>
<li>Membres</li>
<li>Versions</li>
<li>Catgories de demande</li>
</ul>
</ol>
</li>
</ul>
</body>
</html>
\ No newline at end of file
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<head>
<title>redMine - Aide en ligne</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<meta name="description" content="redMine" />
<meta name="keywords" content="issue,bug,tracker" />
<link href="stylesheets/help.css" rel="stylesheet" type="text/css" />
</head>
<body>
<p align="right">[ <a href="index.html">Index</a> ]</p>
<h1>Projets</h1>
Sommaire:
<ol>
<li><a href="projects.html#overview">Aperçu</a></li>
<li><a href="projects.html#issues">Demandes</a>
<ul>
<li>Liste des demandes</li>
<li>Nouvelle demande</li>
<li>Changer le statut d'une demande</li>
</ul>
</li>
<li><a href="projects.html#reports">Rapports</a></li>
<li><a href="projects.html#news">Annonces</a></li>
<li><a href="projects.html#changelog">Historique</a></li>
<li><a href="projects.html#documents">Documents</a></li>
<li><a href="projects.html#members">Membres</a></li>
<li><a href="projects.html#files">Fichiers</a></li>
<li><a href="projects.html#settings">Configuration</a></li>
<ul>
<li>Projet</li>
<li>Membres</li>
<li>Versions</li>
<li>Catégories de demande</li>
</ul>
</ol>
<h2><a name="overview"></a>1. Aperçu</h2>
<p>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.
<h2><a name="issues"></a>2. Demandes</h2>
<h3>2.1 Liste des demandes</h3>
Par défaut, l'ensemble des demandes sont affichées. Vous pouvez utiliser les différents filtres pour limiter l'affichage à certaines demandes seulement.<br />
Lorsque vous appliquez un filtre, il reste en place durant toute votre session. Vous pouvez le redéfinir, ou le supprimer en cliquant sur <b>Annuler</b>.
<center><img src="images/issues_list.png"><br />
<i><small>Liste des demandes</small></i></center>
<h3>2.2 Nouvelle demande</h3>
<p>TODO</p>
<h3>2.3 Changer le statut d'une demande</h3>
<p>TODO</p>
<h2><a name="reports"></a>3. Rapports</h2>
<p>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.</p>
<h2><a name="news"></a>4. Annonces</h2>
<p>Les nouvelles vous permettent d'informer les utilisateurs sur l'activité du projet.</p>
<h2><a name="changelog"></a>5. Historique</h2>
<p>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 (voir <a href="administration.html#trackers">Trackers</a>).</p>
<h2><a name="documents"></a>6. Documents</h2>
<p>Les documents sont groupés par catégories (voir <a href="administration.html#enumerations">Listes de valeurs</a>).<br />
Un document peut contenir plusieurs fichiers (exemple: révisions ou versions successives)</p>
<h2><a name="members"></a>7. Membres</h2>
<p>Affichage de l'ensemble des membres du projet, par rôle</p>
<h2><a name="files"></a>8. Fichiers</h2>
<p>Ce module vous permet de publier les fichiers de l'application (sources, binaires, ...) pour chaque version de l'application .</p>
<h2><a name="settings"></a>9. Configuration</h2>
<h3>9.1 Projet</h3>
<ul>
<li><b>Public</b>: 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.<br />
Si le projet n'est pas public, seuls les membres du projet y ont accès, en fonction de leur rôle.</li>
<li><b>Champs personnalisés</b>: sélectionner les champs personnalisés que vous souhaitez utiliser au sein du projet.<br />
Seul l'administrateur peut ajouter de nouveaux champs personnalisés.</li>
</ul>
<h3>9.2 Membres</h3>
<p>Cette section vous permet de définir les membres du projet ainsi que leurs rôles respectifs.<br />
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.</p>
<h3>9.3 Versions</h3>
<p>Les versions vous permettent de suivre les changements survenus tout au long du projet.
A la fermeture d'une demande, vous pouvez indiquer quelle version la prend en compte.<br />
Vous pouvez par ailleurs publier les différentes versions de l'application (voir <a href="projects.html#files">Fichiers</a>).
</p>
<h3>9.4 Catégories de demande</h3>
<p>Les catégories de demande vous permettent de typer les demandes. Les catégories peuvent par exemple correspondre aux modules de l'application.</p>
</body>
</html>
/* andreas08 - an open source xhtml/css website layout by Andreas Viklund - http://andreasviklund.com . Free to use in any way and for any purpose as long as the proper credits are given to the original designer. Version: 1.0, November 28, 2005 */
/**************** Body and tag styles ****************/
body{
font:76% Verdana,Tahoma,Arial,sans-serif;
line-height:1.4em;
color:#303030;
margin: 20px;
}
a{
color:#467aa7;
font-weight:bold;
text-decoration:none;
background-color:inherit;
}
a:hover{color:#2a5a8a; text-decoration:none; background-color:inherit;}
a img{border:none;}
p{padding:0 0 0.2em 0;}
p form{margin-top:0; margin-bottom:20px;}
h1 {
display:block;
font-size:1.7em;
font-weight:normal;
letter-spacing:-1px;
color:#505050;
background-color:inherit;
}
h2 {
display:block;
margin: 30px 0 0 0;
font-size:1.5em;
font-weight:normal;
letter-spacing:-1px;
color:#505050;
background-color:inherit;
}
hr { border:0px; border-bottom:1px dashed #000000; }
/**************** Misc classes and styles ****************/
.splitcontentleft{float:left; width:49%;}
.splitcontentright{float:right; width:49%;}
.clear{clear:both;}
.small{font-size:0.8em;line-height:1.4em;padding:0 0 0 0;}
.hide{display:none;}
.textcenter{text-align:center;}
.textright{text-align:right;}
.important{color:#f02025; background-color:inherit; }
.box{
margin:0 0 20px 0;
padding:10px;
border:1px solid #c0c0c0;
background-color:#fafbfc;
color:#505050;
line-height:1.5em;
}
......@@ -189,11 +189,20 @@ input.button-small
font-size: 0.8em;
}
select.select-small
{
font-size: 0.8em;
}
label {
font-weight: bold;
font-size: 1em;
}
fieldset {
border:1px solid #7F9DB9;
}
.required {
color: #bb0000;
}
......@@ -220,10 +229,10 @@ tr.ListHead a {
text-decoration:underline;
}
tr.ListLine0 {
tr.odd {
background-color: #C1E2F7;
}
tr.ListLine1 {
tr.even {
background-color:#CEE1ED;
}
......
# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
first:
id: 1
another:
id: 2
# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
first:
id: 1
another:
id: 2
# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
first:
id: 1
another:
id: 2
# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
first:
id: 1
another:
id: 2
# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
first:
id: 1
another:
id: 2
# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
first:
id: 1
another:
id: 2
# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
first:
id: 1
another:
id: 2
# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
first:
id: 1
another:
id: 2
# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
first:
id: 1
another:
id: 2
# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
first:
id: 1
another:
id: 2
Mailer#issue_closed
Find me in app/views/mailer/issue_closed.rhtml
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment