Compare commits

...

272 Commits
1.4.5 ... 2.0.3

Author SHA1 Message Date
Jean-Philippe Lang
87e8b02828 tagged version 2.0.3
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/tags/2.0.3@9868 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-18 20:22:13 +00:00
Jean-Philippe Lang
342b3302cf Merged r9864 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.0-stable@9865 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-18 18:45:14 +00:00
Jean-Philippe Lang
32e3d6e1b1 Merged r9861 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.0-stable@9862 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-18 18:34:01 +00:00
Jean-Philippe Lang
8d2d46bd8e Merged r9858 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.0-stable@9859 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-18 18:17:49 +00:00
Toshi MARUYAMA
7f03576b8d Merged r9853 from trunk (#10688)
fix PDF export tables problems.

Contributed by Jun NAITOH.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.0-stable@9854 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-17 13:10:48 +00:00
Toshi MARUYAMA
e757600b39 Merge r9750 from trunk
scm: git: skip Latin-1 path tests on Git for Windows above 1.7.10

Git for Windows (msysGit) changed internal API from ANSI to Unicode in 1.7.10.
http://code.google.com/p/msysgit/issues/detail?id=80

So, Latin-1 path tests fail on Japanese Windows.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.0-stable@9851 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-17 10:52:18 +00:00
Jean-Philippe Lang
68560c13fe Merged r9830 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.0-stable@9848 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-17 09:02:24 +00:00
Jean-Philippe Lang
309f7b75fd Merged r9837 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.0-stable@9846 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-17 08:59:42 +00:00
Jean-Philippe Lang
dbb93692ff Merged r9836 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.0-stable@9845 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-17 08:58:20 +00:00
Jean-Philippe Lang
5f6289d6be Merged r9831 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.0-stable@9843 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-17 08:56:11 +00:00
Jean-Philippe Lang
081ee54bee Merged r9822 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.0-stable@9840 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-17 08:52:40 +00:00
Jean-Philippe Lang
1d0fb85179 Merged r9796 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.0-stable@9839 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-17 08:51:04 +00:00
Etienne Massip
887e7f8647 Merged r9832 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.0-stable@9834 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-14 21:09:56 +00:00
Toshi MARUYAMA
df05edff3d Merged r9814 from trunk
fix test_user_index of activities controller test fails at Japanese morning and afternoon.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.0-stable@9818 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-11 06:56:11 +00:00
Jean-Philippe Lang
67057ea3e9 Merged r9798 to r9801 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.0-stable@9802 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-10 13:39:42 +00:00
Jean-Philippe Lang
381e7156c2 Merged r9782, r9784, r9794 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.0-stable@9795 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-09 14:19:13 +00:00
Jean-Philippe Lang
f9ee57f2c1 Merged r9781 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.0-stable@9793 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-09 13:58:40 +00:00
Jean-Philippe Lang
fc13aef5bb Merged r9785 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.0-stable@9792 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-09 13:56:56 +00:00
Jean-Philippe Lang
4973350243 Merged r9783 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.0-stable@9789 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-09 13:45:55 +00:00
Jean-Philippe Lang
fcbb8acdb7 Merged r9786 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.0-stable@9788 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-09 13:44:32 +00:00
Toshi MARUYAMA
d79258f17f Merged r9777 from trunk (#11113)
fix German "field_multiple" translation glitch by Andreas Deininger.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.0-stable@9778 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-08 07:49:16 +00:00
Jean-Philippe Lang
c4736ed42b Merged r9770 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.0-stable@9771 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-05 17:19:37 +00:00
Jean-Philippe Lang
47fb2eb998 Merged r9768 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.0-stable@9769 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-05 17:11:06 +00:00
Jean-Philippe Lang
e9813791cb Merged r9759 to r9764.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.0-stable@9766 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-03 16:32:21 +00:00
Jean-Philippe Lang
5f23ebc31c Merged r9755 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.0-stable@9756 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-03 08:50:26 +00:00
Jean-Philippe Lang
b88c95b0fb Merged r9740 and r9741 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.0-stable@9753 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-03 08:10:00 +00:00
Jean-Philippe Lang
93d8f99884 Merged r9742 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.0-stable@9751 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-06-03 08:07:07 +00:00
Toshi MARUYAMA
07edb10518 Merged r9734 from trunk (#11032)
fix project list is not shown on Email notifications.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.0-stable@9739 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-28 10:31:19 +00:00
Jean-Philippe Lang
0512a30368 Updates for 2.0.1 release.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.0-stable@9732 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-28 07:24:38 +00:00
Jean-Philippe Lang
bc945d78a6 Merged r9719, r9726, r9727 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.0-stable@9729 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-27 19:39:26 +00:00
Jean-Philippe Lang
8cd0626075 Merged r9701 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.0-stable@9728 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-27 19:25:30 +00:00
Jean-Philippe Lang
035bd65a5a Merged r9710 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.0-stable@9725 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-26 09:50:51 +00:00
Jean-Philippe Lang
955d2b134d Merged r9711 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.0-stable@9724 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-26 09:50:01 +00:00
Jean-Philippe Lang
743b55a3f9 Merged r9718 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.0-stable@9723 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-26 09:49:19 +00:00
Jean-Philippe Lang
881595f7f0 Merged r9712 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.0-stable@9722 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-26 09:48:37 +00:00
Jean-Philippe Lang
7f51bab0fc Merged r9709 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.0-stable@9721 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-26 09:47:48 +00:00
Jean-Philippe Lang
84d5092508 Merged r9699 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.0-stable@9720 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-26 09:40:31 +00:00
Jean-Philippe Lang
352d177f7e Merged r9703 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.0-stable@9706 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-21 19:00:26 +00:00
Jean-Philippe Lang
821ea2a757 Merged r9702 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.0-stable@9705 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-21 18:59:31 +00:00
Jean-Philippe Lang
7cd7b1bd8b Merged r9700 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.0-stable@9704 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-21 18:58:29 +00:00
Jean-Philippe Lang
cf139e25a7 Merged r9696 from trunk. Updates for 2.0.0 release.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.0-stable@9697 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-14 22:19:13 +00:00
Jean-Philippe Lang
8b09f5d27d Set version to stable.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.0-stable@9695 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-14 17:02:27 +00:00
Jean-Philippe Lang
d138df5241 Added 2.0-stable branch.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.0-stable@9694 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-14 16:48:29 +00:00
Jean-Philippe Lang
034539c988 CHANGELOG updated.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9691 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-13 19:08:25 +00:00
Jean-Philippe Lang
48c28f717d Removed delete_broken_cookies filter.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9689 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-13 11:26:21 +00:00
Jean-Philippe Lang
23a06ec022 Restored List-Id header in email notifications (#10888).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9687 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-13 10:44:41 +00:00
Jean-Philippe Lang
4f0aa2432c Fixes custom_field_tag helper broken by r9682.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9686 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-13 10:21:24 +00:00
Jean-Philippe Lang
426b1d6fcd Fixed that option tags are escaped.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9683 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-13 09:00:26 +00:00
Jean-Philippe Lang
478a549356 Use content_tag helper.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9682 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-13 08:47:54 +00:00
Jean-Philippe Lang
69e55fb1ef Fixed that enumerations option tags are escaped.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9681 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-13 08:45:15 +00:00
Jean-Philippe Lang
46400e355e Use content_tag helper.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9680 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-13 08:42:19 +00:00
Jean-Philippe Lang
dc7569ecae Fixed that group filter is escaped on users index.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9679 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-13 08:38:35 +00:00
Jean-Philippe Lang
7c97832002 Redirect to referer when deleting a user (#10865).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9678 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-13 08:33:55 +00:00
Jean-Philippe Lang
46e48ad3f7 Updated INSTALL and UPGRADING docs with new rake task (#10891).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9677 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-12 13:14:53 +00:00
Jean-Philippe Lang
a59257dfb6 Fixed #set_scm in reposman (#10837).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9675 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-12 12:54:46 +00:00
Jean-Philippe Lang
9382d856b4 Adds script synopsis.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9674 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-12 12:50:15 +00:00
Jean-Philippe Lang
30d2bed1fe Fixed reposman arguments parsing (#10837).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9673 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-12 12:47:51 +00:00
Jean-Philippe Lang
a99c61b471 Adds all/none operators to text custom field filters (#9790).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9671 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-12 12:23:20 +00:00
Jean-Philippe Lang
1d677ac968 Restored :generate_session_store as a deprecated rake task (#10891).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9670 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-12 07:48:21 +00:00
Toshi MARUYAMA
1ccc975f3f set svn:eol-style native to Albanian translation files (#10875)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9667 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-11 04:33:01 +00:00
Toshi MARUYAMA
dca52d6729 Albanian translation added by Dimitri Toslluku (#10875)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9666 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-11 04:25:43 +00:00
Jean-Philippe Lang
1831861eac Tests for Setting.per_page_options_array.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9665 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-10 18:53:32 +00:00
Jean-Philippe Lang
5bd90548b0 Adaptive display of "Per page" links (#7720).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9664 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-10 18:51:11 +00:00
Toshi MARUYAMA
0bb937152b change mailer model method comments to Rails3 style
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9663 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-09 15:14:45 +00:00
Toshi MARUYAMA
804864beca replace Mailer deliver syntax to Rails3 style at reminders method of mailer model
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9662 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-09 15:14:30 +00:00
Toshi MARUYAMA
2ed78d95f6 code layout cleanup app/views/wiki/edit.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9661 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-09 14:18:53 +00:00
Toshi MARUYAMA
678469cf09 additional comment at config/environments/test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9660 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-09 13:58:59 +00:00
Toshi MARUYAMA
11746c44f8 set svn:executable '*' to script/*
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9659 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-09 13:10:04 +00:00
Toshi MARUYAMA
411f0874ab replace comment "config/environment.rb" to "config/application.rb" at head of config/environments/*.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9658 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-09 12:04:10 +00:00
Toshi MARUYAMA
0ba0a7bcc9 remove commented out Rails2 including from lib/redmine/hook.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9657 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-09 10:50:10 +00:00
Jean-Philippe Lang
ddfb2315aa Replaced "Allow users to unsubscribe" with "Allow users to delete their own account" (#10787).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9654 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-08 11:03:45 +00:00
Jean-Philippe Lang
1ad003dcc7 Fixed that REST Uploads fail with fastcgi (#10832).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9652 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-08 10:11:09 +00:00
Jean-Philippe Lang
7b6d11ed6a Removed comments.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9651 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-07 17:24:20 +00:00
Jean-Philippe Lang
04fe0412e1 Use optparse instead rdoc/usage in rdm-mailhandler (#10837).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9650 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-07 17:23:30 +00:00
Jean-Philippe Lang
03e9c51776 Formatting.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9649 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-06 21:18:31 +00:00
Jean-Philippe Lang
3710bbfda1 Use optparse instead rdoc/usage in reposman (#10837).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9648 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-06 21:16:54 +00:00
Jean-Philippe Lang
df7ddf5c0e Use uppercase NAME and VERSION environment variables for plugin migration tasks (#10838).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9647 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-06 21:03:30 +00:00
Toshi MARUYAMA
31d2d1284a remove redundant code from app/models/mail_handler.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9646 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-06 13:50:30 +00:00
Jean-Philippe Lang
f6882cd69e Stub Mailer with mocha.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9645 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-06 08:43:44 +00:00
Jean-Philippe Lang
18852b765a Trackers should be sorted by position not by name.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9644 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-05 16:21:22 +00:00
Jean-Philippe Lang
ee8dcab9db Fixed that activities option tags on the time entry bulk edit form are escaped.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9643 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-05 16:09:27 +00:00
Toshi MARUYAMA
02f704bb01 add Copyright statement to test/integration/repositories_git_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9642 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-05 14:48:45 +00:00
Toshi MARUYAMA
f08b648cce fix error of AdminControllerTest test_test_email_failure_should_display_the_error
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9641 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-05 14:34:16 +00:00
Jean-Philippe Lang
19e56045dd Fixed deprecated render calls in Mailer.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9640 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-05 13:21:58 +00:00
Jean-Philippe Lang
6fc909a402 Adds a deprecation warning to Mailer.deliver_*.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9639 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-05 13:17:18 +00:00
Toshi MARUYAMA
7af8d7caf0 replace Mailer deliver syntax to Rails3 style
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9638 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-05 13:07:12 +00:00
Jean-Philippe Lang
e876d1bfc0 Changes RedMine to Redmine in copyright notices.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9637 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-05 13:02:45 +00:00
Jean-Philippe Lang
ba5a052c8c Copyright update.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9636 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-05 12:56:53 +00:00
Toshi MARUYAMA
6e7eadf9fb move unit mailer test last_email method to the bottom and change to private
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9635 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-05 12:20:18 +00:00
Toshi MARUYAMA
5ce2987ea9 add missing fixture to test/unit/mailer_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9634 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-05 12:20:01 +00:00
Jean-Philippe Lang
a3c25c18d7 Code cleanup, reuse the visible scope.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9633 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-05 09:54:50 +00:00
Jean-Philippe Lang
61a1fa1b6e Do not trigger model validations when rebuilding the nested set (#10829).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9632 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-05 09:39:38 +00:00
Jean-Philippe Lang
1ab261dda6 Use Mail instead of TMail in MailHandler.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9630 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-05 09:19:23 +00:00
Toshi MARUYAMA
255a84878d svn propset "svn:eol-style" native test/integration/repositories_git_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9629 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-05 05:34:17 +00:00
Toshi MARUYAMA
6bcbdd44fc route: scm: fix diff of two revisions
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9628 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-05 05:29:58 +00:00
Toshi MARUYAMA
66d62504ef test: route: scm: move changes action tests to non revisions path tests
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9627 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-05 05:29:43 +00:00
Toshi MARUYAMA
17d19febc6 fix typo of integration users test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9626 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-05 05:29:28 +00:00
Toshi MARUYAMA
b0414ec1fb route: scm: split entry and raw actions
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9625 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-05 01:01:29 +00:00
Toshi MARUYAMA
569e1b37cc model: convert news finder to Rails3 syntax
Contributed by Felix Schäfer.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9624 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-04 23:35:29 +00:00
Toshi MARUYAMA
bef28f7dab test: switch to Rails3 Active Record syntax at test_destroy of unit/repository_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9623 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-04 23:07:10 +00:00
Toshi MARUYAMA
49fc255b48 test: switch to Rails3 Active Record syntax at unit/query_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9622 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-04 23:06:47 +00:00
Toshi MARUYAMA
6c6467879a scm: fix revision graph left padding
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9621 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-04 17:07:38 +00:00
Jean-Philippe Lang
9f396a6dfb Fixed undefined method `<=>' for nil:NilClass when sorting repositories with nil identifiers (#10827).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9619 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-04 16:57:15 +00:00
Toshi MARUYAMA
ad8193dcde fix label_for_field of LabelledFormBuilder always has class="error" in label tag
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9618 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-04 14:33:35 +00:00
Toshi MARUYAMA
b4350ca91a route: scm: fix git and mercurial changes action
If branch name has special character, "View revisions" link has route error.
For example, Redmine Mercurial hgsubversion mirror has "../sandbox/rails-3.2" named branch.

Git default branch of bare repository is defined at HEAD.
In most cases, it is *master*.
Mercurial GUI standard behavior is showing all revisions on top page.
So, Redmine default branch is *nil*.
Mercurial top page "View revisions" link has route error.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9617 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-03 14:49:29 +00:00
Toshi MARUYAMA
2c28d6b5d1 scm: git: fix creating and updating repository
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9616 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-03 11:48:33 +00:00
Jean-Philippe Lang
36ee2b24bd Load rake tasks from Redmine plugins (#10816).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9615 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-02 16:30:16 +00:00
Jean-Philippe Lang
d2278b63a1 Fixed path for loading plugin Gemfile (#10811).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9614 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-02 16:20:32 +00:00
Toshi MARUYAMA
d658ab22d6 scm: fix broken main repository 'root' link
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9613 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-02 15:58:03 +00:00
Toshi MARUYAMA
1446c9b7f0 scm: fix git and mercurial branch list box action
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9612 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-02 13:19:16 +00:00
Toshi MARUYAMA
9be6dfbe10 code layout clean up test/integration/routing/repositories_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9611 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-02 13:18:56 +00:00
Jean-Philippe Lang
38011c0fb1 Fixed error on commits per month graph (#10806).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9610 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-01 21:12:47 +00:00
Jean-Philippe Lang
d1372107e5 Updated test for r9608.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9609 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-01 18:01:21 +00:00
Jean-Philippe Lang
c085367bb6 Adds css class to custom field input tags.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9608 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-01 16:50:42 +00:00
Jean-Philippe Lang
bebe429472 Fixed the path displayed in error message.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9605 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-01 15:50:16 +00:00
Jean-Philippe Lang
0491488554 Updates dispatch.fcgi.example to work with Rails3 and removes CGI handlers.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9604 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-01 15:48:46 +00:00
Jean-Philippe Lang
785825900a Adds environment information display to /admin/info.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9603 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-01 14:49:53 +00:00
Toshi MARUYAMA
017d974dd8 remove trailing white-spaces from test/unit/mailer_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9602 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-01 12:45:39 +00:00
Jean-Philippe Lang
5b680625c1 Adds a simple script/about.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9601 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-01 11:41:15 +00:00
Jean-Philippe Lang
6fca028905 Make sure we don't boot with plugins in vendor/plugins.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9600 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-01 10:42:25 +00:00
Jean-Philippe Lang
b097a1753e Let redmine:plugins:assets mirror a single plugin assets with name=.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9599 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-01 10:25:22 +00:00
Jean-Philippe Lang
f54ecfc55f Fixed that sidebar with hook content only should not be hidden.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9598 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-01 10:19:06 +00:00
Jean-Philippe Lang
45093230a9 Adds deprecated tasks for plugins migration.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9597 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-01 09:02:34 +00:00
Toshi MARUYAMA
f4b9d2a7ee route: remove duplicate repository committers
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9596 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-01 05:08:07 +00:00
Toshi MARUYAMA
e1920cc9e4 recovery base.html.erb "call_hook :view_layouts_base_sidebar" changed in Rails3 r9528
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9595 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-01 03:58:53 +00:00
Jean-Philippe Lang
f10fed295a Fixed generated shebang in script/rails.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9594 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-30 18:52:19 +00:00
Toshi MARUYAMA
0fcc82482e Simplified Chinese translation updated (#10800)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9591 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-30 13:10:42 +00:00
Toshi MARUYAMA
ee4928d17c remove trailing white-spaces from lib/tasks/ciphering.rake
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9590 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-29 13:26:54 +00:00
Toshi MARUYAMA
8a67fe30af remove trailing white-spaces from lib/tasks/deprecated.rake
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9589 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-29 13:26:26 +00:00
Toshi MARUYAMA
db9a2c1c58 remove trailing white-spaces from lib/tasks/ci.rake
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9588 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-29 13:25:40 +00:00
Toshi MARUYAMA
767a057333 remove trailing white-spaces from lib/tasks/redmine.rake
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9587 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-29 13:25:07 +00:00
Toshi MARUYAMA
30ceec20a6 remove trailing white-spaces from lib/tasks/reminder.rake
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9586 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-29 13:24:34 +00:00
Toshi MARUYAMA
910cb8ff06 replace tabs to spaces at lib/tasks/migrate_from_mantis.rake
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9585 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-29 13:23:59 +00:00
Toshi MARUYAMA
6a1a4e006d remove trailing white-spaces from lib/tasks/migrate_from_mantis.rake
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9584 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-29 12:21:18 +00:00
Jean-Philippe Lang
d2378ea641 Don't send test email asynchronously.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9583 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-29 10:09:39 +00:00
Jean-Philippe Lang
8d17242b82 Fixed task redmine:email:test broken by r9080.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9582 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-29 10:04:25 +00:00
Jean-Philippe Lang
1e491c0bfd Makes migrate_from_mantis compatible with Rails3.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9581 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-29 09:49:02 +00:00
Jean-Philippe Lang
fb8ca0d2f8 Makes migrate_from_trac compatible with Rails3.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9580 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-29 09:19:08 +00:00
Jean-Philippe Lang
d8c70d7a11 Fixed openid redirect.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9579 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-29 08:48:50 +00:00
Jean-Philippe Lang
253b02bd22 Adds an id to the flash message divs (#9034).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9578 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-29 08:25:50 +00:00
Jean-Philippe Lang
99cfca6f83 Adds assertions for r9572.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9577 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-29 07:47:58 +00:00
Jean-Philippe Lang
6143d119fe Merged #merge! calls.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9576 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-29 07:42:48 +00:00
Jean-Philippe Lang
0162222bb2 Tests broken by r9573.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9575 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-29 07:34:57 +00:00
Toshi MARUYAMA
ab92280a7f view: labelled_remote_form_for: equals sign mandatory to print blocks and use :as
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9574 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-29 04:08:59 +00:00
Toshi MARUYAMA
c0891e8a78 helper: replace remote_form_for to form_for at labelled_remote_form_for
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9573 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-29 04:08:44 +00:00
Toshi MARUYAMA
f624d01fd8 view: labelled_form_for: equals sign mandatory to print blocks and use :as
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9572 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-29 02:47:36 +00:00
Toshi MARUYAMA
4b2fc90431 view: remote_form_for: equals sign mandatory to print blocks and replace to form_for and use :remote => true and :as
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9571 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-29 02:43:42 +00:00
Jean-Philippe Lang
49b28fca68 Clean up custom field format definition.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9570 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-28 16:19:32 +00:00
Jean-Philippe Lang
1e3e23d756 RecordNotFound exception still raised with Rails3.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9569 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-28 13:00:16 +00:00
Jean-Philippe Lang
68d5af3dd8 Set the default session store.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9568 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-28 12:26:24 +00:00
Jean-Philippe Lang
bceaf8be94 Let the secret token be set in configuration.yml.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9567 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-28 12:00:45 +00:00
Jean-Philippe Lang
52986e8cd1 Displays an explicit message when trying to start Redmine with an old session_store.rb.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9566 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-28 11:48:34 +00:00
Jean-Philippe Lang
10c0634413 Removed /vendor/plugins directory. Redmine plugins should be dropped in /plugins now.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9565 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-28 11:34:52 +00:00
Jean-Philippe Lang
e4a9ce6db0 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9564 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-28 11:20:13 +00:00
Jean-Philippe Lang
584fbc8f8b Fix no longer required with Rails 3.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9563 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-28 11:14:16 +00:00
Jean-Philippe Lang
5985713335 Restores plugin assets mirroring on startup, but it can now be disabled in configuration.yml.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9561 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-28 11:07:59 +00:00
Jean-Philippe Lang
68f8470d4a Makes image_tag pick the image from the current theme if it exists.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9560 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-28 09:47:09 +00:00
Jean-Philippe Lang
da43f785be Adds support for :plugin option to image_tag helper.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9559 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-28 09:18:12 +00:00
Jean-Philippe Lang
03335d014c Restores support for :plugin support to stylesheet_link_tag and javascript_include_tag helpers.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9558 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-28 09:10:46 +00:00
Jean-Philippe Lang
f12942ff40 Make sure that "today" does not change during tests.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9557 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-27 23:53:34 +00:00
Jean-Philippe Lang
c7d78ef094 Fixed gantt_test, Date.today and 0.day.from_now may not be the same depending on time and time zone.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9556 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-27 23:50:56 +00:00
Toshi MARUYAMA
5909b00a46 Gemfile: pin shoulda version
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9555 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-27 22:52:05 +00:00
Jean-Philippe Lang
ee0d4a12a3 Adds a message for when assertion fails.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9554 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-27 21:08:34 +00:00
Jean-Philippe Lang
705b6b16a5 Fixed that hr.yml and pt-BR.yml cannot be loaded with ruby-1.9.3-p194-i386-mingw32.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9553 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-27 21:07:57 +00:00
Jean-Philippe Lang
301e0386f5 Reverts r9547 that breaks 2 tests.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9552 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-27 17:04:37 +00:00
Jean-Philippe Lang
a97e2593af Added config/additional_environment.rb to svn:ignore (#10778).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9551 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-27 16:36:24 +00:00
Jean-Philippe Lang
f2ec23d80c set_table_name deprecated.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9550 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-27 16:31:51 +00:00
Jean-Philippe Lang
d940797aa7 set_table_name and set_locking_column are deprecated.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9549 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-27 16:28:35 +00:00
Toshi MARUYAMA
d2f779d6e8 remove trailing white-spaces from config/routes.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9548 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-27 16:17:31 +00:00
Toshi MARUYAMA
8047a8cd28 route: use constraints for repositories ":format => 'raw'" and :action
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9547 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-27 16:17:17 +00:00
Toshi MARUYAMA
dd23e07111 route: add constraints to repositories which are lost in Rails3 route
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9546 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-27 16:17:03 +00:00
Toshi MARUYAMA
d7e14cb7b7 Bulgarian translation (jstoolbar) updated by Ivan Cenov (#10785)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9543 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-27 11:44:38 +00:00
Toshi MARUYAMA
882d46661e Estonian translation updated by Heigo Toom (#10782)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9542 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-27 03:33:39 +00:00
Toshi MARUYAMA
6fcea5ef9d scm: git: fix test revision value of unit lib test
Hash value range is from 0 to 9 and a to f

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9541 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-27 01:33:04 +00:00
Toshi MARUYAMA
d19a7dee42 add fixtures to test/unit/lib/redmine/helpers/gantt_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9540 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-27 00:55:37 +00:00
Toshi MARUYAMA
6f8d7d6e76 remove Rails2 named_scope wrapper from config/initializers/10-patches.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9539 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-26 23:51:40 +00:00
Toshi MARUYAMA
bf4d779ea2 replace Rails2 "named_scope" to Rails3 "scope" at lib/plugins/acts_as_watchable/lib/acts_as_watchable.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9538 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-26 23:51:25 +00:00
Toshi MARUYAMA
d0d01d4e70 model: replace Rails2 "named_scope" to Rails3 "scope"
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9537 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-26 23:51:10 +00:00
Jean-Philippe Lang
71649ba2f1 Removed #utf8nize! that is no longer used with Rails 3.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9536 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-26 20:11:10 +00:00
Jean-Philippe Lang
79091382cc Removed tzinfo gem requirement.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9535 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-26 18:28:41 +00:00
Jean-Philippe Lang
cb16661d36 Removes the XML declaration that breaks the parser with JRuby.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9534 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-26 17:57:49 +00:00
Jean-Philippe Lang
8d73ddf73f Moved Rails plugins required by the core to lib/plugins.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9533 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-26 17:23:24 +00:00
Jean-Philippe Lang
26868d8b14 Port async delivery methods to Rails 3.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9532 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-26 16:55:53 +00:00
Jean-Philippe Lang
abdcd7d705 Removed Rails 2.3 patch for ruby1.9.3.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9531 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-26 16:31:50 +00:00
Jean-Philippe Lang
6d41de61a5 Do not sanitize escaped text in NullFormatter.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9530 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-25 19:49:26 +00:00
Jean-Philippe Lang
d15ab86459 Manually generates the javascript that prototype_helper fails to do with ruby1.9.2.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9529 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-25 18:17:00 +00:00
Jean-Philippe Lang
5e57a1a9d9 Merged rails-3.2 branch.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9528 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-25 17:17:49 +00:00
Toshi MARUYAMA
34e20c4373 Swedish translation updated by Nicklas Holm (#10750)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9523 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-24 09:44:56 +00:00
Toshi MARUYAMA
70d98acf9a Japanese translation updated by Go MAEDA (#10745)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9520 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-24 07:27:58 +00:00
Toshi MARUYAMA
215f4adcd7 Traditional Chinese translation updated by ChunChang Lo (#10733)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9509 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-23 08:33:33 +00:00
Jean-Philippe Lang
ccf37f59a9 Methods moved.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9473 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-22 12:47:50 +00:00
Jean-Philippe Lang
0fad78f53f Removed Query.generate_default! helper.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9472 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-22 12:46:43 +00:00
Jean-Philippe Lang
2e3bf71e9a Removed #generate_with_protected helper methods.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9471 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-22 12:45:13 +00:00
Jean-Philippe Lang
95f9246a46 Renamed object_daddy_helper and removed exemplars.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9470 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-22 11:58:05 +00:00
Jean-Philippe Lang
b960470d78 Removed object_daddy dependency.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9469 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-22 11:56:47 +00:00
Jean-Philippe Lang
4a3f038595 Use create!.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9468 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-22 08:42:32 +00:00
Jean-Philippe Lang
1c31e32df7 No need to save journal details.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9467 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-22 08:26:45 +00:00
Jean-Philippe Lang
4598c64ebd Additional tests for IssuesHelper#show_detail.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9466 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-22 08:24:39 +00:00
Jean-Philippe Lang
9305c84093 Reverted r9464 that broke a test. Project identifiers or ids can be used as parameters.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9465 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-22 07:19:45 +00:00
Toshi MARUYAMA
72ab3e22b1 Rails3: use Project.visible.find_by_identifier instead of .find for adding watchers dialog on new issue
On Rails 3.0.12, find_project method returns render_404

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9464 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-22 04:01:04 +00:00
Toshi MARUYAMA
e95ab31983 Rails3: helper: html_safe for watchers_checkboxes in WatchersHelper
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9463 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-22 02:57:39 +00:00
Toshi MARUYAMA
fcbeee78c1 Rails3: view: html_safe for principals_options_for_select in ApplicationHelper
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9462 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-21 01:44:38 +00:00
Jean-Philippe Lang
306af1d017 Updates for 1.4.1 release.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9459 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-20 09:59:51 +00:00
Jean-Philippe Lang
5a35c5b2e2 Fixed that date range fields don't get enabled when using the calendar popup (#8574).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9452 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-19 12:26:19 +00:00
Jean-Philippe Lang
b3bddcd31f Load Gemfile.local with absolute path.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9450 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-19 09:22:55 +00:00
Jean-Philippe Lang
b0f35a3cde Fixed that users with different case logins cannot update their accounts (#10711).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9449 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-19 08:42:07 +00:00
Jean-Philippe Lang
62eb536e32 Additional test for MailHandler.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9448 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-19 08:26:53 +00:00
Jean-Philippe Lang
67f90df175 Additional test for memberships API.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9447 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-19 08:18:27 +00:00
Jean-Philippe Lang
c88fbfbdad Additional tests for Principal scopes.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9446 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-19 08:01:28 +00:00
Jean-Philippe Lang
424a70978e Additional tests for the PDF export of an issue.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9445 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-19 07:58:02 +00:00
Jean-Philippe Lang
24e6dbc709 Updated ru and uk locales (#10664).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9444 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-19 07:25:32 +00:00
Jean-Philippe Lang
d856e62ccf Fixed that "Create and continue" buttons are broken by r9391 (#10675).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9442 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-19 07:17:48 +00:00
Jean-Philippe Lang
143c29d8e1 Additional test for TrackersController.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9441 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-18 19:49:10 +00:00
Jean-Philippe Lang
f79961f1c5 Additional tests for TimelogController.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9440 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-18 19:42:18 +00:00
Jean-Philippe Lang
327a74b406 Additional test for Tracker model.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9439 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-18 19:33:29 +00:00
Jean-Philippe Lang
864054c005 Additional test for MyController.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9438 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-18 19:30:08 +00:00
Jean-Philippe Lang
6f71a508eb Additional tests for CustomFieldsController.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9437 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-18 19:25:54 +00:00
Toshi MARUYAMA
7366fb23bb fix typo of German "text_account_destroy_confirmation" (#10693, #10664)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9433 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-18 13:15:56 +00:00
Jean-Philippe Lang
0a4a49992e Removed invalid css property.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9431 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-18 12:05:00 +00:00
Jean-Philippe Lang
2cc294aa27 Fixed that textile nested lists are not properly closed in output (#10642).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9430 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-18 12:00:54 +00:00
Toshi MARUYAMA
ee559c6820 German translation changed by Hannes Meier (#10693)
* mail_body_account_information_external
* label_overall_activity
* label_send_information

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9427 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-17 23:47:38 +00:00
Toshi MARUYAMA
2581d00c69 German translation for #10664 updated by Hannes Meier (#10693)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9426 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-17 23:47:06 +00:00
Toshi MARUYAMA
41b986db06 German translation for 1.4.0 updated by Hannes Meier (#10693)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9425 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-17 23:46:43 +00:00
Toshi MARUYAMA
b949d49ed3 Bulgarian translation updated by Ivan Cenov (#10671, #10664)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9424 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-16 08:05:18 +00:00
Jean-Philippe Lang
f529cdddb3 Cleanup in rake scripts.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9423 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-15 15:57:35 +00:00
Jean-Philippe Lang
147f717c86 Adds a rake task to remove expired tokens: redmine:tokens:prune.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9422 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-15 15:56:58 +00:00
Jean-Philippe Lang
0cb633c688 Adds new strings to locales.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9421 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-15 15:47:25 +00:00
Jean-Philippe Lang
c7149f4184 Fixed that Token.destroy_expired destroys API tokens.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9420 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-15 15:44:51 +00:00
Jean-Philippe Lang
24c361eb0a Fixed that rss key is generated twice when user is not reloaded (#10668).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9419 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-15 15:34:14 +00:00
Jean-Philippe Lang
9817e1d744 Additional test for Watcher.prune.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9418 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-15 15:13:28 +00:00
Jean-Philippe Lang
28f0c4f131 Adds the ability for users to delete their own account (#10664). Can be disabled in application settings.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9417 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-15 14:31:54 +00:00
Jean-Philippe Lang
638583012a French local update.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9412 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-14 08:07:56 +00:00
Jean-Philippe Lang
55ea557fe8 Note about the mysql2 adapter in database.yml.example.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9409 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-14 06:51:16 +00:00
Jean-Philippe Lang
552ed9693e Updated trunk CHANGELOG.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9406 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-14 06:31:33 +00:00
Jean-Philippe Lang
231282ddcb Fixed MissingFeatureException: let user choose to copy attachments or not when bulk copying issues.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9405 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-14 06:21:03 +00:00
Jean-Philippe Lang
09375960d6 When copying issues, let the status be changed to default or left unchanged.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9404 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-14 05:45:16 +00:00
Jean-Philippe Lang
354e09811b Removed deprecated accept_key_auth methods.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9392 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-13 19:40:18 +00:00
Jean-Philippe Lang
43c677b489 Disable submit buttons when submitting a form (#6555).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9391 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-13 17:01:46 +00:00
Jean-Philippe Lang
4edc30d157 Ignore emails with Auto-Submitted: auto-replied header (#10607).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9390 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-13 16:55:04 +00:00
Etienne Massip
dd8d8e0560 Updated CodeRay to 1.0.6.
Fixed multiline comments highlighting issue in file view (#7495).

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9389 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-12 17:54:55 +00:00
Jean-Philippe Lang
de0689d4f4 Makes time syntax case insensitive (#10635).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9387 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-11 17:37:13 +00:00
Jean-Philippe Lang
1511b1435a Additional assertions on creation of relations.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9385 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-11 17:27:11 +00:00
Jean-Philippe Lang
12b71ebc8e Strip issue id when adding a relation.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9384 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-11 17:25:05 +00:00
Jean-Philippe Lang
04e7b18869 Fixed that export links include page parameter.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9382 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-11 17:02:21 +00:00
Jean-Philippe Lang
d88ffd11e2 CSV export breaks custom columns (#10168).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9381 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-09 21:32:54 +00:00
Jean-Philippe Lang
e4ba838c6b Fixed that rake redmine:send_reminders fails if an issue is assigned to a group (#10555).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9380 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-09 20:23:36 +00:00
Jean-Philippe Lang
269e9057dd Fixed that "Default administrator account changed" is always true (#10622).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9379 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-09 15:53:48 +00:00
Jean-Philippe Lang
ea307619be Fixed that improper statuses are proposed when changing status before tracker on the issue form (#10619).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9378 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-09 09:39:27 +00:00
Jean-Philippe Lang
6d62ab64e6 Upgrade required pg gem (#6941).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9374 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-08 21:10:02 +00:00
Jean-Philippe Lang
78dd564a82 Disable IE 8 compatibility mode (#10128).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9372 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-08 20:13:38 +00:00
Jean-Philippe Lang
d2cb9d5289 Adds missing route to project search.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9371 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-08 20:06:53 +00:00
Jean-Philippe Lang
d427d8e567 Reverted r9368.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9370 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-08 19:29:26 +00:00
Jean-Philippe Lang
e436285b6f Slight changes to the plain text issue notification.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9369 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-08 19:25:26 +00:00
Jean-Philippe Lang
1334cbf78c Adds double quotes around issue change details in plain text notifications (#10603).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9368 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-08 17:30:08 +00:00
Jean-Philippe Lang
fde9c7315a Fixed: reminder mails are not sent when delivery_method is :async_smtp (#5058).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9367 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-06 18:57:05 +00:00
Jean-Philippe Lang
cfb06a2607 Additional test for gzipped wiki history.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9366 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-06 17:53:25 +00:00
Jean-Philippe Lang
5e4bb16a7f Additional tests for WatchersController.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9365 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-06 16:55:53 +00:00
Jean-Philippe Lang
2e240103f3 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9364 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-06 16:53:12 +00:00
Jean-Philippe Lang
18270ee587 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9363 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-06 16:51:10 +00:00
Jean-Philippe Lang
eabbab6e2b Adds assertions on the content of a versioned wiki page export (#6941).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9362 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-06 15:31:06 +00:00
Jean-Philippe Lang
d25defe276 Adds assertions on the content of a wiki page export (#6941).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9361 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-06 14:09:15 +00:00
Jean-Philippe Lang
ab28a55b4e Fixed test_show_with_permission_should_display_the_new_message_form broken by r9351.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9359 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-06 13:51:16 +00:00
Jean-Philippe Lang
dd1163b58a Makes the mail handler ignore out-of-office emails (#10607).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9358 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-06 13:24:30 +00:00
Toshi MARUYAMA
051794dffc remove 1.3-stable merged issues from CHANGELOG 1.4.0 list
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9355 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-06 12:57:39 +00:00
Jean-Philippe Lang
54bb145c76 Removed permissions logic from view.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9351 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-06 12:21:45 +00:00
Jean-Philippe Lang
a7bacf70fb Fixed: Unable to change locked, sticky flags and board when editing a message (#10564).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9350 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-06 12:20:47 +00:00
Jean-Philippe Lang
07d20cc5f7 Let non required list/user/version custom fields to be set to blank when bulk editing (#10605).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9349 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-06 11:56:30 +00:00
Jean-Philippe Lang
dee17f4677 Adds a note about Gemfile.local in the INSTALL doc.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9347 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-06 11:16:58 +00:00
Jean-Philippe Lang
2658730302 Load Gemfile.local if present.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9346 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-06 11:12:50 +00:00
Toshi MARUYAMA
e06b60d1b9 Simplified Chinese translation updated by fangzheng (#10611)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9343 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-06 10:41:16 +00:00
Jean-Philippe Lang
7d458e0b27 Do not install rmagick gem with jruby.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9341 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-06 10:26:55 +00:00
Jean-Philippe Lang
725ff27c37 Typo in database rake task.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9339 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-04-06 10:24:36 +00:00
1095 changed files with 10472 additions and 8504 deletions

1
.gitignore vendored
View File

@@ -5,6 +5,7 @@
/config/database.yml
/config/email.yml
/config/initializers/session_store.rb
/config/initializers/secret_token.rb
/coverage
/db/*.db
/db/*.sqlite3

View File

@@ -7,6 +7,7 @@ config/configuration.yml
config/database.yml
config/email.yml
config/initializers/session_store.rb
config/initializers/secret_token.rb
coverage
db/*.db
db/*.sqlite3

42
Gemfile
View File

@@ -1,10 +1,11 @@
source :rubygems
source 'http://rubygems.org'
gem "rails", "2.3.14"
gem "i18n", "~> 0.4.2"
gem "coderay", "~> 1.0.0"
gem 'rails', '3.2.6'
gem 'prototype-rails', '3.2.1'
gem "i18n", "~> 0.6.0"
gem "coderay", "~> 1.0.6"
gem "fastercsv", "~> 1.5.0", :platforms => [:mri_18, :mingw_18, :jruby]
gem "tzinfo", "~> 0.3.31"
gem "builder"
# Optional gem for LDAP authentication
group :ldap do
@@ -14,20 +15,23 @@ end
# Optional gem for OpenID authentication
group :openid do
gem "ruby-openid", "~> 2.1.4", :require => "openid"
gem "rack-openid"
end
# Optional gem for exporting the gantt to a PNG file
group :rmagick do
# RMagick 2 supports ruby 1.9
# RMagick 1 would be fine for ruby 1.8 but Bundler does not support
# different requirements for the same gem on different platforms
gem "rmagick", ">= 2.0.0"
# Optional gem for exporting the gantt to a PNG file, not supported with jruby
platforms :mri, :mingw do
group :rmagick do
# RMagick 2 supports ruby 1.9
# RMagick 1 would be fine for ruby 1.8 but Bundler does not support
# different requirements for the same gem on different platforms
gem "rmagick", ">= 2.0.0"
end
end
# Database gems
platforms :mri, :mingw do
group :postgresql do
gem "pg", "~> 0.9.0"
gem "pg", ">= 0.11.0"
end
group :sqlite do
@@ -43,7 +47,7 @@ end
platforms :mri_19, :mingw_19 do
group :mysql do
gem "mysql2", "~> 0.2.7"
gem "mysql2", "~> 0.3.11"
end
end
@@ -65,16 +69,22 @@ end
group :development do
gem "rdoc", ">= 2.4.2"
gem "yard"
end
group :test do
gem "shoulda", "~> 2.10.3"
gem "edavis10-object_daddy", :require => "object_daddy"
gem "shoulda", "~> 2.11"
gem "mocha"
end
local_gemfile = File.join(File.dirname(__FILE__), "Gemfile.local")
if File.exists?(local_gemfile)
puts "Loading Gemfile.local ..." if $DEBUG # `ruby -d` or `bundle -v`
instance_eval File.read(local_gemfile)
end
# Load plugins' Gemfiles
Dir.glob File.expand_path("../vendor/plugins/*/Gemfile", __FILE__) do |file|
Dir.glob File.expand_path("../plugins/*/Gemfile", __FILE__) do |file|
puts "Loading #{file} ..." if $DEBUG # `ruby -d` or `bundle -v`
instance_eval File.read(file)
end

View File

@@ -1,15 +1,7 @@
#!/usr/bin/env rake
# Add your own tasks in files placed in lib/tasks ending in .rake,
# for example lib/tasks/switchtower.rake, and they will automatically be available to Rake.
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
require(File.join(File.dirname(__FILE__), 'config', 'boot'))
require File.expand_path('../config/application', __FILE__)
require 'rake'
require 'rake/testtask'
begin
require 'rdoc/task'
rescue LoadError
# RDoc is not available
end
require 'tasks/rails'
RedmineApp::Application.load_tasks

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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
@@ -68,7 +68,7 @@ class AccountController < ApplicationController
# create a new token for password recovery
token = Token.new(:user => user, :action => "recovery")
if token.save
Mailer.deliver_lost_password(token)
Mailer.lost_password(token).deliver
flash[:notice] = l(:notice_account_lost_email_sent)
redirect_to :action => 'login'
return
@@ -131,14 +131,6 @@ class AccountController < ApplicationController
private
def logout_user
if User.current.logged?
cookies.delete :autologin
Token.delete_all(["user_id = ? AND action = ?", User.current.id, 'autologin'])
self.logged_user = nil
end
end
def authenticate_user
if Setting.openid? && using_open_id?
open_id_authenticate(params[:openid_url])
@@ -161,7 +153,7 @@ class AccountController < ApplicationController
end
def open_id_authenticate(openid_url)
authenticate_with_open_id(openid_url, :required => [:nickname, :fullname, :email], :return_to => signin_url) do |result, identity_url, registration|
authenticate_with_open_id(openid_url, :required => [:nickname, :fullname, :email], :return_to => signin_url, :method => :post) do |result, identity_url, registration|
if result.successful?
user = User.find_or_initialize_by_identity_url(identity_url)
if user.new_record?
@@ -243,7 +235,7 @@ class AccountController < ApplicationController
def register_by_email_activation(user, &block)
token = Token.new(:user => user, :action => "register")
if user.save and token.save
Mailer.deliver_register(token)
Mailer.register(token).deliver
flash[:notice] = l(:notice_account_register_done)
redirect_to :action => 'login'
else
@@ -273,7 +265,7 @@ class AccountController < ApplicationController
def register_manually_by_administrator(user, &block)
if user.save
# Sends an email to the administrators
Mailer.deliver_account_activation_request(user)
Mailer.account_activation_request(user).deliver
account_pending
else
yield if block_given?

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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
@@ -43,7 +43,7 @@ class ActivitiesController < ApplicationController
if events.empty? || stale?(:etag => [@activity.scope, @date_to, @date_from, @with_subprojects, @author, events.first, User.current, current_language])
respond_to do |format|
format.html {
@events_by_day = events.group_by(&:event_date)
@events_by_day = events.group_by {|event| User.current.time_to_date(event.event_datetime)}
render :layout => false if request.xhr?
}
format.atom {

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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
@@ -63,7 +63,7 @@ class AdminController < ApplicationController
# Force ActionMailer to raise delivery errors so we can catch it
ActionMailer::Base.raise_delivery_errors = true
begin
@test = Mailer.deliver_test_email(User.current)
@test = Mailer.test_email(User.current).deliver
flash[:notice] = l(:notice_email_sent, User.current.mail)
rescue Exception => e
flash[:error] = l(:notice_email_error, e.message)
@@ -75,9 +75,7 @@ class AdminController < ApplicationController
def info
@db_adapter_name = ActiveRecord::Base.connection.adapter_name
@checklist = [
[:text_default_administrator_account_changed,
User.find(:first,
:conditions => ["login=? and hashed_password=?", 'admin', User.hash_password('admin')]).nil?],
[:text_default_administrator_account_changed, User.default_admin_account_changed?],
[:text_file_repository_writable, File.writable?(Attachment.storage_path)],
[:text_plugin_assets_writable, File.writable?(Redmine::Plugin.public_directory)],
[:text_rmagick_available, Object.const_defined?(:Magick)]

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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,53 +22,20 @@ class Unauthorized < Exception; end
class ApplicationController < ActionController::Base
include Redmine::I18n
class_attribute :accept_api_auth_actions
class_attribute :accept_rss_auth_actions
class_attribute :model_object
layout 'base'
exempt_from_layout 'builder', 'rsb'
protect_from_forgery
def handle_unverified_request
super
cookies.delete(:autologin)
end
# Remove broken cookie after upgrade from 0.8.x (#4292)
# See https://rails.lighthouseapp.com/projects/8994/tickets/3360
# TODO: remove it when Rails is fixed
before_filter :delete_broken_cookies
def delete_broken_cookies
if cookies['_redmine_session'] && cookies['_redmine_session'] !~ /--/
cookies.delete '_redmine_session'
redirect_to home_path
return false
end
end
# FIXME: Remove this when all of Rack and Rails have learned how to
# properly use encodings
before_filter :params_filter
def params_filter
if RUBY_VERSION >= '1.9' && defined?(Rails) && Rails::VERSION::MAJOR < 3
self.utf8nize!(params)
end
end
def utf8nize!(obj)
if obj.frozen?
obj
elsif obj.is_a? String
obj.respond_to?(:force_encoding) ? obj.force_encoding("UTF-8") : obj
elsif obj.is_a? Hash
obj.each {|k, v| obj[k] = self.utf8nize!(v)}
elsif obj.is_a? Array
obj.each {|v| self.utf8nize!(v)}
else
obj
end
end
before_filter :user_setup, :check_if_login_required, :set_localization
filter_parameter_logging :password
rescue_from ActionController::InvalidAuthenticityToken, :with => :invalid_authenticity_token
rescue_from ::Unauthorized, :with => :deny_access
@@ -77,10 +44,6 @@ class ApplicationController < ActionController::Base
include Redmine::MenuManager::MenuController
helper Redmine::MenuManager::MenuHelper
Redmine::Scm::Base.all.each do |scm|
require_dependency "repository/#{scm.underscore}"
end
def user_setup
# Check the settings cache for each request
Setting.check_cache
@@ -126,6 +89,15 @@ class ApplicationController < ActionController::Base
end
end
# Logs out current user
def logout_user
if User.current.logged?
cookies.delete :autologin
Token.delete_all(["user_id = ? AND action = ?", User.current.id, 'autologin'])
self.logged_user = nil
end
end
# check if login is globally required to access the application
def check_if_login_required
# no check needed if user is already logged in
@@ -233,7 +205,7 @@ class ApplicationController < ActionController::Base
end
def find_model_object
model = self.class.read_inheritable_attribute('model_object')
model = self.class.model_object
if model
@object = model.find(params[:id])
self.instance_variable_set('@' + controller_name.singularize, @object) if @object
@@ -243,7 +215,7 @@ class ApplicationController < ActionController::Base
end
def self.model_object(model)
write_inheritable_attribute('model_object', model)
self.model_object = model
end
# Filter for bulk issue operations
@@ -298,6 +270,19 @@ class ApplicationController < ActionController::Base
false
end
# Redirects to the request referer if present, redirects to args or call block otherwise.
def redirect_to_referer_or(*args, &block)
redirect_to :back
rescue ::ActionController::RedirectBackError
if args.any?
redirect_to *args
elsif block_given?
block.call
else
raise "#redirect_to_referer_or takes arguments or a block"
end
end
def render_403(options={})
@project = nil
render_error({:message => :notice_not_authorized, :status => 403}.merge(options))
@@ -364,23 +349,11 @@ class ApplicationController < ActionController::Base
:content_type => 'application/atom+xml'
end
# TODO: remove in Redmine 1.4
def self.accept_key_auth(*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
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)
self.accept_rss_auth_actions = actions
else
read_inheritable_attribute('accept_rss_auth_actions') || []
self.accept_rss_auth_actions || []
end
end
@@ -390,9 +363,9 @@ class ApplicationController < ActionController::Base
def self.accept_api_auth(*actions)
if actions.any?
write_inheritable_attribute('accept_api_auth_actions', actions)
self.accept_api_auth_actions = actions
else
read_inheritable_attribute('accept_api_auth_actions') || []
self.accept_api_auth_actions || []
end
end
@@ -472,9 +445,9 @@ class ApplicationController < ActionController::Base
# Returns the API key present in the request
def api_key_from_request
if params[:key].present?
params[:key]
params[:key].to_s
elsif request.headers["X-Redmine-API-Key"].present?
request.headers["X-Redmine-API-Key"]
request.headers["X-Redmine-API-Key"].to_s
end
end
@@ -513,26 +486,12 @@ class ApplicationController < ActionController::Base
else
@error_messages = objects.errors.full_messages
end
render :template => 'common/error_messages.api', :status => :unprocessable_entity, :layout => false
render :template => 'common/error_messages.api', :status => :unprocessable_entity, :layout => nil
end
# Overrides #default_template so that the api template
# is used automatically if it exists
def default_template(action_name = self.action_name)
if api_request?
begin
return self.view_paths.find_template(default_template_name(action_name), 'api')
rescue ::ActionView::MissingTemplate
# the api template was not found
# fallback to the default behaviour
end
end
super
end
# Overrides #pick_layout so that #render with no arguments
# Overrides #_include_layout? so that #render with no arguments
# doesn't use the layout for api requests
def pick_layout(*args)
api_request? ? nil : super
def _include_layout?(*args)
api_request? ? false : super
end
end

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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
@@ -67,7 +67,7 @@ class AttachmentsController < ApplicationController
return
end
@attachment = Attachment.new(:file => request.body)
@attachment = Attachment.new(:file => request.raw_post)
@attachment.author = User.current
@attachment.filename = Redmine::Utils.random_hex(16)
@@ -88,9 +88,7 @@ class AttachmentsController < ApplicationController
end
# Make sure association callbacks are called
@attachment.container.attachments.delete(@attachment)
redirect_to :back
rescue ::ActionController::RedirectBackError
redirect_to :controller => 'projects', :action => 'show', :id => @project
redirect_to_referer_or project_path(@project)
end
private

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -1,3 +1,20 @@
# Redmine - project management software
# Copyright (C) 2006-2012 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 AutoCompletesController < ApplicationController
before_filter :find_project

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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
@@ -43,11 +43,11 @@ class BoardsController < ApplicationController
@topic_count = @board.topics.count
@topic_pages = Paginator.new self, @topic_count, per_page_option, params['page']
@topics = @board.topics.find :all, :order => ["#{Message.table_name}.sticky DESC", sort_clause].compact.join(', '),
@topics = @board.topics.reorder("#{Message.table_name}.sticky DESC").order(sort_clause).all(
:include => [:author, {:last_reply => :author}],
:limit => @topic_pages.items_per_page,
:offset => @topic_pages.current.offset
@message = Message.new
:offset => @topic_pages.current.offset)
@message = Message.new(:board => @board)
render :action => 'show', :layout => !request.xhr?
}
format.atom {

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -1,3 +1,20 @@
# Redmine - project management software
# Copyright (C) 2006-2012 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 ContextMenusController < ApplicationController
helper :watchers
helper :issues

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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
@@ -86,7 +86,9 @@ class DocumentsController < ApplicationController
attachments = Attachment.attach_files(@document, params[:attachments])
render_attachment_warning_if_needed(@document)
Mailer.deliver_attachments_added(attachments[:files]) if attachments.present? && attachments[:files].present? && Setting.notified_events.include?('document_added')
if attachments.present? && attachments[:files].present? && Setting.notified_events.include?('document_added')
Mailer.attachments_added(attachments[:files]).deliver
end
redirect_to :action => 'show', :id => @document
end
end

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -1,3 +1,20 @@
# Redmine - project management software
# Copyright (C) 2006-2012 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 FilesController < ApplicationController
menu_item :files
@@ -29,7 +46,7 @@ class FilesController < ApplicationController
render_attachment_warning_if_needed(container)
if !attachments.empty? && !attachments[:files].blank? && Setting.notified_events.include?('file_added')
Mailer.deliver_attachments_added(attachments[:files])
Mailer.attachments_added(attachments[:files]).deliver
end
redirect_to project_files_path(@project)
end

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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
@@ -42,7 +42,7 @@ class IssueRelationsController < ApplicationController
def create
@relation = IssueRelation.new(params[:relation])
@relation.issue_from = @issue
if params[:relation] && m = params[:relation][:issue_to_id].to_s.match(/^#?(\d+)$/)
if params[:relation] && m = params[:relation][:issue_to_id].to_s.strip.match(/^#?(\d+)$/)
@relation.issue_to = Issue.visible.find_by_id(m[1].to_i)
end
saved = @relation.save

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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
@@ -225,12 +225,19 @@ class IssuesController < ApplicationController
end
target_projects ||= @projects
@available_statuses = @issues.map(&:new_statuses_allowed_to).reduce(:&)
if @copy
@available_statuses = [IssueStatus.default]
else
@available_statuses = @issues.map(&:new_statuses_allowed_to).reduce(:&)
end
@custom_fields = target_projects.map{|p|p.all_issue_custom_fields}.reduce(:&)
@assignables = target_projects.map(&:assignable_users).reduce(:&)
@trackers = target_projects.map(&:trackers).reduce(:&)
@versions = target_projects.map {|p| p.shared_versions.open}.reduce(:&)
@categories = target_projects.map {|p| p.issue_categories}.reduce(:&)
if @copy
@attachments_present = @issues.detect {|i| i.attachments.any?}.present?
end
@safe_attributes = @issues.map(&:safe_attribute_names).reduce(:&)
render :layout => false if request.xhr?
@@ -246,7 +253,7 @@ class IssuesController < ApplicationController
@issues.each do |issue|
issue.reload
if @copy
issue = issue.copy
issue = issue.copy({}, :attachments => params[:copy_attachments].present?)
end
journal = issue.init_journal(User.current, params[:notes])
issue.safe_attributes = attributes
@@ -348,8 +355,6 @@ private
# from the params
# TODO: Refactor, not everything in here is needed by #edit
def update_issue_from_params
@allowed_statuses = @issue.new_statuses_allowed_to(User.current)
@priorities = IssuePriority.active
@edit_allowed = User.current.allowed_to?(:edit_issues, @project)
@time_entry = TimeEntry.new(:issue => @issue, :project => @issue.project)
@time_entry.attributes = params[:time_entry]
@@ -371,6 +376,8 @@ private
end
end
@issue.safe_attributes = issue_attributes
@priorities = IssuePriority.active
@allowed_statuses = @issue.new_statuses_allowed_to(User.current)
true
end
@@ -420,7 +427,16 @@ private
def parse_params_for_bulk_issue_attributes(params)
attributes = (params[:issue] || {}).reject {|k,v| v.blank?}
attributes.keys.each {|k| attributes[k] = '' if attributes[k] == 'none'}
attributes[:custom_field_values].reject! {|k,v| v.blank?} if attributes[:custom_field_values]
if custom = attributes[:custom_field_values]
custom.reject! {|k,v| v.blank?}
custom.keys.each do |k|
if custom[k].is_a?(Array)
custom[k] << '' if custom[k].delete('__none__')
else
custom[k] = '' if custom[k] == '__none__'
end
end
end
attributes
end
end

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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
@@ -95,10 +95,11 @@ class MessagesController < ApplicationController
# Delete a messages
def destroy
(render_403; return false) unless @message.destroyable_by?(User.current)
r = @message.to_param
@message.destroy
redirect_to @message.parent.nil? ?
{ :controller => 'boards', :action => 'show', :project_id => @project, :id => @board } :
{ :action => 'show', :id => @message.parent, :r => @message }
{ :action => 'show', :id => @message.parent, :r => r }
end
def quote

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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
@@ -65,6 +65,24 @@ class MyController < ApplicationController
end
end
# Destroys user's account
def destroy
@user = User.current
unless @user.own_account_deletable?
redirect_to :action => 'account'
return
end
if request.post? && params[:confirm]
@user.destroy
if @user.destroyed?
logout_user
flash[:notice] = l(:notice_account_deleted)
end
redirect_to home_path
end
end
# Manage user's password
def password
@user = User.current

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -1,3 +1,20 @@
# Redmine - project management software
# Copyright (C) 2006-2012 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 ProjectEnumerationsController < ApplicationController
before_filter :find_project_by_project_id
before_filter :authorize

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -18,6 +18,7 @@
require 'SVG/Graph/Bar'
require 'SVG/Graph/BarHorizontal'
require 'digest/sha1'
require 'redmine/scm/adapters/abstract_adapter'
class ChangesetNotFound < Exception; end
class InvalidRevisionParam < Exception; end
@@ -45,7 +46,11 @@ class RepositoriesController < ApplicationController
end
def create
@repository = Repository.factory(params[:repository_scm], params[:repository])
attrs = pickup_extra_info
@repository = Repository.factory(params[:repository_scm], attrs[:attrs])
if attrs[:attrs_extra].keys.any?
@repository.merge_extra_info(attrs[:attrs_extra])
end
@repository.project = @project
if request.post? && @repository.save
redirect_to settings_project_path(@project, :tab => 'repositories')
@@ -58,7 +63,11 @@ class RepositoriesController < ApplicationController
end
def update
@repository.attributes = params[:repository]
attrs = pickup_extra_info
@repository.attributes = attrs[:attrs]
if attrs[:attrs_extra].keys.any?
@repository.merge_extra_info(attrs[:attrs_extra])
end
@repository.project = @project
if request.put? && @repository.save
redirect_to settings_project_path(@project, :tab => 'repositories')
@@ -67,6 +76,20 @@ class RepositoriesController < ApplicationController
end
end
def pickup_extra_info
p = {}
p_extra = {}
params[:repository].each do |k, v|
if k =~ /^extra_/
p_extra[k] = v
else
p[k] = v
end
end
{:attrs => p, :attrs_extra => p_extra}
end
private :pickup_extra_info
def committers
@committers = @repository.committers
@users = @project.users
@@ -129,7 +152,15 @@ class RepositoriesController < ApplicationController
end
end
def raw
entry_and_raw(true)
end
def entry
entry_and_raw(false)
end
def entry_and_raw(is_raw)
@entry = @repository.entry(@path, @rev)
(show_error_not_found; return) unless @entry
@@ -138,7 +169,7 @@ class RepositoriesController < ApplicationController
@content = @repository.cat(@path, @rev)
(show_error_not_found; return) unless @content
if 'raw' == params[:format] ||
if is_raw ||
(@content.size && @content.size > Setting.file_max_size_displayed.to_i.kilobyte) ||
! is_entry_text_data?(@content, @path)
# Force the download
@@ -154,6 +185,7 @@ class RepositoriesController < ApplicationController
@changeset = @repository.find_changeset_by_name(@rev)
end
end
private :entry_and_raw
def is_entry_text_data?(ent, path)
# UTF-16 contains "\x00".
@@ -307,8 +339,7 @@ class RepositoriesController < ApplicationController
@repository = @project.repository
end
(render_404; return false) unless @repository
@path = params[:path].join('/') unless params[:path].nil?
@path ||= ''
@path = params[:path].is_a?(Array) ? params[:path].join('/') : params[:path].to_s
@rev = params[:rev].blank? ? @repository.default_branch : params[:rev].to_s.strip
@rev_to = params[:rev_to]
@@ -343,17 +374,17 @@ class RepositoriesController < ApplicationController
@date_to = Date.today
@date_from = @date_to << 11
@date_from = Date.civil(@date_from.year, @date_from.month, 1)
commits_by_day = repository.changesets.count(
commits_by_day = Changeset.count(
:all, :group => :commit_date,
:conditions => ["commit_date BETWEEN ? AND ?", @date_from, @date_to])
:conditions => ["repository_id = ? AND commit_date BETWEEN ? AND ?", repository.id, @date_from, @date_to])
commits_by_month = [0] * 12
commits_by_day.each {|c| commits_by_month[c.first.to_date.months_ago] += c.last }
commits_by_day.each {|c| commits_by_month[(@date_to.month - c.first.to_date.month) % 12] += c.last }
changes_by_day = repository.changes.count(
:all, :group => :commit_date,
:conditions => ["commit_date BETWEEN ? AND ?", @date_from, @date_to])
changes_by_day = Change.count(
:all, :group => :commit_date, :include => :changeset,
:conditions => ["#{Changeset.table_name}.repository_id = ? AND #{Changeset.table_name}.commit_date BETWEEN ? AND ?", repository.id, @date_from, @date_to])
changes_by_month = [0] * 12
changes_by_day.each {|c| changes_by_month[c.first.to_date.months_ago] += c.last }
changes_by_day.each {|c| changes_by_month[(@date_to.month - c.first.to_date.month) % 12] += c.last }
fields = []
12.times {|m| fields << month_name(((Date.today.month - 1 - m) % 12) + 1)}
@@ -384,10 +415,10 @@ class RepositoriesController < ApplicationController
end
def graph_commits_per_author(repository)
commits_by_author = repository.changesets.count(:all, :group => :committer)
commits_by_author = Changeset.count(:all, :group => :committer, :conditions => ["repository_id = ?", repository.id])
commits_by_author.to_a.sort! {|x, y| x.last <=> y.last}
changes_by_author = repository.changes.count(:all, :group => :committer)
changes_by_author = Change.count(:all, :group => :committer, :include => :changeset, :conditions => ["#{Changeset.table_name}.repository_id = ?", repository.id])
h = changes_by_author.inject({}) {|o, i| o[i.first] = i.last; o}
fields = commits_by_author.collect {|r| r.first}

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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,12 +18,13 @@
class TimelogController < ApplicationController
menu_item :issues
before_filter :find_project, :only => [:create]
before_filter :find_project_for_new_time_entry, :only => [:create]
before_filter :find_time_entry, :only => [:show, :edit, :update]
before_filter :find_time_entries, :only => [:bulk_edit, :bulk_update, :destroy]
before_filter :authorize, :except => [:new, :index, :report]
before_filter :find_optional_project, :only => [:new, :index, :report]
before_filter :find_optional_project, :only => [:index, :report]
before_filter :find_optional_project_for_new_time_entry, :only => [:new]
before_filter :authorize_global, :only => [:new, :index, :report]
accept_rss_auth :index
@@ -38,7 +39,7 @@ class TimelogController < ApplicationController
def index
sort_init 'spent_on', 'desc'
sort_update 'spent_on' => 'spent_on',
sort_update 'spent_on' => ['spent_on', "#{TimeEntry.table_name}.created_on"],
'user' => 'user_id',
'activity' => 'activity_id',
'project' => "#{Project.table_name}.name",
@@ -133,9 +134,13 @@ class TimelogController < ApplicationController
flash[:notice] = l(:notice_successful_create)
if params[:continue]
if params[:project_id]
redirect_to :action => 'new', :project_id => @time_entry.project, :issue_id => @time_entry.issue, :back_url => params[:back_url]
redirect_to :action => 'new', :project_id => @time_entry.project, :issue_id => @time_entry.issue,
:time_entry => {:issue_id => @time_entry.issue_id, :activity_id => @time_entry.activity_id},
:back_url => params[:back_url]
else
redirect_to :action => 'new', :back_url => params[:back_url]
redirect_to :action => 'new',
:time_entry => {:project_id => @time_entry.project_id, :issue_id => @time_entry.issue_id, :activity_id => @time_entry.activity_id},
:back_url => params[:back_url]
end
else
redirect_back_or_default :action => 'index', :project_id => @time_entry.project
@@ -258,7 +263,7 @@ private
end
end
def find_project
def find_optional_project_for_new_time_entry
if (project_id = (params[:project_id] || params[:time_entry] && params[:time_entry][:project_id])).present?
@project = Project.find(project_id)
end
@@ -266,14 +271,17 @@ private
@issue = Issue.find(issue_id)
@project ||= @issue.project
end
if @project.nil?
render_404
return false
end
rescue ActiveRecord::RecordNotFound
render_404
end
def find_project_for_new_time_entry
find_optional_project_for_new_time_entry
if @project.nil?
render_404
end
end
def find_optional_project
if !params[:issue_id].blank?
@issue = Issue.find(params[:issue_id])

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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
@@ -99,7 +99,7 @@ class UsersController < ApplicationController
@user.pref.save
@user.notified_project_ids = (@user.mail_notification == 'selected' ? params[:notified_project_ids] : [])
Mailer.deliver_account_information(@user, params[:user][:password]) if params[:send_information]
Mailer.account_information(@user, params[:user][:password]).deliver if params[:send_information]
respond_to do |format|
format.html {
@@ -146,15 +146,15 @@ class UsersController < ApplicationController
@user.notified_project_ids = (@user.mail_notification == 'selected' ? params[:notified_project_ids] : [])
if was_activated
Mailer.deliver_account_activated(@user)
Mailer.account_activated(@user).deliver
elsif @user.active? && params[:send_information] && !params[:user][:password].blank? && @user.auth_source_id.nil?
Mailer.deliver_account_information(@user, params[:user][:password])
Mailer.account_information(@user, params[:user][:password]).deliver
end
respond_to do |format|
format.html {
flash[:notice] = l(:notice_successful_update)
redirect_to :back
redirect_to_referer_or edit_user_path(@user)
}
format.api { head :ok }
end
@@ -169,14 +169,12 @@ class UsersController < ApplicationController
format.api { render_validation_errors(@user) }
end
end
rescue ::ActionController::RedirectBackError
redirect_to :controller => 'users', :action => 'edit', :id => @user
end
def destroy
@user.destroy
respond_to do |format|
format.html { redirect_to(users_url) }
format.html { redirect_to_referer_or(users_url) }
format.api { head :ok }
end
end

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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
@@ -52,7 +52,7 @@ class WatchersController < ApplicationController
end
end
respond_to do |format|
format.html { redirect_to :back }
format.html { redirect_to_referer_or {render :text => 'Watcher added.', :layout => true}}
format.js do
render :update do |page|
page.replace_html 'ajax-modal', :partial => 'watchers/new', :locals => {:watched => @watched}
@@ -60,8 +60,6 @@ class WatchersController < ApplicationController
end
end
end
rescue ::ActionController::RedirectBackError
render :text => 'Watcher added.', :layout => true
end
def append
@@ -72,9 +70,7 @@ class WatchersController < ApplicationController
format.js do
render :update do |page|
users.each do |user|
page.select("#issue_watcher_user_ids_#{user.id}").each do |item|
page.remove item
end
page << %|$$("#issue_watcher_user_ids_#{user.id}").each(function(el){el.remove();});|
end
page.insert_html :bottom, 'watchers_inputs', :text => watchers_checkboxes(nil, users, true)
end
@@ -111,7 +107,7 @@ private
@watched = klass.find(params[:object_id])
@project = @watched.project
elsif params[:project_id]
@project = Project.visible.find(params[:project_id])
@project = Project.visible.find_by_param(params[:project_id])
end
rescue
render_404
@@ -120,17 +116,13 @@ private
def set_watcher(user, watching)
@watched.set_watcher(user, watching)
respond_to do |format|
format.html { redirect_to :back }
format.html { redirect_to_referer_or {render :text => (watching ? 'Watcher added.' : 'Watcher removed.'), :layout => true}}
format.js do
render(:update) do |page|
c = watcher_css(@watched)
page.select(".#{c}").each do |item|
page.replace_html item, watcher_link(@watched, user)
end
page << %|$$(".#{c}").each(function(el){el.innerHTML="#{escape_javascript watcher_link(@watched, user)}"});|
end
end
end
rescue ::ActionController::RedirectBackError
render :text => (watching ? 'Watcher added.' : 'Watcher removed.'), :layout => true
end
end

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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
@@ -163,6 +163,8 @@ class WikiController < ApplicationController
# Optimistic locking exception
flash.now[:error] = l(:notice_locking_conflict)
render :action => 'edit'
rescue ActiveRecord::RecordNotSaved
render :action => 'edit'
end
# rename a page

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -1,7 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -1,7 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -1,7 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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
@@ -178,7 +178,7 @@ module ApplicationHelper
end
def format_activity_day(date)
date == Date.today ? l(:label_today).titleize : format_date(date)
date == User.current.today ? l(:label_today).titleize : format_date(date)
end
def format_activity_description(text)
@@ -220,7 +220,7 @@ module ApplicationHelper
def render_flash_messages
s = ''
flash.each do |k,v|
s << (content_tag('div', v.html_safe, :class => "flash #{k}"))
s << content_tag('div', v.html_safe, :class => "flash #{k}", :id => "flash_#{k}")
end
s.html_safe
end
@@ -319,7 +319,7 @@ module ApplicationHelper
unless groups.empty?
s << %(<optgroup label="#{h(l(:label_group_plural))}">#{groups}</optgroup>)
end
s
s.html_safe
end
# Truncates and returns the string as a single line
@@ -352,7 +352,7 @@ module ApplicationHelper
def time_tag(time)
text = distance_of_time_in_words(Time.now, time)
if @project
link_to(text, {:controller => 'activities', :action => 'index', :id => @project, :from => time.to_date}, :title => format_time(time))
link_to(text, {:controller => 'activities', :action => 'index', :id => @project, :from => User.current.time_to_date(time)}, :title => format_time(time))
else
content_tag('acronym', text, :title => format_time(time))
end
@@ -369,7 +369,8 @@ module ApplicationHelper
end
def to_path_param(path)
path.to_s.split(%r{[/\\]}).select {|p| !p.blank?}
str = path.to_s.split(%r{[/\\]}).select{|p| !p.blank?}.join("/")
str.blank? ? nil : str
end
def pagination_links_full(paginator, count=nil, options={})
@@ -398,7 +399,7 @@ module ApplicationHelper
unless count.nil?
html << " (#{paginator.current.first_item}-#{paginator.current.last_item}/#{count})"
if per_page_links != false && links = per_page_links(paginator.items_per_page)
if per_page_links != false && links = per_page_links(paginator.items_per_page, count)
html << " | #{links}"
end
end
@@ -406,11 +407,23 @@ module ApplicationHelper
html.html_safe
end
def per_page_links(selected=nil)
links = Setting.per_page_options_array.collect do |n|
def per_page_links(selected=nil, item_count=nil)
values = Setting.per_page_options_array
if item_count && values.any?
if item_count > values.first
max = values.detect {|value| value >= item_count} || item_count
else
max = item_count
end
values = values.select {|value| value <= max || value == selected}
end
if values.empty? || (values.size == 1 && values.first == selected)
return nil
end
links = values.collect do |n|
n == selected ? n : link_to_content_update(n, params.merge(:per_page => n))
end
links.size > 1 ? l(:label_display_per_page, links.join(', ')) : nil
l(:label_display_per_page, links.join(', '))
end
def reorder_links(name, url, method = :post)
@@ -930,6 +943,9 @@ module ApplicationHelper
def labelled_form_for(*args, &proc)
args << {} unless args.last.is_a?(Hash)
options = args.last
if args.first.is_a?(Symbol)
options.merge!(:as => args.shift)
end
options.merge!({:builder => Redmine::Views::LabelledFormBuilder})
form_for(*args, &proc)
end
@@ -944,8 +960,8 @@ module ApplicationHelper
def labelled_remote_form_for(*args, &proc)
args << {} unless args.last.is_a?(Hash)
options = args.last
options.merge!({:builder => Redmine::Views::LabelledFormBuilder})
remote_form_for(*args, &proc)
options.merge!({:builder => Redmine::Views::LabelledFormBuilder, :remote => true})
form_for(*args, &proc)
end
def error_messages_for(*objects)
@@ -1042,6 +1058,59 @@ module ApplicationHelper
end
end
# Overrides Rails' stylesheet_link_tag with themes and plugins support.
# Examples:
# stylesheet_link_tag('styles') # => picks styles.css from the current theme or defaults
# stylesheet_link_tag('styles', :plugin => 'foo) # => picks styles.css from plugin's assets
#
def stylesheet_link_tag(*sources)
options = sources.last.is_a?(Hash) ? sources.pop : {}
plugin = options.delete(:plugin)
sources = sources.map do |source|
if plugin
"/plugin_assets/#{plugin}/stylesheets/#{source}"
elsif current_theme && current_theme.stylesheets.include?(source)
current_theme.stylesheet_path(source)
else
source
end
end
super sources, options
end
# Overrides Rails' image_tag with themes and plugins support.
# Examples:
# image_tag('image.png') # => picks image.png from the current theme or defaults
# image_tag('image.png', :plugin => 'foo) # => picks image.png from plugin's assets
#
def image_tag(source, options={})
if plugin = options.delete(:plugin)
source = "/plugin_assets/#{plugin}/images/#{source}"
elsif current_theme && current_theme.images.include?(source)
source = current_theme.image_path(source)
end
super source, options
end
# Overrides Rails' javascript_include_tag with plugins support
# Examples:
# javascript_include_tag('scripts') # => picks scripts.js from defaults
# javascript_include_tag('scripts', :plugin => 'foo) # => picks scripts.js from plugin's assets
#
def javascript_include_tag(*sources)
options = sources.last.is_a?(Hash) ? sources.pop : {}
if plugin = options.delete(:plugin)
sources = sources.map do |source|
if plugin
"/plugin_assets/#{plugin}/javascripts/#{source}"
else
source
end
end
end
super sources, options
end
def content_for(name, content = nil, &block)
@has_content ||= {}
@has_content[name] = true
@@ -1052,6 +1121,14 @@ module ApplicationHelper
(@has_content && @has_content[name]) || false
end
def sidebar_content?
has_content?(:sidebar) || view_layouts_base_sidebar_hook_response.present?
end
def view_layouts_base_sidebar_hook_response
@view_layouts_base_sidebar_hook_response ||= call_hook(:view_layouts_base_sidebar)
end
def email_delivery_enabled?
!!ActionMailer::Base.perform_deliveries
end
@@ -1060,7 +1137,7 @@ module ApplicationHelper
# +user+ can be a User or a string that will be scanned for an email address (eg. 'joe <joe@foo.bar>')
def avatar(user, options = { })
if Setting.gravatar_enabled?
options.merge!({:ssl => (defined?(request) && request.ssl?), :default => Setting.gravatar_default})
options.merge!({:ssl => (request && request.ssl?), :default => Setting.gravatar_default})
email = nil
if user.respond_to?(:mail)
email = user.mail
@@ -1079,7 +1156,7 @@ module ApplicationHelper
# Returns the javascript tags that are included in the html layout head
def javascript_heads
tags = javascript_include_tag(:defaults)
tags = javascript_include_tag('prototype', 'effects', 'dragdrop', 'controls', 'rails', 'application')
unless User.current.pref.warn_on_leaving_unsaved == '0'
tags << "\n".html_safe + javascript_tag("Event.observe(window, 'load', function(){ new WarnLeavingUnsaved('#{escape_javascript( l(:text_warn_on_leaving_unsaved) )}'); });")
end

View File

@@ -1,7 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -1,7 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -1,7 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -1,7 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -39,34 +39,36 @@ module CustomFieldsHelper
field_name << "[]" if custom_field.multiple?
field_id = "#{name}_custom_field_values_#{custom_field.id}"
tag_options = {:id => field_id, :class => "#{custom_field.field_format}_cf"}
field_format = Redmine::CustomFieldFormat.find_by_name(custom_field.field_format)
case field_format.try(:edit_as)
when "date"
text_field_tag(field_name, custom_value.value, :id => field_id, :size => 10) +
text_field_tag(field_name, custom_value.value, tag_options.merge(:size => 10)) +
calendar_for(field_id)
when "text"
text_area_tag(field_name, custom_value.value, :id => field_id, :rows => 3, :style => 'width:90%')
text_area_tag(field_name, custom_value.value, tag_options.merge(:rows => 3))
when "bool"
hidden_field_tag(field_name, '0') + check_box_tag(field_name, '1', custom_value.true?, :id => field_id)
hidden_field_tag(field_name, '0') + check_box_tag(field_name, '1', custom_value.true?, tag_options)
when "list"
blank_option = ''
blank_option = ''.html_safe
unless custom_field.multiple?
if custom_field.is_required?
unless custom_field.default_value.present?
blank_option = "<option value=\"\">--- #{l(:actionview_instancetag_blank_option)} ---</option>"
blank_option = content_tag('option', "--- #{l(:actionview_instancetag_blank_option)} ---", :value => '')
end
else
blank_option = '<option></option>'
blank_option = content_tag('option')
end
end
s = select_tag(field_name, blank_option.html_safe + options_for_select(custom_field.possible_values_options(custom_value.customized), custom_value.value),
:id => field_id, :multiple => custom_field.multiple?)
s = select_tag(field_name, blank_option + options_for_select(custom_field.possible_values_options(custom_value.customized), custom_value.value),
tag_options.merge(:multiple => custom_field.multiple?))
if custom_field.multiple?
s << hidden_field_tag(field_name, '')
end
s
else
text_field_tag(field_name, custom_value.value, :id => field_id)
text_field_tag(field_name, custom_value.value, tag_options)
end
end
@@ -86,25 +88,28 @@ module CustomFieldsHelper
field_name = "#{name}[custom_field_values][#{custom_field.id}]"
field_name << "[]" if custom_field.multiple?
field_id = "#{name}_custom_field_values_#{custom_field.id}"
tag_options = {:id => field_id, :class => "#{custom_field.field_format}_cf"}
field_format = Redmine::CustomFieldFormat.find_by_name(custom_field.field_format)
case field_format.try(:edit_as)
when "date"
text_field_tag(field_name, '', :id => field_id, :size => 10) +
text_field_tag(field_name, '', tag_options.merge(:size => 10)) +
calendar_for(field_id)
when "text"
text_area_tag(field_name, '', :id => field_id, :rows => 3, :style => 'width:90%')
text_area_tag(field_name, '', tag_options.merge(:rows => 3))
when "bool"
select_tag(field_name, options_for_select([[l(:label_no_change_option), ''],
[l(:general_text_yes), '1'],
[l(:general_text_no), '0']]), :id => field_id)
[l(:general_text_no), '0']]), tag_options)
when "list"
options = []
options << [l(:label_no_change_option), ''] unless custom_field.multiple?
options << [l(:label_none), '__none__'] unless custom_field.is_required?
options += custom_field.possible_values_options(projects)
select_tag(field_name, options_for_select(options),
:id => field_id, :multiple => custom_field.multiple?)
select_tag(field_name, options_for_select(options), tag_options.merge(:multiple => custom_field.multiple?))
else
text_field_tag(field_name, '', :id => field_id)
text_field_tag(field_name, '', tag_options)
end
end

View File

@@ -1,7 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -1,7 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -1,7 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -1,7 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -1,7 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -1,7 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -1,7 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -1,7 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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
@@ -332,7 +332,7 @@ module IssuesHelper
cv = issue.custom_field_values.detect {|v| v.custom_field_id == column.custom_field.id}
show_value(cv)
else
value = issue.send(column.name)
value = column.value(issue)
if value.is_a?(Date)
format_date(value)
elsif value.is_a?(Time)

View File

@@ -1,7 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -1,7 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -1,7 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -1,7 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -1,7 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -1,7 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -1,7 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -1,7 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -1,7 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -1,7 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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
@@ -46,17 +46,17 @@ module RepositoriesHelper
end
def render_changeset_changes
changes = @changeset.changes.find(:all, :limit => 1000, :order => 'path').collect do |change|
changes = @changeset.filechanges.find(:all, :limit => 1000, :order => 'path').collect do |change|
case change.action
when 'A'
# Detects moved/copied files
if !change.from_path.blank?
change.action =
@changeset.changes.detect {|c| c.action == 'D' && c.path == change.from_path} ? 'R' : 'C'
@changeset.filechanges.detect {|c| c.action == 'D' && c.path == change.from_path} ? 'R' : 'C'
end
change
when 'D'
@changeset.changes.detect {|c| c.from_path == change.path} ? nil : change
@changeset.filechanges.detect {|c| c.from_path == change.path} ? nil : change
else
change
end

View File

@@ -1,7 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -1,7 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -1,7 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -1,7 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -1,7 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -1,7 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -1,7 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -1,7 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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
@@ -45,30 +45,36 @@ module WatchersHelper
# Returns a comma separated list of users watching the given object
def watchers_list(object)
remove_allowed = User.current.allowed_to?("delete_#{object.class.name.underscore}_watchers".to_sym, object.project)
content = ''.html_safe
lis = object.watcher_users.collect do |user|
s = avatar(user, :size => "16").to_s + link_to_user(user, :class => 'user').to_s
s = ''.html_safe
s << avatar(user, :size => "16").to_s
s << link_to_user(user, :class => 'user')
if remove_allowed
url = {:controller => 'watchers',
:action => 'destroy',
:object_type => object.class.to_s.underscore,
:object_id => object.id,
:user_id => user}
s += ' ' + link_to_remote(image_tag('delete.png'),
s << ' '
s << link_to_remote(image_tag('delete.png'),
{:url => url},
:href => url_for(url),
:style => "vertical-align: middle",
:class => "delete")
end
content_tag :li, s.html_safe
content << content_tag('li', s)
end
(lis.empty? ? "" : "<ul>#{ lis.join("\n") }</ul>").html_safe
content.present? ? content_tag('ul', content) : content
end
def watchers_checkboxes(object, users, checked=nil)
users.map do |user|
c = checked.nil? ? object.watched_by?(user) : checked
tag = check_box_tag 'issue[watcher_user_ids][]', user.id, c, :id => nil
content_tag 'label', "#{tag} #{h(user)}", :id => "issue_watcher_user_ids_#{user.id}", :class => "floating"
end.join
content_tag 'label', "#{tag} #{h(user)}".html_safe,
:id => "issue_watcher_user_ids_#{user.id}",
:class => "floating"
end.join.html_safe
end
end

View File

@@ -1,7 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -1,7 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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
@@ -21,14 +21,14 @@ module WikiHelper
def wiki_page_options_for_select(pages, selected = nil, parent = nil, level = 0)
pages = pages.group_by(&:parent) unless pages.is_a?(Hash)
s = ''
s = ''.html_safe
if pages.has_key?(parent)
pages[parent].each do |page|
attrs = "value='#{page.id}'"
attrs << " selected='selected'" if selected == page
indent = (level > 0) ? ('&nbsp;' * level * 2 + '&#187; ') : nil
indent = (level > 0) ? ('&nbsp;' * level * 2 + '&#187; ') : ''
s << "<option #{attrs}>#{indent}#{h page.pretty_title}</option>\n" +
s << content_tag('option', (indent + h(page.pretty_title)).html_safe, :value => page.id.to_s, :selected => selected == page) +
wiki_page_options_for_select(pages, selected, page, level + 1)
end
end

View File

@@ -1,7 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -44,20 +44,11 @@ class Attachment < ActiveRecord::Base
"LEFT JOIN #{Project.table_name} ON #{Document.table_name}.project_id = #{Project.table_name}.id"}
cattr_accessor :storage_path
@@storage_path = Redmine::Configuration['attachments_storage_path'] || "#{Rails.root}/files"
@@storage_path = Redmine::Configuration['attachments_storage_path'] || File.join(Rails.root, "files")
before_save :files_to_final_location
after_destroy :delete_from_disk
def container_with_blank_type_check
if container_type.blank?
nil
else
container_without_blank_type_check
end
end
alias_method_chain :container, :blank_type_check unless method_defined?(:container_without_blank_type_check)
# Returns an unsaved copy of the attachment
def copy(attributes=nil)
copy = self.class.new
@@ -110,10 +101,15 @@ class Attachment < ActiveRecord::Base
logger.info("Saving attachment '#{self.diskfile}' (#{@temp_file.size} bytes)")
md5 = Digest::MD5.new
File.open(diskfile, "wb") do |f|
buffer = ""
while (buffer = @temp_file.read(8192))
f.write(buffer)
md5.update(buffer)
if @temp_file.respond_to?(:read)
buffer = ""
while (buffer = @temp_file.read(8192))
f.write(buffer)
md5.update(buffer)
end
else
f.write(@temp_file)
md5.update(@temp_file)
end
end
self.digest = md5.hexdigest
@@ -134,7 +130,7 @@ class Attachment < ActiveRecord::Base
# Returns file's location on disk
def diskfile
"#{@@storage_path}/#{self.disk_filename}"
File.join(self.class.storage_path, disk_filename.to_s)
end
def increment_download

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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
@@ -28,7 +28,7 @@ class Board < ActiveRecord::Base
validates_length_of :name, :maximum => 30
validates_length_of :description, :maximum => 255
named_scope :visible, lambda {|*args| { :include => :project,
scope :visible, lambda {|*args| { :include => :project,
:conditions => Project.allowed_to_condition(args.shift || User.current, :view_messages, *args) } }
safe_attributes 'name', 'description', 'move_to'

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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
@@ -20,7 +20,7 @@ require 'iconv'
class Changeset < ActiveRecord::Base
belongs_to :repository
belongs_to :user
has_many :changes, :dependent => :delete_all
has_many :filechanges, :class_name => 'Change', :dependent => :delete_all
has_and_belongs_to_many :issues
has_and_belongs_to_many :parents,
:class_name => "Changeset",
@@ -49,7 +49,8 @@ class Changeset < ActiveRecord::Base
validates_uniqueness_of :revision, :scope => :repository_id
validates_uniqueness_of :scmid, :scope => :repository_id, :allow_nil => true
named_scope :visible, lambda {|*args| { :include => {:repository => :project},
scope :visible,
lambda {|*args| { :include => {:repository => :project},
:conditions => Project.allowed_to_condition(args.shift || User.current, :view_changesets, *args) } }
after_create :scan_for_issues

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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 CommentObserver < ActiveRecord::Observer
def after_create(comment)
if comment.commented.is_a?(News) && Setting.notified_events.include?('news_comment_added')
Mailer.deliver_news_comment_added(comment)
Mailer.news_comment_added(comment).deliver
end
end
end

View File

@@ -80,7 +80,7 @@ class CustomField < ActiveRecord::Base
when 'bool'
[[l(:general_text_Yes), '1'], [l(:general_text_No), '0']]
else
read_possible_values_utf8_encoded || []
possible_values || []
end
end
@@ -91,14 +91,20 @@ class CustomField < ActiveRecord::Base
when 'bool'
['1', '0']
else
read_possible_values_utf8_encoded
values = super()
if values.is_a?(Array)
values.each do |value|
value.force_encoding('UTF-8') if value.respond_to?(:force_encoding)
end
end
values
end
end
# Makes possible_values accept a multiline string
def possible_values=(arg)
if arg.is_a?(Array)
write_attribute(:possible_values, arg.compact.collect(&:strip).select {|v| !v.blank?})
super(arg.compact.collect(&:strip).select {|v| !v.blank?})
else
self.possible_values = arg.to_s.split(/[\n\r]+/)
end
@@ -218,14 +224,4 @@ class CustomField < ActiveRecord::Base
end
errs
end
def read_possible_values_utf8_encoded
values = read_attribute(:possible_values)
if values.is_a?(Array)
values.each do |value|
value.force_encoding('UTF-8') if value.respond_to?(:force_encoding)
end
end
values
end
end

View File

@@ -1,5 +1,5 @@
# RedMine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Redmine - project management software
# Copyright (C) 2006-2012 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
@@ -30,7 +30,7 @@ class Document < ActiveRecord::Base
validates_presence_of :project, :title, :category
validates_length_of :title, :maximum => 60
named_scope :visible, lambda {|*args| { :include => :project,
scope :visible, lambda {|*args| { :include => :project,
:conditions => Project.allowed_to_condition(args.shift || User.current, :view_documents, *args) } }
safe_attributes 'category_id', 'title', 'description'

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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
@@ -17,6 +17,6 @@
class DocumentObserver < ActiveRecord::Observer
def after_create(document)
Mailer.deliver_document_added(document) if Setting.notified_events.include?('document_added')
Mailer.document_added(document).deliver if Setting.notified_events.include?('document_added')
end
end

View File

@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2012 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

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