##// END OF EJS Templates
Localization plugin removed (replaced with GLoc)...
Jean-Philippe Lang -
r12:b862c447f16e
parent child
Show More
1 NO CONTENT: new file 100644, binary diff hidden
1 NO CONTENT: new file 100644, binary diff hidden
1 NO CONTENT: new file 100644, binary diff hidden
@@ -0,0 +1,400
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
3 "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd">
4 <book>
5 <title>Documentation redMine</title>
6
7 <chapter>
8 <title>Administration</title>
9
10 <section>
11 <title>Utilisateurs</title>
12
13 <para>Ces écrans vous permettent de gérer les utilisateurs de
14 l'application.</para>
15
16 <section>
17 <title>Liste des utilisateurs</title>
18
19 <para></para>
20
21 <screenshot>
22 <screeninfo>Liste des utilisateurs</screeninfo>
23
24 <mediaobject>
25 <imageobject>
26 <imagedata fileref="images/users_list.png" />
27 </imageobject>
28 </mediaobject>
29 </screenshot>
30
31 <para>Les boutons Lock/Unlock vous permettent de
32 vérouiller/dévérouiller les comptes utilisateurs.</para>
33
34 <para>Un utilisateur dont le compte est vérouillé ne peut plus
35 s'identifier pour accéder à l'application.</para>
36 </section>
37
38 <section>
39 <title>Création ou modification d'un utilisateur</title>
40
41 <para>En mode modification, laissez le champ Password vide pour
42 laisser le mot de passe de l'utilisateur inchangé.</para>
43
44 <para>Un utilisateur déclaré comme administrateur dispose de toutes
45 les permissions sur l'application et sur tous les projets.</para>
46
47 <itemizedlist>
48 <listitem>
49 <para><guilabel>Administrateur</guilabel>: déclare l'utilisateur
50 comme administrateur de l'application.</para>
51 </listitem>
52
53 <listitem>
54 <para><guilabel>Notifications par mail</guilabel>: permet
55 d'activer ou non l'envoi automatique de notifications par mail
56 pour cet utilisateur</para>
57 </listitem>
58
59 <listitem>
60 <para><guilabel>Vérouillé</guilabel>: désactive le compte de
61 l'utilisateur</para>
62 </listitem>
63 </itemizedlist>
64 </section>
65 </section>
66
67 <section>
68 <title>Rôles et permissions</title>
69
70 <para>Les rôles permettent de définir les permissions des différents
71 membres d'un projet. Chaque membre d'un projet dispose d'un rôle unique
72 au sein d'un projet. Un utilisateur peut avoir différents rôles au sein
73 de différents projets.</para>
74
75 <para>Sur l'écran d'édition du rôle, cochez les actions que vous
76 souhaitez autoriser pour le rôle.</para>
77 </section>
78
79 <section>
80 <title>Trackers</title>
81
82 <para>Les trackers permettent de typer les demandes et de définir des
83 workflows spécifiques pour chacun de ces types.</para>
84 </section>
85
86 <section>
87 <title>Champs personnalisés</title>
88
89 <para>Les champs personnalisés vous permettent d'ajouter des
90 informations supplémentaires sur les demandes. Un champ personnalisé
91 peut être de l'un des types suivants:</para>
92
93 <itemizedlist>
94 <listitem>
95 <para><guilabel>Integer</guilabel>: entier positif ou négatif</para>
96 </listitem>
97
98 <listitem>
99 <para><guilabel>String</guilabel>: chaîne de caractère</para>
100 </listitem>
101
102 <listitem>
103 <para><guilabel>Date</guilabel>: date</para>
104 </listitem>
105
106 <listitem>
107 <para><guilabel>Boolean</guilabel>: booléen (case à cocher)</para>
108 </listitem>
109
110 <listitem>
111 <para><guilabel>List</guilabel>: valeur à sélectionnée parmi une
112 liste prédéfinie (liste déroulante)</para>
113 </listitem>
114 </itemizedlist>
115
116 <para>Des éléments de validation peuvent être définis:</para>
117
118 <itemizedlist>
119 <listitem>
120 <para><guilabel>Obligatoire</guilabel>: champ dont la saisie est
121 obligatoire sur les demandes</para>
122 </listitem>
123
124 <listitem>
125 <para><guilabel>Pour tous les projects</guilabel>: champ
126 automatiquement associé à l'ensemble des projets</para>
127 </listitem>
128
129 <listitem>
130 <para><guilabel>Min - max length</guilabel>: longueurs minimales et
131 maximales pour les champs en saisie libre (0 signifie qu'il n'y a
132 pas de restriction)</para>
133 </listitem>
134
135 <listitem>
136 <para><guilabel>Expression régulière</guilabel>: expression
137 régulière permettant de valider la valeur saisie</para>
138 </listitem>
139
140 <listitem>
141 <para><guilabel>Valeurs possibles</guilabel>: valeurs possibles pour
142 les champs de type "Liste". Les valeurs sont séparées par le
143 caractère |</para>
144 </listitem>
145 </itemizedlist>
146
147 <para>Si l'option <guilabel>Pour tous les projets</guilabel> n'est pas
148 activée, chaque projet pourra choisir d'utiliser ou non le champ pour
149 ses demandes.</para>
150 </section>
151
152 <section>
153 <title>Statut des demandes</title>
154
155 <para>Ces écrans vous permettent de définir les différents statuts
156 possibles des demandes.</para>
157
158 <itemizedlist>
159 <listitem>
160 <para><guilabel>Demande fermée</guilabel>: indique que le statut
161 correspond à une demande considérée comme fermée</para>
162 </listitem>
163
164 <listitem>
165 <para><guilabel>Statut par défaut</guilabel>: statut appliqué par
166 défaut aux nouvelles demandes (seul un statut peut être déclaré
167 comme statut par défaut)</para>
168 </listitem>
169
170 <listitem>
171 <para><guilabel>Couleur</guilabel>: code couleur HTML (6 caractères)
172 représentant le statut à l'affichage</para>
173 </listitem>
174 </itemizedlist>
175
176 <para></para>
177 </section>
178
179 <section>
180 <title>Workflow</title>
181
182 <para>Le workflow permet de définir les changements que les différents
183 membres d'un projet sont autorisés à effectuer sur les demandes, en
184 fonction de leur type.</para>
185
186 <para>Sélectionnez le rôle et le tracker pour lesquels vous souhaitez
187 modifier le workflow, puis cliquez sur Edit. L'écran vous permet alors
188 de modifier, pour le rôle et le tracker choisi, les changements
189 autorisés. Les lignes représentent les statuts initiaux des demandes.
190 Les colonnes représentent les statuts autorisés à être appliqués.</para>
191
192 <para>Remarque: pour qu'un rôle puisse changer le statut des demandes,
193 la permission doit lui être explicitement donnée indépendemment de la
194 configuration du workflow.</para>
195
196 <para></para>
197
198 <screenshot>
199 <screeninfo>Exemple de configuration d'un workflow</screeninfo>
200
201 <mediaobject>
202 <imageobject>
203 <imagedata fileref="images/workflow.png" />
204 </imageobject>
205 </mediaobject>
206 </screenshot>
207
208 <para>Dans l'exemple ci-dessus, les demandes de type Bug au statut
209 Nouveau pourront être passées au statut Assignée ou Résolue par le rôle
210 Développeur. Celles au statut Assignée pourront être passées au statut
211 Résolue. Le statut de toutes les autres demandes de type Bug ne pourra
212 pas être modifié par le Développeur.</para>
213 </section>
214
215 <section>
216 <title>Listes de valeurs</title>
217
218 <para>Les listes de valeurs utilisées par l'application (exemple: les
219 priorités des demandes) peuvent être personnalisées. Cet écran vous
220 permet de définir les valeurs possibles pour chacune des listes
221 suivantes:</para>
222
223 <itemizedlist>
224 <listitem>
225 <para>Priorités des demandes</para>
226 </listitem>
227
228 <listitem>
229 <para>Catégories de documents</para>
230 </listitem>
231 </itemizedlist>
232
233 <para></para>
234 </section>
235
236 <section>
237 <title>Notifications par mail</title>
238
239 <para>Cet écran vous permet de sélectionner les actions qui donneront
240 lieu à une notification par mail aux membres du projet.</para>
241
242 <para>Remarque: l'envoi de mails doit être activé dans la configuration
243 de l'application si souhaitez effectuer des notifications.</para>
244 </section>
245
246 <section>
247 <title>Informations</title>
248
249 <para>Affiche des informations relatives à l'application et à son
250 environnement.</para>
251 </section>
252 </chapter>
253
254 <chapter>
255 <title>Projets</title>
256
257 <para></para>
258
259 <section>
260 <title>Aperçu du projet</title>
261
262 <para>L'aperçu vous présente les informations générales relatives au
263 projet, les principaux membres, les dernières annonces, ainsi qu'une
264 synthèse du nombre de demandes ouvertes par tracker.</para>
265
266 <para></para>
267 </section>
268
269 <section>
270 <title>Gestion des demandes</title>
271
272 <para></para>
273
274 <section>
275 <title>Liste des demandes</title>
276
277 <para>Par défaut, l'ensemble des demandes ouvertes du projet sont
278 affichées. Différents filtres vous permettent de sélectionner les
279 demandes à afficher. Si le projet comporte des sous-projets, vous avez
280 la possibilité d'afficher également les demandes relatives aux
281 sous-projets (non affichées par défaut).</para>
282
283 <para>Une fois appliqué, un filtre reste valable durant toute votre
284 session. Vous pouvez le redéfinir, ou le supprimer en cliquant sur
285 Annuler.</para>
286
287 <para></para>
288
289 <screenshot>
290 <screeninfo>Liste des demandes</screeninfo>
291
292 <mediaobject>
293 <imageobject>
294 <imagedata fileref="images/issues_list.png" />
295 </imageobject>
296 </mediaobject>
297 </screenshot>
298
299 <para></para>
300 </section>
301 </section>
302
303 <section>
304 <title>Rapports</title>
305
306 <para>Cet écran présente la synthèse du nombre de demandes par statut et
307 selon différents critères (tracker, priorité, catégorie). Des liens
308 directs permettent d'accéder à la liste détaillée des demandes pour
309 chaque critère.</para>
310 </section>
311
312 <section>
313 <title>Historique</title>
314
315 <para>Cette page présente l'ensemble des demandes résolues dans chacune
316 des versions du projet. Certains types de demande peuvent être exclus de
317 cet affichage.</para>
318 </section>
319
320 <section>
321 <title>Annonces</title>
322
323 <para>Les nouvelles vous permettent d'informer les utilisateurs sur
324 l'activité du projet.</para>
325 </section>
326
327 <section>
328 <title>Documents</title>
329
330 <para>Les documents sont groupés par catégories (voir Listes de
331 valeurs). Un document peut contenir plusieurs fichiers (exemple:
332 révisions ou versions successives).</para>
333 </section>
334
335 <section>
336 <title>Fichiers</title>
337
338 <para>Ce module vous permet de publier les différents fichiers (sources,
339 binaires, ...) pour chaque version de l'application.</para>
340 </section>
341
342 <section>
343 <title>Configuration du projet</title>
344
345 <para></para>
346
347 <section>
348 <title>Propriétés du projet</title>
349
350 <para></para>
351
352 <itemizedlist>
353 <listitem>
354 <para><guilabel>Public</guilabel>: si le projet est public, il
355 sera visible (consultation des demandes, des documents, ...) pour
356 l'ensemble des utilisateurs, y compris ceux qui ne sont pas
357 membres du projet. Si le projet n'est pas public, seuls les
358 membres du projet y ont accès, en fonction de leur rôle.</para>
359 </listitem>
360
361 <listitem>
362 <para><guilabel>Champs personnalisés</guilabel>: sélectionner les
363 champs personnalisés que vous souhaitez utiliser au sein du
364 projet. Seul l'administrateur peut ajouter de nouveaux champs
365 personnalisés.</para>
366 </listitem>
367 </itemizedlist>
368
369 <para></para>
370 </section>
371
372 <section>
373 <title>Membres</title>
374
375 <para>Cet écran vous permet de définir les membres du projet ainsi que
376 leurs rôles respectifs. Un utilisateur ne peut avoir qu'un rôle au
377 sein d'un projet donné. Le rôle d'un membre détermine les permissions
378 dont il bénéficie sur le projet.</para>
379 </section>
380
381 <section>
382 <title>Versions</title>
383
384 <para>Les versions vous permettent de suivre les changements survenus
385 tout au long du projet. A la fermeture d'une demande, vous pouvez par
386 exemple indiquer quelle version la prend en compte. Vous pouvez par
387 ailleurs publier les différentes versions de l'application (voir
388 Fichiers).</para>
389 </section>
390
391 <section>
392 <title>Catégories des demandes</title>
393
394 <para>Les catégories de demande vous permettent de typer les demandes.
395 Les catégories peuvent par exemple correspondre aux différents modules
396 du projet.</para>
397 </section>
398 </section>
399 </chapter>
400 </book> No newline at end of file
@@ -0,0 +1,43
1 desc 'Load default configuration data (using default language)'
2
3 task :load_default_data => :environment do
4 include GLoc
5 set_language_if_valid($RDM_DEFAULT_LANG)
6
7 # roles
8 r = Role.create :name => l(:default_role_manager)
9 r.permissions = Permission.find(:all, :conditions => ["is_public=?", false])
10 r = Role.create :name => l(:default_role_developper)
11 r.permissions = Permission.find(:all, :conditions => ["is_public=?", false])
12 r = Role.create :name => l(:default_role_reporter)
13 r.permissions = Permission.find(:all, :conditions => ["is_public=?", false])
14 # trackers
15 Tracker.create(:name => l(:default_tracker_bug), :is_in_chlog => true)
16 Tracker.create(:name => l(:default_tracker_feature), :is_in_chlog => true)
17 Tracker.create(:name => l(:default_tracker_support), :is_in_chlog => false)
18 # issue statuses
19 IssueStatus.create(:name => l(:default_issue_status_new), :is_closed => false, :is_default => true, :html_color => 'F98787')
20 IssueStatus.create(:name => l(:default_issue_status_assigned), :is_closed => false, :is_default => false, :html_color => 'C0C0FF')
21 IssueStatus.create(:name => l(:default_issue_status_resolved), :is_closed => false, :is_default => false, :html_color => '88E0B3')
22 IssueStatus.create(:name => l(:default_issue_status_feedback), :is_closed => false, :is_default => false, :html_color => 'F3A4F4')
23 IssueStatus.create(:name => l(:default_issue_status_closed), :is_closed => true, :is_default => false, :html_color => 'DBDBDB')
24 IssueStatus.create(:name => l(:default_issue_status_rejected), :is_closed => true, :is_default => false, :html_color => 'F5C28B')
25 # workflow
26 Tracker.find(:all).each { |t|
27 Role.find(:all).each { |r|
28 IssueStatus.find(:all).each { |os|
29 IssueStatus.find(:all).each { |ns|
30 Workflow.create(:tracker_id => t.id, :role_id => r.id, :old_status_id => os.id, :new_status_id => ns.id) unless os == ns
31 }
32 }
33 }
34 }
35 # enumerations
36 Enumeration.create(:opt => "DCAT", :name => l(:default_doc_category_user))
37 Enumeration.create(:opt => "DCAT", :name => l(:default_doc_category_tech))
38 Enumeration.create(:opt => "IPRI", :name => l(:default_priority_low))
39 Enumeration.create(:opt => "IPRI", :name => l(:default_priority_normal))
40 Enumeration.create(:opt => "IPRI", :name => l(:default_priority_high))
41 Enumeration.create(:opt => "IPRI", :name => l(:default_priority_urgent))
42 Enumeration.create(:opt => "IPRI", :name => l(:default_priority_immediate))
43 end No newline at end of file
@@ -41,7 +41,7 class AccountController < ApplicationController
41 41 self.logged_in_user = user
42 42 redirect_back_or_default :controller => 'account', :action => 'my_page'
43 43 else
44 flash[:notice] = l(:notice_account_invalid_creditentials)
44 flash.now[:notice] = l(:notice_account_invalid_creditentials)
45 45 end
46 46 end
47 47 end
@@ -64,7 +64,7 class AccountController < ApplicationController
64 64 @user = self.logged_in_user
65 65 if request.post? and @user.update_attributes(@params[:user])
66 66 set_localization
67 flash[:notice] = l(:notice_account_updated)
67 flash.now[:notice] = l(:notice_account_updated)
68 68 self.logged_in_user.reload
69 69 end
70 70 end
@@ -72,11 +72,12 class AccountController < ApplicationController
72 72 # Change logged in user's password
73 73 def change_password
74 74 @user = self.logged_in_user
75 flash.now[:notice] = l(:notice_can_t_change_password) and render :action => 'my_account' and return if @user.auth_source_id
75 76 if @user.check_password?(@params[:password])
76 77 @user.password, @user.password_confirmation = params[:new_password], params[:new_password_confirmation]
77 flash[:notice] = l(:notice_account_password_updated) if @user.save
78 flash.now[:notice] = l(:notice_account_password_updated) if @user.save
78 79 else
79 flash[:notice] = l(:notice_account_wrong_password)
80 flash.now[:notice] = l(:notice_account_wrong_password)
80 81 end
81 82 render :action => 'my_account'
82 83 end
@@ -100,11 +101,16 class AccountController < ApplicationController
100 101 return
101 102 else
102 103 if request.post?
103 user = User.find_by_mail(params[:mail])
104 flash[:notice] = l(:notice_account_unknown_email) and return unless user
104 user = User.find_by_mail(params[:mail])
105 # user not found in db
106 flash.now[:notice] = l(:notice_account_unknown_email) and return unless user
107 # user uses an external authentification
108 flash.now[:notice] = l(:notice_can_t_change_password) and return if user.auth_source_id
109 # create a new token for password recovery
105 110 token = Token.new(:user => user, :action => "recovery")
106 111 if token.save
107 Mailer.set_language_if_valid(Localization.lang)
112 # send token to user via email
113 Mailer.set_language_if_valid(user.language)
108 114 Mailer.deliver_lost_password(token)
109 115 flash[:notice] = l(:notice_account_lost_email_sent)
110 116 redirect_to :action => 'login'
@@ -143,7 +149,7 class AccountController < ApplicationController
143 149 @user.custom_values = @custom_values
144 150 token = Token.new(:user => @user, :action => "register")
145 151 if @user.save and token.save
146 Mailer.set_language_if_valid(Localization.lang)
152 Mailer.set_language_if_valid(@user.language)
147 153 Mailer.deliver_register(token)
148 154 flash[:notice] = l(:notice_account_register_done)
149 155 redirect_to :controller => ''
@@ -37,21 +37,19 class ApplicationController < ActionController::Base
37 37 end
38 38
39 39 def set_localization
40 Localization.lang = begin
41 if self.logged_in_user and Localization.langs.keys.include? self.logged_in_user.language
40 lang = begin
41 if self.logged_in_user and self.logged_in_user.language and !self.logged_in_user.language.empty? and GLoc.valid_languages.include? self.logged_in_user.language.to_sym
42 42 self.logged_in_user.language
43 43 elsif request.env['HTTP_ACCEPT_LANGUAGE']
44 44 accept_lang = HTTPUtils.parse_qvalues(request.env['HTTP_ACCEPT_LANGUAGE']).first.split('-').first
45 if Localization.langs.keys.include? accept_lang
45 if accept_lang and !accept_lang.empty? and GLoc.valid_languages.include? accept_lang.to_sym
46 46 accept_lang
47 47 end
48 48 end
49 49 rescue
50 50 nil
51 51 end || $RDM_DEFAULT_LANG
52
53 set_language_if_valid(Localization.lang)
54
52 set_language_if_valid(lang)
55 53 end
56 54
57 55 def require_login
@@ -38,7 +38,7 class EnumerationsController < ApplicationController
38 38 def create
39 39 @enumeration = Enumeration.new(params[:enumeration])
40 40 if @enumeration.save
41 flash[:notice] = 'Enumeration was successfully created.'
41 flash[:notice] = l(:notice_successful_create)
42 42 redirect_to :action => 'list', :opt => @enumeration.opt
43 43 else
44 44 render :action => 'new'
@@ -52,7 +52,7 class EnumerationsController < ApplicationController
52 52 def update
53 53 @enumeration = Enumeration.find(params[:id])
54 54 if @enumeration.update_attributes(params[:enumeration])
55 flash[:notice] = 'Enumeration was successfully updated.'
55 flash[:notice] = l(:notice_successful_update)
56 56 redirect_to :action => 'list', :opt => @enumeration.opt
57 57 else
58 58 render :action => 'edit'
@@ -60,7 +60,8 class EnumerationsController < ApplicationController
60 60 end
61 61
62 62 def destroy
63 Enumeration.find(params[:id]).destroy
63 Enumeration.find(params[:id]).destroy
64 flash[:notice] = l(:notice_successful_delete)
64 65 redirect_to :action => 'list'
65 66 rescue
66 67 flash[:notice] = "Unable to delete enumeration"
@@ -31,7 +31,7 class HelpController < ApplicationController
31 31 end
32 32 end
33 33 # choose language according to available help translations
34 lang = (@help_config['langs'].include? Localization.lang) ? Localization.lang : @help_config['langs'].first
34 lang = (@help_config['langs'].include? current_language) ? current_language : @help_config['langs'].first
35 35
36 36 if template
37 37 redirect_to "/manual/#{lang}/#{template}"
@@ -227,7 +227,7 class ProjectsController < ApplicationController
227 227 CSV::Writer.generate(export, ',') do |csv|
228 228 csv << %w(Id Status Tracker Subject Author Created Updated)
229 229 @issues.each do |issue|
230 csv << [issue.id, issue.status.name, issue.tracker.name, issue.subject, issue.author.display_name, _('(time)', issue.created_on), _('(time)', issue.updated_on)]
230 csv << [issue.id, issue.status.name, issue.tracker.name, issue.subject, issue.author.display_name, l_datetime(issue.created_on), l_datetime(issue.updated_on)]
231 231 end
232 232 end
233 233 export.rewind
@@ -37,7 +37,7 class RolesController < ApplicationController
37 37 redirect_to :action => 'list'
38 38 end
39 39 end
40 @permissions = Permission.find(:all, :order => 'sort ASC')
40 @permissions = Permission.find(:all, :conditions => ["is_public=?", false], :order => 'sort ASC')
41 41 end
42 42
43 43 def edit
@@ -48,7 +48,7 class RolesController < ApplicationController
48 48 flash[:notice] = 'Role was successfully updated.'
49 49 redirect_to :action => 'list'
50 50 end
51 @permissions = Permission.find(:all, :order => 'sort ASC')
51 @permissions = Permission.find(:all, :conditions => ["is_public=?", false], :order => 'sort ASC')
52 52 end
53 53
54 54 def destroy
@@ -61,8 +61,7 class RolesController < ApplicationController
61 61 redirect_to :action => 'list'
62 62 end
63 63
64 def workflow
65
64 def workflow
66 65 @role = Role.find_by_id(params[:role_id])
67 66 @tracker = Tracker.find_by_id(params[:tracker_id])
68 67
@@ -50,18 +50,18 module ApplicationHelper
50 50 end
51 51
52 52 def format_date(date)
53 _('(date)', date) if date
53 l_date(date) if date
54 54 end
55 55
56 56 def format_time(time)
57 _('(time)', time) if time
57 l_datetime(time) if time
58 58 end
59 59
60 60 def pagination_links_full(paginator, options={}, html_options={})
61 61 html =''
62 html << link_to(('&#171; ' + _('Previous') ), { :page => paginator.current.previous }) + ' ' if paginator.current.previous
62 html << link_to(('&#171; ' + l(:label_previous) ), { :page => paginator.current.previous }) + ' ' if paginator.current.previous
63 63 html << (pagination_links(paginator, options, html_options) || '')
64 html << ' ' + link_to((_('Next') + ' &#187;'), { :page => paginator.current.next }) if paginator.current.next
64 html << ' ' + link_to((l(:label_next) + ' &#187;'), { :page => paginator.current.next }) if paginator.current.next
65 65 html
66 66 end
67 67
@@ -90,4 +90,8 module ApplicationHelper
90 90 ""
91 91 end
92 92 end
93
94 def lang_options_for_select
95 GLoc.valid_languages.collect {|lang| [ l_lang_name(lang.to_s, lang), lang.to_s]}
96 end
93 97 end
@@ -58,42 +58,43 module SearchFilterHelper
58 58
59 59 def search_filter_init_list_issues
60 60 search_filter_criteria('status_id') {
61 [ [_('[Open]'), "O", ["issue_statuses.is_closed=?", false]],
62 [_('[All]'), "A", nil]
61 [ [('['+l(:label_open_issues_plural)+']'), "O", ["issue_statuses.is_closed=?", false]],
62 [('['+l(:label_closed_issues_plural)+']'), "C", ["issue_statuses.is_closed=?", true]],
63 [('['+l(:label_all)+']'), "A", nil]
63 64 ] + IssueStatus.find(:all).collect {|s| [s.name, s.id, ["issues.status_id=?", s.id]] }
64 65 }
65 66
66 67 search_filter_criteria('tracker_id') {
67 [ [_('[All]'), "A", nil]
68 [ [('['+l(:label_all)+']'), "A", nil]
68 69 ] + Tracker.find(:all).collect {|s| [s.name, s.id, ["issues.tracker_id=?", s.id]] }
69 70 }
70 71
71 72 search_filter_criteria('priority_id') {
72 [ [_('[All]'), "A", nil]
73 [ [('['+l(:label_all)+']'), "A", nil]
73 74 ] + Enumeration.find(:all, :conditions => ['opt=?','IPRI']).collect {|s| [s.name, s.id, ["issues.priority_id=?", s.id]] }
74 75 }
75 76
76 77 search_filter_criteria('category_id') {
77 [ [_('[All]'), "A", nil],
78 [_('[None]'), "N", ["issues.category_id is null"]]
78 [ [('['+l(:label_all)+']'), "A", nil],
79 [('['+l(:label_none)+']'), "N", ["issues.category_id is null"]]
79 80 ] + @project.issue_categories.find(:all).collect {|s| [s.name, s.id, ["issues.category_id=?", s.id]] }
80 81 }
81 82
82 83 search_filter_criteria('fixed_version_id') {
83 [ [_('[All]'), "A", nil],
84 [_('[None]'), "N", ["issues.fixed_version_id is null"]]
84 [ [('['+l(:label_all)+']'), "A", nil],
85 [('['+l(:label_none)+']'), "N", ["issues.fixed_version_id is null"]]
85 86 ] + @project.versions.collect {|s| [s.name, s.id, ["issues.fixed_version_id=?", s.id]] }
86 87 }
87 88
88 89 search_filter_criteria('assigned_to_id') {
89 [ [_('[All]'), "A", nil],
90 [_('[None]'), "N", ["issues.assigned_to_id is null"]]
90 [ [('['+l(:label_all)+']'), "A", nil],
91 [('['+l(:label_none)+']'), "N", ["issues.assigned_to_id is null"]]
91 92 ] + @project.users.collect {|s| [s.display_name, s.id, ["issues.assigned_to_id=?", s.id]] }
92 93 }
93 94
94 95 search_filter_criteria('subproject_id') {
95 [ [_('[None]'), "N", ["issues.project_id=?", @project.id]],
96 [_('[All]'), "A", ["(issues.project_id=? or projects.parent_id=?)", @project.id, @project.id]]
96 [ [('['+l(:label_none)+']'), "N", ["issues.project_id=?", @project.id]],
97 [('['+l(:label_all)+']'), "A", ["(issues.project_id=? or projects.parent_id=?)", @project.id, @project.id]]
97 98 ]
98 99 }
99 100 end
@@ -30,7 +30,7 class AuthSourceLdap < AuthSource
30 30 # get user's DN
31 31 ldap_con = initialize_ldap_con(self.account, self.account_password)
32 32 login_filter = Net::LDAP::Filter.eq( self.attr_login, login )
33 object_filter = Net::LDAP::Filter.eq( "objectClass", "organizationalPerson" )
33 object_filter = Net::LDAP::Filter.eq( "objectClass", "*" )
34 34 dn = String.new
35 35 ldap_con.search( :base => self.base_dn,
36 36 :filter => object_filter & login_filter,
@@ -21,18 +21,14 class Enumeration < ActiveRecord::Base
21 21 validates_presence_of :opt, :name
22 22 validates_uniqueness_of :name, :scope => [:opt]
23 23
24 OPTIONS = [
25 ["Issue priorities", "IPRI"],
26 ["Document categories", "DCAT"]
27 ].freeze
24 OPTIONS = {
25 "IPRI" => :enumeration_issue_priorities,
26 "DCAT" => :enumeration_doc_categories
27 }.freeze
28 28
29 29 def self.get_values(option)
30 30 find(:all, :conditions => ['opt=?', option])
31 31 end
32
33 def name
34 _ self.attributes['name']
35 end
36 32
37 33 private
38 34 def check_integrity
@@ -38,10 +38,6 class IssueStatus < ActiveRecord::Base
38 38 statuses
39 39 end
40 40
41 def name
42 _ self.attributes['name']
43 end
44
45 41 private
46 42 def check_integrity
47 43 raise "Can't delete status" if Issue.find(:first, :conditions => ["status_id=?", self.id]) or IssueHistory.find(:first, :conditions => ["status_id=?", self.id])
@@ -45,6 +45,5 class Mailer < ActionMailer::Base
45 45 @from = 'redmine@somenet.foo'
46 46 @subject = "redMine account activation"
47 47 @body['token'] = token
48 end
49
48 end
50 49 end
@@ -16,14 +16,14
16 16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17 17
18 18 class Member < ActiveRecord::Base
19 belongs_to :user
20 belongs_to :role
21 belongs_to :project
22
23 validates_presence_of :role, :user, :project
19 belongs_to :user
20 belongs_to :role
21 belongs_to :project
22
23 validates_presence_of :role, :user, :project
24 24 validates_uniqueness_of :user_id, :scope => :project_id
25
26 def name
27 self.user.display_name
28 end
25
26 def name
27 self.user.display_name
28 end
29 29 end
@@ -16,13 +16,13
16 16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17 17
18 18 class News < ActiveRecord::Base
19 belongs_to :project
20 belongs_to :author, :class_name => 'User', :foreign_key => 'author_id'
21
22 validates_presence_of :title, :description
23
24 # returns last created news
25 def self.latest
26 find(:all, :limit => 5, :include => [ :author, :project ], :order => "news.created_on DESC")
27 end
19 belongs_to :project
20 belongs_to :author, :class_name => 'User', :foreign_key => 'author_id'
21
22 validates_presence_of :title, :description
23
24 # returns last created news
25 def self.latest
26 find(:all, :limit => 5, :include => [ :author, :project ], :order => "news.created_on DESC")
27 end
28 28 end
@@ -16,27 +16,27
16 16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17 17
18 18 class Permission < ActiveRecord::Base
19 has_and_belongs_to_many :roles
20
21 validates_presence_of :controller, :action, :description
22
19 has_and_belongs_to_many :roles
20
21 validates_presence_of :controller, :action, :description
22
23 23 GROUPS = {
24 100 => "Project",
25 200 => "Membres",
26 300 => "Versions",
27 400 => "Issue categories",
28 1000 => "Issues",
29 1100 => "News",
30 1200 => "Documents",
31 1300 => "Files",
32 }.freeze
24 100 => :label_project,
25 200 => :label_member_plural,
26 300 => :label_version_plural,
27 400 => :label_issue_category_plural,
28 1000 => :label_issue_plural,
29 1100 => :label_news_plural,
30 1200 => :label_document_plural,
31 1300 => :label_attachment_plural,
32 }.freeze
33 33
34 34 @@cached_perms_for_public = nil
35 35 @@cached_perms_for_roles = nil
36 36
37 def name
38 self.controller + "/" + self.action
39 end
37 def name
38 self.controller + "/" + self.action
39 end
40 40
41 41 def group_id
42 42 (self.sort / 100)*100
@@ -17,13 +17,13
17 17
18 18 class Role < ActiveRecord::Base
19 19 before_destroy :check_integrity
20 has_and_belongs_to_many :permissions
20 has_and_belongs_to_many :permissions
21 21 has_many :workflows, :dependent => true
22 22 has_many :members
23
24 validates_presence_of :name
25 validates_uniqueness_of :name
26
23
24 validates_presence_of :name
25 validates_uniqueness_of :name
26
27 27 private
28 28 def check_integrity
29 29 raise "Can't delete role" if Member.find(:first, :conditions =>["role_id=?", self.id])
@@ -24,10 +24,6 class Tracker < ActiveRecord::Base
24 24 validates_presence_of :name
25 25 validates_uniqueness_of :name
26 26
27 def name
28 _ self.attributes['name']
29 end
30
31 27 private
32 28 def check_integrity
33 29 raise "Can't delete tracker" if Issue.find(:first, :conditions => ["tracker_id=?", self.id])
@@ -57,7 +57,7 class User < ActiveRecord::Base
57 57 # user has an external authentication method
58 58 return nil unless user.auth_source.authenticate(login, password)
59 59 else
60 # local authentication
60 # authentication with local password
61 61 return nil unless User.hash_password(password) == user.hashed_password
62 62 end
63 63 else
@@ -69,6 +69,7 class User < ActiveRecord::Base
69 69 onthefly.language = $RDM_DEFAULT_LANG
70 70 if onthefly.save
71 71 user = find(:first, :conditions => ["login=?", login])
72 logger.info("User '#{user.login}' created on the fly.") if logger
72 73 end
73 74 end
74 75 end
@@ -23,7 +23,7
23 23 <%= text_field 'user', 'mail' %></p>
24 24
25 25 <p><label for="user_language"><%=l(:field_language)%></label><br/>
26 <%= select("user", "language", Localization.langs.invert) %></p>
26 <%= select("user", "language", lang_options_for_select) %></p>
27 27 <!--[eoform:user]-->
28 28
29 29 <p><%= check_box 'user', 'mail_notification' %> <label for="user_mail_notification"><%=l(:field_mail_notification)%></label></p>
@@ -34,7 +34,8
34 34 </div>
35 35
36 36
37 <div class="splitcontentright">
37 <div class="splitcontentright">
38 <% unless @user.auth_source_id %>
38 39 <div class="box">
39 40 <h3><%=l(:field_password)%></h3>
40 41 &nbsp;
@@ -51,5 +52,6
51 52
52 53 <center><%= submit_tag l(:button_save) %></center>
53 54 <%= end_form_tag %>
54 </div>
55 </div>
56 <% end %>
55 57 </div> No newline at end of file
@@ -1,7 +1,6
1 1 <h2><%=l(:label_register)%></h2>
2 2
3 3 <%= start_form_tag %>
4
5 4 <%= error_messages_for 'user' %>
6 5
7 6 <div class="box">
@@ -25,22 +24,15
25 24 <%= text_field 'user', 'mail' %></p>
26 25
27 26 <p><label for="user_language"><%=l(:field_language)%></label><br/>
28 <%= select("user", "language", Localization.langs.invert) %></p>
27 <%= select("user", "language", lang_options_for_select) %></p>
29 28
30 <% for custom_value in @custom_values %>
31 <div style="float:left;margin-right:10px;">
32 <p><%= content_tag "label", custom_value.custom_field.name %>
33 <% if custom_value.custom_field.is_required? %><span class="required">*</span><% end %>
34 <br />
35 <%= custom_field_tag custom_value %></p>
36 </div>
29 <% for custom_value in @custom_values %>
30 <p><%= custom_field_tag_with_label custom_value %></p>
37 31 <% end %>
38 32
39 <div style="clear: both;"></div>
40
41 33 <p><%= check_box 'user', 'mail_notification' %> <label for="user_mail_notification"><%=l(:field_mail_notification)%></label></p>
42 34 <!--[eoform:user]-->
43 35 </div>
44 36
45 <%= submit_tag l(:button_submit) %>
37 <%= submit_tag l(:button_submit) %>
46 38 <%= end_form_tag %>
@@ -1,4 +1,4
1 <h2><%=_('Information')%></h2>
1 <h2><%=l(:label_information_plural)%></h2>
2 2
3 3 <p><%=l(:field_version)%>: <strong><%= RDM_APP_NAME %> <%= RDM_APP_VERSION %></strong></p>
4 4
@@ -7,7 +7,7
7 7 <th><%=l(:field_field_format)%></th>
8 8 <th><%=l(:field_is_required)%></th>
9 9 <th><%=l(:field_is_for_all)%></th>
10 <th><%=_('Used by')%></th>
10 <th><%=l(:label_used_by)%></th>
11 11 <th></th>
12 12 </tr>
13 13 <% for custom_field in @custom_fields %>
@@ -9,7 +9,7
9 9 <p><label for="document_title"><%=l(:field_title)%> <span class="required">*</span></label><br />
10 10 <%= text_field 'document', 'title', :size => 60 %></p>
11 11
12 <p><label for="document_description"><%=l(:field_description)%> <span class="required">*</span></label><br />
12 <p><label for="document_description"><%=l(:field_description)%></label><br />
13 13 <%= text_area 'document', 'description', :cols => 60, :rows => 5 %></p>
14 14 <!--[eoform:document]-->
15 15
@@ -1,8 +1,8
1 <h2><%=_('Document')%></h2>
1 <h2><%=l(:label_document)%></h2>
2 2
3 3 <%= start_form_tag :action => 'edit', :id => @document %>
4 4 <%= render :partial => 'form' %>
5 <%= submit_tag _('Save') %>
5 <%= submit_tag l(:button_save) %>
6 6 <%= end_form_tag %>
7 7
8 8
@@ -1,18 +1,18
1 1 <h2><%= @document.title %></h2>
2 2
3 <strong><%=_('Description')%>:</strong> <%= @document.description %><br />
4 <strong><%=_('Category')%>:</strong> <%= @document.category.name %><br />
3 <strong><%=l(:field_description)%>:</strong> <%= @document.description %><br />
4 <strong><%=l(:field_category)%>:</strong> <%= @document.category.name %><br />
5 5 <br />
6 6
7 7 <% if authorize_for('documents', 'edit') %>
8 <%= start_form_tag ({ :controller => 'documents', :action => 'edit', :id => @document }, :method => 'get' ) %>
9 <%= submit_tag _('Edit') %>
8 <%= start_form_tag({ :controller => 'documents', :action => 'edit', :id => @document }, :method => 'get' ) %>
9 <%= submit_tag l(:button_edit) %>
10 10 <%= end_form_tag %>
11 11 <% end %>
12 12
13 13 <% if authorize_for('documents', 'destroy') %>
14 <%= start_form_tag ({ :controller => 'documents', :action => 'destroy', :id => @document } ) %>
15 <%= submit_tag _('Delete') %>
14 <%= start_form_tag({ :controller => 'documents', :action => 'destroy', :id => @document } ) %>
15 <%= submit_tag l(:button_delete) %>
16 16 <%= end_form_tag %>
17 17 <% end %>
18 18
@@ -24,12 +24,12
24 24 <td><%= link_to attachment.filename, :action => 'download', :id => @document, :attachment_id => attachment %></td>
25 25 <td align="center"><%= format_date(attachment.created_on) %></td>
26 26 <td align="center"><%= attachment.author.display_name %></td>
27 <td><%= human_size(attachment.filesize) %><br /><%= attachment.downloads %> <%=_('download')%>(s)</td>
27 <td><%= human_size(attachment.filesize) %><br /><%= lwr(:label_download, attachment.downloads) %></td>
28 28
29 29 <% if authorize_for('documents', 'destroy_attachment') %>
30 30 <td align="center">
31 31 <%= start_form_tag :action => 'destroy_attachment', :id => @document, :attachment_id => attachment %>
32 <%= submit_tag _('Delete'), :class => "button-small" %>
32 <%= submit_tag l(:button_delete), :class => "button-small" %>
33 33 <%= end_form_tag %>
34 34 </tr>
35 35 <% end %>
@@ -40,8 +40,8
40 40
41 41 <% if authorize_for('documents', 'add_attachment') %>
42 42 <%= start_form_tag ({ :controller => 'documents', :action => 'add_attachment', :id => @document }, :multipart => true) %>
43 <%=_('Add file')%><br /><%= file_field 'attachment', 'file' %>
44 <%= submit_tag _('Add') %>
43 <%=l(:label_attachment_new)%><br /><%= file_field 'attachment', 'file' %>
44 <%= submit_tag l(:button_add) %>
45 45 <%= end_form_tag %>
46 46 <% end %>
47 47
@@ -3,7 +3,7
3 3 <!--[form:optvalue]-->
4 4 <%= hidden_field 'enumeration', 'opt' %>
5 5
6 <p><label for="enumeration_name"><%=_('Name')%></label><br/>
6 <p><label for="enumeration_name"><%=l(:field_name)%></label><br/>
7 7 <%= text_field 'enumeration', 'name' %></p>
8 8 <!--[eoform:optvalue]-->
9 9
@@ -1,10 +1,10
1 <h2><%=_('Enumerations')%></h2>
1 <h2><%=l(:label_enumerations)%></h2>
2 2
3 3 <%= start_form_tag :action => 'update', :id => @enumeration %>
4 4 <%= render :partial => 'form' %>
5 <%= submit_tag _('Save') %>
5 <%= submit_tag l(:button_save) %>
6 6 <%= end_form_tag %>
7 7
8 8 <%= start_form_tag :action => 'destroy', :id => @enumeration %>
9 <%= submit_tag _('Delete') %>
9 <%= submit_tag l(:button_delete) %>
10 10 <%= end_form_tag %> No newline at end of file
@@ -1,22 +1,21
1 <h2><%=_('Enumerations')%></h2>
1 <h2><%=l(:label_enumerations)%></h2>
2 2
3 <% for option in Enumeration::OPTIONS %>
3 <% Enumeration::OPTIONS.each do |option, name| %>
4 4
5 <% if @params[:opt]==option[1] %>
5 <% if @params[:opt]==option %>
6 6
7 <p><%= image_tag 'dir_open' %> <b><%=_ option[0] %></b></p>
7 <p><%= image_tag 'dir_open' %> <b><%= l(name) %></b></p>
8 8 <ul>
9 <% for value in Enumeration::find(:all, :conditions => [ "opt = ?", option[1]]) %>
9 <% for value in Enumeration.find(:all, :conditions => ["opt = ?", option]) %>
10 10 <li><%= link_to value.name, :action => 'edit', :id => value %></li>
11 11 <% end %>
12 12 </ul>
13 13 <ul>
14 <li><%= link_to ('&#187; ' + _('New')), :action => 'new', :opt => option[1] %></li>
14 <li><%= link_to ('&#187; ' + l(:label_new)), :action => 'new', :opt => option %></li>
15 15 </ul>
16 16
17 17 <% else %>
18 <p><%= image_tag 'dir' %> <%= link_to _(option[0]), :opt => option[1] %></p>
18 <p><%= image_tag 'dir' %> <%= link_to l(name), :opt => option %></p>
19 19 <% end %>
20 20
21 <% end %>
22
21 <% end %> No newline at end of file
@@ -1,6 +1,6
1 <h2><%=_('New enumeration')%></h2>
1 <h2><%=l(:label_enumeration_new)%></h2>
2 2
3 3 <%= start_form_tag :action => 'create' %>
4 4 <%= render :partial => 'form' %>
5 <%= submit_tag _('Create') %>
5 <%= submit_tag l(:button_create) %>
6 6 <%= end_form_tag %>
@@ -1,7 +1,7
1 1 <%= error_messages_for 'issue_category' %>
2 2
3 3 <!--[form:issue_category]-->
4 <p><label for="issue_category_name"><%=_('Name')%></label><br/>
4 <p><label for="issue_category_name"><%l(:field_name)%></label><br/>
5 5 <%= text_field 'issue_category', 'name' %></p>
6 6 <!--[eoform:issue_category]-->
7 7
@@ -1,6 +1,6
1 <h2>Editing issue category</h2>
1 <h2><%=l(:label_issue_category)%></h2>
2 2
3 3 <%= start_form_tag :action => 'edit', :id => @category %>
4 4 <%= render :partial => 'form' %>
5 <%= submit_tag _('Save') %>
5 <%= submit_tag l(:button_save) %>
6 6 <%= end_form_tag %>
@@ -1,16 +1,16
1 1 <%= error_messages_for 'issue_status' %>
2 2
3 3 <!--[form:issue_status]-->
4 <p><label for="issue_status_name"><%=_('Name')%></label> <span class="required">*</span><br/>
4 <p><label for="issue_status_name"><%=l(:field_name)%></label> <span class="required">*</span><br/>
5 5 <%= text_field 'issue_status', 'name' %></p>
6 6
7 7 <p><%= check_box 'issue_status', 'is_closed' %>
8 <label for="issue_status_is_closed"><%=_('Issue closed')%></label></p>
8 <label for="issue_status_is_closed"><%=l(:field_is_closed)%></label></p>
9 9
10 10 <p><%= check_box 'issue_status', 'is_default' %>
11 <label for="issue_status_is_default"><%=_('Default status')%></label></p>
11 <label for="issue_status_is_default"><%=l(:field_is_default)%></label></p>
12 12
13 <p><label for="issue_status_html_color"><%=_('Color')%></label>
13 <p><label for="issue_status_html_color"><%=l(:field_html_color)%></label>
14 14 #<%= text_field 'issue_status', 'html_color', :maxlength => 6 %> <span class="required">*</span></p>
15 15
16 16 <!--[eoform:issue_status]-->
@@ -1,6 +1,6
1 <h2><%=_('Issue status')%></h2>
1 <h2><%=l(:label_issue_status)%></h2>
2 2
3 3 <%= start_form_tag :action => 'update', :id => @issue_status %>
4 4 <%= render :partial => 'form' %>
5 <%= submit_tag _('Save') %>
5 <%= submit_tag l(:button_save) %>
6 6 <%= end_form_tag %>
@@ -1,11 +1,11
1 <h2><%=_('Issue statuses')%></h2>
1 <h2><%=l(:label_issue_status_plural)%></h2>
2 2
3 3 <table border="0" cellspacing="1" cellpadding="2" class="listTableContent">
4 4 <tr class="ListHead">
5 <th><%=_('Status')%></th>
6 <th><%=_('Default status')%></th>
7 <th><%=_('Issue closed')%></th>
8 <th><%=_('Color')%></th>
5 <th><%=l(:field_status)%></th>
6 <th><%=l(:field_is_default)%></th>
7 <th><%=l(:field_is_closed)%></th>
8 <th><%=l(:field_html_color)%></th>
9 9 <th></th>
10 10 </tr>
11 11
@@ -17,7 +17,7
17 17 <td bgcolor="#<%= status.html_color %>">&nbsp</td>
18 18 <td align="center">
19 19 <%= start_form_tag :action => 'destroy', :id => status %>
20 <%= submit_tag _('Delete'), :class => "button-small" %>
20 <%= submit_tag l(:button_delete), :class => "button-small" %>
21 21 <%= end_form_tag %>
22 22 </td>
23 23 </tr>
@@ -27,4 +27,4
27 27 <%= pagination_links_full @issue_status_pages %>
28 28 <br />
29 29
30 <%= link_to '&#187; ' + _('New issue status'), :action => 'new' %>
30 <%= link_to '&#187; ' + l(:label_issue_status_new), :action => 'new' %>
@@ -1,6 +1,6
1 <h2><%=_('New issue status')%></h2>
1 <h2><%=l(:label_issue_status_new)%></h2>
2 2
3 3 <%= start_form_tag :action => 'create' %>
4 4 <%= render :partial => 'form' %>
5 <%= submit_tag _('Create') %>
5 <%= submit_tag l(:button_create) %>
6 6 <%= end_form_tag %>
@@ -1,28 +1,28
1 1 <% if issues.length > 0 %>
2 <table cellspacing="0" cellpadding="1" width="100%" border="0" class="listTable">
3 <tr><td>
4 <table width="100%" border="0" cellspacing="1" cellpadding="2" class="listTableContent">
5 <tr class="ListHead">
6 <th>#</th>
7 <th><%=_('Tracker')%></th>
8 <th><%=_('Subject')%></th>
9 </tr>
10 <% for issue in issues %>
11 <tr bgcolor="#<%= issue.status.html_color %>">
12 <td align="center">
13 <%= link_to issue.id, :controller => 'issues', :action => 'show', :id => issue %><br />
14 </td>
15 <td><p class="small"><%= issue.project.name %> - <%= issue.tracker.name %><br />
16 <%= issue.status.name %> - <%= format_time(issue.updated_on) %></p></td>
17 <td>
18 <p class="small"><%= link_to issue.subject, :controller => 'issues', :action => 'show', :id => issue %></p>
19 </td>
20 </tr>
21 <% end %>
22 </table>
23 </td>
2 <table cellspacing="0" cellpadding="1" width="100%" border="0" class="listTable">
3 <tr><td>
4 <table width="100%" border="0" cellspacing="1" cellpadding="2" class="listTableContent">
5 <tr class="ListHead">
6 <th>#</th>
7 <th><%=l(:field_tracker)%></th>
8 <th><%=l(:field_subject)%></th>
24 9 </tr>
25 </table>
10 <% for issue in issues %>
11 <tr bgcolor="#<%= issue.status.html_color %>">
12 <td align="center">
13 <%= link_to issue.id, :controller => 'issues', :action => 'show', :id => issue %><br />
14 </td>
15 <td><p class="small"><%= issue.project.name %> - <%= issue.tracker.name %><br />
16 <%= issue.status.name %> - <%= format_time(issue.updated_on) %></p></td>
17 <td>
18 <p class="small"><%= link_to issue.subject, :controller => 'issues', :action => 'show', :id => issue %></p>
19 </td>
20 </tr>
21 <% end %>
22 </table>
23 </td>
24 </tr>
25 </table>
26 26 <% else %>
27 <%=_('No issue')%>
27 <i><%=l(:label_no_data)%></i>
28 28 <% end %> No newline at end of file
@@ -1,4 +1,4
1 <h2><%=_('Issue')%> #<%= @issue.id %>: <%= @issue.subject %></h2>
1 <h2><%=l(:label_issue)%> #<%= @issue.id %>: <%= @issue.subject %></h2>
2 2
3 3 <%= error_messages_for 'history' %>
4 4 <%= start_form_tag :action => 'change_status', :id => @issue %>
@@ -7,26 +7,25
7 7 <%= hidden_field 'history', 'status_id' %>
8 8
9 9 <div class="box">
10 <p><%=_('New status')%>: <b><%= @history.status.name %></b></p>
10 <p><%=l(:label_issue_status_new)%>: <b><%= @history.status.name %></b></p>
11 11
12 12 <div>
13 <p><label for="issue_assigned_to_id"><%=_('Assigned to')%></label><br/>
13 <p><label for="issue_assigned_to_id"><%=l(:field_assigned_to)%></label><br/>
14 14 <select name="issue[assigned_to_id]">
15 15 <option value=""></option>
16 16 <%= options_from_collection_for_select @assignable_to, "id", "display_name", @issue.assigned_to_id %></p>
17 17 </select></p>
18 18 </div>
19 19
20 <p><label for="issue_fixed_version"><%=_('Fixed in version')%></label><br/>
20 <p><label for="issue_fixed_version"><%=l(:field_fixed_version)%></label><br/>
21 21 <select name="issue[fixed_version_id]">
22 22 <option value="">--none--</option>
23 23 <%= options_from_collection_for_select @issue.project.versions, "id", "name", @issue.fixed_version_id %>
24 24 </select></p>
25 25
26 <p><label for="history_notes"><%=_('Notes')%></label><br />
26 <p><label for="history_notes"><%=l(:field_notes)%></label><br />
27 27 <%= text_area 'history', 'notes', :cols => 60, :rows => 10 %></p>
28 28 </div>
29
30 29
31 <%= submit_tag _('Save') %>
30 <%= submit_tag l(:button_save) %>
32 31 <%= end_form_tag %>
@@ -1,21 +1,21
1 <h2><%=_@issue.tracker.name%> #<%= @issue.id %> - <%= @issue.subject %></h2>
1 <h2><%= @issue.tracker.name %> #<%= @issue.id %> - <%= @issue.subject %></h2>
2 2
3 3 <%= error_messages_for 'issue' %>
4 4 <%= start_form_tag :action => 'edit', :id => @issue %>
5 5
6 6 <div class="box">
7 7 <!--[form:issue]-->
8 <p><%=_('Status')%>: <b><%= @issue.status.name %></b></p>
8 <p><%=l(:field_status)%>: <b><%= @issue.status.name %></b></p>
9 9
10 10 <div style="float:left;margin-right:10px;">
11 <p><label for="issue_priority_id"><%=_('Priority')%> <span class="required">*</span></label><br/>
11 <p><label for="issue_priority_id"><%=l(:field_priority)%> <span class="required">*</span></label><br/>
12 12 <select name="issue[priority_id]">
13 13 <%= options_from_collection_for_select @priorities, "id", "name", @issue.priority_id %></p>
14 14 </select></p>
15 15 </div>
16 16
17 17 <div style="float:left;margin-right:10px;">
18 <p><label for="issue_assigned_to_id"><%=_('Assigned to')%></label><br/>
18 <p><label for="issue_assigned_to_id"><%=l(:field_assigned_to)%></label><br/>
19 19 <select name="issue[assigned_to_id]">
20 20 <option value=""></option>
21 21 <%= options_from_collection_for_select @issue.project.members, "user_id", "name", @issue.assigned_to_id %></p>
@@ -23,24 +23,27
23 23 </div>
24 24
25 25 <div>
26 <p><label for="issue_category_id"><%=_('Category')%></label><br/>
26 <p><label for="issue_category_id"><%=l(:field_category)%></label><br/>
27 27 <select name="issue[category_id]">
28 28 <option value=""></option>
29 29 <%= options_from_collection_for_select @project.issue_categories, "id", "name", @issue.category_id %></p>
30 30 </select></p>
31 31 </div>
32 32
33 <p><label for="issue_subject"><%=_('Subject')%></label><span class="required">*</span><br/>
33 <p><label for="issue_subject"><%=l(:field_subject)%></label><span class="required">*</span><br/>
34 34 <%= text_field 'issue', 'subject', :size => 60 %></p>
35 35
36 <p><label for="issue_description"><%=_('Description')%></label><span class="required">*</span><br/>
36 <p><label for="issue_description"><%=l(:field_description)%></label><span class="required">*</span><br/>
37 37 <%= text_area 'issue', 'description', :cols => 60, :rows => 10 %></p>
38
39 <p><label for="issue_due_date"><%=l(:field_due_date)%></label><br />
40 <%= date_select 'issue', 'due_date', :start_year => Date.today.year, :include_blank => true %></p>
38 41
39 42 <% for custom_value in @custom_values %>
40 43 <p><%= custom_field_tag_with_label custom_value %></p>
41 44 <% end %>
42 45
43 <p><label for="issue_fixed_version"><%=_('Fixed in version')%></label><br/>
46 <p><label for="issue_fixed_version"><%=l(:field_fixed_version)%></label><br/>
44 47 <select name="issue[fixed_version_id]">
45 48 <option value="">--none--</option>
46 49 <%= options_from_collection_for_select @project.versions, "id", "name", @issue.fixed_version_id %>
@@ -49,5 +52,5
49 52 <!--[eoform:issue]-->
50 53 </div>
51 54
52 <%= submit_tag _('Save') %>
55 <%= submit_tag l(:button_save) %>
53 56 <%= end_form_tag %>
@@ -1,42 +1,43
1
2 <h2><%=_(@issue.tracker.name)%> #<%= @issue.id %> - <%= @issue.subject %></h2>
1 <h2><%= @issue.tracker.name %> #<%= @issue.id %> - <%= @issue.subject %></h2>
3 2
4 3 <div class="box">
5 <p><b><%=_('Status')%>:</b> <%= @issue.status.name %></p>
6 <p><b><%=_('Priority')%>:</b> <%= @issue.priority.name %></p>
7 <p><b><%=_('Category')%>:</b> <%= @issue.category.name unless @issue.category_id.nil? %></p>
8 <p><b><%=_('Author')%>:</b> <%= @issue.author.display_name %></p>
9 <p><b><%=_('Assigned to')%>:</b> <%= @issue.assigned_to.display_name unless @issue.assigned_to.nil? %></p>
10
11 <p><b><%=_('Subject')%>:</b> <%= @issue.subject %></p>
12 <p><b><%=_('Description')%>:</b> <%= simple_format auto_link @issue.description %></p>
13 <p><b><%=_('Created on')%>:</b> <%= format_date(@issue.created_on) %></p>
4 <p>
5 <b><%=l(:field_status)%> :</b> <%= @issue.status.name %> &nbsp &nbsp
6 <b><%=l(:field_priority)%> :</b> <%= @issue.priority.name %> &nbsp &nbsp
7 <b><%=l(:field_assigned_to)%> :</b> <%= @issue.assigned_to ? @issue.assigned_to.display_name : "-" %> &nbsp &nbsp
8 <b><%=l(:field_category)%> :</b> <%= @issue.category ? @issue.category.name : "-" %>
9 </p>
10 <p><b><%=l(:field_author)%> :</b> <%= @issue.author.display_name %></p>
11 <p><b><%=l(:field_subject)%> :</b> <%= @issue.subject %></p>
12 <p><b><%=l(:field_description)%> :</b> <%= simple_format auto_link @issue.description %></p>
13 <p><b><%=l(:field_due_date)%> :</b> <%= format_date(@issue.due_date) %></p>
14 <p><b><%=l(:field_created_on)%> :</b> <%= format_date(@issue.created_on) %></p>
14 15
15 16 <% for custom_value in @custom_values %>
16 <p><b><%= custom_value.custom_field.name %></b>: <%= show_value custom_value %></p>
17 <p><b><%= custom_value.custom_field.name %></b> : <%= show_value custom_value %></p>
17 18 <% end %>
18 19
19 20 <% if authorize_for('issues', 'edit') %>
20 21 <%= start_form_tag ({:controller => 'issues', :action => 'edit', :id => @issue}, :method => "get" ) %>
21 <%= submit_tag _('Edit') %>
22 <%= submit_tag l(:button_edit) %>
22 23 <%= end_form_tag %>
23 24 &nbsp;&nbsp;
24 25 <% end %>
25 26
26 27 <% if authorize_for('issues', 'change_status') and @status_options and !@status_options.empty? %>
27 28 <%= start_form_tag ({:controller => 'issues', :action => 'change_status', :id => @issue}) %>
28 <label for="history_status_id"><%=_('Change status')%>:</label>
29 <label for="history_status_id"><%=l(:label_change_status)%> :</label>
29 30 <select name="history[status_id]">
30 31 <%= options_from_collection_for_select @status_options, "id", "name" %>
31 32 </select>
32 <%= submit_tag _ "Update..." %>
33 <%= submit_tag l(:button_change) %>
33 34 <%= end_form_tag %>
34 35 &nbsp;&nbsp;
35 36 <% end %>
36 37
37 38 <% if authorize_for('issues', 'destroy') %>
38 39 <%= start_form_tag ({:controller => 'issues', :action => 'destroy', :id => @issue} ) %>
39 <%= submit_tag _ "Delete" %>
40 <%= submit_tag l(:button_delete) %>
40 41 <%= end_form_tag %>
41 42 &nbsp;&nbsp;
42 43 <% end %>
@@ -46,7 +47,7
46 47
47 48 <div class="splitcontentleft">
48 49 <div class="box">
49 <h3><%=_('History')%></h3>
50 <h3><%=l(:label_history)%></h3>
50 51 <table width="100%">
51 52 <% for history in @issue.histories.find(:all, :include => :author) %>
52 53 <tr>
@@ -64,7 +65,7
64 65
65 66 <div class="splitcontentright">
66 67 <div class="box">
67 <h3><%=_('Attachments')%></h3>
68 <h3><%=l(:label_attachment_plural)%></h3>
68 69 <table width="100%">
69 70 <% for attachment in @issue.attachments %>
70 71 <tr>
@@ -74,7 +75,7
74 75 <% if authorize_for('issues', 'destroy_attachment') %>
75 76 <td>
76 77 <%= start_form_tag :action => 'destroy_attachment', :id => @issue, :attachment_id => attachment %>
77 <%= submit_tag _('Delete'), :class => "button-small" %>
78 <%= submit_tag l(:button_delete), :class => "button-small" %>
78 79 <%= end_form_tag %>
79 80 </td>
80 81 <% end %>
@@ -84,8 +85,8
84 85 <br />
85 86 <% if authorize_for('issues', 'add_attachment') %>
86 87 <%= start_form_tag ({ :controller => 'issues', :action => 'add_attachment', :id => @issue }, :multipart => true) %>
87 <%=_('Add file')%>: <%= file_field 'attachment', 'file' %>
88 <%= submit_tag _('Add') %>
88 <%=l(:label_attachment_new)%>: <%= file_field 'attachment', 'file' %>
89 <%= submit_tag l(:button_add) %>
89 90 <%= end_form_tag %>
90 91 <% end %>
91 92 </div>
@@ -14,33 +14,33
14 14 <script type='text/javascript'>
15 15 var menu_contenu=' \
16 16 <div id="menuAdmin" class="menu" onmouseover="menuMouseover(event)"> \
17 <a class="menuItem" href="\/admin\/projects" onmouseover="menuItemMouseover(event,\'menuProjects\');"><span class="menuItemText"><%=_('Projects')%><\/span><span class="menuItemArrow">&#9654;<\/span><\/a> \
18 <a class="menuItem" href="\/users" onmouseover="menuItemMouseover(event,\'menuUsers\');"><span class="menuItemText"><%=_('Users')%><\/span><span class="menuItemArrow">&#9654;<\/span><\/a> \
19 <a class="menuItem" href="\/roles"><%=_('Roles and permissions')%><\/a> \
20 <a class="menuItem" href="\/trackers" onmouseover="menuItemMouseover(event,\'menuTrackers\');"><span class="menuItemText"><%=_('Trackers')%><\/span><span class="menuItemArrow">&#9654;<\/span><\/a> \
21 <a class="menuItem" href="\/custom_fields"><%=_('Custom fields')%><\/a> \
22 <a class="menuItem" href="\/enumerations"><%=_('Enumerations')%><\/a> \
23 <a class="menuItem" href="\/admin\/mail_options"><%=_('Mail notifications')%><\/a> \
17 <a class="menuItem" href="\/admin\/projects" onmouseover="menuItemMouseover(event,\'menuProjects\');"><span class="menuItemText"><%=l(:label_project_plural)%><\/span><span class="menuItemArrow">&#9654;<\/span><\/a> \
18 <a class="menuItem" href="\/users" onmouseover="menuItemMouseover(event,\'menuUsers\');"><span class="menuItemText"><%=l(:label_user_plural)%><\/span><span class="menuItemArrow">&#9654;<\/span><\/a> \
19 <a class="menuItem" href="\/roles"><%=l(:label_role_and_permissions)%><\/a> \
20 <a class="menuItem" href="\/trackers" onmouseover="menuItemMouseover(event,\'menuTrackers\');"><span class="menuItemText"><%=l(:label_tracker_plural)%><\/span><span class="menuItemArrow">&#9654;<\/span><\/a> \
21 <a class="menuItem" href="\/custom_fields"><%=l(:label_custom_field_plural)%><\/a> \
22 <a class="menuItem" href="\/enumerations"><%=l(:label_enumerations)%><\/a> \
23 <a class="menuItem" href="\/admin\/mail_options"><%=l(:field_mail_notification)%><\/a> \
24 24 <a class="menuItem" href="\/auth_sources"><%=l(:label_authentication)%><\/a> \
25 <a class="menuItem" href="\/admin\/info"><%=_('Information')%><\/a> \
25 <a class="menuItem" href="\/admin\/info"><%=l(:label_information_plural)%><\/a> \
26 26 <\/div> \
27 27 <div id="menuTrackers" class="menu"> \
28 <a class="menuItem" href="\/issue_statuses"><%=_('Issue Statuses')%><\/a> \
29 <a class="menuItem" href="\/roles\/workflow"><%=_('Workflow')%><\/a> \
28 <a class="menuItem" href="\/issue_statuses"><%=l(:label_issue_status_plural)%><\/a> \
29 <a class="menuItem" href="\/roles\/workflow"><%=l(:label_workflow)%><\/a> \
30 30 <\/div> \
31 <div id="menuProjects" class="menu"><a class="menuItem" href="\/projects\/add"><%=_('New')%><\/a><\/div> \
32 <div id="menuUsers" class="menu"><a class="menuItem" href="\/users\/add"><%=_('New')%><\/a><\/div> \
31 <div id="menuProjects" class="menu"><a class="menuItem" href="\/projects\/add"><%=l(:label_new)%><\/a><\/div> \
32 <div id="menuUsers" class="menu"><a class="menuItem" href="\/users\/add"><%=l(:label_new)%><\/a><\/div> \
33 33 \
34 34 <% unless @project.nil? || @project.id.nil? %> \
35 35 <div id="menuProject" class="menu" onmouseover="menuMouseover(event)"> \
36 <%= link_to _('Issues'), {:controller => 'projects', :action => 'list_issues', :id => @project }, :class => "menuItem" %> \
37 <%= link_to _('Reports'), {:controller => 'reports', :action => 'issue_report', :id => @project }, :class => "menuItem" %> \
38 <%= link_to _('News'), {:controller => 'projects', :action => 'list_news', :id => @project }, :class => "menuItem" %> \
39 <%= link_to _('Change log'), {:controller => 'projects', :action => 'changelog', :id => @project }, :class => "menuItem" %> \
40 <%= link_to _('Documents'), {:controller => 'projects', :action => 'list_documents', :id => @project }, :class => "menuItem" %> \
41 <%= link_to _('Members'), {:controller => 'projects', :action => 'list_members', :id => @project }, :class => "menuItem" %> \
42 <%= link_to _('Files'), {:controller => 'projects', :action => 'list_files', :id => @project }, :class => "menuItem" %> \
43 <%= link_to_if_authorized _('Settings'), {:controller => 'projects', :action => 'settings', :id => @project }, :class => "menuItem" %> \
36 <%= link_to l(:label_issue_plural), {:controller => 'projects', :action => 'list_issues', :id => @project }, :class => "menuItem" %> \
37 <%= link_to l(:label_report_plural), {:controller => 'reports', :action => 'issue_report', :id => @project }, :class => "menuItem" %> \
38 <%= link_to l(:label_news_plural), {:controller => 'projects', :action => 'list_news', :id => @project }, :class => "menuItem" %> \
39 <%= link_to l(:label_change_log), {:controller => 'projects', :action => 'changelog', :id => @project }, :class => "menuItem" %> \
40 <%= link_to l(:label_document_plural), {:controller => 'projects', :action => 'list_documents', :id => @project }, :class => "menuItem" %> \
41 <%= link_to l(:label_member_plural), {:controller => 'projects', :action => 'list_members', :id => @project }, :class => "menuItem" %> \
42 <%= link_to l(:label_attachment_plural), {:controller => 'projects', :action => 'list_files', :id => @project }, :class => "menuItem" %> \
43 <%= link_to_if_authorized l(:label_settings), {:controller => 'projects', :action => 'settings', :id => @project }, :class => "menuItem" %> \
44 44 <\/div> \
45 45 <% end %> \
46 46 ';
@@ -95,20 +95,20 var menu_contenu=' \
95 95 <% unless @project.nil? || @project.id.nil? %>
96 96 <h2><%= @project.name %></h2>
97 97 <ul class="menublock">
98 <li><%= link_to _('Overview'), :controller => 'projects', :action => 'show', :id => @project %></li>
99 <li><%= link_to _('Issues'), :controller => 'projects', :action => 'list_issues', :id => @project %></li>
100 <li><%= link_to _('Reports'), :controller => 'reports', :action => 'issue_report', :id => @project %></li>
101 <li><%= link_to _('News'), :controller => 'projects', :action => 'list_news', :id => @project %></li>
102 <li><%= link_to _('Change log'), :controller => 'projects', :action => 'changelog', :id => @project %></li>
103 <li><%= link_to _('Documents'), :controller => 'projects', :action => 'list_documents', :id => @project %></li>
104 <li><%= link_to _('Members'), :controller => 'projects', :action => 'list_members', :id => @project %></li>
105 <li><%= link_to _('Files'), :controller => 'projects', :action => 'list_files', :id => @project %></li>
106 <li><%= link_to_if_authorized _('Settings'), :controller => 'projects', :action => 'settings', :id => @project %></li>
98 <li><%= link_to l(:label_overview), :controller => 'projects', :action => 'show', :id => @project %></li>
99 <li><%= link_to l(:label_issue_plural), :controller => 'projects', :action => 'list_issues', :id => @project %></li>
100 <li><%= link_to l(:label_report_plural), :controller => 'reports', :action => 'issue_report', :id => @project %></li>
101 <li><%= link_to l(:label_news_plural), :controller => 'projects', :action => 'list_news', :id => @project %></li>
102 <li><%= link_to l(:label_change_log), :controller => 'projects', :action => 'changelog', :id => @project %></li>
103 <li><%= link_to l(:label_document_plural), :controller => 'projects', :action => 'list_documents', :id => @project %></li>
104 <li><%= link_to l(:label_member_plural), :controller => 'projects', :action => 'list_members', :id => @project %></li>
105 <li><%= link_to l(:label_attachment_plural), :controller => 'projects', :action => 'list_files', :id => @project %></li>
106 <li><%= link_to_if_authorized l(:label_settings), :controller => 'projects', :action => 'settings', :id => @project %></li>
107 107 </ul>
108 108 <% end %>
109 109
110 110 <% if loggedin? and @logged_in_user.memberships.length > 0 %>
111 <h2><%=_('My projects') %></h2>
111 <h2><%=l(:label_my_projects) %></h2>
112 112 <ul class="menublock">
113 113 <% for membership in @logged_in_user.memberships %>
114 114 <li><%= link_to membership.project.name, :controller => 'projects', :action => 'show', :id => membership.project %></li>
@@ -1,5 +1,5
1 <%=_('Issue')%> #<%= issue.id %> - <%= issue.subject %>
2 <%=_('Author')%>: <%= issue.author.display_name %>
1 <%=l(:label_issue)%> #<%= issue.id %> - <%= issue.subject %>
2 <%=l(:field_author)%>: <%= issue.author.display_name %>
3 3
4 4 <%= issue.description %>
5 5
@@ -1,13 +1,13
1 1 <%= error_messages_for 'news' %>
2 2
3 3 <!--[form:news]-->
4 <p><label for="news_title"><%=_('Title')%></label> <span class="required">*</span><br/>
4 <p><label for="news_title"><%=l(:field_title)%></label> <span class="required">*</span><br/>
5 5 <%= text_field 'news', 'title', :size => 60 %></p>
6 6
7 <p><label for="news_summary"><%=_('Summary')%></label><br/>
7 <p><label for="news_summary"><%=l(:field_summary)%></label><br/>
8 8 <%= text_area 'news', 'summary', :cols => 60, :rows => 2 %></p>
9 9
10 <p><label for="news_description"><%=_('Description')%> <span class="required">*</span></label><br/>
10 <p><label for="news_description"><%=l(:field_description)%> <span class="required">*</span></label><br/>
11 11 <%= text_area 'news', 'description', :cols => 60, :rows => 10 %></p>
12 12 <!--[eoform:news]-->
13 13
@@ -1,6 +1,6
1 <h2><%=_('News')%></h2>
1 <h2><%=l(:label_news)%></h2>
2 2
3 3 <%= start_form_tag :action => 'edit', :id => @news %>
4 4 <%= render :partial => 'form' %>
5 <%= submit_tag _('Save') %>
5 <%= submit_tag l(:button_save) %>
6 6 <%= end_form_tag %>
@@ -1,9 +1,9
1 1 <h2><%= @news.title %></h2>
2 2
3 3 <p>
4 <b><%=_('Summary')%></b>: <%= @news.summary %><br />
5 <b><%=_('By')%></b>: <%= @news.author.display_name %><br />
6 <b><%=_('Date')%></b>: <%= format_time(@news.created_on) %>
4 <b><%=l(:field_summary)%></b>: <%= @news.summary %><br />
5 <b><%=l(:field_author)%></b>: <%= @news.author.display_name %><br />
6 <b><%=l(:field_created_on)%></b>: <%= format_time(@news.created_on) %>
7 7 </p>
8 8
9 9 <%= simple_format auto_link @news.description %>
@@ -2,31 +2,31
2 2
3 3 <div class="box">
4 4 <!--[form:project]-->
5 <p><label for="project_name"><%=_('Name')%> <span class="required">*</span></label><br/>
5 <p><label for="project_name"><%=l(:field_name)%> <span class="required">*</span></label><br/>
6 6 <%= text_field 'project', 'name' %></p>
7 7
8 8 <% if admin_loggedin? %>
9 <p><label for="project_parent_id"><%=_('Subproject of')%></label><br/>
9 <p><label for="project_parent_id"><%=l(:field_parent)%></label><br/>
10 10 <select name="project[parent_id]">
11 11 <option value=""></option>
12 12 <%= options_from_collection_for_select @root_projects, "id", "name", @project.parent_id %>
13 13 </select></p>
14 14 <% end %>
15 15
16 <p><label for="project_description"><%=_('Description')%> <span class="required">*</span></label><br/>
16 <p><label for="project_description"><%=l(:field_description)%> <span class="required">*</span></label><br/>
17 17 <%= text_area 'project', 'description', :cols => 60, :rows => 3 %></p>
18 18
19 <p><label for="project_homepage"><%=_('Homepage')%></label><br/>
19 <p><label for="project_homepage"><%=l(:field_homepage)%></label><br/>
20 20 <%= text_field 'project', 'homepage', :size => 40 %></p>
21 21
22 22 <p><%= check_box 'project', 'is_public' %>
23 <label for="project_is_public"><%=_('Public')%></label></p>
23 <label for="project_is_public"><%=l(:field_is_public)%></label></p>
24 24
25 25 <% for custom_value in @custom_values %>
26 26 <p><%= custom_field_tag_with_label custom_value %></p>
27 27 <% end %>
28 28
29 <fieldset><legend><%=_('Custom fields')%></legend>
29 <fieldset><legend><%=l(:label_custom_field_plural)%></legend>
30 30 <% for custom_field in @custom_fields %>
31 31 <input type="checkbox"
32 32
@@ -1,6 +1,6
1 <h2><%=_('New project')%></h2>
1 <h2><%=l(:label_project_new)%></h2>
2 2
3 3 <%= start_form_tag :action => 'add' %>
4 4 <%= render :partial => 'form' %>
5 <%= submit_tag _('Create') %>
5 <%= submit_tag l(:button_create) %>
6 6 <%= end_form_tag %>
@@ -1,26 +1,12
1 <h2><%=_('New document')%></h2>
1 <h2><%=l(:label_document_new)%></h2>
2 2
3 <%= error_messages_for 'document' %>
4 3 <%= start_form_tag( { :action => 'add_document', :id => @project }, :multipart => true) %>
5
6 <!--[form:document]-->
7 <p><label for="document_category_id"><%=_('Category')%></label><br />
8 <select name="document[category_id]">
9 <%= options_from_collection_for_select @categories, "id", "name",@document.category_id %>
10 </select></p>
11
12 <p><label for="document_title"><%=_('Title')%> <span class="required">*</span></label><br />
13 <%= text_field 'document', 'title', :size => 60 %></p>
14
15 <p><label for="document_description"><%=_('Description')%> <span class="required">*</span></label><br />
16 <%= text_area 'document', 'description', :cols => 60, :rows => 5 %></p>
4 <%= render :partial => 'documents/form' %>
17 5
18 <p><label for="attachment_file"><%=_('File')%></label><br/>
6 <p><label for="attachment_file"><%=l(:label_attachment)%></label><br/>
19 7 <%= file_field 'attachment', 'file' %></p>
20 8
21 <!--[eoform:document]-->
22
23 <%= submit_tag _('Create') %>
9 <%= submit_tag l(:button_create) %>
24 10 <%= end_form_tag %>
25 11
26 12
@@ -1,13 +1,14
1 <h2><%=_('New file')%></h2>
1 <h2><%=l(:label_attachment_new)%></h2>
2 2
3 <%= error_messages_for 'attachment' %>
3 4 <%= start_form_tag ({ :action => 'add_file', :project => @project }, :multipart => true) %>
4 5
5 <p><label for="version_id"><%=_('Version')%></label><br />
6 <p><label for="version_id"><%=l(:field_version)%></label><br />
6 7 <select name="version_id">
7 8 <%= options_from_collection_for_select @versions, "id", "name" %>
8 9 </select></p>
9 10
10 <p><b><%=_('File')%><b><br /><%= file_field 'attachment', 'file' %></p>
11 <p><b><%=l(:label_attachment)%><b><br /><%= file_field 'attachment', 'file' %></p>
11 12 <br/>
12 <%= submit_tag _('Add') %>
13 <%= submit_tag l(:button_add) %>
13 14 <%= end_form_tag %> No newline at end of file
@@ -1,4 +1,4
1 <h2><%=_('New issue')%>: <%=_(@tracker.name)%></h2>
1 <h2><%=l(:label_issue_new)%>: <%= @tracker.name %></h2>
2 2
3 3 <%= start_form_tag( { :action => 'add_issue', :id => @project }, :multipart => true) %>
4 4 <%= error_messages_for 'issue' %>
@@ -9,14 +9,14
9 9 <%= hidden_field_tag 'tracker_id', @tracker.id %>
10 10
11 11 <div style="float:left;margin-right:10px;">
12 <p><label for="issue_priority_id"><%=_('Priority')%> <span class="required">*</span></label><br/>
12 <p><label for="issue_priority_id"><%=l(:field_priority)%> <span class="required">*</span></label><br />
13 13 <select name="issue[priority_id]">
14 14 <%= options_from_collection_for_select @priorities, "id", "name", @issue.priority_id %></p>
15 15 </select></p>
16 16 </div>
17 17
18 18 <div style="float:left;margin-right:10px;">
19 <p><label for="issue_assigned_to_id"><%=_('Assigned to')%></label><br/>
19 <p><label for="issue_assigned_to_id"><%=l(:field_assigned_to)%></label><br />
20 20 <select name="issue[assigned_to_id]">
21 21 <option value=""></option>
22 22 <%= options_from_collection_for_select @issue.project.members, "user_id", "name", @issue.assigned_to_id %></p>
@@ -24,28 +24,29
24 24 </div>
25 25
26 26 <div>
27 <p><label for="issue_category_id"><%=_('Category')%></label><br/>
27 <p><label for="issue_category_id"><%=l(:field_category)%></label><br />
28 28 <select name="issue[category_id]">
29 29 <option value=""></option><%= options_from_collection_for_select @project.issue_categories, "id", "name", @issue.category_id %>
30 30 </select></p>
31 31 </div>
32 32
33 <p><label for="issue_subject"><%=_('Subject')%> <span class="required">*</span></label><br/>
33 <p><label for="issue_subject"><%=l(:field_subject)%> <span class="required">*</span></label><br />
34 34 <%= text_field 'issue', 'subject', :size => 80 %></p>
35 35
36 <p><label for="issue_description"><%=_('Description')%> <span class="required">*</span></label><br/>
36 <p><label for="issue_description"><%=l(:field_description)%> <span class="required">*</span></label><br />
37 37 <%= text_area 'issue', 'description', :cols => 60, :rows => 10 %></p>
38
39 <p><label for="issue_due_date"><%=l(:field_due_date)%></label><br />
40 <%= date_select 'issue', 'due_date', :start_year => Date.today.year, :include_blank => true %></p>
38 41
39 42 <% for custom_value in @custom_values %>
40 43 <p><%= custom_field_tag_with_label custom_value %></p>
41 44 <% end %>
42 45
43 <p><label for="attachment_file"><%=_('Attachment')%></label><br/>
46 <p><label for="attachment_file"><%=l(:label_attachment)%></label><br />
44 47 <%= file_field 'attachment', 'file' %></p>
45
46 48 <!--[eoform:issue]-->
47 49 </div>
48 50
49
50 <%= submit_tag _('Create') %>
51 <%= submit_tag l(:button_create) %>
51 52 <%= end_form_tag %> No newline at end of file
@@ -1,7 +1,7
1 <h2><%=('Add news')%></h2>
1 <h2><%=l(:label_news_new)%></h2>
2 2
3 3 <%= start_form_tag :action => 'add_news', :id => @project %>
4 4 <%= render :partial => 'news/form' %>
5 <%= submit_tag _('Create') %>
5 <%= submit_tag l(:button_create) %>
6 6 <%= end_form_tag %>
7 7
@@ -1,7 +1,7
1 <h2><%=_('New version')%></h2>
1 <h2><%=l(:label_version_new)%></h2>
2 2
3 3 <%= start_form_tag :action => 'add_version', :id => @project %>
4 4 <%= render :partial => 'versions/form' %>
5 <%= submit_tag _('Create') %>
5 <%= submit_tag l(:button_create) %>
6 6 <%= end_form_tag %>
7 7
@@ -1,4 +1,4
1 <h2><%=_('Change log')%></h2>
1 <h2><%=l(:label_change_log)%></h2>
2 2
3 3 <% fixed_issues = @fixed_issues.group_by {|i| i.fixed_version } %>
4 4 <% fixed_issues.each do |version, issues| %>
@@ -1,11 +1,13
1 <h2><%=_('Confirmation')%></h2>
1 <h2><%=l(:label_confirmation)%></h2>
2 2 <div class="box">
3 3 <center>
4 <p><%=_('Are you sure you want to delete project')%> <strong><%= @project.name %></strong> ?</p>
4 <p><strong><%= @project.name %></strong><br />
5 <%=l(:text_project_destroy_confirmation)%></p>
6
5 7 <p>
6 8 <%= start_form_tag({:controller => 'projects', :action => 'destroy', :id => @project}) %>
7 9 <%= hidden_field_tag "confirm", 1 %>
8 <%= submit_tag _('Delete') %>
10 <%= submit_tag l(:button_delete) %>
9 11 <%= end_form_tag %>
10 12 </p>
11 13 </center>
@@ -1,10 +1,10
1 <h2><%=_('Public projects')%></h2>
1 <h2><%=l(:label_public_projects)%></h2>
2 2
3 3 <table width="100%" cellspacing="1" cellpadding="2" class="listTableContent">
4 4 <tr class="ListHead">
5 <%= sort_header_tag('name', :caption => _('Project')) %>
6 <th>Description</th>
7 <%= sort_header_tag('created_on', :caption => _('Created on')) %>
5 <%= sort_header_tag('name', :caption => l(:label_project)) %>
6 <th><%=l(:field_description)%></th>
7 <%= sort_header_tag('created_on', :caption => l(:field_created_on)) %>
8 8 </tr>
9 9
10 10 <% for project in @projects %>
@@ -1,4 +1,4
1 <h2><%=_('Documents')%></h2>
1 <h2><%=l(:label_document_plural)%></h2>
2 2
3 3 <% documents = @documents.group_by {|d| d.category } %>
4 4 <% documents.each do |category, docs| %>
@@ -8,7 +8,7
8 8 <li>
9 9 <b><%= link_to d.title, :controller => 'documents', :action => 'show', :id => d %></b>
10 10 <br />
11 <%=_('Desciption')%>: <%= d.description %><br />
11 <%=l(:field_description)%>: <%= d.description %><br />
12 12 <%= format_time(d.created_on) %>
13 13 </li>
14 14
@@ -17,5 +17,5
17 17 <% end %>
18 18
19 19 <p>
20 <%= link_to_if_authorized '&#187; ' + _('New'), :controller => 'projects', :action => 'add_document', :id => @project %>
20 <%= link_to_if_authorized '&#187; ' + l(:label_document_new), :controller => 'projects', :action => 'add_document', :id => @project %>
21 21 </p>
@@ -1,13 +1,13
1 <h2><%=_('Files')%></h2>
1 <h2><%=l(:label_attachment_plural)%></h2>
2 2
3 3 <% delete_allowed = authorize_for('versions', 'destroy_file') %>
4 4
5 5 <table border="0" cellspacing="1" cellpadding="2" class="listTableContent">
6 6 <tr class="ListHead">
7 <th><%=_('Version')%></th>
8 <th><%=_('File')%></th>
9 <th><%=_('Date')%></th>
10 <th><%=_('Size')%></th>
7 <th><%=l(:field_version)%></th>
8 <th><%=l(:field_filename)%></th>
9 <th><%=l(:label_date)%></th>
10 <th><%=l(:field_filesize)%></th>
11 11 <th>D/L</th>
12 12 <th>MD5</th>
13 13 <% if delete_allowed %><th></th><% end %>
@@ -28,7 +28,7
28 28 <% if delete_allowed %>
29 29 <td align="center">
30 30 <%= start_form_tag :controller => 'versions', :action => 'destroy_file', :id => version, :attachment_id => file %>
31 <%= submit_tag _('Delete'), :class => "button-small" %>
31 <%= submit_tag l(:button_delete), :class => "button-small" %>
32 32 <%= end_form_tag %>
33 33 </td>
34 34 <% end %>
@@ -40,7 +40,7
40 40
41 41 <br />
42 42 <p>
43 <%= link_to_if_authorized '&#187; ' + _('New'), :controller => 'projects', :action => 'add_file', :id => @project %>
43 <%= link_to_if_authorized '&#187; ' + l(:label_attachment_new), :controller => 'projects', :action => 'add_file', :id => @project %>
44 44 </p>
45 45
46 46
@@ -1,56 +1,53
1 <h2><%=_('Issues')%></h2>
1 <h2><%=l(:label_issue_plural)%></h2>
2 2
3 3 <form method="post" class="noborder">
4 <table cellpadding=2>
4 <table cellpadding=2>
5 5 <tr>
6 <td><small><%=_('Status')%>:</small><br /><%= search_filter_tag 'status_id', :class => 'select-small' %></td>
7 <td><small><%=_('Tracker')%>:</small><br /><%= search_filter_tag 'tracker_id', :class => 'select-small' %></td>
8 <td><small><%=_('Priority')%>:</small><br /><%= search_filter_tag 'priority_id', :class => 'select-small' %></td>
9 <td><small><%=_('Category')%>:</small><br /><%= search_filter_tag 'category_id', :class => 'select-small' %></td>
10 <td><small><%=_('Fixed in version')%>:</small><br /><%= search_filter_tag 'fixed_version_id', :class => 'select-small' %></td>
11 <td><small><%=_('Assigned to')%>:</small><br /><%= search_filter_tag 'assigned_to_id', :class => 'select-small' %></td>
12 <td><small><%=_('Subprojects')%>:</small><br /><%= search_filter_tag 'subproject_id', :class => 'select-small' %></td>
6 <td><small><%=l(:field_status)%>:</small><br /><%= search_filter_tag 'status_id', :class => 'select-small' %></td>
7 <td><small><%=l(:field_tracker)%>:</small><br /><%= search_filter_tag 'tracker_id', :class => 'select-small' %></td>
8 <td><small><%=l(:field_priority)%>:</small><br /><%= search_filter_tag 'priority_id', :class => 'select-small' %></td>
9 <td><small><%=l(:field_category)%>:</small><br /><%= search_filter_tag 'category_id', :class => 'select-small' %></td>
10 <td><small><%=l(:field_fixed_version)%>:</small><br /><%= search_filter_tag 'fixed_version_id', :class => 'select-small' %></td>
11 <td><small><%=l(:field_assigned_to)%>:</small><br /><%= search_filter_tag 'assigned_to_id', :class => 'select-small' %></td>
12 <td><small><%=l(:label_subproject_plural)%>:</small><br /><%= search_filter_tag 'subproject_id', :class => 'select-small' %></td>
13 13
14 14 <td valign="bottom">
15 <%= submit_tag _('Apply filter'), :class => 'button-small' %>
15 <%= submit_tag l(:button_apply), :class => 'button-small' %>
16 16 <%= end_form_tag %>
17 17
18 18 <%= start_form_tag %>
19 <%= submit_tag _('Reset'), :class => 'button-small' %>
19 <%= submit_tag l(:button_clear), :class => 'button-small' %>
20 20 <%= end_form_tag %>
21 21 </td>
22 22 </tr>
23 23 </table>
24 24 &nbsp;
25 <table border="0" cellspacing="1" cellpadding="2" class="listTableContent">
26
27 <tr><td colspan="7" align="right">
28 <small><%= link_to 'Export to CSV', :action => 'export_issues_csv', :id => @project.id %></small>
29 </td></tr>
30
31 <tr class="ListHead">
32 <%= sort_header_tag('issues.id', :caption => '#') %>
33 <%= sort_header_tag('issue_statuses.name', :caption => _('Status')) %>
34 <%= sort_header_tag('issues.tracker_id', :caption => _('Tracker')) %>
35 <th><%=_('Subject')%></th>
36 <%= sort_header_tag('users.lastname', :caption => _('Author')) %>
37 <%= sort_header_tag('issues.created_on', :caption => _('Created on')) %>
38 <%= sort_header_tag('issues.updated_on', :caption => _('Last update')) %>
39 </tr>
40
41 <% for issue in @issues %>
42 <tr bgcolor="#<%= issue.status.html_color %>">
43 <td align="center"><%= link_to issue.long_id, :controller => 'issues', :action => 'show', :id => issue %></td>
44 <td align="center"><%= issue.status.name %></td>
45 <td align="center"><%= issue.tracker.name %></td>
46 <td><%= link_to issue.subject, :controller => 'issues', :action => 'show', :id => issue %></td>
47 <td align="center"><%= issue.author.display_name %></td>
48 <td align="center"><%= format_time(issue.created_on) %></td>
49 <td align="center"><%= format_time(issue.updated_on) %></td>
50 </tr>
51 <% end %>
52 </table>
53 <p>
54 <%= pagination_links_full @issue_pages %>
55 [ <%= @issue_pages.current.first_item %> - <%= @issue_pages.current.last_item %> / <%= @issue_count %> ]
56 </p> No newline at end of file
25 <table border="0" cellspacing="1" cellpadding="2" class="listTableContent">
26 <tr><td colspan="7" align="right">
27 <small><%= link_to l(:label_export_csv), :action => 'export_issues_csv', :id => @project.id %></small>
28 </td></tr>
29 <tr class="ListHead">
30 <%= sort_header_tag('issues.id', :caption => '#') %>
31 <%= sort_header_tag('issue_statuses.name', :caption => l(:field_status)) %>
32 <%= sort_header_tag('issues.tracker_id', :caption => l(:field_tracker)) %>
33 <th><%=l(:field_subject)%></th>
34 <%= sort_header_tag('users.lastname', :caption => l(:field_author)) %>
35 <%= sort_header_tag('issues.created_on', :caption => l(:field_created_on)) %>
36 <%= sort_header_tag('issues.updated_on', :caption => l(:field_updated_on)) %>
37 </tr>
38 <% for issue in @issues %>
39 <tr bgcolor="#<%= issue.status.html_color %>">
40 <td align="center"><%= link_to issue.long_id, :controller => 'issues', :action => 'show', :id => issue %></td>
41 <td align="center"><%= issue.status.name %></td>
42 <td align="center"><%= issue.tracker.name %></td>
43 <td><%= link_to issue.subject, :controller => 'issues', :action => 'show', :id => issue %></td>
44 <td align="center"><%= issue.author.display_name %></td>
45 <td align="center"><%= format_time(issue.created_on) %></td>
46 <td align="center"><%= format_time(issue.updated_on) %></td>
47 </tr>
48 <% end %>
49 </table>
50 <p>
51 <%= pagination_links_full @issue_pages %>
52 [ <%= @issue_pages.current.first_item %> - <%= @issue_pages.current.last_item %> / <%= @issue_count %> ]
53 </p> No newline at end of file
@@ -1,4 +1,4
1 <h2><%=_('Project members')%></h2>
1 <h2><%=l(:label_member_plural)%></h2>
2 2
3 3 <% members = @members.group_by {|m| m.role } %>
4 4 <% members.each do |role, member| %>
@@ -1,4 +1,4
1 <h2><%=_('News')%></h2>
1 <h2><%=l(:label_news_plural)%></h2>
2 2
3 3 <% for news in @news %>
4 4 <p>
@@ -7,11 +7,11
7 7 <%= link_to_if_authorized image_tag('delete'), { :controller => 'news', :action => 'destroy', :id => news }, :confirm => 'Are you sure?' %>
8 8 <br />
9 9 <%= news.summary %>
10 <small>[<%= link_to _('Read...'), :controller => 'news', :action => 'show', :id => news %>]</small>
10 <small>[<%= link_to l(:label_read), :controller => 'news', :action => 'show', :id => news %>]</small>
11 11 </p>
12 12 <% end %>
13 13
14 14 <%= pagination_links_full @news_pages %>
15 15 <p>
16 <%= link_to_if_authorized '&#187; ' + _('Add'), :controller => 'projects', :action => 'add_news', :id => @project %>
16 <%= link_to_if_authorized '&#187; ' + l(:label_news_new), :controller => 'projects', :action => 'add_news', :id => @project %>
17 17 </p>
@@ -1,14 +1,14
1 <h2><%=_('Settings')%></h2>
1 <h2><%=l(:label_settings)%></h2>
2 2
3 3 <%= start_form_tag :action => 'edit', :id => @project %>
4 4 <%= render :partial => 'form' %>
5 <center><%= submit_tag _('Save') %></center>
5 <center><%= submit_tag l(:button_save) %></center>
6 6 <%= end_form_tag %>
7 7
8 8 &nbsp;
9 9
10 10 <div class="box">
11 <h3><%=_('Members')%></h3>
11 <h3><%=l(:label_member_plural)%></h3>
12 12 <%= error_messages_for 'member' %>
13 13 <table>
14 14 <% for member in @project.members.find(:all, :include => :user) %>
@@ -22,12 +22,12
22 22 </select>
23 23 </td>
24 24 <td>
25 <%= submit_tag _('Save'), :class => "button-small" %>
25 <%= submit_tag l(:button_change), :class => "button-small" %>
26 26 <%= end_form_tag %>
27 27 </td>
28 28 <td>
29 29 <%= start_form_tag :controller => 'members', :action => 'destroy', :id => member %>
30 <%= submit_tag _('Delete'), :class => "button-small" %>
30 <%= submit_tag l(:button_delete), :class => "button-small" %>
31 31 <%= end_form_tag %>
32 32 </td>
33 33 </tr>
@@ -35,7 +35,7
35 35 <% end %>
36 36 </table>
37 37 <hr />
38 <label><%=_('New member')%></label><br/>
38 <label><%=l(:label_member_new)%></label><br/>
39 39 <%= start_form_tag :controller => 'projects', :action => 'add_member', :id => @project %>
40 40 <select name="member[user_id]">
41 41 <%= options_from_collection_for_select @users, "id", "display_name", @member.user_id %>
@@ -43,12 +43,12
43 43 <select name="member[role_id]">
44 44 <%= options_from_collection_for_select @roles, "id", "name", @member.role_id %>
45 45 </select>
46 <%= submit_tag _('Add') %>
46 <%= submit_tag l(:button_add) %>
47 47 <%= end_form_tag %>
48 48 </div>
49 49
50 50 <div class="box">
51 <h3><%=_('Versions')%></h3>
51 <h3><%=l(:label_version_plural)%></h3>
52 52
53 53 <table>
54 54 <% for version in @project.versions %>
@@ -57,7 +57,7
57 57 <td><%=h version.description %></td>
58 58 <td>
59 59 <%= start_form_tag :controller => 'versions', :action => 'destroy', :id => version %>
60 <%= submit_tag _('Delete'), :class => "button-small" %>
60 <%= submit_tag l(:button_delete), :class => "button-small" %>
61 61 <%= end_form_tag %>
62 62 </td>
63 63 </tr>
@@ -65,13 +65,13
65 65 </table>
66 66 <hr />
67 67 <%= start_form_tag ({ :controller => 'projects', :action => 'add_version', :id => @project }, :method => 'get' ) %>
68 <%= submit_tag _('New version...') %>
68 <%= submit_tag l(:label_version_new) %>
69 69 <%= end_form_tag %>
70 70 </div>
71 71
72 72
73 73 <div class="box">
74 <h3><%=_('Issue categories')%></h3>
74 <h3><%=l(:label_issue_category_plural)%></h3>
75 75 <table>
76 76 <% for @category in @project.issue_categories %>
77 77 <% unless @category.new_record? %>
@@ -81,12 +81,12
81 81 <%= text_field 'category', 'name', :size => 25 %>
82 82 </td>
83 83 <td>
84 <%= submit_tag _('Save'), :class => "button-small" %>
84 <%= submit_tag l(:button_save), :class => "button-small" %>
85 85 <%= end_form_tag %>
86 86 </td>
87 87 <td>
88 88 <%= start_form_tag :controller => 'issue_categories', :action => 'destroy', :id => @category %>
89 <%= submit_tag _('Delete'), :class => "button-small" %>
89 <%= submit_tag l(:button_delete), :class => "button-small" %>
90 90 <%= end_form_tag %>
91 91 </td>
92 92 </tr>
@@ -96,10 +96,10
96 96 <hr />
97 97
98 98 <%= start_form_tag :action => 'add_issue_category', :id => @project %>
99 <label for="issue_category_name"><%=l(:label_issue_category_new)%></label><br/>
99 100 <%= error_messages_for 'issue_category' %>
100 <label for="issue_category_name"><%=_('New category')%></label><br/>
101 101 <%= text_field 'issue_category', 'name', :size => 25 %>
102 <%= submit_tag _('Create') %>
102 <%= submit_tag l(:button_create) %>
103 103 <%= end_form_tag %>
104 104
105 105 </div>
@@ -1,10 +1,10
1 <h2><%=_('Overview')%></h2>
1 <h2><%=l(:label_overview)%></h2>
2 2
3 3 <div class="splitcontentleft">
4 4 <%= @project.description %>
5 5 <ul>
6 <li><%=_('Homepage')%>: <%= link_to @project.homepage, @project.homepage %></li>
7 <li><%=_('Created on')%>: <%= format_date(@project.created_on) %></li>
6 <li><%=l(:field_homepage)%>: <%= link_to @project.homepage, @project.homepage %></li>
7 <li><%=l(:field_created_on)%>: <%= format_date(@project.created_on) %></li>
8 8 <% for custom_value in @custom_values %>
9 9 <% if !custom_value.value.empty? %>
10 10 <li><%= custom_value.custom_field.name%>: <%= custom_value.value%></li>
@@ -13,31 +13,32
13 13 </ul>
14 14
15 15 <div class="box">
16 <h3><%= image_tag "tracker" %> <%=_('Trackers')%></h3>
16 <h3><%= image_tag "tracker" %> <%=l(:label_tracker_plural)%></h3>
17 17 <ul>
18 18 <% for tracker in @trackers %>
19 19 <li><%= link_to tracker.name, :controller => 'projects', :action => 'list_issues', :id => @project,
20 20 :set_filter => 1,
21 21 "tracker_id" => tracker.id %>:
22 <%= Issue.count(:conditions => ["project_id=? and tracker_id=? and issue_statuses.is_closed=?", @project.id, tracker.id, false], :include => :status) %> <%=_('open')%>
22 <%= issue_count = Issue.count(:conditions => ["project_id=? and tracker_id=? and issue_statuses.is_closed=?", @project.id, tracker.id, false], :include => :status) %>
23 <%= lwr(:label_open_issues, issue_count) %>
23 24 </li>
24 25 <% end %>
25 26 </ul>
26 27 <% if authorize_for 'projects', 'add_issue' %>
27 &#187; <%=_('Report an issue')%>:
28 &#187; <%=l(:label_issue_new)%>:
28 29 <ul>
29 30 <% @trackers.each do |tracker| %>
30 <li><%= link_to _(tracker.name), :controller => 'projects', :action => 'add_issue', :id => @project, :tracker_id => tracker %></li>
31 <li><%= link_to tracker.name, :controller => 'projects', :action => 'add_issue', :id => @project, :tracker_id => tracker %></li>
31 32 <% end %>
32 33 </ul>
33 34 <% end %>
34 <center><small>[ <%= link_to _('View all issues'), :controller => 'projects', :action => 'list_issues', :id => @project, :set_filter => 1 %> ]</small></center>
35 <center><small>[ <%= link_to l(:label_issue_view_all), :controller => 'projects', :action => 'list_issues', :id => @project, :set_filter => 1 %> ]</small></center>
35 36 </div>
36 37 </div>
37 38
38 39 <div class="splitcontentright">
39 40 <div class="box">
40 <h3><%= image_tag "users" %> <%=_('Members')%></h3>
41 <h3><%= image_tag "users" %> <%=l(:label_member_plural)%></h3>
41 42 <% for member in @members %>
42 43 <%= link_to_user member.user %> (<%= member.role.name %>)<br />
43 44 <% end %>
@@ -45,7 +46,7
45 46
46 47 <% if @subprojects %>
47 48 <div class="box">
48 <h3><%= image_tag "projects" %> <%=_('Subprojects')%></h3>
49 <h3><%= image_tag "projects" %> <%=l(:label_subproject_plural)%></h3>
49 50 <% for subproject in @subprojects %>
50 51 <%= link_to subproject.name, :action => 'show', :id => subproject %><br />
51 52 <% end %>
@@ -53,16 +54,16
53 54 <% end %>
54 55
55 56 <div class="box">
56 <h3><%=_('Latest news')%></h3>
57 <h3><%=l(:label_news_latest)%></h3>
57 58 <% for news in @news %>
58 59 <p>
59 60 <b><%= news.title %></b> <small>(<%= link_to_user news.author %> <%= format_time(news.created_on) %>)</small><br />
60 61 <%= news.summary %>
61 <small>[<%= link_to _('Read...'), :controller => 'news', :action => 'show', :id => news %>]</small>
62 <small>[<%= link_to l(:label_read), :controller => 'news', :action => 'show', :id => news %>]</small>
62 63 </p>
63 64 <hr />
64 65 <% end %>
65 <center><small>[ <%= link_to _('View all news'), :controller => 'projects', :action => 'list_news', :id => @project %> ]</small></center>
66 <center><small>[ <%= link_to l(:label_news_view_all), :controller => 'projects', :action => 'list_news', :id => @project %> ]</small></center>
66 67 </div>
67 68 </div>
68 69
@@ -6,9 +6,9
6 6 <% for status in @statuses %>
7 7 <td align="center" width="<%= col_width %>%" bgcolor="#<%= status.html_color %>"><small><%= status.name %></small></td>
8 8 <% end %>
9 <td align="center" width="<%= col_width %>%"><strong><%=_('Open')%></strong></td>
10 <td align="center" width="<%= col_width %>%"><strong><%=_('Closed')%></strong></td>
11 <td align="center" width="<%= col_width %>%"><strong><%=_('Total')%></strong></td>
9 <td align="center" width="<%= col_width %>%"><strong><%=l(:label_open_issues_plural)%></strong></td>
10 <td align="center" width="<%= col_width %>%"><strong><%=l(:label_closed_issues_plural)%></strong></td>
11 <td align="center" width="<%= col_width %>%"><strong><%=l(:label_total)%></strong></td>
12 12 </tr>
13 13
14 14 <% for row in rows %>
@@ -1,13 +1,13
1 <h2><%=_('Reports')%></h2>
1 <h2><%=l(:label_report_plural)%></h2>
2 2
3 <strong><%=_('Issues by tracker')%></strong>
3 <strong><%=l(:field_tracker)%></strong>
4 4 <%= render :partial => 'simple', :locals => { :data => @issues_by_tracker, :field_name => "tracker_id", :rows => @trackers } %>
5 5 <br />
6 6
7 <strong><%=_('Issues by priority')%></strong>
7 <strong><%=l(:field_priority)%></strong>
8 8 <%= render :partial => 'simple', :locals => { :data => @issues_by_priority, :field_name => "priority_id", :rows => @priorities } %>
9 9 <br />
10 10
11 <strong><%=_('Issues by category')%></strong>
11 <strong><%=l(:field_category)%></strong>
12 12 <%= render :partial => 'simple', :locals => { :data => @issues_by_category, :field_name => "category_id", :rows => @categories } %>
13 13
@@ -2,22 +2,22
2 2
3 3 <div class="box">
4 4 <!--[form:role]-->
5 <p><label for="role_name"><%=_('Name')%> <span class="required">*</span></label><br />
5 <p><label for="role_name"><%=l(:field_name)%> <span class="required">*</span></label><br />
6 6 <%= text_field 'role', 'name' %></p>
7 7
8 <strong><%=_('Permissions')%></strong>
8 <strong><%=l(:label_permissions)%>:</strong>
9 9 <% permissions = @permissions.group_by {|p| p.group_id } %>
10 <% permissions.keys.sort.each do |group_id| %>
11 <fieldset><legend><%= _(Permission::GROUPS[group_id]) %></legend>
10 <% permissions.keys.sort.each do |group_id| %>
11 <fieldset style="margin-top: 6px;"><legend><strong><%= l(Permission::GROUPS[group_id]) %></strong></legend>
12 12 <% permissions[group_id].each do |p| %>
13 <div style="width:200px;float:left;"><%= check_box_tag "permission_ids[]", p.id, (@role.permissions.include? p) %>
14 <%= _(p.description) %>
13 <div style="width:170px;float:left;"><%= check_box_tag "permission_ids[]", p.id, (@role.permissions.include? p) %>
14 <%= l(p.description.to_sym) %>
15 15 </div>
16 16 <% end %>
17 17 </fieldset>
18 18 <% end %>
19 19 <br />
20 <a href="javascript:checkAll('role_form', true)"><%=_('Check all')%></a> |
21 <a href="javascript:checkAll('role_form', false)"><%=_('Uncheck all')%></a><br />
20 <a href="javascript:checkAll('role_form', true)"><%=l(:button_check_all)%></a> |
21 <a href="javascript:checkAll('role_form', false)"><%=l(:button_uncheck_all)%></a><br />
22 22 <!--[eoform:role]-->
23 23 </div>
@@ -1,10 +1,8
1 <h2><%=_('Role')%></h2>
1 <h2><%=l(:label_role)%></h2>
2 2
3 3 <%= start_form_tag ({ :action => 'edit', :id => @role }, :id => 'role_form') %>
4 4 <%= render :partial => 'form' %>
5
6 <br />
7 <%= submit_tag _('Save') %>
5 <%= submit_tag l(:button_save) %>
8 6 <%= end_form_tag %>
9 7
10 8
@@ -1,8 +1,8
1 <h2><%=_('Roles')%></h2>
1 <h2><%=l(:label_role_plural)%></h2>
2 2
3 3 <table border="0" cellspacing="1" cellpadding="2" class="listTableContent">
4 4 <tr class="ListHead">
5 <th><%=_('Role')%></th>
5 <th><%=l(:label_role)%></th>
6 6 <th></th>
7 7 </tr>
8 8
@@ -11,7 +11,7
11 11 <td><%= link_to role.name, :action => 'edit', :id => role %></td>
12 12 <td align="center">
13 13 <%= start_form_tag :action => 'destroy', :id => role %>
14 <%= submit_tag _('Delete'), :class => "button-small" %>
14 <%= submit_tag l(:button_delete), :class => "button-small" %>
15 15 <%= end_form_tag %>
16 16 </tr>
17 17 <% end %>
@@ -20,4 +20,4
20 20 <%= pagination_links_full @role_pages %>
21 21 <br />
22 22
23 <%= link_to '&#187; ' + _('New role'), :action => 'new' %>
23 <%= link_to '&#187; ' + l(:label_role_new), :action => 'new' %>
@@ -1,8 +1,7
1 <h2><%=_('New role')%></h2>
1 <h2><%=l(:label_role_new)%></h2>
2 2
3 3 <%= start_form_tag ({ :action => 'new' }, :id => 'role_form') %>
4 <%= render :partial => 'form' %>
5
6 <br /><%= submit_tag _('Create') %>
4 <%= render :partial => 'form' %>
5 <%= submit_tag l(:button_create) %>
7 6 <%= end_form_tag %>
8 7
@@ -1,22 +1,22
1 <h2><%=_('Workflow setup')%></h2>
1 <h2><%=l(:label_workflow)%></h2>
2 2
3 <p><%=_('Select a workflow to edit')%>:</p>
3 <p><%=l(:text_workflow_edit)%>:</p>
4 4
5 5 <%= start_form_tag ({:action => 'workflow'}, :method => 'get') %>
6 6 <div style="float:left;margin-right:10px;">
7 <p><label for="role_id"><%=_('Role')%></label><br/>
7 <p><label for="role_id"><%=l(:label_role)%></label><br/>
8 8 <select id="role_id" name="role_id">
9 9 <%= options_from_collection_for_select @roles, "id", "name", (@role.id unless @role.nil?) %>
10 10 </select></p>
11 11 </div>
12 12
13 13 <div>
14 <p><label for="tracker_id"><%=_('Tracker')%></label><br/>
14 <p><label for="tracker_id"><%=l(:label_tracker)%></label><br/>
15 15 <select id="tracker_id" name="tracker_id">
16 16 <%= options_from_collection_for_select @trackers, "id", "name", (@tracker.id unless @tracker.nil?) %>
17 17 </select>
18 18
19 <%= submit_tag _('Edit') %>
19 <%= submit_tag l(:button_edit) %>
20 20 </p>
21 21 </div>
22 22 <%= end_form_tag %>
@@ -28,8 +28,8
28 28 <%= form_tag ({:action => 'workflow', :role_id => @role, :tracker_id => @tracker }, :id => 'workflow_form' ) %>
29 29 <table>
30 30 <tr>
31 <td align="center"><strong><%=_('Issue status')%></strong></td>
32 <td align="center" colspan="<%= @statuses.length %>"><strong><%=_('New statuses allowed')%></strong></td>
31 <td align="center"><strong><%=l(:label_current_status)%></strong></td>
32 <td align="center" colspan="<%= @statuses.length %>"><strong><%=l(:label_new_statuses_allowed)%></strong></td>
33 33 </tr>
34 34 <tr>
35 35 <td></td>
@@ -59,11 +59,11
59 59 </table>
60 60 <br />
61 61 <p>
62 <a href="javascript:checkAll('workflow_form', true)"><%=_('Check all')%></a> |
63 <a href="javascript:checkAll('workflow_form', false)"><%=_('Uncheck all')%></a>
62 <a href="javascript:checkAll('workflow_form', true)"><%=l(:button_check_all)%></a> |
63 <a href="javascript:checkAll('workflow_form', false)"><%=l(:button_uncheck_all)%></a>
64 64 </p>
65 65 <br />
66 <%= submit_tag _('Save') %>
66 <%= submit_tag l(:button_save) %>
67 67 <%= end_form_tag %>
68 68
69 69 <% end %>
@@ -1,10 +1,10
1 1 <%= error_messages_for 'tracker' %>
2 2
3 3 <!--[form:tracker]-->
4 <p><label for="tracker_name"><%=_('Name')%></label> <span class="required">*</span><br/>
4 <p><label for="tracker_name"><%=l(:field_name)%></label> <span class="required">*</span><br/>
5 5 <%= text_field 'tracker', 'name' %></p>
6 6
7 7 <p><%= check_box 'tracker', 'is_in_chlog' %>
8 <label for="tracker_is_in_chlog"><%=_('View issues in change log')%></label></p>
8 <label for="tracker_is_in_chlog"><%=l(:field_is_in_chlog)%></label></p>
9 9 <!--[eoform:tracker]-->
10 10
@@ -1,6 +1,6
1 <h2><%=_('Tracker')%></h2>
1 <h2><%=l(:label_tracker)%></h2>
2 2
3 3 <%= start_form_tag :action => 'edit', :id => @tracker %>
4 4 <%= render :partial => 'form' %>
5 <%= submit_tag _('Save') %>
5 <%= submit_tag l(:button_save) %>
6 6 <%= end_form_tag %>
@@ -1,8 +1,8
1 <h2><%=_('Trackers')%></h2>
1 <h2><%=l(:label_tracker_plural)%></h2>
2 2
3 3 <table border="0" cellspacing="1" cellpadding="2" class="listTableContent">
4 4 <tr class="ListHead">
5 <th><%=_('Tracker')%></th>
5 <th><%=l(:label_tracker)%></th>
6 6 <th></th>
7 7 </tr>
8 8
@@ -11,7 +11,7
11 11 <td><%= link_to tracker.name, :action => 'edit', :id => tracker %></td>
12 12 <td align="center">
13 13 <%= start_form_tag :action => 'destroy', :id => tracker %>
14 <%= submit_tag _('Delete'), :class => "button-small" %>
14 <%= submit_tag l(:button_delete), :class => "button-small" %>
15 15 <%= end_form_tag %>
16 16 </td>
17 17 </tr>
@@ -21,4 +21,4
21 21 <%= pagination_links_full @tracker_pages %>
22 22 <br />
23 23
24 <%= link_to '&#187; ' + _('New tracker'), :action => 'new' %>
24 <%= link_to '&#187; ' + l(:label_tracker_new), :action => 'new' %>
@@ -1,7 +1,7
1 <h2><%=_('New tracker')%></h2>
1 <h2><%=l(:label_tracker_new)%></h2>
2 2
3 3 <%= start_form_tag :action => 'new' %>
4 4 <%= render :partial => 'form' %>
5 <%= submit_tag _('Create') %>
5 <%= submit_tag l(:button_create) %>
6 6 <%= end_form_tag %>
7 7
@@ -2,26 +2,26
2 2
3 3 <div class="box">
4 4 <!--[form:user]-->
5 <p><label for="user_login"><%=_('Login')%></label> <span class="required">*</span><br/>
5 <p><label for="user_login"><%=l(:field_login)%></label> <span class="required">*</span><br/>
6 6 <%= text_field 'user', 'login', :size => 25 %></p>
7 7
8 <p><label for="password"><%=_('Password')%></label> <span class="required">*</span><br/>
8 <p><label for="password"><%=l(:field_password)%></label> <span class="required">*</span><br/>
9 9 <%= password_field_tag 'password', nil, :size => 25 %></p>
10 10
11 <p><label for="password_confirmation"><%=_('Confirmation')%></label> <span class="required">*</span><br/>
11 <p><label for="password_confirmation"><%=l(:field_password_confirmation)%></label> <span class="required">*</span><br/>
12 12 <%= password_field_tag 'password_confirmation', nil, :size => 25 %></p>
13 13
14 <p><label for="user_firstname"><%=_('Firstname')%></label> <span class="required">*</span><br/>
14 <p><label for="user_firstname"><%=l(:field_firstname)%></label> <span class="required">*</span><br/>
15 15 <%= text_field 'user', 'firstname' %></p>
16 16
17 <p><label for="user_lastname"><%=_('Lastname')%></label> <span class="required">*</span><br/>
17 <p><label for="user_lastname"><%=l(:field_lastname)%></label> <span class="required">*</span><br/>
18 18 <%= text_field 'user', 'lastname' %></p>
19 19
20 <p><label for="user_mail"><%=_('Mail')%></label> <span class="required">*</span><br/>
20 <p><label for="user_mail"><%=l(:field_mail)%></label> <span class="required">*</span><br/>
21 21 <%= text_field 'user', 'mail' %></p>
22 22
23 <p><label for="user_language"><%=_('Language')%></label><br/>
24 <%= select("user", "language", Localization.langs.invert) %></p>
23 <p><label for="user_language"><%=l(:field_language)%></label><br/>
24 <%= select("user", "language", lang_options_for_select) %></p>
25 25
26 26 <% for custom_value in @custom_values %>
27 27 <p><%= custom_field_tag_with_label custom_value %></p>
@@ -29,9 +29,9
29 29
30 30 <div style="clear: both;"></div>
31 31
32 <p><%= check_box 'user', 'admin' %> <label for="user_admin"><%=_('Administrator')%></label></p>
32 <p><%= check_box 'user', 'admin' %> <label for="user_admin"><%=l(:field_admin)%></label></p>
33 33
34 <p><%= check_box 'user', 'mail_notification' %> <label for="user_mail_notification"><%=_('Mail notifications')%></label></p>
34 <p><%= check_box 'user', 'mail_notification' %> <label for="user_mail_notification"><%=l(:field_mail_notification)%></label></p>
35 35
36 36 <!--[eoform:user]-->
37 37 </div>
@@ -1,6 +1,6
1 <h2><%=_('New user')%></h2>
1 <h2><%=l(:label_user_new)%></h2>
2 2
3 3 <%= start_form_tag :action => 'add' %>
4 4 <%= render :partial => 'form' %>
5 <%= submit_tag _('Create') %>
5 <%= submit_tag l(:button_create) %>
6 6 <%= end_form_tag %>
@@ -1,7 +1,6
1 <h2><%=_('User')%></h2>
1 <h2><%=l(:label_user)%></h2>
2 2
3 3 <%= start_form_tag :action => 'edit', :id => @user %>
4 4 <%= render :partial => 'form' %>
5 <%= submit_tag _('Save') %>
6
5 <%= submit_tag l(:button_save) %>
7 6 <%= end_form_tag %>
@@ -1,15 +1,15
1 <h2><%=_('Users')%></h2>
1 <h2><%=l(:label_user_plural)%></h2>
2 2
3 3 <table border="0" cellspacing="1" cellpadding="2" class="listTableContent">
4 4 <tr class="ListHead">
5 <%= sort_header_tag('login', :caption => _('Login')) %>
6 <%= sort_header_tag('firstname', :caption => _('Firstname')) %>
7 <%= sort_header_tag('lastname', :caption => _('Lastname')) %>
8 <th><%=_('Mail')%></th>
9 <%= sort_header_tag('admin', :caption => _('Admin')) %>
10 <%= sort_header_tag('status', :caption => _('Status')) %>
11 <%= sort_header_tag('created_on', :caption => _('Created on')) %>
12 <%= sort_header_tag('last_login_on', :caption => _('Last login')) %>
5 <%= sort_header_tag('login', :caption => l(:field_login)) %>
6 <%= sort_header_tag('firstname', :caption => l(:field_firstname)) %>
7 <%= sort_header_tag('lastname', :caption => l(:field_lastname)) %>
8 <th><%=l(:field_mail)%></th>
9 <%= sort_header_tag('admin', :caption => l(:field_admin)) %>
10 <%= sort_header_tag('status', :caption => l(:field_status)) %>
11 <%= sort_header_tag('created_on', :caption => l(:field_created_on)) %>
12 <%= sort_header_tag('last_login_on', :caption => l(:field_last_login_on)) %>
13 13 <th></th>
14 14 </tr>
15 15 <% for user in @users %>
@@ -26,10 +26,10
26 26 <%= start_form_tag :action => 'edit', :id => user %>
27 27 <% if user.locked? %>
28 28 <%= hidden_field_tag 'user[status]', User::STATUS_ACTIVE %>
29 <%= submit_tag _('Unlock'), :class => "button-small" %>
29 <%= submit_tag l(:button_unlock), :class => "button-small" %>
30 30 <% else %>
31 31 <%= hidden_field_tag 'user[status]', User::STATUS_LOCKED %>
32 <%= submit_tag _('Lock'), :class => "button-small" %>
32 <%= submit_tag l(:button_lock), :class => "button-small" %>
33 33 <% end %>
34 34 <%= end_form_tag %>
35 35 </td>
@@ -42,5 +42,5
42 42 </p>
43 43
44 44 <p>
45 <%= link_to '&#187; ' + _('New user'), :action => 'add' %>
45 <%= link_to '&#187; ' + l(:label_user_new), :action => 'add' %>
46 46 </p> No newline at end of file
@@ -1,13 +1,13
1 1 <%= error_messages_for 'version' %>
2 2
3 3 <!--[form:version]-->
4 <p><label for="version_name"><%=_('Version')%></label> <span class="required">*</span><br/>
4 <p><label for="version_name"><%=l(:field_name)%></label> <span class="required">*</span><br/>
5 5 <%= text_field 'version', 'name', :size => 20 %></p>
6 6
7 <p><label for="version_description"><%=_('Description')%></label><br/>
7 <p><label for="version_description"><%=l(:field_description)%></label><br/>
8 8 <%= text_field 'version', 'description', :size => 60 %></p>
9 9
10 <p><label for="version_effective_date"><%=_('Date')%></label><br/>
10 <p><label for="version_effective_date"><%=l(:field_effective_date)%></label><br/>
11 11 <%= date_select 'version', 'effective_date' %></p>
12 12 <!--[eoform:version]-->
13 13
@@ -1,8 +1,8
1 <h2><%=_('Version')%></h2>
1 <h2><%=l(:label_version)%></h2>
2 2
3 3 <%= start_form_tag :action => 'edit', :id => @version %>
4 4 <%= render :partial => 'form' %>
5 <%= submit_tag _('Save') %>
5 <%= submit_tag l(:button_save) %>
6 6 <%= end_form_tag %>
7 7
8 8
@@ -1,14 +1,14
1 1 <div class="splitcontentleft">
2 <h2><%= $RDM_WELCOME_TITLE || _('Welcome') %> !</h2>
2 <h2><%= $RDM_WELCOME_TITLE || l(:label_home) %></h2>
3 3 <p><%= $RDM_WELCOME_TEXT %></p>
4 4
5 5 <div class="box">
6 <h3><%=_('Latest news')%></h3>
6 <h3><%=l(:label_news_latest)%></h3>
7 7 <% for news in @news %>
8 8 <p>
9 9 <b><%= news.title %></b> (<%= link_to_user news.author %> <%= format_time(news.created_on) %> - <%= news.project.name %>)<br />
10 10 <%= news.summary %><br />
11 [<%= link_to 'Read...', :controller => 'news', :action => 'show', :id => news %>]
11 [<%= link_to l(:label_read), :controller => 'news', :action => 'show', :id => news %>]
12 12 </p>
13 13 <hr />
14 14 <% end %>
@@ -17,15 +17,14
17 17
18 18 <div class="splitcontentright">
19 19 <div class="box">
20 <h3><%=_('Latest projects')%></h3>
20 <h3><%=l(:label_project_latest)%></h3>
21 21 <ul>
22 22 <% for project in @projects %>
23 23 <li>
24 <%= link_to project.name, :controller => 'projects', :action => 'show', :id => project %> (added <%= format_time(project.created_on) %>)<br />
24 <%= link_to project.name, :controller => 'projects', :action => 'show', :id => project %> (<%= format_time(project.created_on) %>)<br />
25 25 <%= project.description %>
26 26 </li>
27 27 <% end %>
28 28 </ul>
29 </div>
30
29 </div>
31 30 </div>
@@ -78,7 +78,7 class Setup < ActiveRecord::Migration
78 78 t.column "project_id", :integer, :default => 0, :null => false
79 79 t.column "category_id", :integer, :default => 0, :null => false
80 80 t.column "title", :string, :limit => 60, :default => "", :null => false
81 t.column "description", :text, :default => "", :null => false
81 t.column "description", :text, :default => ""
82 82 t.column "created_on", :timestamp
83 83 end
84 84
@@ -113,7 +113,8 class Setup < ActiveRecord::Migration
113 113 t.column "tracker_id", :integer, :default => 0, :null => false
114 114 t.column "project_id", :integer, :default => 0, :null => false
115 115 t.column "subject", :string, :default => "", :null => false
116 t.column "description", :text, :default => "", :null => false
116 t.column "description", :text, :default => "", :null => false
117 t.column "due_date", :date
117 118 t.column "category_id", :integer
118 119 t.column "status_id", :integer, :default => 0, :null => false
119 120 t.column "assigned_to_id", :integer
@@ -219,55 +220,55 class Setup < ActiveRecord::Migration
219 220 end
220 221
221 222 # project
222 Permission.create :controller => "projects", :action => "show", :description => "Overview", :sort => 100, :is_public => true
223 Permission.create :controller => "projects", :action => "changelog", :description => "View change log", :sort => 105, :is_public => true
224 Permission.create :controller => "reports", :action => "issue_report", :description => "View reports", :sort => 110, :is_public => true
225 Permission.create :controller => "projects", :action => "settings", :description => "Settings", :sort => 150
226 Permission.create :controller => "projects", :action => "edit", :description => "Edit", :sort => 151
223 Permission.create :controller => "projects", :action => "show", :description => "label_overview", :sort => 100, :is_public => true
224 Permission.create :controller => "projects", :action => "changelog", :description => "label_change_log", :sort => 105, :is_public => true
225 Permission.create :controller => "reports", :action => "issue_report", :description => "label_report_plural", :sort => 110, :is_public => true
226 Permission.create :controller => "projects", :action => "settings", :description => "label_settings", :sort => 150
227 Permission.create :controller => "projects", :action => "edit", :description => "button_edit", :sort => 151
227 228 # members
228 Permission.create :controller => "projects", :action => "list_members", :description => "View list", :sort => 200, :is_public => true
229 Permission.create :controller => "projects", :action => "add_member", :description => "New member", :sort => 220
230 Permission.create :controller => "members", :action => "edit", :description => "Edit", :sort => 221
231 Permission.create :controller => "members", :action => "destroy", :description => "Delete", :sort => 222
229 Permission.create :controller => "projects", :action => "list_members", :description => "button_list", :sort => 200, :is_public => true
230 Permission.create :controller => "projects", :action => "add_member", :description => "button_add", :sort => 220
231 Permission.create :controller => "members", :action => "edit", :description => "button_edit", :sort => 221
232 Permission.create :controller => "members", :action => "destroy", :description => "button_delete", :sort => 222
232 233 # versions
233 Permission.create :controller => "projects", :action => "add_version", :description => "New version", :sort => 320
234 Permission.create :controller => "versions", :action => "edit", :description => "Edit", :sort => 321
235 Permission.create :controller => "versions", :action => "destroy", :description => "Delete", :sort => 322
234 Permission.create :controller => "projects", :action => "add_version", :description => "button_add", :sort => 320
235 Permission.create :controller => "versions", :action => "edit", :description => "button_edit", :sort => 321
236 Permission.create :controller => "versions", :action => "destroy", :description => "button_delete", :sort => 322
236 237 # issue categories
237 Permission.create :controller => "projects", :action => "add_issue_category", :description => "New issue category", :sort => 420
238 Permission.create :controller => "issue_categories", :action => "edit", :description => "Edit", :sort => 421
239 Permission.create :controller => "issue_categories", :action => "destroy", :description => "Delete", :sort => 422
238 Permission.create :controller => "projects", :action => "add_issue_category", :description => "button_add", :sort => 420
239 Permission.create :controller => "issue_categories", :action => "edit", :description => "button_edit", :sort => 421
240 Permission.create :controller => "issue_categories", :action => "destroy", :description => "button_delete", :sort => 422
240 241 # issues
241 Permission.create :controller => "projects", :action => "list_issues", :description => "View list", :sort => 1000, :is_public => true
242 Permission.create :controller => "projects", :action => "export_issues_csv", :description => "Export list to CSV", :sort => 1001, :is_public => true
243 Permission.create :controller => "issues", :action => "show", :description => "View", :sort => 1005, :is_public => true
244 Permission.create :controller => "issues", :action => "download", :description => "Download file", :sort => 1010, :is_public => true
245 Permission.create :controller => "projects", :action => "add_issue", :description => "Report an issue", :sort => 1050, :mail_option => 1, :mail_enabled => 1
246 Permission.create :controller => "issues", :action => "edit", :description => "Edit", :sort => 1055
247 Permission.create :controller => "issues", :action => "change_status", :description => "Change status", :sort => 1060, :mail_option => 1, :mail_enabled => 1
248 Permission.create :controller => "issues", :action => "destroy", :description => "Delete", :sort => 1065
249 Permission.create :controller => "issues", :action => "add_attachment", :description => "Add file", :sort => 1070
250 Permission.create :controller => "issues", :action => "destroy_attachment", :description => "Delete file", :sort => 1075
242 Permission.create :controller => "projects", :action => "list_issues", :description => "button_list", :sort => 1000, :is_public => true
243 Permission.create :controller => "projects", :action => "export_issues_csv", :description => "label_export_csv", :sort => 1001, :is_public => true
244 Permission.create :controller => "issues", :action => "show", :description => "button_view", :sort => 1005, :is_public => true
245 Permission.create :controller => "issues", :action => "download", :description => "button_download", :sort => 1010, :is_public => true
246 Permission.create :controller => "projects", :action => "add_issue", :description => "button_add", :sort => 1050, :mail_option => 1, :mail_enabled => 1
247 Permission.create :controller => "issues", :action => "edit", :description => "button_edit", :sort => 1055
248 Permission.create :controller => "issues", :action => "change_status", :description => "label_change_status", :sort => 1060, :mail_option => 1, :mail_enabled => 1
249 Permission.create :controller => "issues", :action => "destroy", :description => "button_delete", :sort => 1065
250 Permission.create :controller => "issues", :action => "add_attachment", :description => "label_attachment_new", :sort => 1070
251 Permission.create :controller => "issues", :action => "destroy_attachment", :description => "label_attachment_delete", :sort => 1075
251 252 # news
252 Permission.create :controller => "projects", :action => "list_news", :description => "View list", :sort => 1100, :is_public => true
253 Permission.create :controller => "news", :action => "show", :description => "View", :sort => 1101, :is_public => true
254 Permission.create :controller => "projects", :action => "add_news", :description => "Add", :sort => 1120
255 Permission.create :controller => "news", :action => "edit", :description => "Edit", :sort => 1121
256 Permission.create :controller => "news", :action => "destroy", :description => "Delete", :sort => 1122
253 Permission.create :controller => "projects", :action => "list_news", :description => "button_list", :sort => 1100, :is_public => true
254 Permission.create :controller => "news", :action => "show", :description => "button_view", :sort => 1101, :is_public => true
255 Permission.create :controller => "projects", :action => "add_news", :description => "button_add", :sort => 1120
256 Permission.create :controller => "news", :action => "edit", :description => "button_edit", :sort => 1121
257 Permission.create :controller => "news", :action => "destroy", :description => "button_delete", :sort => 1122
257 258 # documents
258 Permission.create :controller => "projects", :action => "list_documents", :description => "View list", :sort => 1200, :is_public => true
259 Permission.create :controller => "documents", :action => "show", :description => "View", :sort => 1201, :is_public => true
260 Permission.create :controller => "documents", :action => "download", :description => "Download", :sort => 1202, :is_public => true
261 Permission.create :controller => "projects", :action => "add_document", :description => "Add", :sort => 1220
262 Permission.create :controller => "documents", :action => "edit", :description => "Edit", :sort => 1221
263 Permission.create :controller => "documents", :action => "destroy", :description => "Delete", :sort => 1222
264 Permission.create :controller => "documents", :action => "add_attachment", :description => "Add file", :sort => 1223
265 Permission.create :controller => "documents", :action => "destroy_attachment", :description => "Delete file", :sort => 1224
259 Permission.create :controller => "projects", :action => "list_documents", :description => "button_list", :sort => 1200, :is_public => true
260 Permission.create :controller => "documents", :action => "show", :description => "button_view", :sort => 1201, :is_public => true
261 Permission.create :controller => "documents", :action => "download", :description => "button_download", :sort => 1202, :is_public => true
262 Permission.create :controller => "projects", :action => "add_document", :description => "button_add", :sort => 1220
263 Permission.create :controller => "documents", :action => "edit", :description => "button_edit", :sort => 1221
264 Permission.create :controller => "documents", :action => "destroy", :description => "button_delete", :sort => 1222
265 Permission.create :controller => "documents", :action => "add_attachment", :description => "label_attachment_new", :sort => 1223
266 Permission.create :controller => "documents", :action => "destroy_attachment", :description => "label_attachment_delete", :sort => 1224
266 267 # files
267 Permission.create :controller => "projects", :action => "list_files", :description => "View list", :sort => 1300, :is_public => true
268 Permission.create :controller => "versions", :action => "download", :description => "Download", :sort => 1301, :is_public => true
269 Permission.create :controller => "projects", :action => "add_file", :description => "Add", :sort => 1320
270 Permission.create :controller => "versions", :action => "destroy_file", :description => "Delete", :sort => 1322
268 Permission.create :controller => "projects", :action => "list_files", :description => "button_list", :sort => 1300, :is_public => true
269 Permission.create :controller => "versions", :action => "download", :description => "button_download", :sort => 1301, :is_public => true
270 Permission.create :controller => "projects", :action => "add_file", :description => "button_add", :sort => 1320
271 Permission.create :controller => "versions", :action => "destroy_file", :description => "button_delete", :sort => 1322
271 272
272 273 # create default administrator account
273 274 user = User.create :firstname => "redMine", :lastname => "Admin", :mail => "admin@somenet.foo", :mail_notification => true, :language => "en"
@@ -11,19 +11,20 http://redmine.org/
11 11 * token based "lost password" functionality
12 12 * user self-registration functionality (optional)
13 13 * custom fields now available for issues, users and projects
14 * new custom field format "text" (textarea)
15 * project & administration drop down menus in navigation bar
14 * new custom field format "text" (displayed as a textarea field)
15 * project & administration drop down menus in navigation bar for quicker access
16 * "due date" field added on issues
16 17 * error messages internationalization
17 18 * Localization plugin replaced with GLoc 1.1.0
18 19 * new filter in issues list: "Fixed version"
19 * colored background for active filters on issues list
20 * active filters are displayed with colored background on issues list
20 21 * custom configuration is now defined in config/config_custom.rb
21 22 * user object no more stored in session (only user_id)
22 23 * news summary field is no longer required
23 24 * Fixed: boolean custom field not working
24 25 * Fixed: error messages for custom fields are not displayed
25 26 * Fixed: custom fields values are not validated on issue update
26 * Fixed: user unable to choose an empty value for 'List' custom fields
27 * Fixed: unable to choose an empty value for 'List' custom fields
27 28 * Fixed: no issue categories sorting
28 29 * Fixed: incorrect versions sorting
29 30
@@ -42,6 +42,7 general_text_No: 'No'
42 42 general_text_Yes: 'Yes'
43 43 general_text_no: 'no'
44 44 general_text_yes: 'yes'
45 general_lang_en: 'English'
45 46
46 47 notice_account_updated: Account was successfully updated.
47 48 notice_account_invalid_creditentials: Invalid user or password
@@ -1,4 +1,4
1 _gloc_rule_default: '|n| n==1 ? "" : "_plural" '
1 _gloc_rule_default: '|n| n<=1 ? "" : "_plural" '
2 2
3 3 actionview_datehelper_select_day_prefix:
4 4 actionview_datehelper_select_month_names: Janvier,Février,Mars,Avril,Mai,Juin,Juillet,Août,Septembre,Octobre,Novembre,Décembre
@@ -42,6 +42,7 general_text_No: 'Non'
42 42 general_text_Yes: 'Oui'
43 43 general_text_no: 'non'
44 44 general_text_yes: 'oui'
45 general_lang_fr: 'Français'
45 46
46 47 notice_account_updated: Le compte a été mis à jour avec succès.
47 48 notice_account_invalid_creditentials: Identifiant ou mot de passe invalide.
@@ -49,10 +50,11 notice_account_password_updated: Mot de passe mis à jour avec succès.
49 50 notice_account_wrong_password: Mot de passe incorrect
50 51 notice_account_register_done: Un message contenant les instructions pour activer votre compte vous a été envoyé.
51 52 notice_account_unknown_email: Aucun compte ne correspond à cette adresse.
53 notice_can_t_change_password: Ce compte utilise une authentification externe. Impossible de changer le mot de passe.
52 54 notice_account_lost_email_sent: Un message contenant les instructions pour choisir un nouveau mot de passe vous a été envoyé.
53 55 notice_account_activated: Votre compte a été activé. Vous pouvez à présent vous connecter.
54 notice_successful_update: Mise à jour effectuée avec succès.
55 56 notice_successful_create: Création effectuée avec succès.
57 notice_successful_update: Mise à jour effectuée avec succès.
56 58 notice_successful_delete: Suppression effectuée avec succès.
57 59 notice_successful_connection: Connection réussie.
58 60
@@ -90,6 +92,7 field_is_default: Statut par défaut
90 92 field_html_color: Couleur
91 93 field_tracker: Tracker
92 94 field_subject: Sujet
95 field_due_date: Date d'échéance
93 96 field_assigned_to: Assigné à
94 97 field_priority: Priorité
95 98 field_fixed_version: Version corrigée
@@ -127,24 +130,36 label_user_new: Nouvel utilisateur
127 130 label_project: Projet
128 131 label_project_new: Nouveau projet
129 132 label_project_plural: Projets
133 label_project_latest: Derniers projets
130 134 label_issue: Demande
131 135 label_issue_new: Nouvelle demande
132 136 label_issue_plural: Demandes
137 label_issue_view_all: Voir toutes les demandes
138 label_document: Document
139 label_document_new: Nouveau document
140 label_document_plural: Documents
133 141 label_role: Rôle
134 142 label_role_plural: Rôles
135 label_role_add: Nouveau rôle
143 label_role_new: Nouveau rôle
136 144 label_role_and_permissions: Rôles et permissions
145 label_member: Membre
146 label_member_new: Nouveau membre
147 label_member_plural: Membres
137 148 label_tracker: Tracker
138 149 label_tracker_plural: Trackers
139 label_tracker_add: Nouveau tracker
150 label_tracker_new: Nouveau tracker
140 151 label_workflow: Workflow
141 152 label_issue_status: Statut de demandes
142 153 label_issue_status_plural: Statuts de demandes
143 label_issue_status_add: Nouveau statut
154 label_issue_status_new: Nouveau statut
155 label_issue_category: Catégorie de demandes
156 label_issue_category_plural: Catégories de demandes
157 label_issue_category_new: Nouvelle catégorie
144 158 label_custom_field: Champ personnalisé
145 159 label_custom_field_plural: Champs personnalisés
146 160 label_custom_field_new: Nouveau champ personnalisé
147 161 label_enumerations: Listes de valeurs
162 label_enumeration_new: Nouvelle valeur
148 163 label_information: Information
149 164 label_information_plural: Informations
150 165 label_please_login: Identification
@@ -153,6 +168,7 label_password_lost: Mot de passe perdu
153 168 label_home: Accueil
154 169 label_my_page: Ma page
155 170 label_my_account: Mon compte
171 label_my_projects: Mes projets
156 172 label_administration: Administration
157 173 label_login: Connexion
158 174 label_logout: Déconnexion
@@ -182,7 +198,45 label_string: Chaîne
182 198 label_text: Texte
183 199 label_attribute: Attribut
184 200 label_attribute_plural: Attributs
185
201 label_download: %d Téléchargement
202 label_download_plural: %d Téléchargements
203 label_no_data: Aucune donnée à afficher
204 label_change_status: Changer le statut
205 label_history: Historique
206 label_attachment: Fichier
207 label_attachment_new: Nouveau fichier
208 label_attachment_delete: Supprimer le fichier
209 label_attachment_plural: Fichiers
210 label_report: Rapport
211 label_report_plural: Rapports
212 label_news: Annonce
213 label_news_new: Nouvelle annonce
214 label_news_plural: Annonces
215 label_news_latest: Dernières annonces
216 label_news_view_all: Voir toutes les annonces
217 label_change_log: Historique
218 label_settings: Configuration
219 label_overview: Aperçu
220 label_version: Version
221 label_version_new: Nouvelle version
222 label_version_plural: Versions
223 label_confirmation: Confirmation
224 label_export_csv: Exporter en CSV
225 label_read: Lire...
226 label_public_projects: Projets publics
227 label_open_issues: Ouverte
228 label_open_issues_plural: Ouvertes
229 label_closed_issues: Fermée
230 label_closed_issues_plural: Fermées
231 label_total: Total
232 label_permissions: Permissions
233 label_current_status: Statut actuel
234 label_new_statuses_allowed: Nouveaux statuts autorisés
235 label_all: Tous
236 label_none: Aucun
237 label_next: Suivant
238 label_previous: Précédent
239 label_used_by: Utilisé par
186 240
187 241 button_login: Connexion
188 242 button_submit: Soumettre
@@ -192,8 +246,43 button_uncheck_all: Tout décocher
192 246 button_delete: Supprimer
193 247 button_create: Créer
194 248 button_test: Tester
249 button_edit: Modifier
250 button_add: Ajouter
251 button_change: Changer
252 button_apply: Appliquer
253 button_clear: Effacer
254 button_lock: Verrouiller
255 button_unlock: Déverrouiller
256 button_download: Télécharger
257 button_list: Lister
258 button_view: Voir
195 259
196 260 text_select_mail_notifications: Sélectionner les actions pour lesquelles la notification par mail doit être activée.
197 261 text_regexp_info: eg. ^[A-Z0-9]+$
198 262 text_min_max_length_info: 0 pour aucune restriction
199 text_possible_values_info: valeurs séparées par | No newline at end of file
263 text_possible_values_info: valeurs séparées par |
264 text_project_destroy_confirmation: Etes-vous sûr de vouloir supprimer ce projet et tout ce qui lui est rattaché ?
265 text_workflow_edit: Sélectionner un tracker et un rôle pour éditer le workflow
266
267 default_role_manager: Manager
268 default_role_developper: Développeur
269 default_role_reporter: Rapporteur
270 default_tracker_bug: Anomalie
271 default_tracker_feature: Evolution
272 default_tracker_support: Assistance
273 default_issue_status_new: Nouveau
274 default_issue_status_assigned: Assigné
275 default_issue_status_resolved: Résolu
276 default_issue_status_feedback: Commentaire
277 default_issue_status_closed: Fermé
278 default_issue_status_rejected: Rejeté
279 default_doc_category_user: Documentation utilisateur
280 default_doc_category_tech: Documentation technique
281 default_priority_low: Bas
282 default_priority_normal: Normal
283 default_priority_high: Haut
284 default_priority_urgent: Urgent
285 default_priority_immediate: Immédiat
286
287 enumeration_issue_priorities: Priorités des demandes
288 enumeration_doc_categories: Catégories des documents
@@ -2,7 +2,7
2 2 permissions_041:
3 3 action: add_file
4 4 id: 41
5 description: Add
5 description: button_add
6 6 controller: projects
7 7 mail_enabled: false
8 8 mail_option: false
@@ -11,7 +11,7 permissions_041:
11 11 permissions_030:
12 12 action: destroy
13 13 id: 30
14 description: Delete
14 description: button_delete
15 15 controller: news
16 16 mail_enabled: false
17 17 mail_option: false
@@ -20,7 +20,7 permissions_030:
20 20 permissions_019:
21 21 action: download
22 22 id: 19
23 description: Download file
23 description: button_download
24 24 controller: issues
25 25 mail_enabled: false
26 26 mail_option: false
@@ -29,7 +29,7 permissions_019:
29 29 permissions_008:
30 30 action: edit
31 31 id: 8
32 description: Edit
32 description: button_edit
33 33 controller: members
34 34 mail_enabled: false
35 35 mail_option: false
@@ -38,7 +38,7 permissions_008:
38 38 permissions_042:
39 39 action: destroy_file
40 40 id: 42
41 description: Delete
41 description: button_delete
42 42 controller: versions
43 43 mail_enabled: false
44 44 mail_option: false
@@ -47,7 +47,7 permissions_042:
47 47 permissions_031:
48 48 action: list_documents
49 49 id: 31
50 description: View list
50 description: button_list
51 51 controller: projects
52 52 mail_enabled: false
53 53 mail_option: false
@@ -56,7 +56,7 permissions_031:
56 56 permissions_020:
57 57 action: add_issue
58 58 id: 20
59 description: Report an issue
59 description: button_add
60 60 controller: projects
61 61 mail_enabled: true
62 62 mail_option: true
@@ -65,7 +65,7 permissions_020:
65 65 permissions_009:
66 66 action: destroy
67 67 id: 9
68 description: Delete
68 description: button_delete
69 69 controller: members
70 70 mail_enabled: false
71 71 mail_option: false
@@ -74,7 +74,7 permissions_009:
74 74 permissions_032:
75 75 action: show
76 76 id: 32
77 description: View
77 description: button_view
78 78 controller: documents
79 79 mail_enabled: false
80 80 mail_option: false
@@ -83,7 +83,7 permissions_032:
83 83 permissions_021:
84 84 action: edit
85 85 id: 21
86 description: Edit
86 description: button_edit
87 87 controller: issues
88 88 mail_enabled: false
89 89 mail_option: false
@@ -92,7 +92,7 permissions_021:
92 92 permissions_010:
93 93 action: add_version
94 94 id: 10
95 description: New version
95 description: button_add
96 96 controller: projects
97 97 mail_enabled: false
98 98 mail_option: false
@@ -101,7 +101,7 permissions_010:
101 101 permissions_033:
102 102 action: download
103 103 id: 33
104 description: Download
104 description: button_download
105 105 controller: documents
106 106 mail_enabled: false
107 107 mail_option: false
@@ -110,7 +110,7 permissions_033:
110 110 permissions_022:
111 111 action: change_status
112 112 id: 22
113 description: Change status
113 description: label_change_status
114 114 controller: issues
115 115 mail_enabled: true
116 116 mail_option: true
@@ -119,7 +119,7 permissions_022:
119 119 permissions_011:
120 120 action: edit
121 121 id: 11
122 description: Edit
122 description: button_edit
123 123 controller: versions
124 124 mail_enabled: false
125 125 mail_option: false
@@ -128,7 +128,7 permissions_011:
128 128 permissions_034:
129 129 action: add_document
130 130 id: 34
131 description: Add
131 description: button_add
132 132 controller: projects
133 133 mail_enabled: false
134 134 mail_option: false
@@ -137,7 +137,7 permissions_034:
137 137 permissions_023:
138 138 action: destroy
139 139 id: 23
140 description: Delete
140 description: button_delete
141 141 controller: issues
142 142 mail_enabled: false
143 143 mail_option: false
@@ -146,7 +146,7 permissions_023:
146 146 permissions_012:
147 147 action: destroy
148 148 id: 12
149 description: Delete
149 description: button_delete
150 150 controller: versions
151 151 mail_enabled: false
152 152 mail_option: false
@@ -155,7 +155,7 permissions_012:
155 155 permissions_001:
156 156 action: show
157 157 id: 1
158 description: Overview
158 description: label_overview
159 159 controller: projects
160 160 mail_enabled: false
161 161 mail_option: false
@@ -164,7 +164,7 permissions_001:
164 164 permissions_035:
165 165 action: edit
166 166 id: 35
167 description: Edit
167 description: button_edit
168 168 controller: documents
169 169 mail_enabled: false
170 170 mail_option: false
@@ -173,7 +173,7 permissions_035:
173 173 permissions_024:
174 174 action: add_attachment
175 175 id: 24
176 description: Add file
176 description: label_attachment_new
177 177 controller: issues
178 178 mail_enabled: false
179 179 mail_option: false
@@ -182,7 +182,7 permissions_024:
182 182 permissions_013:
183 183 action: add_issue_category
184 184 id: 13
185 description: New issue category
185 description: button_add
186 186 controller: projects
187 187 mail_enabled: false
188 188 mail_option: false
@@ -191,7 +191,7 permissions_013:
191 191 permissions_002:
192 192 action: changelog
193 193 id: 2
194 description: View change log
194 description: label_change_log
195 195 controller: projects
196 196 mail_enabled: false
197 197 mail_option: false
@@ -200,7 +200,7 permissions_002:
200 200 permissions_036:
201 201 action: destroy
202 202 id: 36
203 description: Delete
203 description: button_delete
204 204 controller: documents
205 205 mail_enabled: false
206 206 mail_option: false
@@ -209,7 +209,7 permissions_036:
209 209 permissions_025:
210 210 action: destroy_attachment
211 211 id: 25
212 description: Delete file
212 description: label_attachment_delete
213 213 controller: issues
214 214 mail_enabled: false
215 215 mail_option: false
@@ -218,7 +218,7 permissions_025:
218 218 permissions_014:
219 219 action: edit
220 220 id: 14
221 description: Edit
221 description: button_edit
222 222 controller: issue_categories
223 223 mail_enabled: false
224 224 mail_option: false
@@ -227,7 +227,7 permissions_014:
227 227 permissions_003:
228 228 action: issue_report
229 229 id: 3
230 description: View reports
230 description: label_report_plural
231 231 controller: reports
232 232 mail_enabled: false
233 233 mail_option: false
@@ -236,7 +236,7 permissions_003:
236 236 permissions_037:
237 237 action: add_attachment
238 238 id: 37
239 description: Add file
239 description: label_attachment_new
240 240 controller: documents
241 241 mail_enabled: false
242 242 mail_option: false
@@ -245,7 +245,7 permissions_037:
245 245 permissions_026:
246 246 action: list_news
247 247 id: 26
248 description: View list
248 description: button_list
249 249 controller: projects
250 250 mail_enabled: false
251 251 mail_option: false
@@ -254,7 +254,7 permissions_026:
254 254 permissions_015:
255 255 action: destroy
256 256 id: 15
257 description: Delete
257 description: button_delete
258 258 controller: issue_categories
259 259 mail_enabled: false
260 260 mail_option: false
@@ -263,7 +263,7 permissions_015:
263 263 permissions_004:
264 264 action: settings
265 265 id: 4
266 description: Settings
266 description: label_settings
267 267 controller: projects
268 268 mail_enabled: false
269 269 mail_option: false
@@ -272,7 +272,7 permissions_004:
272 272 permissions_038:
273 273 action: destroy_attachment
274 274 id: 38
275 description: Delete file
275 description: label_attachment_delete
276 276 controller: documents
277 277 mail_enabled: false
278 278 mail_option: false
@@ -281,7 +281,7 permissions_038:
281 281 permissions_027:
282 282 action: show
283 283 id: 27
284 description: View
284 description: button_view
285 285 controller: news
286 286 mail_enabled: false
287 287 mail_option: false
@@ -290,7 +290,7 permissions_027:
290 290 permissions_016:
291 291 action: list_issues
292 292 id: 16
293 description: View list
293 description: button_list
294 294 controller: projects
295 295 mail_enabled: false
296 296 mail_option: false
@@ -299,7 +299,7 permissions_016:
299 299 permissions_005:
300 300 action: edit
301 301 id: 5
302 description: Edit
302 description: button_edit
303 303 controller: projects
304 304 mail_enabled: false
305 305 mail_option: false
@@ -308,7 +308,7 permissions_005:
308 308 permissions_039:
309 309 action: list_files
310 310 id: 39
311 description: View list
311 description: button_list
312 312 controller: projects
313 313 mail_enabled: false
314 314 mail_option: false
@@ -317,7 +317,7 permissions_039:
317 317 permissions_028:
318 318 action: add_news
319 319 id: 28
320 description: Add
320 description: button_add
321 321 controller: projects
322 322 mail_enabled: false
323 323 mail_option: false
@@ -326,7 +326,7 permissions_028:
326 326 permissions_017:
327 327 action: export_issues_csv
328 328 id: 17
329 description: Export list to CSV
329 description: label_export_csv
330 330 controller: projects
331 331 mail_enabled: false
332 332 mail_option: false
@@ -335,7 +335,7 permissions_017:
335 335 permissions_006:
336 336 action: list_members
337 337 id: 6
338 description: View list
338 description: button_list
339 339 controller: projects
340 340 mail_enabled: false
341 341 mail_option: false
@@ -344,7 +344,7 permissions_006:
344 344 permissions_040:
345 345 action: download
346 346 id: 40
347 description: Download
347 description: button_download
348 348 controller: versions
349 349 mail_enabled: false
350 350 mail_option: false
@@ -353,7 +353,7 permissions_040:
353 353 permissions_029:
354 354 action: edit
355 355 id: 29
356 description: Edit
356 description: button_edit
357 357 controller: news
358 358 mail_enabled: false
359 359 mail_option: false
@@ -362,7 +362,7 permissions_029:
362 362 permissions_018:
363 363 action: show
364 364 id: 18
365 description: View
365 description: button_view
366 366 controller: issues
367 367 mail_enabled: false
368 368 mail_option: false
@@ -371,7 +371,7 permissions_018:
371 371 permissions_007:
372 372 action: add_member
373 373 id: 7
374 description: New member
374 description: button_add
375 375 controller: projects
376 376 mail_enabled: false
377 377 mail_option: false
@@ -41,10 +41,6 class AccountTest < ActionController::IntegrationTest
41 41 assert_response :success
42 42 assert_tag :tag => "div", :attributes => { :class => "errorExplanation" }
43 43
44 post "account/change_password", :password => 'admiN', :new_password => "hello", :new_password_confirmation => "hello"
45 assert_response :success
46 assert_equal 'Wrong password', flash[:notice]
47
48 44 post "account/change_password", :password => 'jsmith', :new_password => "hello", :new_password_confirmation => "hello"
49 45 assert_response :success
50 46 log_user('jsmith', 'hello')
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed, binary diff hidden
General Comments 0
You need to be logged in to leave comments. Login now