##// END OF EJS Templates
Add a Email Header setting. Useful for adding delimiters to every email....
Eric Davis -
r4248:7e359d3d7e13
parent child
Show More
@@ -1,32 +1,33
1 1 <html>
2 2 <head>
3 3 <style>
4 4 body {
5 5 font-family: Verdana, sans-serif;
6 6 font-size: 0.8em;
7 7 color:#484848;
8 8 }
9 9 h1, h2, h3 { font-family: "Trebuchet MS", Verdana, sans-serif; margin: 0px; }
10 10 h1 { font-size: 1.2em; }
11 11 h2, h3 { font-size: 1.1em; }
12 12 a, a:link, a:visited { color: #2A5685;}
13 13 a:hover, a:active { color: #c61a1a; }
14 14 a.wiki-anchor { display: none; }
15 15 hr {
16 16 width: 100%;
17 17 height: 1px;
18 18 background: #ccc;
19 19 border: 0;
20 20 }
21 21 .footer {
22 22 font-size: 0.8em;
23 23 font-style: italic;
24 24 }
25 25 </style>
26 26 </head>
27 27 <body>
28 <span class="header"><%= Redmine::WikiFormatting.to_html(Setting.text_formatting, Setting.emails_header) %></span>
28 29 <%= yield %>
29 30 <hr />
30 31 <span class="footer"><%= Redmine::WikiFormatting.to_html(Setting.text_formatting, Setting.emails_footer) %></span>
31 32 </body>
32 33 </html>
@@ -1,3 +1,4
1 <%= Setting.emails_header %>
1 2 <%= yield %>
2 3 --
3 4 <%= Setting.emails_footer %>
@@ -1,38 +1,42
1 1 <% if @deliveries %>
2 2 <% form_tag({:action => 'edit', :tab => 'notifications'}) do %>
3 3
4 4 <div class="box tabular settings">
5 5 <p><%= setting_text_field :mail_from, :size => 60 %></p>
6 6
7 7 <p><%= setting_check_box :bcc_recipients %></p>
8 8
9 9 <p><%= setting_check_box :plain_text_mail %></p>
10 10
11 11 <p><%= setting_select(:default_notification_option, User::MAIL_NOTIFICATION_OPTIONS.collect {|o| [l(o.last), o.first.to_s]}) %></p>
12 12
13 13 </div>
14 14
15 15 <fieldset class="box" id="notified_events"><legend><%=l(:text_select_mail_notifications)%></legend>
16 16 <%= hidden_field_tag 'settings[notified_events][]', '' %>
17 17 <% @notifiables.each do |notifiable| %>
18 18 <%= notification_field notifiable %>
19 19 <br />
20 20 <% end %>
21 21 <p><%= check_all_links('notified_events') %></p>
22 22 </fieldset>
23 23
24 <fieldset class="box"><legend><%= l(:setting_emails_header) %></legend>
25 <%= setting_text_area :emails_header, :label => false, :class => 'wiki-edit', :rows => 5 %>
26 </fieldset>
27
24 28 <fieldset class="box"><legend><%= l(:setting_emails_footer) %></legend>
25 29 <%= setting_text_area :emails_footer, :label => false, :class => 'wiki-edit', :rows => 5 %>
26 30 </fieldset>
27 31
28 32 <div style="float:right;">
29 33 <%= link_to l(:label_send_test_email), :controller => 'admin', :action => 'test_email' %>
30 34 </div>
31 35
32 36 <%= submit_tag l(:button_save) %>
33 37 <% end %>
34 38 <% else %>
35 39 <div class="nodata">
36 40 <%= simple_format(l(:text_email_delivery_not_configured)) %>
37 41 </div>
38 42 <% end %>
@@ -1,927 +1,928
1 1 en:
2 2 # Text direction: Left-to-Right (ltr) or Right-to-Left (rtl)
3 3 direction: ltr
4 4 date:
5 5 formats:
6 6 # Use the strftime parameters for formats.
7 7 # When no format has been given, it uses default.
8 8 # You can provide other formats here if you like!
9 9 default: "%m/%d/%Y"
10 10 short: "%b %d"
11 11 long: "%B %d, %Y"
12 12
13 13 day_names: [Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday]
14 14 abbr_day_names: [Sun, Mon, Tue, Wed, Thu, Fri, Sat]
15 15
16 16 # Don't forget the nil at the beginning; there's no such thing as a 0th month
17 17 month_names: [~, January, February, March, April, May, June, July, August, September, October, November, December]
18 18 abbr_month_names: [~, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec]
19 19 # Used in date_select and datime_select.
20 20 order: [ :year, :month, :day ]
21 21
22 22 time:
23 23 formats:
24 24 default: "%m/%d/%Y %I:%M %p"
25 25 time: "%I:%M %p"
26 26 short: "%d %b %H:%M"
27 27 long: "%B %d, %Y %H:%M"
28 28 am: "am"
29 29 pm: "pm"
30 30
31 31 datetime:
32 32 distance_in_words:
33 33 half_a_minute: "half a minute"
34 34 less_than_x_seconds:
35 35 one: "less than 1 second"
36 36 other: "less than {{count}} seconds"
37 37 x_seconds:
38 38 one: "1 second"
39 39 other: "{{count}} seconds"
40 40 less_than_x_minutes:
41 41 one: "less than a minute"
42 42 other: "less than {{count}} minutes"
43 43 x_minutes:
44 44 one: "1 minute"
45 45 other: "{{count}} minutes"
46 46 about_x_hours:
47 47 one: "about 1 hour"
48 48 other: "about {{count}} hours"
49 49 x_days:
50 50 one: "1 day"
51 51 other: "{{count}} days"
52 52 about_x_months:
53 53 one: "about 1 month"
54 54 other: "about {{count}} months"
55 55 x_months:
56 56 one: "1 month"
57 57 other: "{{count}} months"
58 58 about_x_years:
59 59 one: "about 1 year"
60 60 other: "about {{count}} years"
61 61 over_x_years:
62 62 one: "over 1 year"
63 63 other: "over {{count}} years"
64 64 almost_x_years:
65 65 one: "almost 1 year"
66 66 other: "almost {{count}} years"
67 67
68 68 number:
69 69 # Default format for numbers
70 70 format:
71 71 separator: "."
72 72 delimiter: ""
73 73 precision: 3
74 74 human:
75 75 format:
76 76 delimiter: ""
77 77 precision: 1
78 78 storage_units:
79 79 format: "%n %u"
80 80 units:
81 81 byte:
82 82 one: "Byte"
83 83 other: "Bytes"
84 84 kb: "kB"
85 85 mb: "MB"
86 86 gb: "GB"
87 87 tb: "TB"
88 88
89 89
90 90 # Used in array.to_sentence.
91 91 support:
92 92 array:
93 93 sentence_connector: "and"
94 94 skip_last_comma: false
95 95
96 96 activerecord:
97 97 errors:
98 98 messages:
99 99 inclusion: "is not included in the list"
100 100 exclusion: "is reserved"
101 101 invalid: "is invalid"
102 102 confirmation: "doesn't match confirmation"
103 103 accepted: "must be accepted"
104 104 empty: "can't be empty"
105 105 blank: "can't be blank"
106 106 too_long: "is too long (maximum is {{count}} characters)"
107 107 too_short: "is too short (minimum is {{count}} characters)"
108 108 wrong_length: "is the wrong length (should be {{count}} characters)"
109 109 taken: "has already been taken"
110 110 not_a_number: "is not a number"
111 111 not_a_date: "is not a valid date"
112 112 greater_than: "must be greater than {{count}}"
113 113 greater_than_or_equal_to: "must be greater than or equal to {{count}}"
114 114 equal_to: "must be equal to {{count}}"
115 115 less_than: "must be less than {{count}}"
116 116 less_than_or_equal_to: "must be less than or equal to {{count}}"
117 117 odd: "must be odd"
118 118 even: "must be even"
119 119 greater_than_start_date: "must be greater than start date"
120 120 not_same_project: "doesn't belong to the same project"
121 121 circular_dependency: "This relation would create a circular dependency"
122 122 cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
123 123
124 124 actionview_instancetag_blank_option: Please select
125 125
126 126 general_text_No: 'No'
127 127 general_text_Yes: 'Yes'
128 128 general_text_no: 'no'
129 129 general_text_yes: 'yes'
130 130 general_lang_name: 'English'
131 131 general_csv_separator: ','
132 132 general_csv_decimal_separator: '.'
133 133 general_csv_encoding: ISO-8859-1
134 134 general_pdf_encoding: ISO-8859-1
135 135 general_first_day_of_week: '7'
136 136
137 137 notice_account_updated: Account was successfully updated.
138 138 notice_account_invalid_creditentials: Invalid user or password
139 139 notice_account_password_updated: Password was successfully updated.
140 140 notice_account_wrong_password: Wrong password
141 141 notice_account_register_done: Account was successfully created. To activate your account, click on the link that was emailed to you.
142 142 notice_account_unknown_email: Unknown user.
143 143 notice_can_t_change_password: This account uses an external authentication source. Impossible to change the password.
144 144 notice_account_lost_email_sent: An email with instructions to choose a new password has been sent to you.
145 145 notice_account_activated: Your account has been activated. You can now log in.
146 146 notice_successful_create: Successful creation.
147 147 notice_successful_update: Successful update.
148 148 notice_successful_delete: Successful deletion.
149 149 notice_successful_connection: Successful connection.
150 150 notice_file_not_found: The page you were trying to access doesn't exist or has been removed.
151 151 notice_locking_conflict: Data has been updated by another user.
152 152 notice_not_authorized: You are not authorized to access this page.
153 153 notice_not_authorized_archived_project: The project you're trying to access has been archived.
154 154 notice_email_sent: "An email was sent to {{value}}"
155 155 notice_email_error: "An error occurred while sending mail ({{value}})"
156 156 notice_feeds_access_key_reseted: Your RSS access key was reset.
157 157 notice_api_access_key_reseted: Your API access key was reset.
158 158 notice_failed_to_save_issues: "Failed to save {{count}} issue(s) on {{total}} selected: {{ids}}."
159 159 notice_failed_to_save_members: "Failed to save member(s): {{errors}}."
160 160 notice_no_issue_selected: "No issue is selected! Please, check the issues you want to edit."
161 161 notice_account_pending: "Your account was created and is now pending administrator approval."
162 162 notice_default_data_loaded: Default configuration successfully loaded.
163 163 notice_unable_delete_version: Unable to delete version.
164 164 notice_unable_delete_time_entry: Unable to delete time log entry.
165 165 notice_issue_done_ratios_updated: Issue done ratios updated.
166 166
167 167 error_can_t_load_default_data: "Default configuration could not be loaded: {{value}}"
168 168 error_scm_not_found: "The entry or revision was not found in the repository."
169 169 error_scm_command_failed: "An error occurred when trying to access the repository: {{value}}"
170 170 error_scm_annotate: "The entry does not exist or can not be annotated."
171 171 error_issue_not_found_in_project: 'The issue was not found or does not belong to this project'
172 172 error_no_tracker_in_project: 'No tracker is associated to this project. Please check the Project settings.'
173 173 error_no_default_issue_status: 'No default issue status is defined. Please check your configuration (Go to "Administration -> Issue statuses").'
174 174 error_can_not_delete_custom_field: Unable to delete custom field
175 175 error_can_not_delete_tracker: "This tracker contains issues and can't be deleted."
176 176 error_can_not_remove_role: "This role is in use and can not be deleted."
177 177 error_can_not_reopen_issue_on_closed_version: 'An issue assigned to a closed version can not be reopened'
178 178 error_can_not_archive_project: This project can not be archived
179 179 error_issue_done_ratios_not_updated: "Issue done ratios not updated."
180 180 error_workflow_copy_source: 'Please select a source tracker or role'
181 181 error_workflow_copy_target: 'Please select target tracker(s) and role(s)'
182 182 error_unable_delete_issue_status: 'Unable to delete issue status'
183 183 error_unable_to_connect: "Unable to connect ({{value}})"
184 184 warning_attachments_not_saved: "{{count}} file(s) could not be saved."
185 185
186 186 mail_subject_lost_password: "Your {{value}} password"
187 187 mail_body_lost_password: 'To change your password, click on the following link:'
188 188 mail_subject_register: "Your {{value}} account activation"
189 189 mail_body_register: 'To activate your account, click on the following link:'
190 190 mail_body_account_information_external: "You can use your {{value}} account to log in."
191 191 mail_body_account_information: Your account information
192 192 mail_subject_account_activation_request: "{{value}} account activation request"
193 193 mail_body_account_activation_request: "A new user ({{value}}) has registered. The account is pending your approval:"
194 194 mail_subject_reminder: "{{count}} issue(s) due in the next {{days}} days"
195 195 mail_body_reminder: "{{count}} issue(s) that are assigned to you are due in the next {{days}} days:"
196 196 mail_subject_wiki_content_added: "'{{id}}' wiki page has been added"
197 197 mail_body_wiki_content_added: "The '{{id}}' wiki page has been added by {{author}}."
198 198 mail_subject_wiki_content_updated: "'{{id}}' wiki page has been updated"
199 199 mail_body_wiki_content_updated: "The '{{id}}' wiki page has been updated by {{author}}."
200 200
201 201 gui_validation_error: 1 error
202 202 gui_validation_error_plural: "{{count}} errors"
203 203
204 204 field_name: Name
205 205 field_description: Description
206 206 field_summary: Summary
207 207 field_is_required: Required
208 208 field_firstname: Firstname
209 209 field_lastname: Lastname
210 210 field_mail: Email
211 211 field_filename: File
212 212 field_filesize: Size
213 213 field_downloads: Downloads
214 214 field_author: Author
215 215 field_created_on: Created
216 216 field_updated_on: Updated
217 217 field_field_format: Format
218 218 field_is_for_all: For all projects
219 219 field_possible_values: Possible values
220 220 field_regexp: Regular expression
221 221 field_min_length: Minimum length
222 222 field_max_length: Maximum length
223 223 field_value: Value
224 224 field_category: Category
225 225 field_title: Title
226 226 field_project: Project
227 227 field_issue: Issue
228 228 field_status: Status
229 229 field_notes: Notes
230 230 field_is_closed: Issue closed
231 231 field_is_default: Default value
232 232 field_tracker: Tracker
233 233 field_subject: Subject
234 234 field_due_date: Due date
235 235 field_assigned_to: Assignee
236 236 field_priority: Priority
237 237 field_fixed_version: Target version
238 238 field_user: User
239 239 field_principal: Principal
240 240 field_role: Role
241 241 field_homepage: Homepage
242 242 field_is_public: Public
243 243 field_parent: Subproject of
244 244 field_is_in_roadmap: Issues displayed in roadmap
245 245 field_login: Login
246 246 field_mail_notification: Email notifications
247 247 field_admin: Administrator
248 248 field_last_login_on: Last connection
249 249 field_language: Language
250 250 field_effective_date: Date
251 251 field_password: Password
252 252 field_new_password: New password
253 253 field_password_confirmation: Confirmation
254 254 field_version: Version
255 255 field_type: Type
256 256 field_host: Host
257 257 field_port: Port
258 258 field_account: Account
259 259 field_base_dn: Base DN
260 260 field_attr_login: Login attribute
261 261 field_attr_firstname: Firstname attribute
262 262 field_attr_lastname: Lastname attribute
263 263 field_attr_mail: Email attribute
264 264 field_onthefly: On-the-fly user creation
265 265 field_start_date: Start date
266 266 field_done_ratio: % Done
267 267 field_auth_source: Authentication mode
268 268 field_hide_mail: Hide my email address
269 269 field_comments: Comment
270 270 field_url: URL
271 271 field_start_page: Start page
272 272 field_subproject: Subproject
273 273 field_hours: Hours
274 274 field_activity: Activity
275 275 field_spent_on: Date
276 276 field_identifier: Identifier
277 277 field_is_filter: Used as a filter
278 278 field_issue_to: Related issue
279 279 field_delay: Delay
280 280 field_assignable: Issues can be assigned to this role
281 281 field_redirect_existing_links: Redirect existing links
282 282 field_estimated_hours: Estimated time
283 283 field_column_names: Columns
284 284 field_time_entries: Log time
285 285 field_time_zone: Time zone
286 286 field_searchable: Searchable
287 287 field_default_value: Default value
288 288 field_comments_sorting: Display comments
289 289 field_parent_title: Parent page
290 290 field_editable: Editable
291 291 field_watcher: Watcher
292 292 field_identity_url: OpenID URL
293 293 field_content: Content
294 294 field_group_by: Group results by
295 295 field_sharing: Sharing
296 296 field_parent_issue: Parent task
297 297 field_member_of_group: "Assignee's group"
298 298 field_assigned_to_role: "Assignee's role"
299 299 field_text: Text field
300 300
301 301 setting_app_title: Application title
302 302 setting_app_subtitle: Application subtitle
303 303 setting_welcome_text: Welcome text
304 304 setting_default_language: Default language
305 305 setting_login_required: Authentication required
306 306 setting_self_registration: Self-registration
307 307 setting_attachment_max_size: Attachment max. size
308 308 setting_issues_export_limit: Issues export limit
309 309 setting_mail_from: Emission email address
310 310 setting_bcc_recipients: Blind carbon copy recipients (bcc)
311 311 setting_plain_text_mail: Plain text mail (no HTML)
312 312 setting_host_name: Host name and path
313 313 setting_text_formatting: Text formatting
314 314 setting_wiki_compression: Wiki history compression
315 315 setting_feeds_limit: Feed content limit
316 316 setting_default_projects_public: New projects are public by default
317 317 setting_autofetch_changesets: Autofetch commits
318 318 setting_sys_api_enabled: Enable WS for repository management
319 319 setting_commit_ref_keywords: Referencing keywords
320 320 setting_commit_fix_keywords: Fixing keywords
321 321 setting_autologin: Autologin
322 322 setting_date_format: Date format
323 323 setting_time_format: Time format
324 324 setting_cross_project_issue_relations: Allow cross-project issue relations
325 325 setting_issue_list_default_columns: Default columns displayed on the issue list
326 326 setting_repositories_encodings: Repositories encodings
327 327 setting_commit_logs_encoding: Commit messages encoding
328 setting_emails_header: Emails header
328 329 setting_emails_footer: Emails footer
329 330 setting_protocol: Protocol
330 331 setting_per_page_options: Objects per page options
331 332 setting_user_format: Users display format
332 333 setting_activity_days_default: Days displayed on project activity
333 334 setting_display_subprojects_issues: Display subprojects issues on main projects by default
334 335 setting_enabled_scm: Enabled SCM
335 336 setting_mail_handler_body_delimiters: "Truncate emails after one of these lines"
336 337 setting_mail_handler_api_enabled: Enable WS for incoming emails
337 338 setting_mail_handler_api_key: API key
338 339 setting_sequential_project_identifiers: Generate sequential project identifiers
339 340 setting_gravatar_enabled: Use Gravatar user icons
340 341 setting_gravatar_default: Default Gravatar image
341 342 setting_diff_max_lines_displayed: Max number of diff lines displayed
342 343 setting_file_max_size_displayed: Max size of text files displayed inline
343 344 setting_repository_log_display_limit: Maximum number of revisions displayed on file log
344 345 setting_openid: Allow OpenID login and registration
345 346 setting_password_min_length: Minimum password length
346 347 setting_new_project_user_role_id: Role given to a non-admin user who creates a project
347 348 setting_default_projects_modules: Default enabled modules for new projects
348 349 setting_issue_done_ratio: Calculate the issue done ratio with
349 350 setting_issue_done_ratio_issue_field: Use the issue field
350 351 setting_issue_done_ratio_issue_status: Use the issue status
351 352 setting_start_of_week: Start calendars on
352 353 setting_rest_api_enabled: Enable REST web service
353 354 setting_cache_formatted_text: Cache formatted text
354 355 setting_default_notification_option: Default notification option
355 356
356 357 permission_add_project: Create project
357 358 permission_add_subprojects: Create subprojects
358 359 permission_edit_project: Edit project
359 360 permission_select_project_modules: Select project modules
360 361 permission_manage_members: Manage members
361 362 permission_manage_project_activities: Manage project activities
362 363 permission_manage_versions: Manage versions
363 364 permission_manage_categories: Manage issue categories
364 365 permission_view_issues: View Issues
365 366 permission_add_issues: Add issues
366 367 permission_edit_issues: Edit issues
367 368 permission_manage_issue_relations: Manage issue relations
368 369 permission_add_issue_notes: Add notes
369 370 permission_edit_issue_notes: Edit notes
370 371 permission_edit_own_issue_notes: Edit own notes
371 372 permission_move_issues: Move issues
372 373 permission_delete_issues: Delete issues
373 374 permission_manage_public_queries: Manage public queries
374 375 permission_save_queries: Save queries
375 376 permission_view_gantt: View gantt chart
376 377 permission_view_calendar: View calendar
377 378 permission_view_issue_watchers: View watchers list
378 379 permission_add_issue_watchers: Add watchers
379 380 permission_delete_issue_watchers: Delete watchers
380 381 permission_log_time: Log spent time
381 382 permission_view_time_entries: View spent time
382 383 permission_edit_time_entries: Edit time logs
383 384 permission_edit_own_time_entries: Edit own time logs
384 385 permission_manage_news: Manage news
385 386 permission_comment_news: Comment news
386 387 permission_manage_documents: Manage documents
387 388 permission_view_documents: View documents
388 389 permission_manage_files: Manage files
389 390 permission_view_files: View files
390 391 permission_manage_wiki: Manage wiki
391 392 permission_rename_wiki_pages: Rename wiki pages
392 393 permission_delete_wiki_pages: Delete wiki pages
393 394 permission_view_wiki_pages: View wiki
394 395 permission_view_wiki_edits: View wiki history
395 396 permission_edit_wiki_pages: Edit wiki pages
396 397 permission_delete_wiki_pages_attachments: Delete attachments
397 398 permission_protect_wiki_pages: Protect wiki pages
398 399 permission_manage_repository: Manage repository
399 400 permission_browse_repository: Browse repository
400 401 permission_view_changesets: View changesets
401 402 permission_commit_access: Commit access
402 403 permission_manage_boards: Manage boards
403 404 permission_view_messages: View messages
404 405 permission_add_messages: Post messages
405 406 permission_edit_messages: Edit messages
406 407 permission_edit_own_messages: Edit own messages
407 408 permission_delete_messages: Delete messages
408 409 permission_delete_own_messages: Delete own messages
409 410 permission_export_wiki_pages: Export wiki pages
410 411 permission_manage_subtasks: Manage subtasks
411 412
412 413 project_module_issue_tracking: Issue tracking
413 414 project_module_time_tracking: Time tracking
414 415 project_module_news: News
415 416 project_module_documents: Documents
416 417 project_module_files: Files
417 418 project_module_wiki: Wiki
418 419 project_module_repository: Repository
419 420 project_module_boards: Boards
420 421 project_module_calendar: Calendar
421 422 project_module_gantt: Gantt
422 423
423 424 label_user: User
424 425 label_user_plural: Users
425 426 label_user_new: New user
426 427 label_user_anonymous: Anonymous
427 428 label_project: Project
428 429 label_project_new: New project
429 430 label_project_plural: Projects
430 431 label_x_projects:
431 432 zero: no projects
432 433 one: 1 project
433 434 other: "{{count}} projects"
434 435 label_project_all: All Projects
435 436 label_project_latest: Latest projects
436 437 label_issue: Issue
437 438 label_issue_new: New issue
438 439 label_issue_plural: Issues
439 440 label_issue_view_all: View all issues
440 441 label_issues_by: "Issues by {{value}}"
441 442 label_issue_added: Issue added
442 443 label_issue_updated: Issue updated
443 444 label_document: Document
444 445 label_document_new: New document
445 446 label_document_plural: Documents
446 447 label_document_added: Document added
447 448 label_role: Role
448 449 label_role_plural: Roles
449 450 label_role_new: New role
450 451 label_role_and_permissions: Roles and permissions
451 452 label_member: Member
452 453 label_member_new: New member
453 454 label_member_plural: Members
454 455 label_tracker: Tracker
455 456 label_tracker_plural: Trackers
456 457 label_tracker_new: New tracker
457 458 label_workflow: Workflow
458 459 label_issue_status: Issue status
459 460 label_issue_status_plural: Issue statuses
460 461 label_issue_status_new: New status
461 462 label_issue_category: Issue category
462 463 label_issue_category_plural: Issue categories
463 464 label_issue_category_new: New category
464 465 label_custom_field: Custom field
465 466 label_custom_field_plural: Custom fields
466 467 label_custom_field_new: New custom field
467 468 label_enumerations: Enumerations
468 469 label_enumeration_new: New value
469 470 label_information: Information
470 471 label_information_plural: Information
471 472 label_please_login: Please log in
472 473 label_register: Register
473 474 label_login_with_open_id_option: or login with OpenID
474 475 label_password_lost: Lost password
475 476 label_home: Home
476 477 label_my_page: My page
477 478 label_my_account: My account
478 479 label_my_projects: My projects
479 480 label_my_page_block: My page block
480 481 label_administration: Administration
481 482 label_login: Sign in
482 483 label_logout: Sign out
483 484 label_help: Help
484 485 label_reported_issues: Reported issues
485 486 label_assigned_to_me_issues: Issues assigned to me
486 487 label_last_login: Last connection
487 488 label_registered_on: Registered on
488 489 label_activity: Activity
489 490 label_overall_activity: Overall activity
490 491 label_user_activity: "{{value}}'s activity"
491 492 label_new: New
492 493 label_logged_as: Logged in as
493 494 label_environment: Environment
494 495 label_authentication: Authentication
495 496 label_auth_source: Authentication mode
496 497 label_auth_source_new: New authentication mode
497 498 label_auth_source_plural: Authentication modes
498 499 label_subproject_plural: Subprojects
499 500 label_subproject_new: New subproject
500 501 label_and_its_subprojects: "{{value}} and its subprojects"
501 502 label_min_max_length: Min - Max length
502 503 label_list: List
503 504 label_date: Date
504 505 label_integer: Integer
505 506 label_float: Float
506 507 label_boolean: Boolean
507 508 label_string: Text
508 509 label_text: Long text
509 510 label_attribute: Attribute
510 511 label_attribute_plural: Attributes
511 512 label_download: "{{count}} Download"
512 513 label_download_plural: "{{count}} Downloads"
513 514 label_no_data: No data to display
514 515 label_change_status: Change status
515 516 label_history: History
516 517 label_attachment: File
517 518 label_attachment_new: New file
518 519 label_attachment_delete: Delete file
519 520 label_attachment_plural: Files
520 521 label_file_added: File added
521 522 label_report: Report
522 523 label_report_plural: Reports
523 524 label_news: News
524 525 label_news_new: Add news
525 526 label_news_plural: News
526 527 label_news_latest: Latest news
527 528 label_news_view_all: View all news
528 529 label_news_added: News added
529 530 label_settings: Settings
530 531 label_overview: Overview
531 532 label_version: Version
532 533 label_version_new: New version
533 534 label_version_plural: Versions
534 535 label_close_versions: Close completed versions
535 536 label_confirmation: Confirmation
536 537 label_export_to: 'Also available in:'
537 538 label_read: Read...
538 539 label_public_projects: Public projects
539 540 label_open_issues: open
540 541 label_open_issues_plural: open
541 542 label_closed_issues: closed
542 543 label_closed_issues_plural: closed
543 544 label_x_open_issues_abbr_on_total:
544 545 zero: 0 open / {{total}}
545 546 one: 1 open / {{total}}
546 547 other: "{{count}} open / {{total}}"
547 548 label_x_open_issues_abbr:
548 549 zero: 0 open
549 550 one: 1 open
550 551 other: "{{count}} open"
551 552 label_x_closed_issues_abbr:
552 553 zero: 0 closed
553 554 one: 1 closed
554 555 other: "{{count}} closed"
555 556 label_total: Total
556 557 label_permissions: Permissions
557 558 label_current_status: Current status
558 559 label_new_statuses_allowed: New statuses allowed
559 560 label_all: all
560 561 label_none: none
561 562 label_nobody: nobody
562 563 label_next: Next
563 564 label_previous: Previous
564 565 label_used_by: Used by
565 566 label_details: Details
566 567 label_add_note: Add a note
567 568 label_per_page: Per page
568 569 label_calendar: Calendar
569 570 label_months_from: months from
570 571 label_gantt: Gantt
571 572 label_internal: Internal
572 573 label_last_changes: "last {{count}} changes"
573 574 label_change_view_all: View all changes
574 575 label_personalize_page: Personalize this page
575 576 label_comment: Comment
576 577 label_comment_plural: Comments
577 578 label_x_comments:
578 579 zero: no comments
579 580 one: 1 comment
580 581 other: "{{count}} comments"
581 582 label_comment_add: Add a comment
582 583 label_comment_added: Comment added
583 584 label_comment_delete: Delete comments
584 585 label_query: Custom query
585 586 label_query_plural: Custom queries
586 587 label_query_new: New query
587 588 label_filter_add: Add filter
588 589 label_filter_plural: Filters
589 590 label_equals: is
590 591 label_not_equals: is not
591 592 label_in_less_than: in less than
592 593 label_in_more_than: in more than
593 594 label_greater_or_equal: '>='
594 595 label_less_or_equal: '<='
595 596 label_in: in
596 597 label_today: today
597 598 label_all_time: all time
598 599 label_yesterday: yesterday
599 600 label_this_week: this week
600 601 label_last_week: last week
601 602 label_last_n_days: "last {{count}} days"
602 603 label_this_month: this month
603 604 label_last_month: last month
604 605 label_this_year: this year
605 606 label_date_range: Date range
606 607 label_less_than_ago: less than days ago
607 608 label_more_than_ago: more than days ago
608 609 label_ago: days ago
609 610 label_contains: contains
610 611 label_not_contains: doesn't contain
611 612 label_day_plural: days
612 613 label_repository: Repository
613 614 label_repository_plural: Repositories
614 615 label_browse: Browse
615 616 label_modification: "{{count}} change"
616 617 label_modification_plural: "{{count}} changes"
617 618 label_branch: Branch
618 619 label_tag: Tag
619 620 label_revision: Revision
620 621 label_revision_plural: Revisions
621 622 label_revision_id: "Revision {{value}}"
622 623 label_associated_revisions: Associated revisions
623 624 label_added: added
624 625 label_modified: modified
625 626 label_copied: copied
626 627 label_renamed: renamed
627 628 label_deleted: deleted
628 629 label_latest_revision: Latest revision
629 630 label_latest_revision_plural: Latest revisions
630 631 label_view_revisions: View revisions
631 632 label_view_all_revisions: View all revisions
632 633 label_max_size: Maximum size
633 634 label_sort_highest: Move to top
634 635 label_sort_higher: Move up
635 636 label_sort_lower: Move down
636 637 label_sort_lowest: Move to bottom
637 638 label_roadmap: Roadmap
638 639 label_roadmap_due_in: "Due in {{value}}"
639 640 label_roadmap_overdue: "{{value}} late"
640 641 label_roadmap_no_issues: No issues for this version
641 642 label_search: Search
642 643 label_result_plural: Results
643 644 label_all_words: All words
644 645 label_wiki: Wiki
645 646 label_wiki_edit: Wiki edit
646 647 label_wiki_edit_plural: Wiki edits
647 648 label_wiki_page: Wiki page
648 649 label_wiki_page_plural: Wiki pages
649 650 label_index_by_title: Index by title
650 651 label_index_by_date: Index by date
651 652 label_current_version: Current version
652 653 label_preview: Preview
653 654 label_feed_plural: Feeds
654 655 label_changes_details: Details of all changes
655 656 label_issue_tracking: Issue tracking
656 657 label_spent_time: Spent time
657 658 label_overall_spent_time: Overall spent time
658 659 label_f_hour: "{{value}} hour"
659 660 label_f_hour_plural: "{{value}} hours"
660 661 label_time_tracking: Time tracking
661 662 label_change_plural: Changes
662 663 label_statistics: Statistics
663 664 label_commits_per_month: Commits per month
664 665 label_commits_per_author: Commits per author
665 666 label_view_diff: View differences
666 667 label_diff_inline: inline
667 668 label_diff_side_by_side: side by side
668 669 label_options: Options
669 670 label_copy_workflow_from: Copy workflow from
670 671 label_permissions_report: Permissions report
671 672 label_watched_issues: Watched issues
672 673 label_related_issues: Related issues
673 674 label_applied_status: Applied status
674 675 label_loading: Loading...
675 676 label_relation_new: New relation
676 677 label_relation_delete: Delete relation
677 678 label_relates_to: related to
678 679 label_duplicates: duplicates
679 680 label_duplicated_by: duplicated by
680 681 label_blocks: blocks
681 682 label_blocked_by: blocked by
682 683 label_precedes: precedes
683 684 label_follows: follows
684 685 label_end_to_start: end to start
685 686 label_end_to_end: end to end
686 687 label_start_to_start: start to start
687 688 label_start_to_end: start to end
688 689 label_stay_logged_in: Stay logged in
689 690 label_disabled: disabled
690 691 label_show_completed_versions: Show completed versions
691 692 label_me: me
692 693 label_board: Forum
693 694 label_board_new: New forum
694 695 label_board_plural: Forums
695 696 label_board_locked: Locked
696 697 label_board_sticky: Sticky
697 698 label_topic_plural: Topics
698 699 label_message_plural: Messages
699 700 label_message_last: Last message
700 701 label_message_new: New message
701 702 label_message_posted: Message added
702 703 label_reply_plural: Replies
703 704 label_send_information: Send account information to the user
704 705 label_year: Year
705 706 label_month: Month
706 707 label_week: Week
707 708 label_date_from: From
708 709 label_date_to: To
709 710 label_language_based: Based on user's language
710 711 label_sort_by: "Sort by {{value}}"
711 712 label_send_test_email: Send a test email
712 713 label_feeds_access_key: RSS access key
713 714 label_missing_feeds_access_key: Missing a RSS access key
714 715 label_feeds_access_key_created_on: "RSS access key created {{value}} ago"
715 716 label_module_plural: Modules
716 717 label_added_time_by: "Added by {{author}} {{age}} ago"
717 718 label_updated_time_by: "Updated by {{author}} {{age}} ago"
718 719 label_updated_time: "Updated {{value}} ago"
719 720 label_jump_to_a_project: Jump to a project...
720 721 label_file_plural: Files
721 722 label_changeset_plural: Changesets
722 723 label_default_columns: Default columns
723 724 label_no_change_option: (No change)
724 725 label_bulk_edit_selected_issues: Bulk edit selected issues
725 726 label_theme: Theme
726 727 label_default: Default
727 728 label_search_titles_only: Search titles only
728 729 label_user_mail_option_all: "For any event on all my projects"
729 730 label_user_mail_option_selected: "For any event on the selected projects only..."
730 731 label_user_mail_option_none: "No events"
731 732 label_user_mail_option_only_my_events: "Only for things I watch or I'm involved in"
732 733 label_user_mail_option_only_assigned: "Only for things I am assigned to"
733 734 label_user_mail_option_only_owner: "Only for things I am the owner of"
734 735 label_user_mail_no_self_notified: "I don't want to be notified of changes that I make myself"
735 736 label_registration_activation_by_email: account activation by email
736 737 label_registration_manual_activation: manual account activation
737 738 label_registration_automatic_activation: automatic account activation
738 739 label_display_per_page: "Per page: {{value}}"
739 740 label_age: Age
740 741 label_change_properties: Change properties
741 742 label_general: General
742 743 label_more: More
743 744 label_scm: SCM
744 745 label_plugins: Plugins
745 746 label_ldap_authentication: LDAP authentication
746 747 label_downloads_abbr: D/L
747 748 label_optional_description: Optional description
748 749 label_add_another_file: Add another file
749 750 label_preferences: Preferences
750 751 label_chronological_order: In chronological order
751 752 label_reverse_chronological_order: In reverse chronological order
752 753 label_planning: Planning
753 754 label_incoming_emails: Incoming emails
754 755 label_generate_key: Generate a key
755 756 label_issue_watchers: Watchers
756 757 label_example: Example
757 758 label_display: Display
758 759 label_sort: Sort
759 760 label_ascending: Ascending
760 761 label_descending: Descending
761 762 label_date_from_to: From {{start}} to {{end}}
762 763 label_wiki_content_added: Wiki page added
763 764 label_wiki_content_updated: Wiki page updated
764 765 label_group: Group
765 766 label_group_plural: Groups
766 767 label_group_new: New group
767 768 label_time_entry_plural: Spent time
768 769 label_version_sharing_none: Not shared
769 770 label_version_sharing_descendants: With subprojects
770 771 label_version_sharing_hierarchy: With project hierarchy
771 772 label_version_sharing_tree: With project tree
772 773 label_version_sharing_system: With all projects
773 774 label_update_issue_done_ratios: Update issue done ratios
774 775 label_copy_source: Source
775 776 label_copy_target: Target
776 777 label_copy_same_as_target: Same as target
777 778 label_display_used_statuses_only: Only display statuses that are used by this tracker
778 779 label_api_access_key: API access key
779 780 label_missing_api_access_key: Missing an API access key
780 781 label_api_access_key_created_on: "API access key created {{value}} ago"
781 782 label_profile: Profile
782 783 label_subtask_plural: Subtasks
783 784 label_project_copy_notifications: Send email notifications during the project copy
784 785 label_principal_search: "Search for user or group:"
785 786 label_user_search: "Search for user:"
786 787
787 788 button_login: Login
788 789 button_submit: Submit
789 790 button_save: Save
790 791 button_check_all: Check all
791 792 button_uncheck_all: Uncheck all
792 793 button_delete: Delete
793 794 button_create: Create
794 795 button_create_and_continue: Create and continue
795 796 button_test: Test
796 797 button_edit: Edit
797 798 button_edit_associated_wikipage: "Edit associated Wiki page: {{page_title}}"
798 799 button_add: Add
799 800 button_change: Change
800 801 button_apply: Apply
801 802 button_clear: Clear
802 803 button_lock: Lock
803 804 button_unlock: Unlock
804 805 button_download: Download
805 806 button_list: List
806 807 button_view: View
807 808 button_move: Move
808 809 button_move_and_follow: Move and follow
809 810 button_back: Back
810 811 button_cancel: Cancel
811 812 button_activate: Activate
812 813 button_sort: Sort
813 814 button_log_time: Log time
814 815 button_rollback: Rollback to this version
815 816 button_watch: Watch
816 817 button_unwatch: Unwatch
817 818 button_reply: Reply
818 819 button_archive: Archive
819 820 button_unarchive: Unarchive
820 821 button_reset: Reset
821 822 button_rename: Rename
822 823 button_change_password: Change password
823 824 button_copy: Copy
824 825 button_copy_and_follow: Copy and follow
825 826 button_annotate: Annotate
826 827 button_update: Update
827 828 button_configure: Configure
828 829 button_quote: Quote
829 830 button_duplicate: Duplicate
830 831 button_show: Show
831 832
832 833 status_active: active
833 834 status_registered: registered
834 835 status_locked: locked
835 836
836 837 version_status_open: open
837 838 version_status_locked: locked
838 839 version_status_closed: closed
839 840
840 841 field_active: Active
841 842
842 843 text_select_mail_notifications: Select actions for which email notifications should be sent.
843 844 text_regexp_info: eg. ^[A-Z0-9]+$
844 845 text_min_max_length_info: 0 means no restriction
845 846 text_project_destroy_confirmation: Are you sure you want to delete this project and related data ?
846 847 text_subprojects_destroy_warning: "Its subproject(s): {{value}} will be also deleted."
847 848 text_workflow_edit: Select a role and a tracker to edit the workflow
848 849 text_are_you_sure: Are you sure ?
849 850 text_are_you_sure_with_children: "Delete issue and all child issues?"
850 851 text_journal_changed: "{{label}} changed from {{old}} to {{new}}"
851 852 text_journal_set_to: "{{label}} set to {{value}}"
852 853 text_journal_deleted: "{{label}} deleted ({{old}})"
853 854 text_journal_added: "{{label}} {{value}} added"
854 855 text_tip_issue_begin_day: issue beginning this day
855 856 text_tip_issue_end_day: issue ending this day
856 857 text_tip_issue_begin_end_day: issue beginning and ending this day
857 858 text_project_identifier_info: 'Only lower case letters (a-z), numbers and dashes are allowed.<br />Once saved, the identifier can not be changed.'
858 859 text_caracters_maximum: "{{count}} characters maximum."
859 860 text_caracters_minimum: "Must be at least {{count}} characters long."
860 861 text_length_between: "Length between {{min}} and {{max}} characters."
861 862 text_tracker_no_workflow: No workflow defined for this tracker
862 863 text_unallowed_characters: Unallowed characters
863 864 text_comma_separated: Multiple values allowed (comma separated).
864 865 text_line_separated: Multiple values allowed (one line for each value).
865 866 text_issues_ref_in_commit_messages: Referencing and fixing issues in commit messages
866 867 text_issue_added: "Issue {{id}} has been reported by {{author}}."
867 868 text_issue_updated: "Issue {{id}} has been updated by {{author}}."
868 869 text_wiki_destroy_confirmation: Are you sure you want to delete this wiki and all its content ?
869 870 text_issue_category_destroy_question: "Some issues ({{count}}) are assigned to this category. What do you want to do ?"
870 871 text_issue_category_destroy_assignments: Remove category assignments
871 872 text_issue_category_reassign_to: Reassign issues to this category
872 873 text_user_mail_option: "For unselected projects, you will only receive notifications about things you watch or you're involved in (eg. issues you're the author or assignee)."
873 874 text_no_configuration_data: "Roles, trackers, issue statuses and workflow have not been configured yet.\nIt is highly recommended to load the default configuration. You will be able to modify it once loaded."
874 875 text_load_default_configuration: Load the default configuration
875 876 text_status_changed_by_changeset: "Applied in changeset {{value}}."
876 877 text_issues_destroy_confirmation: 'Are you sure you want to delete the selected issue(s) ?'
877 878 text_select_project_modules: 'Select modules to enable for this project:'
878 879 text_default_administrator_account_changed: Default administrator account changed
879 880 text_file_repository_writable: Attachments directory writable
880 881 text_plugin_assets_writable: Plugin assets directory writable
881 882 text_rmagick_available: RMagick available (optional)
882 883 text_destroy_time_entries_question: "{{hours}} hours were reported on the issues you are about to delete. What do you want to do ?"
883 884 text_destroy_time_entries: Delete reported hours
884 885 text_assign_time_entries_to_project: Assign reported hours to the project
885 886 text_reassign_time_entries: 'Reassign reported hours to this issue:'
886 887 text_user_wrote: "{{value}} wrote:"
887 888 text_enumeration_destroy_question: "{{count}} objects are assigned to this value."
888 889 text_enumeration_category_reassign_to: 'Reassign them to this value:'
889 890 text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
890 891 text_repository_usernames_mapping: "Select or update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped."
891 892 text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.'
892 893 text_custom_field_possible_values_info: 'One line for each value'
893 894 text_wiki_page_destroy_question: "This page has {{descendants}} child page(s) and descendant(s). What do you want to do?"
894 895 text_wiki_page_nullify_children: "Keep child pages as root pages"
895 896 text_wiki_page_destroy_children: "Delete child pages and all their descendants"
896 897 text_wiki_page_reassign_children: "Reassign child pages to this parent page"
897 898 text_own_membership_delete_confirmation: "You are about to remove some or all of your permissions and may no longer be able to edit this project after that.\nAre you sure you want to continue?"
898 899 text_zoom_in: Zoom in
899 900 text_zoom_out: Zoom out
900 901
901 902 default_role_manager: Manager
902 903 default_role_developer: Developer
903 904 default_role_reporter: Reporter
904 905 default_tracker_bug: Bug
905 906 default_tracker_feature: Feature
906 907 default_tracker_support: Support
907 908 default_issue_status_new: New
908 909 default_issue_status_in_progress: In Progress
909 910 default_issue_status_resolved: Resolved
910 911 default_issue_status_feedback: Feedback
911 912 default_issue_status_closed: Closed
912 913 default_issue_status_rejected: Rejected
913 914 default_doc_category_user: User documentation
914 915 default_doc_category_tech: Technical documentation
915 916 default_priority_low: Low
916 917 default_priority_normal: Normal
917 918 default_priority_high: High
918 919 default_priority_urgent: Urgent
919 920 default_priority_immediate: Immediate
920 921 default_activity_design: Design
921 922 default_activity_development: Development
922 923
923 924 enumeration_issue_priorities: Issue priorities
924 925 enumeration_doc_categories: Document categories
925 926 enumeration_activities: Activities (time tracking)
926 927 enumeration_system_activity: System Activity
927 928
@@ -1,188 +1,190
1 1 # redMine - project management software
2 2 # Copyright (C) 2006-2007 Jean-Philippe Lang
3 3 #
4 4 # This program is free software; you can redistribute it and/or
5 5 # modify it under the terms of the GNU General Public License
6 6 # as published by the Free Software Foundation; either version 2
7 7 # of the License, or (at your option) any later version.
8 8 #
9 9 # This program is distributed in the hope that it will be useful,
10 10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 12 # GNU General Public License for more details.
13 13 #
14 14 # You should have received a copy of the GNU General Public License
15 15 # along with this program; if not, write to the Free Software
16 16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17 17
18 18
19 19 # DO NOT MODIFY THIS FILE !!!
20 20 # Settings can be defined through the application in Admin -> Settings
21 21
22 22 app_title:
23 23 default: Redmine
24 24 app_subtitle:
25 25 default: Project management
26 26 welcome_text:
27 27 default:
28 28 login_required:
29 29 default: 0
30 30 self_registration:
31 31 default: '2'
32 32 lost_password:
33 33 default: 1
34 34 password_min_length:
35 35 format: int
36 36 default: 4
37 37 attachment_max_size:
38 38 format: int
39 39 default: 5120
40 40 issues_export_limit:
41 41 format: int
42 42 default: 500
43 43 activity_days_default:
44 44 format: int
45 45 default: 30
46 46 per_page_options:
47 47 default: '25,50,100'
48 48 mail_from:
49 49 default: redmine@example.net
50 50 bcc_recipients:
51 51 default: 1
52 52 plain_text_mail:
53 53 default: 0
54 54 text_formatting:
55 55 default: textile
56 56 cache_formatted_text:
57 57 default: 0
58 58 wiki_compression:
59 59 default: ""
60 60 default_language:
61 61 default: en
62 62 host_name:
63 63 default: localhost:3000
64 64 protocol:
65 65 default: http
66 66 feeds_limit:
67 67 format: int
68 68 default: 15
69 69 # Maximum size of files that can be displayed
70 70 # inline through the file viewer (in KB)
71 71 file_max_size_displayed:
72 72 format: int
73 73 default: 512
74 74 diff_max_lines_displayed:
75 75 format: int
76 76 default: 1500
77 77 enabled_scm:
78 78 serialized: true
79 79 default:
80 80 - Subversion
81 81 - Darcs
82 82 - Mercurial
83 83 - Cvs
84 84 - Bazaar
85 85 - Git
86 86 autofetch_changesets:
87 87 default: 1
88 88 sys_api_enabled:
89 89 default: 0
90 90 sys_api_key:
91 91 default: ''
92 92 commit_ref_keywords:
93 93 default: 'refs,references,IssueID'
94 94 commit_fix_keywords:
95 95 default: 'fixes,closes'
96 96 commit_fix_status_id:
97 97 format: int
98 98 default: 0
99 99 commit_fix_done_ratio:
100 100 default: 100
101 101 # autologin duration in days
102 102 # 0 means autologin is disabled
103 103 autologin:
104 104 format: int
105 105 default: 0
106 106 # date format
107 107 date_format:
108 108 default: ''
109 109 time_format:
110 110 default: ''
111 111 user_format:
112 112 default: :firstname_lastname
113 113 format: symbol
114 114 cross_project_issue_relations:
115 115 default: 0
116 116 notified_events:
117 117 serialized: true
118 118 default:
119 119 - issue_added
120 120 - issue_updated
121 121 mail_handler_body_delimiters:
122 122 default: ''
123 123 mail_handler_api_enabled:
124 124 default: 0
125 125 mail_handler_api_key:
126 126 default:
127 127 issue_list_default_columns:
128 128 serialized: true
129 129 default:
130 130 - tracker
131 131 - status
132 132 - priority
133 133 - subject
134 134 - assigned_to
135 135 - updated_on
136 136 display_subprojects_issues:
137 137 default: 1
138 138 issue_done_ratio:
139 139 default: 'issue_field'
140 140 default_projects_public:
141 141 default: 1
142 142 default_projects_modules:
143 143 serialized: true
144 144 default:
145 145 - issue_tracking
146 146 - time_tracking
147 147 - news
148 148 - documents
149 149 - files
150 150 - wiki
151 151 - repository
152 152 - boards
153 153 - calendar
154 154 - gantt
155 155 # Role given to a non-admin user who creates a project
156 156 new_project_user_role_id:
157 157 format: int
158 158 default: ''
159 159 sequential_project_identifiers:
160 160 default: 0
161 161 # encodings used to convert repository files content to UTF-8
162 162 # multiple values accepted, comma separated
163 163 repositories_encodings:
164 164 default: ''
165 165 # encoding used to convert commit logs to UTF-8
166 166 commit_logs_encoding:
167 167 default: 'UTF-8'
168 168 repository_log_display_limit:
169 169 format: int
170 170 default: 100
171 171 ui_theme:
172 172 default: ''
173 173 emails_footer:
174 174 default: |-
175 175 You have received this notification because you have either subscribed to it, or are involved in it.
176 176 To change your notification preferences, please click here: http://hostname/my/account
177 177 gravatar_enabled:
178 178 default: 0
179 179 openid:
180 180 default: 0
181 181 gravatar_default:
182 182 default: ''
183 183 start_of_week:
184 184 default: ''
185 185 rest_api_enabled:
186 186 default: 0
187 187 default_notification_option:
188 188 default: 'only_my_events'
189 emails_header:
190 default: ''
@@ -1,396 +1,413
1 1 # redMine - project management software
2 2 # Copyright (C) 2006-2007 Jean-Philippe Lang
3 3 #
4 4 # This program is free software; you can redistribute it and/or
5 5 # modify it under the terms of the GNU General Public License
6 6 # as published by the Free Software Foundation; either version 2
7 7 # of the License, or (at your option) any later version.
8 8 #
9 9 # This program is distributed in the hope that it will be useful,
10 10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 12 # GNU General Public License for more details.
13 13 #
14 14 # You should have received a copy of the GNU General Public License
15 15 # along with this program; if not, write to the Free Software
16 16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17 17
18 18 require File.dirname(__FILE__) + '/../test_helper'
19 19
20 20 class MailerTest < ActiveSupport::TestCase
21 21 include Redmine::I18n
22 22 include ActionController::Assertions::SelectorAssertions
23 23 fixtures :projects, :enabled_modules, :issues, :users, :members, :member_roles, :roles, :documents, :attachments, :news, :tokens, :journals, :journal_details, :changesets, :trackers, :issue_statuses, :enumerations, :messages, :boards, :repositories
24 24
25 25 def setup
26 26 ActionMailer::Base.deliveries.clear
27 27 Setting.host_name = 'mydomain.foo'
28 28 Setting.protocol = 'http'
29 29 end
30 30
31 31 def test_generated_links_in_emails
32 32 Setting.host_name = 'mydomain.foo'
33 33 Setting.protocol = 'https'
34 34
35 35 journal = Journal.find(2)
36 36 assert Mailer.deliver_issue_edit(journal)
37 37
38 38 mail = ActionMailer::Base.deliveries.last
39 39 assert_kind_of TMail::Mail, mail
40 40
41 41 assert_select_email do
42 42 # link to the main ticket
43 43 assert_select "a[href=?]", "https://mydomain.foo/issues/1", :text => "Bug #1: Can't print recipes"
44 44 # link to a referenced ticket
45 45 assert_select "a[href=?][title=?]", "https://mydomain.foo/issues/2", "Add ingredients categories (Assigned)", :text => "#2"
46 46 # link to a changeset
47 47 assert_select "a[href=?][title=?]", "https://mydomain.foo/projects/ecookbook/repository/revisions/2", "This commit fixes #1, #2 and references #1 &amp; #3", :text => "r2"
48 48 end
49 49 end
50 50
51 51 def test_generated_links_with_prefix
52 52 relative_url_root = Redmine::Utils.relative_url_root
53 53 Setting.host_name = 'mydomain.foo/rdm'
54 54 Setting.protocol = 'http'
55 55 Redmine::Utils.relative_url_root = '/rdm'
56 56
57 57 journal = Journal.find(2)
58 58 assert Mailer.deliver_issue_edit(journal)
59 59
60 60 mail = ActionMailer::Base.deliveries.last
61 61 assert_kind_of TMail::Mail, mail
62 62
63 63 assert_select_email do
64 64 # link to the main ticket
65 65 assert_select "a[href=?]", "http://mydomain.foo/rdm/issues/1", :text => "Bug #1: Can't print recipes"
66 66 # link to a referenced ticket
67 67 assert_select "a[href=?][title=?]", "http://mydomain.foo/rdm/issues/2", "Add ingredients categories (Assigned)", :text => "#2"
68 68 # link to a changeset
69 69 assert_select "a[href=?][title=?]", "http://mydomain.foo/rdm/projects/ecookbook/repository/revisions/2", "This commit fixes #1, #2 and references #1 &amp; #3", :text => "r2"
70 70 end
71 71 ensure
72 72 # restore it
73 73 Redmine::Utils.relative_url_root = relative_url_root
74 74 end
75 75
76 76 def test_generated_links_with_prefix_and_no_relative_url_root
77 77 relative_url_root = Redmine::Utils.relative_url_root
78 78 Setting.host_name = 'mydomain.foo/rdm'
79 79 Setting.protocol = 'http'
80 80 Redmine::Utils.relative_url_root = nil
81 81
82 82 journal = Journal.find(2)
83 83 assert Mailer.deliver_issue_edit(journal)
84 84
85 85 mail = ActionMailer::Base.deliveries.last
86 86 assert_kind_of TMail::Mail, mail
87 87
88 88 assert_select_email do
89 89 # link to the main ticket
90 90 assert_select "a[href=?]", "http://mydomain.foo/rdm/issues/1", :text => "Bug #1: Can't print recipes"
91 91 # link to a referenced ticket
92 92 assert_select "a[href=?][title=?]", "http://mydomain.foo/rdm/issues/2", "Add ingredients categories (Assigned)", :text => "#2"
93 93 # link to a changeset
94 94 assert_select "a[href=?][title=?]", "http://mydomain.foo/rdm/projects/ecookbook/repository/revisions/2", "This commit fixes #1, #2 and references #1 &amp; #3", :text => "r2"
95 95 end
96 96 ensure
97 97 # restore it
98 98 Redmine::Utils.relative_url_root = relative_url_root
99 99 end
100 100
101 101 def test_email_headers
102 102 issue = Issue.find(1)
103 103 Mailer.deliver_issue_add(issue)
104 104 mail = ActionMailer::Base.deliveries.last
105 105 assert_not_nil mail
106 106 assert_equal 'bulk', mail.header_string('Precedence')
107 107 assert_equal 'auto-generated', mail.header_string('Auto-Submitted')
108 108 end
109 109
110 110 def test_plain_text_mail
111 111 Setting.plain_text_mail = 1
112 112 journal = Journal.find(2)
113 113 Mailer.deliver_issue_edit(journal)
114 114 mail = ActionMailer::Base.deliveries.last
115 115 assert_equal "text/plain", mail.content_type
116 116 assert_equal 0, mail.parts.size
117 117 assert !mail.encoded.include?('href')
118 118 end
119 119
120 120 def test_html_mail
121 121 Setting.plain_text_mail = 0
122 122 journal = Journal.find(2)
123 123 Mailer.deliver_issue_edit(journal)
124 124 mail = ActionMailer::Base.deliveries.last
125 125 assert_equal 2, mail.parts.size
126 126 assert mail.encoded.include?('href')
127 127 end
128 128
129 129 def test_mail_from_with_phrase
130 130 with_settings :mail_from => 'Redmine app <redmine@example.net>' do
131 131 Mailer.deliver_test(User.find(1))
132 132 end
133 133 mail = ActionMailer::Base.deliveries.last
134 134 assert_not_nil mail
135 135 assert_equal 'Redmine app', mail.from_addrs.first.name
136 136 end
137 137
138 138 def test_should_not_send_email_without_recipient
139 139 news = News.find(:first)
140 140 user = news.author
141 141 # Remove members except news author
142 142 news.project.memberships.each {|m| m.destroy unless m.user == user}
143 143
144 144 user.pref[:no_self_notified] = false
145 145 user.pref.save
146 146 User.current = user
147 147 Mailer.deliver_news_added(news.reload)
148 148 assert_equal 1, last_email.bcc.size
149 149
150 150 # nobody to notify
151 151 user.pref[:no_self_notified] = true
152 152 user.pref.save
153 153 User.current = user
154 154 ActionMailer::Base.deliveries.clear
155 155 Mailer.deliver_news_added(news.reload)
156 156 assert ActionMailer::Base.deliveries.empty?
157 157 end
158 158
159 159 def test_issue_add_message_id
160 160 issue = Issue.find(1)
161 161 Mailer.deliver_issue_add(issue)
162 162 mail = ActionMailer::Base.deliveries.last
163 163 assert_not_nil mail
164 164 assert_equal Mailer.message_id_for(issue), mail.message_id
165 165 assert_nil mail.references
166 166 end
167 167
168 168 def test_issue_edit_message_id
169 169 journal = Journal.find(1)
170 170 Mailer.deliver_issue_edit(journal)
171 171 mail = ActionMailer::Base.deliveries.last
172 172 assert_not_nil mail
173 173 assert_equal Mailer.message_id_for(journal), mail.message_id
174 174 assert_equal Mailer.message_id_for(journal.issue), mail.references.first.to_s
175 175 end
176 176
177 177 def test_message_posted_message_id
178 178 message = Message.find(1)
179 179 Mailer.deliver_message_posted(message)
180 180 mail = ActionMailer::Base.deliveries.last
181 181 assert_not_nil mail
182 182 assert_equal Mailer.message_id_for(message), mail.message_id
183 183 assert_nil mail.references
184 184 assert_select_email do
185 185 # link to the message
186 186 assert_select "a[href=?]", "http://mydomain.foo/boards/#{message.board.id}/topics/#{message.id}", :text => message.subject
187 187 end
188 188 end
189 189
190 190 def test_reply_posted_message_id
191 191 message = Message.find(3)
192 192 Mailer.deliver_message_posted(message)
193 193 mail = ActionMailer::Base.deliveries.last
194 194 assert_not_nil mail
195 195 assert_equal Mailer.message_id_for(message), mail.message_id
196 196 assert_equal Mailer.message_id_for(message.parent), mail.references.first.to_s
197 197 assert_select_email do
198 198 # link to the reply
199 199 assert_select "a[href=?]", "http://mydomain.foo/boards/#{message.board.id}/topics/#{message.root.id}?r=#{message.id}#message-#{message.id}", :text => message.subject
200 200 end
201 201 end
202 202
203 203 context("#issue_add") do
204 204 setup do
205 205 ActionMailer::Base.deliveries.clear
206 206 Setting.bcc_recipients = '1'
207 207 @issue = Issue.find(1)
208 208 end
209 209
210 210 should "notify project members" do
211 211 assert Mailer.deliver_issue_add(@issue)
212 212 assert last_email.bcc.include?('dlopper@somenet.foo')
213 213 end
214 214
215 215 should "not notify project members that are not allow to view the issue" do
216 216 Role.find(2).remove_permission!(:view_issues)
217 217 assert Mailer.deliver_issue_add(@issue)
218 218 assert !last_email.bcc.include?('dlopper@somenet.foo')
219 219 end
220 220
221 221 should "notify issue watchers" do
222 222 user = User.find(9)
223 223 # minimal email notification options
224 224 user.pref[:no_self_notified] = '1'
225 225 user.pref.save
226 226 user.mail_notification = false
227 227 user.save
228 228
229 229 Watcher.create!(:watchable => @issue, :user => user)
230 230 assert Mailer.deliver_issue_add(@issue)
231 231 assert last_email.bcc.include?(user.mail)
232 232 end
233 233
234 234 should "not notify watchers not allowed to view the issue" do
235 235 user = User.find(9)
236 236 Watcher.create!(:watchable => @issue, :user => user)
237 237 Role.non_member.remove_permission!(:view_issues)
238 238 assert Mailer.deliver_issue_add(@issue)
239 239 assert !last_email.bcc.include?(user.mail)
240 240 end
241 241 end
242 242
243 243 # test mailer methods for each language
244 244 def test_issue_add
245 245 issue = Issue.find(1)
246 246 valid_languages.each do |lang|
247 247 Setting.default_language = lang.to_s
248 248 assert Mailer.deliver_issue_add(issue)
249 249 end
250 250 end
251 251
252 252 def test_issue_edit
253 253 journal = Journal.find(1)
254 254 valid_languages.each do |lang|
255 255 Setting.default_language = lang.to_s
256 256 assert Mailer.deliver_issue_edit(journal)
257 257 end
258 258 end
259 259
260 260 def test_document_added
261 261 document = Document.find(1)
262 262 valid_languages.each do |lang|
263 263 Setting.default_language = lang.to_s
264 264 assert Mailer.deliver_document_added(document)
265 265 end
266 266 end
267 267
268 268 def test_attachments_added
269 269 attachements = [ Attachment.find_by_container_type('Document') ]
270 270 valid_languages.each do |lang|
271 271 Setting.default_language = lang.to_s
272 272 assert Mailer.deliver_attachments_added(attachements)
273 273 end
274 274 end
275 275
276 276 def test_version_file_added
277 277 attachements = [ Attachment.find_by_container_type('Version') ]
278 278 assert Mailer.deliver_attachments_added(attachements)
279 279 assert_not_nil last_email.bcc
280 280 assert last_email.bcc.any?
281 281 end
282 282
283 283 def test_project_file_added
284 284 attachements = [ Attachment.find_by_container_type('Project') ]
285 285 assert Mailer.deliver_attachments_added(attachements)
286 286 assert_not_nil last_email.bcc
287 287 assert last_email.bcc.any?
288 288 end
289 289
290 290 def test_news_added
291 291 news = News.find(:first)
292 292 valid_languages.each do |lang|
293 293 Setting.default_language = lang.to_s
294 294 assert Mailer.deliver_news_added(news)
295 295 end
296 296 end
297 297
298 298 def test_message_posted
299 299 message = Message.find(:first)
300 300 recipients = ([message.root] + message.root.children).collect {|m| m.author.mail if m.author}
301 301 recipients = recipients.compact.uniq
302 302 valid_languages.each do |lang|
303 303 Setting.default_language = lang.to_s
304 304 assert Mailer.deliver_message_posted(message)
305 305 end
306 306 end
307 307
308 308 def test_account_information
309 309 user = User.find(2)
310 310 valid_languages.each do |lang|
311 311 user.update_attribute :language, lang.to_s
312 312 user.reload
313 313 assert Mailer.deliver_account_information(user, 'pAsswORd')
314 314 end
315 315 end
316 316
317 317 def test_lost_password
318 318 token = Token.find(2)
319 319 valid_languages.each do |lang|
320 320 token.user.update_attribute :language, lang.to_s
321 321 token.reload
322 322 assert Mailer.deliver_lost_password(token)
323 323 end
324 324 end
325 325
326 326 def test_register
327 327 token = Token.find(1)
328 328 Setting.host_name = 'redmine.foo'
329 329 Setting.protocol = 'https'
330 330
331 331 valid_languages.each do |lang|
332 332 token.user.update_attribute :language, lang.to_s
333 333 token.reload
334 334 ActionMailer::Base.deliveries.clear
335 335 assert Mailer.deliver_register(token)
336 336 mail = ActionMailer::Base.deliveries.last
337 337 assert mail.body.include?("https://redmine.foo/account/activate?token=#{token.value}")
338 338 end
339 339 end
340 340
341 341 def test_test
342 342 user = User.find(1)
343 343 valid_languages.each do |lang|
344 344 user.update_attribute :language, lang.to_s
345 345 assert Mailer.deliver_test(user)
346 346 end
347 347 end
348 348
349 349 def test_reminders
350 350 Mailer.reminders(:days => 42)
351 351 assert_equal 1, ActionMailer::Base.deliveries.size
352 352 mail = ActionMailer::Base.deliveries.last
353 353 assert mail.bcc.include?('dlopper@somenet.foo')
354 354 assert mail.body.include?('Bug #3: Error 281 when updating a recipe')
355 355 assert_equal '1 issue(s) due in the next 42 days', mail.subject
356 356 end
357 357
358 358 def test_reminders_for_users
359 359 Mailer.reminders(:days => 42, :users => ['5'])
360 360 assert_equal 0, ActionMailer::Base.deliveries.size # No mail for dlopper
361 361 Mailer.reminders(:days => 42, :users => ['3'])
362 362 assert_equal 1, ActionMailer::Base.deliveries.size # No mail for dlopper
363 363 mail = ActionMailer::Base.deliveries.last
364 364 assert mail.bcc.include?('dlopper@somenet.foo')
365 365 assert mail.body.include?('Bug #3: Error 281 when updating a recipe')
366 366 end
367 367
368 368 def last_email
369 369 mail = ActionMailer::Base.deliveries.last
370 370 assert_not_nil mail
371 371 mail
372 372 end
373 373
374 374 def test_mailer_should_not_change_locale
375 375 Setting.default_language = 'en'
376 376 # Set current language to italian
377 377 set_language_if_valid 'it'
378 378 # Send an email to a french user
379 379 user = User.find(1)
380 380 user.language = 'fr'
381 381 Mailer.deliver_account_activated(user)
382 382 mail = ActionMailer::Base.deliveries.last
383 383 assert mail.body.include?('Votre compte')
384 384
385 385 assert_equal :it, current_language
386 386 end
387 387
388 388 def test_with_deliveries_off
389 389 Mailer.with_deliveries false do
390 390 Mailer.deliver_test(User.find(1))
391 391 end
392 392 assert ActionMailer::Base.deliveries.empty?
393 393 # should restore perform_deliveries
394 394 assert ActionMailer::Base.perform_deliveries
395 395 end
396
397 context "layout" do
398 should "include the emails_header" do
399 with_settings(:emails_header => "*Header content*") do
400 assert Mailer.deliver_test(User.find(1))
401
402 assert_select_email do
403 assert_select ".header" do
404 assert_select "strong", :text => "Header content"
405 end
406 end
407 end
408
409 end
410
411 end
412
396 413 end
General Comments 0
You need to be logged in to leave comments. Login now