Compare commits

...

82 Commits
1.3.1 ... 1.2.1

Author SHA1 Message Date
Jean-Philippe Lang
82b5285c2d tagged version 1.2.1
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/tags/1.2.1@6262 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-07-11 11:45:47 +00:00
Jean-Philippe Lang
f5a6b0cf93 Updates for 1.2.1 release.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6261 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-07-11 11:45:14 +00:00
Toshi MARUYAMA
3cf0bd713d Merged r6247 from trunk.
scm: mercurial: add functional test of destroying invalid repository.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6255 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-07-11 02:08:47 +00:00
Toshi MARUYAMA
36bce52f63 Merged r6246 from trunk.
scm: mercurial: do nothing in fetching if info is nil.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6254 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-07-11 02:08:23 +00:00
Toshi MARUYAMA
94f5c73746 Merged r6245 from trunk.
scm: mercurial: catch exception and return nil during getting info.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6253 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-07-11 02:08:03 +00:00
Toshi MARUYAMA
8b6fd63a59 Merged r6243 from trunk.
scm: mercurial: add functional test of destroying valid repository.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6252 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-07-11 02:07:44 +00:00
Toshi MARUYAMA
ba6b822e97 Merged r6242 from trunk.
scm: mercurial: add instance variable @project at functional test.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6251 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-07-11 02:07:19 +00:00
Toshi MARUYAMA
b44044a76a Merge(backport) r6130 from trunk (#8777).
scm: return nil at model default_branch and override at git model.

Redmine Git and Mercurial adapter support *branches*.
Mercurial default branch is *dafault*.
But, it is popular to show all revisions on the top page for Mercurial GUI.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6244 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-07-11 00:24:22 +00:00
Jean-Philippe Lang
eb3a4587c9 Merged r6208 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6209 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-07-09 18:49:13 +00:00
Jean-Philippe Lang
a8550ba8a6 Merged r6206 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6207 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-07-09 12:01:56 +00:00
Jean-Philippe Lang
0527e8cedf Merged r6203 and r6204 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6205 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-07-09 11:42:12 +00:00
Jean-Philippe Lang
2a799e8367 Merged r6201 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6202 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-07-09 11:26:35 +00:00
Jean-Philippe Lang
3e9ad22fad Merged r6199 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6200 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-07-09 10:51:57 +00:00
Jean-Philippe Lang
a5bcdf6d2c Backported r6197 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6198 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-07-09 09:11:13 +00:00
Jean-Philippe Lang
3dcd5d746a Merged r6187 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6188 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-07-06 19:06:03 +00:00
Jean-Philippe Lang
971aa889f9 Merged r6163, r6171, r6172, r6174 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6175 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-07-03 15:58:02 +00:00
Jean-Philippe Lang
cdc1dfb1e7 Merged r6170 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6173 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-07-03 15:37:01 +00:00
Jean-Philippe Lang
30255b8054 Merged r6073 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6162 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-07-03 10:18:18 +00:00
Jean-Philippe Lang
97b697a678 Merged r6126 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6161 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-07-02 17:43:08 +00:00
Jean-Philippe Lang
8e87cd6f77 Merged r6147 and r6149 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6160 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-07-02 17:29:54 +00:00
Jean-Philippe Lang
65bee7efa3 Merged r6148 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6159 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-07-02 17:28:33 +00:00
Jean-Philippe Lang
2325831d81 Merged r5991 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6158 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-07-02 17:28:00 +00:00
Jean-Philippe Lang
c7f8ea6a37 Merged r5969 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6157 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-07-02 17:25:51 +00:00
Toshi MARUYAMA
edc4f6d54b PDF: add dummy 'fill' parameter at rfpdf CJK Write method (#8737).
'fill' parameter is already added in trunk by r6131, r6132, r6133.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6156 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-07-02 15:44:02 +00:00
Toshi MARUYAMA
bf0046b5af PDF: fix ArgumentError MultiCell() in CJK (#8737).
add dummy ln parameter at rfpdf CJK MultiCell method.
ln parameter has already added in trunk by r6131, r6132, r6133.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6155 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-07-02 14:59:30 +00:00
Toshi MARUYAMA
3de4afe53a Merged r6146 from trunk.
PDF: add revision number/id of associated revisions on issue PDF.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6153 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-07-02 13:15:54 +00:00
Toshi MARUYAMA
d15912eb6a Merge(backport) r6136 from trunk (#8737).
PDF: use RDMMultiCell for drawing lines of issue description.

Contributed by Jun NAITOH.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6145 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-07-02 04:48:07 +00:00
Toshi MARUYAMA
656e651c33 Merge(backport) r6135 from trunk (#8737).
PDF: add 'ln' parameter for drawing lines at RDMMultiCell().

Contributed by Jun NAITOH.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6144 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-07-02 04:47:27 +00:00
Toshi MARUYAMA
9543e0a103 Merged r6138 from trunk.
PDF: code clean up lib/redmine/export/pdf.rb.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6143 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-07-02 04:46:47 +00:00
Toshi MARUYAMA
441f2f216f Merged r6139 from trunk.
Swedish translation updated by Nicklas Holm.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6140 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-07-01 09:02:37 +00:00
Toshi MARUYAMA
15228c9958 Merged r6127 from trunk.
Escape AuthSources in the list.

Contributed by MAEDA, Go

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6128 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-06-27 23:19:41 +00:00
Jean-Baptiste Barth
5f33a09320 Merged r6124 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6125 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-06-26 12:51:09 +00:00
Jean-Baptiste Barth
7d77c3544a Merged r6098 from trunk.
Added Project#enable_module! and Project#disable_module!

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6106 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-06-21 03:35:36 +00:00
Jean-Baptiste Barth
102c9afadf Revert r6104 "Merged r6098 from trunk."
I messed things up with a cherry-pick on master, I'll re-apply it after.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6105 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-06-21 03:16:49 +00:00
Jean-Baptiste Barth
16ba6bcb77 Merged r6098 from trunk.
Added Project#enable_module! and Project#disable_module!

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6104 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-06-20 19:39:59 +00:00
Toshi MARUYAMA
df37e5cfab Merged r6101 from trunk.
Russian translation update by SERGEY ERSHOV.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6102 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-06-20 08:54:23 +00:00
Jean-Baptiste Barth
f58b86bbb8 Merged r6099 from trunk.
Added a test to ensure 'Project' column can be removed on issues list

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6100 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-06-20 01:32:18 +00:00
Toshi MARUYAMA
95f68ba6d9 Merged r6096 from trunk.
pt-BR translation update by Enderson Maia.

Better translation to keep a pattern in translations.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6097 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-06-18 10:17:16 +00:00
Toshi MARUYAMA
171c4b2747 Merged r6094 from trunk.
German translation updated by Jens Martsch.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6095 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-06-17 07:13:51 +00:00
Toshi MARUYAMA
860a6ce78d Merged r6068 from trunk.
pt-BR translation update by Rodrigo Rosenfeld Rosas.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6069 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-06-11 21:15:05 +00:00
Toshi MARUYAMA
26d42c26fa Merged r6064 from trunk.
translate field_path_to_repository in pt-BR.yml.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6067 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-06-11 01:34:32 +00:00
Toshi MARUYAMA
c69c434609 Merged r6063 from trunk.
pt-BR translation update by Rodrigo Rosenfeld Rosas.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6066 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-06-11 01:33:51 +00:00
Toshi MARUYAMA
9381d30ae8 Merged r6062 from trunk.
pt-BR translation update by Enderson Maia.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6065 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-06-11 01:33:07 +00:00
Toshi MARUYAMA
136bf86307 Merged r6042 from trunk.
scm: mercurial: fix unit adapter annotate test fails on Windows Mercurial 1.8.4+29-e597ef52a7c2.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6046 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-06-10 08:33:23 +00:00
Toshi MARUYAMA
07f42c53d0 Merged r6041 from trunk.
scm: mercurial: add functional test of annotate file which does not exist in *tip* is not found.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6045 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-06-10 08:32:42 +00:00
Toshi MARUYAMA
22e143f0b3 Merged r6035 from trunk.
PDF: use DejaVuSans fonts in Vietnamese.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6037 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-06-10 02:15:47 +00:00
Toshi MARUYAMA
1701de9123 Merged r6034 from trunk.
PDF: back out r6018.

change Vietnamese vi.yml general_pdf_encoding from CP1258 to UTF-8.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6036 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-06-10 02:15:30 +00:00
Toshi MARUYAMA
0ce6793181 Merged r6031 from trunk.
PDF: fix font name in vendor/plugins/rfpdf/lib/fonts/dejavusansi.rb.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6033 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-06-09 23:51:42 +00:00
Toshi MARUYAMA
bacc44feab Merged r6030 from trunk.
PDF: Import DejaVu fonts.

http://rfpdf.googlecode.com/files/DejaVu.zip
Sep. 2007
fils size 3,685,721
md5sum: 54274d105b74f817d649035fc1541d8a

rename files.
* DejaVuSans.rb  to dejavusans.rb
* DejaVuSansb.rb to dejavusansb.rb
* DejaVuSansi.rb to dejavusansi.rb

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6032 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-06-09 23:44:34 +00:00
Toshi MARUYAMA
4f9a1cd614 Merged r6028 from trunk.
Spanish translation updated by Jorge López.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6029 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-06-09 08:06:24 +00:00
Toshi MARUYAMA
44ed963a46 Merged r6024 from trunk.
PDF: replace all non ASCII characters to '?' if Iconv error raise in JRuby.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6027 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-06-09 05:29:23 +00:00
Toshi MARUYAMA
113316cf1e Merged r6023 from trunk.
PDF: use SJIS instead of CP932 at unit pdf test test_rdm_pdf_iconv_invalid_utf8_should_be_replaced_ja in JRuby.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6026 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-06-09 03:51:23 +00:00
Toshi MARUYAMA
17ed97d580 Merged r6022 from trunk.
PDF: use SJIS instead of CP932 at unit pdf test test_rdm_pdf_iconv_cannot_convert_ja_cp932 in JRuby.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6025 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-06-09 03:50:35 +00:00
Toshi MARUYAMA
19c52bc671 Merged r6018 from trunk.
PDF: change Vietnamese vi.yml general_pdf_encoding from UTF-8 to CP1258.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6019 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-06-09 00:04:11 +00:00
Toshi MARUYAMA
d15de8ee12 Merged r6013 from trunk.
PDF: use SJIS instead of CP932 at unit pdf test_fix_text_encoding_nil in JRuby.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6017 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-06-08 23:53:42 +00:00
Toshi MARUYAMA
006c82267e Merged r6012 from trunk.
PDF: change Shift_JIS to SHIFT_JIS in lib/redmine/export/pdf.rb for Japanese ja.yml general_pdf_encoding.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6016 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-06-08 23:53:24 +00:00
Toshi MARUYAMA
887e7c6781 Merged r6011 from trunk.
PDF: add Japanese comment of ja.yml general_pdf_encoding *CP932* and *SJIS* in JRuby and CRuby (#8565, #61).

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6015 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-06-08 23:53:03 +00:00
Toshi MARUYAMA
6280d9e9b2 Merged r6010 from trunk.
PDF: add *SJIS* and *Shift_JIS* in lib/redmine/export/pdf.rb for Japanese ja.yml general_pdf_encoding.

JRuby 1.6.2 (ruby-1.8.7-p330) does not support CP932.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6014 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-06-08 23:52:43 +00:00
Toshi MARUYAMA
3996d5f42e Merged r6007 from trunk.
scm: add log message of config/configuration.yml if scm command raise Errno::ENOENT exception.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6009 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-06-08 13:24:38 +00:00
Toshi MARUYAMA
579abc1802 Merged r6006 from trunk.
scm: code clean up abstract adapter.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6008 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-06-08 13:23:56 +00:00
Toshi MARUYAMA
dc2efa503a Merged r5999 from trunk.
scm: catch all exceptions to get scm command version in repository model.

If scm command does not exist,
Linux jruby 1.6.2 (ruby-1.8.7-p330) raises java.io.IOException in production environment.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6000 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-06-03 11:41:34 +00:00
Toshi MARUYAMA
0e6cdeb860 Merged r5992 and r5997 from trunk.
Turkish translation updated by Burak Yiğit Kaya.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@5998 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-06-02 08:26:02 +00:00
Toshi MARUYAMA
3b9ef033bf Backout r5994 Turkish translations.
Tests on CI server fails.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@5996 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-06-02 06:29:15 +00:00
Toshi MARUYAMA
2ae54a0fc1 Merged r5993 from trunk.
change Turkish general_csv_encoding from ISO-8859-1 to ISO-8859-9 by Burak Yiğit Kaya.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@5995 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-06-01 22:55:23 +00:00
Toshi MARUYAMA
a87e6e1265 Merged r5992 from trunk.
Turkish translation updated by Burak Yiğit Kaya.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@5994 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-06-01 22:54:58 +00:00
Toshi MARUYAMA
61b1146f9d Merged r5986 from trunk.
German translation updated by Jens Martsch.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@5987 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-06-01 08:09:23 +00:00
Toshi MARUYAMA
c509c744fd Merged r5970 from trunk.
Traditional Chinese translation updated by ChunChang Lo.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@5971 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-05-31 03:48:27 +00:00
Jean-Philippe Lang
1be21f2413 Merged r5965 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@5967 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-05-30 16:40:52 +00:00
Jean-Philippe Lang
eaf430b630 Merged r5964 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@5966 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-05-30 16:40:17 +00:00
Toshi MARUYAMA
d2789248f7 Merged r5962 from trunk.
Bulgarian translation updated by Ivan Cenov.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@5963 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-05-29 14:54:06 +00:00
Jean-Philippe Lang
f08f09a9d3 Merged r5950 to r5960 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@5961 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-05-29 12:06:05 +00:00
Toshi MARUYAMA
2c2760d041 Merged r5887 from trunk.
scm: replace a tab to two spaces in app/views/settings/_repositories.rhtml.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@5959 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-05-29 11:32:16 +00:00
Toshi MARUYAMA
218e2f32ee Merged r5886 from trunk.
scm: remove trailing white-spaces from app/views/settings/_repositories.rhtml.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@5958 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-05-29 11:31:48 +00:00
Jean-Philippe Lang
f2b01aeb4d Merged r5948 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@5949 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-05-29 08:15:18 +00:00
Jean-Philippe Lang
fabf54a368 Merged r5944 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@5947 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-05-29 07:47:25 +00:00
Jean-Philippe Lang
6b07f86883 Merged r5881 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@5946 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-05-29 07:24:15 +00:00
Jean-Philippe Lang
36d2ea9a6c Merged r5880 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@5945 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-05-29 07:18:05 +00:00
Toshi MARUYAMA
2dca48be53 Merged r5940 from trunk.
remove trailing white-spaces from rake redmine:email:test task source.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@5943 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-05-28 03:34:47 +00:00
Toshi MARUYAMA
7678aa9445 Merged r5939 from trunk.
handle a nil user in rake redmine:email:test task.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@5942 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-05-28 03:34:23 +00:00
Toshi MARUYAMA
9c355ee6c3 Merged r5938 from trunk.
use rake task parameter style message if redmine:email:test parameter is blank.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@5941 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-05-28 03:33:55 +00:00
Jean-Philippe Lang
723030e40a Set version to stable.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@5879 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-05-22 09:20:14 +00:00
Jean-Philippe Lang
e6ed112d9d 1.2-stable branch added.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@5878 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-05-22 09:17:45 +00:00
183 changed files with 5540 additions and 724 deletions

View File

@@ -1,7 +1,24 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class ActivitiesController < ApplicationController
menu_item :activity
before_filter :find_optional_project
accept_key_auth :index
accept_rss_auth :index
def index
@days = Setting.activity_days_default.to_i

View File

@@ -18,6 +18,8 @@
require 'uri'
require 'cgi'
class Unauthorized < Exception; end
class ApplicationController < ActionController::Base
include Redmine::I18n
@@ -41,6 +43,7 @@ class ApplicationController < ActionController::Base
protect_from_forgery
rescue_from ActionController::InvalidAuthenticityToken, :with => :invalid_authenticity_token
rescue_from ::Unauthorized, :with => :deny_access
include Redmine::Search::Controller
include Redmine::MenuManager::MenuController
@@ -68,11 +71,11 @@ class ApplicationController < ActionController::Base
user = User.try_to_autologin(cookies[:autologin])
session[:user_id] = user.id if user
user
elsif params[:format] == 'atom' && params[:key] && accept_key_auth_actions.include?(params[:action])
elsif params[:format] == 'atom' && params[:key] && request.get? && accept_rss_auth?
# RSS key authentication does not start a session
User.find_by_rss_key(params[:key])
elsif Setting.rest_api_enabled? && api_request?
if (key = api_key_from_request) && accept_key_auth_actions.include?(params[:action])
elsif Setting.rest_api_enabled? && accept_api_auth?
if (key = api_key_from_request)
# Use API key
User.find_by_api_key(key)
else
@@ -329,14 +332,41 @@ class ApplicationController < ActionController::Base
@title = options[:title] || Setting.app_title
render :template => "common/feed.atom.rxml", :layout => false, :content_type => 'application/atom+xml'
end
# TODO: remove in Redmine 1.4
def self.accept_key_auth(*actions)
actions = actions.flatten.map(&:to_s)
write_inheritable_attribute('accept_key_auth_actions', actions)
ActiveSupport::Deprecation.warn "ApplicationController.accept_key_auth is deprecated and will be removed in Redmine 1.4. Use accept_rss_auth (or accept_api_auth) instead."
accept_rss_auth(*actions)
end
# TODO: remove in Redmine 1.4
def accept_key_auth_actions
self.class.read_inheritable_attribute('accept_key_auth_actions') || []
ActiveSupport::Deprecation.warn "ApplicationController.accept_key_auth_actions is deprecated and will be removed in Redmine 1.4. Use accept_rss_auth (or accept_api_auth) instead."
self.class.accept_rss_auth
end
def self.accept_rss_auth(*actions)
if actions.any?
write_inheritable_attribute('accept_rss_auth_actions', actions)
else
read_inheritable_attribute('accept_rss_auth_actions') || []
end
end
def accept_rss_auth?(action=action_name)
self.class.accept_rss_auth.include?(action.to_sym)
end
def self.accept_api_auth(*actions)
if actions.any?
write_inheritable_attribute('accept_api_auth_actions', actions)
else
read_inheritable_attribute('accept_api_auth_actions') || []
end
end
def accept_api_auth?(action=action_name)
self.class.accept_api_auth.include?(action.to_sym)
end
# Returns the number of objects that should be displayed

View File

@@ -1,5 +1,5 @@
# redMine - project management software
# Copyright (C) 2006-2007 Jean-Philippe Lang
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -18,7 +18,7 @@
class BoardsController < ApplicationController
default_search_scope :messages
before_filter :find_project, :find_board_if_available, :authorize
accept_key_auth :index, :show
accept_rss_auth :index, :show
helper :messages
include MessagesHelper

View File

@@ -1,4 +1,4 @@
# redMine - project management software
# Redmine - project management software
# Copyright (C) 2006-2007 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or

View File

@@ -27,7 +27,8 @@ class IssuesController < ApplicationController
before_filter :find_optional_project, :only => [:index]
before_filter :check_for_default_issue_status, :only => [:new, :create]
before_filter :build_new_issue_from_params, :only => [:new, :create]
accept_key_auth :index, :show, :create, :update, :destroy
accept_rss_auth :index, :show
accept_api_auth :index, :show, :create, :update, :destroy
rescue_from Query::StatementInvalid, :with => :query_statement_invalid
@@ -301,6 +302,7 @@ private
end
@issue.project = @project
@issue.author = User.current
# Tracker must be set before custom field values
@issue.tracker ||= @project.trackers.find((params[:issue] && params[:issue][:tracker_id]) || params[:tracker_id] || :first)
if @issue.tracker.nil?
@@ -314,7 +316,6 @@ private
@issue.watcher_user_ids = params[:issue]['watcher_user_ids']
end
end
@issue.author = User.current
@priorities = IssuePriority.all
@allowed_statuses = @issue.new_statuses_allowed_to(User.current, true)
end

View File

@@ -20,7 +20,7 @@ class JournalsController < ApplicationController
before_filter :find_issue, :only => [:new]
before_filter :find_optional_project, :only => [:index]
before_filter :authorize, :only => [:new, :edit, :diff]
accept_key_auth :index
accept_rss_auth :index
menu_item :issues
helper :issues

View File

@@ -23,7 +23,8 @@ class NewsController < ApplicationController
before_filter :find_project, :only => [:new, :create]
before_filter :authorize, :except => [:index]
before_filter :find_optional_project, :only => :index
accept_key_auth :index
accept_rss_auth :index
accept_api_auth :index
helper :watchers

View File

@@ -24,7 +24,8 @@ class ProjectsController < ApplicationController
before_filter :authorize, :except => [ :index, :list, :new, :create, :copy, :archive, :unarchive, :destroy]
before_filter :authorize_global, :only => [:new, :create]
before_filter :require_admin, :only => [ :copy, :archive, :unarchive, :destroy ]
accept_key_auth :index, :show, :create, :update, :destroy
accept_rss_auth :index
accept_api_auth :index, :show, :create, :update, :destroy
after_filter :only => [:create, :edit, :update, :archive, :unarchive, :destroy] do |controller|
if controller.request.post?

View File

@@ -30,7 +30,7 @@ class RepositoriesController < ApplicationController
before_filter :find_repository, :except => :edit
before_filter :find_project, :only => :edit
before_filter :authorize
accept_key_auth :revisions
accept_rss_auth :revisions
rescue_from Redmine::Scm::Adapters::CommandFailed, :with => :show_error_command_failed
@@ -208,7 +208,7 @@ class RepositoriesController < ApplicationController
User.current.preference.save
end
@cache_key = "repositories/diff/#{@repository.id}/" +
Digest::MD5.hexdigest("#{@path}-#{@rev}-#{@rev_to}-#{@diff_type}")
Digest::MD5.hexdigest("#{@path}-#{@rev}-#{@rev_to}-#{@diff_type}-#{current_language}")
unless read_fragment(@cache_key)
@diff = @repository.diff(@path, @rev, @rev_to)
show_error_not_found unless @diff

View File

@@ -1,5 +1,5 @@
# redMine - project management software
# Copyright (C) 2006 Jean-Philippe Lang
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -24,8 +24,8 @@ class SearchController < ApplicationController
def index
@question = params[:q] || ""
@question.strip!
@all_words = params[:all_words] || (params[:submit] ? false : true)
@titles_only = !params[:titles_only].nil?
@all_words = params[:all_words] ? params[:all_words].present? : true
@titles_only = params[:titles_only] ? params[:titles_only].present? : false
projects_to_search =
case params[:scope]

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2010 Jean-Philippe Lang
# Copyright (C) 2006-2011 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -22,7 +22,8 @@ class TimelogController < ApplicationController
before_filter :find_time_entries, :only => [:bulk_edit, :bulk_update, :destroy]
before_filter :authorize, :except => [:index]
before_filter :find_optional_project, :only => [:index]
accept_key_auth :index, :show, :create, :update, :destroy
accept_rss_auth :index
accept_api_auth :index, :show, :create, :update, :destroy
helper :sort
include SortHelper
@@ -67,13 +68,13 @@ class TimelogController < ApplicationController
}
format.api {
@entry_count = TimeEntry.visible.count(:include => [:project, :issue], :conditions => cond.conditions)
@entry_pages = Paginator.new self, @entry_count, per_page_option, params['page']
@offset, @limit = api_offset_and_limit
@entries = TimeEntry.visible.find(:all,
:include => [:project, :activity, :user, {:issue => :tracker}],
:conditions => cond.conditions,
:order => sort_clause,
:limit => @entry_pages.items_per_page,
:offset => @entry_pages.current.offset)
:limit => @limit,
:offset => @offset)
}
format.atom {
entries = TimeEntry.visible.find(:all,

View File

@@ -20,7 +20,7 @@ class UsersController < ApplicationController
before_filter :require_admin, :except => :show
before_filter :find_user, :only => [:show, :edit, :update, :destroy, :edit_membership, :destroy_membership]
accept_key_auth :index, :show, :create, :update, :destroy
accept_api_auth :index, :show, :create, :update, :destroy
helper :sort
include SortHelper

View File

@@ -70,6 +70,7 @@ module QueriesHelper
cond = "project_id IS NULL"
cond << " OR project_id = #{@project.id}" if @project
@query = Query.find(params[:query_id], :conditions => cond)
raise ::Unauthorized unless @query.visible?
@query.project = @project
session[:query] = {:id => @query.id, :project_id => @query.project_id}
sort_clear

View File

@@ -1,5 +1,5 @@
# redMine - project management software
# Copyright (C) 2006-2007 Jean-Philippe Lang
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -57,7 +57,7 @@ module SearchHelper
c = results_by_type[t]
next if c == 0
text = "#{type_label(t)} (#{c})"
links << link_to(text, :q => params[:q], :titles_only => params[:title_only], :all_words => params[:all_words], :scope => params[:scope], t => 1)
links << link_to(text, :q => params[:q], :titles_only => params[:titles_only], :all_words => params[:all_words], :scope => params[:scope], t => 1)
end
('<ul>' + links.map {|link| content_tag('li', link)}.join(' ') + '</ul>') unless links.empty?
end

View File

@@ -33,7 +33,9 @@ module SettingsHelper
choices = [[blank_text.is_a?(Symbol) ? l(blank_text) : blank_text, '']] + choices
end
setting_label(setting, options) +
select_tag("settings[#{setting}]", options_for_select(choices, Setting.send(setting).to_s), options)
select_tag("settings[#{setting}]",
options_for_select(choices, Setting.send(setting).to_s),
options)
end
def setting_multiselect(setting, choices, options={})
@@ -44,10 +46,15 @@ module SettingsHelper
hidden_field_tag("settings[#{setting}][]", '') +
choices.collect do |choice|
text, value = (choice.is_a?(Array) ? choice : [choice, choice])
content_tag('label',
check_box_tag("settings[#{setting}][]", value, Setting.send(setting).include?(value)) + text.to_s,
content_tag(
'label',
check_box_tag(
"settings[#{setting}][]",
value,
Setting.send(setting).include?(value)
) + text.to_s,
:class => 'block'
)
)
end.join
end
@@ -64,7 +71,7 @@ module SettingsHelper
def setting_check_box(setting, options={})
setting_label(setting, options) +
hidden_field_tag("settings[#{setting}]", 0) +
check_box_tag("settings[#{setting}]", 1, Setting.send("#{setting}?"), options)
check_box_tag("settings[#{setting}]", 1, Setting.send("#{setting}?"), options)
end
def setting_label(setting, options={})

View File

@@ -32,6 +32,7 @@ class Enumeration < ActiveRecord::Base
named_scope :shared, :conditions => { :project_id => nil }
named_scope :active, :conditions => { :active => true }
named_scope :named, lambda {|arg| { :conditions => ["LOWER(#{table_name}.name) = LOWER(?)", arg.to_s.strip]}}
def self.default
# Creates a fake default scope so Enumeration.default will check

View File

@@ -227,6 +227,13 @@ class Issue < ActiveRecord::Base
@custom_field_values = nil
result
end
def description=(arg)
if arg.is_a?(String)
arg = arg.gsub(/(\r\n|\n|\r)/, "\r\n")
end
write_attribute(:description, arg)
end
# Overrides attributes= so that tracker_id gets assigned first
def attributes_with_tracker_first=(new_attributes, *args)
@@ -870,10 +877,13 @@ class Issue < ActiveRecord::Base
if @current_journal
# attributes changes
(Issue.column_names - %w(id root_id lft rgt lock_version created_on updated_on)).each {|c|
before = @issue_before_change.send(c)
after = send(c)
next if before == after || (before.blank? && after.blank?)
@current_journal.details << JournalDetail.new(:property => 'attr',
:prop_key => c,
:old_value => @issue_before_change.send(c),
:value => send(c)) unless send(c)==@issue_before_change.send(c)
:value => send(c))
}
# custom fields changes
custom_values.each {|c|

View File

@@ -1,5 +1,5 @@
# redMine - project management software
# Copyright (C) 2006 Jean-Philippe Lang
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -24,6 +24,8 @@ class IssueCategory < ActiveRecord::Base
validates_uniqueness_of :name, :scope => [:project_id]
validates_length_of :name, :maximum => 30
named_scope :named, lambda {|arg| { :conditions => ["LOWER(#{table_name}.name) = LOWER(?)", arg.to_s.strip]}}
alias :destroy_without_reassign :destroy
# Destroy the category

View File

@@ -47,7 +47,12 @@ class IssueRelation < ActiveRecord::Base
if issue_from && issue_to
errors.add :issue_to_id, :invalid if issue_from_id == issue_to_id
errors.add :issue_to_id, :not_same_project unless issue_from.project_id == issue_to.project_id || Setting.cross_project_issue_relations?
errors.add_to_base :circular_dependency if issue_to.all_dependent_issues.include? issue_from
#detect circular dependencies depending wether the relation should be reversed
if TYPES.has_key?(relation_type) && TYPES[relation_type][:reverse]
errors.add_to_base :circular_dependency if issue_from.all_dependent_issues.include? issue_to
else
errors.add_to_base :circular_dependency if issue_to.all_dependent_issues.include? issue_from
end
errors.add_to_base :cant_link_an_issue_with_a_descendant if issue_from.is_descendant_of?(issue_to) || issue_from.is_ancestor_of?(issue_to)
end
end

View File

@@ -26,6 +26,8 @@ class IssueStatus < ActiveRecord::Base
validates_uniqueness_of :name
validates_length_of :name, :maximum => 30
validates_inclusion_of :default_done_ratio, :in => 0..100, :allow_nil => true
named_scope :named, lambda {|arg| { :conditions => ["LOWER(#{table_name}.name) = LOWER(?)", arg.to_s.strip]}}
def after_save
IssueStatus.update_all("is_default=#{connection.quoted_false}", ['id <> ?', id]) if self.is_default?

View File

@@ -32,7 +32,6 @@ class Journal < ActiveRecord::Base
:url => Proc.new {|o| {:controller => 'issues', :action => 'show', :id => o.issue.id, :anchor => "change-#{o.id}"}}
acts_as_activity_provider :type => 'issues',
:permission => :view_issues,
:author_key => :user_id,
:find_options => {:include => [{:issue => :project}, :details, :user],
:conditions => "#{Journal.table_name}.journalized_type = 'Issue' AND" +

View File

@@ -265,12 +265,12 @@ class MailHandler < ActionMailer::Base
assigned_to = nil if assigned_to && !issue.assignable_users.include?(assigned_to)
attrs = {
'tracker_id' => (k = get_keyword(:tracker)) && issue.project.trackers.find_by_name(k).try(:id),
'status_id' => (k = get_keyword(:status)) && IssueStatus.find_by_name(k).try(:id),
'priority_id' => (k = get_keyword(:priority)) && IssuePriority.find_by_name(k).try(:id),
'category_id' => (k = get_keyword(:category)) && issue.project.issue_categories.find_by_name(k).try(:id),
'tracker_id' => (k = get_keyword(:tracker)) && issue.project.trackers.named(k).first.try(:id),
'status_id' => (k = get_keyword(:status)) && IssueStatus.named(k).first.try(:id),
'priority_id' => (k = get_keyword(:priority)) && IssuePriority.named(k).first.try(:id),
'category_id' => (k = get_keyword(:category)) && issue.project.issue_categories.named(k).first.try(:id),
'assigned_to_id' => assigned_to.try(:id),
'fixed_version_id' => (k = get_keyword(:fixed_version, :override => true)) && issue.project.shared_versions.find_by_name(k).try(:id),
'fixed_version_id' => (k = get_keyword(:fixed_version, :override => true)) && issue.project.shared_versions.named(k).first.try(:id),
'start_date' => get_keyword(:start_date, :override => true, :format => '\d{4}-\d{2}-\d{2}'),
'due_date' => get_keyword(:due_date, :override => true, :format => '\d{4}-\d{2}-\d{2}'),
'estimated_hours' => get_keyword(:estimated_hours, :override => true),

View File

@@ -118,6 +118,11 @@ class Project < ActiveRecord::Base
visible(user).find(:all, :limit => count, :order => "created_on DESC")
end
# Returns true if the project is visible to +user+ or to the current user.
def visible?(user=User.current)
user.allowed_to?(:view_project, self)
end
def self.visible_by(user=nil)
ActiveSupport::Deprecation.warn "Project.visible_by is deprecated and will be removed in Redmine 1.3.0. Use Project.visible_condition instead."
visible_condition(user || User.current)
@@ -544,7 +549,27 @@ class Project < ActiveRecord::Base
def enabled_module_names
enabled_modules.collect(&:name)
end
# Enable a specific module
#
# Examples:
# project.enable_module!(:issue_tracking)
# project.enable_module!("issue_tracking")
def enable_module!(name)
enabled_modules << EnabledModule.new(:name => name.to_s) unless module_enabled?(name)
end
# Disable a module if it exists
#
# Examples:
# project.disable_module!(:issue_tracking)
# project.disable_module!("issue_tracking")
# project.disable_module!(project.enabled_modules.first)
def disable_module!(target)
target = enabled_modules.detect{|mod| target.to_s == mod.name} unless enabled_modules.include?(target)
target.destroy unless target.blank?
end
safe_attributes 'name',
'description',
'homepage',

View File

@@ -165,6 +165,11 @@ class Query < ActiveRecord::Base
["o", "c", "!*", "*", "t", "w"].include? operator_for(field)
end if filters
end
# Returns true if the query is visible to +user+ or the current user.
def visible?(user=User.current)
self.is_public? || self.user_id == user.id
end
def editable_by?(user)
return false unless user

View File

@@ -117,7 +117,7 @@ class Repository < ActiveRecord::Base
end
def default_branch
scm.default_branch
nil
end
def properties(path, identifier=nil)
@@ -276,7 +276,7 @@ class Repository < ActiveRecord::Base
ret = ""
begin
ret = self.scm_adapter_class.client_command if self.scm_adapter_class
rescue Redmine::Scm::Adapters::CommandFailed => e
rescue Exception => e
logger.error "scm: error during get command: #{e.message}"
end
ret
@@ -286,7 +286,7 @@ class Repository < ActiveRecord::Base
ret = ""
begin
ret = self.scm_adapter_class.client_version_string if self.scm_adapter_class
rescue Redmine::Scm::Adapters::CommandFailed => e
rescue Exception => e
logger.error "scm: error during get version string: #{e.message}"
end
ret
@@ -296,7 +296,7 @@ class Repository < ActiveRecord::Base
ret = false
begin
ret = self.scm_adapter_class.client_available if self.scm_adapter_class
rescue Redmine::Scm::Adapters::CommandFailed => e
rescue Exception => e
logger.error "scm: error during get scm available: #{e.message}"
end
ret

View File

@@ -75,6 +75,10 @@ class Repository::Git < Repository
scm.tags
end
def default_branch
scm.default_branch
end
def find_changeset_by_name(name)
return nil if name.nil? || name.empty?
e = changesets.find(:first, :conditions => ['revision = ?', name.to_s])

View File

@@ -123,6 +123,7 @@ class Repository::Mercurial < Repository
private :latest_changesets_cond
def fetch_changesets
return if scm.info.nil?
scm_rev = scm.info.lastrev.revision.to_i
db_rev = latest_changeset ? latest_changeset.revision.to_i : -1
return unless db_rev < scm_rev # already up-to-date

View File

@@ -32,6 +32,8 @@ class Tracker < ActiveRecord::Base
validates_uniqueness_of :name
validates_length_of :name, :maximum => 30
named_scope :named, lambda {|arg| { :conditions => ["LOWER(#{table_name}.name) = LOWER(?)", arg.to_s.strip]}}
def to_s; name end
def <=>(tracker)

View File

@@ -33,6 +33,7 @@ class Version < ActiveRecord::Base
validates_inclusion_of :status, :in => VERSION_STATUSES
validates_inclusion_of :sharing, :in => VERSION_SHARINGS
named_scope :named, lambda {|arg| { :conditions => ["LOWER(#{table_name}.name) = LOWER(?)", arg.to_s.strip]}}
named_scope :open, :conditions => {:status => 'open'}
named_scope :visible, lambda {|*args| { :include => :project,
:conditions => Project.allowed_to_condition(args.first || User.current, :view_issues) } }

View File

@@ -212,6 +212,10 @@ class WikiAnnotate
break unless @lines.detect { |line| line[0].nil? }
current = current.previous
end
@lines.each { |line| line[0] ||= current.version }
@lines.each { |line|
line[0] ||= current.version
# if the last known version is > 1 (eg. history was cleared), we don't know the author
line[1] ||= current.author if current.version == 1
}
end
end

View File

@@ -89,8 +89,8 @@ class Workflow < ActiveRecord::Base
else
transaction do
delete_all :tracker_id => target_tracker.id, :role_id => target_role.id
connection.insert "INSERT INTO #{Workflow.table_name} (tracker_id, role_id, old_status_id, new_status_id)" +
" SELECT #{target_tracker.id}, #{target_role.id}, old_status_id, new_status_id" +
connection.insert "INSERT INTO #{Workflow.table_name} (tracker_id, role_id, old_status_id, new_status_id, author, assignee)" +
" SELECT #{target_tracker.id}, #{target_role.id}, old_status_id, new_status_id, author, assignee" +
" FROM #{Workflow.table_name}" +
" WHERE tracker_id = #{source_tracker.id} AND role_id = #{source_role.id}"
end

View File

@@ -15,10 +15,10 @@
<tbody>
<% for source in @auth_sources %>
<tr class="<%= cycle("odd", "even") %>">
<td><%= link_to source.name, :action => 'edit', :id => source%></td>
<td align="center"><%= source.auth_method_name %></td>
<td align="center"><%= source.host %></td>
<td align="center"><%= source.users.count %></td>
<td><%= link_to(h(source.name), :action => 'edit', :id => source)%></td>
<td align="center"><%= h source.auth_method_name %></td>
<td align="center"><%= h source.host %></td>
<td align="center"><%= h source.users.count %></td>
<td class="buttons">
<%= link_to l(:button_test), :action => 'test_connection', :id => source %>
<%= link_to l(:button_delete), { :action => 'destroy', :id => source },

View File

@@ -5,7 +5,7 @@ api.array :projects, api_meta(:total_count => @project_count, :offset => @offset
api.name project.name
api.identifier project.identifier
api.description project.description
api.parent(:id => project.parent_id, :name => project.parent.name) unless project.parent.nil?
api.parent(:id => project.parent.id, :name => project.parent.name) if project.parent && project.parent.visible?
render_api_custom_values project.visible_custom_field_values, api

View File

@@ -8,12 +8,9 @@
<div class="box tabular">
<p>
<%= label_tag('repository_scm', l(:label_scm)) %><%= scm_select_tag(@repository) %>
<% if @repository %>
<br />
<%= image_tag((@repository.class.scm_available ? 'true.png' : 'exclamation.png'))%>
<%= l(:text_scm_command) -%>: <%= @repository.class.scm_command %>
|
<%= l(:text_scm_command_version) -%>: <%= @repository.class.scm_version_string %>
<% if @repository && ! @repository.class.scm_available %>
<br />
<em><%= content_tag 'span', l(:text_scm_command_not_available), :class => 'error' %></em>
<% end %>
</p>
<% button_disabled = true %>

View File

@@ -4,6 +4,7 @@ api.project do
api.identifier @project.identifier
api.description @project.description
api.homepage @project.homepage
api.parent(:id => @project.parent.id, :name => @project.parent.name) if @project.parent && @project.parent.visible?
render_api_custom_values @project.visible_custom_field_values, api

View File

@@ -5,7 +5,9 @@
<p><%= text_field_tag 'q', @question, :size => 60, :id => 'search-input' %>
<%= javascript_tag "Field.focus('search-input')" %>
<%= project_select_tag %>
<%= hidden_field_tag 'all_words', '', :id => nil %>
<label><%= check_box_tag 'all_words', 1, @all_words %> <%= l(:label_all_words) %></label>
<%= hidden_field_tag 'titles_only', '', :id => nil %>
<label><%= check_box_tag 'titles_only', 1, @titles_only %> <%= l(:label_search_titles_only) %></label>
</p>
<p>

View File

@@ -1,41 +1,95 @@
<% form_tag({:action => 'edit', :tab => 'repositories'}) do %>
<fieldset class="box tabular settings enabled_scm">
<legend><%= l(:setting_enabled_scm) %></legend>
<table>
<tr>
<th></th>
<th><%= l(:text_scm_command) %></th>
<th><%= l(:text_scm_command_version) %></th>
</tr>
<% Redmine::Scm::Base.all.collect do |choice| %>
<% scm_class = "Repository::#{choice}".constantize %>
<% text, value = (choice.is_a?(Array) ? choice : [choice, choice]) %>
<% setting = :enabled_scm %>
<tr>
<td class="scm_name">
<%=
check_box_tag(
"settings[#{setting}][]",
value,
Setting.send(setting).include?(value))
%>
<%= text.to_s %>
</td>
<td>
<%=
image_tag(
(scm_class.scm_available ? 'true.png' : 'exclamation.png'),
:style => "vertical-align:bottom;"
)
%>
<%= scm_class.scm_command %>
</td>
<td>
<%= scm_class.scm_version_string %>
</td>
</tr>
<% end %>
</table>
<p class="scm_config">
<%= l(:text_scm_config) %>
</p>
</fieldset>
<div class="box tabular settings">
<p><%= setting_check_box :autofetch_changesets %></p>
<p><%= setting_check_box :sys_api_enabled,
:onclick => "if (this.checked) { Form.Element.enable('settings_sys_api_key'); } else { Form.Element.disable('settings_sys_api_key'); }" %></p>
<p><%= setting_check_box :sys_api_enabled,
:onclick =>
"if (this.checked) { Form.Element.enable('settings_sys_api_key'); } else { Form.Element.disable('settings_sys_api_key'); }" %></p>
<p><%= setting_text_field :sys_api_key, :size => 30,
:id => 'settings_sys_api_key',
:disabled => !Setting.sys_api_enabled?,
:label => :setting_mail_handler_api_key %>
<%= link_to_function l(:label_generate_key), "if ($('settings_sys_api_key').disabled == false) { $('settings_sys_api_key').value = randomKey(20) }" %>
<p><%= setting_text_field :sys_api_key,
:size => 30,
:id => 'settings_sys_api_key',
:disabled => !Setting.sys_api_enabled?,
:label => :setting_mail_handler_api_key %>
<%= link_to_function l(:label_generate_key),
"if ($('settings_sys_api_key').disabled == false) { $('settings_sys_api_key').value = randomKey(20) }" %>
</p>
<p><%= setting_multiselect(:enabled_scm, Redmine::Scm::Base.all) %></p>
<p><%= setting_text_field :repositories_encodings, :size => 60 %><br />
<em><%= l(:text_comma_separated) %></em></p>
<p><%= setting_text_field :repository_log_display_limit, :size => 6 %></p>
</div>
<fieldset class="box tabular settings"><legend><%= l(:text_issues_ref_in_commit_messages) %></legend>
<fieldset class="box tabular settings">
<legend><%= l(:text_issues_ref_in_commit_messages) %></legend>
<p><%= setting_text_field :commit_ref_keywords, :size => 30 %><br />
<em><%= l(:text_comma_separated) %></em></p>
<p><%= setting_text_field :commit_fix_keywords, :size => 30 %>
&nbsp;<%= l(:label_applied_status) %>: <%= setting_select :commit_fix_status_id, [["", 0]] + IssueStatus.find(:all).collect{|status| [status.name, status.id.to_s]}, :label => false %>
&nbsp;<%= l(:field_done_ratio) %>: <%= setting_select :commit_fix_done_ratio, (0..10).to_a.collect {|r| ["#{r*10} %", "#{r*10}"] }, :blank => :label_no_change_option, :label => false %>
&nbsp;<%= l(:label_applied_status) %>: <%= setting_select :commit_fix_status_id,
[["", 0]] +
IssueStatus.find(:all).collect{
|status| [status.name, status.id.to_s]
},
:label => false %>
&nbsp;<%= l(:field_done_ratio) %>: <%= setting_select :commit_fix_done_ratio,
(0..10).to_a.collect {|r| ["#{r*10} %", "#{r*10}"] },
:blank => :label_no_change_option,
:label => false %>
<br /><em><%= l(:text_comma_separated) %></em></p>
<p><%= setting_check_box :commit_logtime_enabled,
:onclick => "if (this.checked) { Form.Element.enable('settings_commit_logtime_activity_id'); } else { Form.Element.disable('settings_commit_logtime_activity_id'); }"%></p>
:onclick =>
"if (this.checked) { Form.Element.enable('settings_commit_logtime_activity_id'); } else { Form.Element.disable('settings_commit_logtime_activity_id'); }"%></p>
<p><%= setting_select :commit_logtime_activity_id,
[[l(:label_default), 0]] + TimeEntryActivity.shared.all.collect{|activity| [activity.name, activity.id.to_s]},
:disabled => !Setting.commit_logtime_enabled?%></p>
<p><%= setting_select :commit_logtime_activity_id,
[[l(:label_default), 0]] +
TimeEntryActivity.shared.all.collect{|activity| [activity.name, activity.id.to_s]},
:disabled => !Setting.commit_logtime_enabled?%></p>
</fieldset>
<%= submit_tag l(:button_save) %>

View File

@@ -1,4 +1,4 @@
api.array :time_entries do
api.array :time_entries, api_meta(:total_count => @entry_count, :offset => @offset, :limit => @limit) do
@entries.each do |time_entry|
api.time_entry do
api.id time_entry.id

View File

@@ -32,6 +32,7 @@
</div>
<% content_for :header_tags do %>
<%= stylesheet_link_tag 'scm' %>
<%= auto_discovery_link_tag(:atom, {:controller => 'news', :action => 'index', :key => User.current.rss_key, :format => 'atom'},
:title => "#{Setting.app_title}: #{l(:label_news_latest)}") %>
<%= auto_discovery_link_tag(:atom, {:controller => 'activities', :action => 'index', :key => User.current.rss_key, :format => 'atom'},

View File

@@ -7,7 +7,7 @@ module ActiveRecord
# Translate attribute names for validation errors display
def self.human_attribute_name(attr)
l("field_#{attr.to_s.gsub(/_id$/, '')}")
l("field_#{attr.to_s.gsub(/_id$/, '')}", :default => attr)
end
end
end

View File

@@ -946,6 +946,8 @@ bg:
text_mercurial_repository_note: Локално хранилище (например /hgrepo, c:\hgrepo)
text_scm_command: SCM команда
text_scm_command_version: Версия
text_scm_config: Можете да конфигурирате SCM командите в config/configuration.yml. За да активирате промените, рестартирайте Redmine.
text_scm_command_not_available: SCM командата не е налична или достъпна. Проверете конфигурацията в административния панел.
default_role_manager: Мениджър
default_role_developer: Разработчик

View File

@@ -988,3 +988,5 @@ bs:
text_scm_command: Command
text_scm_command_version: Version
label_git_report_last_commit: Report last commit for files and directories
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.

View File

@@ -977,3 +977,5 @@ ca:
text_scm_command: Command
text_scm_command_version: Version
label_git_report_last_commit: Report last commit for files and directories
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.

View File

@@ -978,3 +978,5 @@ cs:
text_scm_command: Command
text_scm_command_version: Version
label_git_report_last_commit: Report last commit for files and directories
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.

View File

@@ -991,3 +991,5 @@ da:
text_scm_command: Command
text_scm_command_version: Version
label_git_report_last_commit: Report last commit for files and directories
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.

View File

@@ -1,5 +1,6 @@
# German translations for Ruby on Rails
# by Clemens Kofler (clemens@railway.at)
# additions for Redmine 1.2 by Jens Martsch (jmartsch@gmail.com)
de:
direction: ltr
@@ -949,45 +950,48 @@ de:
field_member_of_group: Zuständigkeitsgruppe
field_assigned_to_role: Zuständigkeitsrolle
field_visible: Sichtbar
setting_emails_header: Emailkopf
setting_emails_header: E-Mail Betreffzeile
setting_commit_logtime_activity_id: Aktivität für die Zeiterfassung
text_time_logged_by_changeset: Angewendet in Changeset %{value}.
setting_commit_logtime_enabled: Aktiviere Zeitlogging
notice_gantt_chart_truncated: Die Grafik ist unvollständig, da das Maximum der anzeigbaren Aufgaben überschritten wurde (%{max})
setting_gantt_items_limit: Maximale Anzahl von Aufgaben die im Gantt-Chart angezeigt werden.
field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
label_my_queries: My custom queries
text_journal_changed_no_detail: "%{label} updated"
label_news_comment_added: Comment added to a news
button_expand_all: Expand all
button_collapse_all: Collapse all
label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee
label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author
label_bulk_edit_selected_time_entries: Bulk edit selected time entries
text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)?
field_warn_on_leaving_unsaved: vor dem Verlassen einer Seite mit ungesichertem Text im Editor warnen
text_warn_on_leaving_unsaved: Die aktuellen Änderungen gehen verloren, wenn Sie diese Seite verlassen.
label_my_queries: Meine eigenen Abfragen
text_journal_changed_no_detail: "%{label} aktualisiert"
label_news_comment_added: Kommentar zu einer News hinzugefügt
button_expand_all: Alle ausklappen
button_collapse_all: Alle einklappen
label_additional_workflow_transitions_for_assignee: Zusätzliche Berechtigungen wenn der Benutzer der Zugewiesene ist
label_additional_workflow_transitions_for_author: Zusätzliche Berechtigungen wenn der Benutzer der Autor ist
label_bulk_edit_selected_time_entries: Ausgewählte Zeitaufwände bearbeiten
text_time_entries_destroy_confirmation: Sind Sie sicher, dass Sie die ausgewählten Zeitaufwände löschen möchten?
label_role_anonymous: Anonymous
label_role_non_member: Non member
label_issue_note_added: Note added
label_issue_status_updated: Status updated
label_issue_priority_updated: Priority updated
label_issues_visibility_own: Issues created by or assigned to the user
field_issues_visibility: Issues visibility
label_issues_visibility_all: All issues
permission_set_own_issues_private: Set own issues public or private
field_is_private: Private
permission_set_issues_private: Set issues public or private
label_issues_visibility_public: All non private issues
text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s).
label_role_non_member: Nichtmitglied
label_issue_note_added: Notiz hinzugefügt
label_issue_status_updated: Status aktualisiert
label_issue_priority_updated: Priorität aktualisiert
label_issues_visibility_own: Tickets die folgender User erstellt hat oder die ihm zugewiesen sind
field_issues_visibility: Ticket Sichtbarkeit
label_issues_visibility_all: Alle Tickets
permission_set_own_issues_private: Eigene Tickets privat oder öffentlich markieren
field_is_private: Privat
permission_set_issues_private: Tickets privat oder öffentlich markieren
label_issues_visibility_public: Alle öffentlichen Tickets
text_issues_destroy_descendants_confirmation: Dies wird auch %{count} Unteraufgabe/n löschen.
field_commit_logs_encoding: Kodierung der Commit-Log-Meldungen
field_scm_path_encoding: Path encoding
text_scm_path_encoding_note: "Default: UTF-8"
field_path_to_repository: Path to repository
field_root_directory: Root directory
field_cvs_module: Module
field_scm_path_encoding: Pfad Kodierung
text_scm_path_encoding_note: "Standard: UTF-8"
field_path_to_repository: Pfad zum repository
field_root_directory: Wurzelverzeichnis
field_cvs_module: Modul
field_cvsroot: CVSROOT
text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo)
text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo)
text_scm_command: Command
text_git_repository_note: Bare und lokales repository (e.g. /gitrepo, c:\gitrepo)
text_mercurial_repository_note: Lokales repository (e.g. /hgrepo, c:\hgrepo)
text_scm_command: Kommando
text_scm_command_version: Version
label_git_report_last_commit: Report last commit for files and directories
label_git_report_last_commit: Bericht des letzten Commits für Dateien und Verzeichnisse
text_scm_config: Die SCM-Kommandos können in der in config/configuration.yml konfiguriert werden. Redmine muss anschließend neu gestartet werden.
text_scm_command_not_available: Scm Kommando ist nicht verfügbar. Bitte prüfen Sie die Einstellungen im Administrationspanel.

View File

@@ -974,3 +974,5 @@ el:
text_scm_command: Command
text_scm_command_version: Version
label_git_report_last_commit: Report last commit for files and directories
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.

View File

@@ -977,3 +977,5 @@ en-GB:
text_scm_command: Command
text_scm_command_version: Version
label_git_report_last_commit: Report last commit for files and directories
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.

View File

@@ -867,17 +867,17 @@ en:
button_quote: Quote
button_duplicate: Duplicate
button_show: Show
status_active: active
status_registered: registered
status_locked: locked
version_status_open: open
version_status_locked: locked
version_status_closed: closed
field_active: Active
text_select_mail_notifications: Select actions for which email notifications should be sent.
text_regexp_info: eg. ^[A-Z0-9]+$
text_min_max_length_info: 0 means no restriction
@@ -946,6 +946,8 @@ en:
text_mercurial_repository_note: "Local repository (e.g. /hgrepo, c:\hgrepo)"
text_scm_command: Command
text_scm_command_version: Version
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.
default_role_manager: Manager
default_role_developer: Developer

View File

@@ -970,44 +970,46 @@ es:
field_visible: Visible
setting_emails_header: Encabezado de Correos
setting_commit_logtime_activity_id: Activity for logged time
text_time_logged_by_changeset: Applied in changeset %{value}.
setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
label_my_queries: My custom queries
text_journal_changed_no_detail: "%{label} updated"
label_news_comment_added: Comment added to a news
button_expand_all: Expand all
button_collapse_all: Collapse all
label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee
label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author
label_bulk_edit_selected_time_entries: Bulk edit selected time entries
text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)?
label_role_anonymous: Anonymous
label_role_non_member: Non member
label_issue_note_added: Note added
label_issue_status_updated: Status updated
label_issue_priority_updated: Priority updated
label_issues_visibility_own: Issues created by or assigned to the user
field_issues_visibility: Issues visibility
label_issues_visibility_all: All issues
permission_set_own_issues_private: Set own issues public or private
field_is_private: Private
permission_set_issues_private: Set issues public or private
label_issues_visibility_public: All non private issues
text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s).
setting_commit_logtime_activity_id: Actividad de los tiempos registrados
text_time_logged_by_changeset: Aplicado en los cambios %{value}.
setting_commit_logtime_enabled: Habilitar registro de horas
notice_gantt_chart_truncated: Se recortó el diagrama porque excede el número máximo de elementos que pueden ser mostrados (%{max})
setting_gantt_items_limit: Número máximo de elementos mostrados en el diagrama de Gantt
field_warn_on_leaving_unsaved: Avisarme cuando vaya a abandonar una página con texto no guardado
text_warn_on_leaving_unsaved: Esta página contiene texto no guardado y si la abandona sus cambios se perderán
label_my_queries: Mis consultas personalizadas
text_journal_changed_no_detail: "Se actualizó %{label}"
label_news_comment_added: Comentario añadido a noticia
button_expand_all: Expandir todo
button_collapse_all: Contraer todo
label_additional_workflow_transitions_for_assignee: Transiciones adicionales permitidas cuando la petición está asignada al usuario
label_additional_workflow_transitions_for_author: Transiciones adicionales permitidas cuando el usuario es autor de la petición
label_bulk_edit_selected_time_entries: Editar en bloque las horas seleccionadas
text_time_entries_destroy_confirmation: ¿Está seguro de querer eliminar (la hora seleccionada/las horas seleccionadas)?
label_role_anonymous: Anónimo
label_role_non_member: No miembro
label_issue_note_added: Nota añadida
label_issue_status_updated: Estado actualizado
label_issue_priority_updated: Prioridad actualizada
label_issues_visibility_own: Peticiones creadas por el usuario o asignadas a él
field_issues_visibility: Visibilidad de las peticiones
label_issues_visibility_all: Todas las peticiones
permission_set_own_issues_private: Poner las peticiones propias como públicas o privadas
field_is_private: Privada
permission_set_issues_private: Poner peticiones como públicas o privadas
label_issues_visibility_public: Todas las peticiones no privadas
text_issues_destroy_descendants_confirmation: Se procederá a borrar también %{count} subtarea(s).
field_commit_logs_encoding: Codificación de los mensajes de commit
field_scm_path_encoding: Path encoding
text_scm_path_encoding_note: "Default: UTF-8"
field_path_to_repository: Path to repository
field_root_directory: Root directory
field_cvs_module: Module
field_scm_path_encoding: Codificación de las rutas
text_scm_path_encoding_note: "Por defecto: UTF-8"
field_path_to_repository: Ruta al repositorio
field_root_directory: Directorio raíz
field_cvs_module: Módulo
field_cvsroot: CVSROOT
text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo)
text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo)
text_scm_command: Command
text_scm_command_version: Version
label_git_report_last_commit: Report last commit for files and directories
text_git_repository_note: Repositorio local (bare repository) (e.g. /gitrepo, c:\gitrepo)
text_mercurial_repository_note: Repositorio local (e.g. /hgrepo, c:\hgrepo)
text_scm_command: Orden
text_scm_command_version: Versión
label_git_report_last_commit: Informar del último commit para ficheros y directorios
text_scm_config: Puede configurar las órdenes de cada scm en configuration/configuration.yml. Por favor, reinicie la aplicación después de editarlo
text_scm_command_not_available: La orden para el Scm no está disponible. Por favor, compruebe la configuración en el panel de administración.

View File

@@ -978,3 +978,5 @@ eu:
text_scm_command: Komandoa
text_scm_command_version: Bertsioa
label_git_report_last_commit: Report last commit for files and directories
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.

View File

@@ -977,3 +977,5 @@ fa:
text_scm_command: Command
text_scm_command_version: Version
label_git_report_last_commit: Report last commit for files and directories
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.

View File

@@ -995,3 +995,5 @@ fi:
text_scm_command: Command
text_scm_command_version: Version
label_git_report_last_commit: Report last commit for files and directories
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.

View File

@@ -962,7 +962,7 @@ fr:
text_zoom_in: Zoom avant
notice_unable_delete_time_entry: Impossible de supprimer le temps passé.
label_overall_spent_time: Temps passé global
field_time_entries: Log time
field_time_entries: Temps passé
project_module_gantt: Gantt
project_module_calendar: Calendrier
button_edit_associated_wikipage: "Modifier la page wiki associée: %{page_title}"
@@ -976,16 +976,18 @@ fr:
field_member_of_group: Groupe de l'assigné
field_assigned_to_role: Rôle de l'assigné
setting_emails_header: En-tête des emails
label_bulk_edit_selected_time_entries: Bulk edit selected time entries
text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)?
field_scm_path_encoding: Path encoding
text_scm_path_encoding_note: "Default: UTF-8"
field_path_to_repository: Path to repository
field_root_directory: Root directory
label_bulk_edit_selected_time_entries: Modifier les temps passés sélectionnées
text_time_entries_destroy_confirmation: "Etes-vous sûr de vouloir supprimer les temps passés sélectionnés ?"
field_scm_path_encoding: Encodage des chemins
text_scm_path_encoding_note: "Défaut : UTF-8"
field_path_to_repository: Chemin du dépôt
field_root_directory: Répertoire racine
field_cvs_module: Module
field_cvsroot: CVSROOT
text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo)
text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo)
text_scm_command: Command
text_git_repository_note: "Dépôt nu (bare) et local (exemples : /gitrepo, c:\gitrepo)"
text_mercurial_repository_note: "Dépôt local (exemples : /hgrepo, c:\hgrepo)"
text_scm_command: Commande
text_scm_command_version: Version
label_git_report_last_commit: Report last commit for files and directories
label_git_report_last_commit: Afficher le dernier commit des fichiers et répertoires
text_scm_config: Vous pouvez configurer les commandes des SCM dans config/configuration.yml. Redémarrer l'application après modification.
text_scm_command_not_available: Ce SCM n'est pas disponible. Vérifier les paramètres dans la section administration.

View File

@@ -986,3 +986,5 @@ gl:
text_scm_command: Command
text_scm_command_version: Version
label_git_report_last_commit: Report last commit for files and directories
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.

View File

@@ -979,3 +979,5 @@ he:
text_scm_command: Command
text_scm_command_version: Version
label_git_report_last_commit: Report last commit for files and directories
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.

View File

@@ -981,3 +981,5 @@ hr:
text_scm_command: Command
text_scm_command_version: Version
label_git_report_last_commit: Report last commit for files and directories
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.

View File

@@ -993,3 +993,5 @@
text_scm_command: Parancs
text_scm_command_version: Verzió
label_git_report_last_commit: Report last commit for files and directories
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.

View File

@@ -982,3 +982,5 @@ id:
text_scm_command: Command
text_scm_command_version: Version
label_git_report_last_commit: Report last commit for files and directories
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.

View File

@@ -975,3 +975,5 @@ it:
text_scm_command: Command
text_scm_command_version: Version
label_git_report_last_commit: Report last commit for files and directories
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.

View File

@@ -158,6 +158,14 @@ ja:
general_csv_separator: ','
general_csv_decimal_separator: '.'
general_csv_encoding: CP932
## Redmine 1.2.0 現在、この値によって、pdfの出力のフォントを切り替えています。
## CRuby では CP932 にしてください。
## JRuby 1.6.2 (ruby-1.8.7-p330) では、CP932 ですと
## Iconv::InvalidEncoding例外が発生します。
## JRuby では、SJIS か Shift_JIS にしてください。
## ご存知の通り、CP932 と SJIS は別物ですが、
## そこまでの検証はしていません。
# general_pdf_encoding: SJIS
general_pdf_encoding: CP932
general_first_day_of_week: '7'
@@ -392,7 +400,7 @@ ja:
setting_commit_logtime_enabled: コミット時に作業時間を記録する
setting_commit_logtime_activity_id: 作業時間の作業分類
setting_gantt_items_limit: ガントチャート最大表示項目数
permission_add_project: プロジェクトの追加
permission_add_subprojects: サブプロジェクトの追加
permission_edit_project: プロジェクトの編集
@@ -448,7 +456,7 @@ ja:
permission_delete_messages: メッセージの削除
permission_delete_own_messages: 自身が記入したメッセージの削除
permission_manage_subtasks: 子チケットの管理
project_module_issue_tracking: チケットトラッキング
project_module_time_tracking: 時間トラッキング
project_module_news: ニュース
@@ -459,7 +467,7 @@ ja:
project_module_boards: フォーラム
project_module_gantt: ガントチャート
project_module_calendar: カレンダー
label_user: ユーザ
label_user_plural: ユーザ
label_user_new: 新しいユーザ
@@ -950,6 +958,8 @@ ja:
text_mercurial_repository_note: "ローカルリポジトリ (例: /hgrepo, c:\hgrepo)"
text_scm_command: コマンド
text_scm_command_version: バージョン
text_scm_config: バージョン管理システムのコマンドをconfig/configuration.ymlで設定できます。設定後、Redmineを再起動してください。
text_scm_command_not_available: バージョン管理システムのコマンドが利用できません。管理画面にて設定を確認してください。
default_role_manager: 管理者
default_role_developer: 開発者

View File

@@ -1026,3 +1026,5 @@ ko:
text_scm_command: Command
text_scm_command_version: Version
label_git_report_last_commit: Report last commit for files and directories
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.

View File

@@ -1034,3 +1034,5 @@ lt:
text_scm_command: Command
text_scm_command_version: Version
label_git_report_last_commit: Report last commit for files and directories
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.

View File

@@ -969,3 +969,5 @@ lv:
text_scm_command: Command
text_scm_command_version: Version
label_git_report_last_commit: Report last commit for files and directories
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.

View File

@@ -974,3 +974,5 @@ mk:
text_scm_command: Command
text_scm_command_version: Version
label_git_report_last_commit: Report last commit for files and directories
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.

View File

@@ -975,3 +975,5 @@ mn:
text_scm_command: Command
text_scm_command_version: Version
label_git_report_last_commit: Report last commit for files and directories
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.

View File

@@ -956,3 +956,5 @@ nl:
text_scm_command: Command
text_scm_command_version: Version
label_git_report_last_commit: Report last commit for files and directories
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.

View File

@@ -961,3 +961,5 @@
text_scm_command: Command
text_scm_command_version: Version
label_git_report_last_commit: Report last commit for files and directories
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.

View File

@@ -991,3 +991,5 @@ pl:
text_scm_command: Command
text_scm_command_version: Version
label_git_report_last_commit: Report last commit for files and directories
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.

View File

@@ -938,7 +938,7 @@ pt-BR:
text_zoom_in: Aproximar zoom
notice_unable_delete_time_entry: Não foi possível excluir a entrada no registro de horas trabalhadas.
label_overall_spent_time: Tempo gasto geral
field_time_entries: Log time
field_time_entries: Registro de horas
project_module_gantt: Gantt
project_module_calendar: Calendário
button_edit_associated_wikipage: "Editar página wiki relacionada: %{page_title}"
@@ -966,31 +966,34 @@ pt-BR:
label_my_queries: Minhas consultas personalizadas
text_journal_changed_no_detail: "%{label} atualizado(a)"
label_news_comment_added: Notícia recebeu um comentário
button_expand_all: Expand all
button_collapse_all: Collapse all
label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee
label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author
label_bulk_edit_selected_time_entries: Bulk edit selected time entries
text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)?
label_role_anonymous: Anonymous
label_role_non_member: Non member
label_issues_visibility_own: Issues created by or assigned to the user
field_issues_visibility: Issues visibility
label_issues_visibility_all: All issues
permission_set_own_issues_private: Set own issues public or private
field_is_private: Private
permission_set_issues_private: Set issues public or private
label_issues_visibility_public: All non private issues
text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s).
button_expand_all: Expandir tudo
button_collapse_all: Recolher tudo
label_additional_workflow_transitions_for_assignee: Transições adicionais permitidas quando o usuário é o responsável pela tarefa
label_additional_workflow_transitions_for_author: Transições adicionais permitidas quando o usuário é o autor
label_bulk_edit_selected_time_entries: Alteração em massa do registro de horas
text_time_entries_destroy_confirmation: Tem certeza que quer excluir o(s) registro(s) de horas selecionado(s)?
label_role_anonymous: Anônimo
label_role_non_member: Não Membro
label_issues_visibility_own: Tarefas criadas ou atribuídas ao usuário
field_issues_visibility: Visibilidade das tarefas
label_issues_visibility_all: Todas as tarefas
permission_set_own_issues_private: Alterar as próprias tarefas para públicas ou privadas
field_is_private: Privado
permission_set_issues_private: Alterar tarefas para públicas ou privadas
label_issues_visibility_public: Todas as tarefas não privadas
text_issues_destroy_descendants_confirmation: Isto também irá excluir %{count} subtarefa(s).
field_commit_logs_encoding: Codificação das mensagens de commit
field_scm_path_encoding: Path encoding
text_scm_path_encoding_note: "Default: UTF-8"
field_path_to_repository: Path to repository
field_root_directory: Root directory
field_cvs_module: Module
field_scm_path_encoding: Codificação do caminho
text_scm_path_encoding_note: "Padrão: UTF-8"
field_path_to_repository: Caminho para o repositório
field_root_directory: Diretório raiz
field_cvs_module: Módulo
field_cvsroot: CVSROOT
text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo)
text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo)
text_scm_command: Command
text_scm_command_version: Version
label_git_report_last_commit: Report last commit for files and directories
text_mercurial_repository_note: "repositório local (ex.: /hgrepo, c:\hgrepo)"
text_scm_command: Comando
text_scm_command_version: Versão
label_git_report_last_commit: Relatar última alteração para arquivos e direrios
text_scm_config: Você pode configurar seus comandos de versionamento em config/configurations.yml. Por favor reinicie a aplicação após alterá-lo.
text_scm_command_not_available: Comando de versionamento não disponível. Por favor verifique as configurações no painel de administração.

View File

@@ -979,3 +979,5 @@ pt:
text_scm_command: Command
text_scm_command_version: Version
label_git_report_last_commit: Report last commit for files and directories
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.

View File

@@ -967,3 +967,5 @@ ro:
text_scm_command: Command
text_scm_command_version: Version
label_git_report_last_commit: Report last commit for files and directories
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.

View File

@@ -511,7 +511,7 @@ ru:
label_filter_add: Добавить фильтр
label_filter_plural: Фильтры
label_float: С плавающей точкой
label_follows: следующая
label_follows: предыдущая
label_gantt: Диаграмма Ганта
label_general: Общее
label_generate_key: Сгенерировать ключ
@@ -617,7 +617,7 @@ ru:
label_planning: Планирование
label_please_login: Пожалуйста, войдите.
label_plugins: Модули
label_precedes: предыдущая
label_precedes: следующая
label_preferences: Предпочтения
label_preview: Предварительный просмотр
label_previous: Предыдущий
@@ -1087,3 +1087,5 @@ ru:
text_scm_command: Command
text_scm_command_version: Version
label_git_report_last_commit: Report last commit for files and directories
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.

View File

@@ -969,3 +969,5 @@ sk:
text_scm_command: Command
text_scm_command_version: Version
label_git_report_last_commit: Report last commit for files and directories
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.

View File

@@ -970,3 +970,5 @@ sl:
text_scm_command: Command
text_scm_command_version: Version
label_git_report_last_commit: Report last commit for files and directories
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.

View File

@@ -974,3 +974,5 @@ sr-YU:
text_scm_command: Command
text_scm_command_version: Version
label_git_report_last_commit: Report last commit for files and directories
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.

View File

@@ -975,3 +975,5 @@ sr:
text_scm_command: Command
text_scm_command_version: Version
label_git_report_last_commit: Report last commit for files and directories
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.

View File

@@ -351,6 +351,12 @@ sv:
field_warn_on_leaving_unsaved: Varna om jag lämnar en sida med osparad text
field_issues_visibility: Ärendesynlighet
field_is_private: Privat
field_commit_logs_encoding: Teckenuppsättning för commit-meddelanden
field_scm_path_encoding: Sökvägskodning
field_path_to_repository: Sökväg till versionsarkiv
field_root_directory: Rotmapp
field_cvsroot: CVSROOT
field_cvs_module: Modul
setting_app_title: Applikationsrubrik
setting_app_subtitle: Applikationsunderrubrik
@@ -855,6 +861,7 @@ sv:
label_issues_visibility_all: Alla ärenden
label_issues_visibility_public: Alla icke-privata ärenden
label_issues_visibility_own: Ärenden skapade av eller tilldelade till användaren
label_git_report_last_commit: Rapportera senaste commit av filer och mappar
button_login: Logga in
button_submit: Skicka
@@ -976,6 +983,13 @@ sv:
text_zoom_out: Zooma ut
text_zoom_in: Zooma in
text_warn_on_leaving_unsaved: Nuvarande sida innehåller osparad text som kommer försvinna om du lämnar sidan.
text_scm_path_encoding_note: "Standard: UTF-8"
text_git_repository_note: Naket och lokalt versionsarkiv (t.ex. /gitrepo, c:\gitrepo)
text_mercurial_repository_note: Lokalt versionsarkiv (t.ex. /hgrepo, c:\hgrepo)
text_scm_command: Kommando
text_scm_command_version: Version
text_scm_config: Du kan konfigurera dina scm-kommando i config/configuration.yml. Vänligen starta om applikationen när ändringar gjorts.
text_scm_command_not_available: Scm-kommando är inte tillgängligt. Vänligen kontrollera inställningarna i administratörspanelen.
default_role_manager: Projektledare
default_role_developer: Utvecklare
@@ -1003,15 +1017,3 @@ sv:
enumeration_doc_categories: Dokumentkategorier
enumeration_activities: Aktiviteter (tidsuppföljning)
enumeration_system_activity: Systemaktivitet
field_commit_logs_encoding: Teckenuppsättning för commit-meddelanden
field_scm_path_encoding: Path encoding
text_scm_path_encoding_note: "Default: UTF-8"
field_path_to_repository: Path to repository
field_root_directory: Root directory
field_cvs_module: Module
field_cvsroot: CVSROOT
text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo)
text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo)
text_scm_command: Command
text_scm_command_version: Version
label_git_report_last_commit: Report last commit for files and directories

View File

@@ -971,3 +971,5 @@ th:
text_scm_command: Command
text_scm_command_version: Version
label_git_report_last_commit: Report last commit for files and directories
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.

File diff suppressed because it is too large Load Diff

View File

@@ -970,3 +970,5 @@ uk:
text_scm_command: Command
text_scm_command_version: Version
label_git_report_last_commit: Report last commit for files and directories
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.

View File

@@ -180,7 +180,7 @@ vi:
last_word_connector: ", và "
actionview_instancetag_blank_option: Vui lòng chọn
general_text_No: 'Không'
general_text_Yes: 'Có'
general_text_no: 'không'
@@ -191,7 +191,7 @@ vi:
general_csv_encoding: UTF-8
general_pdf_encoding: UTF-8
general_first_day_of_week: '1'
notice_account_updated: Cập nhật tài khoản thành công.
notice_account_invalid_creditentials: Tài khoản hoặc mật mã không hợp lệ
notice_account_password_updated: Cập nhật mật mã thành công.
@@ -1025,3 +1025,5 @@ vi:
text_scm_command: Command
text_scm_command_version: Version
label_git_report_last_commit: Report last commit for files and directories
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.

View File

@@ -1028,6 +1028,8 @@
text_mercurial_repository_note: "本機儲存機制 (e.g. /hgrepo, c:\hgrepo)"
text_scm_command: 命令
text_scm_command_version: 版本
text_scm_config: 您可以在 config/configuration.yml 中設定 SCM 命令。請在編輯該檔案之後重新啟動 Redmine 應用程式。
text_scm_command_not_available: SCM 命令無法使用。請檢查管理面板中的設定。
default_role_manager: 管理人員
default_role_developer: 開發人員

View File

@@ -977,3 +977,5 @@ zh:
text_scm_command: Command
text_scm_command_version: Version
label_git_report_last_commit: Report last commit for files and directories
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.

View File

@@ -4,6 +4,143 @@ Redmine - project management software
Copyright (C) 2006-2011 Jean-Philippe Lang
http://www.redmine.org/
== 2011-07-11 v1.2.1
* Defect #5089: i18N error on truncated revision diff view
* Defect #7501: Search options get lost after clicking on a specific result type
* Defect #8229: "project.xml" response does not include the parent ID
* Defect #8449: Wiki annotated page does not display author of version 1
* Defect #8467: Missing german translation - Warn me when leaving a page with unsaved text
* Defect #8468: No warning when leaving page with unsaved text that has not lost focus
* Defect #8472: Private checkbox ignored on issue creation with "Set own issues public or private" permission
* Defect #8510: JRuby: Can't open administrator panel if scm command is not available
* Defect #8512: Syntax highlighter on Welcome page
* Defect #8554: Translation missing error on custom field validation
* Defect #8565: JRuby: Japanese PDF export error
* Defect #8566: Exported PDF UTF-8 Vietnamese not correct
* Defect #8569: JRuby: PDF export error with TypeError
* Defect #8576: Missing german translation - different things
* Defect #8616: Circular relations
* Defect #8646: Russian translation "label_follows" and "label_follows" are wrong
* Defect #8712: False 'Description updated' journal details messages
* Defect #8729: Not-public queries are not private
* Defect #8737: Broken line of long issue description on issue PDF.
* Defect #8738: Missing revision number/id of associated revisions on issue PDF
* Defect #8739: Workflow copy does not copy advanced workflow settings
* Defect #8759: Setting issue attributes from mail should be case-insensitive
* Defect #8777: Mercurial: Not able to Resetting Redmine project respository
== 2011-05-30 v1.2.0
* Defect #61: Broken character encoding in pdf export
* Defect #1965: Redmine is not Tab Safe
* Defect #2274: Filesystem Repository path encoding of non UTF-8 characters
* Defect #2664: Mercurial: Repository path encoding of non UTF-8 characters
* Defect #3421: Mercurial reads files from working dir instead of changesets
* Defect #3462: CVS: Repository path encoding of non UTF-8 characters
* Defect #3715: Login page should not show projects link and search box if authentication is required
* Defect #3724: Mercurial repositories display revision ID instead of changeset ID
* Defect #3761: Most recent CVS revisions are missing in "revisions" view
* Defect #4270: CVS Repository view in Project doesn't show Author, Revision, Comment
* Defect #5138: Don't use Ajax for pagination
* Defect #5152: Cannot use certain characters for user and role names.
* Defect #5251: Git: Repository path encoding of non UTF-8 characters
* Defect #5373: Translation missing when adding invalid watchers
* Defect #5817: Shared versions not shown in subproject's gantt chart
* Defect #6013: git tab,browsing, very slow -- even after first time
* Defect #6148: Quoting, newlines, and nightmares...
* Defect #6256: Redmine considers non ASCII and UTF-16 text files as binary in SCM
* Defect #6476: Subproject's issues are not shown in the subproject's gantt
* Defect #6496: Remove i18n 0.3.x/0.4.x hack for Rails 2.3.5
* Defect #6562: Context-menu deletion of issues deletes all subtasks too without explicit prompt
* Defect #6604: Issues targeted at parent project versions' are not shown on gantt chart
* Defect #6706: Resolving issues with the commit message produces the wrong comment with CVS
* Defect #6901: Copy/Move an issue does not give any history of who actually did the action.
* Defect #6905: Specific heading-content breaks CSS
* Defect #7000: Project filter not applied on versions in Gantt chart
* Defect #7097: Starting day of week cannot be set to Saturday
* Defect #7114: New gantt doesn't display some projects
* Defect #7146: Git adapter lost commits before 7 days from database latest changeset
* Defect #7218: Date range error on issue query
* Defect #7257: "Issues by" version links bad criterias
* Defect #7279: CSS class ".icon-home" is not used.
* Defect #7320: circular dependency >2 issues
* Defect #7352: Filters not working in Gantt charts
* Defect #7367: Receiving pop3 email should not output debug messages
* Defect #7373: Error with PDF output and ruby 1.9.2
* Defect #7379: Remove extraneous hidden_field on wiki history
* Defect #7516: Redmine does not work with RubyGems 1.5.0
* Defect #7518: Mercurial diff can be wrong if the previous changeset isn't the parent
* Defect #7581: Not including a spent time value on the main issue update screen causes silent data loss
* Defect #7582: hiding form pages from search engines
* Defect #7597: Subversion and Mercurial log have the possibility to miss encoding
* Defect #7604: ActionView::TemplateError (undefined method `name' for nil:NilClass)
* Defect #7605: Using custom queries always redirects to "Issues" tab
* Defect #7615: CVS diffs do not handle new files properly
* Defect #7618: SCM diffs do not handle one line new files properly
* Defect #7639: Some date fields do not have requested format.
* Defect #7657: Wrong commit range in git log command on Windows
* Defect #7818: Wiki pages don't use the local timezone to display the "Updated ? hours ago" mouseover
* Defect #7821: Git "previous" and "next" revisions are incorrect
* Defect #7827: CVS: Age column on repository view is off by timezone delta
* Defect #7843: Add a relation between issues = explicit login window ! (basic authentication popup is prompted on AJAX request)
* Defect #8011: {{toc}} does not display headlines with inline code markup
* Defect #8029: List of users for adding to a group may be empty if 100 first users have been added
* Defect #8064: Text custom fields do not wrap on the issue list
* Defect #8071: Watching a subtask from the context menu updates main issue watch link
* Defect #8072: Two untranslatable default role names
* Defect #8075: Some "notifiable" names are not i18n-enabled
* Defect #8081: GIT: Commits missing when user has the "decorate" git option enabled
* Defect #8088: Colorful indentation of subprojects must be on right in RTL locales
* Defect #8239: notes field is not propagated during issue copy
* Defect #8356: GET /time_entries.xml ignores limit/offset parameters
* Defect #8432: Private issues information shows up on Activity page for unauthorized users
* Feature #746: Versioned issue descriptions
* Feature #1067: Differentiate public/private saved queries in the sidebar
* Feature #1236: Make destination folder for attachment uploads configurable
* Feature #1735: Per project repository log encoding setting
* Feature #1763: Autologin-cookie should be configurable
* Feature #1981: display mercurial tags
* Feature #2074: Sending email notifications when comments are added in the news section
* Feature #2096: Custom fields referencing system tables (users and versions)
* Feature #2732: Allow additional workflow transitions for author and assignee
* Feature #2910: Warning on leaving edited issue/wiki page without saving
* Feature #3396: Git: use --encoding=UTF-8 in "git log"
* Feature #4273: SCM command availability automatic check in administration panel
* Feature #4477: Use mime types in downloading from repository
* Feature #5518: Graceful fallback for "missing translation" needed
* Feature #5520: Text format buttons and preview link missing when editing comment
* Feature #5831: Parent Task to Issue Bulk Edit
* Feature #6887: Upgrade to Rails 2.3.11
* Feature #7139: Highlight changes inside diff lines
* Feature #7236: Collapse All for Groups
* Feature #7246: Handle "named branch" for mercurial
* Feature #7296: Ability for admin to delete users
* Feature #7318: Add user agent to Redmine Mailhandler
* Feature #7408: Add an application configuration file
* Feature #7409: Cross project Redmine links
* Feature #7410: Add salt to user passwords
* Feature #7411: Option to cipher LDAP ans SCM passwords stored in the database
* Feature #7412: Add an issue visibility level to each role
* Feature #7414: Private issues
* Feature #7517: Configurable path of executable for scm adapters
* Feature #7640: Add "mystery man" gravatar to options
* Feature #7858: RubyGems 1.6 support
* Feature #7893: Group filter on the users list
* Feature #7899: Box for editing comments should open with the formatting toolbar
* Feature #7921: issues by pulldown should have 'status' option
* Feature #7996: Bulk edit and context menu for time entries
* Feature #8006: Right click context menu for Related Issues
* Feature #8209: I18n YAML files not parsable with psych yaml library
* Feature #8345: Link to user profile from account page
* Feature #8365: Git: per project setting to report last commit or not in repository tree
* Patch #5148: metaKey not handled in issues selection
* Patch #5629: Wrap text fields properly in PDF
* Patch #7418: Redmine Persian Translation
* Patch #8295: Wrap title fields properly in PDF
* Patch #8310: fixes automatic line break problem with TCPDF
* Patch #8312: Switch to TCPDF from FPDF for PDF export
== 2011-04-29 v1.1.3
* Defect #5773: Email reminders are sent to locked users

View File

@@ -1,7 +1,7 @@
== Redmine installation
Redmine - project management software
Copyright (C) 2006-2010 Jean-Philippe Lang
Copyright (C) 2006-2011 Jean-Philippe Lang
http://www.redmine.org/
@@ -9,21 +9,21 @@ http://www.redmine.org/
* Ruby 1.8.6 or 1.8.7
* RubyGems 1.3.1
* RubyGems 1.3.7
* Ruby on Rails 2.3.5 (official downloadable Redmine releases are packaged with
* Ruby on Rails 2.3.11 (official downloadable Redmine releases are packaged with
the appropriate Rails version)
* Rack 1.0.1 gem
* Rack 1.1.0 gem
* Rake 0.8.3 gem
* I18n 0.4.2 gem
* A database:
* MySQL (tested with MySQL 5)
* PostgreSQL (tested with PostgreSQL 8.1)
* SQLite (tested with SQLite 3)
* MySQL (tested with MySQL 5.1)
* PostgreSQL (tested with PostgreSQL 8.4)
* SQLite3 (tested with SQLite 3.6)
Optional:
* SCM binaries (e.g. svn), for repository browsing (must be available in PATH)

View File

@@ -1,7 +1,7 @@
== Redmine upgrade
Redmine - project management software
Copyright (C) 2006-2010 Jean-Philippe Lang
Copyright (C) 2006-2011 Jean-Philippe Lang
http://www.redmine.org/
@@ -30,7 +30,7 @@ http://www.redmine.org/
6. Migrate your database
If you are upgrading to Rails 2.3.5 as part of this migration, you
If you are upgrading to Rails 2.3.11 as part of this migration, you
need to upgrade the plugin migrations before running the plugin migrations
using:
rake db:migrate:upgrade_plugin_migrations RAILS_ENV="production"
@@ -56,7 +56,7 @@ http://www.redmine.org/
== Notes
* Rails 2.3.5 is required for versions 0.9.x and 1.0.x.
* Rails 2.3.11 is required for versions 1.2.x.
== References

View File

@@ -40,33 +40,39 @@ module Redmine
@ic = Iconv.new(pdf_encoding, 'UTF-8')
end
super('P', 'mm', 'A4', (pdf_encoding == 'UTF-8'), pdf_encoding)
case pdf_encoding
when 'UTF-8'
@font_for_content = 'FreeSans'
@font_for_footer = 'FreeSans'
when 'CP949'
extend(PDF_Korean)
AddUHCFont()
@font_for_content = 'UHC'
@font_for_footer = 'UHC'
when 'CP932'
extend(PDF_Japanese)
AddSJISFont()
@font_for_content = 'SJIS'
@font_for_footer = 'SJIS'
when 'GB18030'
extend(PDF_Chinese)
AddGBFont()
@font_for_content = 'GB'
@font_for_footer = 'GB'
when 'BIG5'
extend(PDF_Chinese)
AddBig5Font()
@font_for_content = 'Big5'
@font_for_footer = 'Big5'
case current_language.to_s.downcase
when 'vi'
@font_for_content = 'DejaVuSans'
@font_for_footer = 'DejaVuSans'
else
@font_for_content = 'Arial'
@font_for_footer = 'Helvetica'
case pdf_encoding
when 'UTF-8'
@font_for_content = 'FreeSans'
@font_for_footer = 'FreeSans'
when 'CP949'
extend(PDF_Korean)
AddUHCFont()
@font_for_content = 'UHC'
@font_for_footer = 'UHC'
when 'CP932', 'SJIS', 'SHIFT_JIS'
extend(PDF_Japanese)
AddSJISFont()
@font_for_content = 'SJIS'
@font_for_footer = 'SJIS'
when 'GB18030'
extend(PDF_Chinese)
AddGBFont()
@font_for_content = 'GB'
@font_for_footer = 'GB'
when 'BIG5'
extend(PDF_Chinese)
AddBig5Font()
@font_for_content = 'Big5'
@font_for_footer = 'Big5'
else
@font_for_content = 'Arial'
@font_for_footer = 'Helvetica'
end
end
SetCreator(Redmine::Info.app_name)
SetFont(@font_for_content)
@@ -101,12 +107,12 @@ module Redmine
RDMPdfEncoding::rdm_pdf_iconv(@ic, txt)
end
def RDMCell(w,h=0,txt='',border=0,ln=0,align='',fill=0,link='')
Cell(w,h,fix_text_encoding(txt),border,ln,align,fill,link)
def RDMCell(w ,h=0, txt='', border=0, ln=0, align='', fill=0, link='')
Cell(w, h, fix_text_encoding(txt), border, ln, align, fill, link)
end
def RDMMultiCell(w,h=0,txt='',border=0,align='',fill=0)
MultiCell(w,h,fix_text_encoding(txt),border,align,fill)
def RDMMultiCell(w, h=0, txt='', border=0, align='', fill=0, ln=1)
MultiCell(w, h, fix_text_encoding(txt), border, align, fill, ln)
end
def Footer
@@ -276,8 +282,6 @@ module Redmine
"#{issue.project} - #{issue.tracker} # #{issue.id}: #{issue.subject}")
pdf.Ln
y0 = pdf.GetY
pdf.SetFontStyle('B',9)
pdf.RDMCell(35,5, l(:field_status) + ":","LT")
pdf.SetFontStyle('',9)
@@ -325,18 +329,18 @@ module Redmine
pdf.RDMMultiCell(155,5, (show_value custom_value),"R")
end
y0 = pdf.GetY
pdf.SetFontStyle('B',9)
pdf.RDMCell(35,5, l(:field_subject) + ":","LT")
pdf.SetFontStyle('',9)
pdf.RDMMultiCell(155,5, issue.subject,"RT")
pdf.Line(pdf.GetX, y0, pdf.GetX, pdf.GetY)
pdf.SetFontStyle('B',9)
pdf.RDMCell(35,5, l(:field_description) + ":","LT")
pdf.RDMCell(35+155, 5, l(:field_description), "LRT", 1)
pdf.SetFontStyle('',9)
pdf.RDMMultiCell(155,5, issue.description.to_s,"RT")
pdf.Line(pdf.GetX, y0, pdf.GetX, pdf.GetY)
pdf.Line(pdf.GetX, pdf.GetY, pdf.GetX + 190, pdf.GetY)
pdf.RDMMultiCell(35+155, 5, issue.description.to_s, "LRB")
pdf.Ln
if issue.changesets.any? &&
@@ -346,8 +350,9 @@ module Redmine
pdf.Ln
for changeset in issue.changesets
pdf.SetFontStyle('B',8)
pdf.RDMCell(190,5,
format_time(changeset.committed_on) + " - " + changeset.author.to_s)
csstr = "#{l(:label_revision)} #{changeset.format_identifier} - "
csstr += format_time(changeset.committed_on) + " - " + changeset.author.to_s
pdf.RDMCell(190, 5, csstr)
pdf.Ln
unless changeset.comments.blank?
pdf.SetFontStyle('',8)
@@ -408,6 +413,13 @@ module Redmine
txt = Redmine::CodesetUtil.replace_invalid_utf8(txt)
end
txt.force_encoding('ASCII-8BIT')
elsif RUBY_PLATFORM == 'java'
begin
ic ||= Iconv.new(l(:general_pdf_encoding), 'UTF-8')
txt = ic.iconv(txt)
rescue
txt = txt.gsub(%r{[^\r\n\t\x20-\x7e]}, '?')
end
else
ic ||= Iconv.new(l(:general_pdf_encoding), 'UTF-8')
txtar = ""

View File

@@ -199,7 +199,9 @@ module Redmine
end
def self.shellout(cmd, &block)
logger.debug "Shelling out: #{strip_credential(cmd)}" if logger && logger.debug?
if logger && logger.debug?
logger.debug "Shelling out: #{strip_credential(cmd)}"
end
if Rails.env == 'development'
# Capture stderr when running in dev environment
cmd = "#{cmd} 2>>#{RAILS_ROOT}/log/scm.stderr.log"
@@ -217,7 +219,13 @@ module Redmine
rescue Errno::ENOENT => e
msg = strip_credential(e.message)
# The command failed, log it and re-raise
logger.error("SCM command failed, make sure that your SCM binary (eg. svn) is in PATH (#{ENV['PATH']}): #{strip_credential(cmd)}\n with: #{msg}")
logmsg = "SCM command failed, "
logmsg += "make sure that your SCM command (e.g. svn) is "
logmsg += "in PATH (#{ENV['PATH']})\n"
logmsg += "You can configure your scm commands in config/configuration.yml.\n"
logmsg += "#{strip_credential(cmd)}\n"
logmsg += "with: #{msg}"
logger.error(logmsg)
raise CommandFailed.new(msg)
end
end

View File

@@ -95,6 +95,10 @@ module Redmine
Info.new(:root_url => CGI.unescape(summary['repository']['root']),
:lastrev => Revision.new(:revision => tip['revision'],
:scmid => tip['node']))
# rescue HgCommandAborted
rescue Exception => e
logger.error "hg: error during getting info: #{e.message}"
nil
end
def tags
@@ -276,7 +280,8 @@ module Redmine
end
blame
rescue HgCommandAborted
nil # means not found or cannot be annotated
# means not found or cannot be annotated
Annotate.new
end
class Revision < Redmine::Scm::Adapters::Revision

View File

@@ -4,13 +4,13 @@ module Redmine
module VERSION #:nodoc:
MAJOR = 1
MINOR = 2
TINY = 0
TINY = 1
# Branch values:
# * official release: nil
# * stable branch: stable
# * trunk: devel
BRANCH = 'devel'
BRANCH = 'stable'
def self.revision
revision = nil

View File

@@ -1,16 +1,16 @@
# Redmine - project management software
# Copyright (C) 2006-2008 Jean-Philippe Lang
# Copyright (C) 2006-2011 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
@@ -29,7 +29,7 @@ General options:
create: create a user account
no_permission_check=1 disable permission checking when receiving
the email
Issue attributes control options:
project=PROJECT identifier of the target project
status=STATUS name of the target status
@@ -58,10 +58,10 @@ END_DESC
options[:allow_override] = ENV['allow_override'] if ENV['allow_override']
options[:unknown_user] = ENV['unknown_user'] if ENV['unknown_user']
options[:no_permission_check] = ENV['no_permission_check'] if ENV['no_permission_check']
MailHandler.receive(STDIN.read, options)
end
desc <<-END_DESC
Read emails from an IMAP server.
@@ -73,7 +73,7 @@ General options:
create: create a user account
no_permission_check=1 disable permission checking when receiving
the email
Available IMAP options:
host=HOST IMAP server host (default: 127.0.0.1)
port=PORT IMAP server port (default: 143)
@@ -81,7 +81,7 @@ Available IMAP options:
username=USERNAME IMAP account
password=PASSWORD IMAP password
folder=FOLDER IMAP folder to read (default: INBOX)
Issue attributes control options:
project=PROJECT identifier of the target project
status=STATUS name of the target status
@@ -91,22 +91,22 @@ Issue attributes control options:
allow_override=ATTRS allow email content to override attributes
specified by previous options
ATTRS is a comma separated list of attributes
Processed emails control options:
move_on_success=MAILBOX move emails that were successfully received
to MAILBOX instead of deleting them
move_on_failure=MAILBOX move emails that were ignored to MAILBOX
Examples:
# No project specified. Emails MUST contain the 'Project' keyword:
rake redmine:email:receive_iamp RAILS_ENV="production" \\
host=imap.foo.bar username=redmine@example.net password=xxx
# Fixed project and default tracker specified, but emails can override
# both tracker and priority attributes:
rake redmine:email:receive_iamp RAILS_ENV="production" \\
host=imap.foo.bar username=redmine@example.net password=xxx ssl=1 \\
project=foo \\
@@ -123,7 +123,7 @@ END_DESC
:folder => ENV['folder'],
:move_on_success => ENV['move_on_success'],
:move_on_failure => ENV['move_on_failure']}
options = { :issue => {} }
%w(project status tracker category priority).each { |a| options[:issue][a.to_sym] = ENV[a] if ENV[a] }
options[:allow_override] = ENV['allow_override'] if ENV['allow_override']
@@ -132,7 +132,7 @@ END_DESC
Redmine::IMAP.check(imap_options, options)
end
desc <<-END_DESC
Read emails from an POP3 server.
@@ -148,7 +148,7 @@ Available POP3 options:
See redmine:email:receive_imap for more options and examples.
END_DESC
task :receive_pop3 => :environment do
pop_options = {:host => ENV['host'],
:port => ENV['port'],
@@ -156,24 +156,24 @@ END_DESC
:username => ENV['username'],
:password => ENV['password'],
:delete_unprocessed => ENV['delete_unprocessed']}
options = { :issue => {} }
%w(project status tracker category priority).each { |a| options[:issue][a.to_sym] = ENV[a] if ENV[a] }
options[:allow_override] = ENV['allow_override'] if ENV['allow_override']
options[:unknown_user] = ENV['unknown_user'] if ENV['unknown_user']
options[:no_permission_check] = ENV['no_permission_check'] if ENV['no_permission_check']
Redmine::POP3.check(pop_options, options)
end
desc "Send a test email to the user with the provided login name"
task :test, :login, :needs => :environment do |task, args|
include Redmine::I18n
abort l(:notice_email_error, "Please include the user login to test with. Example: login=examle-login") if args[:login].blank?
abort l(:notice_email_error, "Please include the user login to test with. Example: rake redmine:email:test[login]") if args[:login].blank?
user = User.find_by_login(args[:login])
abort l(:notice_email_error, "User #{args[:login]} not found") unless user.logged?
abort l(:notice_email_error, "User #{args[:login]} not found") unless user && user.logged?
ActionMailer::Base.raise_delivery_errors = true
begin
Mailer.deliver_test(User.current)

View File

@@ -309,6 +309,7 @@ var WarnLeavingUnsaved = Class.create({
},
unload: function(){
this.observedElements.each(function(el) {el.blur();})
if(this.changedForms)
return this.message;
},

View File

@@ -434,6 +434,10 @@ input#time_entry_comments { width: 90%;}
.tabular.settings label{ margin-left: -300px; width: 295px; }
.tabular.settings textarea { width: 99%; }
.tabular.settings.enabled_scm table {width:100%}
.tabular.settings.enabled_scm td.scm_name{ font-weight: bold; }
.tabular.settings.enabled_scm p.scm_config{ padding-left: 8px; font-style:italic;}
fieldset.settings label { display: block; }
fieldset#notified_events .parent { padding-left: 20px; }
@@ -505,6 +509,8 @@ div.flash.warning {
color: #A6750C;
}
span.error {padding-left:20px; background:url(../images/exclamation.png) no-repeat 0 50%;}
#errorExplanation ul { font-size: 0.9em;}
#errorExplanation h2, #errorExplanation p { display: none; }

View File

@@ -27,3 +27,10 @@ journals_004:
journalized_type: Issue
user_id: 1
journalized_id: 6
journals_005:
id: 5
created_on: <%= 1.days.ago.to_date.to_s(:db) %>
notes: "A comment on a private issue."
user_id: 2
journalized_type: Issue
journalized_id: 14

View File

@@ -38,6 +38,6 @@ massa. Sed sodales, ante fermentum ultricies sollicitudin, massa leo
pulvinar dui, a gravida orci mi eget odio. Nunc a lacus.
Project: onlinestore
Tracker: Feature request
category: Stock management
priority: Urgent
Tracker: Feature Request
category: stock management
priority: URGENT

View File

@@ -22,6 +22,7 @@ roles_001:
- :delete_issues
- :view_issue_watchers
- :add_issue_watchers
- :set_issues_private
- :delete_issue_watchers
- :manage_public_queries
- :save_queries

View File

@@ -18,9 +18,6 @@
require File.expand_path('../../test_helper', __FILE__)
require 'application_controller'
# Re-raise errors caught by the controller.
class ApplicationController; def rescue_action(e) raise e end; end
class ApplicationControllerTest < ActionController::TestCase
include Redmine::I18n

View File

@@ -19,7 +19,7 @@ class CalendarsControllerTest < ActionController::TestCase
context "GET :show" do
should "run custom queries" do
@query = Query.generate_default!
@query = Query.generate_default!(:is_public => true)
get :show, :query_id => @query.id
assert_response :success

View File

@@ -74,6 +74,8 @@ class IssueRelationsControllerTest < ActionController::TestCase
:relation => {:issue_to_id => '4', :relation_type => 'relates', :delay => ''}
end
end
should "prevent relation creation when there's a circular dependency"
def test_destroy
assert_difference 'IssueRelation.count', -1 do

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