Compare commits

...
114 Commits
Author SHA1 Message Date
Jean-Philippe Lang a84920ca70 Merged r3865 and r3866 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3868 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-07-25 09:34:13 +00:00
Eric Davis 21d2de48b7 Merged r3836 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3838 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-07-08 03:54:53 +00:00
Eric Davis a19a37b600 Merged r3835 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3837 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-07-08 03:54:48 +00:00
Eric Davis 29e7b8d9ea Merged r3832 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3834 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-07-08 03:48:40 +00:00
Eric Davis f3b9c0027f Merged r3831 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3833 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-07-08 03:48:35 +00:00
Eric Davis a146c2d03f Merged r3815 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3817 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-06-28 02:48:12 +00:00
Eric Davis a62ff0841f Merged r3814 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3816 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-06-28 02:48:06 +00:00
Eric Davis d7ec02691f Merged r3811 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3812 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-06-24 02:39:21 +00:00
Eric Davis e7790bb6b5 Fix nil method error when no issue params are submitted. #5123
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3796 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-06-20 03:24:38 +00:00
Eric Davis 34f73b005b Merged r3785 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3795 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-06-19 23:03:12 +00:00
Eric Davis ba42e1e2ff Merged r3786 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3794 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-06-19 23:03:07 +00:00
Eric Davis 14074da8b1 Merged r3784 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3793 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-06-19 23:03:01 +00:00
Eric Davis 44851d079f Merged r3787 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3792 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-06-19 23:02:55 +00:00
Eric Davis e6d053c3fd Merged r3783 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3791 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-06-19 23:02:50 +00:00
Eric Davis f17924c60d Merged r3775 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3781 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-06-19 18:47:18 +00:00
Eric Davis 90e23e4d5d Merged r3777 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3780 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-06-19 18:47:13 +00:00
Eric Davis 88a2792778 Merged r3776 from trunk
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3779 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-06-19 18:47:08 +00:00
Eric Davis 4c881d54a7 Merged r3659 from trunk
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3778 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-06-19 18:47:03 +00:00
Jean-Philippe Lang a6d45cc68f Merged r3740 and r3741 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3742 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-05-22 08:55:56 +00:00
Jean-Philippe Lang f58f7e0e41 Merged r3727 from trunk for 0.9.4 release.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3728 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-05-01 12:38:44 +00:00
Jean-Philippe Lang 473366f887 Merged r3725 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3726 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-05-01 12:33:27 +00:00
Jean-Philippe Lang f6d2a4c29f Backported r3683 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3717 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-04-30 17:32:42 +00:00
Jean-Philippe Lang b26d0fe041 Merged r3705 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3715 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-04-30 17:20:59 +00:00
Jean-Philippe Lang 98f3e98d82 Merged r3702 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3714 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-04-30 17:19:40 +00:00
Jean-Philippe Lang 7b27280c9b Backported r3692 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3713 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-04-30 14:22:52 +00:00
Jean-Philippe Lang d287436627 Merged r3678 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3712 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-04-30 14:06:45 +00:00
Jean-Philippe Lang 666d3d6472 Merged r3682 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3711 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-04-30 14:05:37 +00:00
Eric Davis 36063f16ee Merged r3698 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3699 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-04-29 23:30:21 +00:00
Jean-Philippe Lang 4a295e723e Merged r3668 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3697 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-04-29 22:05:49 +00:00
Jean-Philippe Lang 6e67d76194 Merged r3613 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3662 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-04-11 15:24:49 +00:00
Jean-Philippe Lang eb55efd604 Merged r3612 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3661 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-04-11 15:23:30 +00:00
Jean-Philippe Lang 390eb7849c Merged r3611 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3660 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-04-11 15:21:08 +00:00
Jean-Philippe Lang 1588f3f6dc Merged r3397 from trunk to fix sqlite3 and pgsql test environments.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3658 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-04-11 15:06:43 +00:00
Jean-Philippe Lang 5ef8e8d45f Merged r3635 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3657 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-04-11 14:53:54 +00:00
Jean-Philippe Lang cd15eb77d9 Merged r3625 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3656 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-04-11 14:44:18 +00:00
Jean-Philippe Lang 3b699806d9 Merged r3614 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3655 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-04-11 14:43:29 +00:00
Jean-Philippe Lang d2367ccf53 Merged r3517 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3654 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-04-11 14:42:44 +00:00
Jean-Philippe Lang 9c00b8aa21 Merged r3530 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3653 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-04-11 14:41:59 +00:00
Jean-Philippe Lang bbb00b0bc4 Merged r3616 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3652 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-04-11 14:41:15 +00:00
Jean-Philippe Lang feac751318 Merged r3615 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3651 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-04-11 14:39:14 +00:00
Jean-Philippe Lang eb4a7f9f2e Merged r3566 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3650 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-04-11 14:37:59 +00:00
Jean-Philippe Lang 7ce9ba9e28 Merged r3562 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3649 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-04-11 14:34:05 +00:00
Jean-Philippe Lang 53880a4e08 Merged r3571 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3648 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-04-11 14:32:29 +00:00
Jean-Philippe Lang f92aa00705 Merged r3550 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3647 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-04-11 14:31:40 +00:00
Jean-Philippe Lang b240da3833 Merged r3532 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3646 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-04-11 14:30:50 +00:00
Jean-Philippe Lang da8624f7c7 Merged r3524 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3645 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-04-11 14:29:59 +00:00
Jean-Philippe Lang 46be83cd5e Merged r3537 and r3572 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3644 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-04-11 14:29:02 +00:00
Jean-Philippe Lang 667f7927a7 Merged r3494 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3643 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-04-11 14:21:47 +00:00
Jean-Philippe Lang 3e6f42e46d Backported r3608 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3642 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-04-11 14:20:40 +00:00
Jean-Philippe Lang 30c45a6187 Merged r3529 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3641 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-04-11 14:10:01 +00:00
Jean-Philippe Lang 32288ed5d7 Merged r3514 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3640 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-04-11 14:09:11 +00:00
Jean-Philippe Lang beb89eb8bb Merged r3558 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3639 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-04-11 14:08:03 +00:00
Jean-Philippe Lang 62d8016c4f Merged r3513 and r3531 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3638 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-04-11 14:06:10 +00:00
Jean-Philippe Lang 5a7a3b2392 Merged r3603 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3637 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-04-11 14:04:37 +00:00
Jean-Philippe Lang a2ad66a5c0 Merged r3539 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3636 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-04-11 14:03:28 +00:00
Jean-Philippe Lang bfd9164c0a Merged r3506 for 0.9.3 release.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3507 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-02-28 10:21:33 +00:00
Jean-Philippe Lang d80fb751fd Merged r3469, r3472 and r3473 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3505 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-02-28 10:10:55 +00:00
Jean-Philippe Lang aacabbe645 Merged r3498 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3504 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-02-28 09:59:31 +00:00
Jean-Philippe Lang 8eafcbede9 Merged r3481 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3503 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-02-28 09:58:33 +00:00
Jean-Philippe Lang 43c1481998 Merged r3446 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3502 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-02-28 09:56:55 +00:00
Jean-Philippe Lang 17f60af490 Merged r3394, r3466, r3467, r3468 and r3471 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3501 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-02-28 09:51:10 +00:00
Jean-Philippe Lang e5e5ad6b7a Merged r3398 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3465 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-02-20 10:40:02 +00:00
Jean-Philippe Lang 13fb739b56 Merged r3409 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3464 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-02-20 10:26:49 +00:00
Jean-Philippe Lang 73e849be58 Merged r3451 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3463 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-02-20 10:22:06 +00:00
Jean-Philippe Lang 0b7d4e818a Merged r3452 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3462 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-02-20 10:20:52 +00:00
Jean-Philippe Lang 40a4b111fa Merged r3447 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3461 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-02-20 10:19:02 +00:00
Jean-Philippe Lang 7d913f93c3 Merged r3448 and r3455 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3460 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-02-20 10:16:08 +00:00
Jean-Philippe Lang 864fd9c6a1 Merged bug fixes r3423 and r3427.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3433 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-02-14 15:57:56 +00:00
Jean-Philippe Lang 57dcbd7376 Merged bug fixes r3412 to r3414.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3432 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-02-14 15:55:00 +00:00
Jean-Philippe Lang 0ef11ef4fe Merged bug fixes r3402, r3405 to r3408 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3431 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-02-14 15:48:28 +00:00
Jean-Philippe Lang b5ee8c08ca Merged r3392 from trunk (0.9.2 update).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3393 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-02-07 12:48:56 +00:00
Jean-Philippe Lang 9487d8dd80 Merged r3389 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3391 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-02-07 12:37:12 +00:00
Jean-Philippe Lang f3bf588c82 Translations updated to trunk r3388.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3390 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-02-07 12:36:12 +00:00
Jean-Philippe Lang bd38623cca Merged r3379 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3387 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-02-07 11:58:42 +00:00
Jean-Philippe Lang bae86dc558 Merged r3377 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3386 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-02-07 11:57:49 +00:00
Jean-Philippe Lang 884c5be200 Backported r3368 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3385 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-02-07 11:56:49 +00:00
Jean-Philippe Lang ad24563b1e Merged r3378 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3384 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-02-07 11:53:17 +00:00
Jean-Philippe Lang cb8933ae55 Merged r3376 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3383 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-02-07 11:52:09 +00:00
Jean-Philippe Lang 5d75879046 Merged r3375 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3382 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-02-07 11:50:56 +00:00
Jean-Philippe Lang 69e5d91a2d Backported r3354 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3381 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-02-07 11:49:40 +00:00
Jean-Philippe Lang 7c1e877209 Merged r3357 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3380 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-02-07 11:45:31 +00:00
Eric Davis 76d9d01db0 Merged the Object Daddy exemplars from trunk. r3337, r3340, r3342
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3359 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-02-02 16:03:05 +00:00
Jean-Philippe Lang 27fa40d283 Merged r3351 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3352 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-01-30 11:24:10 +00:00
Jean-Philippe Lang 20a6d7eb86 Merged r3348 from trunk (version set to 0.9.1).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3349 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-01-30 10:54:45 +00:00
Jean-Philippe Lang b87cf0c91c Merged r3346 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3347 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-01-30 10:37:05 +00:00
Jean-Philippe Lang 14ee72def2 Merged r3341 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3345 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-01-30 10:28:26 +00:00
Jean-Philippe Lang a843cfff36 Merged r3343 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3344 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-01-30 10:26:30 +00:00
Jean-Philippe Lang 3d7cb0f40e Merged r3333 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3334 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-01-18 18:01:19 +00:00
Jean-Philippe Lang 92b267a608 Merged r3328 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3329 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-01-17 12:01:33 +00:00
Jean-Philippe Lang c1be8bcf9f Merged r3325 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3326 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-01-17 11:18:04 +00:00
Jean-Philippe Lang ff9aa9db59 Merged r3323 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3324 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-01-17 11:09:29 +00:00
Jean-Philippe Lang 65ee523852 Merged r3312 and r3320 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3321 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-01-17 10:34:47 +00:00
Jean-Philippe Lang 1f5d95b027 Merged r3309 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3318 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-01-17 10:28:06 +00:00
Jean-Philippe Lang c5a59aff5b Merged r3305, r3306, r3307, r3311 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3317 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-01-16 13:57:41 +00:00
Eric Davis f60881518a Merged r3315 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3316 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-01-14 23:33:48 +00:00
Jean-Philippe Lang 1efb25a433 Merged r3298 to r3302 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3303 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-01-10 10:22:03 +00:00
Jean-Philippe Lang eaaa471d6a Merged r3295 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3296 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-01-09 11:50:31 +00:00
Jean-Philippe Lang 2b6d8125d1 Merged r3293 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3294 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-01-09 11:47:38 +00:00
Jean-Philippe Lang 12b75ded08 Locales updated to trunk @ r3291.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3292 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-01-09 10:41:27 +00:00
Jean-Philippe Lang 46bf2b9276 Merged r3289 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3290 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-01-09 10:27:50 +00:00
Jean-Philippe Lang 9d82bff1a8 Merged r3282 to r3284 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3287 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-01-09 10:04:21 +00:00
Jean-Philippe Lang 4c75864948 Merged r3258 and r3281 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3286 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-01-09 10:02:16 +00:00
Jean-Philippe Lang 9d2474c234 Merged r3277 to r3279 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3280 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-01-03 11:47:25 +00:00
Jean-Philippe Lang 7193817dea Translation updates.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3276 e93f8b46-1217-0410-a6f0-8f06a7374b81
2010-01-03 10:32:37 +00:00
Eric Davis 610d7d4ba4 Merged r3267 from trunk
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3268 e93f8b46-1217-0410-a6f0-8f06a7374b81
2009-12-30 00:51:08 +00:00
Eric Davis 4b41788848 Merged r3265 from trunk
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3266 e93f8b46-1217-0410-a6f0-8f06a7374b81
2009-12-30 00:26:48 +00:00
Eric Davis e1423c7c23 Merged r3263 from trunk
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3264 e93f8b46-1217-0410-a6f0-8f06a7374b81
2009-12-29 23:33:46 +00:00
Eric Davis 9c9f6722f6 Merged r3261 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3262 e93f8b46-1217-0410-a6f0-8f06a7374b81
2009-12-29 17:58:21 +00:00
Jean-Philippe Lang a8be47295a Merged r3259 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3260 e93f8b46-1217-0410-a6f0-8f06a7374b81
2009-12-29 14:56:17 +00:00
Eric Davis ba98197637 Merged r3256 from trunk
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3257 e93f8b46-1217-0410-a6f0-8f06a7374b81
2009-12-29 00:44:28 +00:00
Jean-Philippe Lang a23399f220 Merged r3249 to r3252 and r3254 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3255 e93f8b46-1217-0410-a6f0-8f06a7374b81
2009-12-27 12:41:27 +00:00
Jean-Philippe Lang 718cd596e0 Merged r3246 and r3247 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3248 e93f8b46-1217-0410-a6f0-8f06a7374b81
2009-12-26 13:54:57 +00:00
Jean-Philippe Lang c5ccfede6d Set VERSION::BRANCH to stable.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3245 e93f8b46-1217-0410-a6f0-8f06a7374b81
2009-12-26 10:27:46 +00:00
Jean-Philippe Lang 7702bdcdab 0.9-stable branch created
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3244 e93f8b46-1217-0410-a6f0-8f06a7374b81
2009-12-26 10:22:16 +00:00
199 changed files with 3620 additions and 799 deletions
+10 -5
View File
@@ -25,8 +25,7 @@ class AccountController < ApplicationController
# Login request and validation # Login request and validation
def login def login
if request.get? if request.get?
# Logout user logout_user
self.logged_user = nil
else else
# Authenticate user # Authenticate user
if Setting.openid? && using_open_id? if Setting.openid? && using_open_id?
@@ -39,9 +38,7 @@ class AccountController < ApplicationController
# Log out current user and redirect to welcome page # Log out current user and redirect to welcome page
def logout def logout
cookies.delete :autologin logout_user
Token.delete_all(["user_id = ? AND action = ?", User.current.id, 'autologin']) if User.current.logged?
self.logged_user = nil
redirect_to home_url redirect_to home_url
end end
@@ -135,6 +132,14 @@ class AccountController < ApplicationController
private private
def logout_user
if User.current.logged?
cookies.delete :autologin
Token.delete_all(["user_id = ? AND action = ?", User.current.id, 'autologin'])
self.logged_user = nil
end
end
def password_authentication def password_authentication
user = User.try_to_login(params[:username], params[:password]) user = User.try_to_login(params[:username], params[:password])
+2 -1
View File
@@ -107,8 +107,9 @@ class ApplicationController < ActionController::Base
lang = find_language(User.current.language) lang = find_language(User.current.language)
end end
if lang.nil? && request.env['HTTP_ACCEPT_LANGUAGE'] if lang.nil? && request.env['HTTP_ACCEPT_LANGUAGE']
accept_lang = parse_qvalues(request.env['HTTP_ACCEPT_LANGUAGE']).first.downcase accept_lang = parse_qvalues(request.env['HTTP_ACCEPT_LANGUAGE']).first
if !accept_lang.blank? if !accept_lang.blank?
accept_lang = accept_lang.downcase
lang = find_language(accept_lang) || find_language(accept_lang.split('-').first) lang = find_language(accept_lang) || find_language(accept_lang.split('-').first)
end end
end end
+9 -1
View File
@@ -41,7 +41,7 @@ class AttachmentsController < ApplicationController
# images are sent inline # images are sent inline
send_file @attachment.diskfile, :filename => filename_for_content_disposition(@attachment.filename), send_file @attachment.diskfile, :filename => filename_for_content_disposition(@attachment.filename),
:type => @attachment.content_type, :type => detect_content_type(@attachment),
:disposition => (@attachment.image? ? 'inline' : 'attachment') :disposition => (@attachment.image? ? 'inline' : 'attachment')
end end
@@ -76,4 +76,12 @@ private
def delete_authorize def delete_authorize
@attachment.deletable? ? true : deny_access @attachment.deletable? ? true : deny_access
end end
def detect_content_type(attachment)
content_type = attachment.content_type
if content_type.blank?
content_type = Redmine::MimeType.of(attachment.filename)
end
content_type.to_s
end
end end
+2 -2
View File
@@ -76,12 +76,12 @@ class EnumerationsController < ApplicationController
@enumeration.destroy @enumeration.destroy
redirect_to :action => 'index' redirect_to :action => 'index'
elsif params[:reassign_to_id] elsif params[:reassign_to_id]
if reassign_to = Enumeration.find_by_type_and_id(@enumeration.type, params[:reassign_to_id]) if reassign_to = @enumeration.class.find_by_id(params[:reassign_to_id])
@enumeration.destroy(reassign_to) @enumeration.destroy(reassign_to)
redirect_to :action => 'index' redirect_to :action => 'index'
end end
end end
@enumerations = Enumeration.find(:all, :conditions => ['type = (?)', @enumeration.type]) - [@enumeration] @enumerations = @enumeration.class.find(:all) - [@enumeration]
#rescue #rescue
# flash[:error] = 'Unable to delete enumeration' # flash[:error] = 'Unable to delete enumeration'
# redirect_to :action => 'index' # redirect_to :action => 'index'
@@ -21,8 +21,8 @@ class IssueRelationsController < ApplicationController
def new def new
@relation = IssueRelation.new(params[:relation]) @relation = IssueRelation.new(params[:relation])
@relation.issue_from = @issue @relation.issue_from = @issue
if params[:relation] && !params[:relation][:issue_to_id].blank? if params[:relation] && m = params[:relation][:issue_to_id].to_s.match(/^#?(\d+)$/)
@relation.issue_to = Issue.visible.find_by_id(params[:relation][:issue_to_id]) @relation.issue_to = Issue.visible.find_by_id(m[1].to_i)
end end
@relation.save if request.post? @relation.save if request.post?
respond_to do |format| respond_to do |format|
+37 -36
View File
@@ -40,6 +40,7 @@ class IssuesController < ApplicationController
helper :attachments helper :attachments
include AttachmentsHelper include AttachmentsHelper
helper :queries helper :queries
include QueriesHelper
helper :sort helper :sort
include SortHelper include SortHelper
include IssuesHelper include IssuesHelper
@@ -56,12 +57,13 @@ class IssuesController < ApplicationController
sort_update({'id' => "#{Issue.table_name}.id"}.merge(@query.available_columns.inject({}) {|h, c| h[c.name.to_s] = c.sortable; h})) sort_update({'id' => "#{Issue.table_name}.id"}.merge(@query.available_columns.inject({}) {|h, c| h[c.name.to_s] = c.sortable; h}))
if @query.valid? if @query.valid?
limit = per_page_option limit = case params[:format]
respond_to do |format| when 'csv', 'pdf'
format.html { } Setting.issues_export_limit.to_i
format.atom { limit = Setting.feeds_limit.to_i } when 'atom'
format.csv { limit = Setting.issues_export_limit.to_i } Setting.feeds_limit.to_i
format.pdf { limit = Setting.issues_export_limit.to_i } else
per_page_option
end end
@issue_count = @query.issue_count @issue_count = @query.issue_count
@@ -105,7 +107,7 @@ class IssuesController < ApplicationController
@journals = @issue.journals.find(:all, :include => [:user, :details], :order => "#{Journal.table_name}.created_on ASC") @journals = @issue.journals.find(:all, :include => [:user, :details], :order => "#{Journal.table_name}.created_on ASC")
@journals.each_with_index {|j,i| j.indice = i+1} @journals.each_with_index {|j,i| j.indice = i+1}
@journals.reverse! if User.current.wants_comments_in_reverse_order? @journals.reverse! if User.current.wants_comments_in_reverse_order?
@changesets = @issue.changesets @changesets = @issue.changesets.visible.all
@changesets.reverse! if User.current.wants_comments_in_reverse_order? @changesets.reverse! if User.current.wants_comments_in_reverse_order?
@allowed_statuses = @issue.new_statuses_allowed_to(User.current) @allowed_statuses = @issue.new_statuses_allowed_to(User.current)
@edit_allowed = User.current.allowed_to?(:edit_issues, @project) @edit_allowed = User.current.allowed_to?(:edit_issues, @project)
@@ -147,9 +149,10 @@ class IssuesController < ApplicationController
if request.get? || request.xhr? if request.get? || request.xhr?
@issue.start_date ||= Date.today @issue.start_date ||= Date.today
else else
requested_status = IssueStatus.find_by_id(params[:issue][:status_id]) requested_status = IssueStatus.find_by_id(params[:issue][:status_id]) if params[:issue]
# Check that the user is allowed to apply the requested status # Check that the user is allowed to apply the requested status
@issue.status = (@allowed_statuses.include? requested_status) ? requested_status : default_status @issue.status = (@allowed_statuses.include? requested_status) ? requested_status : default_status
call_hook(:controller_issues_new_before_save, { :params => params, :issue => @issue })
if @issue.save if @issue.save
attach_files(@issue, params[:attachments]) attach_files(@issue, params[:attachments])
flash[:notice] = l(:notice_successful_create) flash[:notice] = l(:notice_successful_create)
@@ -186,22 +189,22 @@ class IssuesController < ApplicationController
if request.post? if request.post?
@time_entry = TimeEntry.new(:project => @project, :issue => @issue, :user => User.current, :spent_on => Date.today) @time_entry = TimeEntry.new(:project => @project, :issue => @issue, :user => User.current, :spent_on => Date.today)
@time_entry.attributes = params[:time_entry] @time_entry.attributes = params[:time_entry]
attachments = attach_files(@issue, params[:attachments]) if (@time_entry.hours.nil? || @time_entry.valid?) && @issue.valid?
attachments.each {|a| journal.details << JournalDetail.new(:property => 'attachment', :prop_key => a.id, :value => a.filename)} attachments = attach_files(@issue, params[:attachments])
attachments.each {|a| journal.details << JournalDetail.new(:property => 'attachment', :prop_key => a.id, :value => a.filename)}
call_hook(:controller_issues_edit_before_save, { :params => params, :issue => @issue, :time_entry => @time_entry, :journal => journal}) call_hook(:controller_issues_edit_before_save, { :params => params, :issue => @issue, :time_entry => @time_entry, :journal => journal})
if @issue.save
if (@time_entry.hours.nil? || @time_entry.valid?) && @issue.save # Log spend time
# Log spend time if User.current.allowed_to?(:log_time, @project)
if User.current.allowed_to?(:log_time, @project) @time_entry.save
@time_entry.save end
if !journal.new_record?
# Only send notification if something was actually changed
flash[:notice] = l(:notice_successful_update)
end
call_hook(:controller_issues_edit_after_save, { :params => params, :issue => @issue, :time_entry => @time_entry, :journal => journal})
redirect_back_or_default({:action => 'show', :id => @issue})
end end
if !journal.new_record?
# Only send notification if something was actually changed
flash[:notice] = l(:notice_successful_update)
end
call_hook(:controller_issues_edit_after_save, { :params => params, :issue => @issue, :time_entry => @time_entry, :journal => journal})
redirect_to(params[:back_to] || {:action => 'show', :id => @issue})
end end
end end
rescue ActiveRecord::StaleObjectError rescue ActiveRecord::StaleObjectError
@@ -220,10 +223,13 @@ class IssuesController < ApplicationController
user = @issue.author user = @issue.author
text = @issue.description text = @issue.description
end end
content = "#{ll(Setting.default_language, :text_user_wrote, user)}\\n> " # Replaces pre blocks with [...]
content << text.to_s.strip.gsub(%r{<pre>((.|\s)*?)</pre>}m, '[...]').gsub('"', '\"').gsub(/(\r?\n|\r\n?)/, "\\n> ") + "\\n\\n" text = text.to_s.strip.gsub(%r{<pre>((.|\s)*?)</pre>}m, '[...]')
content = "#{ll(Setting.default_language, :text_user_wrote, user)}\n> "
content << text.gsub(/(\r?\n|\r\n?)/, "\n> ") + "\n\n"
render(:update) { |page| render(:update) { |page|
page.<< "$('notes').value = \"#{content}\";" page.<< "$('notes').value = \"#{escape_javascript content}\";"
page.show 'update' page.show 'update'
page << "Form.Element.focus('notes');" page << "Form.Element.focus('notes');"
page << "Element.scrollTo('update');" page << "Element.scrollTo('update');"
@@ -268,23 +274,16 @@ class IssuesController < ApplicationController
:total => @issues.size, :total => @issues.size,
:ids => '#' + unsaved_issue_ids.join(', #')) :ids => '#' + unsaved_issue_ids.join(', #'))
end end
redirect_to(params[:back_to] || {:controller => 'issues', :action => 'index', :project_id => @project}) redirect_back_or_default({:controller => 'issues', :action => 'index', :project_id => @project})
return return
end end
@available_statuses = Workflow.available_statuses(@project) @available_statuses = Workflow.available_statuses(@project)
@custom_fields = @project.issue_custom_fields.select {|f| f.field_format == 'list'} @custom_fields = @project.all_issue_custom_fields
end end
def move def move
@copy = params[:copy_options] && params[:copy_options][:copy] @copy = params[:copy_options] && params[:copy_options][:copy]
@allowed_projects = [] @allowed_projects = Issue.allowed_target_projects_on_move
# find projects to which the user is allowed to move the issue
if User.current.admin?
# admin is allowed to move issues to any active (visible) project
@allowed_projects = Project.find(:all, :conditions => Project.visible_by(User.current))
else
User.current.memberships.each {|m| @allowed_projects << m.project if m.roles.detect {|r| r.allowed_to?(:move_issues)}}
end
@target_project = @allowed_projects.detect {|p| p.id.to_s == params[:new_project_id]} if params[:new_project_id] @target_project = @allowed_projects.detect {|p| p.id.to_s == params[:new_project_id]} if params[:new_project_id]
@target_project ||= @project @target_project ||= @project
@trackers = @target_project.trackers @trackers = @target_project.trackers
@@ -356,6 +355,7 @@ class IssuesController < ApplicationController
def gantt def gantt
@gantt = Redmine::Helpers::Gantt.new(params) @gantt = Redmine::Helpers::Gantt.new(params)
retrieve_query retrieve_query
@query.group_by = nil
if @query.valid? if @query.valid?
events = [] events = []
# Issues that have start and due dates # Issues that have start and due dates
@@ -395,6 +395,7 @@ class IssuesController < ApplicationController
@calendar = Redmine::Helpers::Calendar.new(Date.civil(@year, @month, 1), current_language, :month) @calendar = Redmine::Helpers::Calendar.new(Date.civil(@year, @month, 1), current_language, :month)
retrieve_query retrieve_query
@query.group_by = nil
if @query.valid? if @query.valid?
events = [] events = []
events += @query.issues(:include => [:tracker, :assigned_to, :priority], events += @query.issues(:include => [:tracker, :assigned_to, :priority],
+7 -1
View File
@@ -38,6 +38,7 @@ class MembersController < ApplicationController
format.js { format.js {
render(:update) {|page| render(:update) {|page|
page.replace_html "tab-content-members", :partial => 'projects/settings/members' page.replace_html "tab-content-members", :partial => 'projects/settings/members'
page << 'hideOnLoad()'
members.each {|member| page.visual_effect(:highlight, "member-#{member.id}") } members.each {|member| page.visual_effect(:highlight, "member-#{member.id}") }
} }
} }
@@ -51,6 +52,7 @@ class MembersController < ApplicationController
format.js { format.js {
render(:update) {|page| render(:update) {|page|
page.replace_html "tab-content-members", :partial => 'projects/settings/members' page.replace_html "tab-content-members", :partial => 'projects/settings/members'
page << 'hideOnLoad()'
page.visual_effect(:highlight, "member-#{@member.id}") page.visual_effect(:highlight, "member-#{@member.id}")
} }
} }
@@ -64,7 +66,11 @@ class MembersController < ApplicationController
end end
respond_to do |format| respond_to do |format|
format.html { redirect_to :controller => 'projects', :action => 'settings', :tab => 'members', :id => @project } format.html { redirect_to :controller => 'projects', :action => 'settings', :tab => 'members', :id => @project }
format.js { render(:update) {|page| page.replace_html "tab-content-members", :partial => 'projects/settings/members'} } format.js { render(:update) {|page|
page.replace_html "tab-content-members", :partial => 'projects/settings/members'
page << 'hideOnLoad()'
}
}
end end
end end
+16 -18
View File
@@ -27,7 +27,7 @@ class ProjectsController < ApplicationController
before_filter :authorize, :except => [ :index, :list, :add, :copy, :archive, :unarchive, :destroy, :activity ] before_filter :authorize, :except => [ :index, :list, :add, :copy, :archive, :unarchive, :destroy, :activity ]
before_filter :authorize_global, :only => :add before_filter :authorize_global, :only => :add
before_filter :require_admin, :only => [ :copy, :archive, :unarchive, :destroy ] before_filter :require_admin, :only => [ :copy, :archive, :unarchive, :destroy ]
accept_key_auth :activity accept_key_auth :activity, :index
after_filter :only => [:add, :edit, :archive, :unarchive, :destroy] do |controller| after_filter :only => [:add, :edit, :archive, :unarchive, :destroy] do |controller|
if controller.request.post? if controller.request.post?
@@ -102,18 +102,20 @@ class ProjectsController < ApplicationController
redirect_to :controller => 'admin', :action => 'projects' redirect_to :controller => 'admin', :action => 'projects'
end end
else else
@project = Project.new(params[:project]) Mailer.with_deliveries(params[:notifications] == '1') do
@project.enabled_module_names = params[:enabled_modules] @project = Project.new(params[:project])
if validate_parent_id && @project.copy(@source_project, :only => params[:only]) @project.enabled_module_names = params[:enabled_modules]
@project.set_allowed_parent!(params[:project]['parent_id']) if params[:project].has_key?('parent_id') if validate_parent_id && @project.copy(@source_project, :only => params[:only])
flash[:notice] = l(:notice_successful_create) @project.set_allowed_parent!(params[:project]['parent_id']) if params[:project].has_key?('parent_id')
redirect_to :controller => 'admin', :action => 'projects' flash[:notice] = l(:notice_successful_create)
elsif !@project.new_record? redirect_to :controller => 'admin', :action => 'projects'
# Project was created elsif !@project.new_record?
# But some objects were not copied due to validation failures # Project was created
# (eg. issues from disabled trackers) # But some objects were not copied due to validation failures
# TODO: inform about that # (eg. issues from disabled trackers)
redirect_to :controller => 'admin', :action => 'projects' # TODO: inform about that
redirect_to :controller => 'admin', :action => 'projects'
end
end end
end end
rescue ActiveRecord::RecordNotFound rescue ActiveRecord::RecordNotFound
@@ -320,13 +322,9 @@ class ProjectsController < ApplicationController
@issues_by_version = {} @issues_by_version = {}
unless @selected_tracker_ids.empty? unless @selected_tracker_ids.empty?
@versions.each do |version| @versions.each do |version|
conditions = {:tracker_id => @selected_tracker_ids}
if !@project.versions.include?(version)
conditions.merge!(:project_id => project_ids)
end
issues = version.fixed_issues.visible.find(:all, issues = version.fixed_issues.visible.find(:all,
:include => [:project, :status, :tracker, :priority], :include => [:project, :status, :tracker, :priority],
:conditions => conditions, :conditions => {:tracker_id => @selected_tracker_ids, :project_id => project_ids},
:order => "#{Project.table_name}.lft, #{Tracker.table_name}.position, #{Issue.table_name}.id") :order => "#{Project.table_name}.lft, #{Tracker.table_name}.position, #{Issue.table_name}.id")
@issues_by_version[version] = issues @issues_by_version[version] = issues
end end
+1 -1
View File
@@ -74,7 +74,7 @@ private
def find_optional_project def find_optional_project
@project = Project.find(params[:project_id]) if params[:project_id] @project = Project.find(params[:project_id]) if params[:project_id]
User.current.allowed_to?(:save_queries, @project, :global => true) render_403 unless User.current.allowed_to?(:save_queries, @project, :global => true)
rescue ActiveRecord::RecordNotFound rescue ActiveRecord::RecordNotFound
render_404 render_404
end end
+6 -6
View File
@@ -49,19 +49,19 @@ class ReportsController < ApplicationController
render :template => "reports/issue_report_details" render :template => "reports/issue_report_details"
when "assigned_to" when "assigned_to"
@field = "assigned_to_id" @field = "assigned_to_id"
@rows = @project.members.collect { |m| m.user } @rows = @project.members.collect { |m| m.user }.sort
@data = issues_by_assigned_to @data = issues_by_assigned_to
@report_title = l(:field_assigned_to) @report_title = l(:field_assigned_to)
render :template => "reports/issue_report_details" render :template => "reports/issue_report_details"
when "author" when "author"
@field = "author_id" @field = "author_id"
@rows = @project.members.collect { |m| m.user } @rows = @project.members.collect { |m| m.user }.sort
@data = issues_by_author @data = issues_by_author
@report_title = l(:field_author) @report_title = l(:field_author)
render :template => "reports/issue_report_details" render :template => "reports/issue_report_details"
when "subproject" when "subproject"
@field = "project_id" @field = "project_id"
@rows = @project.descendants.active @rows = @project.descendants.visible
@data = issues_by_subproject @data = issues_by_subproject
@report_title = l(:field_subproject) @report_title = l(:field_subproject)
render :template => "reports/issue_report_details" render :template => "reports/issue_report_details"
@@ -70,9 +70,9 @@ class ReportsController < ApplicationController
@versions = @project.shared_versions.sort @versions = @project.shared_versions.sort
@priorities = IssuePriority.all @priorities = IssuePriority.all
@categories = @project.issue_categories @categories = @project.issue_categories
@assignees = @project.members.collect { |m| m.user } @assignees = @project.members.collect { |m| m.user }.sort
@authors = @project.members.collect { |m| m.user } @authors = @project.members.collect { |m| m.user }.sort
@subprojects = @project.descendants.active @subprojects = @project.descendants.visible
issues_by_tracker issues_by_tracker
issues_by_version issues_by_version
issues_by_priority issues_by_priority
+2 -2
View File
@@ -62,8 +62,8 @@ class SearchController < ApplicationController
# extract tokens from the question # extract tokens from the question
# eg. hello "bye bye" => ["hello", "bye bye"] # eg. hello "bye bye" => ["hello", "bye bye"]
@tokens = @question.scan(%r{((\s|^)"[\s\w]+"(\s|$)|\S+)}).collect {|m| m.first.gsub(%r{(^\s*"\s*|\s*"\s*$)}, '')} @tokens = @question.scan(%r{((\s|^)"[\s\w]+"(\s|$)|\S+)}).collect {|m| m.first.gsub(%r{(^\s*"\s*|\s*"\s*$)}, '')}
# tokens must be at least 3 character long # tokens must be at least 2 characters long
@tokens = @tokens.uniq.select {|w| w.length > 2 } @tokens = @tokens.uniq.select {|w| w.length > 1 }
if !@tokens.empty? if !@tokens.empty?
# no more than 5 tokens to search for # no more than 5 tokens to search for
+10 -5
View File
@@ -25,6 +25,9 @@ class VersionsController < ApplicationController
helper :projects helper :projects
def show def show
@issues = @version.fixed_issues.visible.find(:all,
:include => [:status, :tracker, :priority],
:order => "#{Tracker.table_name}.position, #{Issue.table_name}.id")
end end
def edit def edit
@@ -46,11 +49,13 @@ class VersionsController < ApplicationController
end end
def destroy def destroy
@version.destroy if @version.fixed_issues.empty?
redirect_to :controller => 'projects', :action => 'settings', :tab => 'versions', :id => @project @version.destroy
rescue redirect_to :controller => 'projects', :action => 'settings', :tab => 'versions', :id => @project
flash[:error] = l(:notice_unable_delete_version) else
redirect_to :controller => 'projects', :action => 'settings', :tab => 'versions', :id => @project flash[:error] = l(:notice_unable_delete_version)
redirect_to :controller => 'projects', :action => 'settings', :tab => 'versions', :id => @project
end
end end
def status_by def status_by
+6 -6
View File
@@ -506,17 +506,17 @@ module ApplicationHelper
# Forum messages: # Forum messages:
# message#1218 -> Link to message with id 1218 # message#1218 -> Link to message with id 1218
text = text.gsub(%r{([\s\(,\-\>]|^)(!)?(attachment|document|version|commit|source|export|message)?((#|r)(\d+)|(:)([^"\s<>][^\s<>]*?|"[^"]+?"))(?=(?=[[:punct:]]\W)|,|\s|<|$)}) do |m| text = text.gsub(%r{([\s\(,\-\>]|^)(!)?(attachment|document|version|commit|source|export|message)?((#|r)(\d+)|(:)([^"\s<>][^\s<>]*?|"[^"]+?"))(?=(?=[[:punct:]]\W)|,|\s|<|$)}) do |m|
leading, esc, prefix, sep, oid = $1, $2, $3, $5 || $7, $6 || $8 leading, esc, prefix, sep, identifier = $1, $2, $3, $5 || $7, $6 || $8
link = nil link = nil
if esc.nil? if esc.nil?
if prefix.nil? && sep == 'r' if prefix.nil? && sep == 'r'
if project && (changeset = project.changesets.find_by_revision(oid)) if project && (changeset = project.changesets.find_by_revision(identifier))
link = link_to("r#{oid}", {:only_path => only_path, :controller => 'repositories', :action => 'revision', :id => project, :rev => oid}, link = link_to("r#{identifier}", {:only_path => only_path, :controller => 'repositories', :action => 'revision', :id => project, :rev => changeset.revision},
:class => 'changeset', :class => 'changeset',
:title => truncate_single_line(changeset.comments, :length => 100)) :title => truncate_single_line(changeset.comments, :length => 100))
end end
elsif sep == '#' elsif sep == '#'
oid = oid.to_i oid = identifier.to_i
case prefix case prefix
when nil when nil
if issue = Issue.visible.find_by_id(oid, :include => :status) if issue = Issue.visible.find_by_id(oid, :include => :status)
@@ -547,7 +547,7 @@ module ApplicationHelper
end end
elsif sep == ':' elsif sep == ':'
# removes the double quotes if any # removes the double quotes if any
name = oid.gsub(%r{^"(.*)"$}, "\\1") name = identifier.gsub(%r{^"(.*)"$}, "\\1")
case prefix case prefix
when 'document' when 'document'
if project && document = project.documents.find_by_title(name) if project && document = project.documents.find_by_title(name)
@@ -584,7 +584,7 @@ module ApplicationHelper
end end
end end
end end
leading + (link || "#{prefix}#{sep}#{oid}") leading + (link || "#{prefix}#{sep}#{identifier}")
end end
text text
+20
View File
@@ -67,6 +67,26 @@ module CustomFieldsHelper
custom_field_label_tag(name, custom_value) + custom_field_tag(name, custom_value) custom_field_label_tag(name, custom_value) + custom_field_tag(name, custom_value)
end end
def custom_field_tag_for_bulk_edit(custom_field)
field_name = "custom_field_values[#{custom_field.id}]"
field_id = "custom_field_values_#{custom_field.id}"
case custom_field.field_format
when "date"
text_field_tag(field_name, '', :id => field_id, :size => 10) +
calendar_for(field_id)
when "text"
text_area_tag(field_name, '', :id => field_id, :rows => 3, :style => 'width:90%')
when "bool"
select_tag(field_name, options_for_select([[l(:label_no_change_option), ''],
[l(:general_text_yes), '1'],
[l(:general_text_no), '0']]), :id => field_id)
when "list"
select_tag(field_name, options_for_select([[l(:label_no_change_option), '']] + custom_field.possible_values), :id => field_id)
else
text_field_tag(field_name, '', :id => field_id)
end
end
# Return a string used to display a custom value # Return a string used to display a custom value
def show_value(custom_value) def show_value(custom_value)
return "" unless custom_value return "" unless custom_value
+2 -2
View File
@@ -91,8 +91,8 @@ module IssuesHelper
c = IssueCategory.find_by_id(detail.value) and value = c.name if detail.value c = IssueCategory.find_by_id(detail.value) and value = c.name if detail.value
c = IssueCategory.find_by_id(detail.old_value) and old_value = c.name if detail.old_value c = IssueCategory.find_by_id(detail.old_value) and old_value = c.name if detail.old_value
when 'fixed_version_id' when 'fixed_version_id'
v = Version.find_by_id(detail.value) and value = format_version_name(v) if detail.value v = Version.find_by_id(detail.value) and value = v.name if detail.value
v = Version.find_by_id(detail.old_value) and old_value = format_version_name(v) if detail.old_value v = Version.find_by_id(detail.old_value) and old_value = v.name if detail.old_value
when 'estimated_hours' when 'estimated_hours'
value = "%0.02f" % detail.value.to_f unless detail.value.blank? value = "%0.02f" % detail.value.to_f unless detail.value.blank?
old_value = "%0.02f" % detail.old_value.to_f unless detail.old_value.blank? old_value = "%0.02f" % detail.old_value.to_f unless detail.old_value.blank?
-1
View File
@@ -32,7 +32,6 @@ module JournalsHelper
content << textilizable(journal, :notes) content << textilizable(journal, :notes)
css_classes = "wiki" css_classes = "wiki"
css_classes << " editable" if editable css_classes << " editable" if editable
css_classes << " gravatar-margin" if Setting.gravatar_enabled?
content_tag('div', content, :id => "journal-#{journal.id}-notes", :class => css_classes) content_tag('div', content, :id => "journal-#{journal.id}-notes", :class => css_classes)
end end
+20 -14
View File
@@ -52,17 +52,19 @@ module RepositoriesHelper
else else
change change
end end
end.compact end.compact
tree = { } tree = { }
changes.each do |change| changes.each do |change|
p = tree p = tree
dirs = change.path.to_s.split('/').select {|d| !d.blank?} dirs = change.path.to_s.split('/').select {|d| !d.blank?}
path = ''
dirs.each do |dir| dirs.each do |dir|
path += '/' + dir
p[:s] ||= {} p[:s] ||= {}
p = p[:s] p = p[:s]
p[dir] ||= {} p[path] ||= {}
p = p[dir] p = p[path]
end end
p[:c] = change p[:c] = change
end end
@@ -76,21 +78,26 @@ module RepositoriesHelper
output = '' output = ''
output << '<ul>' output << '<ul>'
tree.keys.sort.each do |file| tree.keys.sort.each do |file|
s = !tree[file][:s].nil?
c = tree[file][:c]
style = 'change' style = 'change'
style << ' folder' if s text = File.basename(h(file))
style << " change-#{c.action}" if c if s = tree[file][:s]
style << ' folder'
text = h(file) path_param = to_path_param(@repository.relative_path(file))
unless c.nil? text = link_to(text, :controller => 'repositories',
:action => 'show',
:id => @project,
:path => path_param,
:rev => @changeset.revision)
output << "<li class='#{style}'>#{text}</li>"
output << render_changes_tree(s)
elsif c = tree[file][:c]
style << " change-#{c.action}"
path_param = to_path_param(@repository.relative_path(c.path)) path_param = to_path_param(@repository.relative_path(c.path))
text = link_to(text, :controller => 'repositories', text = link_to(text, :controller => 'repositories',
:action => 'entry', :action => 'entry',
:id => @project, :id => @project,
:path => path_param, :path => path_param,
:rev => @changeset.revision) unless s || c.action == 'D' :rev => @changeset.revision) unless c.action == 'D'
text << " - #{c.revision}" unless c.revision.blank? text << " - #{c.revision}" unless c.revision.blank?
text << ' (' + link_to('diff', :controller => 'repositories', text << ' (' + link_to('diff', :controller => 'repositories',
:action => 'diff', :action => 'diff',
@@ -98,9 +105,8 @@ module RepositoriesHelper
:path => path_param, :path => path_param,
:rev => @changeset.revision) + ') ' if c.action == 'M' :rev => @changeset.revision) + ') ' if c.action == 'M'
text << ' ' + content_tag('span', c.from_path, :class => 'copied-from') unless c.from_path.blank? text << ' ' + content_tag('span', c.from_path, :class => 'copied-from') unless c.from_path.blank?
output << "<li class='#{style}'>#{text}</li>"
end end
output << "<li class='#{style}'>#{text}</li>"
output << render_changes_tree(tree[file][:s]) if s
end end
output << '</ul>' output << '</ul>'
output output
+3
View File
@@ -58,6 +58,9 @@ class Attachment < ActiveRecord::Base
self.filename = sanitize_filename(@temp_file.original_filename) self.filename = sanitize_filename(@temp_file.original_filename)
self.disk_filename = Attachment.disk_filename(filename) self.disk_filename = Attachment.disk_filename(filename)
self.content_type = @temp_file.content_type.to_s.chomp self.content_type = @temp_file.content_type.to_s.chomp
if content_type.blank?
self.content_type = Redmine::MimeType.of(filename)
end
self.filesize = @temp_file.size self.filesize = @temp_file.size
end end
end end
+33 -11
View File
@@ -1,5 +1,5 @@
# Redmine - project management software # Redmine - project management software
# Copyright (C) 2006-2008 Jean-Philippe Lang # Copyright (C) 2006-2010 Jean-Philippe Lang
# #
# This program is free software; you can redistribute it and/or # This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License # modify it under the terms of the GNU General Public License
@@ -41,6 +41,9 @@ class Changeset < ActiveRecord::Base
validates_uniqueness_of :revision, :scope => :repository_id validates_uniqueness_of :revision, :scope => :repository_id
validates_uniqueness_of :scmid, :scope => :repository_id, :allow_nil => true validates_uniqueness_of :scmid, :scope => :repository_id, :allow_nil => true
named_scope :visible, lambda {|*args| { :include => {:repository => :project},
:conditions => Project.allowed_to_condition(args.first || User.current, :view_changesets) } }
def revision=(r) def revision=(r)
write_attribute :revision, (r.nil? ? nil : r.to_s) write_attribute :revision, (r.nil? ? nil : r.to_s)
end end
@@ -54,6 +57,10 @@ class Changeset < ActiveRecord::Base
super super
end end
def committer=(arg)
write_attribute(:committer, self.class.to_utf8(arg.to_s))
end
def project def project
repository.project repository.project
end end
@@ -77,9 +84,6 @@ class Changeset < ActiveRecord::Base
ref_keywords = Setting.commit_ref_keywords.downcase.split(",").collect(&:strip) ref_keywords = Setting.commit_ref_keywords.downcase.split(",").collect(&:strip)
# keywords used to fix issues # keywords used to fix issues
fix_keywords = Setting.commit_fix_keywords.downcase.split(",").collect(&:strip) fix_keywords = Setting.commit_fix_keywords.downcase.split(",").collect(&:strip)
# status and optional done ratio applied
fix_status = IssueStatus.find_by_id(Setting.commit_fix_status_id)
done_ratio = Setting.commit_fix_done_ratio.blank? ? nil : Setting.commit_fix_done_ratio.to_i
kw_regexp = (ref_keywords + fix_keywords).collect{|kw| Regexp.escape(kw)}.join("|") kw_regexp = (ref_keywords + fix_keywords).collect{|kw| Regexp.escape(kw)}.join("|")
return if kw_regexp.blank? return if kw_regexp.blank?
@@ -90,14 +94,14 @@ class Changeset < ActiveRecord::Base
# find any issue ID in the comments # find any issue ID in the comments
target_issue_ids = [] target_issue_ids = []
comments.scan(%r{([\s\(\[,-]|^)#(\d+)(?=[[:punct:]]|\s|<|$)}).each { |m| target_issue_ids << m[1] } comments.scan(%r{([\s\(\[,-]|^)#(\d+)(?=[[:punct:]]|\s|<|$)}).each { |m| target_issue_ids << m[1] }
referenced_issues += repository.project.issues.find_all_by_id(target_issue_ids) referenced_issues += find_referenced_issues_by_id(target_issue_ids)
end end
comments.scan(Regexp.new("(#{kw_regexp})[\s:]+(([\s,;&]*#?\\d+)+)", Regexp::IGNORECASE)).each do |match| comments.scan(Regexp.new("(#{kw_regexp})[\s:]+(([\s,;&]*#?\\d+)+)", Regexp::IGNORECASE)).each do |match|
action = match[0] action = match[0]
target_issue_ids = match[1].scan(/\d+/) target_issue_ids = match[1].scan(/\d+/)
target_issues = repository.project.issues.find_all_by_id(target_issue_ids) target_issues = find_referenced_issues_by_id(target_issue_ids)
if fix_status && fix_keywords.include?(action.downcase) if fix_keywords.include?(action.downcase) && fix_status = IssueStatus.find_by_id(Setting.commit_fix_status_id)
# update status of issues # update status of issues
logger.debug "Issues fixed by changeset #{self.revision}: #{issue_ids.join(', ')}." if logger && logger.debug? logger.debug "Issues fixed by changeset #{self.revision}: #{issue_ids.join(', ')}." if logger && logger.debug?
target_issues.each do |issue| target_issues.each do |issue|
@@ -111,7 +115,9 @@ class Changeset < ActiveRecord::Base
end end
journal = issue.init_journal(user || User.anonymous, ll(Setting.default_language, :text_status_changed_by_changeset, csettext)) journal = issue.init_journal(user || User.anonymous, ll(Setting.default_language, :text_status_changed_by_changeset, csettext))
issue.status = fix_status issue.status = fix_status
issue.done_ratio = done_ratio if done_ratio unless Setting.commit_fix_done_ratio.blank?
issue.done_ratio = Setting.commit_fix_done_ratio.to_i
end
Redmine::Hook.call_hook(:model_changeset_scan_commit_for_issue_ids_pre_issue_update, Redmine::Hook.call_hook(:model_changeset_scan_commit_for_issue_ids_pre_issue_update,
{ :changeset => self, :issue => issue }) { :changeset => self, :issue => issue })
issue.save issue.save
@@ -120,7 +126,8 @@ class Changeset < ActiveRecord::Base
referenced_issues += target_issues referenced_issues += target_issues
end end
self.issues = referenced_issues.uniq referenced_issues.uniq!
self.issues = referenced_issues unless referenced_issues.empty?
end end
def short_comments def short_comments
@@ -148,6 +155,15 @@ class Changeset < ActiveRecord::Base
private private
# Finds issues that can be referenced by the commit message
# i.e. issues that belong to the repository project, a subproject or a parent project
def find_referenced_issues_by_id(ids)
return [] if ids.compact.empty?
Issue.find_all_by_id(ids, :include => :project).select {|issue|
project == issue.project || project.is_ancestor_of?(issue.project) || project.is_descendant_of?(issue.project)
}
end
def split_comments def split_comments
comments =~ /\A(.+?)\r?\n(.*)$/m comments =~ /\A(.+?)\r?\n(.*)$/m
@short_comments = $1 || comments @short_comments = $1 || comments
@@ -160,11 +176,17 @@ class Changeset < ActiveRecord::Base
encoding = Setting.commit_logs_encoding.to_s.strip encoding = Setting.commit_logs_encoding.to_s.strip
unless encoding.blank? || encoding == 'UTF-8' unless encoding.blank? || encoding == 'UTF-8'
begin begin
return Iconv.conv('UTF-8', encoding, str) str = Iconv.conv('UTF-8', encoding, str)
rescue Iconv::Failure rescue Iconv::Failure
# do nothing here # do nothing here
end end
end end
str # removes invalid UTF8 sequences
begin
Iconv.conv('UTF-8//IGNORE', 'UTF-8', str + ' ')[0..-3]
rescue Iconv::InvalidEncoding
# "UTF-8//IGNORE" is not supported on some OS
str
end
end end
end end
+24 -7
View File
@@ -80,7 +80,7 @@ class Issue < ActiveRecord::Base
end end
def copy_from(arg) def copy_from(arg)
issue = arg.is_a?(Issue) ? arg : Issue.find(arg) issue = arg.is_a?(Issue) ? arg : Issue.visible.find(arg)
self.attributes = issue.attributes.dup.except("id", "created_on", "updated_on") self.attributes = issue.attributes.dup.except("id", "created_on", "updated_on")
self.custom_values = issue.custom_values.collect {|v| v.clone} self.custom_values = issue.custom_values.collect {|v| v.clone}
self.status = issue.status self.status = issue.status
@@ -92,7 +92,7 @@ class Issue < ActiveRecord::Base
def move_to(new_project, new_tracker = nil, options = {}) def move_to(new_project, new_tracker = nil, options = {})
options ||= {} options ||= {}
issue = options[:copy] ? self.clone : self issue = options[:copy] ? self.clone : self
transaction do ret = Issue.transaction do
if new_project && issue.project_id != new_project.id if new_project && issue.project_id != new_project.id
# delete issue relations # delete issue relations
unless Setting.cross_project_issue_relations? unless Setting.cross_project_issue_relations?
@@ -129,12 +129,12 @@ class Issue < ActiveRecord::Base
# Manually update project_id on related time entries # Manually update project_id on related time entries
TimeEntry.update_all("project_id = #{new_project.id}", {:issue_id => id}) TimeEntry.update_all("project_id = #{new_project.id}", {:issue_id => id})
end end
true
else else
Issue.connection.rollback_db_transaction raise ActiveRecord::Rollback
return false
end end
end end
return issue ret ? issue : false
end end
def priority_id=(pid) def priority_id=(pid)
@@ -157,9 +157,10 @@ class Issue < ActiveRecord::Base
if new_tracker_id if new_tracker_id
self.tracker_id = new_tracker_id self.tracker_id = new_tracker_id
end end
self.attributes_without_tracker_first = new_attributes, *args send :attributes_without_tracker_first=, new_attributes, *args
end end
alias_method_chain :attributes=, :tracker_first # Do not redefine alias chain on reload (see #4838)
alias_method_chain(:attributes=, :tracker_first) unless method_defined?(:attributes_without_tracker_first=)
def estimated_hours=(h) def estimated_hours=(h)
write_attribute :estimated_hours, (h.is_a?(String) ? h.to_hours : h) write_attribute :estimated_hours, (h.is_a?(String) ? h.to_hours : h)
@@ -388,6 +389,22 @@ class Issue < ActiveRecord::Base
Issue.update_versions(["#{Version.table_name}.project_id IN (?) OR #{Issue.table_name}.project_id IN (?)", moved_project_ids, moved_project_ids]) Issue.update_versions(["#{Version.table_name}.project_id IN (?) OR #{Issue.table_name}.project_id IN (?)", moved_project_ids, moved_project_ids])
end end
# Returns an array of projects that current user can move issues to
def self.allowed_target_projects_on_move
projects = []
if User.current.admin?
# admin is allowed to move issues to any active (visible) project
projects = Project.visible.all
elsif User.current.logged?
if Role.non_member.allowed_to?(:move_issues)
projects = Project.visible.all
else
User.current.memberships.each {|m| projects << m.project if m.roles.detect {|r| r.allowed_to?(:move_issues)}}
end
end
projects
end
private private
# Update issues so their versions are not pointing to a # Update issues so their versions are not pointing to a
+1 -2
View File
@@ -49,7 +49,7 @@ class MailHandler < ActionMailer::Base
logger.info "MailHandler: ignoring email from Redmine emission address [#{sender_email}]" if logger && logger.info logger.info "MailHandler: ignoring email from Redmine emission address [#{sender_email}]" if logger && logger.info
return false return false
end end
@user = User.find_by_mail(sender_email) @user = User.find_by_mail(sender_email) if sender_email.present?
if @user && !@user.active? if @user && !@user.active?
logger.info "MailHandler: ignoring email from non-active user [#{@user.login}]" if logger && logger.info logger.info "MailHandler: ignoring email from non-active user [#{@user.login}]" if logger && logger.info
return false return false
@@ -132,7 +132,6 @@ class MailHandler < ActionMailer::Base
issue.status = status issue.status = status
end end
issue.subject = email.subject.chomp issue.subject = email.subject.chomp
issue.subject = issue.subject.toutf8 if issue.subject.respond_to?(:toutf8)
if issue.subject.blank? if issue.subject.blank?
issue.subject = '(no subject)' issue.subject = '(no subject)'
end end
+13 -2
View File
@@ -114,11 +114,11 @@ class Mailer < ActionMailer::Base
when 'Project' when 'Project'
added_to_url = url_for(:controller => 'projects', :action => 'list_files', :id => container) added_to_url = url_for(:controller => 'projects', :action => 'list_files', :id => container)
added_to = "#{l(:label_project)}: #{container}" added_to = "#{l(:label_project)}: #{container}"
recipients container.project.notified_users.select {|user| user.allowed_to?(:view_files, container.project)} recipients container.project.notified_users.select {|user| user.allowed_to?(:view_files, container.project)}.collect {|u| u.mail}
when 'Version' when 'Version'
added_to_url = url_for(:controller => 'projects', :action => 'list_files', :id => container.project_id) added_to_url = url_for(:controller => 'projects', :action => 'list_files', :id => container.project_id)
added_to = "#{l(:label_version)}: #{container.name}" added_to = "#{l(:label_version)}: #{container.name}"
recipients container.project.notified_users.select {|user| user.allowed_to?(:view_files, container.project)} recipients container.project.notified_users.select {|user| user.allowed_to?(:view_files, container.project)}.collect {|u| u.mail}
when 'Document' when 'Document'
added_to_url = url_for(:controller => 'documents', :action => 'show', :id => container.id) added_to_url = url_for(:controller => 'documents', :action => 'show', :id => container.id)
added_to = "#{l(:label_document)}: #{container.title}" added_to = "#{l(:label_document)}: #{container.title}"
@@ -272,6 +272,7 @@ class Mailer < ActionMailer::Base
# Overrides default deliver! method to prevent from sending an email # Overrides default deliver! method to prevent from sending an email
# with no recipient, cc or bcc # with no recipient, cc or bcc
def deliver!(mail = @mail) def deliver!(mail = @mail)
set_language_if_valid @initial_language
return false if (recipients.nil? || recipients.empty?) && return false if (recipients.nil? || recipients.empty?) &&
(cc.nil? || cc.empty?) && (cc.nil? || cc.empty?) &&
(bcc.nil? || bcc.empty?) (bcc.nil? || bcc.empty?)
@@ -310,9 +311,19 @@ class Mailer < ActionMailer::Base
end end
end end
# Activates/desactivates email deliveries during +block+
def self.with_deliveries(enabled = true, &block)
was_enabled = ActionMailer::Base.perform_deliveries
ActionMailer::Base.perform_deliveries = !!enabled
yield
ensure
ActionMailer::Base.perform_deliveries = was_enabled
end
private private
def initialize_defaults(method_name) def initialize_defaults(method_name)
super super
@initial_language = current_language
set_language_if_valid Setting.default_language set_language_if_valid Setting.default_language
from Setting.mail_from from Setting.mail_from
+8
View File
@@ -57,6 +57,14 @@ class Member < ActiveRecord::Base
member_roles.detect {|mr| mr.inherited_from}.nil? member_roles.detect {|mr| mr.inherited_from}.nil?
end end
def include?(user)
if principal.is_a?(Group)
!user.nil? && user.groups.include?(principal)
else
self.user == user
end
end
def before_destroy def before_destroy
if user if user
# remove category based auto assignments for this member # remove category based auto assignments for this member
+4
View File
@@ -30,6 +30,10 @@ class MemberRole < ActiveRecord::Base
errors.add :role_id, :invalid if role && !role.member? errors.add :role_id, :invalid if role && !role.member?
end end
def inherited?
!inherited_from.nil?
end
private private
def remove_member_if_empty def remove_member_if_empty
+15 -1
View File
@@ -16,7 +16,7 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class Principal < ActiveRecord::Base class Principal < ActiveRecord::Base
set_table_name 'users' set_table_name "#{table_name_prefix}users#{table_name_suffix}"
has_many :members, :foreign_key => 'user_id', :dependent => :destroy has_many :members, :foreign_key => 'user_id', :dependent => :destroy
has_many :memberships, :class_name => 'Member', :foreign_key => 'user_id', :include => [ :project, :roles ], :conditions => "#{Project.table_name}.status=#{Project::STATUS_ACTIVE}", :order => "#{Project.table_name}.name" has_many :memberships, :class_name => 'Member', :foreign_key => 'user_id', :include => [ :project, :roles ], :conditions => "#{Project.table_name}.status=#{Project::STATUS_ACTIVE}", :order => "#{Project.table_name}.name"
@@ -32,6 +32,8 @@ class Principal < ActiveRecord::Base
} }
} }
before_create :set_default_empty_values
def <=>(principal) def <=>(principal)
if self.class.name == principal.class.name if self.class.name == principal.class.name
self.to_s.downcase <=> principal.to_s.downcase self.to_s.downcase <=> principal.to_s.downcase
@@ -40,4 +42,16 @@ class Principal < ActiveRecord::Base
principal.class.name <=> self.class.name principal.class.name <=> self.class.name
end end
end end
protected
# Make sure we don't try to insert NULL values (see #4632)
def set_default_empty_values
self.login ||= ''
self.hashed_password ||= ''
self.firstname ||= ''
self.lastname ||= ''
self.mail ||= ''
true
end
end end
+30 -6
View File
@@ -23,6 +23,7 @@ class Project < ActiveRecord::Base
# Specific overidden Activities # Specific overidden Activities
has_many :time_entry_activities has_many :time_entry_activities
has_many :members, :include => [:user, :roles], :conditions => "#{User.table_name}.type='User' AND #{User.table_name}.status=#{User::STATUS_ACTIVE}" has_many :members, :include => [:user, :roles], :conditions => "#{User.table_name}.type='User' AND #{User.table_name}.status=#{User::STATUS_ACTIVE}"
has_many :memberships, :class_name => 'Member'
has_many :member_principals, :class_name => 'Member', has_many :member_principals, :class_name => 'Member',
:include => :principal, :include => :principal,
:conditions => "#{Principal.table_name}.type='Group' OR (#{Principal.table_name}.type='User' AND #{Principal.table_name}.status=#{User::STATUS_ACTIVE})" :conditions => "#{Principal.table_name}.type='Group' OR (#{Principal.table_name}.type='User' AND #{Principal.table_name}.status=#{User::STATUS_ACTIVE})"
@@ -50,12 +51,12 @@ class Project < ActiveRecord::Base
:join_table => "#{table_name_prefix}custom_fields_projects#{table_name_suffix}", :join_table => "#{table_name_prefix}custom_fields_projects#{table_name_suffix}",
:association_foreign_key => 'custom_field_id' :association_foreign_key => 'custom_field_id'
acts_as_nested_set :order => 'name', :dependent => :destroy acts_as_nested_set :order => 'name'
acts_as_attachable :view_permission => :view_files, acts_as_attachable :view_permission => :view_files,
:delete_permission => :manage_files :delete_permission => :manage_files
acts_as_customizable acts_as_customizable
acts_as_searchable :columns => ['name', 'description'], :project_key => 'id', :permission => nil acts_as_searchable :columns => ['name', 'identifier', 'description'], :project_key => 'id', :permission => nil
acts_as_event :title => Proc.new {|o| "#{l(:label_project)}: #{o.name}"}, acts_as_event :title => Proc.new {|o| "#{l(:label_project)}: #{o.name}"},
:url => Proc.new {|o| {:controller => 'projects', :action => 'show', :id => o.id}}, :url => Proc.new {|o| {:controller => 'projects', :action => 'show', :id => o.id}},
:author => nil :author => nil
@@ -73,7 +74,7 @@ class Project < ActiveRecord::Base
# reserved words # reserved words
validates_exclusion_of :identifier, :in => %w( new ) validates_exclusion_of :identifier, :in => %w( new )
before_destroy :delete_all_members before_destroy :delete_all_members, :destroy_children
named_scope :has_module, lambda { |mod| { :conditions => ["#{Project.table_name}.id IN (SELECT em.project_id FROM #{EnabledModule.table_name} em WHERE em.name=?)", mod.to_s] } } named_scope :has_module, lambda { |mod| { :conditions => ["#{Project.table_name}.id IN (SELECT em.project_id FROM #{EnabledModule.table_name} em WHERE em.name=?)", mod.to_s] } }
named_scope :active, { :conditions => "#{Project.table_name}.status = #{STATUS_ACTIVE}"} named_scope :active, { :conditions => "#{Project.table_name}.status = #{STATUS_ACTIVE}"}
@@ -248,7 +249,7 @@ class Project < ActiveRecord::Base
return @allowed_parents if @allowed_parents return @allowed_parents if @allowed_parents
@allowed_parents = Project.find(:all, :conditions => Project.allowed_to_condition(User.current, :add_subprojects)) @allowed_parents = Project.find(:all, :conditions => Project.allowed_to_condition(User.current, :add_subprojects))
@allowed_parents = @allowed_parents - self_and_descendants @allowed_parents = @allowed_parents - self_and_descendants
if User.current.allowed_to?(:add_project, nil, :global => true) if User.current.allowed_to?(:add_project, nil, :global => true) || (!new_record? && parent.nil?)
@allowed_parents << nil @allowed_parents << nil
end end
unless parent.nil? || @allowed_parents.empty? || @allowed_parents.include?(parent) unless parent.nil? || @allowed_parents.empty? || @allowed_parents.include?(parent)
@@ -498,17 +499,36 @@ class Project < ActiveRecord::Base
private private
# Destroys children before destroying self
def destroy_children
children.each do |child|
child.destroy
end
end
# Copies wiki from +project+ # Copies wiki from +project+
def copy_wiki(project) def copy_wiki(project)
# Check that the source project has a wiki first # Check that the source project has a wiki first
unless project.wiki.nil? unless project.wiki.nil?
self.wiki ||= Wiki.new self.wiki ||= Wiki.new
wiki.attributes = project.wiki.attributes.dup.except("id", "project_id") wiki.attributes = project.wiki.attributes.dup.except("id", "project_id")
wiki_pages_map = {}
project.wiki.pages.each do |page| project.wiki.pages.each do |page|
# Skip pages without content
next if page.content.nil?
new_wiki_content = WikiContent.new(page.content.attributes.dup.except("id", "page_id", "updated_on")) new_wiki_content = WikiContent.new(page.content.attributes.dup.except("id", "page_id", "updated_on"))
new_wiki_page = WikiPage.new(page.attributes.dup.except("id", "wiki_id", "created_on", "parent_id")) new_wiki_page = WikiPage.new(page.attributes.dup.except("id", "wiki_id", "created_on", "parent_id"))
new_wiki_page.content = new_wiki_content new_wiki_page.content = new_wiki_content
wiki.pages << new_wiki_page wiki.pages << new_wiki_page
wiki_pages_map[page.id] = new_wiki_page
end
wiki.save
# Reproduce page hierarchy
project.wiki.pages.each do |page|
if page.parent_id && wiki_pages_map[page.id]
wiki_pages_map[page.id].parent = wiki_pages_map[page.parent_id]
wiki_pages_map[page.id].save
end
end end
end end
end end
@@ -583,10 +603,14 @@ class Project < ActiveRecord::Base
# Copies members from +project+ # Copies members from +project+
def copy_members(project) def copy_members(project)
project.members.each do |member| project.memberships.each do |member|
new_member = Member.new new_member = Member.new
new_member.attributes = member.attributes.dup.except("id", "project_id", "created_on") new_member.attributes = member.attributes.dup.except("id", "project_id", "created_on")
new_member.role_ids = member.role_ids.dup # only copy non inherited roles
# inherited roles will be added when copying the group membership
role_ids = member.member_roles.reject(&:inherited?).collect(&:role_id)
next if role_ids.empty?
new_member.role_ids = role_ids
new_member.project = self new_member.project = self
self.members << new_member self.members << new_member
end end
+5 -1
View File
@@ -210,6 +210,10 @@ class Query < ActiveRecord::Base
add_custom_fields_filters(@project.all_issue_custom_fields) add_custom_fields_filters(@project.all_issue_custom_fields)
else else
# global filters for cross project issue list # global filters for cross project issue list
system_shared_versions = Version.visible.find_all_by_sharing('system')
unless system_shared_versions.empty?
@available_filters["fixed_version_id"] = { :type => :list_optional, :order => 7, :values => system_shared_versions.sort.collect{|s| ["#{s.project.name} - #{s.name}", s.id.to_s] } }
end
add_custom_fields_filters(IssueCustomField.find(:all, :conditions => {:is_filter => true, :is_for_all => true})) add_custom_fields_filters(IssueCustomField.find(:all, :conditions => {:is_filter => true, :is_for_all => true}))
end end
@available_filters @available_filters
@@ -232,7 +236,7 @@ class Query < ActiveRecord::Base
def add_short_filter(field, expression) def add_short_filter(field, expression)
return unless expression return unless expression
parms = expression.scan(/^(o|c|\!|\*)?(.*)$/).first parms = expression.scan(/^(o|c|!\*|!|\*)?(.*)$/).first
add_filter field, (parms[0] || "="), [parms[1] || ""] add_filter field, (parms[0] || "="), [parms[1] || ""]
end end
+17 -6
View File
@@ -136,6 +136,7 @@ class Repository < ActiveRecord::Base
end end
end end
@committers = nil @committers = nil
@found_committer_users = nil
true true
else else
false false
@@ -146,24 +147,34 @@ class Repository < ActiveRecord::Base
# It will return nil if the committer is not yet mapped and if no User # It will return nil if the committer is not yet mapped and if no User
# with the same username or email was found # with the same username or email was found
def find_committer_user(committer) def find_committer_user(committer)
if committer unless committer.blank?
@found_committer_users ||= {}
return @found_committer_users[committer] if @found_committer_users.has_key?(committer)
user = nil
c = changesets.find(:first, :conditions => {:committer => committer}, :include => :user) c = changesets.find(:first, :conditions => {:committer => committer}, :include => :user)
if c && c.user if c && c.user
c.user user = c.user
elsif committer.strip =~ /^([^<]+)(<(.*)>)?$/ elsif committer.strip =~ /^([^<]+)(<(.*)>)?$/
username, email = $1.strip, $3 username, email = $1.strip, $3
u = User.find_by_login(username) u = User.find_by_login(username)
u ||= User.find_by_mail(email) unless email.blank? u ||= User.find_by_mail(email) unless email.blank?
u user = u
end end
@found_committer_users[committer] = user
user
end end
end end
# fetch new changesets for all repositories # Fetches new changesets for all repositories of active projects
# can be called periodically by an external script # Can be called periodically by an external script
# eg. ruby script/runner "Repository.fetch_changesets" # eg. ruby script/runner "Repository.fetch_changesets"
def self.fetch_changesets def self.fetch_changesets
find(:all).each(&:fetch_changesets) Project.active.has_module(:repository).find(:all, :include => :repository).each do |project|
if project.repository
project.repository.fetch_changesets
end
end
end end
# scan changeset comments to find related and fixed issues for all repositories # scan changeset comments to find related and fixed issues for all repositories
+12 -9
View File
@@ -40,23 +40,26 @@ class Repository::Git < Repository
# With SCM's that have a sequential commit numbering, redmine is able to be # With SCM's that have a sequential commit numbering, redmine is able to be
# clever and only fetch changesets going forward from the most recent one # clever and only fetch changesets going forward from the most recent one
# it knows about. However, with git, you never know if people have merged # it knows about. However, with git, you never know if people have merged
# commits into the middle of the repository history, so we always have to # commits into the middle of the repository history, so we should parse
# parse the entire log. # the entire log. Since it's way too slow for large repositories, we only
# parse 1 week before the last known commit.
# The repository can still be fully reloaded by calling #clear_changesets
# before fetching changesets (eg. for offline resync)
def fetch_changesets def fetch_changesets
# Save ourselves an expensive operation if we're already up to date c = changesets.find(:first, :order => 'committed_on DESC')
return if scm.num_revisions == changesets.count since = (c ? c.committed_on - 7.days : nil)
revisions = scm.revisions('', nil, nil, :all => true) revisions = scm.revisions('', nil, nil, :all => true, :since => since)
return if revisions.nil? || revisions.empty? return if revisions.nil? || revisions.empty?
# Find revisions that redmine knows about already recent_changesets = changesets.find(:all, :conditions => ['committed_on >= ?', since])
existing_revisions = changesets.find(:all).map!{|c| c.scmid}
# Clean out revisions that are no longer in git # Clean out revisions that are no longer in git
Changeset.delete_all(["scmid NOT IN (?) AND repository_id = (?)", revisions.map{|r| r.scmid}, self.id]) recent_changesets.each {|c| c.destroy unless revisions.detect {|r| r.scmid.to_s == c.scmid.to_s }}
# Subtract revisions that redmine already knows about # Subtract revisions that redmine already knows about
revisions.reject!{|r| existing_revisions.include?(r.scmid)} recent_revisions = recent_changesets.map{|c| c.scmid}
revisions.reject!{|r| recent_revisions.include?(r.scmid)}
# Save the remaining ones to the database # Save the remaining ones to the database
revisions.each{|r| r.save(self)} unless revisions.nil? revisions.each{|r| r.save(self)} unless revisions.nil?
+1 -1
View File
@@ -196,7 +196,7 @@ class User < Principal
# Return user's API key (a 40 chars long string), used to access the API # Return user's API key (a 40 chars long string), used to access the API
def api_key def api_key
token = self.api_token || Token.create(:user => self, :action => 'api') token = self.api_token || self.create_api_token(:action => 'api')
token.value token.value
end end
+4 -8
View File
@@ -1,5 +1,5 @@
# redMine - project management software # Redmine - project management software
# Copyright (C) 2006 Jean-Philippe Lang # Copyright (C) 2006-2010 Jean-Philippe Lang
# #
# This program is free software; you can redistribute it and/or # This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License # modify it under the terms of the GNU General Public License
@@ -16,10 +16,9 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class Version < ActiveRecord::Base class Version < ActiveRecord::Base
before_destroy :check_integrity
after_update :update_issues_from_sharing_change after_update :update_issues_from_sharing_change
belongs_to :project belongs_to :project
has_many :fixed_issues, :class_name => 'Issue', :foreign_key => 'fixed_version_id' has_many :fixed_issues, :class_name => 'Issue', :foreign_key => 'fixed_version_id', :dependent => :nullify
acts_as_customizable acts_as_customizable
acts_as_attachable :view_permission => :view_files, acts_as_attachable :view_permission => :view_files,
:delete_permission => :manage_files :delete_permission => :manage_files
@@ -155,10 +154,7 @@ class Version < ActiveRecord::Base
end end
end end
private private
def check_integrity
raise "Can't delete version" if self.fixed_issues.find(:first)
end
# Update the issue's fixed versions. Used if a version's sharing changes. # Update the issue's fixed versions. Used if a version's sharing changes.
def update_issues_from_sharing_change def update_issues_from_sharing_change
+2
View File
@@ -1,3 +1,4 @@
<%= call_hook :view_account_login_top %>
<div id="login-form"> <div id="login-form">
<% form_tag({:action=> "login"}) do %> <% form_tag({:action=> "login"}) do %>
<%= back_url_hidden_field_tag %> <%= back_url_hidden_field_tag %>
@@ -38,3 +39,4 @@
<%= javascript_tag "Form.Element.focus('username');" %> <%= javascript_tag "Form.Element.focus('username');" %>
<% end %> <% end %>
</div> </div>
<%= call_hook :view_account_login_bottom %>
+1 -1
View File
@@ -6,7 +6,7 @@
<div class="box tabular"> <div class="box tabular">
<p><label for="new_password"><%=l(:field_new_password)%> <span class="required">*</span></label> <p><label for="new_password"><%=l(:field_new_password)%> <span class="required">*</span></label>
<%= password_field_tag 'new_password', nil, :size => 25 %><br /> <%= password_field_tag 'new_password', nil, :size => 25 %><br />
<em><%= l(:text_caracters_minimum, 4) %></em></p> <em><%= l(:text_caracters_minimum, :count => Setting.password_min_length) %></em></p>
<p><label for="new_password_confirmation"><%=l(:field_password_confirmation)%> <span class="required">*</span></label> <p><label for="new_password_confirmation"><%=l(:field_password_confirmation)%> <span class="required">*</span></label>
<%= password_field_tag 'new_password_confirmation', nil, :size => 25 %></p> <%= password_field_tag 'new_password_confirmation', nil, :size => 25 %></p>
+2
View File
@@ -15,6 +15,7 @@
<% end %> <% end %>
&nbsp; &nbsp;
<div class="autoscroll">
<table class="list"> <table class="list">
<thead><tr> <thead><tr>
<th><%=l(:label_project)%></th> <th><%=l(:label_project)%></th>
@@ -40,5 +41,6 @@
<% end %> <% end %>
</tbody> </tbody>
</table> </table>
</div>
<% html_title(l(:label_project_plural)) -%> <% html_title(l(:label_project_plural)) -%>
+1
View File
@@ -22,6 +22,7 @@
<td class="buttons"> <td class="buttons">
<%= link_to l(:button_test), :action => 'test_connection', :id => source %> <%= link_to l(:button_test), :action => 'test_connection', :id => source %>
<%= link_to l(:button_delete), { :action => 'destroy', :id => source }, <%= link_to l(:button_delete), { :action => 'destroy', :id => source },
:method => :post,
:confirm => l(:text_are_you_sure), :confirm => l(:text_are_you_sure),
:class => 'icon icon-del', :class => 'icon icon-del',
:disabled => source.users.any? %> :disabled => source.users.any? %>
+4
View File
@@ -26,3 +26,7 @@
<% end %> <% end %>
<% html_title @document.title -%> <% html_title @document.title -%>
<% content_for :header_tags do %>
<%= stylesheet_link_tag 'scm' %>
<% end %>
+1 -1
View File
@@ -29,7 +29,7 @@
<% remote_form_for(:group, @group, :url => {:controller => 'groups', :action => 'add_users', :id => @group}, :method => :post) do |f| %> <% remote_form_for(:group, @group, :url => {:controller => 'groups', :action => 'add_users', :id => @group}, :method => :post) do |f| %>
<fieldset><legend><%=l(:label_user_new)%></legend> <fieldset><legend><%=l(:label_user_new)%></legend>
<p><%= text_field_tag 'user_search', nil, :size => "40" %></p> <p><%= text_field_tag 'user_search', nil %></p>
<%= observe_field(:user_search, <%= observe_field(:user_search,
:frequency => 0.5, :frequency => 0.5,
:update => :users, :update => :users,
-2
View File
@@ -1,7 +1,5 @@
<h2><%= link_to l(:label_group_plural), groups_path %> &#187; <%= l(:label_group_new) %></h2> <h2><%= link_to l(:label_group_plural), groups_path %> &#187; <%= l(:label_group_new) %></h2>
<%= error_messages_for :group %>
<% form_for(@group, :builder => TabularFormBuilder, :lang => current_language) do |f| %> <% form_for(@group, :builder => TabularFormBuilder, :lang => current_language) do |f| %>
<%= render :partial => 'form', :locals => { :f => f } %> <%= render :partial => 'form', :locals => { :f => f } %>
<p><%= f.submit l(:button_create) %></p> <p><%= f.submit l(:button_create) %></p>
+2 -1
View File
@@ -2,9 +2,10 @@
<% for journal in journals %> <% for journal in journals %>
<div id="change-<%= journal.id %>" class="journal"> <div id="change-<%= journal.id %>" class="journal">
<h4><div style="float:right;"><%= link_to "##{journal.indice}", :anchor => "note-#{journal.indice}" %></div> <h4><div style="float:right;"><%= link_to "##{journal.indice}", :anchor => "note-#{journal.indice}" %></div>
<%= avatar(journal.user, :size => "24") %>
<%= content_tag('a', '', :name => "note-#{journal.indice}")%> <%= content_tag('a', '', :name => "note-#{journal.indice}")%>
<%= authoring journal.created_on, journal.user, :label => :label_updated_time_by %></h4> <%= authoring journal.created_on, journal.user, :label => :label_updated_time_by %></h4>
<%= avatar(journal.user, :size => "32") %>
<ul> <ul>
<% for detail in journal.details %> <% for detail in journal.details %>
<li><%= show_detail(detail) %></li> <li><%= show_detail(detail) %></li>
+3 -1
View File
@@ -1,5 +1,6 @@
<% form_tag({}) do -%> <% form_tag({}) do -%>
<%= hidden_field_tag 'back_url', url_for(params) %> <%= hidden_field_tag 'back_url', url_for(params) %>
<div class="autoscroll">
<table class="list issues"> <table class="list issues">
<thead><tr> <thead><tr>
<th><%= link_to image_tag('toggle_check.png'), {}, :onclick => 'toggleIssuesSelection(Element.up(this, "form")); return false;', <th><%= link_to image_tag('toggle_check.png'), {}, :onclick => 'toggleIssuesSelection(Element.up(this, "form")); return false;',
@@ -25,10 +26,11 @@
<% end %> <% end %>
<tr id="issue-<%= issue.id %>" class="hascontextmenu <%= cycle('odd', 'even') %> <%= issue.css_classes %>"> <tr id="issue-<%= issue.id %>" class="hascontextmenu <%= cycle('odd', 'even') %> <%= issue.css_classes %>">
<td class="checkbox"><%= check_box_tag("ids[]", issue.id, false, :id => nil) %></td> <td class="checkbox"><%= check_box_tag("ids[]", issue.id, false, :id => nil) %></td>
<td><%= link_to issue.id, :controller => 'issues', :action => 'show', :id => issue %></td> <td class="id"><%= link_to issue.id, :controller => 'issues', :action => 'show', :id => issue %></td>
<% query.columns.each do |column| %><%= content_tag 'td', column_content(column, issue), :class => column.name %><% end %> <% query.columns.each do |column| %><%= content_tag 'td', column_content(column, issue), :class => column.name %><% end %>
</tr> </tr>
<% end -%> <% end -%>
</tbody> </tbody>
</table> </table>
</div>
<% end -%> <% end -%>
+52 -38
View File
@@ -4,54 +4,68 @@
<% form_tag() do %> <% form_tag() do %>
<%= @issues.collect {|i| hidden_field_tag('ids[]', i.id)}.join %> <%= @issues.collect {|i| hidden_field_tag('ids[]', i.id)}.join %>
<div class="box"> <div class="box tabular">
<fieldset> <fieldset>
<legend><%= l(:label_change_properties) %></legend> <legend><%= l(:label_change_properties) %></legend>
<p>
<label><%= l(:field_tracker) %>:
<%= select_tag('tracker_id', "<option value=\"\">#{l(:label_no_change_option)}</option>" + options_from_collection_for_select(@project.trackers, :id, :name)) %></label>
<% if @available_statuses.any? %>
<label><%= l(:field_status) %>:
<%= select_tag('status_id', "<option value=\"\">#{l(:label_no_change_option)}</option>" + options_from_collection_for_select(@available_statuses, :id, :name)) %></label>
<% end %>
</p>
<p>
<label><%= l(:field_priority) %>:
<%= select_tag('priority_id', "<option value=\"\">#{l(:label_no_change_option)}</option>" + options_from_collection_for_select(IssuePriority.all, :id, :name)) %></label>
<label><%= l(:field_category) %>:
<%= select_tag('category_id', content_tag('option', l(:label_no_change_option), :value => '') +
content_tag('option', l(:label_none), :value => 'none') +
options_from_collection_for_select(@project.issue_categories, :id, :name)) %></label>
</p>
<p>
<label><%= l(:field_assigned_to) %>:
<%= select_tag('assigned_to_id', content_tag('option', l(:label_no_change_option), :value => '') +
content_tag('option', l(:label_nobody), :value => 'none') +
options_from_collection_for_select(@project.assignable_users, :id, :name)) %></label>
<label><%= l(:field_fixed_version) %>:
<%= select_tag('fixed_version_id', content_tag('option', l(:label_no_change_option), :value => '') +
content_tag('option', l(:label_none), :value => 'none') +
version_options_for_select(@project.shared_versions.open)) %></label>
</p>
<div class="splitcontentleft">
<p> <p>
<label><%= l(:field_start_date) %>: <label><%= l(:field_tracker) %></label>
<%= text_field_tag 'start_date', '', :size => 10 %><%= calendar_for('start_date') %></label> <%= select_tag('tracker_id', "<option value=\"\">#{l(:label_no_change_option)}</option>" + options_from_collection_for_select(@project.trackers, :id, :name)) %>
<label><%= l(:field_due_date) %>: </p>
<%= text_field_tag 'due_date', '', :size => 10 %><%= calendar_for('due_date') %></label> <% if @available_statuses.any? %>
<% if Issue.use_field_for_done_ratio? %> <p>
<label><%= l(:field_done_ratio) %>: <label><%= l(:field_status) %></label>
<%= select_tag 'done_ratio', options_for_select([[l(:label_no_change_option), '']] + (0..10).to_a.collect {|r| ["#{r*10} %", r*10] }) %></label> <%= select_tag('status_id', "<option value=\"\">#{l(:label_no_change_option)}</option>" + options_from_collection_for_select(@available_statuses, :id, :name)) %>
</p>
<% end %> <% end %>
<p>
<label><%= l(:field_priority) %></label>
<%= select_tag('priority_id', "<option value=\"\">#{l(:label_no_change_option)}</option>" + options_from_collection_for_select(IssuePriority.all, :id, :name)) %>
</p>
<p>
<label><%= l(:field_assigned_to) %></label>
<%= select_tag('assigned_to_id', content_tag('option', l(:label_no_change_option), :value => '') +
content_tag('option', l(:label_nobody), :value => 'none') +
options_from_collection_for_select(@project.assignable_users, :id, :name)) %>
</p>
<p>
<label><%= l(:field_category) %></label>
<%= select_tag('category_id', content_tag('option', l(:label_no_change_option), :value => '') +
content_tag('option', l(:label_none), :value => 'none') +
options_from_collection_for_select(@project.issue_categories, :id, :name)) %>
</p>
<p>
<label><%= l(:field_fixed_version) %></label>
<%= select_tag('fixed_version_id', content_tag('option', l(:label_no_change_option), :value => '') +
content_tag('option', l(:label_none), :value => 'none') +
version_options_for_select(@project.shared_versions.open)) %>
</p> </p>
<% @custom_fields.each do |custom_field| %> <% @custom_fields.each do |custom_field| %>
<p><label><%= h(custom_field.name) %></label> <p><label><%= h(custom_field.name) %></label> <%= custom_field_tag_for_bulk_edit(custom_field) %></p>
<%= select_tag "custom_field_values[#{custom_field.id}]", options_for_select([[l(:label_no_change_option), '']] + custom_field.possible_values) %></label>
</p>
<% end %> <% end %>
<%= call_hook(:view_issues_bulk_edit_details_bottom, { :issues => @issues }) %> <%= call_hook(:view_issues_bulk_edit_details_bottom, { :issues => @issues }) %>
</div>
<div class="splitcontentright">
<p>
<label><%= l(:field_start_date) %></label>
<%= text_field_tag 'start_date', '', :size => 10 %><%= calendar_for('start_date') %>
</p>
<p>
<label><%= l(:field_due_date) %></label>
<%= text_field_tag 'due_date', '', :size => 10 %><%= calendar_for('due_date') %>
</p>
<% if Issue.use_field_for_done_ratio? %>
<p>
<label><%= l(:field_done_ratio) %></label>
<%= select_tag 'done_ratio', options_for_select([[l(:label_no_change_option), '']] + (0..10).to_a.collect {|r| ["#{r*10} %", r*10] }) %>
</p>
<% end %>
</div>
</fieldset> </fieldset>
<fieldset><legend><%= l(:field_notes) %></legend> <fieldset><legend><%= l(:field_notes) %></legend>
@@ -60,5 +74,5 @@
</fieldset> </fieldset>
</div> </div>
<p><%= submit_tag l(:button_submit) %> <p><%= submit_tag l(:button_submit) %></p>
<% end %> <% end %>
+10 -10
View File
@@ -8,7 +8,7 @@
<a href="#" class="submenu" onclick="return false;"><%= l(:field_status) %></a> <a href="#" class="submenu" onclick="return false;"><%= l(:field_status) %></a>
<ul> <ul>
<% @statuses.each do |s| -%> <% @statuses.each do |s| -%>
<li><%= context_menu_link s.name, {:controller => 'issues', :action => 'edit', :id => @issue, :issue => {:status_id => s}, :back_to => @back}, :method => :post, <li><%= context_menu_link s.name, {:controller => 'issues', :action => 'edit', :id => @issue, :issue => {:status_id => s}, :back_url => @back}, :method => :post,
:selected => (s == @issue.status), :disabled => !(@can[:update] && @allowed_statuses.include?(s)) %></li> :selected => (s == @issue.status), :disabled => !(@can[:update] && @allowed_statuses.include?(s)) %></li>
<% end -%> <% end -%>
</ul> </ul>
@@ -23,7 +23,7 @@
<a href="#" class="submenu"><%= l(:field_tracker) %></a> <a href="#" class="submenu"><%= l(:field_tracker) %></a>
<ul> <ul>
<% @trackers.each do |t| -%> <% @trackers.each do |t| -%>
<li><%= context_menu_link t.name, {:controller => 'issues', :action => 'bulk_edit', :ids => @issues.collect(&:id), 'tracker_id' => t, :back_to => @back}, :method => :post, <li><%= context_menu_link t.name, {:controller => 'issues', :action => 'bulk_edit', :ids => @issues.collect(&:id), 'tracker_id' => t, :back_url => @back}, :method => :post,
:selected => (@issue && t == @issue.tracker), :disabled => !@can[:edit] %></li> :selected => (@issue && t == @issue.tracker), :disabled => !@can[:edit] %></li>
<% end -%> <% end -%>
</ul> </ul>
@@ -33,7 +33,7 @@
<a href="#" class="submenu"><%= l(:field_priority) %></a> <a href="#" class="submenu"><%= l(:field_priority) %></a>
<ul> <ul>
<% @priorities.each do |p| -%> <% @priorities.each do |p| -%>
<li><%= context_menu_link p.name, {:controller => 'issues', :action => 'bulk_edit', :ids => @issues.collect(&:id), 'priority_id' => p, :back_to => @back}, :method => :post, <li><%= context_menu_link p.name, {:controller => 'issues', :action => 'bulk_edit', :ids => @issues.collect(&:id), 'priority_id' => p, :back_url => @back}, :method => :post,
:selected => (@issue && p == @issue.priority), :disabled => !@can[:edit] %></li> :selected => (@issue && p == @issue.priority), :disabled => !@can[:edit] %></li>
<% end -%> <% end -%>
</ul> </ul>
@@ -43,10 +43,10 @@
<a href="#" class="submenu"><%= l(:field_fixed_version) %></a> <a href="#" class="submenu"><%= l(:field_fixed_version) %></a>
<ul> <ul>
<% @project.shared_versions.open.sort.each do |v| -%> <% @project.shared_versions.open.sort.each do |v| -%>
<li><%= context_menu_link format_version_name(v), {:controller => 'issues', :action => 'bulk_edit', :ids => @issues.collect(&:id), 'fixed_version_id' => v, :back_to => @back}, :method => :post, <li><%= context_menu_link format_version_name(v), {:controller => 'issues', :action => 'bulk_edit', :ids => @issues.collect(&:id), 'fixed_version_id' => v, :back_url => @back}, :method => :post,
:selected => (@issue && v == @issue.fixed_version), :disabled => !@can[:update] %></li> :selected => (@issue && v == @issue.fixed_version), :disabled => !@can[:update] %></li>
<% end -%> <% end -%>
<li><%= context_menu_link l(:label_none), {:controller => 'issues', :action => 'bulk_edit', :ids => @issues.collect(&:id), 'fixed_version_id' => 'none', :back_to => @back}, :method => :post, <li><%= context_menu_link l(:label_none), {:controller => 'issues', :action => 'bulk_edit', :ids => @issues.collect(&:id), 'fixed_version_id' => 'none', :back_url => @back}, :method => :post,
:selected => (@issue && @issue.fixed_version.nil?), :disabled => !@can[:update] %></li> :selected => (@issue && @issue.fixed_version.nil?), :disabled => !@can[:update] %></li>
</ul> </ul>
</li> </li>
@@ -56,10 +56,10 @@
<a href="#" class="submenu"><%= l(:field_assigned_to) %></a> <a href="#" class="submenu"><%= l(:field_assigned_to) %></a>
<ul> <ul>
<% @assignables.each do |u| -%> <% @assignables.each do |u| -%>
<li><%= context_menu_link u.name, {:controller => 'issues', :action => 'bulk_edit', :ids => @issues.collect(&:id), 'assigned_to_id' => u, :back_to => @back}, :method => :post, <li><%= context_menu_link u.name, {:controller => 'issues', :action => 'bulk_edit', :ids => @issues.collect(&:id), 'assigned_to_id' => u, :back_url => @back}, :method => :post,
:selected => (@issue && u == @issue.assigned_to), :disabled => !@can[:update] %></li> :selected => (@issue && u == @issue.assigned_to), :disabled => !@can[:update] %></li>
<% end -%> <% end -%>
<li><%= context_menu_link l(:label_nobody), {:controller => 'issues', :action => 'bulk_edit', :ids => @issues.collect(&:id), 'assigned_to_id' => 'none', :back_to => @back}, :method => :post, <li><%= context_menu_link l(:label_nobody), {:controller => 'issues', :action => 'bulk_edit', :ids => @issues.collect(&:id), 'assigned_to_id' => 'none', :back_url => @back}, :method => :post,
:selected => (@issue && @issue.assigned_to.nil?), :disabled => !@can[:update] %></li> :selected => (@issue && @issue.assigned_to.nil?), :disabled => !@can[:update] %></li>
</ul> </ul>
</li> </li>
@@ -69,10 +69,10 @@
<a href="#" class="submenu"><%= l(:field_category) %></a> <a href="#" class="submenu"><%= l(:field_category) %></a>
<ul> <ul>
<% @project.issue_categories.each do |u| -%> <% @project.issue_categories.each do |u| -%>
<li><%= context_menu_link u.name, {:controller => 'issues', :action => 'bulk_edit', :ids => @issues.collect(&:id), 'category_id' => u, :back_to => @back}, :method => :post, <li><%= context_menu_link u.name, {:controller => 'issues', :action => 'bulk_edit', :ids => @issues.collect(&:id), 'category_id' => u, :back_url => @back}, :method => :post,
:selected => (@issue && u == @issue.category), :disabled => !@can[:update] %></li> :selected => (@issue && u == @issue.category), :disabled => !@can[:update] %></li>
<% end -%> <% end -%>
<li><%= context_menu_link l(:label_none), {:controller => 'issues', :action => 'bulk_edit', :ids => @issues.collect(&:id), 'category_id' => 'none', :back_to => @back}, :method => :post, <li><%= context_menu_link l(:label_none), {:controller => 'issues', :action => 'bulk_edit', :ids => @issues.collect(&:id), 'category_id' => 'none', :back_url => @back}, :method => :post,
:selected => (@issue && @issue.category.nil?), :disabled => !@can[:update] %></li> :selected => (@issue && @issue.category.nil?), :disabled => !@can[:update] %></li>
</ul> </ul>
</li> </li>
@@ -82,7 +82,7 @@
<a href="#" class="submenu"><%= l(:field_done_ratio) %></a> <a href="#" class="submenu"><%= l(:field_done_ratio) %></a>
<ul> <ul>
<% (0..10).map{|x|x*10}.each do |p| -%> <% (0..10).map{|x|x*10}.each do |p| -%>
<li><%= context_menu_link "#{p}%", {:controller => 'issues', :action => 'bulk_edit', :ids => @issues.collect(&:id), 'done_ratio' => p, :back_to => @back}, :method => :post, <li><%= context_menu_link "#{p}%", {:controller => 'issues', :action => 'bulk_edit', :ids => @issues.collect(&:id), 'done_ratio' => p, :back_url => @back}, :method => :post,
:selected => (@issue && p == @issue.done_ratio), :disabled => !@can[:edit] %></li> :selected => (@issue && p == @issue.done_ratio), :disabled => !@can[:edit] %></li>
<% end -%> <% end -%>
</ul> </ul>
+1 -3
View File
@@ -86,7 +86,6 @@ top = headers_height + 8
<%= link_to_issue i %> <%= link_to_issue i %>
<% else %> <% else %>
<span class="icon icon-package"> <span class="icon icon-package">
<%= h("#{i.project} -") unless @project && @project == i.project %>
<%= link_to_version i %> <%= link_to_version i %>
</span> </span>
<% end %> <% end %>
@@ -211,8 +210,7 @@ top = headers_height + 10
%> %>
<div style="top:<%= top %>px;left:<%= i_left %>px;width:15px;" class="task milestone">&nbsp;</div> <div style="top:<%= top %>px;left:<%= i_left %>px;width:15px;" class="task milestone">&nbsp;</div>
<div style="top:<%= top %>px;left:<%= i_left + 12 %>px;background:#fff;" class="task"> <div style="top:<%= top %>px;left:<%= i_left + 12 %>px;background:#fff;" class="task">
<%= h("#{i.project} -") unless @project && @project == i.project %> <strong><%= format_version_name i %></strong>
<strong><%=h i %></strong>
</div> </div>
<% end %> <% end %>
<% top = top + 20 <% top = top + 20
+4 -4
View File
@@ -10,10 +10,10 @@
<% form_tag({ :controller => 'queries', :action => 'new' }, :id => 'query_form') do %> <% form_tag({ :controller => 'queries', :action => 'new' }, :id => 'query_form') do %>
<%= hidden_field_tag('project_id', @project.to_param) if @project %> <%= hidden_field_tag('project_id', @project.to_param) if @project %>
<div id="query_form_content"> <div id="query_form_content" class="hide-when-print">
<fieldset id="filters" class="collapsible"> <fieldset id="filters" class="collapsible <%= @query.new_record? ? "" : "collapsed" %>">
<legend onclick="toggleFieldset(this);"><%= l(:label_filter_plural) %></legend> <legend onclick="toggleFieldset(this);"><%= l(:label_filter_plural) %></legend>
<div> <div style="<%= @query.new_record? ? "" : "display: none;" %>">
<%= render :partial => 'queries/filters', :locals => {:query => @query} %> <%= render :partial => 'queries/filters', :locals => {:query => @query} %>
</div> </div>
</fieldset> </fieldset>
@@ -33,7 +33,7 @@
</div> </div>
</fieldset> </fieldset>
</div> </div>
<p class="buttons"> <p class="buttons hide-when-print">
<%= link_to_remote l(:button_apply), <%= link_to_remote l(:button_apply),
{ :url => { :set_filter => 1 }, { :url => { :set_filter => 1 },
+2 -2
View File
@@ -3,7 +3,7 @@
<h2><%= @issue.tracker.name %> #<%= @issue.id %></h2> <h2><%= @issue.tracker.name %> #<%= @issue.id %></h2>
<div class="<%= @issue.css_classes %> details"> <div class="<%= @issue.css_classes %> details">
<%= avatar(@issue.author, :size => "64") %> <%= avatar(@issue.author, :size => "50") %>
<h3><%=h @issue.subject %></h3> <h3><%=h @issue.subject %></h3>
<p class="author"> <p class="author">
<%= authoring @issue.created_on, @issue.author %>. <%= authoring @issue.created_on, @issue.author %>.
@@ -73,7 +73,7 @@
</div> </div>
<% if @changesets.any? && User.current.allowed_to?(:view_changesets, @project) %> <% if @changesets.any? %>
<div id="issue-changesets"> <div id="issue-changesets">
<h3><%=l(:label_associated_revisions)%></h3> <h3><%=l(:label_associated_revisions)%></h3>
<%= render :partial => 'changesets', :locals => { :changesets => @changesets} %> <%= render :partial => 'changesets', :locals => { :changesets => @changesets} %>
+3 -1
View File
@@ -40,9 +40,11 @@
<h1><%= page_header_title %></h1> <h1><%= page_header_title %></h1>
<% if display_main_menu?(@project) %>
<div id="main-menu"> <div id="main-menu">
<%= render_main_menu(@project) %> <%= render_main_menu(@project) %>
</div> </div>
<% end %>
</div> </div>
<%= tag('div', {:id => 'main', :class => (has_content?(:sidebar) ? '' : 'nosidebar')}, true) %> <%= tag('div', {:id => 'main', :class => (has_content?(:sidebar) ? '' : 'nosidebar')}, true) %>
@@ -62,7 +64,7 @@
<div id="ajax-indicator" style="display:none;"><span><%= l(:label_loading) %></span></div> <div id="ajax-indicator" style="display:none;"><span><%= l(:label_loading) %></span></div>
<div id="footer"> <div id="footer">
Powered by <%= link_to Redmine::Info.app_name, Redmine::Info.url %> &copy; 2006-2009 Jean-Philippe Lang Powered by <%= link_to Redmine::Info.app_name, Redmine::Info.url %> &copy; 2006-2010 Jean-Philippe Lang
</div> </div>
</div> </div>
<%= call_hook :view_layouts_base_body_bottom %> <%= call_hook :view_layouts_base_body_bottom %>
+8 -8
View File
@@ -1,14 +1,14 @@
<h1><%= link_to "#{issue.tracker.name} ##{issue.id}: #{issue.subject}", issue_url %></h1> <h1><%= link_to(h("#{issue.tracker.name} ##{issue.id}: #{issue.subject}"), issue_url) %></h1>
<ul> <ul>
<li><%=l(:field_author)%>: <%= issue.author %></li> <li><%=l(:field_author)%>: <%=h issue.author %></li>
<li><%=l(:field_status)%>: <%= issue.status %></li> <li><%=l(:field_status)%>: <%=h issue.status %></li>
<li><%=l(:field_priority)%>: <%= issue.priority %></li> <li><%=l(:field_priority)%>: <%=h issue.priority %></li>
<li><%=l(:field_assigned_to)%>: <%= issue.assigned_to %></li> <li><%=l(:field_assigned_to)%>: <%=h issue.assigned_to %></li>
<li><%=l(:field_category)%>: <%= issue.category %></li> <li><%=l(:field_category)%>: <%=h issue.category %></li>
<li><%=l(:field_fixed_version)%>: <%= issue.fixed_version %></li> <li><%=l(:field_fixed_version)%>: <%=h issue.fixed_version %></li>
<% issue.custom_values.each do |c| %> <% issue.custom_values.each do |c| %>
<li><%= c.custom_field.name %>: <%= show_value(c) %></li> <li><%=h c.custom_field.name %>: <%=h show_value(c) %></li>
<% end %> <% end %>
</ul> </ul>
@@ -1,2 +1,2 @@
<p><%= l(:mail_body_account_activation_request, @user.login) %></p> <p><%= l(:mail_body_account_activation_request, h(@user.login)) %></p>
<p><%= link_to @url, @url %></p> <p><%= link_to @url, @url %></p>
@@ -1,10 +1,10 @@
<% if @user.auth_source %> <% if @user.auth_source %>
<p><%= l(:mail_body_account_information_external, @user.auth_source.name) %></p> <p><%= l(:mail_body_account_information_external, h(@user.auth_source.name)) %></p>
<% else %> <% else %>
<p><%= l(:mail_body_account_information) %>:</p> <p><%= l(:mail_body_account_information) %>:</p>
<ul> <ul>
<li><%= l(:field_login) %>: <%= @user.login %></li> <li><%= l(:field_login) %>: <%=h @user.login %></li>
<li><%= l(:field_password) %>: <%= @password %></li> <li><%= l(:field_password) %>: <%=h @password %></li>
</ul> </ul>
<% end %> <% end %>
@@ -1,5 +1,5 @@
<%= link_to @added_to, @added_to_url %><br /> <%= link_to @added_to, @added_to_url %><br />
<ul><% @attachments.each do |attachment | %> <ul><% @attachments.each do |attachment | %>
<li><%= attachment.filename %></li> <li><%=h attachment.filename %></li>
<% end %></ul> <% end %></ul>
@@ -1,3 +1,3 @@
<%= link_to @document.title, @document_url %> (<%= @document.category.name %>)<br /> <%= link_to(h(@document.title), @document_url) %> (<%=h @document.category.name %>)<br />
<br /> <br />
<%= textilizable(@document, :description, :only_path => false) %> <%= textilizable(@document, :description, :only_path => false) %>
+1 -1
View File
@@ -1,3 +1,3 @@
<%= l(:text_issue_added, :id => "##{@issue.id}", :author => @issue.author) %> <%= l(:text_issue_added, :id => "##{@issue.id}", :author => h(@issue.author)) %>
<hr /> <hr />
<%= render :partial => "issue_text_html", :locals => { :issue => @issue, :issue_url => @issue_url } %> <%= render :partial => "issue_text_html", :locals => { :issue => @issue, :issue_url => @issue_url } %>
+1 -1
View File
@@ -1,4 +1,4 @@
<%= l(:text_issue_updated, :id => "##{@issue.id}", :author => @journal.user) %> <%= l(:text_issue_updated, :id => "##{@issue.id}", :author => h(@journal.user)) %>
<ul> <ul>
<% for detail in @journal.details %> <% for detail in @journal.details %>
@@ -1,4 +1,4 @@
<p><%= l(:mail_body_lost_password) %><br /> <p><%= l(:mail_body_lost_password) %><br />
<%= auto_link(@url) %></p> <%= auto_link(@url) %></p>
<p><%= l(:field_login) %>: <b><%= @token.user.login %></b></p> <p><%= l(:field_login) %>: <b><%=h @token.user.login %></b></p>
@@ -1,4 +1,4 @@
<h1><%=h @message.board.project.name %> - <%=h @message.board.name %>: <%= link_to @message.subject, @message_url %></h1> <h1><%=h @message.board.project.name %> - <%=h @message.board.name %>: <%= link_to(h(@message.subject), @message_url) %></h1>
<em><%= @message.author %></em> <em><%=h @message.author %></em>
<%= textilizable(@message, :content, :only_path => false) %> <%= textilizable(@message, :content, :only_path => false) %>
+2 -2
View File
@@ -1,4 +1,4 @@
<h1><%= link_to @news.title, @news_url %></h1> <h1><%= link_to(h(@news.title), @news_url) %></h1>
<em><%= @news.author.name %></em> <em><%=h @news.author.name %></em>
<%= textilizable(@news, :description, :only_path => false) %> <%= textilizable(@news, :description, :only_path => false) %>
+4 -3
View File
@@ -3,12 +3,12 @@
<div class="contextual"> <div class="contextual">
<%= watcher_tag(@topic, User.current) %> <%= watcher_tag(@topic, User.current) %>
<%= link_to_remote_if_authorized l(:button_quote), { :url => {:action => 'quote', :id => @topic} }, :class => 'icon icon-comment' %> <%= link_to_remote_if_authorized(l(:button_quote), { :url => {:action => 'quote', :id => @topic} }, :class => 'icon icon-comment') unless @topic.locked? %>
<%= link_to(l(:button_edit), {:action => 'edit', :id => @topic}, :class => 'icon icon-edit') if @message.editable_by?(User.current) %> <%= link_to(l(:button_edit), {:action => 'edit', :id => @topic}, :class => 'icon icon-edit') if @message.editable_by?(User.current) %>
<%= link_to(l(:button_delete), {:action => 'destroy', :id => @topic}, :method => :post, :confirm => l(:text_are_you_sure), :class => 'icon icon-del') if @message.destroyable_by?(User.current) %> <%= link_to(l(:button_delete), {:action => 'destroy', :id => @topic}, :method => :post, :confirm => l(:text_are_you_sure), :class => 'icon icon-del') if @message.destroyable_by?(User.current) %>
</div> </div>
<h2><%=h @topic.subject %></h2> <h2><%= avatar(@topic.author, :size => "24") %><%=h @topic.subject %></h2>
<div class="message"> <div class="message">
<p><span class="author"><%= authoring @topic.created_on, @topic.author %></span></p> <p><span class="author"><%= authoring @topic.created_on, @topic.author %></span></p>
@@ -24,11 +24,12 @@
<% @replies.each do |message| %> <% @replies.each do |message| %>
<div class="message reply" id="<%= "message-#{message.id}" %>"> <div class="message reply" id="<%= "message-#{message.id}" %>">
<div class="contextual"> <div class="contextual">
<%= link_to_remote_if_authorized image_tag('comment.png'), { :url => {:action => 'quote', :id => message} }, :title => l(:button_quote) %> <%= link_to_remote_if_authorized(image_tag('comment.png'), { :url => {:action => 'quote', :id => message} }, :title => l(:button_quote)) unless @topic.locked? %>
<%= link_to(image_tag('edit.png'), {:action => 'edit', :id => message}, :title => l(:button_edit)) if message.editable_by?(User.current) %> <%= link_to(image_tag('edit.png'), {:action => 'edit', :id => message}, :title => l(:button_edit)) if message.editable_by?(User.current) %>
<%= link_to(image_tag('delete.png'), {:action => 'destroy', :id => message}, :method => :post, :confirm => l(:text_are_you_sure), :title => l(:button_delete)) if message.destroyable_by?(User.current) %> <%= link_to(image_tag('delete.png'), {:action => 'destroy', :id => message}, :method => :post, :confirm => l(:text_are_you_sure), :title => l(:button_delete)) if message.destroyable_by?(User.current) %>
</div> </div>
<h4> <h4>
<%= avatar(message.author, :size => "24") %>
<%= link_to h(message.subject), { :controller => 'messages', :action => 'show', :board_id => @board, :id => @topic, :anchor => "message-#{message.id}" } %> <%= link_to h(message.subject), { :controller => 'messages', :action => 'show', :board_id => @board, :id => @topic, :anchor => "message-#{message.id}" } %>
- -
<%= authoring message.created_on, message.author %> <%= authoring message.created_on, message.author %>
+2 -2
View File
@@ -17,10 +17,10 @@
<% if Setting.rest_api_enabled? %> <% if Setting.rest_api_enabled? %>
<h4><%= l(:label_api_access_key) %></h4> <h4><%= l(:label_api_access_key) %></h4>
<p> <div>
<%= link_to_function(l(:button_show), "$('api-access-key').toggle();")%> <%= link_to_function(l(:button_show), "$('api-access-key').toggle();")%>
<pre id='api-access-key' class='autoscroll'><%= @user.api_key %></pre> <pre id='api-access-key' class='autoscroll'><%= @user.api_key %></pre>
</p> </div>
<%= javascript_tag("$('api-access-key').hide();") %> <%= javascript_tag("$('api-access-key').hide();") %>
<p> <p>
<% if @user.api_token %> <% if @user.api_token %>
+1 -1
View File
@@ -1,7 +1,7 @@
<h3><%= l(:label_calendar) %></h3> <h3><%= l(:label_calendar) %></h3>
<% calendar = Redmine::Helpers::Calendar.new(Date.today, current_language, :week) <% calendar = Redmine::Helpers::Calendar.new(Date.today, current_language, :week)
calendar.events = Issue.find :all, calendar.events = Issue.visible.find :all,
:conditions => ["#{Issue.table_name}.project_id in (#{@user.projects.collect{|m| m.id}.join(',')}) AND ((start_date>=? and start_date<=?) or (due_date>=? and due_date<=?))", calendar.startdt, calendar.enddt, calendar.startdt, calendar.enddt], :conditions => ["#{Issue.table_name}.project_id in (#{@user.projects.collect{|m| m.id}.join(',')}) AND ((start_date>=? and start_date<=?) or (due_date>=? and due_date<=?))", calendar.startdt, calendar.enddt, calendar.startdt, calendar.enddt],
:include => [:project, :tracker, :priority, :assigned_to] unless @user.projects.empty? %> :include => [:project, :tracker, :priority, :assigned_to] unless @user.projects.empty? %>
+2 -2
View File
@@ -7,7 +7,7 @@
<%= link_to_if_authorized l(:button_delete), {:controller => 'news', :action => 'destroy', :id => @news}, :confirm => l(:text_are_you_sure), :method => :post, :class => 'icon icon-del' %> <%= link_to_if_authorized l(:button_delete), {:controller => 'news', :action => 'destroy', :id => @news}, :confirm => l(:text_are_you_sure), :method => :post, :class => 'icon icon-del' %>
</div> </div>
<h2><%=h @news.title %></h2> <h2><%= avatar(@news.author, :size => "24") %><%=h @news.title %></h2>
<% if authorize_for('news', 'edit') %> <% if authorize_for('news', 'edit') %>
<div id="edit-news" style="display:none;"> <div id="edit-news" style="display:none;">
@@ -42,7 +42,7 @@
<%= link_to_if_authorized image_tag('delete.png'), {:controller => 'news', :action => 'destroy_comment', :id => @news, :comment_id => comment}, <%= link_to_if_authorized image_tag('delete.png'), {:controller => 'news', :action => 'destroy_comment', :id => @news, :comment_id => comment},
:confirm => l(:text_are_you_sure), :method => :post, :title => l(:button_delete) %> :confirm => l(:text_are_you_sure), :method => :post, :title => l(:button_delete) %>
</div> </div>
<h4><%= authoring comment.created_on, comment.author %></h4> <h4><%= avatar(comment.author, :size => "24") %><%= authoring comment.created_on, comment.author %></h4>
<%= textilizable(comment.comments) %> <%= textilizable(comment.comments) %>
<% end if @comments.any? %> <% end if @comments.any? %>
</div> </div>
+2
View File
@@ -21,6 +21,8 @@
<label class="block"><%= check_box_tag 'only[]', 'boards', true %> <%= l(:label_board_plural) %> (<%= @source_project.boards.count %>)</label> <label class="block"><%= check_box_tag 'only[]', 'boards', true %> <%= l(:label_board_plural) %> (<%= @source_project.boards.count %>)</label>
<label class="block"><%= check_box_tag 'only[]', 'wiki', true %> <%= l(:label_wiki_page_plural) %> (<%= @source_project.wiki.nil? ? 0 : @source_project.wiki.pages.count %>)</label> <label class="block"><%= check_box_tag 'only[]', 'wiki', true %> <%= l(:label_wiki_page_plural) %> (<%= @source_project.wiki.nil? ? 0 : @source_project.wiki.pages.count %>)</label>
<%= hidden_field_tag 'only[]', '' %> <%= hidden_field_tag 'only[]', '' %>
<br />
<label class="block"><%= check_box_tag 'notifications', 1, params[:notifications] %> <%= l(:label_project_copy_notifications) %></label>
</fieldset> </fieldset>
<%= submit_tag l(:button_copy) %> <%= submit_tag l(:button_copy) %>
+4
View File
@@ -1,3 +1,7 @@
<% content_for :header_tags do %>
<%= auto_discovery_link_tag(:atom, {:action => 'index', :format => 'atom', :key => User.current.rss_key}) %>
<% end %>
<div class="contextual"> <div class="contextual">
<%= link_to(l(:label_project_new), {:controller => 'projects', :action => 'add'}, :class => 'icon icon-add') + ' |' if User.current.allowed_to?(:add_project, nil, :global => true) %> <%= link_to(l(:label_project_new), {:controller => 'projects', :action => 'add'}, :class => 'icon icon-add') + ' |' if User.current.allowed_to?(:add_project, nil, :global => true) %>
<%= link_to(l(:label_issue_view_all), { :controller => 'issues' }) + ' |' if User.current.allowed_to?(:view_issues, nil, :global => true) %> <%= link_to(l(:label_issue_view_all), { :controller => 'issues' }) + ' |' if User.current.allowed_to?(:view_issues, nil, :global => true) %>
+3 -2
View File
@@ -35,7 +35,8 @@
<td class="buttons"> <td class="buttons">
<%= link_to_function l(:button_edit), "$('member-#{member.id}-roles').hide(); $('member-#{member.id}-roles-form').show(); return false;", :class => 'icon icon-edit' %> <%= link_to_function l(:button_edit), "$('member-#{member.id}-roles').hide(); $('member-#{member.id}-roles-form').show(); return false;", :class => 'icon icon-edit' %>
<%= link_to_remote(l(:button_delete), { :url => {:controller => 'members', :action => 'destroy', :id => member}, <%= link_to_remote(l(:button_delete), { :url => {:controller => 'members', :action => 'destroy', :id => member},
:method => :post :method => :post,
:confirm => (!User.current.admin? && member.include?(User.current) ? l(:text_own_membership_delete_confirmation) : nil)
}, :title => l(:button_delete), }, :title => l(:button_delete),
:class => 'icon icon-del') if member.deletable? %> :class => 'icon icon-del') if member.deletable? %>
</td> </td>
@@ -57,7 +58,7 @@
<% remote_form_for(:member, @member, :url => {:controller => 'members', :action => 'new', :id => @project}, :method => :post) do |f| %> <% remote_form_for(:member, @member, :url => {:controller => 'members', :action => 'new', :id => @project}, :method => :post) do |f| %>
<fieldset><legend><%=l(:label_member_new)%></legend> <fieldset><legend><%=l(:label_member_new)%></legend>
<p><%= text_field_tag 'principal_search', nil, :size => "40" %></p> <p><%= text_field_tag 'principal_search', nil %></p>
<%= observe_field(:principal_search, <%= observe_field(:principal_search,
:frequency => 0.5, :frequency => 0.5,
:update => :principals, :update => :principals,
+4 -2
View File
@@ -7,9 +7,11 @@
<h2><%=l(:label_overview)%></h2> <h2><%=l(:label_overview)%></h2>
<div class="splitcontentleft"> <div class="splitcontentleft">
<%= textilizable @project.description %> <div class="wiki">
<%= textilizable @project.description %>
</div>
<ul> <ul>
<% unless @project.homepage.blank? %><li><%=l(:field_homepage)%>: <%= link_to(h(@project.homepage), @project.homepage) %></li><% end %> <% unless @project.homepage.blank? %><li><%=l(:field_homepage)%>: <%= auto_link(h(@project.homepage)) %></li><% end %>
<% if @subprojects.any? %> <% if @subprojects.any? %>
<li><%=l(:label_subproject_plural)%>: <li><%=l(:label_subproject_plural)%>:
<%= @subprojects.collect{|p| link_to(h(p), :action => 'show', :id => p)}.join(", ") %></li> <%= @subprojects.collect{|p| link_to(h(p), :action => 'show', :id => p)}.join(", ") %></li>
+5
View File
@@ -17,27 +17,32 @@
<tr class="<%= cycle("odd", "even") %>"> <tr class="<%= cycle("odd", "even") %>">
<td><%= link_to row.name, :controller => 'issues', :action => 'index', :project_id => ((row.is_a?(Project) ? row : @project)), <td><%= link_to row.name, :controller => 'issues', :action => 'index', :project_id => ((row.is_a?(Project) ? row : @project)),
:set_filter => 1, :set_filter => 1,
:subproject_id => '!*',
"#{field_name}" => row.id %></td> "#{field_name}" => row.id %></td>
<% for status in @statuses %> <% for status in @statuses %>
<td align="center"><%= aggregate_link data, { field_name => row.id, "status_id" => status.id }, <td align="center"><%= aggregate_link data, { field_name => row.id, "status_id" => status.id },
:controller => 'issues', :action => 'index', :project_id => ((row.is_a?(Project) ? row : @project)), :controller => 'issues', :action => 'index', :project_id => ((row.is_a?(Project) ? row : @project)),
:set_filter => 1, :set_filter => 1,
:subproject_id => '!*',
"status_id" => status.id, "status_id" => status.id,
"#{field_name}" => row.id %></td> "#{field_name}" => row.id %></td>
<% end %> <% end %>
<td align="center"><%= aggregate_link data, { field_name => row.id, "closed" => 0 }, <td align="center"><%= aggregate_link data, { field_name => row.id, "closed" => 0 },
:controller => 'issues', :action => 'index', :project_id => ((row.is_a?(Project) ? row : @project)), :controller => 'issues', :action => 'index', :project_id => ((row.is_a?(Project) ? row : @project)),
:set_filter => 1, :set_filter => 1,
:subproject_id => '!*',
"#{field_name}" => row.id, "#{field_name}" => row.id,
"status_id" => "o" %></td> "status_id" => "o" %></td>
<td align="center"><%= aggregate_link data, { field_name => row.id, "closed" => 1 }, <td align="center"><%= aggregate_link data, { field_name => row.id, "closed" => 1 },
:controller => 'issues', :action => 'index', :project_id => ((row.is_a?(Project) ? row : @project)), :controller => 'issues', :action => 'index', :project_id => ((row.is_a?(Project) ? row : @project)),
:set_filter => 1, :set_filter => 1,
:subproject_id => '!*',
"#{field_name}" => row.id, "#{field_name}" => row.id,
"status_id" => "c" %></td> "status_id" => "c" %></td>
<td align="center"><%= aggregate_link data, { field_name => row.id }, <td align="center"><%= aggregate_link data, { field_name => row.id },
:controller => 'issues', :action => 'index', :project_id => ((row.is_a?(Project) ? row : @project)), :controller => 'issues', :action => 'index', :project_id => ((row.is_a?(Project) ? row : @project)),
:set_filter => 1, :set_filter => 1,
:subproject_id => '!*',
"#{field_name}" => row.id, "#{field_name}" => row.id,
"status_id" => "*" %></td> "status_id" => "*" %></td>
</tr> </tr>
+4
View File
@@ -13,20 +13,24 @@
<tr class="<%= cycle("odd", "even") %>"> <tr class="<%= cycle("odd", "even") %>">
<td><%= link_to row.name, :controller => 'issues', :action => 'index', :project_id => ((row.is_a?(Project) ? row : @project)), <td><%= link_to row.name, :controller => 'issues', :action => 'index', :project_id => ((row.is_a?(Project) ? row : @project)),
:set_filter => 1, :set_filter => 1,
:subproject_id => '!*',
"#{field_name}" => row.id %></td> "#{field_name}" => row.id %></td>
<td align="center"><%= aggregate_link data, { field_name => row.id, "closed" => 0 }, <td align="center"><%= aggregate_link data, { field_name => row.id, "closed" => 0 },
:controller => 'issues', :action => 'index', :project_id => ((row.is_a?(Project) ? row : @project)), :controller => 'issues', :action => 'index', :project_id => ((row.is_a?(Project) ? row : @project)),
:set_filter => 1, :set_filter => 1,
:subproject_id => '!*',
"#{field_name}" => row.id, "#{field_name}" => row.id,
"status_id" => "o" %></td> "status_id" => "o" %></td>
<td align="center"><%= aggregate_link data, { field_name => row.id, "closed" => 1 }, <td align="center"><%= aggregate_link data, { field_name => row.id, "closed" => 1 },
:controller => 'issues', :action => 'index', :project_id => ((row.is_a?(Project) ? row : @project)), :controller => 'issues', :action => 'index', :project_id => ((row.is_a?(Project) ? row : @project)),
:set_filter => 1, :set_filter => 1,
:subproject_id => '!*',
"#{field_name}" => row.id, "#{field_name}" => row.id,
"status_id" => "c" %></td> "status_id" => "c" %></td>
<td align="center"><%= aggregate_link data, { field_name => row.id }, <td align="center"><%= aggregate_link data, { field_name => row.id },
:controller => 'issues', :action => 'index', :project_id => ((row.is_a?(Project) ? row : @project)), :controller => 'issues', :action => 'index', :project_id => ((row.is_a?(Project) ? row : @project)),
:set_filter => 1, :set_filter => 1,
:subproject_id => '!*',
"#{field_name}" => row.id, "#{field_name}" => row.id,
"status_id" => "*" %></td> "status_id" => "*" %></td>
</tr> </tr>
+1 -1
View File
@@ -16,6 +16,6 @@ dirs.each do |dir|
/ <%= link_to h(filename), :action => 'changes', :id => @project, :path => to_path_param("#{link_path}/#{filename}"), :rev => @rev %> / <%= link_to h(filename), :action => 'changes', :id => @project, :path => to_path_param("#{link_path}/#{filename}"), :rev => @rev %>
<% end %> <% end %>
<%= "@ #{revision}" if revision %> <%= "@ #{h revision}" if revision %>
<% html_title(with_leading_slash(path)) -%> <% html_title(with_leading_slash(path)) -%>
@@ -1,7 +1,7 @@
<% @entries.each do |entry| %> <% @entries.each do |entry| %>
<% tr_id = Digest::MD5.hexdigest(entry.path) <% tr_id = Digest::MD5.hexdigest(entry.path)
depth = params[:depth].to_i %> depth = params[:depth].to_i %>
<tr id="<%= tr_id %>" class="<%= params[:parent_id] %> entry <%= entry.kind %>"> <tr id="<%= tr_id %>" class="<%= h params[:parent_id] %> entry <%= entry.kind %>">
<td style="padding-left: <%=18 * depth%>px;" class="filename"> <td style="padding-left: <%=18 * depth%>px;" class="filename">
<% if entry.is_dir? %> <% if entry.is_dir? %>
<span class="expander" onclick="<%= remote_function :url => {:action => 'show', :id => @project, :path => to_path_param(entry.path), :rev => @rev, :depth => (depth + 1), :parent_id => tr_id}, <span class="expander" onclick="<%= remote_function :url => {:action => 'show', :id => @project, :path => to_path_param(entry.path), :rev => @rev, :depth => (depth + 1), :parent_id => tr_id},
+2
View File
@@ -27,6 +27,8 @@
<p><%= setting_text_field :file_max_size_displayed, :size => 6 %> KB</p> <p><%= setting_text_field :file_max_size_displayed, :size => 6 %> KB</p>
<p><%= setting_text_field :diff_max_lines_displayed, :size => 6 %></p> <p><%= setting_text_field :diff_max_lines_displayed, :size => 6 %></p>
<%= call_hook(:view_settings_general_form) %>
</div> </div>
<%= submit_tag l(:button_save) %> <%= submit_tag l(:button_save) %>
+2 -1
View File
@@ -15,6 +15,7 @@
<% end %> <% end %>
&nbsp; &nbsp;
<div class="autoscroll">
<table class="list"> <table class="list">
<thead><tr> <thead><tr>
<%= sort_header_tag('login', :caption => l(:field_login)) %> <%= sort_header_tag('login', :caption => l(:field_login)) %>
@@ -41,7 +42,7 @@
<% end -%> <% end -%>
</tbody> </tbody>
</table> </table>
</div>
<p class="pagination"><%= pagination_links_full @user_pages, @user_count %></p> <p class="pagination"><%= pagination_links_full @user_pages, @user_count %></p>
<% html_title(l(:label_user_plural)) -%> <% html_title(l(:label_user_plural)) -%>
+1 -1
View File
@@ -2,7 +2,7 @@
<%= link_to(l(:button_edit), {:controller => 'users', :action => 'edit', :id => @user}, :class => 'icon icon-edit') if User.current.admin? %> <%= link_to(l(:button_edit), {:controller => 'users', :action => 'edit', :id => @user}, :class => 'icon icon-edit') if User.current.admin? %>
</div> </div>
<h2><%= avatar @user %> <%=h @user.name %></h2> <h2><%= avatar @user, :size => "50" %> <%=h @user.name %></h2>
<div class="splitcontentleft"> <div class="splitcontentleft">
<ul> <ul>
+2 -5
View File
@@ -32,13 +32,10 @@
<%= render :partial => 'versions/overview', :locals => {:version => @version} %> <%= render :partial => 'versions/overview', :locals => {:version => @version} %>
<%= render(:partial => "wiki/content", :locals => {:content => @version.wiki_page.content}) if @version.wiki_page %> <%= render(:partial => "wiki/content", :locals => {:content => @version.wiki_page.content}) if @version.wiki_page %>
<% issues = @version.fixed_issues.find(:all, <% if @issues.present? %>
:include => [:status, :tracker, :priority],
:order => "#{Tracker.table_name}.position, #{Issue.table_name}.id") %>
<% if issues.size > 0 %>
<fieldset class="related-issues"><legend><%= l(:label_related_issues) %></legend> <fieldset class="related-issues"><legend><%= l(:label_related_issues) %></legend>
<ul> <ul>
<% issues.each do |issue| -%> <% @issues.each do |issue| -%>
<li><%= link_to_issue(issue) %></li> <li><%= link_to_issue(issue) %></li>
<% end -%> <% end -%>
</ul> </ul>
+2
View File
@@ -25,6 +25,7 @@
<% form_tag({}, :id => 'workflow_form' ) do %> <% form_tag({}, :id => 'workflow_form' ) do %>
<%= hidden_field_tag 'tracker_id', @tracker.id %> <%= hidden_field_tag 'tracker_id', @tracker.id %>
<%= hidden_field_tag 'role_id', @role.id %> <%= hidden_field_tag 'role_id', @role.id %>
<div class="autoscroll">
<table class="list"> <table class="list">
<thead> <thead>
<tr> <tr>
@@ -52,6 +53,7 @@
<% end %> <% end %>
</tbody> </tbody>
</table> </table>
</div>
<p><%= check_all_links 'workflow_form' %></p> <p><%= check_all_links 'workflow_form' %></p>
<%= submit_tag l(:button_save) %> <%= submit_tag l(:button_save) %>
+67 -1
View File
@@ -1,4 +1,70 @@
# Outgoing email settings # = Outgoing email settings
#
# Each environment has it's own configuration options. If you are only
# running in production, only the production block needs to be configured.
#
# == Common configurations
#
# === Sendmail command
#
# production:
# delivery_method: :sendmail
#
# === Simple SMTP server at localhost
#
# production:
# delivery_method: :smtp
# smtp_settings:
# address: "localhost"
# port: 25
#
# === SMTP server at example.com using LOGIN authentication and checking HELO for foo.com
#
# production:
# delivery_method: :smtp
# smtp_settings:
# address: "example.com"
# port: 25
# authentication: :login
# domain: 'foo.com'
# user_name: 'myaccount'
# password: 'password'
#
# === SMTP server at example.com using PLAIN authentication
#
# production:
# delivery_method: :smtp
# smtp_settings:
# address: "example.com"
# port: 25
# authentication: :plain
# domain: 'example.com'
# user_name: 'myaccount'
# password: 'password'
#
# === SMTP server at using TLS (GMail)
#
# This requires some additional configuration. See the article at:
# http://redmineblog.com/articles/setup-redmine-to-send-email-using-gmail/
#
# production:
# delivery_method: :smtp
# smtp_settings:
# tls: true
# address: "smtp.gmail.com"
# port: 587
# domain: "smtp.gmail.com" # 'your.domain.com' for GoogleApps
# authentication: :plain
# user_name: "your_email@gmail.com"
# password: "your_password"
#
#
# == More configuration options
#
# See the "Configuration options" at the following website for a list of the
# full options allowed:
#
# http://wiki.rubyonrails.org/rails/pages/HowToSendEmailsWithActionMailer
production: production:
delivery_method: :smtp delivery_method: :smtp
+1 -1
View File
@@ -25,5 +25,5 @@ config.action_controller.session = {
config.action_controller.allow_forgery_protection = false config.action_controller.allow_forgery_protection = false
config.gem "thoughtbot-shoulda", :lib => "shoulda", :source => "http://gems.github.com" config.gem "thoughtbot-shoulda", :lib => "shoulda", :source => "http://gems.github.com"
config.gem "nofxx-object_daddy", :lib => "object_daddy", :source => "http://gems.github.com" config.gem "edavis10-object_daddy", :lib => "object_daddy"
config.gem "mocha" config.gem "mocha"
+1 -29
View File
@@ -1,29 +1 @@
# Settings specified here will take precedence over those in config/environment.rb instance_eval File.read(File.join(File.dirname(__FILE__), 'test.rb'))
# The test environment is used exclusively to run your application's
# test suite. You never need to work with it otherwise. Remember that
# your test database is "scratch space" for the test suite and is wiped
# and recreated between test runs. Don't rely on the data there!
config.cache_classes = true
# Log error messages when you accidentally call methods on nil.
config.whiny_nils = true
# Show full error reports and disable caching
config.action_controller.consider_all_requests_local = true
config.action_controller.perform_caching = false
config.action_mailer.perform_deliveries = true
config.action_mailer.delivery_method = :test
config.action_controller.session = {
:session_key => "_test_session",
:secret => "some secret phrase for the tests."
}
# Skip protect_from_forgery in requests http://m.onkey.org/2007/9/28/csrf-protection-for-your-existing-rails-application
config.action_controller.allow_forgery_protection = false
config.gem "thoughtbot-shoulda", :lib => "shoulda", :source => "http://gems.github.com"
config.gem "nofxx-object_daddy", :lib => "object_daddy", :source => "http://gems.github.com"
config.gem "mocha"
+1 -29
View File
@@ -1,29 +1 @@
# Settings specified here will take precedence over those in config/environment.rb instance_eval File.read(File.join(File.dirname(__FILE__), 'test.rb'))
# The test environment is used exclusively to run your application's
# test suite. You never need to work with it otherwise. Remember that
# your test database is "scratch space" for the test suite and is wiped
# and recreated between test runs. Don't rely on the data there!
config.cache_classes = true
# Log error messages when you accidentally call methods on nil.
config.whiny_nils = true
# Show full error reports and disable caching
config.action_controller.consider_all_requests_local = true
config.action_controller.perform_caching = false
config.action_mailer.perform_deliveries = true
config.action_mailer.delivery_method = :test
config.action_controller.session = {
:session_key => "_test_session",
:secret => "some secret phrase for the tests."
}
# Skip protect_from_forgery in requests http://m.onkey.org/2007/9/28/csrf-protection-for-your-existing-rails-application
config.action_controller.allow_forgery_protection = false
config.gem "thoughtbot-shoulda", :lib => "shoulda", :source => "http://gems.github.com"
config.gem "nofxx-object_daddy", :lib => "object_daddy", :source => "http://gems.github.com"
config.gem "mocha"
+13
View File
@@ -59,6 +59,9 @@ bg:
over_x_years: over_x_years:
one: "over 1 year" one: "over 1 year"
other: "over {{count}} years" other: "over {{count}} years"
almost_x_years:
one: "almost 1 year"
other: "almost {{count}} years"
number: number:
human: human:
@@ -869,3 +872,13 @@ bg:
setting_mail_handler_body_delimiters: Truncate emails after one of these lines setting_mail_handler_body_delimiters: Truncate emails after one of these lines
permission_add_subprojects: Create subprojects permission_add_subprojects: Create subprojects
label_subproject_new: New subproject label_subproject_new: New subproject
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.
Are you sure you want to continue?
label_close_versions: Close completed versions
label_board_sticky: Sticky
label_board_locked: Locked
permission_export_wiki_pages: Export wiki pages
setting_cache_formatted_text: Cache formatted text
permission_manage_project_activities: Manage project activities
label_project_copy_notifications: Send email notifications during the project copy
+13
View File
@@ -59,6 +59,9 @@ bs:
over_x_years: over_x_years:
one: "preko 1 godine" one: "preko 1 godine"
other: "preko {{count}} godina" other: "preko {{count}} godina"
almost_x_years:
one: "almost 1 year"
other: "almost {{count}} years"
number: number:
@@ -893,3 +896,13 @@ bs:
setting_mail_handler_body_delimiters: Truncate emails after one of these lines setting_mail_handler_body_delimiters: Truncate emails after one of these lines
permission_add_subprojects: Create subprojects permission_add_subprojects: Create subprojects
label_subproject_new: New subproject label_subproject_new: New subproject
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.
Are you sure you want to continue?
label_close_versions: Close completed versions
label_board_sticky: Sticky
label_board_locked: Locked
permission_export_wiki_pages: Export wiki pages
setting_cache_formatted_text: Cache formatted text
permission_manage_project_activities: Manage project activities
label_project_copy_notifications: Send email notifications during the project copy
+13
View File
@@ -59,6 +59,9 @@ ca:
over_x_years: over_x_years:
one: "més d'un any" one: "més d'un any"
other: "més de {{count}} anys" other: "més de {{count}} anys"
almost_x_years:
one: "almost 1 year"
other: "almost {{count}} years"
number: number:
human: human:
@@ -872,3 +875,13 @@ ca:
setting_mail_handler_body_delimiters: Truncate emails after one of these lines setting_mail_handler_body_delimiters: Truncate emails after one of these lines
permission_add_subprojects: Create subprojects permission_add_subprojects: Create subprojects
label_subproject_new: New subproject label_subproject_new: New subproject
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.
Are you sure you want to continue?
label_close_versions: Close completed versions
label_board_sticky: Sticky
label_board_locked: Locked
permission_export_wiki_pages: Export wiki pages
setting_cache_formatted_text: Cache formatted text
permission_manage_project_activities: Manage project activities
label_project_copy_notifications: Send email notifications during the project copy
+13
View File
@@ -59,6 +59,9 @@ cs:
over_x_years: over_x_years:
one: "více než 1 rok" one: "více než 1 rok"
other: "více než {{count}} roky" other: "více než {{count}} roky"
almost_x_years:
one: "almost 1 year"
other: "almost {{count}} years"
number: number:
human: human:
@@ -875,3 +878,13 @@ cs:
setting_mail_handler_body_delimiters: Truncate emails after one of these lines setting_mail_handler_body_delimiters: Truncate emails after one of these lines
permission_add_subprojects: Create subprojects permission_add_subprojects: Create subprojects
label_subproject_new: New subproject label_subproject_new: New subproject
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.
Are you sure you want to continue?
label_close_versions: Close completed versions
label_board_sticky: Sticky
label_board_locked: Locked
permission_export_wiki_pages: Export wiki pages
setting_cache_formatted_text: Cache formatted text
permission_manage_project_activities: Manage project activities
label_project_copy_notifications: Send email notifications during the project copy
+13
View File
@@ -62,6 +62,9 @@ da:
over_x_years: over_x_years:
one: "mere end et år" one: "mere end et år"
other: "mere end {{count}} år" other: "mere end {{count}} år"
almost_x_years:
one: "almost 1 year"
other: "almost {{count}} years"
number: number:
format: format:
@@ -895,3 +898,13 @@ da:
setting_mail_handler_body_delimiters: Truncate emails after one of these lines setting_mail_handler_body_delimiters: Truncate emails after one of these lines
permission_add_subprojects: Create subprojects permission_add_subprojects: Create subprojects
label_subproject_new: New subproject label_subproject_new: New subproject
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.
Are you sure you want to continue?
label_close_versions: Close completed versions
label_board_sticky: Sticky
label_board_locked: Locked
permission_export_wiki_pages: Export wiki pages
setting_cache_formatted_text: Cache formatted text
permission_manage_project_activities: Manage project activities
label_project_copy_notifications: Send email notifications during the project copy
+70 -57
View File
@@ -13,11 +13,11 @@ de:
abbr_day_names: [So, Mo, Di, Mi, Do, Fr, Sa] abbr_day_names: [So, Mo, Di, Mi, Do, Fr, Sa]
month_names: [~, Januar, Februar, März, April, Mai, Juni, Juli, August, September, Oktober, November, Dezember] month_names: [~, Januar, Februar, März, April, Mai, Juni, Juli, August, September, Oktober, November, Dezember]
abbr_month_names: [~, Jan, Feb, Mär, Apr, Mai, Jun, Jul, Aug, Sep, Okt, Nov, Dez] abbr_month_names: [~, Jan, Feb, Mär, Apr, Mai, Jun, Jul, Aug, Sep, Okt, Nov, Dez]
order: [ :day, :month, :year ] order: [ :Tag, :Monat, :Jahr]
time: time:
formats: formats:
default: "%A, %e. %B %Y, %H:%M Uhr" default: "%a, %d.%m.%Y, %H:%M Uhr"
short: "%e. %B, %H:%M Uhr" short: "%e. %B, %H:%M Uhr"
long: "%A, %e. %B %Y, %H:%M Uhr" long: "%A, %e. %B %Y, %H:%M Uhr"
time: "%H:%M" time: "%H:%M"
@@ -60,6 +60,9 @@ de:
over_x_years: over_x_years:
one: 'mehr als 1 Jahr' one: 'mehr als 1 Jahr'
other: 'mehr als {{count}} Jahre' other: 'mehr als {{count}} Jahre'
almost_x_years:
one: "almost 1 year"
other: "almost {{count}} years"
number: number:
format: format:
@@ -259,7 +262,7 @@ de:
field_comments: Kommentar field_comments: Kommentar
field_url: URL field_url: URL
field_start_page: Hauptseite field_start_page: Hauptseite
field_subproject: Subprojekt von field_subproject: Unterprojekt von
field_hours: Stunden field_hours: Stunden
field_activity: Aktivität field_activity: Aktivität
field_spent_on: Datum field_spent_on: Datum
@@ -281,7 +284,7 @@ de:
setting_app_subtitle: Applikations-Untertitel setting_app_subtitle: Applikations-Untertitel
setting_welcome_text: Willkommenstext setting_welcome_text: Willkommenstext
setting_default_language: Default-Sprache setting_default_language: Default-Sprache
setting_login_required: Authentisierung erforderlich setting_login_required: Authentifizierung erforderlich
setting_self_registration: Anmeldung ermöglicht setting_self_registration: Anmeldung ermöglicht
setting_attachment_max_size: Max. Dateigröße setting_attachment_max_size: Max. Dateigröße
setting_issues_export_limit: Max. Anzahl Tickets bei CSV/PDF-Export setting_issues_export_limit: Max. Anzahl Tickets bei CSV/PDF-Export
@@ -382,9 +385,9 @@ de:
label_project_new: Neues Projekt label_project_new: Neues Projekt
label_project_plural: Projekte label_project_plural: Projekte
label_x_projects: label_x_projects:
zero: no projects zero: keine Projekte
one: 1 project one: 1 Projekt
other: "{{count}} projects" other: "{{count}} Projekte"
label_project_all: Alle Projekte label_project_all: Alle Projekte
label_project_latest: Neueste Projekte label_project_latest: Neueste Projekte
label_issue: Ticket label_issue: Ticket
@@ -491,17 +494,17 @@ de:
label_closed_issues: geschlossen label_closed_issues: geschlossen
label_closed_issues_plural: geschlossen label_closed_issues_plural: geschlossen
label_x_open_issues_abbr_on_total: label_x_open_issues_abbr_on_total:
zero: 0 open / {{total}} zero: 0 offen / {{total}}
one: 1 open / {{total}} one: 1 offen / {{total}}
other: "{{count}} open / {{total}}" other: "{{count}} offen / {{total}}"
label_x_open_issues_abbr: label_x_open_issues_abbr:
zero: 0 open zero: 0 offen
one: 1 open one: 1 offen
other: "{{count}} open" other: "{{count}} offen"
label_x_closed_issues_abbr: label_x_closed_issues_abbr:
zero: 0 closed zero: 0 geschlossen
one: 1 closed one: 1 geschlossen
other: "{{count}} closed" other: "{{count}} geschlossen"
label_total: Gesamtzahl label_total: Gesamtzahl
label_permissions: Berechtigungen label_permissions: Berechtigungen
label_current_status: Gegenwärtiger Status label_current_status: Gegenwärtiger Status
@@ -525,9 +528,9 @@ de:
label_comment: Kommentar label_comment: Kommentar
label_comment_plural: Kommentare label_comment_plural: Kommentare
label_x_comments: label_x_comments:
zero: no comments zero: kein Kommentar
one: 1 comment one: ein Kommentar
other: "{{count}} comments" other: "{{count}} Kommentare"
label_comment_add: Kommentar hinzufügen label_comment_add: Kommentar hinzufügen
label_comment_added: Kommentar hinzugefügt label_comment_added: Kommentar hinzugefügt
label_comment_delete: Kommentar löschen label_comment_delete: Kommentar löschen
@@ -606,7 +609,7 @@ de:
label_commits_per_month: Übertragungen pro Monat label_commits_per_month: Übertragungen pro Monat
label_commits_per_author: Übertragungen pro Autor label_commits_per_author: Übertragungen pro Autor
label_view_diff: Unterschiede anzeigen label_view_diff: Unterschiede anzeigen
label_diff_inline: inline label_diff_inline: kombiniert
label_diff_side_by_side: nebeneinander label_diff_side_by_side: nebeneinander
label_options: Optionen label_options: Optionen
label_copy_workflow_from: Workflow kopieren von label_copy_workflow_from: Workflow kopieren von
@@ -658,11 +661,11 @@ de:
label_jump_to_a_project: Zu einem Projekt springen... label_jump_to_a_project: Zu einem Projekt springen...
label_file_plural: Dateien label_file_plural: Dateien
label_changeset_plural: Changesets label_changeset_plural: Changesets
label_default_columns: Default-Spalten label_default_columns: Standard-Spalten
label_no_change_option: (Keine Änderung) label_no_change_option: (Keine Änderung)
label_bulk_edit_selected_issues: Alle ausgewählten Tickets bearbeiten label_bulk_edit_selected_issues: Alle ausgewählten Tickets bearbeiten
label_theme: Stil label_theme: Stil
label_default: Default label_default: Standard
label_search_titles_only: Nur Titel durchsuchen label_search_titles_only: Nur Titel durchsuchen
label_user_mail_option_all: "Für alle Ereignisse in all meinen Projekten" label_user_mail_option_all: "Für alle Ereignisse in all meinen Projekten"
label_user_mail_option_selected: "Für alle Ereignisse in den ausgewählten Projekten..." label_user_mail_option_selected: "Für alle Ereignisse in den ausgewählten Projekten..."
@@ -734,7 +737,7 @@ de:
status_registered: angemeldet status_registered: angemeldet
status_locked: gesperrt status_locked: gesperrt
text_select_mail_notifications: Bitte wählen Sie die Aktionen aus, für die eine Mailbenachrichtigung gesendet werden soll text_select_mail_notifications: Bitte wählen Sie die Aktionen aus, für die eine Mailbenachrichtigung gesendet werden soll.
text_regexp_info: z. B. ^[A-Z0-9]+$ text_regexp_info: z. B. ^[A-Z0-9]+$
text_min_max_length_info: 0 heißt keine Beschränkung text_min_max_length_info: 0 heißt keine Beschränkung
text_project_destroy_confirmation: Sind Sie sicher, dass sie das Projekt löschen wollen? text_project_destroy_confirmation: Sind Sie sicher, dass sie das Projekt löschen wollen?
@@ -786,7 +789,7 @@ de:
default_tracker_feature: Feature default_tracker_feature: Feature
default_tracker_support: Unterstützung default_tracker_support: Unterstützung
default_issue_status_new: Neu default_issue_status_new: Neu
default_issue_status_in_progress: In Progress default_issue_status_in_progress: In Bearbeitung
default_issue_status_resolved: Gelöst default_issue_status_resolved: Gelöst
default_issue_status_feedback: Feedback default_issue_status_feedback: Feedback
default_issue_status_closed: Erledigt default_issue_status_closed: Erledigt
@@ -804,8 +807,8 @@ de:
enumeration_issue_priorities: Ticket-Prioritäten enumeration_issue_priorities: Ticket-Prioritäten
enumeration_doc_categories: Dokumentenkategorien enumeration_doc_categories: Dokumentenkategorien
enumeration_activities: Aktivitäten (Zeiterfassung) enumeration_activities: Aktivitäten (Zeiterfassung)
field_editable: Änderbar field_editable: Bearbeitbar
label_display: Anzeigen label_display: Anzeige
button_create_and_continue: Anlegen und weiter button_create_and_continue: Anlegen und weiter
text_custom_field_possible_values_info: 'Eine Zeile pro Wert' text_custom_field_possible_values_info: 'Eine Zeile pro Wert'
setting_repository_log_display_limit: Maximale Anzahl angezeigter Revisionen des Datei Logs setting_repository_log_display_limit: Maximale Anzahl angezeigter Revisionen des Datei Logs
@@ -813,12 +816,12 @@ de:
field_watcher: Beobachter field_watcher: Beobachter
setting_openid: Erlaube OpenID Anmeldung und Registrierung setting_openid: Erlaube OpenID Anmeldung und Registrierung
field_identity_url: OpenID URL field_identity_url: OpenID URL
label_login_with_open_id_option: oder anmeldung mit OpenID label_login_with_open_id_option: oder Anmeldung mit OpenID
field_content: Inhalt field_content: Inhalt
label_descending: Absteigend label_descending: Absteigend
label_sort: Sortierung label_sort: Sortierung
label_ascending: Aufsteigend label_ascending: Aufsteigend
label_date_from_to: Von {{start}} bis {{end}} label_date_from_to: von {{start}} bis {{end}}
label_greater_or_equal: ">=" label_greater_or_equal: ">="
label_less_or_equal: "<=" label_less_or_equal: "<="
text_wiki_page_destroy_question: Diese Seite hat {{descendants}} Unterseite(n). Sind Sie sicher? text_wiki_page_destroy_question: Diese Seite hat {{descendants}} Unterseite(n). Sind Sie sicher?
@@ -827,22 +830,22 @@ de:
text_wiki_page_destroy_children: Lösche alle Unterseiten text_wiki_page_destroy_children: Lösche alle Unterseiten
setting_password_min_length: Mindestlänge des Passworts setting_password_min_length: Mindestlänge des Passworts
field_group_by: Gruppiere Ergebnisse nach field_group_by: Gruppiere Ergebnisse nach
mail_subject_wiki_content_updated: "Wiki-Seite '{{page}}' aktualisiert" mail_subject_wiki_content_updated: "Die Wiki-Seite '{{page}}' wurde erfolgreich aktualisiert."
label_wiki_content_added: Wiki-Seite hinzugefügt label_wiki_content_added: Die Wiki-Seite wurde erfolgreich hinzugefügt.
mail_subject_wiki_content_added: "Wiki-Seite '{{page}}' hinzugefügt" mail_subject_wiki_content_added: "Wiki-Seite '{{page}}' hinzugefügt"
mail_body_wiki_content_added: "Die Wiki-Seite '{{page}}' wurde von {{author}} hinzugefügt." mail_body_wiki_content_added: "Die Wiki-Seite '{{page}}' wurde von {{author}} hinzugefügt."
label_wiki_content_updated: Wiki-Seite aktualisiert. label_wiki_content_updated: Die Wiki-Seite wurde erfolgreich aktualisiert.
mail_body_wiki_content_updated: "Die Wiki-Seite '{{page}}' wurde von {{author}} aktualisiert." mail_body_wiki_content_updated: "Die Wiki-Seite '{{page}}' wurde von {{author}} aktualisiert."
permission_add_project: Erstelle Projekt permission_add_project: Projekt erstellen.
setting_new_project_user_role_id: Rolle einem Nicht-Administrator zugeordnet, welcher ein Projekt erstellt setting_new_project_user_role_id: Die Rolle ist einem Nicht-Administrator zugeordnet, der ein Projekt erstellt.
label_view_all_revisions: Alle Revisionen anschauen label_view_all_revisions: Alle Revisionen anschauen.
label_tag: Tag label_tag: Tag
label_branch: Branch label_branch: Branch
error_no_tracker_in_project: Diesem Projekt ist kein Tracker zugeordnet. Bitte überprüfen Sie die Projekteinstellungen. error_no_tracker_in_project: Diesem Projekt ist kein Tracker zugeordnet. Bitte überprüfen Sie die Projekteinstellungen.
error_no_default_issue_status: Es wurde kein Status als Standard definiert. Bitte überprüfen Sie Ihre Konfiguration (unter "Administration -> Ticket-Status"). error_no_default_issue_status: Es ist kein Status als Standard definiert. Bitte überprüfen Sie Ihre Konfiguration (unter "Administration -> Ticket-Status").
text_journal_changed: "{{label}} geändert von {{old}} zu {{new}}" text_journal_changed: "{{label}} wurde geändert von {{old}} zu {{new}}."
text_journal_set_to: "{{label}} gesetzt zu {{value}}" text_journal_set_to: "{{label}} wurde gesetzt auf {{value}}."
text_journal_deleted: "{{label}} gelöscht ({{old}})" text_journal_deleted: "{{label}} wurde gelöscht (Wert: {{old}})."
label_group_plural: Gruppen label_group_plural: Gruppen
label_group: Gruppe label_group: Gruppe
label_group_new: Neue Gruppe label_group_new: Neue Gruppe
@@ -854,7 +857,7 @@ de:
version_status_closed: geschlossen version_status_closed: geschlossen
version_status_locked: gesperrt version_status_locked: gesperrt
version_status_open: offen version_status_open: offen
error_can_not_reopen_issue_on_closed_version: Ein Ticket, welches einer abgeschlossenen Version zugeordnet ist, kann nicht wieder geöffnet werden error_can_not_reopen_issue_on_closed_version: Das Ticket ist einer abgeschlossenen Version zugeordnet und kann daher nicht wieder geöffnet werden.
label_user_anonymous: Anonym label_user_anonymous: Anonym
button_move_and_follow: Verschieben und beobachten button_move_and_follow: Verschieben und beobachten
setting_default_projects_modules: Standardmäßig aktivierte Module für neue Projekte setting_default_projects_modules: Standardmäßig aktivierte Module für neue Projekte
@@ -865,33 +868,43 @@ de:
label_version_sharing_descendants: Mit Unterprojekten label_version_sharing_descendants: Mit Unterprojekten
label_version_sharing_tree: Mit Projektbaum label_version_sharing_tree: Mit Projektbaum
label_version_sharing_none: Nicht geteilt label_version_sharing_none: Nicht geteilt
error_can_not_archive_project: Dieses Projekt kann nicht archiviert werden error_can_not_archive_project: Dieses Projekt kann nicht archiviert werden.
button_duplicate: Duplikat button_duplicate: Duplikat
button_copy_and_follow: Kopieren und beobachten button_copy_and_follow: Kopieren und beobachten
label_copy_source: Quelle label_copy_source: Quelle
setting_issue_done_ratio: Berechne den Ticket-Fortschritt durch setting_issue_done_ratio: Berechne den Ticket-Fortschritt durch
setting_issue_done_ratio_issue_status: Verwende den Ticketstatus setting_issue_done_ratio_issue_status: Verwende den Ticketstatus.
error_issue_done_ratios_not_updated: Ticket-Fortschritt wurde nicht geändert. error_issue_done_ratios_not_updated: Ticket-Fortschritt wurde nicht geändert.
error_workflow_copy_target: Bitte wählen Sie Ziel-Tracker und Rolle(n) error_workflow_copy_target: Bitte wählen Sie Ziel-Tracker und Rolle(n).
setting_issue_done_ratio_issue_field: Benutze das Ticket-Feld setting_issue_done_ratio_issue_field: Benutze das Ticket-Feld.
label_copy_same_as_target: So wie Ziel label_copy_same_as_target: So wie Ziel
label_copy_target: Ziel label_copy_target: Ziel
notice_issue_done_ratios_updated: Ticketfortschritt aktualisiert. notice_issue_done_ratios_updated: Ticketfortschritt aktualisiert.
error_workflow_copy_source: Bitte wählen Sie einen Quell-Tracker oder eine Quell-Rolle error_workflow_copy_source: Bitte wählen Sie einen Quell-Tracker oder eine Quell-Rolle.
label_update_issue_done_ratios: Aktualisiere Ticketfortschritt label_update_issue_done_ratios: Aktualisiere Ticketfortschritt
setting_start_of_week: Wochenanfang setting_start_of_week: Wochenanfang
permission_view_issues: Tickets anzeigen permission_view_issues: Tickets anzeigen
label_display_used_statuses_only: Zeige nur Status an, die von diesem Tracker verwendet werden label_display_used_statuses_only: Zeige nur Status an, die von diesem Tracker verwendet werden.
label_api_access_key: API access key label_api_access_key: API-Zugriffsschlüssel
text_line_separated: Multiple values allowed (one line for each value). text_line_separated: Mehrere Werte sind erlaubt (eine Zeile pro Wert).
label_revision_id: Revision {{value}} label_revision_id: Revision {{value}}
label_api_access_key_created_on: API access key created {{value}} ago label_api_access_key_created_on: Der API-Zugriffsschlüssel wurde vor {{value}} erstellt.
label_feeds_access_key: RSS access key label_feeds_access_key: RSS-Zugriffsschlüssel
notice_api_access_key_reseted: Your API access key was reset. notice_api_access_key_reseted: Ihr API-Zugriffsschlüssel wurde zurückgesetzt.
setting_rest_api_enabled: Enable REST web service setting_rest_api_enabled: REST Schnittstelle aktivieren.
button_show: Show button_show: Anzeigen
label_missing_api_access_key: Missing an API access key label_missing_api_access_key: Der API-Zugriffsschlüssel fehlt.
label_missing_feeds_access_key: Missing a RSS access key label_missing_feeds_access_key: Der RSS-Zugriffsschlüssel fehlt.
setting_mail_handler_body_delimiters: Truncate emails after one of these lines setting_mail_handler_body_delimiters: Schneide E-Mails nach einer der folgenden Zeile ab.
permission_add_subprojects: Create subprojects permission_add_subprojects: Unterprojekte erstellen.
label_subproject_new: New subproject label_subproject_new: Neues Unterprojekt
text_own_membership_delete_confirmation: |-
Sie sind dabei, einige oder alle ihre Berechtigungen zu entfernen. Es ist möglich, dass Sie danach das Projekt nicht mehr sehen oder editieren dürfen.
Sind Sie wirklich sicher, dass Sie dies tun möchten?
label_close_versions: Vollständige Versionen schließen
label_board_sticky: Sticky
label_board_locked: Locked
permission_export_wiki_pages: Export wiki pages
setting_cache_formatted_text: Cache formatted text
permission_manage_project_activities: Manage project activities
label_project_copy_notifications: Send email notifications during the project copy
+13
View File
@@ -62,6 +62,9 @@ el:
over_x_years: over_x_years:
one: "πάνω από 1 χρόνο" one: "πάνω από 1 χρόνο"
other: "πάνω από {{count}} χρόνια" other: "πάνω από {{count}} χρόνια"
almost_x_years:
one: "almost 1 year"
other: "almost {{count}} years"
number: number:
human: human:
@@ -875,3 +878,13 @@ el:
setting_mail_handler_body_delimiters: Truncate emails after one of these lines setting_mail_handler_body_delimiters: Truncate emails after one of these lines
permission_add_subprojects: Create subprojects permission_add_subprojects: Create subprojects
label_subproject_new: New subproject label_subproject_new: New subproject
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.
Are you sure you want to continue?
label_close_versions: Close completed versions
label_board_sticky: Sticky
label_board_locked: Locked
permission_export_wiki_pages: Export wiki pages
setting_cache_formatted_text: Cache formatted text
permission_manage_project_activities: Manage project activities
label_project_copy_notifications: Send email notifications during the project copy
+12
View File
@@ -59,6 +59,9 @@ en:
over_x_years: over_x_years:
one: "over 1 year" one: "over 1 year"
other: "over {{count}} years" other: "over {{count}} years"
almost_x_years:
one: "almost 1 year"
other: "almost {{count}} years"
number: number:
human: human:
@@ -326,12 +329,14 @@ en:
setting_issue_done_ratio_issue_status: Use the issue status setting_issue_done_ratio_issue_status: Use the issue status
setting_start_of_week: Start calendars on setting_start_of_week: Start calendars on
setting_rest_api_enabled: Enable REST web service setting_rest_api_enabled: Enable REST web service
setting_cache_formatted_text: Cache formatted text
permission_add_project: Create project permission_add_project: Create project
permission_add_subprojects: Create subprojects permission_add_subprojects: Create subprojects
permission_edit_project: Edit project permission_edit_project: Edit project
permission_select_project_modules: Select project modules permission_select_project_modules: Select project modules
permission_manage_members: Manage members permission_manage_members: Manage members
permission_manage_project_activities: Manage project activities
permission_manage_versions: Manage versions permission_manage_versions: Manage versions
permission_manage_categories: Manage issue categories permission_manage_categories: Manage issue categories
permission_view_issues: View Issues permission_view_issues: View Issues
@@ -379,6 +384,7 @@ en:
permission_edit_own_messages: Edit own messages permission_edit_own_messages: Edit own messages
permission_delete_messages: Delete messages permission_delete_messages: Delete messages
permission_delete_own_messages: Delete own messages permission_delete_own_messages: Delete own messages
permission_export_wiki_pages: Export wiki pages
project_module_issue_tracking: Issue tracking project_module_issue_tracking: Issue tracking
project_module_time_tracking: Time tracking project_module_time_tracking: Time tracking
@@ -499,6 +505,7 @@ en:
label_version: Version label_version: Version
label_version_new: New version label_version_new: New version
label_version_plural: Versions label_version_plural: Versions
label_close_versions: Close completed versions
label_confirmation: Confirmation label_confirmation: Confirmation
label_export_to: 'Also available in:' label_export_to: 'Also available in:'
label_read: Read... label_read: Read...
@@ -658,6 +665,8 @@ en:
label_board: Forum label_board: Forum
label_board_new: New forum label_board_new: New forum
label_board_plural: Forums label_board_plural: Forums
label_board_locked: Locked
label_board_sticky: Sticky
label_topic_plural: Topics label_topic_plural: Topics
label_message_plural: Messages label_message_plural: Messages
label_message_last: Last message label_message_last: Last message
@@ -739,6 +748,7 @@ en:
label_api_access_key: API access key label_api_access_key: API access key
label_missing_api_access_key: Missing an API access key label_missing_api_access_key: Missing an API access key
label_api_access_key_created_on: "API access key created {{value}} ago" label_api_access_key_created_on: "API access key created {{value}} ago"
label_project_copy_notifications: Send email notifications during the project copy
button_login: Login button_login: Login
button_submit: Submit button_submit: Submit
@@ -848,6 +858,7 @@ en:
text_wiki_page_nullify_children: "Keep child pages as root pages" text_wiki_page_nullify_children: "Keep child pages as root pages"
text_wiki_page_destroy_children: "Delete child pages and all their descendants" text_wiki_page_destroy_children: "Delete child pages and all their descendants"
text_wiki_page_reassign_children: "Reassign child pages to this parent page" text_wiki_page_reassign_children: "Reassign child pages to this parent page"
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?"
default_role_manager: Manager default_role_manager: Manager
default_role_developper: Developer default_role_developper: Developer
@@ -875,3 +886,4 @@ en:
enumeration_doc_categories: Document categories enumeration_doc_categories: Document categories
enumeration_activities: Activities (time tracking) enumeration_activities: Activities (time tracking)
enumeration_system_activity: System Activity enumeration_system_activity: System Activity
+15 -2
View File
@@ -94,6 +94,9 @@ es:
over_x_years: over_x_years:
one: "más de 1 año" one: "más de 1 año"
other: "más de {{count}} años" other: "más de {{count}} años"
almost_x_years:
one: "casi 1 año"
other: "casi {{count}} años"
activerecord: activerecord:
errors: errors:
@@ -917,5 +920,15 @@ es:
button_show: Mostrar button_show: Mostrar
text_line_separated: Múltiples valores permitidos (un valor en cada línea). text_line_separated: Múltiples valores permitidos (un valor en cada línea).
setting_mail_handler_body_delimiters: Truncar correos tras una de estas líneas setting_mail_handler_body_delimiters: Truncar correos tras una de estas líneas
permission_add_subprojects: Create subprojects permission_add_subprojects: Crear subproyectos
label_subproject_new: New subproject label_subproject_new: Nuevo subproyecto
text_own_membership_delete_confirmation: |-
Está a punto de eliminar algún o todos sus permisos y podría perder la posibilidad de modificar este proyecto tras hacerlo.
¿Está seguro de querer continuar?
label_close_versions: Cerrar versiones completadas
label_board_sticky: Sticky
label_board_locked: Locked
permission_export_wiki_pages: Export wiki pages
setting_cache_formatted_text: Cache formatted text
permission_manage_project_activities: Manage project activities
label_project_copy_notifications: Send email notifications during the project copy
+13
View File
@@ -105,6 +105,9 @@ fi:
over_x_years: over_x_years:
one: "yli vuosi" one: "yli vuosi"
other: "yli {{count}} vuotta" other: "yli {{count}} vuotta"
almost_x_years:
one: "almost 1 year"
other: "almost {{count}} years"
prompts: prompts:
year: "Vuosi" year: "Vuosi"
month: "Kuukausi" month: "Kuukausi"
@@ -905,3 +908,13 @@ fi:
setting_mail_handler_body_delimiters: Truncate emails after one of these lines setting_mail_handler_body_delimiters: Truncate emails after one of these lines
permission_add_subprojects: Create subprojects permission_add_subprojects: Create subprojects
label_subproject_new: New subproject label_subproject_new: New subproject
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.
Are you sure you want to continue?
label_close_versions: Close completed versions
label_board_sticky: Sticky
label_board_locked: Locked
permission_export_wiki_pages: Export wiki pages
setting_cache_formatted_text: Cache formatted text
permission_manage_project_activities: Manage project activities
label_project_copy_notifications: Send email notifications during the project copy
+17 -6
View File
@@ -63,6 +63,9 @@ fr:
over_x_years: over_x_years:
one: "plus d'un an" one: "plus d'un an"
other: "plus de {{count}} ans" other: "plus de {{count}} ans"
almost_x_years:
one: "presqu'un an"
other: "presque {{count}} ans"
prompts: prompts:
year: "Année" year: "Année"
month: "Mois" month: "Mois"
@@ -295,6 +298,7 @@ fr:
field_content: Contenu field_content: Contenu
field_group_by: Grouper par field_group_by: Grouper par
field_sharing: Partage field_sharing: Partage
field_active: Actif
setting_app_title: Titre de l'application setting_app_title: Titre de l'application
setting_app_subtitle: Sous-titre de l'application setting_app_subtitle: Sous-titre de l'application
@@ -346,6 +350,9 @@ fr:
setting_issue_done_ratio_issue_status: Utiliser le statut setting_issue_done_ratio_issue_status: Utiliser le statut
setting_issue_done_ratio_issue_field: 'Utiliser le champ % effectué' setting_issue_done_ratio_issue_field: 'Utiliser le champ % effectué'
setting_rest_api_enabled: Activer l'API REST setting_rest_api_enabled: Activer l'API REST
setting_gravatar_default: Image Gravatar par défaut
setting_start_of_week: Jour de début des calendriers
setting_cache_formatted_text: Mettre en cache le texte formaté
permission_add_project: Créer un projet permission_add_project: Créer un projet
permission_add_subprojects: Créer des sous-projets permission_add_subprojects: Créer des sous-projets
@@ -399,6 +406,8 @@ fr:
permission_edit_own_messages: Modifier ses propres messages permission_edit_own_messages: Modifier ses propres messages
permission_delete_messages: Supprimer les messages permission_delete_messages: Supprimer les messages
permission_delete_own_messages: Supprimer ses propres messages permission_delete_own_messages: Supprimer ses propres messages
permission_export_wiki_pages: Exporter les pages
permission_manage_project_activities: Gérer les activités
project_module_issue_tracking: Suivi des demandes project_module_issue_tracking: Suivi des demandes
project_module_time_tracking: Suivi du temps passé project_module_time_tracking: Suivi du temps passé
@@ -753,6 +762,9 @@ fr:
label_feeds_access_key: Clé d'accès RSS label_feeds_access_key: Clé d'accès RSS
label_missing_api_access_key: Clé d'accès API manquante label_missing_api_access_key: Clé d'accès API manquante
label_missing_feeds_access_key: Clé d'accès RSS manquante label_missing_feeds_access_key: Clé d'accès RSS manquante
label_close_versions: Fermer les versions terminées
label_revision_id: Revision {{value}}
label_project_copy_notifications: Envoyer les notifications durant la copie du projet
button_login: Connexion button_login: Connexion
button_submit: Soumettre button_submit: Soumettre
@@ -800,10 +812,10 @@ fr:
status_active: actif status_active: actif
status_registered: enregistré status_registered: enregistré
status_locked: vérouillé status_locked: verrouillé
version_status_open: ouvert version_status_open: ouvert
version_status_locked: vérouillé version_status_locked: verrouillé
version_status_closed: fermé version_status_closed: fermé
text_select_mail_notifications: Actions pour lesquelles une notification par e-mail est envoyée text_select_mail_notifications: Actions pour lesquelles une notification par e-mail est envoyée
@@ -856,6 +868,7 @@ fr:
text_wiki_page_nullify_children: "Conserver les sous-pages en tant que pages racines" text_wiki_page_nullify_children: "Conserver les sous-pages en tant que pages racines"
text_wiki_page_destroy_children: "Supprimer les sous-pages et toutes leurs descedantes" text_wiki_page_destroy_children: "Supprimer les sous-pages et toutes leurs descedantes"
text_wiki_page_reassign_children: "Réaffecter les sous-pages à cette page" text_wiki_page_reassign_children: "Réaffecter les sous-pages à cette page"
text_own_membership_delete_confirmation: "Vous allez supprimer tout ou partie de vos permissions sur ce projet et ne serez peut-être plus autorisé à modifier ce projet.\nEtes-vous sûr de vouloir continuer ?"
default_role_manager: Manager default_role_manager: Manager
default_role_developper: Développeur default_role_developper: Développeur
@@ -893,8 +906,6 @@ fr:
text_journal_set_to: "{{label}} mis à {{value}}" text_journal_set_to: "{{label}} mis à {{value}}"
text_journal_deleted: "{{label}} {{old}} supprimé" text_journal_deleted: "{{label}} {{old}} supprimé"
text_journal_added: "{{label}} {{value}} ajouté" text_journal_added: "{{label}} {{value}} ajouté"
field_active: Actif
enumeration_system_activity: Activité système enumeration_system_activity: Activité système
setting_gravatar_default: Default Gravatar image label_board_sticky: Sticky
setting_start_of_week: Start calendars on label_board_locked: Verrouillé
label_revision_id: Revision {{value}}
+13
View File
@@ -105,6 +105,9 @@ gl:
over_x_years: over_x_years:
one: 'máis dun ano' one: 'máis dun ano'
other: '{{count}} anos' other: '{{count}} anos'
almost_x_years:
one: "almost 1 year"
other: "almost {{count}} years"
now: 'agora' now: 'agora'
today: 'hoxe' today: 'hoxe'
tomorrow: 'mañá' tomorrow: 'mañá'
@@ -895,3 +898,13 @@ gl:
setting_mail_handler_body_delimiters: Truncate emails after one of these lines setting_mail_handler_body_delimiters: Truncate emails after one of these lines
permission_add_subprojects: Create subprojects permission_add_subprojects: Create subprojects
label_subproject_new: New subproject label_subproject_new: New subproject
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.
Are you sure you want to continue?
label_close_versions: Close completed versions
label_board_sticky: Sticky
label_board_locked: Locked
permission_export_wiki_pages: Export wiki pages
setting_cache_formatted_text: Cache formatted text
permission_manage_project_activities: Manage project activities
label_project_copy_notifications: Send email notifications during the project copy
+13
View File
@@ -65,6 +65,9 @@ he:
over_x_years: over_x_years:
one: 'מעל שנה אחת' one: 'מעל שנה אחת'
other: 'מעל {{count}} שנים' other: 'מעל {{count}} שנים'
almost_x_years:
one: "almost 1 year"
other: "almost {{count}} years"
number: number:
format: format:
@@ -879,3 +882,13 @@ he:
setting_mail_handler_body_delimiters: Truncate emails after one of these lines setting_mail_handler_body_delimiters: Truncate emails after one of these lines
permission_add_subprojects: Create subprojects permission_add_subprojects: Create subprojects
label_subproject_new: New subproject label_subproject_new: New subproject
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.
Are you sure you want to continue?
label_close_versions: Close completed versions
label_board_sticky: Sticky
label_board_locked: Locked
permission_export_wiki_pages: Export wiki pages
setting_cache_formatted_text: Cache formatted text
permission_manage_project_activities: Manage project activities
label_project_copy_notifications: Send email notifications during the project copy
+897
View File
@@ -0,0 +1,897 @@
# Croatian translations for Ruby on Rails
# by Helix d.o.o. (info@helix.hr)
hr:
date:
formats:
# Use the strftime parameters for formats.
# When no format has been given, it uses default.
# You can provide other formats here if you like!
default: "%m/%d/%Y"
short: "%b %d"
long: "%B %d, %Y"
day_names: [Ponedjeljak, Utorak, Srijeda, Četvrtak, Petak, Subota, Nedjelja]
abbr_day_names: [Ned, Pon, Uto, Sri, Čet, Pet, Sub]
# Don't forget the nil at the beginning; there's no such thing as a 0th month
month_names: [~, Sijecanj, Veljaca, Ožujak, Travanj, Svibanj, Lipanj, Srpanj, Kolovoz, Rujan, Listopad, Studeni, Prosinac]
abbr_month_names: [~, Sij, Velj, Ožu, Tra, Svi, Lip, Srp, Kol, Ruj, List, Stu, Pro]
# Used in date_select and datime_select.
order: [ :year, :month, :day ]
time:
formats:
default: "%m/%d/%Y %I:%M %p"
time: "%I:%M %p"
short: "%d %b %H:%M"
long: "%B %d, %Y %H:%M"
am: "am"
pm: "pm"
datetime:
distance_in_words:
half_a_minute: "pola minute"
less_than_x_seconds:
one: "manje od sekunde"
other: "manje od {{count}} sekundi"
x_seconds:
one: "1 sekunda"
other: "{{count}} sekundi"
less_than_x_minutes:
one: "manje od minute"
other: "manje od {{count}} minuta"
x_minutes:
one: "1 minuta"
other: "{{count}} minuta"
about_x_hours:
one: "oko sat vremena"
other: "oko {{count}} sati"
x_days:
one: "1 dan"
other: "{{count}} dana"
about_x_months:
one: "oko 1 mjesec"
other: "oko {{count}} mjeseci"
x_months:
one: "mjesec"
other: "{{count}} mjeseci"
about_x_years:
one: "1 godina"
other: "{{count}} godina"
over_x_years:
one: "preko 1 godine"
other: "preko {{count}} godina"
number:
human:
format:
delimiter: ""
precision: 1
storage_units:
format: "%n %u"
units:
byte:
one: "Byte"
other: "Bytes"
kb: "KB"
mb: "MB"
gb: "GB"
tb: "TB"
# Used in array.to_sentence.
support:
array:
sentence_connector: "i"
skip_last_comma: false
activerecord:
errors:
messages:
inclusion: "nije ukljuceno u listu"
exclusion: "je rezervirano"
invalid: "nije ispravno"
confirmation: "ne odgovara za potvrdu"
accepted: "mora biti prihvaćen"
empty: "ne može biti prazno"
blank: "ne može biti razmaka"
too_long: "je predug (maximum is {{count}} characters)"
too_short: "je prekratak (minimum is {{count}} characters)"
wrong_length: "je pogrešne dužine (should be {{count}} characters)"
taken: "već je zauzeto"
not_a_number: "nije broj"
not_a_date: "nije ispravan datum"
greater_than: "mora biti veći od {{count}}"
greater_than_or_equal_to: "mora biti veći ili jednak {{count}}"
equal_to: "mora biti jednak {{count}}"
less_than: "mora biti manji od {{count}}"
less_than_or_equal_to: "mora bit manji ili jednak{{count}}"
odd: "mora biti neparan"
even: "mora biti paran"
greater_than_start_date: "mora biti veci nego pocetni datum"
not_same_project: "ne pripada istom projektu"
circular_dependency: "Ovaj relacija stvara kružnu ovisnost"
actionview_instancetag_blank_option: Molimo odaberite
general_text_No: 'Ne'
general_text_Yes: 'Da'
general_text_no: 'ne'
general_text_yes: 'da'
general_lang_name: 'Hrvatski'
general_csv_separator: ','
general_csv_decimal_separator: '.'
general_csv_encoding: utf8
general_pdf_encoding: utf8
general_first_day_of_week: '7'
notice_account_updated: Vaš profil je uspješno promijenjen.
notice_account_invalid_creditentials: Neispravno korisničko ime ili zaporka.
notice_account_password_updated: Zaporka je uspješno promijenjena.
notice_account_wrong_password: Pogrešna zaporka
notice_account_register_done: Racun je uspješno napravljen. Da biste aktivirali svoj račun, kliknite na link koji vam je poslan na e-mail.
notice_account_unknown_email: Nepoznati korisnik.
notice_can_t_change_password: Ovaj račun koristi eksterni izvor prijavljivanja. Nemoguće je promijeniti zaporku.
notice_account_lost_email_sent: E-mail s uputama kako bi odabrali novu zaporku je poslan na na vašu e-mail adresu.
notice_account_activated: Vaš racun je aktiviran. Možete se prijaviti.
notice_successful_create: Uspješno napravljeno.
notice_successful_update: Uspješna promjena.
notice_successful_delete: Uspješno brisanje.
notice_successful_connection: Uspješna veza.
notice_file_not_found: Stranica kojoj ste pokušali pristupiti ne postoji ili je uklonjena.
notice_locking_conflict: Podataci su ažurirani od strane drugog korisnika.
notice_not_authorized: Niste ovlašteni za pristup ovoj stranici.
notice_email_sent: E-mail je poslan {{value}}"
notice_email_error: Dogodila se pogreška tijekom slanja E-maila ({{value}})"
notice_feeds_access_key_reseted: Vaš RSS pristup je resetovan.
notice_api_access_key_reseted: Vaš API pristup je resetovan.
notice_failed_to_save_issues: "Neuspjelo spremanje {{count}} predmeta na {{total}} odabrane: {{ids}}."
notice_no_issue_selected: "Niti jedan predmet nije odabran! Molim, odaberite predmete koje želite urediti."
notice_account_pending: "Vaš korisnicki račun je otvoren, čeka odobrenje administratora."
notice_default_data_loaded: Konfiguracija je uspješno učitana.
notice_unable_delete_version: Nije moguće izbrisati verziju.
notice_issue_done_ratios_updated: Issue done ratios updated.
error_can_t_load_default_data: "Zadanu konfiguracija nije učitana: {{value}}"
error_scm_not_found: "Unos i/ili revizija nije pronađen."
error_scm_command_failed: "Dogodila se pogreška prilikom pokušaja pristupa: {{value}}"
error_scm_annotate: "Ne postoji ili ne može biti obilježen."
error_issue_not_found_in_project: 'Nije pronađen ili ne pripada u ovaj projekt'
error_no_tracker_in_project: 'No tracker is associated to this project. Please check the Project settings.'
error_no_default_issue_status: 'No default issue status is defined. Please check your configuration (Go to "Administration -> Issue statuses").'
error_can_not_reopen_issue_on_closed_version: 'An issue assigned to a closed version can not be reopened'
error_can_not_archive_project: This project can not be archived
error_issue_done_ratios_not_updated: "Issue done ratios not updated."
error_workflow_copy_source: 'Please select a source tracker or role'
error_workflow_copy_target: 'Please select target tracker(s) and role(s)'
warning_attachments_not_saved: "{{count}} Datoteka/e nije mogla biti spremljena."
mail_subject_lost_password: "Vaša {{value}} zaporka"
mail_body_lost_password: 'Kako biste promijenili Vašu zaporku slijedite poveznicu:'
mail_subject_register: "Aktivacija korisničog računa {{value}}"
mail_body_register: 'Da biste aktivirali svoj račun, kliknite na sljedeci link:'
mail_body_account_information_external: "Možete koristiti vaš račun {{value}} za prijavu."
mail_body_account_information: Vaši korisnički podaci
mail_subject_account_activation_request: "{{value}} predmet za aktivaciju korisničkog računa"
mail_body_account_activation_request: "Novi korisnik ({{value}}) je registriran. Njegov korisnički račun čeka vaše odobrenje:"
mail_subject_reminder: "{{count}} predmet(a) dospijeva sljedećih dana"
mail_body_reminder: "{{count}} vama dodijeljen(ih) predmet(a) dospijeva u sljedećih {{days}} dana:"
mail_subject_wiki_content_added: "'{{page}}' wiki page has been added"
mail_body_wiki_content_added: "The '{{page}}' wiki page has been added by {{author}}."
mail_subject_wiki_content_updated: "'{{page}}' wiki page has been updated"
mail_body_wiki_content_updated: "The '{{page}}' wiki page has been updated by {{author}}."
gui_validation_error: 1 pogreška
gui_validation_error_plural: "{{count}} pogrešaka"
field_name: Ime
field_description: Opis
field_summary: Sažetak
field_is_required: Obavezno
field_firstname: Ime
field_lastname: Prezime
field_mail: E-pošta
field_filename: Datoteka
field_filesize: Veličina
field_downloads: Preuzimanja
field_author: Autor
field_created_on: Napravljen
field_updated_on: Promijenjen
field_field_format: Format
field_is_for_all: Za sve projekte
field_possible_values: Moguće vrijednosti
field_regexp: Regularni izraz
field_min_length: Minimalna dužina
field_max_length: Maksimalna dužina
field_value: Vrijednost
field_category: Kategorija
field_title: Naslov
field_project: Projekt
field_issue: Predmet
field_status: Status
field_notes: Napomene
field_is_closed: Predmet je zatvoren
field_is_default: Zadana vrijednost
field_tracker: Tracker
field_subject: Predmet
field_due_date: Do datuma
field_assigned_to: Dodijeljeno
field_priority: Prioritet
field_fixed_version: Verzija
field_user: Korisnik
field_role: Uloga
field_homepage: Naslovnica
field_is_public: Javni projekt
field_parent: Potprojekt od
field_is_in_chlog: Predmeti se prikazuju u dnevniku promjena
field_is_in_roadmap: Predmeti se prikazuju u Putokazu
field_login: Korisničko ime
field_mail_notification: Obavijest putem e-pošte
field_admin: Administrator
field_last_login_on: Zadnja prijava
field_language: Primarni jezik
field_effective_date: Datum
field_password: Zaporka
field_new_password: Nova zaporka
field_password_confirmation: Potvrda zaporke
field_version: Verzija
field_type: Tip
field_host: Host
field_port: Port
field_account: Racun
field_base_dn: Osnovni DN
field_attr_login: Login atribut
field_attr_firstname: Atribut imena
field_attr_lastname: Atribut prezimena
field_attr_mail: Atribut e-pošte
field_onthefly: "Izrada korisnika \"u hodu\""
field_start_date: Pocetak
field_done_ratio: % Učinjeno
field_auth_source: Vrsta prijavljivanja
field_hide_mail: Sakrij moju adresu e-pošte
field_comments: Komentar
field_url: URL
field_start_page: Početna stranica
field_subproject: Potprojekt
field_hours: Sati
field_activity: Aktivnost
field_spent_on: Datum
field_identifier: Identifikator
field_is_filter: Korišteno kao filtar
field_issue_to_id: Povezano s predmetom
field_delay: Odgodeno
field_assignable: Predmeti mogu biti dodijeljeni ovoj ulozi
field_redirect_existing_links: Preusmjeravanje postojećih linkova
field_estimated_hours: Procijenjeno vrijeme
field_column_names: Stupci
field_time_zone: Vremenska zona
field_searchable: Pretraživo
field_default_value: Zadana vrijednost
field_comments_sorting: Prikaz komentara
field_parent_title: Parent page
field_editable: Editable
field_watcher: Watcher
field_identity_url: OpenID URL
field_content: Content
field_group_by: Group results by
setting_app_title: Naziv aplikacije
setting_app_subtitle: Podnaslov aplikacije
setting_welcome_text: Tekst dobrodošlice
setting_default_language: Zadani jezik
setting_login_required: Potrebna je prijava
setting_self_registration: Samoregistracija je dozvoljena
setting_attachment_max_size: Maksimalna veličina privitka
setting_issues_export_limit: Ograničenje izvoza predmeta
setting_mail_from: Izvorna adresa e-pošte
setting_bcc_recipients: Blind carbon copy primatelja (bcc)
setting_plain_text_mail: obični tekst pošte (bez HTML-a)
setting_host_name: Naziv domaćina (host)
setting_text_formatting: Oblikovanje teksta
setting_wiki_compression: Sažimanje
setting_feeds_limit: Ogranicenje unosa sadržaja
setting_default_projects_public: Novi projekti su javni po defaultu
setting_autofetch_changesets: Autofetch commits
setting_sys_api_enabled: Omogući WS za upravljanje skladištem
setting_commit_ref_keywords: Referentne ključne riječi
setting_commit_fix_keywords: Fiksne ključne riječi
setting_autologin: Automatska prijava
setting_date_format: Format datuma
setting_time_format: Format vremena
setting_cross_project_issue_relations: Dozvoli povezivanje predmeta izmedu različitih projekata
setting_issue_list_default_columns: Stupci prikazani na listi predmeta
setting_repositories_encodings: Kodna stranica
setting_commit_logs_encoding: Commit messages encoding
setting_emails_footer: Zaglavlje e-pošte
setting_protocol: Protokol
setting_per_page_options: Objekata po stranici opcija
setting_user_format: Oblik prikaza korisnika
setting_activity_days_default: Dani prikazane aktivnosti na projektu
setting_display_subprojects_issues: Prikaz predmeta potprojekta na glavnom projektu po defaultu
setting_enabled_scm: Omogućen SCM
setting_mail_handler_body_delimiters: "Truncate emails after one of these lines"
setting_mail_handler_api_enabled: Omoguci WS za dolaznu e-poštu
setting_mail_handler_api_key: API ključ
setting_sequential_project_identifiers: Generiraj slijedne identifikatore projekta
setting_gravatar_enabled: Koristi Gravatar korisničke ikone
setting_gravatar_default: Default Gravatar image
setting_diff_max_lines_displayed: Maksimalni broj diff linija za prikazati
setting_file_max_size_displayed: Max size of text files displayed inline
setting_repository_log_display_limit: Maximum number of revisions displayed on file log
setting_openid: Allow OpenID login and registration
setting_password_min_length: Minimum password length
setting_new_project_user_role_id: Role given to a non-admin user who creates a project
setting_default_projects_modules: Default enabled modules for new projects
setting_issue_done_ratio: Calculate the issue done ratio with
setting_issue_done_ratio_issue_field: Use the issue field
setting_issue_done_ratio_issue_status: Use the issue status
setting_start_of_week: Start calendars on
setting_rest_api_enabled: Enable REST web service
permission_add_project: Dodaj projekt
permission_add_subprojects: Dodaj potprojekt
permission_edit_project: Uredi projekt
permission_select_project_modules: Odaberi projektne module
permission_manage_members: Upravljaj članovima
permission_manage_versions: Upravljaj verzijama
permission_manage_categories: Upravljaj kategorijama predmeta
permission_view_issues: Pregledaj zahtjeve
permission_add_issues: Dodaj predmete
permission_edit_issues: Uredi predmete
permission_manage_issue_relations: Upravljaj relacijama predmeta
permission_add_issue_notes: Dodaj bilješke
permission_edit_issue_notes: Uredi bilješke
permission_edit_own_issue_notes: Uredi vlastite bilješke
permission_move_issues: Premjesti predmete
permission_delete_issues: Brisanje predmeta
permission_manage_public_queries: Upravljaj javnim upitima
permission_save_queries: Spremi upite
permission_view_gantt: Pregledaj gantt grafikon
permission_view_calendar: Pregledaj kalendar
permission_view_issue_watchers: Pregledaj listu promatraca
permission_add_issue_watchers: Dodaj promatrača
permission_delete_issue_watchers: Delete watchers
permission_log_time: Dnevnik utrošenog vremena
permission_view_time_entries: Pregledaj utrošeno vrijeme
permission_edit_time_entries: Uredi vremenske dnevnike
permission_edit_own_time_entries: Edit own time logs
permission_manage_news: Upravljaj novostima
permission_comment_news: Komentiraj novosti
permission_manage_documents: Upravljaj dokumentima
permission_view_documents: Pregledaj dokumente
permission_manage_files: Upravljaj datotekama
permission_view_files: Pregledaj datoteke
permission_manage_wiki: Upravljaj wikijem
permission_rename_wiki_pages: Promijeni ime wiki stranicama
permission_delete_wiki_pages: Obriši wiki stranice
permission_view_wiki_pages: Pregledaj wiki
permission_view_wiki_edits: Pregledaj povijest wikija
permission_edit_wiki_pages: Uredi wiki stranice
permission_delete_wiki_pages_attachments: Obriši privitke
permission_protect_wiki_pages: Zaštiti wiki stranice
permission_manage_repository: Upravljaj skladištem
permission_browse_repository: Browse repository
permission_view_changesets: View changesets
permission_commit_access: Mogućnost pohranjivanja
permission_manage_boards: Manage boards
permission_view_messages: Pregledaj poruke
permission_add_messages: Objavi poruke
permission_edit_messages: Uredi poruke
permission_edit_own_messages: Uredi vlastite poruke
permission_delete_messages: Obriši poruke
permission_delete_own_messages: Obriši vlastite poruke
project_module_issue_tracking: Praćenje predmeta
project_module_time_tracking: Praćenje vremena
project_module_news: Novosti
project_module_documents: Dokumenti
project_module_files: Datoteke
project_module_wiki: Wiki
project_module_repository: Skladište
project_module_boards: Boards
label_user: Korisnik
label_user_plural: Korisnici
label_user_new: Novi korisnik
label_user_anonymous: Anonymous
label_project: Projekt
label_project_new: Novi projekt
label_project_plural: Projekti
label_x_projects:
zero: no projects
one: 1 project
other: "{{count}} projects"
label_project_all: Svi Projekti
label_project_latest: Najnoviji projekt
label_issue: Predmet
label_issue_new: Novi predmet
label_issue_plural: Predmeti
label_issue_view_all: Pregled svih predmeta
label_issues_by: "Predmeti od {{value}}"
label_issue_added: Predmet dodan
label_issue_updated: Predmet promijenjen
label_document: Dokument
label_document_new: Novi dokument
label_document_plural: Dokumenti
label_document_added: Dokument dodan
label_role: Uloga
label_role_plural: Uloge
label_role_new: Nova uloga
label_role_and_permissions: Uloge i ovlasti
label_member: Član
label_member_new: Novi član
label_member_plural: Članovi
label_tracker: Vrsta
label_tracker_plural: Vrste predmeta
label_tracker_new: Nova vrsta
label_workflow: Tijek rada
label_issue_status: Status predmeta
label_issue_status_plural: Status predmeta
label_issue_status_new: Novi status
label_issue_category: Kategorija predmeta
label_issue_category_plural: Kategorije predmeta
label_issue_category_new: Nova kategorija
label_custom_field: Korisnički definirano polje
label_custom_field_plural: Korisnički definirana polja
label_custom_field_new: Novo korisnički definirano polje
label_enumerations: Pobrojenice
label_enumeration_new: Nova vrijednost
label_information: Informacija
label_information_plural: Informacije
label_please_login: Molim prijavite se
label_register: Registracija
label_login_with_open_id_option: or login with OpenID
label_password_lost: Izgubljena zaporka
label_home: Početna stranica
label_my_page: Moja stranica
label_my_account: Moj profil
label_my_projects: Moji projekti
label_administration: Administracija
label_login: Korisnik
label_logout: Odjava
label_help: Pomoć
label_reported_issues: Prijavljeni predmeti
label_assigned_to_me_issues: Moji predmeti
label_last_login: Last connection
label_registered_on: Registrirano
label_activity: Aktivnosti
label_overall_activity: Aktivnosti
label_user_activity: "{{value}} ova/ina aktivnost"
label_new: Novi
label_logged_as: Prijavljeni ste kao
label_environment: Okolina
label_authentication: Autentikacija
label_auth_source: Način prijavljivanja
label_auth_source_new: Novi način prijavljivanja
label_auth_source_plural: Načini prijavljivanja
label_subproject_plural: Potprojekti
label_subproject_new: Novi potprojekt
label_and_its_subprojects: "{{value}} i njegovi potprojekti"
label_min_max_length: Min - Maks veličina
label_list: Liste
label_date: Datum
label_integer: Integer
label_float: Float
label_boolean: Boolean
label_string: Text
label_text: Long text
label_attribute: Atribut
label_attribute_plural: Atributi
label_download: "{{count}} Download"
label_download_plural: "{{count}} Downloads"
label_no_data: Nema podataka za prikaz
label_change_status: Promjena statusa
label_history: Povijest
label_attachment: Datoteka
label_attachment_new: Nova datoteka
label_attachment_delete: Brisanje datoteke
label_attachment_plural: Datoteke
label_file_added: Datoteka dodana
label_report: Izvješće
label_report_plural: Izvješća
label_news: Novosti
label_news_new: Dodaj novost
label_news_plural: Novosti
label_news_latest: Novosti
label_news_view_all: Pregled svih novosti
label_news_added: Novosti dodane
label_change_log: Dnevnik promjena
label_settings: Postavke
label_overview: Pregled
label_version: Verzija
label_version_new: Nova verzija
label_version_plural: Verzije
label_confirmation: Potvrda
label_export_to: 'Izvoz u:'
label_read: Čitaj...
label_public_projects: Javni projekti
label_open_issues: Otvoren
label_open_issues_plural: Otvoreno
label_closed_issues: Zatvoren
label_closed_issues_plural: Zatvoreno
label_x_open_issues_abbr_on_total:
zero: 0 open / {{total}}
one: 1 open / {{total}}
other: "{{count}} open / {{total}}"
label_x_open_issues_abbr:
zero: 0 open
one: 1 open
other: "{{count}} open"
label_x_closed_issues_abbr:
zero: 0 closed
one: 1 closed
other: "{{count}} closed"
label_total: Ukupno
label_permissions: Dozvole
label_current_status: Trenutni status
label_new_statuses_allowed: Novi status je dozvoljen
label_all: Svi
label_none: nema
label_nobody: nitko
label_next: Naredni
label_previous: Prethodni
label_used_by: Korišten od
label_details: Detalji
label_add_note: Dodaj napomenu
label_per_page: Po stranici
label_calendar: Kalendar
label_months_from: Mjeseci od
label_gantt: Gantt
label_internal: Interno
label_last_changes: "Posljednjih {{count}} promjena"
label_change_view_all: Prikaz svih promjena
label_personalize_page: Prilagodite ovu stranicu
label_comment: Komentar
label_comment_plural: Komentari
label_x_comments:
zero: no comments
one: 1 comment
other: "{{count}} comments"
label_comment_add: Dodaj komentar
label_comment_added: Komentar dodan
label_comment_delete: Brisanje komentara
label_query: Korisnički upit
label_query_plural: Korisnički upiti
label_query_new: Novi upit
label_filter_add: Dodaj filtar
label_filter_plural: Filtri
label_equals: je
label_not_equals: nije
label_in_less_than: za manje od
label_in_more_than: za više od
label_greater_or_equal: '>='
label_less_or_equal: '<='
label_in: za točno
label_today: danas
label_all_time: sva vremena
label_yesterday: jučer
label_this_week: ovog tjedna
label_last_week: prošlog tjedna
label_last_n_days: "zadnjih {{count}} dana"
label_this_month: ovog mjeseca
label_last_month: prošlog mjeseca
label_this_year: ove godine
label_date_range: vremenski raspon
label_less_than_ago: manje od
label_more_than_ago: više od
label_ago: prije
label_contains: Sadrži
label_not_contains: ne sadrži
label_day_plural: dana
label_repository: Skladište
label_repository_plural: Skladišta
label_browse: Pregled
label_modification: "{{count}} promjena"
label_modification_plural: "{{count}} promjena"
label_branch: Branch
label_tag: Tag
label_revision: Revizija
label_revision_plural: Revizije
label_revision_id: "Revision {{value}}"
label_associated_revisions: Dodijeljene revizije
label_added: dodano
label_modified: promijenjen
label_copied: kopirano
label_renamed: preimenovano
label_deleted: obrisano
label_latest_revision: Posljednja revizija
label_latest_revision_plural: Posljednje revizije
label_view_revisions: Pregled revizija
label_view_all_revisions: View all revisions
label_max_size: Maksimalna veličina
label_sort_highest: Premjesti na vrh
label_sort_higher: Premjesti prema gore
label_sort_lower: Premjesti prema dolje
label_sort_lowest: Premjesti na dno
label_roadmap: Putokaz
label_roadmap_due_in: "Završava se za {{value}}"
label_roadmap_overdue: "{{value}} kasni"
label_roadmap_no_issues: Nema predmeta za ovu verziju
label_search: Traži
label_result_plural: Rezultati
label_all_words: Sve riječi
label_wiki: Wiki
label_wiki_edit: Wiki promjena
label_wiki_edit_plural: Wiki promjene
label_wiki_page: Wiki stranica
label_wiki_page_plural: Wiki stranice
label_index_by_title: Indeks po naslovima
label_index_by_date: Indeks po datumu
label_current_version: Trenutna verzija
label_preview: Brzi pregled
label_feed_plural: Feeds
label_changes_details: Detalji svih promjena
label_issue_tracking: Praćenje predmeta
label_spent_time: Utrošeno vrijeme
label_f_hour: "{{value}} sata"
label_f_hour_plural: "{{value}} sati"
label_time_tracking: Praćenje vremena
label_change_plural: Promjene
label_statistics: Statistika
label_commits_per_month: Pohrana po mjesecu
label_commits_per_author: Pohrana po autoru
label_view_diff: Pregled razlika
label_diff_inline: uvučeno
label_diff_side_by_side: paralelno
label_options: Opcije
label_copy_workflow_from: Kopiraj tijek rada od
label_permissions_report: Izvješće o dozvolama
label_watched_issues: Praćeni predmeti
label_related_issues: Povezani predmeti
label_applied_status: Primijenjen status
label_loading: Učitavam...
label_relation_new: Nova relacija
label_relation_delete: Brisanje relacije
label_relates_to: u relaciji sa
label_duplicates: Duplira
label_duplicated_by: ponovljen kao
label_blocks: blokira
label_blocked_by: blokiran od strane
label_precedes: prethodi
label_follows: slijedi
label_end_to_start: od kraja do početka
label_end_to_end: od kraja do kraja
label_end_to_start: od kraja do početka
label_end_to_end: od kraja do kraja
label_stay_logged_in: Ostanite prijavljeni
label_disabled: Isključen
label_show_completed_versions: Prikaži završene verzije
label_me: ja
label_board: Forum
label_board_new: Novi forum
label_board_plural: Forumi
label_topic_plural: Teme
label_message_plural: Poruke
label_message_last: Posljednja poruka
label_message_new: Nova poruka
label_message_posted: Poruka dodana
label_reply_plural: Odgovori
label_send_information: Pošalji korisniku informaciju o profilu
label_year: Godina
label_month: Mjesec
label_week: Tjedan
label_date_from: Od
label_date_to: Do
label_language_based: Zasnovano na jeziku
label_sort_by: "Uredi po {{value}}"
label_send_test_email: Pošalji testno E-pismo
label_feeds_access_key: RSS access key
label_missing_feeds_access_key: Missing a RSS access key
label_feeds_access_key_created_on: "RSS kljuc za pristup je napravljen prije {{value}}"
label_module_plural: Moduli
label_added_time_by: "Promijenio {{author}} prije {{age}}"
label_updated_time_by: "Dodao/la {{author}} prije {{age}}"
label_updated_time: "Promijenjeno prije {{value}}"
label_jump_to_a_project: Prebaci se na projekt...
label_file_plural: Datoteke
label_changeset_plural: Promjene
label_default_columns: Zadani stupci
label_no_change_option: (Bez promjene)
label_bulk_edit_selected_issues: Zajednička promjena izabranih predmeta
label_theme: Tema
label_default: Zadana
label_search_titles_only: Pretraživanje samo naslova
label_user_mail_option_all: "Za bilo koji događaj na svim mojim projektima"
label_user_mail_option_selected: "Za bilo koji događaj samo za izabrane projekte..."
label_user_mail_option_none: "Samo za stvari koje pratim ili u kojima sudjelujem"
label_user_mail_no_self_notified: "Ne želim primati obavijesti o promjenama koje sam napravim"
label_registration_activation_by_email: aktivacija putem e-pošte
label_registration_manual_activation: ručna aktivacija
label_registration_automatic_activation: automatska aktivacija
label_display_per_page: "Po stranici: {{value}}"
label_age: Starost
label_change_properties: Promijeni svojstva
label_general: Općenito
label_more: Još
label_scm: SCM
label_plugins: Plugins
label_ldap_authentication: LDAP autentikacija
label_downloads_abbr: D/L
label_optional_description: Opcije
label_add_another_file: Dodaj još jednu datoteku
label_preferences: Preferences
label_chronological_order: U kronološkom redoslijedu
label_reverse_chronological_order: U obrnutom kronološkom redoslijedu
label_planning: Planiranje
label_incoming_emails: Dolazne poruke e-pošte
label_generate_key: Generiraj ključ
label_issue_watchers: Promatrači
label_example: Primjer
label_display: Display
label_sort: Sort
label_ascending: Ascending
label_descending: Descending
label_date_from_to: From {{start}} to {{end}}
label_wiki_content_added: Wiki page added
label_wiki_content_updated: Wiki page updated
label_group: Group
label_group_plural: Grupe
label_group_new: Nova grupa
label_time_entry_plural: Spent time
label_version_sharing_none: Not shared
label_version_sharing_descendants: With subprojects
label_version_sharing_hierarchy: With project hierarchy
label_version_sharing_tree: With project tree
label_version_sharing_system: With all projects
label_update_issue_done_ratios: Update issue done ratios
label_copy_source: Source
label_copy_target: Target
label_copy_same_as_target: Same as target
label_display_used_statuses_only: Only display statuses that are used by this tracker
label_api_access_key: API access key
label_missing_api_access_key: Missing an API access key
label_api_access_key_created_on: "API access key created {{value}} ago"
button_login: Prijavi
button_submit: Pošalji
button_save: Spremi
button_check_all: Označi sve
button_uncheck_all: Isključi sve
button_delete: Obriši
button_create: Napravi
button_create_and_continue: Napravi i nastavi
button_test: Test
button_edit: Uredi
button_add: Dodaj
button_change: Promijeni
button_apply: Primijeni
button_clear: Ukloni
button_lock: Zaključaj
button_unlock: Otključaj
button_download: Preuzmi
button_list: Spisak
button_view: Pregled
button_move: Premjesti
button_move_and_follow: Move and follow
button_back: Nazad
button_cancel: Odustani
button_activate: Aktiviraj
button_sort: Redoslijed
button_log_time: Zapiši vrijeme
button_rollback: Izvrši rollback na ovu verziju
button_watch: Prati
button_unwatch: Prekini pracenje
button_reply: Odgovori
button_archive: Arhiviraj
button_rollback: Dearhiviraj
button_reset: Poništi
button_rename: Promijeni ime
button_change_password: Promjena zaporke
button_copy: Kopiraj
button_copy_and_follow: Copy and follow
button_annotate: Annotate
button_update: Promijeni
button_configure: Konfiguracija
button_quote: Navod
button_duplicate: Duplicate
button_show: Show
status_active: aktivan
status_registered: Registriran
status_locked: zaključan
version_status_open: open
version_status_locked: locked
version_status_closed: closed
field_active: Active
text_select_mail_notifications: Izbor akcija za koje će biti poslana obavijest e-poštom.
text_regexp_info: eg. ^[A-Z0-9]+$
text_min_max_length_info: 0 znači bez ograničenja
text_project_destroy_confirmation: Da li ste sigurni da želite izbrisati ovaj projekt i sve njegove podatke?
text_subprojects_destroy_warning: "Njegov(i) potprojekt(i): {{value}} će također biti obrisan."
text_workflow_edit: Select a role and a tracker to edit the workflow
text_are_you_sure: Da li ste sigurni?
text_journal_changed: "{{label}} promijenjen iz {{old}} u {{new}}"
text_journal_set_to: "{{label}} postavi na {{value}}"
text_journal_deleted: "{{label}} izbrisano ({{old}})"
text_journal_added: "{{label}} {{value}} added"
text_tip_task_begin_day: Zadaci koji počinju ovog dana
text_tip_task_end_day: zadaci koji se završavaju ovog dana
text_tip_task_begin_end_day: Zadaci koji počinju i završavaju se ovog dana
text_project_identifier_info: 'mala slova (a-z), brojevi i crtice su dozvoljeni.<br />Jednom snimljen identifikator se ne može mijenjati!'
text_caracters_maximum: "Najviše {{count}} znakova."
text_caracters_minimum: "Mora biti dugačko najmanje {{count}} znakova."
text_length_between: "Dužina izmedu {{min}} i {{max}} znakova."
text_tracker_no_workflow: Tijek rada nije definiran za ovaj tracker
text_unallowed_characters: Nedozvoljeni znakovi
text_comma_separated: Višestruke vrijednosti su dozvoljene (razdvojene zarezom).
text_issues_ref_in_commit_messages: Referencing and fixing issues in commit messages
text_tracker_no_workflow: No workflow defined for this tracker
text_issues_ref_in_commit_messages: Referencing and fixing issues in commit messages
text_issue_added: "Predmet {{id}} je prijavljen (prijavio {{author}})."
text_issue_updated: "Predmet {{id}} je promijenjen {{author}})."
text_wiki_destroy_confirmation: Da li ste sigurni da želite izbrisati ovaj wiki i njegov sadržaj?
text_issue_category_destroy_question: "Neke predmeti ({{count}}) su dodijeljeni ovoj kategoriji. Što želite uraditi?"
text_issue_category_destroy_assignments: Ukloni dodjeljivanje kategorija
text_issue_category_reassign_to: Ponovo dodijeli predmete ovoj kategoriji
text_user_mail_option: "Za neizabrane projekte, primit ćete obavjesti samo o stvarima koje pratite ili u kojima sudjelujete (npr. predmete koje ste vi napravili ili koje su vama dodjeljeni)."
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."
text_load_default_configuration: Učitaj početnu konfiguraciju
text_status_changed_by_changeset: "Applied in changeset {{value}}."
text_issues_destroy_confirmation: 'Jeste li sigurni da želite obrisati izabrani/e predmet(e)?'
text_select_project_modules: 'Odaberite module koji će biti omogućeni za ovaj projekt:'
text_default_administrator_account_changed: Default administrator account changed
text_file_repository_writable: Dozvoljeno pisanje u direktorij za privitke
text_plugin_assets_writable: Plugin assets directory writable
text_rmagick_available: RMagick dostupan (nije obavezno)
text_destroy_time_entries_question: "{{hours}} sati je prijavljeno za predmete koje želite obrisati. Što ćete učiniti?"
text_destroy_time_entries: Obriši prijavljene sate
text_assign_time_entries_to_project: Pridruži prijavljene sate projektu
text_reassign_time_entries: 'Premjesti prijavljene sate ovom predmetu:'
text_user_wrote: "{{value}} je napisao/la:"
text_enumeration_destroy_question: "{{count}} objekata je pridruženo toj vrijednosti."
text_enumeration_category_reassign_to: 'Premjesti ih ovoj vrijednosti:'
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."
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."
text_diff_truncated: '... Ovaj diff je odrezan zato što prelazi maksimalnu veličinu koja može biti prikazana.'
text_custom_field_possible_values_info: 'One line for each value'
text_wiki_page_destroy_question: "This page has {{descendants}} child page(s) and descendant(s). What do you want to do?"
text_wiki_page_nullify_children: "Keep child pages as root pages"
text_wiki_page_destroy_children: "Delete child pages and all their descendants"
text_wiki_page_reassign_children: "Reassign child pages to this parent page"
default_role_manager: Upravitelj
default_role_developper: Razvojni inženjer
default_role_reporter: Korisnik
default_tracker_bug: Pogreška
default_tracker_feature: Funkcionalnost
default_tracker_support: Podrška
default_issue_status_new: Novo
default_issue_status_assigned: Dodijeljeno
default_issue_status_resolved: Riješeno
default_issue_status_feedback: Povratna informacija
default_issue_status_closed: Zatvoreno
default_issue_status_rejected: Odbaceno
default_doc_category_user: Korisnička dokumentacija
default_doc_category_tech: Tehnička dokumentacija
default_priority_low: Nizak
default_priority_normal: Redovan
default_priority_high: Visok
default_priority_urgent: Hitan
default_priority_immediate: Odmah
default_activity_design: Dizajn
default_activity_development: Razvoj
enumeration_issue_priorities: Prioriteti predmeta
enumeration_doc_categories: Kategorija dokumenata
enumeration_activities: Aktivnosti (po vremenu)
enumeration_system_activity: System Activity
field_sharing: Sharing
text_line_separated: Multiple values allowed (one line for each value).
label_close_versions: Close completed versions
button_unarchive: Unarchive
label_start_to_end: start to end
label_start_to_start: start to start
field_issue_to: Related issue
default_issue_status_in_progress: In Progress
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.
Are you sure you want to continue?
label_board_sticky: Sticky
label_board_locked: Locked
permission_export_wiki_pages: Export wiki pages
setting_cache_formatted_text: Cache formatted text
permission_manage_project_activities: Manage project activities
label_project_copy_notifications: Send email notifications during the project copy
+13
View File
@@ -60,6 +60,9 @@
over_x_years: over_x_years:
one: 'több, mint 1 év' one: 'több, mint 1 év'
other: 'több, mint {{count}} év' other: 'több, mint {{count}} év'
almost_x_years:
one: "almost 1 year"
other: "almost {{count}} years"
prompts: prompts:
year: "Év" year: "Év"
month: "Hónap" month: "Hónap"
@@ -900,3 +903,13 @@
setting_mail_handler_body_delimiters: Truncate emails after one of these lines setting_mail_handler_body_delimiters: Truncate emails after one of these lines
permission_add_subprojects: Create subprojects permission_add_subprojects: Create subprojects
label_subproject_new: New subproject label_subproject_new: New subproject
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.
Are you sure you want to continue?
label_close_versions: Close completed versions
label_board_sticky: Sticky
label_board_locked: Locked
permission_export_wiki_pages: Export wiki pages
setting_cache_formatted_text: Cache formatted text
permission_manage_project_activities: Manage project activities
label_project_copy_notifications: Send email notifications during the project copy
+13
View File
@@ -57,6 +57,9 @@ id:
over_x_years: over_x_years:
one: "lebih dari setahun" one: "lebih dari setahun"
other: "lebih dari {{count}} tahun" other: "lebih dari {{count}} tahun"
almost_x_years:
one: "almost 1 year"
other: "almost {{count}} years"
number: number:
format: format:
@@ -887,3 +890,13 @@ id:
setting_mail_handler_body_delimiters: Truncate emails after one of these lines setting_mail_handler_body_delimiters: Truncate emails after one of these lines
permission_add_subprojects: Create subprojects permission_add_subprojects: Create subprojects
label_subproject_new: New subproject label_subproject_new: New subproject
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.
Are you sure you want to continue?
label_close_versions: Close completed versions
label_board_sticky: Sticky
label_board_locked: Locked
permission_export_wiki_pages: Export wiki pages
setting_cache_formatted_text: Cache formatted text
permission_manage_project_activities: Manage project activities
label_project_copy_notifications: Send email notifications during the project copy
+13
View File
@@ -63,6 +63,9 @@ it:
over_x_years: over_x_years:
one: "oltre un anno" one: "oltre un anno"
other: "oltre {{count}} anni" other: "oltre {{count}} anni"
almost_x_years:
one: "almost 1 year"
other: "almost {{count}} years"
number: number:
format: format:
@@ -882,3 +885,13 @@ it:
setting_mail_handler_body_delimiters: Truncate emails after one of these lines setting_mail_handler_body_delimiters: Truncate emails after one of these lines
permission_add_subprojects: Create subprojects permission_add_subprojects: Create subprojects
label_subproject_new: New subproject label_subproject_new: New subproject
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.
Are you sure you want to continue?
label_close_versions: Close completed versions
label_board_sticky: Sticky
label_board_locked: Locked
permission_export_wiki_pages: Export wiki pages
setting_cache_formatted_text: Cache formatted text
permission_manage_project_activities: Manage project activities
label_project_copy_notifications: Send email notifications during the project copy
+179 -166
View File
@@ -19,7 +19,7 @@ ja:
month_names: [~, 1月, 2月, 3月, 4月, 5月, 6月, 7月, 8月, 9月, 10月, 11月, 12月] month_names: [~, 1月, 2月, 3月, 4月, 5月, 6月, 7月, 8月, 9月, 10月, 11月, 12月]
abbr_month_names: [~, 1月, 2月, 3月, 4月, 5月, 6月, 7月, 8月, 9月, 10月, 11月, 12月] abbr_month_names: [~, 1月, 2月, 3月, 4月, 5月, 6月, 7月, 8月, 9月, 10月, 11月, 12月]
# Used in date_select and datime_select. # Used in date_select and datime_select.
order: [:year, :month, :day] order: [ :year, :month, :day ]
time: time:
formats: formats:
@@ -34,35 +34,38 @@ ja:
distance_in_words: distance_in_words:
half_a_minute: "30秒前後" half_a_minute: "30秒前後"
less_than_x_seconds: less_than_x_seconds:
one: "1 秒以" one: "1秒以"
other: "{{count}} 秒以" other: "{{count}}秒以"
x_seconds: x_seconds:
one: "1 秒" one: "1秒"
other: "{{count}} 秒" other: "{{count}}秒"
less_than_x_minutes: less_than_x_minutes:
one: "1 分以" one: "1分以"
other: "{{count}} 分以" other: "{{count}}分以"
x_minutes: x_minutes:
one: "1 分" one: "1分"
other: "{{count}} 分" other: "{{count}}分"
about_x_hours: about_x_hours:
one: "約 1 時間" one: "約1時間"
other: "約 {{count}} 時間" other: "約{{count}}時間"
x_days: x_days:
one: "1 日" one: "1日"
other: "{{count}} 日" other: "{{count}}日"
about_x_months: about_x_months:
one: "約 1 ヶ月" one: "約1ヶ月"
other: "約 {{count}} ヶ月" other: "約{{count}}ヶ月"
x_months: x_months:
one: "1 ヶ月" one: "1ヶ月"
other: "{{count}} ヶ月" other: "{{count}}ヶ月"
about_x_years: about_x_years:
one: "約 1 年" one: "約1年"
other: "約 {{count}} 年" other: "約{{count}}年"
over_x_years: over_x_years:
one: "1 年以上" one: "1年以上"
other: "{{count}} 年以上" other: "{{count}}年以上"
almost_x_years:
one: "ほぼ1年"
other: "ほぼ{{count}}年"
number: number:
format: format:
@@ -124,17 +127,17 @@ ja:
accepted: "を受諾してください。" accepted: "を受諾してください。"
empty: "を入力してください。" empty: "を入力してください。"
blank: "を入力してください。" blank: "を入力してください。"
too_long: "は {{count}} 文字以内で入力してください。" too_long: "は{{count}}文字以内で入力してください。"
too_short: "は {{count}} 文字以上で入力してください。" too_short: "は{{count}}文字以上で入力してください。"
wrong_length: "は {{count}} 文字で入力してください。" wrong_length: "は{{count}}文字で入力してください。"
taken: "はすでに存在します。" taken: "はすでに存在します。"
not_a_number: "は数値で入力してください。" not_a_number: "は数値で入力してください。"
not_a_date: "は日付を入力してください。" not_a_date: "は日付を入力してください。"
greater_than: "は {{count}} より大きい値にしてください。" greater_than: "は{{count}}より大きい値にしてください。"
greater_than_or_equal_to: "は {{count}} 以上の値にしてください。" greater_than_or_equal_to: "は{{count}}以上の値にしてください。"
equal_to: "は {{count}} にしてください。" equal_to: "は{{count}}にしてください。"
less_than: "は {{count}} より小さい値にしてください。" less_than: "は{{count}}より小さい値にしてください。"
less_than_or_equal_to: "は {{count}} 以下の値にしてください。" less_than_or_equal_to: "は{{count}}以下の値にしてください。"
odd: "は奇数にしてください。" odd: "は奇数にしてください。"
even: "は偶数にしてください。" even: "は偶数にしてください。"
greater_than_start_date: "を開始日より後にしてください" greater_than_start_date: "を開始日より後にしてください"
@@ -173,11 +176,13 @@ ja:
notice_email_sent: "{{value}} 宛にメールを送信しました。" notice_email_sent: "{{value}} 宛にメールを送信しました。"
notice_email_error: "メール送信中にエラーが発生しました ({{value}})" notice_email_error: "メール送信中にエラーが発生しました ({{value}})"
notice_feeds_access_key_reseted: RSSアクセスキーを初期化しました。 notice_feeds_access_key_reseted: RSSアクセスキーを初期化しました。
notice_failed_to_save_issues: "{{total}} 件のうち {{count}} 件のチケットが保存できませんでした: {{ids}}." notice_api_access_key_reseted: APIアクセスキーを初期化しました。
notice_failed_to_save_issues: "{{total}}件のうち{{count}}件のチケットが保存できませんでした: {{ids}}."
notice_no_issue_selected: "チケットが選択されていません! 更新対象のチケットを選択してください。" notice_no_issue_selected: "チケットが選択されていません! 更新対象のチケットを選択してください。"
notice_account_pending: アカウントは作成済みで、管理者の承認待ちです。 notice_account_pending: アカウントは作成済みで、管理者の承認待ちです。
notice_default_data_loaded: デフォルト設定をロードしました。 notice_default_data_loaded: デフォルト設定をロードしました。
notice_unable_delete_version: バージョンを削除できません notice_unable_delete_version: バージョンを削除できません
notice_issue_done_ratios_updated: チケットの進捗が更新されました。
error_can_t_load_default_data: "デフォルト設定がロードできませんでした: {{value}}" error_can_t_load_default_data: "デフォルト設定がロードできませんでした: {{value}}"
error_scm_not_found: リポジトリに、エントリ/リビジョンが存在しません。 error_scm_not_found: リポジトリに、エントリ/リビジョンが存在しません。
@@ -186,8 +191,13 @@ ja:
error_issue_not_found_in_project: 'チケットが見つかりません、もしくはこのプロジェクトに属していません' error_issue_not_found_in_project: 'チケットが見つかりません、もしくはこのプロジェクトに属していません'
error_no_tracker_in_project: 'このプロジェクトにはトラッカーが登録されていません。プロジェクト設定を確認してください。' error_no_tracker_in_project: 'このプロジェクトにはトラッカーが登録されていません。プロジェクト設定を確認してください。'
error_no_default_issue_status: 'デフォルトのチケットステータスが定義されていません。設定を確認してください(管理→チケットのステータス)。' error_no_default_issue_status: 'デフォルトのチケットステータスが定義されていません。設定を確認してください(管理→チケットのステータス)。'
error_can_not_reopen_issue_on_closed_version: '終了したバージョンにひも付けされたチケットの再オープンはできません。'
error_can_not_archive_project: このプロジェクトは書庫に保存できません
error_issue_done_ratios_not_updated: "チケットの進捗が更新できません。"
error_workflow_copy_source: 'コピー元となるトラッカーまたはロールを選択してください'
error_workflow_copy_target: 'コピー先となるトラッカーとロールを選択してください'
warning_attachments_not_saved: "{{count}} 個の添付ファイルが保存できませんでした。" warning_attachments_not_saved: "{{count}}個の添付ファイルが保存できませんでした。"
mail_subject_lost_password: "{{value}} パスワード再発行" mail_subject_lost_password: "{{value}} パスワード再発行"
mail_body_lost_password: 'パスワードを変更するには、以下のリンクをクリックしてください:' mail_body_lost_password: 'パスワードを変更するには、以下のリンクをクリックしてください:'
@@ -196,20 +206,20 @@ ja:
mail_body_account_information_external: "{{value}} アカウントを使ってにログインできます。" mail_body_account_information_external: "{{value}} アカウントを使ってにログインできます。"
mail_body_account_information: アカウント情報 mail_body_account_information: アカウント情報
mail_subject_account_activation_request: "{{value}} アカウントの承認要求" mail_subject_account_activation_request: "{{value}} アカウントの承認要求"
mail_body_account_activation_request: "新しいユーザ {{value}} が登録ました。このアカウントはあなたの承認待ちです:" mail_body_account_activation_request: "新しいユーザ {{value}} が登録されました。このアカウントはあなたの承認待ちです:"
mail_subject_reminder: "{{count}} 件のチケットが期間近です" mail_subject_reminder: "{{count}}件のチケットが期間近です"
mail_body_reminder: "{{count}} 件の担当チケットの期限が {{days}} 日以内に到来します:" mail_body_reminder: "{{count}}件の担当チケットの期日が{{days}}日以内に到来します:"
mail_subject_wiki_content_added: "Wikiページ {{page}} が追加されました" mail_subject_wiki_content_added: "Wikiページ {{page}} が追加されました"
mail_body_wiki_content_added: "{{author}} によってWikiページ {{page}} が追加されました。" mail_body_wiki_content_added: "{{author}} によってWikiページ {{page}} が追加されました。"
mail_subject_wiki_content_updated: "Wikiページ {{page}} が更新されました" mail_subject_wiki_content_updated: "Wikiページ {{page}} が更新されました"
mail_body_wiki_content_updated: "{{author}} によってWikiページ {{page}} が更新されました。" mail_body_wiki_content_updated: "{{author}} によってWikiページ {{page}} が更新されました。"
gui_validation_error: 1 件のエラー gui_validation_error: 1件のエラー
gui_validation_error_plural: "{{count}} 件のエラー" gui_validation_error_plural: "{{count}}件のエラー"
field_name: field_name:
field_description: 説明 field_description: 説明
field_summary: サマリ field_summary: サマリ
field_is_required: 必須 field_is_required: 必須
field_firstname: 名前 field_firstname: 名前
field_lastname: 苗字 field_lastname: 苗字
@@ -237,7 +247,7 @@ ja:
field_is_default: デフォルト値 field_is_default: デフォルト値
field_tracker: トラッカー field_tracker: トラッカー
field_subject: 題名 field_subject: 題名
field_due_date: field_due_date: 期日
field_assigned_to: 担当者 field_assigned_to: 担当者
field_priority: 優先度 field_priority: 優先度
field_fixed_version: 対象バージョン field_fixed_version: 対象バージョン
@@ -246,7 +256,7 @@ ja:
field_homepage: ホームページ field_homepage: ホームページ
field_is_public: 公開 field_is_public: 公開
field_parent: 親プロジェクト名 field_parent: 親プロジェクト名
field_is_in_roadmap: ロードマップに表示されているチケット field_is_in_roadmap: チケットをロードマップに表示する
field_login: ログイン field_login: ログイン
field_mail_notification: メール通知 field_mail_notification: メール通知
field_admin: 管理者 field_admin: 管理者
@@ -269,7 +279,7 @@ ja:
field_onthefly: あわせてユーザを作成 field_onthefly: あわせてユーザを作成
field_start_date: 開始日 field_start_date: 開始日
field_done_ratio: 進捗 % field_done_ratio: 進捗 %
field_auth_source: 認証モード field_auth_source: 認証方式
field_hide_mail: メールアドレスを隠す field_hide_mail: メールアドレスを隠す
field_comments: コメント field_comments: コメント
field_url: URL field_url: URL
@@ -282,7 +292,7 @@ ja:
field_is_filter: フィルタとして使う field_is_filter: フィルタとして使う
field_issue_to: 関連するチケット field_issue_to: 関連するチケット
field_delay: 遅延 field_delay: 遅延
field_assignable: チケットはこのロールに割り当てることができます field_assignable: このロールにチケットを割り当て可能
field_redirect_existing_links: 既存のリンクをリダイレクトする field_redirect_existing_links: 既存のリンクをリダイレクトする
field_estimated_hours: 予定工数 field_estimated_hours: 予定工数
field_column_names: 項目 field_column_names: 項目
@@ -292,10 +302,11 @@ ja:
field_comments_sorting: コメントを表示 field_comments_sorting: コメントを表示
field_parent_title: 親ページ field_parent_title: 親ページ
field_editable: 編集可能 field_editable: 編集可能
field_watcher: 監視者 field_watcher: ウォッチャー
field_identity_url: OpenID URL field_identity_url: OpenID URL
field_content: 内容 field_content: 内容
field_group_by: グループ条件 field_group_by: グループ条件
field_sharing: 共有
setting_app_title: アプリケーションのタイトル setting_app_title: アプリケーションのタイトル
setting_app_subtitle: アプリケーションのサブタイトル setting_app_subtitle: アプリケーションのサブタイトル
@@ -310,11 +321,12 @@ ja:
setting_plain_text_mail: プレインテキストのみ(HTMLなし) setting_plain_text_mail: プレインテキストのみ(HTMLなし)
setting_host_name: ホスト名 setting_host_name: ホスト名
setting_text_formatting: テキストの書式 setting_text_formatting: テキストの書式
setting_cache_formatted_text: 書式化されたテキストをキャッシュする
setting_wiki_compression: Wiki履歴を圧縮する setting_wiki_compression: Wiki履歴を圧縮する
setting_feeds_limit: フィード内容の上限 setting_feeds_limit: フィード内容の上限
setting_default_projects_public: デフォルトで新しいプロジェクトは公開にする setting_default_projects_public: デフォルトで新しいプロジェクトは公開にする
setting_autofetch_changesets: コミットを自動取得する setting_autofetch_changesets: コミットを自動取得する
setting_sys_api_enabled: リポジトリ管理用のWeb Serviceを有効にする setting_sys_api_enabled: リポジトリ管理用のWebサービスを有効にする
setting_commit_ref_keywords: 参照用キーワード setting_commit_ref_keywords: 参照用キーワード
setting_commit_fix_keywords: 修正用キーワード setting_commit_fix_keywords: 修正用キーワード
setting_autologin: 自動ログイン setting_autologin: 自動ログイン
@@ -331,23 +343,33 @@ ja:
setting_activity_days_default: プロジェクトの活動ページに表示される日数 setting_activity_days_default: プロジェクトの活動ページに表示される日数
setting_display_subprojects_issues: デフォルトでサブプロジェクトのチケットをメインプロジェクトに表示する setting_display_subprojects_issues: デフォルトでサブプロジェクトのチケットをメインプロジェクトに表示する
setting_enabled_scm: 使用するバージョン管理システム setting_enabled_scm: 使用するバージョン管理システム
setting_mail_handler_api_enabled: 受信メール用のWeb Serviceを有効にする setting_mail_handler_body_delimiters: "メール本文から一致する行以降を切り取る"
setting_mail_handler_api_enabled: 受信メール用のWebサービスを有効にする
setting_mail_handler_api_key: APIキー setting_mail_handler_api_key: APIキー
setting_sequential_project_identifiers: プロジェクト識別子を連番で生成する setting_sequential_project_identifiers: プロジェクト識別子を連番で生成する
setting_gravatar_enabled: Gravatarユーザーアイコンを使用する setting_gravatar_enabled: Gravatarアイコンを使用する
setting_gravatar_default: デフォルトのGravatarアイコン
setting_diff_max_lines_displayed: 差分の表示行数の上限 setting_diff_max_lines_displayed: 差分の表示行数の上限
setting_file_max_size_displayed: テキストファイルのインライン表示行数の上限 setting_file_max_size_displayed: テキストファイルのインライン表示行数の上限
setting_repository_log_display_limit: ファイルのリビジョン表示数の上限 setting_repository_log_display_limit: ファイルのリビジョン表示数の上限
setting_openid: OpenIDによるログインと登録 setting_openid: OpenIDによるログインと登録
setting_password_min_length: パスワードの最低必要文字数 setting_password_min_length: パスワードの最低必要文字数
setting_new_project_user_role_id: 管理者以外のユーザが作成したプロジェクトに設定するロール setting_new_project_user_role_id: 管理者以外のユーザが作成したプロジェクトに設定するロール
setting_default_projects_modules: 新規プロジェクトにおいてデフォルトで有効になるモジュール
setting_issue_done_ratio: 進捗の算出方法
setting_issue_done_ratio_issue_field: 各チケットにフィールドを用意する
setting_issue_done_ratio_issue_status: チケットのステータスを使用する
setting_start_of_week: 週の開始曜日
setting_rest_api_enabled: RESTによるWebサービスを有効にする
permission_add_project: プロジェクトの追加 permission_add_project: プロジェクトの追加
permission_add_subprojects: サブプロジェクトの追加
permission_edit_project: プロジェクトの編集 permission_edit_project: プロジェクトの編集
permission_select_project_modules: モジュールの選択 permission_select_project_modules: モジュールの選択
permission_manage_members: メンバーの管理 permission_manage_members: メンバーの管理
permission_manage_versions: バージョンの管理 permission_manage_versions: バージョンの管理
permission_manage_categories: チケットのカテゴリの管理 permission_manage_categories: チケットのカテゴリの管理
permission_view_issues: チケットの閲覧
permission_add_issues: チケットの追加 permission_add_issues: チケットの追加
permission_edit_issues: チケットの編集 permission_edit_issues: チケットの編集
permission_manage_issue_relations: チケットの管理 permission_manage_issue_relations: チケットの管理
@@ -360,8 +382,9 @@ ja:
permission_save_queries: クエリの保存 permission_save_queries: クエリの保存
permission_view_gantt: ガントチャートの閲覧 permission_view_gantt: ガントチャートの閲覧
permission_view_calendar: カレンダーの閲覧 permission_view_calendar: カレンダーの閲覧
permission_view_issue_watchers: 監視者一覧の閲覧 permission_view_issue_watchers: ウォッチ一覧の閲覧
permission_add_issue_watchers: 監視者の追加 permission_add_issue_watchers: ウォッチの追加
permission_delete_issue_watchers: ウォッチの削除
permission_log_time: 変更履歴の記入 permission_log_time: 変更履歴の記入
permission_view_time_entries: 変更履歴の閲覧 permission_view_time_entries: 変更履歴の閲覧
permission_edit_time_entries: 変更履歴の編集 permission_edit_time_entries: 変更履歴の編集
@@ -376,6 +399,7 @@ ja:
permission_rename_wiki_pages: Wikiページ名の変更 permission_rename_wiki_pages: Wikiページ名の変更
permission_delete_wiki_pages: Wikiページの削除 permission_delete_wiki_pages: Wikiページの削除
permission_view_wiki_pages: Wikiの閲覧 permission_view_wiki_pages: Wikiの閲覧
permission_export_wiki_pages: Wikiページを他の形式に出力
permission_view_wiki_edits: Wiki履歴の閲覧 permission_view_wiki_edits: Wiki履歴の閲覧
permission_edit_wiki_pages: Wikiページの編集 permission_edit_wiki_pages: Wikiページの編集
permission_delete_wiki_pages_attachments: 添付ファイルの削除 permission_delete_wiki_pages_attachments: 添付ファイルの削除
@@ -404,19 +428,20 @@ ja:
label_user: ユーザ label_user: ユーザ
label_user_plural: ユーザ label_user_plural: ユーザ
label_user_new: 新しいユーザ label_user_new: 新しいユーザ
label_user_anonymous: 匿名ユーザ
label_project: プロジェクト label_project: プロジェクト
label_project_new: 新しいプロジェクト label_project_new: 新しいプロジェクト
label_project_plural: プロジェクト label_project_plural: プロジェクト
label_x_projects: label_x_projects:
zero: プロジェクトはありません zero: プロジェクトはありません
one: 1 プロジェクト one: 1プロジェクト
other: "{{count}} プロジェクト" other: "{{count}}プロジェクト"
label_project_all: 全プロジェクト label_project_all: 全プロジェクト
label_project_latest: 最近のプロジェクト label_project_latest: 最近のプロジェクト
label_issue: チケット label_issue: チケット
label_issue_new: 新しいチケット label_issue_new: 新しいチケット
label_issue_plural: チケット label_issue_plural: チケット
label_issue_view_all: チケットを全て見る label_issue_view_all: 全てのチケットを見る
label_issues_by: "{{value}} 別のチケット" label_issues_by: "{{value}} 別のチケット"
label_issue_added: チケットが追加されました label_issue_added: チケットが追加されました
label_issue_updated: チケットが更新されました label_issue_updated: チケットが更新されました
@@ -454,7 +479,7 @@ ja:
label_password_lost: パスワードの再発行 label_password_lost: パスワードの再発行
label_home: ホーム label_home: ホーム
label_my_page: マイページ label_my_page: マイページ
label_my_account: マイアカウント label_my_account: 個人設定
label_my_projects: マイプロジェクト label_my_projects: マイプロジェクト
label_administration: 管理 label_administration: 管理
label_login: ログイン label_login: ログイン
@@ -471,10 +496,11 @@ ja:
label_logged_as: ログイン中: label_logged_as: ログイン中:
label_environment: 環境 label_environment: 環境
label_authentication: 認証 label_authentication: 認証
label_auth_source: 認証モード label_auth_source: 認証方式
label_auth_source_new: 新しい認証モード label_auth_source_new: 新しい認証方式
label_auth_source_plural: 認証モード label_auth_source_plural: 認証方式
label_subproject_plural: サブプロジェクト label_subproject_plural: サブプロジェクト
label_subproject_new: 新しいサブプロジェクト
label_and_its_subprojects: "{{value}} とサブプロジェクト" label_and_its_subprojects: "{{value}} とサブプロジェクト"
label_min_max_length: 最小値 - 最大値の長さ label_min_max_length: 最小値 - 最大値の長さ
label_list: リストから選択 label_list: リストから選択
@@ -486,8 +512,8 @@ ja:
label_text: 長いテキスト label_text: 長いテキスト
label_attribute: 属性 label_attribute: 属性
label_attribute_plural: 属性 label_attribute_plural: 属性
label_download: "{{count}} ダウンロード" label_download: "{{count}}ダウンロード"
label_download_plural: "{{count}} ダウンロード" label_download_plural: "{{count}}ダウンロード"
label_no_data: 表示するデータがありません label_no_data: 表示するデータがありません
label_change_status: ステータスの変更 label_change_status: ステータスの変更
label_history: 履歴 label_history: 履歴
@@ -510,25 +536,26 @@ ja:
label_version_new: 新しいバージョン label_version_new: 新しいバージョン
label_version_plural: バージョン label_version_plural: バージョン
label_confirmation: 確認 label_confirmation: 確認
label_export_to: 他の形式に出力 label_close_versions: 完了したバージョンを終了にする
label_export_to: '他の形式に出力:'
label_read: 読む... label_read: 読む...
label_public_projects: 公開プロジェクト label_public_projects: 公開プロジェクト
label_open_issues: 進行中 label_open_issues: 未完了
label_open_issues_plural: 進行中 label_open_issues_plural: 未完了
label_closed_issues: label_closed_issues:
label_closed_issues_plural: label_closed_issues_plural:
label_x_open_issues_abbr_on_total: label_x_open_issues_abbr_on_total:
zero: 0 件進行中 / 全 {{total}} zero: 0件未完了 / 全{{total}}件
one: 1 件進行中 / 全 {{total}} one: 1件未完了 / 全{{total}}件
other: "{{count}} 件進行中 / 全 {{total}} 件" other: "{{count}}件未完了 / 全{{total}}件"
label_x_open_issues_abbr: label_x_open_issues_abbr:
zero: 0 件進行中 zero: 0件未完了
one: 1 件進行中 one: 1件未完了
other: "{{count}} 件進行中" other: "{{count}}件未完了"
label_x_closed_issues_abbr: label_x_closed_issues_abbr:
zero: 0 件終 zero: 0件完
one: 1 件終 one: 1件完
other: "{{count}} 件終了" other: "{{count}}件完了"
label_total: 合計 label_total: 合計
label_permissions: 権限 label_permissions: 権限
label_current_status: 現在のステータス label_current_status: 現在のステータス
@@ -543,18 +570,18 @@ ja:
label_add_note: 注記を追加 label_add_note: 注記を追加
label_per_page: ページ毎 label_per_page: ページ毎
label_calendar: カレンダー label_calendar: カレンダー
label_months_from: ヶ月前以降 label_months_from: ヶ月
label_gantt: ガントチャート label_gantt: ガントチャート
label_internal: 内部 label_internal: 内部
label_last_changes: "最新の変更 {{count}} 件" label_last_changes: "最新の変更 {{count}}件"
label_change_view_all: 全ての変更を見る label_change_view_all: 全ての変更を見る
label_personalize_page: このページをパーソナライズする label_personalize_page: このページをパーソナライズする
label_comment: コメント label_comment: コメント
label_comment_plural: コメント label_comment_plural: コメント
label_x_comments: label_x_comments:
zero: コメントがありません zero: コメントがありません
one: 1 コメント one: 1コメント
other: "{{count}} コメント" other: "{{count}}コメント"
label_comment_add: コメント追加 label_comment_add: コメント追加
label_comment_added: 追加されたコメント label_comment_added: 追加されたコメント
label_comment_delete: コメント削除 label_comment_delete: コメント削除
@@ -565,23 +592,23 @@ ja:
label_filter_plural: フィルタ label_filter_plural: フィルタ
label_equals: 等しい label_equals: 等しい
label_not_equals: 等しくない label_not_equals: 等しくない
label_in_less_than: 残日数がこれより少ない label_in_less_than: が今日から○日後以前
label_in_more_than: 残日数がこれより多い label_in_more_than: が今日から○日後以降
label_greater_or_equal: 以上 label_greater_or_equal: 以上
label_less_or_equal: 以下 label_less_or_equal: 以下
label_in: 残日数 label_in: が今日から○日後
label_today: 今日 label_today: 今日
label_all_time: 全期間 label_all_time: 全期間
label_yesterday: 昨日 label_yesterday: 昨日
label_this_week: この週 label_this_week: この週
label_last_week: 先週 label_last_week: 先週
label_last_n_days: "最後の {{count}} 日間" label_last_n_days: "最後の{{count}}日間"
label_this_month: 今月 label_this_month: 今月
label_last_month: 先月 label_last_month: 先月
label_this_year: 今年 label_this_year: 今年
label_date_range: 日付の範囲 label_date_range: 日付の範囲
label_less_than_ago: 経過日数がこれより少ない label_less_than_ago: が今日より○日前以降
label_more_than_ago: 経過日数がこれより多い label_more_than_ago: が今日より○日前以前
label_ago: 日前 label_ago: 日前
label_contains: 含む label_contains: 含む
label_not_contains: 含まない label_not_contains: 含まない
@@ -589,12 +616,13 @@ ja:
label_repository: リポジトリ label_repository: リポジトリ
label_repository_plural: リポジトリ label_repository_plural: リポジトリ
label_browse: ブラウズ label_browse: ブラウズ
label_modification: "{{count}} 点の変更" label_modification: "{{count}}点の変更"
label_modification_plural: "{{count}} 点の変更" label_modification_plural: "{{count}}点の変更"
label_branch: ブランチ label_branch: ブランチ
label_tag: タグ label_tag: タグ
label_revision: リビジョン label_revision: リビジョン
label_revision_plural: リビジョン label_revision_plural: リビジョン
label_revision_id: リビジョン {{value}}
label_associated_revisions: 関係しているリビジョン label_associated_revisions: 関係しているリビジョン
label_added: 追加 label_added: 追加
label_modified: 変更 label_modified: 変更
@@ -613,7 +641,7 @@ ja:
label_roadmap: ロードマップ label_roadmap: ロードマップ
label_roadmap_due_in: "期日まで {{value}}" label_roadmap_due_in: "期日まで {{value}}"
label_roadmap_overdue: "{{value}} 遅れ" label_roadmap_overdue: "{{value}} 遅れ"
label_roadmap_no_issues: このバージョンに向けてのチケットはありません label_roadmap_no_issues: このバージョンに関するチケットはありません
label_search: 検索 label_search: 検索
label_result_plural: 結果 label_result_plural: 結果
label_all_words: すべての単語 label_all_words: すべての単語
@@ -629,9 +657,9 @@ ja:
label_feed_plural: フィード label_feed_plural: フィード
label_changes_details: 全変更の詳細 label_changes_details: 全変更の詳細
label_issue_tracking: チケットトラッキング label_issue_tracking: チケットトラッキング
label_spent_time: 活動時間の記録 label_spent_time: 作業時間の記録
label_f_hour: "{{value}} 時間" label_f_hour: "{{value}}時間"
label_f_hour_plural: "{{value}} 時間" label_f_hour_plural: "{{value}}時間"
label_time_tracking: 時間トラッキング label_time_tracking: 時間トラッキング
label_change_plural: 変更 label_change_plural: 変更
label_statistics: 統計 label_statistics: 統計
@@ -643,9 +671,9 @@ ja:
label_options: オプション label_options: オプション
label_copy_workflow_from: ワークフローをここからコピー label_copy_workflow_from: ワークフローをここからコピー
label_permissions_report: 権限レポート label_permissions_report: 権限レポート
label_watched_issues: 監視中のチケット label_watched_issues: ウォッチしているチケット
label_related_issues: 関連するチケット label_related_issues: 関連するチケット
label_applied_status: 適用されステータス label_applied_status: 適用されステータス
label_loading: ロード中... label_loading: ロード中...
label_relation_new: 新しい関連 label_relation_new: 新しい関連
label_relation_delete: 関連の削除 label_relation_delete: 関連の削除
@@ -667,6 +695,8 @@ ja:
label_board: フォーラム label_board: フォーラム
label_board_new: 新しいフォーラム label_board_new: 新しいフォーラム
label_board_plural: フォーラム label_board_plural: フォーラム
label_board_sticky: スティッキー
label_board_locked: ロック
label_topic_plural: トピック label_topic_plural: トピック
label_message_plural: メッセージ label_message_plural: メッセージ
label_message_last: 最新のメッセージ label_message_last: 最新のメッセージ
@@ -680,13 +710,15 @@ ja:
label_date_from: "日付指定: " label_date_from: "日付指定: "
label_date_to: から label_date_to: から
label_language_based: 既定の言語の設定に従う label_language_based: 既定の言語の設定に従う
label_sort_by: "{{value}} で並び替え" label_sort_by: "並び替え {{value}}"
label_send_test_email: テストメールを送信 label_send_test_email: テストメールを送信
label_feeds_access_key_created_on: "RSSアクセスキーは {{value}} 前に作成されました" label_feeds_access_key: RSSアクセスキー
label_missing_feeds_access_key: RSSアクセスキーが見つかりません
label_feeds_access_key_created_on: "RSSアクセスキーは{{value}}前に作成されました"
label_module_plural: モジュール label_module_plural: モジュール
label_added_time_by: "{{author}} が {{age}} 前に追加しました" label_added_time_by: "{{author}} が{{age}}前に追加"
label_updated_time_by: "{{author}} が {{age}} 前に更新" label_updated_time_by: "{{author}} が{{age}}前に更新"
label_updated_time: "{{value}} 前に更新されました" label_updated_time: "{{value}}前に更新"
label_jump_to_a_project: プロジェクトへ移動... label_jump_to_a_project: プロジェクトへ移動...
label_file_plural: ファイル label_file_plural: ファイル
label_changeset_plural: 更新履歴 label_changeset_plural: 更新履歴
@@ -696,13 +728,13 @@ ja:
label_theme: テーマ label_theme: テーマ
label_default: 既定 label_default: 既定
label_search_titles_only: タイトルのみ label_search_titles_only: タイトルのみ
label_user_mail_option_selected: "選択したプロジェクト..."
label_user_mail_option_all: "参加しているプロジェクトの全てのチケット" label_user_mail_option_all: "参加しているプロジェクトの全てのチケット"
label_user_mail_option_none: "監視または関係しているチケットのみ" label_user_mail_option_selected: "選択したプロジェクト..."
label_user_mail_no_self_notified: 自分自身による変更の通知は不要です label_user_mail_option_none: "ウォッチまたは関係しているチケットのみ"
label_user_mail_no_self_notified: 自分自身による変更の通知は不要
label_registration_activation_by_email: メールでアカウントを有効化 label_registration_activation_by_email: メールでアカウントを有効化
label_registration_automatic_activation: 自動でアカウントを有効化
label_registration_manual_activation: 手動でアカウントを有効化 label_registration_manual_activation: 手動でアカウントを有効化
label_registration_automatic_activation: 自動でアカウントを有効化
label_display_per_page: "1ページに: {{value}}" label_display_per_page: "1ページに: {{value}}"
label_age: 年齢 label_age: 年齢
label_change_properties: プロパティの変更 label_change_properties: プロパティの変更
@@ -720,25 +752,38 @@ ja:
label_planning: 計画 label_planning: 計画
label_incoming_emails: 受信メール label_incoming_emails: 受信メール
label_generate_key: キーの生成 label_generate_key: キーの生成
label_issue_watchers: チケット監視者 label_issue_watchers: チケットのウォッチャー
label_example: label_example:
label_display: 表示 label_display: 表示
label_sort: ソート条件 label_sort: ソート条件
label_ascending: 昇順 label_ascending: 昇順
label_descending: 降順 label_descending: 降順
label_date_from_to: "{{start}} から {{end}} まで" label_date_from_to: "{{start}}から{{end}}まで"
label_wiki_content_added: Wikiページが追加されました label_wiki_content_added: Wikiページが追加されました
label_wiki_content_updated: Wikiページが更新されました label_wiki_content_updated: Wikiページが更新されました
label_group: グループ label_group: グループ
label_group_plural: グループ label_group_plural: グループ
label_group_new: 新しいグループ label_group_new: 新しいグループ
label_time_entry_plural: 活動時間の記録 label_time_entry_plural: 作業時間の記録
label_version_sharing_none: 共有しない
label_version_sharing_descendants: サブプロジェクト単位
label_version_sharing_hierarchy: プロジェクト階層単位
label_version_sharing_tree: プロジェクトツリー単位
label_version_sharing_system: すべてのプロジェクト
label_update_issue_done_ratios: 進捗の更新
label_copy_source: コピー元
label_copy_target: コピー先
label_copy_same_as_target: 同じコピー先
label_display_used_statuses_only: このトラッカーで使われているステータスのみ表示する
label_api_access_key: APIアクセスキー
label_missing_api_access_key: APIアクセスキーが見つかりません
label_api_access_key_created_on: "APIアクセスキーは{{value}}前に作成されました"
button_login: ログイン button_login: ログイン
button_submit: 変更 button_submit: 変更
button_save: 保存 button_save: 保存
button_check_all: チェックを全部つける button_check_all: 全てにチェックをつける
button_uncheck_all: チェックを全部外す button_uncheck_all: 全てのチェックを外す
button_delete: 削除 button_delete: 削除
button_create: 作成 button_create: 作成
button_create_and_continue: 連続作成 button_create_and_continue: 連続作成
@@ -754,14 +799,15 @@ ja:
button_list: 一覧 button_list: 一覧
button_view: 見る button_view: 見る
button_move: 移動 button_move: 移動
button_move_and_follow: 移動後表示
button_back: 戻る button_back: 戻る
button_cancel: キャンセル button_cancel: キャンセル
button_activate: 有効にする button_activate: 有効にする
button_sort: ソート button_sort: ソート
button_log_time: 時間を記録 button_log_time: 時間を記録
button_rollback: このバージョンにロールバック button_rollback: このバージョンにロールバック
button_watch: 監視 button_watch: ウォッチ
button_unwatch: 監視をやめる button_unwatch: ウォッチをやめる
button_reply: 返答 button_reply: 返答
button_archive: 書庫に保存 button_archive: 書庫に保存
button_unarchive: 書庫から戻す button_unarchive: 書庫から戻す
@@ -769,15 +815,24 @@ ja:
button_rename: 名前変更 button_rename: 名前変更
button_change_password: パスワード変更 button_change_password: パスワード変更
button_copy: コピー button_copy: コピー
button_copy_and_follow: コピー後表示
button_annotate: 注釈 button_annotate: 注釈
button_update: 更新 button_update: 更新
button_configure: 設定 button_configure: 設定
button_quote: 引用 button_quote: 引用
button_duplicate: 複製
button_show: 表示
status_active: 有効 status_active: 有効
status_registered: 登録 status_registered: 登録
status_locked: ロック status_locked: ロック
version_status_open: 進行中
version_status_locked: ロック中
version_status_closed: 終了
field_active: 有効
text_select_mail_notifications: どのメール通知を送信するか、アクションを選択してください。 text_select_mail_notifications: どのメール通知を送信するか、アクションを選択してください。
text_regexp_info: 例) ^[A-Z0-9]+$ text_regexp_info: 例) ^[A-Z0-9]+$
text_min_max_length_info: 0だと無制限になります text_min_max_length_info: 0だと無制限になります
@@ -788,24 +843,26 @@ ja:
text_journal_changed: "{{label}} を {{old}} から {{new}} に変更" text_journal_changed: "{{label}} を {{old}} から {{new}} に変更"
text_journal_set_to: "{{label}} を {{value}} にセット" text_journal_set_to: "{{label}} を {{value}} にセット"
text_journal_deleted: "{{label}} を削除 ({{old}})" text_journal_deleted: "{{label}} を削除 ({{old}})"
text_journal_added: "{{label}} {{value}} を追加"
text_tip_task_begin_day: この日に開始するタスク text_tip_task_begin_day: この日に開始するタスク
text_tip_task_end_day: この日に終了するタスク text_tip_task_end_day: この日に終了するタスク
text_tip_task_begin_end_day: この日のうちに開始して終了するタスク text_tip_task_begin_end_day: この日のうちに開始して終了するタスク
text_project_identifier_info: '英小文字(a-z)と数字とダッシュ(-)が使えます。<br />一度保存すると、識別子は変更できません。' text_project_identifier_info: '英小文字(a-z)と数字とダッシュ(-)が使えます。<br />一度保存すると、識別子は変更できません。'
text_caracters_maximum: "最大 {{count}} 文字です。" text_caracters_maximum: "最大{{count}}文字です。"
text_caracters_minimum: "最低 {{count}} 文字の長さが必要です" text_caracters_minimum: "最低{{count}}文字の長さが必要です"
text_length_between: "長さは {{min}} から {{max}} 文字までです。" text_length_between: "長さは{{min}}から{{max}}文字までです。"
text_tracker_no_workflow: このトラッカーにワークフローが定義されていません text_tracker_no_workflow: このトラッカーにワークフローが定義されていません
text_unallowed_characters: 次の文字は使用できません text_unallowed_characters: 次の文字は使用できません
text_comma_separated: (カンマで区切った)複数の値が使えます text_comma_separated: (カンマで区切ることで)複数の値を設定できます
text_line_separated: (1行ごとに書くことで)複数の値を設定できます。
text_issues_ref_in_commit_messages: コミットメッセージ内でチケットの参照/修正 text_issues_ref_in_commit_messages: コミットメッセージ内でチケットの参照/修正
text_issue_added: "チケット {{id}} が {{author}} によって報告されました。" text_issue_added: "チケット {{id}} が {{author}} によって報告されました。"
text_issue_updated: "チケット {{id}} が {{author}} によって更新されました。" text_issue_updated: "チケット {{id}} が {{author}} によって更新されました。"
text_wiki_destroy_confirmation: 本当にこのwikiとその内容の全てを削除しますか? text_wiki_destroy_confirmation: 本当にこのwikiとその内容の全てを削除しますか?
text_issue_category_destroy_question: "{{count}} 件のチケットがこのカテゴリに割り当てられています。" text_issue_category_destroy_question: "{{count}}件のチケットがこのカテゴリに割り当てられています。"
text_issue_category_destroy_assignments: カテゴリの割り当てを削除する text_issue_category_destroy_assignments: カテゴリの割り当てを削除する
text_issue_category_reassign_to: チケットをこのカテゴリに再割り当てする text_issue_category_reassign_to: チケットをこのカテゴリに再割り当てする
text_user_mail_option: "未選択のプロジェクトでは、監視または関係しているチケット(例: 自分が報告者もしくは担当者であるチケット)のみメールが送信されます。" text_user_mail_option: "未選択のプロジェクトでは、ウォッチまたは関係しているチケット(例: 自分が報告者もしくは担当者であるチケット)のみメールが送信されます。"
text_no_configuration_data: "ロール、トラッカー、チケットのステータス、ワークフローがまだ設定されていません。\nデフォルト設定のロードを強くお勧めします。ロードした後、それを修正することができます。" text_no_configuration_data: "ロール、トラッカー、チケットのステータス、ワークフローがまだ設定されていません。\nデフォルト設定のロードを強くお勧めします。ロードした後、それを修正することができます。"
text_load_default_configuration: デフォルト設定をロード text_load_default_configuration: デフォルト設定をロード
text_status_changed_by_changeset: "更新履歴 {{value}} で適用されました。" text_status_changed_by_changeset: "更新履歴 {{value}} で適用されました。"
@@ -815,21 +872,22 @@ ja:
text_file_repository_writable: ファイルリポジトリに書き込み可能 text_file_repository_writable: ファイルリポジトリに書き込み可能
text_plugin_assets_writable: Plugin assetsディレクトリに書き込み可能 text_plugin_assets_writable: Plugin assetsディレクトリに書き込み可能
text_rmagick_available: RMagickが使用可能 (オプション) text_rmagick_available: RMagickが使用可能 (オプション)
text_destroy_time_entries_question: このチケットの {{hours}} 時間分の活動記録の扱いを選択してください。 text_destroy_time_entries_question: このチケットの{{hours}}時間分の作業記録の扱いを選択してください。
text_destroy_time_entries: 記録された活動時間を含めて削除 text_destroy_time_entries: 記録された作業時間を含めて削除
text_assign_time_entries_to_project: 記録された活動時間をプロジェクト自体に割り当て text_assign_time_entries_to_project: 記録された作業時間をプロジェクト自体に割り当て
text_reassign_time_entries: '記録された活動時間をこのチケットに再割り当て:' text_reassign_time_entries: '記録された作業時間をこのチケットに再割り当て:'
text_user_wrote: "{{value}} は書きました:" text_user_wrote: "{{value}} は書きました:"
text_enumeration_destroy_question: "{{count}} 個のオブジェクトがこの値に割り当てられています。" text_enumeration_destroy_question: "{{count}}個のオブジェクトがこの値に割り当てられています。"
text_enumeration_category_reassign_to: '次の値に割り当て直す:' text_enumeration_category_reassign_to: '次の値に割り当て直す:'
text_email_delivery_not_configured: "メールを送信するために必要な設定が行われていないため、メール通知は利用できません。\nconfig/email.ymlでSMTPサーバの設定を行い、アプリケーションを再起動してください。" text_email_delivery_not_configured: "メールを送信するために必要な設定が行われていないため、メール通知は利用できません。\nconfig/email.ymlでSMTPサーバの設定を行い、アプリケーションを再起動してください。"
text_repository_usernames_mapping: "リポジトリのログから検出されたユーザー名をどのRedmineユーザーに関連づけるのか選択してください。\nログ上のユーザー名またはメールアドレスがRedmineのユーザーと一致する場合は自動的に関連づけられます。" text_repository_usernames_mapping: "リポジトリのログから検出されたユーザー名をどのRedmineユーザーに関連づけるのか選択してください。\nログ上のユーザー名またはメールアドレスがRedmineのユーザーと一致する場合は自動的に関連づけられます。"
text_diff_truncated: '... 差分の行数が表示可能な上限を超えました。超過分は表示しません。' text_diff_truncated: '... 差分の行数が表示可能な上限を超えました。超過分は表示しません。'
text_custom_field_possible_values_info: '選択肢の値は1行に1個ずつ記述してください。' text_custom_field_possible_values_info: '選択肢の値は1行に1個ずつ記述してください。'
text_wiki_page_destroy_question: "この親ページの配下に {{descendants}}の子孫ページがあります。" text_wiki_page_destroy_question: "この親ページの配下に{{descendants}}ページの子孫ページがあります。"
text_wiki_page_nullify_children: "子ページをメインページ配下に移動する" text_wiki_page_nullify_children: "子ページをメインページ配下に移動する"
text_wiki_page_destroy_children: "配下の子孫ページも削除する" text_wiki_page_destroy_children: "配下の子孫ページも削除する"
text_wiki_page_reassign_children: "子ページを次の親ページの配下に移動する" text_wiki_page_reassign_children: "子ページを次の親ページの配下に移動する"
text_own_membership_delete_confirmation: "いくつかまたはすべての権限をあなた自身から剥奪しようとしているため、このプロジェクトを編集できなくなるかもしれません。\n本当に続けてもよろしいですか?"
default_role_manager: 管理者 default_role_manager: 管理者
default_role_developper: 開発者 default_role_developper: 開発者
@@ -838,7 +896,7 @@ ja:
default_tracker_feature: 機能 default_tracker_feature: 機能
default_tracker_support: サポート default_tracker_support: サポート
default_issue_status_new: 新規 default_issue_status_new: 新規
default_issue_status_in_progress: In Progress default_issue_status_in_progress: 進行中
default_issue_status_resolved: 解決 default_issue_status_resolved: 解決
default_issue_status_feedback: フィードバック default_issue_status_feedback: フィードバック
default_issue_status_closed: 終了 default_issue_status_closed: 終了
@@ -856,51 +914,6 @@ ja:
enumeration_issue_priorities: チケットの優先度 enumeration_issue_priorities: チケットの優先度
enumeration_doc_categories: 文書カテゴリ enumeration_doc_categories: 文書カテゴリ
enumeration_activities: 作業分類 (時間トラッキング) enumeration_activities: 作業分類 (時間トラッキング)
text_journal_added: "{{label}} {{value}} added" enumeration_system_activity: システム作業分類
field_active: Active permission_manage_project_activities: Manage project activities
enumeration_system_activity: System Activity label_project_copy_notifications: Send email notifications during the project copy
permission_delete_issue_watchers: Delete watchers
version_status_closed: closed
version_status_locked: locked
version_status_open: open
error_can_not_reopen_issue_on_closed_version: An issue assigned to a closed version can not be reopened
label_user_anonymous: Anonymous
button_move_and_follow: Move and follow
setting_default_projects_modules: Default enabled modules for new projects
setting_gravatar_default: Default Gravatar image
field_sharing: Sharing
label_version_sharing_hierarchy: With project hierarchy
label_version_sharing_system: With all projects
label_version_sharing_descendants: With subprojects
label_version_sharing_tree: With project tree
label_version_sharing_none: Not shared
error_can_not_archive_project: This project can not be archived
button_duplicate: Duplicate
button_copy_and_follow: Copy and follow
label_copy_source: Source
setting_issue_done_ratio: Calculate the issue done ratio with
setting_issue_done_ratio_issue_status: Use the issue status
error_issue_done_ratios_not_updated: Issue done ratios not updated.
error_workflow_copy_target: Please select target tracker(s) and role(s)
setting_issue_done_ratio_issue_field: Use the issue field
label_copy_same_as_target: Same as target
label_copy_target: Target
notice_issue_done_ratios_updated: Issue done ratios updated.
error_workflow_copy_source: Please select a source tracker or role
label_update_issue_done_ratios: Update issue done ratios
setting_start_of_week: Start calendars on
permission_view_issues: View Issues
label_display_used_statuses_only: Only display statuses that are used by this tracker
label_revision_id: Revision {{value}}
label_api_access_key: API access key
label_api_access_key_created_on: API access key created {{value}} ago
label_feeds_access_key: RSS access key
notice_api_access_key_reseted: Your API access key was reset.
setting_rest_api_enabled: Enable REST web service
label_missing_api_access_key: Missing an API access key
label_missing_feeds_access_key: Missing a RSS access key
button_show: Show
text_line_separated: Multiple values allowed (one line for each value).
setting_mail_handler_body_delimiters: Truncate emails after one of these lines
permission_add_subprojects: Create subprojects
label_subproject_new: New subproject
+30 -17
View File
@@ -2,7 +2,7 @@
# by Kihyun Yoon(ddumbugie@gmail.com),http://plenum.textcube.com/ # by Kihyun Yoon(ddumbugie@gmail.com),http://plenum.textcube.com/
# by John Hwang (jhwang@tavon.org),http://github.com/tavon # by John Hwang (jhwang@tavon.org),http://github.com/tavon
# by Yonghwan SO(please insert your email), last update at 2009-09-11 # by Yonghwan SO(please insert your email), last update at 2009-09-11
# last update at 2009-09-11 by Kihyun Yoon # last update at 2010-01-23 by Kihyun Yoon
ko: ko:
date: date:
formats: formats:
@@ -64,6 +64,9 @@ ko:
over_x_years: over_x_years:
one: "일년 이상" one: "일년 이상"
other: "{{count}}년 이상" other: "{{count}}년 이상"
almost_x_years:
one: "약 1년"
other: "약 {{count}}년"
prompts: prompts:
year: "년" year: "년"
month: "월" month: "월"
@@ -179,8 +182,8 @@ ko:
general_lang_name: '한국어(Korean)' general_lang_name: '한국어(Korean)'
general_csv_separator: ',' general_csv_separator: ','
general_csv_decimal_separator: '.' general_csv_decimal_separator: '.'
general_csv_encoding: UTF-8 general_csv_encoding: CP949
general_pdf_encoding: UTF-8 general_pdf_encoding: CP949
general_first_day_of_week: '7' general_first_day_of_week: '7'
notice_account_updated: 계정이 성공적으로 변경되었습니다. notice_account_updated: 계정이 성공적으로 변경되었습니다.
@@ -706,7 +709,7 @@ ko:
label_language_based: 언어설정에 따름 label_language_based: 언어설정에 따름
label_sort_by: "{{value}}(으)로 정렬" label_sort_by: "{{value}}(으)로 정렬"
label_send_test_email: 테스트 메일 보내기 label_send_test_email: 테스트 메일 보내기
label_feeds_access_key_created_on: "피드 접근 키가 {{value}} 이전에 생성" label_feeds_access_key_created_on: "피드 접근 키가 {{value}} 이전에 생성되었습니다."
label_module_plural: 모듈 label_module_plural: 모듈
label_added_time_by: "{{author}}이(가) {{age}} 전에 추가함" label_added_time_by: "{{author}}이(가) {{age}} 전에 추가함"
label_updated_time_by: "{{author}}이(가) {{age}} 전에 변경" label_updated_time_by: "{{author}}이(가) {{age}} 전에 변경"
@@ -922,16 +925,26 @@ ko:
setting_start_of_week: 달력 시작 요일 setting_start_of_week: 달력 시작 요일
permission_view_issues: 일감 보기 permission_view_issues: 일감 보기
label_display_used_statuses_only: 이 일감유형에서 사용되는 상태만 보여주기 label_display_used_statuses_only: 이 일감유형에서 사용되는 상태만 보여주기
label_revision_id: Revision {{value}} label_revision_id: 개정판 {{value}}
label_api_access_key: API access key label_api_access_key: API 접근키
label_api_access_key_created_on: API access key created {{value}} ago label_api_access_key_created_on: API 접근키가 {{value}} 전에 생성되었습니다.
label_feeds_access_key: RSS access key label_feeds_access_key: RSS 접근키
notice_api_access_key_reseted: Your API access key was reset. notice_api_access_key_reseted: API 접근키가 초기화되었습니다.
setting_rest_api_enabled: Enable REST web service setting_rest_api_enabled: REST 웹서비스 활성화
label_missing_api_access_key: Missing an API access key label_missing_api_access_key: API 접근키가 없습니다.
label_missing_feeds_access_key: Missing a RSS access key label_missing_feeds_access_key: RSS 접근키가 없습니다.
button_show: Show button_show: 보기
text_line_separated: Multiple values allowed (one line for each value). text_line_separated: 여러 값이 허용됨(값 마다 한 줄씩)
setting_mail_handler_body_delimiters: Truncate emails after one of these lines setting_mail_handler_body_delimiters: 메일 본문 구분자
permission_add_subprojects: Create subprojects permission_add_subprojects: 하위 프로젝트 만들기
label_subproject_new: New subproject label_subproject_new: 새 하위 프로젝트
text_own_membership_delete_confirmation: |-
권한들 일부 또는 전부를 막 삭제하려고 하고 있습니다. 그렇게 되면 이 프로젝트를 더이상 수정할 수 없게 됩니다.
계속하시겠습니까?
label_close_versions: 완료된 버전 닫기
label_board_sticky: Sticky
label_board_locked: Locked
permission_export_wiki_pages: Export wiki pages
setting_cache_formatted_text: Cache formatted text
permission_manage_project_activities: Manage project activities
label_project_copy_notifications: Send email notifications during the project copy
+13
View File
@@ -69,6 +69,9 @@ lt:
over_x_years: over_x_years:
one: "virš 1 metų" one: "virš 1 metų"
other: "virš {{count}} metų" other: "virš {{count}} metų"
almost_x_years:
one: "almost 1 year"
other: "almost {{count}} years"
prompts: prompts:
year: "Metai" year: "Metai"
month: "Mėnuo" month: "Mėnuo"
@@ -943,3 +946,13 @@ lt:
setting_mail_handler_body_delimiters: Truncate emails after one of these lines setting_mail_handler_body_delimiters: Truncate emails after one of these lines
permission_add_subprojects: Create subprojects permission_add_subprojects: Create subprojects
label_subproject_new: New subproject label_subproject_new: New subproject
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.
Are you sure you want to continue?
label_close_versions: Close completed versions
label_board_sticky: Sticky
label_board_locked: Locked
permission_export_wiki_pages: Export wiki pages
setting_cache_formatted_text: Cache formatted text
permission_manage_project_activities: Manage project activities
label_project_copy_notifications: Send email notifications during the project copy
+13
View File
@@ -59,6 +59,9 @@ nl:
over_x_years: over_x_years:
one: "over 1 jaar" one: "over 1 jaar"
other: "over {{count}} jaren" other: "over {{count}} jaren"
almost_x_years:
one: "almost 1 year"
other: "almost {{count}} years"
number: number:
human: human:
@@ -857,3 +860,13 @@ nl:
setting_mail_handler_body_delimiters: Truncate emails after one of these lines setting_mail_handler_body_delimiters: Truncate emails after one of these lines
permission_add_subprojects: Create subprojects permission_add_subprojects: Create subprojects
label_subproject_new: New subproject label_subproject_new: New subproject
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.
Are you sure you want to continue?
label_close_versions: Close completed versions
label_board_sticky: Sticky
label_board_locked: Locked
permission_export_wiki_pages: Export wiki pages
setting_cache_formatted_text: Cache formatted text
permission_manage_project_activities: Manage project activities
label_project_copy_notifications: Send email notifications during the project copy
+13
View File
@@ -54,6 +54,9 @@
over_x_years: over_x_years:
one: "over 1 år" one: "over 1 år"
other: "over {{count}} år" other: "over {{count}} år"
almost_x_years:
one: "almost 1 year"
other: "almost {{count}} years"
number: number:
format: format:
precision: 2 precision: 2
@@ -870,3 +873,13 @@
setting_mail_handler_body_delimiters: Truncate emails after one of these lines setting_mail_handler_body_delimiters: Truncate emails after one of these lines
permission_add_subprojects: Create subprojects permission_add_subprojects: Create subprojects
label_subproject_new: New subproject label_subproject_new: New subproject
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.
Are you sure you want to continue?
label_close_versions: Close completed versions
label_board_sticky: Sticky
label_board_locked: Locked
permission_export_wiki_pages: Export wiki pages
setting_cache_formatted_text: Cache formatted text
permission_manage_project_activities: Manage project activities
label_project_copy_notifications: Send email notifications during the project copy
+61 -46
View File
@@ -1,5 +1,6 @@
# Polish translations for Ruby on Rails # Polish translations for Ruby on Rails
# by Jacek Becela (jacek.becela@gmail.com, http://github.com/ncr) # by Jacek Becela (jacek.becela@gmail.com, http://github.com/ncr)
# by Krzysztof Podejma (kpodejma@customprojects.pl, http://www.customprojects.pl)
pl: pl:
number: number:
@@ -93,6 +94,9 @@ pl:
one: "ponad rok" one: "ponad rok"
few: "ponad {{count}} lata" few: "ponad {{count}} lata"
other: "ponad {{count}} lat" other: "ponad {{count}} lat"
almost_x_years:
one: "almost 1 year"
other: "almost {{count}} years"
activerecord: activerecord:
errors: errors:
@@ -837,7 +841,7 @@ pl:
label_wiki_content_updated: Uaktualniono stronę wiki label_wiki_content_updated: Uaktualniono stronę wiki
mail_body_wiki_content_updated: Strona wiki '{{page}}' została uaktualniona przez {{author}}. mail_body_wiki_content_updated: Strona wiki '{{page}}' została uaktualniona przez {{author}}.
permission_add_project: Tworzenie projektu permission_add_project: Tworzenie projektu
setting_new_project_user_role_id: Role given to a non-admin user who creates a project setting_new_project_user_role_id: Rola nadawana twórcom projektów, którzy nie posiadają uprawnień administatora
label_view_all_revisions: Pokaż wszystkie rewizje label_view_all_revisions: Pokaż wszystkie rewizje
label_tag: Tag label_tag: Tag
label_branch: Gałąź label_branch: Gałąź
@@ -853,48 +857,59 @@ pl:
text_journal_added: "Dodano {{label}} {{value}}" text_journal_added: "Dodano {{label}} {{value}}"
field_active: Aktywne field_active: Aktywne
enumeration_system_activity: Aktywność Systemowa enumeration_system_activity: Aktywność Systemowa
permission_delete_issue_watchers: Delete watchers button_copy_and_follow: Kopiuj i przejdź do kopii zagadnienia
version_status_closed: closed button_duplicate: Duplikuj
version_status_locked: locked button_move_and_follow: Przenieś i przejdź do zagadnienia
version_status_open: open button_show: Pokaż
error_can_not_reopen_issue_on_closed_version: An issue assigned to a closed version can not be reopened error_can_not_archive_project: Ten projekt nie może zostać zarchiwizowany
label_user_anonymous: Anonymous error_can_not_reopen_issue_on_closed_version: Zagadnienie przydzielone do zakończonej wersji nie może zostać ponownie otwarte
button_move_and_follow: Move and follow error_issue_done_ratios_not_updated: % wykonania zagadnienia nie został uaktualniony.
setting_default_projects_modules: Default enabled modules for new projects error_workflow_copy_source: Proszę wybrać źródłowy typ zagadnienia lub rolę
setting_gravatar_default: Default Gravatar image error_workflow_copy_target: Proszę wybrać docelowe typ(y) zagadnień i rolę(e)
field_sharing: Sharing field_sharing: Współdzielenie
label_version_sharing_hierarchy: With project hierarchy label_api_access_key: Klucz dostępu do API
label_version_sharing_system: With all projects label_api_access_key_created_on: Klucz dostępu do API został utworzony {{value}} temu
label_version_sharing_descendants: With subprojects label_close_versions: Zamknij ukończone wersje
label_version_sharing_tree: With project tree label_copy_same_as_target: Jak cel
label_version_sharing_none: Not shared label_copy_source: Źródło
error_can_not_archive_project: This project can not be archived label_copy_target: Cel
button_duplicate: Duplicate label_display_used_statuses_only: Wyświetlaj tylko statusy używane przez ten typ zagadnienia
button_copy_and_follow: Copy and follow label_feeds_access_key: Klucz dostępu do RSS
label_copy_source: Source label_missing_api_access_key: Brakuje klucza dostępu do API
setting_issue_done_ratio: Calculate the issue done ratio with label_missing_feeds_access_key: Brakuje klucza dostępu do RSS
setting_issue_done_ratio_issue_status: Use the issue status label_revision_id: Rewizja {{value}}
error_issue_done_ratios_not_updated: Issue done ratios not updated. label_subproject_new: Nowy podprojekt
error_workflow_copy_target: Please select target tracker(s) and role(s) label_update_issue_done_ratios: Uaktualnij % wykonania
setting_issue_done_ratio_issue_field: Use the issue field label_user_anonymous: Anonimowy
label_copy_same_as_target: Same as target label_version_sharing_descendants: Z podprojektami
label_copy_target: Target label_version_sharing_hierarchy: Z hierarchią projektów
notice_issue_done_ratios_updated: Issue done ratios updated. label_version_sharing_none: Brak współdzielenia
error_workflow_copy_source: Please select a source tracker or role label_version_sharing_system: Ze wszystkimi projektami
label_update_issue_done_ratios: Update issue done ratios label_version_sharing_tree: Z drzewem projektów
setting_start_of_week: Start calendars on notice_api_access_key_reseted: Twój klucz dostępu do API został zresetowany.
permission_view_issues: View Issues notice_issue_done_ratios_updated: Uaktualnienie % wykonania zakończone sukcesem.
label_display_used_statuses_only: Only display statuses that are used by this tracker permission_add_subprojects: Tworzenie podprojektów
label_revision_id: Revision {{value}} permission_delete_issue_watchers: Usuń obserwatorów
label_api_access_key: API access key permission_view_issues: Przeglądanie zagadnień
label_api_access_key_created_on: API access key created {{value}} ago setting_default_projects_modules: Domyślnie włączone moduły dla nowo tworzonych projektów
label_feeds_access_key: RSS access key setting_gravatar_default: Domyślny obraz Gravatar
notice_api_access_key_reseted: Your API access key was reset. setting_issue_done_ratio: Obliczaj postęp realizacji zagadnień za pomocą
setting_rest_api_enabled: Enable REST web service setting_issue_done_ratio_issue_field: % Wykonania zagadnienia
label_missing_api_access_key: Missing an API access key setting_issue_done_ratio_issue_status: Statusu zagadnienia
label_missing_feeds_access_key: Missing a RSS access key setting_mail_handler_body_delimiters: Przycinaj e-maile po jednej z tych linii
button_show: Show setting_rest_api_enabled: Uaktywnij usługę sieciową REST
text_line_separated: Multiple values allowed (one line for each value). setting_start_of_week: Pierwszy dzień tygodnia
setting_mail_handler_body_delimiters: Truncate emails after one of these lines text_line_separated: Dozwolone jest wiele wartości (każda wartość w osobnej linii).
permission_add_subprojects: Create subprojects text_own_membership_delete_confirmation: |-
label_subproject_new: New subproject Masz zamiar usunąć niektóre lub wszystkie swoje uprawnienia. Po wykonaniu tej czynności możesz utracić możliwości edycji tego projektu.
Czy na pewno chcesz kontynuować?
version_status_closed: zamknięta
version_status_locked: zablokowana
version_status_open: otwarta
label_board_sticky: Przyklejona
label_board_locked: Zamknięta
permission_export_wiki_pages: Eksport stron wiki
permission_manage_project_activities: Zarządzanie aktywnościami projektu
setting_cache_formatted_text: Cache formatted text
label_project_copy_notifications: Send email notifications during the project copy

Some files were not shown because too many files have changed in this diff Show More