Compare commits

...

2164 Commits

Author SHA1 Message Date
Toshi MARUYAMA 868e15ff2d remove unneeded trailing ';' from lib/redmine/export/pdf.rb
git-svn-id: http://svn.redmine.org/redmine/trunk@13132 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-05-07 08:25:15 +00:00
Toshi MARUYAMA 1944473eee remove unneeded trailing ';' from test/functional/repositories_git_controller_test.rb
git-svn-id: http://svn.redmine.org/redmine/trunk@13131 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-05-07 08:25:00 +00:00
Toshi MARUYAMA e06de47234 Gemfile: update Rails 3.2.18
git-svn-id: http://svn.redmine.org/redmine/trunk@13130 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-05-07 07:55:53 +00:00
Toshi MARUYAMA a87cc86b99 fix typo of app/models/repository/mercurial.rb
git-svn-id: http://svn.redmine.org/redmine/trunk@13129 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-05-03 23:21:01 +00:00
Toshi MARUYAMA 6eaba1137a fix typo of app/models/repository/cvs.rb
git-svn-id: http://svn.redmine.org/redmine/trunk@13128 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-05-03 23:20:45 +00:00
Jean-Philippe Lang ef4cacdb66 Repository identifiers can be reserved words (#16564).
Patch by Felix Schäfer.

git-svn-id: http://svn.redmine.org/redmine/trunk@13127 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-05-02 08:09:33 +00:00
Jean-Philippe Lang 53deb6ca88 Mailer.token_for generates invalid message_id when using from address with full name (#16619).
git-svn-id: http://svn.redmine.org/redmine/trunk@13126 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-05-02 07:56:11 +00:00
Jean-Philippe Lang 61776a8b7e Blank content type for attachments attached via Ajax file upload (Patch by Jens Krämer).
git-svn-id: http://svn.redmine.org/redmine/trunk@13125 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-05-02 07:38:04 +00:00
Jean-Philippe Lang 382ca5055a Field set as read-only still available in the issues list context menu (#16755).
git-svn-id: http://svn.redmine.org/redmine/trunk@13124 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-05-02 07:32:41 +00:00
Jean-Philippe Lang 2d3f3cd9aa Use async email deliveries in rake tasks (#16784).
git-svn-id: http://svn.redmine.org/redmine/trunk@13123 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-05-02 07:07:02 +00:00
Jean-Philippe Lang bcc5ac38f3 Crash in markdown formatter causes ruby process to end (#16781).
Patch by Jens Krämer.

git-svn-id: http://svn.redmine.org/redmine/trunk@13122 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-05-02 06:57:29 +00:00
Toshi MARUYAMA 9875ed9954 Gemfile: upgrade mocha version (#16685)
git-svn-id: http://svn.redmine.org/redmine/trunk@13117 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-05-01 11:44:06 +00:00
Toshi MARUYAMA 6b33956394 use rvm 2.0 and 2.1 instead of 2.0.0 and 2.1.0 at .travis.yml
See:
https://github.com/travis-ci/travis-ci/issues/2220

git-svn-id: http://svn.redmine.org/redmine/trunk@13116 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-05-01 01:59:55 +00:00
Toshi MARUYAMA 82fa2cf79a add patch for regression of Hash#reject in Ruby 2.1.1 (#16194)
git-svn-id: http://svn.redmine.org/redmine/trunk@13115 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-05-01 01:59:39 +00:00
Toshi MARUYAMA 4276fc306c Gemfile: use double quote for request_store (#16685)
git-svn-id: http://svn.redmine.org/redmine/trunk@13112 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-05-01 01:50:40 +00:00
Toshi MARUYAMA a599442d05 introduce request_store to ensure that the current user doesn't leak across request boundaries (#16685)
Contributed by Holger Just.

git-svn-id: http://svn.redmine.org/redmine/trunk@13110 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-05-01 00:44:01 +00:00
Jean-Philippe Lang 9fdd0862f7 Missing type=array attributes in custom fields API (#16739).
git-svn-id: http://svn.redmine.org/redmine/trunk@13109 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-04-26 07:56:00 +00:00
Jean-Philippe Lang ddd6ac8cd4 Don't submit the form when tabs are inside a form (#16708).
Patch by Nicolas Rodriguez.

git-svn-id: http://svn.redmine.org/redmine/trunk@13108 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-04-26 07:48:28 +00:00
Jean-Philippe Lang 613757a83d Support for the 1.x versions of mime-types gem (#16710).
Patch by Szilveszter Ördög.

git-svn-id: http://svn.redmine.org/redmine/trunk@13107 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-04-26 07:44:06 +00:00
Jean-Philippe Lang a4fa0364d4 Redmine links not working with html escpaed characters (#16668).
git-svn-id: http://svn.redmine.org/redmine/trunk@13106 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-04-26 07:34:11 +00:00
Jean-Philippe Lang d197203d79 Set Redcarpet :no_intra_emphasis to true (#16669).
git-svn-id: http://svn.redmine.org/redmine/trunk@13105 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-04-26 07:02:45 +00:00
Jean-Philippe Lang 43c9d69bf2 Set default start date on issues created by email if default_issue_start_date_to_creation_date is set (#16655).
git-svn-id: http://svn.redmine.org/redmine/trunk@13104 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-04-26 06:57:09 +00:00
Toshi MARUYAMA 709211cb9c fix non-ascii attachment file name get corrupted in IE11 (#16711)
Contributed by Go MAEDA.

git-svn-id: http://svn.redmine.org/redmine/trunk@13101 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-04-17 18:21:23 +00:00
Toshi MARUYAMA 9eb7f25918 remove permission_manage_documents (#16704, #7418)
git-svn-id: http://svn.redmine.org/redmine/trunk@13100 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-04-17 01:11:36 +00:00
Toshi MARUYAMA 771dc9b2d6 fix label_module_plural merge miss (#16704, #7418)
git-svn-id: http://svn.redmine.org/redmine/trunk@13099 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-04-17 00:53:03 +00:00
Toshi MARUYAMA ee8cf0f12b replace RSS by Atom (#16704, #7418)
git-svn-id: http://svn.redmine.org/redmine/trunk@13098 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-04-17 00:43:47 +00:00
Toshi MARUYAMA c6fb9c5f51 replace Atom by RSS (#16704, #7418)
git-svn-id: http://svn.redmine.org/redmine/trunk@13097 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-04-17 00:34:33 +00:00
Toshi MARUYAMA 20df9c4dbd Persian Translation updated by shakib a (#16704, #7418)
git-svn-id: http://svn.redmine.org/redmine/trunk@13096 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-04-17 00:21:43 +00:00
Toshi MARUYAMA 770a296f43 fix typo at lib/tasks/ciphering.rake
git-svn-id: http://svn.redmine.org/redmine/trunk@13095 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-04-16 00:20:49 +00:00
Toshi MARUYAMA 8c5d88160f fix typo at lib/tasks/ci.rake
git-svn-id: http://svn.redmine.org/redmine/trunk@13094 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-04-16 00:20:32 +00:00
Toshi MARUYAMA a581f35dff fix typo at test/unit/helpers/application_helper_test.rb
git-svn-id: http://svn.redmine.org/redmine/trunk@13093 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-04-16 00:20:15 +00:00
Toshi MARUYAMA 4b1f75e611 fix typo at app/controllers/repositories_controller.rb
git-svn-id: http://svn.redmine.org/redmine/trunk@13092 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-04-16 00:19:57 +00:00
Toshi MARUYAMA 44614b5834 fix typo at lib/redcloth3.rb
git-svn-id: http://svn.redmine.org/redmine/trunk@13091 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-04-15 23:57:52 +00:00
Toshi MARUYAMA 38fc2e4391 remove unneeded tabs from test/functional/repositories_cvs_controller_test.rb
git-svn-id: http://svn.redmine.org/redmine/trunk@13090 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-04-15 22:50:04 +00:00
Toshi MARUYAMA bec603eb9b replace tabs to spaces at app/models/repository/cvs.rb
git-svn-id: http://svn.redmine.org/redmine/trunk@13089 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-04-15 22:49:48 +00:00
Toshi MARUYAMA 3270a3af40 replace tabs to spaces at app/models/query.rb
git-svn-id: http://svn.redmine.org/redmine/trunk@13088 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-04-15 22:49:30 +00:00
Toshi MARUYAMA 8c52689d91 reorder French translation (#16553)
Contributed by Darth Vader.

git-svn-id: http://svn.redmine.org/redmine/trunk@13087 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-04-08 12:39:11 +00:00
Toshi MARUYAMA c777f75edd mark deprecated Enumeration#overridding_change? which was changed in r13056
git-svn-id: http://svn.redmine.org/redmine/trunk@13086 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-04-08 12:38:55 +00:00
Toshi MARUYAMA ce2b12957f remove trailing white-spaces from Issue#count_and_group_by SQL
git-svn-id: http://svn.redmine.org/redmine/trunk@13084 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-04-08 11:23:05 +00:00
Toshi MARUYAMA 05d24e64f7 remove trailing white-spaces from Issue#by_subproject SQL
git-svn-id: http://svn.redmine.org/redmine/trunk@13083 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-04-08 11:22:49 +00:00
Toshi MARUYAMA 3c6d46beec remove trailing white-spaces from app/models/issue.rb
git-svn-id: http://svn.redmine.org/redmine/trunk@13082 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-04-08 11:22:33 +00:00
Toshi MARUYAMA 20496b516f code format clean up Issue#update_versions_from_hierarchy_change
git-svn-id: http://svn.redmine.org/redmine/trunk@13081 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-04-08 11:22:17 +00:00
Toshi MARUYAMA 2a1a02f976 French "text_git_repository_note" translation updated by Darth Vader (#16553, #16566)
git-svn-id: http://svn.redmine.org/redmine/trunk@13080 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-04-08 11:22:01 +00:00
Toshi MARUYAMA e26f35860c Traditional Chinese "field_assigned_to" translation changed by ChunChang Lo (#16545, #16556)
git-svn-id: http://svn.redmine.org/redmine/trunk@13078 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-04-08 02:27:31 +00:00
Toshi MARUYAMA a3f57f1cbf Traditional Chinese translation updated by ChunChang Lo (#16545)
git-svn-id: http://svn.redmine.org/redmine/trunk@13077 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-04-08 02:27:15 +00:00
Toshi MARUYAMA cebcd67704 fix typos of source comments at Query model
git-svn-id: http://svn.redmine.org/redmine/trunk@13076 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-04-07 08:07:59 +00:00
Toshi MARUYAMA e9399e16d2 fix typos of source comments at Project model
git-svn-id: http://svn.redmine.org/redmine/trunk@13075 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-04-07 08:07:43 +00:00
Toshi MARUYAMA 3aeb85bfd5 fix typos of source comments at Member model
git-svn-id: http://svn.redmine.org/redmine/trunk@13074 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-04-07 08:07:25 +00:00
Toshi MARUYAMA 66f0a5c2ef fix typos of source comments at Issue model
git-svn-id: http://svn.redmine.org/redmine/trunk@13073 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-04-07 08:07:08 +00:00
Toshi MARUYAMA 071d2d7f47 fix typos of source comments at Enumeration model
git-svn-id: http://svn.redmine.org/redmine/trunk@13072 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-04-07 08:06:50 +00:00
Toshi MARUYAMA 9250994088 fix typos of source comments at ApplicationHelper
git-svn-id: http://svn.redmine.org/redmine/trunk@13071 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-04-07 08:06:32 +00:00
Toshi MARUYAMA 6067bfcd09 fix typos of source comments at lib/redmine/wiki_formatting.rb
git-svn-id: http://svn.redmine.org/redmine/trunk@13070 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-04-07 08:06:14 +00:00
Toshi MARUYAMA 242b440073 fix typos of source comments at lib/redmine/plugin.rb
git-svn-id: http://svn.redmine.org/redmine/trunk@13069 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-04-07 08:05:54 +00:00
Toshi MARUYAMA bf776b3304 fix typos of source comments at lib/redmine/hook.rb
git-svn-id: http://svn.redmine.org/redmine/trunk@13068 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-04-07 08:05:35 +00:00
Toshi MARUYAMA e806f8cc43 German Translation updated by Daniel Felix (#16542)
git-svn-id: http://svn.redmine.org/redmine/trunk@13065 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-04-07 07:34:47 +00:00
Toshi MARUYAMA 7dca09a135 not use non ASCII characters at CHANGELOG
git-svn-id: http://svn.redmine.org/redmine/trunk@13064 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-04-07 05:44:40 +00:00
Toshi MARUYAMA e475798769 fix character broken (MOJIBAKE) of CHANGELOG
git-svn-id: http://svn.redmine.org/redmine/trunk@13063 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-04-07 05:44:23 +00:00
Toshi MARUYAMA f773219426 fix typos of source comments at Version model
git-svn-id: http://svn.redmine.org/redmine/trunk@13062 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-04-07 00:22:11 +00:00
Toshi MARUYAMA e8e9c046af fix typos at unit version test
git-svn-id: http://svn.redmine.org/redmine/trunk@13061 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-04-07 00:21:55 +00:00
Toshi MARUYAMA 5d56f0f26f Japanese translation (email notification) updated by Go MAEDA (#16536)
git-svn-id: http://svn.redmine.org/redmine/trunk@13060 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-04-07 00:21:39 +00:00
Toshi MARUYAMA 82de347dfd fix typos of source comments at acts_as_event.rb
git-svn-id: http://svn.redmine.org/redmine/trunk@13059 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-04-06 14:14:55 +00:00
Toshi MARUYAMA 3e89c2ff3e fix typos of source comments at WikiContent model
git-svn-id: http://svn.redmine.org/redmine/trunk@13058 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-04-06 14:14:40 +00:00
Toshi MARUYAMA 597d042ec2 fix typos of source comments at Project model
git-svn-id: http://svn.redmine.org/redmine/trunk@13057 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-04-06 14:14:23 +00:00
Toshi MARUYAMA 5e0d93b689 fix typo of Enumeration#overridding_change?
git-svn-id: http://svn.redmine.org/redmine/trunk@13056 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-04-06 13:32:35 +00:00
Jean-Philippe Lang 01ac064935 Exclude custom fields with multiple values from time report criteria (#16519).
git-svn-id: http://svn.redmine.org/redmine/trunk@13055 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-04-06 11:29:44 +00:00
Jean-Philippe Lang 22b2a1f699 Fixed that Link custom fields are not displayed as links on the issue list (#16496).
git-svn-id: http://svn.redmine.org/redmine/trunk@13054 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-04-06 11:11:52 +00:00
Jean-Philippe Lang 5b8a96472f Missing closing tag (#3177).
git-svn-id: http://svn.redmine.org/redmine/trunk@13052 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-04-06 11:03:57 +00:00
Toshi MARUYAMA 1c208fcc86 Bulgarian translation updated by Ivan Cenov (#16532)
git-svn-id: http://svn.redmine.org/redmine/trunk@13050 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-04-06 07:11:37 +00:00
Jean-Philippe Lang 25ddc672a1 Adds strings to locales (#3177).
git-svn-id: http://svn.redmine.org/redmine/trunk@13044 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-04-05 14:08:18 +00:00
Jean-Philippe Lang 64c65463a4 Adds strings to locales (#3177).
git-svn-id: http://svn.redmine.org/redmine/trunk@13043 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-04-05 14:05:36 +00:00
Jean-Philippe Lang 43d7036051 Adds "Check for updates" for installed plugins (#3177).
git-svn-id: http://svn.redmine.org/redmine/trunk@13042 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-04-05 14:00:19 +00:00
Jean-Philippe Lang 4920bb9d4d Potentiel data leak in "Invalid form authenticity token" error screen (#16511).
git-svn-id: http://svn.redmine.org/redmine/trunk@13041 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-04-05 08:19:55 +00:00
Jean-Philippe Lang 380b0515d1 Fixed that back_url=/ param is ignored (#16467).
git-svn-id: http://svn.redmine.org/redmine/trunk@13040 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-04-05 08:11:28 +00:00
Toshi MARUYAMA e739628c81 replace mail options reference URL at configuration.yml.example
wiki.rubyonrails.org seems dead.

git-svn-id: http://svn.redmine.org/redmine/trunk@13037 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-04-05 00:21:16 +00:00
Jean-Philippe Lang bf37fd9695 Format table list.
git-svn-id: http://svn.redmine.org/redmine/trunk@13036 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-04-03 23:11:47 +00:00
Jean-Philippe Lang 08b96d8b47 Updates for 2.5.1 release.
git-svn-id: http://svn.redmine.org/redmine/trunk@13033 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-03-29 16:09:30 +00:00
Jean-Philippe Lang 6d5569a46d Remove users from cc if they are already notified (#16415).
git-svn-id: http://svn.redmine.org/redmine/trunk@13029 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-03-29 15:27:42 +00:00
Jean-Philippe Lang 7567c3d8b2 Fixed back url verification (#16466).
git-svn-id: http://svn.redmine.org/redmine/trunk@13018 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-03-29 14:32:47 +00:00
Toshi MARUYAMA cecbb225a2 Czech translation for trunk updated by Karel Pičman (#16453)
git-svn-id: http://svn.redmine.org/redmine/trunk@13016 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-03-28 10:52:36 +00:00
Toshi MARUYAMA 279c3a2e9b Czech translation for 2.5-stable updated by Karel Pičman (#16453)
git-svn-id: http://svn.redmine.org/redmine/trunk@13015 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-03-28 10:52:20 +00:00
Toshi MARUYAMA 2545720afa fix awesome_nested_set test failure (#6579)
git-svn-id: http://svn.redmine.org/redmine/trunk@13014 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-03-26 11:46:47 +00:00
Toshi MARUYAMA 971dbfecc0 add missing awesome_nested_set 2.1.6 files (#6579)
64cc8bc8cf

git-svn-id: http://svn.redmine.org/redmine/trunk@13013 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-03-26 11:46:31 +00:00
Toshi MARUYAMA 92cac9011e remove unneeded Relation#all from WorkflowTransition#count_by_tracker_and_role
git-svn-id: http://svn.redmine.org/redmine/trunk@13012 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-03-26 10:38:04 +00:00
Toshi MARUYAMA 2ec3b3694f fix race condition of highest rgt at Issue#update_nested_set_attributes_on_parent_change (#6579)
git-svn-id: http://svn.redmine.org/redmine/trunk@13011 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-03-26 01:48:20 +00:00
Toshi MARUYAMA 755108566c awesome_nested_set: split highest rgt reader method (#6579)
git-svn-id: http://svn.redmine.org/redmine/trunk@13010 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-03-26 01:48:04 +00:00
Toshi MARUYAMA 3c83d1c646 fix always new lft and rgt are lft = 1, rgt = 2 (#6579)
git-svn-id: http://svn.redmine.org/redmine/trunk@13009 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-03-26 01:47:48 +00:00
Toshi MARUYAMA e4cf210fa2 use bundled awesome_nested_set (#6579)
git-svn-id: http://svn.redmine.org/redmine/trunk@13008 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-03-26 01:47:31 +00:00
Toshi MARUYAMA d1057bc4ad import awesome_nested_set 2.1.6 (#6579)
64cc8bc8cf

git-svn-id: http://svn.redmine.org/redmine/trunk@13007 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-03-26 01:47:14 +00:00
Toshi MARUYAMA 560bfa6d87 add ChangeLog note that #15781 was forgotten to merge to v2.4.3.
git-svn-id: http://svn.redmine.org/redmine/trunk@13004 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-03-25 08:35:49 +00:00
Toshi MARUYAMA 291de3d03f Gemfile: pin rake version 10.1
rake 10.2.0 requires Ruby version >= 1.9.

git-svn-id: http://svn.redmine.org/redmine/trunk@13001 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-03-25 07:14:34 +00:00
Toshi MARUYAMA 4a9d04a767 remove unneeded Relation#all from Issue#workflow_rule_by_attribute
git-svn-id: http://svn.redmine.org/redmine/trunk@13000 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-03-24 16:00:01 +00:00
Toshi MARUYAMA 5fb5bd0b11 remove unneeded Relation#all from WorkflowsController#edit
git-svn-id: http://svn.redmine.org/redmine/trunk@12999 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-03-24 15:59:45 +00:00
Jean-Philippe Lang aa9b8ea187 Use named routes.
git-svn-id: http://svn.redmine.org/redmine/trunk@12998 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-03-21 04:11:59 +00:00
Jean-Philippe Lang 83ce5c1687 Don't run the test if Redcarpet is not available (#16236).
git-svn-id: http://svn.redmine.org/redmine/trunk@12997 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-03-21 04:07:56 +00:00
Jean-Philippe Lang d50ec43dff Disable children when checking parent notifiable.
git-svn-id: http://svn.redmine.org/redmine/trunk@12996 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-03-21 04:05:49 +00:00
Jean-Philippe Lang ddcad64aa2 Don't abort processing of emails when an email triggers a parsing exception (#16122).
git-svn-id: http://svn.redmine.org/redmine/trunk@12995 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-03-21 03:04:43 +00:00
Toshi MARUYAMA 429210f03f German Translation updated by Daniel Felix (#16399)
git-svn-id: http://svn.redmine.org/redmine/trunk@12994 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-03-21 02:27:26 +00:00
Toshi MARUYAMA 74373c1597 move de.yml "label_link" by alphabetical order
git-svn-id: http://svn.redmine.org/redmine/trunk@12993 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-03-21 02:27:05 +00:00
Jean-Philippe Lang 2b0dfe948a Set same width for all buttons (#16326).
git-svn-id: http://svn.redmine.org/redmine/trunk@12992 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-03-21 02:22:31 +00:00
Jean-Philippe Lang 54830abd6b Custom queries: buttons to move column to top and bottom (#16326).
git-svn-id: http://svn.redmine.org/redmine/trunk@12991 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-03-21 02:20:56 +00:00
Jean-Philippe Lang dd70327ce4 Let user choose an issue of another project when updating a time entry (#16338).
git-svn-id: http://svn.redmine.org/redmine/trunk@12990 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-03-21 02:12:32 +00:00
Jean-Philippe Lang 273aa42900 Fixed: right-aligned table of contents (TOC) not working with markdown (#16236).
git-svn-id: http://svn.redmine.org/redmine/trunk@12989 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-03-21 01:35:21 +00:00
Jean-Philippe Lang abf24a7d92 Don't clear plugins in tests (#16258).
git-svn-id: http://svn.redmine.org/redmine/trunk@12988 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-03-21 01:12:11 +00:00
Jean-Philippe Lang 913c8cd2e6 Don't clear plugins in tests (#16258).
git-svn-id: http://svn.redmine.org/redmine/trunk@12987 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-03-21 01:06:18 +00:00
Jean-Philippe Lang f4e5025aed Extract code to render project context links to helper (#16381).
Patch by Michael Esemplare.

git-svn-id: http://svn.redmine.org/redmine/trunk@12986 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-03-21 00:27:42 +00:00
Jean-Philippe Lang b29c48717d Fixed: Error generated on 'search for watchers to add' after clicking add without selected users (#14298).
git-svn-id: http://svn.redmine.org/redmine/trunk@12985 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-03-21 00:23:46 +00:00
Toshi MARUYAMA b109fff281 Bulgarian translation updated by Ivan Cenov (#16385)
git-svn-id: http://svn.redmine.org/redmine/trunk@12984 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-03-19 15:14:38 +00:00
Toshi MARUYAMA d352d55f27 Traditional Chinese translation updated by ChunChang Lo (#16380)
git-svn-id: http://svn.redmine.org/redmine/trunk@12983 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-03-19 07:00:29 +00:00
Toshi MARUYAMA d541020982 Polish translation updated by Jan Inowolski (#16368)
git-svn-id: http://svn.redmine.org/redmine/trunk@12981 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-03-18 03:24:22 +00:00
Jean-Philippe Lang 509d0fbb5e Fixed test failure (#16362).
git-svn-id: http://svn.redmine.org/redmine/trunk@12980 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-03-17 14:11:37 +00:00
Jean-Philippe Lang 716da4622e Adds string to locales (#16362).
git-svn-id: http://svn.redmine.org/redmine/trunk@12977 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-03-17 08:26:50 +00:00
Jean-Philippe Lang 0b5e7d2a3c Wrong argument.
git-svn-id: http://svn.redmine.org/redmine/trunk@12976 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-03-17 08:23:07 +00:00
Jean-Philippe Lang 4bf18a697c Adds an option to send email on "Assignee updated" in application settings (#16362).
git-svn-id: http://svn.redmine.org/redmine/trunk@12975 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-03-17 08:20:27 +00:00
Jean-Philippe Lang b695878193 Adds an option to send email on "Assignee updated" in application settings (#16362).
git-svn-id: http://svn.redmine.org/redmine/trunk@12974 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-03-17 08:19:45 +00:00
Jean-Philippe Lang 4e5bb0e231 Fixed flawed regexp for removing pre blocks when quoting messages (#16353).
git-svn-id: http://svn.redmine.org/redmine/trunk@12973 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-03-17 07:49:14 +00:00
Toshi MARUYAMA b4fd6b47b1 remove garbage comment from test/integration/account_test.rb
git-svn-id: http://svn.redmine.org/redmine/trunk@12972 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-03-15 22:20:46 +00:00
Jean-Philippe Lang c075626462 Fixed that requesting a specific version of a non-existent wiki page raises an error (#16255).
git-svn-id: http://svn.redmine.org/redmine/trunk@12971 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-03-15 11:41:24 +00:00
Jean-Philippe Lang 218e5f40a1 Select proper tracker and status for when hitting F5 with browsers that preserve select values on reload, eg. Firefox (#16259).
git-svn-id: http://svn.redmine.org/redmine/trunk@12970 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-03-15 11:21:16 +00:00
Jean-Philippe Lang 995ae083cd Fixed flawed regexp for removing pre blocks when quoting notes (#16353).
Patch by Stephane Lapie.

git-svn-id: http://svn.redmine.org/redmine/trunk@12969 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-03-15 10:36:56 +00:00
Jean-Philippe Lang d7729d6d4f Use #read/#write_attribute instead of #super when overwriting default accessors (#16319).
Patch by Felix Schäfer.

git-svn-id: http://svn.redmine.org/redmine/trunk@12968 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-03-15 10:25:24 +00:00
Jean-Philippe Lang 1547119627 Fixed that integer custom fields with "Link values to URL" set are displayed as escaped html in text email (#16321).
git-svn-id: http://svn.redmine.org/redmine/trunk@12967 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-03-15 10:21:18 +00:00
Toshi MARUYAMA 484b13cc94 Spanish translation updated by Jesus Gutierrez de la Vega (#16356)
git-svn-id: http://svn.redmine.org/redmine/trunk@12965 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-03-15 05:49:16 +00:00
Toshi MARUYAMA 23fd067124 Russian translation updated by Kirill Bezrukov (#16336)
git-svn-id: http://svn.redmine.org/redmine/trunk@12963 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-03-13 11:14:24 +00:00
Toshi MARUYAMA f3311cd1ff Korean Translation updated by Jong-Ha Ahn (#16334)
git-svn-id: http://svn.redmine.org/redmine/trunk@12961 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-03-13 08:27:00 +00:00
Toshi MARUYAMA 9130222480 fix Turkish translation typo by Gürkan Gür (#16320)
git-svn-id: http://svn.redmine.org/redmine/trunk@12959 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-03-12 00:13:43 +00:00
Toshi MARUYAMA b772319977 fix source indent of lib/redmine/views/labelled_form_builder.rb
git-svn-id: http://svn.redmine.org/redmine/trunk@12958 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-03-11 09:59:56 +00:00
Toshi MARUYAMA c67043e01c fix source indent of lib/redmine/views/labelled_form_builder.rb
git-svn-id: http://svn.redmine.org/redmine/trunk@12957 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-03-11 09:59:40 +00:00
Toshi MARUYAMA 8a5baf9961 Japanese translation updated by Go MAEDA (#16291)
git-svn-id: http://svn.redmine.org/redmine/trunk@12955 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-03-11 09:30:04 +00:00
Jean-Philippe Lang 1d71564d6f Watcher search now displays project members by default.
git-svn-id: http://svn.redmine.org/redmine/trunk@12951 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-03-02 11:05:26 +00:00
Jean-Philippe Lang 8a2413f3b7 Updated CHANGELOG for 2.4.4 and 2.5.0.
git-svn-id: http://svn.redmine.org/redmine/trunk@12948 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-03-02 09:37:55 +00:00
Jean-Philippe Lang 2641f8ba91 Changeset comments set to longtext for handling comments > 64KB with Mysql (#16143).
git-svn-id: http://svn.redmine.org/redmine/trunk@12944 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-28 13:16:46 +00:00
Jean-Philippe Lang b0ec39fc45 Always load formatter scripts for when the description is read-only on page load (#16161).
git-svn-id: http://svn.redmine.org/redmine/trunk@12941 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-28 12:52:23 +00:00
Jean-Philippe Lang 4c7a76785d Fixed that non-empty blank strings as custom field values are not properly validated (#16169).
git-svn-id: http://svn.redmine.org/redmine/trunk@12938 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-28 10:05:27 +00:00
Toshi MARUYAMA 0cf7a27b50 use Python getattr instead of hasattr (#16177)
git-svn-id: http://svn.redmine.org/redmine/trunk@12935 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-26 16:28:43 +00:00
Toshi MARUYAMA 7b295f379b Mercurial 2.9 compatibility (#16177)
git-svn-id: http://svn.redmine.org/redmine/trunk@12930 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-26 12:01:00 +00:00
Toshi MARUYAMA e266ddb309 scm: mercurial: add one "closed" branch to test repository (#16177)
git-svn-id: http://svn.redmine.org/redmine/trunk@12929 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-26 11:27:41 +00:00
Jean-Philippe Lang 74e434b2f3 Removed hard-coded strings (#16164).
git-svn-id: http://svn.redmine.org/redmine/trunk@12928 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-25 20:17:15 +00:00
Toshi MARUYAMA 4162d8ec6b prevent issue tree hierarchy is broken in race conditions (#6579)
awesome_nested_set 2.1.6 uses lock.
Issue model uses as same way.

git-svn-id: http://svn.redmine.org/redmine/trunk@12927 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-25 06:54:40 +00:00
Jean-Philippe Lang b6c794d16b Bulk edit workflows for multiple trackers/roles (#16164).
git-svn-id: http://svn.redmine.org/redmine/trunk@12924 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-25 02:54:47 +00:00
Toshi MARUYAMA c6f71f727b explicitly set encoding UTF-8 (#16107)
Default Ruby source file encoding changed in Ruby 2.0.0.
https://bugs.ruby-lang.org/issues/6679

git-svn-id: http://svn.redmine.org/redmine/trunk@12918 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-22 15:55:35 +00:00
Toshi MARUYAMA ad8c02ca82 add "assert_response 401" to tests (#16107)
git-svn-id: http://svn.redmine.org/redmine/trunk@12917 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-22 15:55:20 +00:00
Jean-Philippe Lang 8405d57516 Strip invalid UTF-8 bytes in User#find_by_login (#16107).
git-svn-id: http://svn.redmine.org/redmine/trunk@12916 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-22 12:50:56 +00:00
Jean-Philippe Lang 58ff842d34 Trigger basic HTTP authentication only when Basic authorization header is present (#16107).
git-svn-id: http://svn.redmine.org/redmine/trunk@12915 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-22 12:09:58 +00:00
Jean-Philippe Lang 98e299857b Only notify users that can see news (#16134).
git-svn-id: http://svn.redmine.org/redmine/trunk@12914 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-22 11:32:52 +00:00
Jean-Philippe Lang 9733194cce Prevent N queries on custom_fields when call /issues API.
git-svn-id: http://svn.redmine.org/redmine/trunk@12913 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-22 11:23:39 +00:00
Jean-Philippe Lang 411ddaf701 Preload authors for /issues API calls.
git-svn-id: http://svn.redmine.org/redmine/trunk@12912 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-22 11:22:43 +00:00
Jean-Philippe Lang 9b6f53219f Preload issue authors when displayed on the issue list (#16091).
git-svn-id: http://svn.redmine.org/redmine/trunk@12911 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-22 11:21:05 +00:00
Jean-Philippe Lang 15c85ededd Preload issue relations when exporting issues to CSV with all columns (#16091).
git-svn-id: http://svn.redmine.org/redmine/trunk@12910 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-22 11:19:21 +00:00
Toshi MARUYAMA 95e44a2e57 fix typos of migrate_from_trac.rake
git-svn-id: http://svn.redmine.org/redmine/trunk@12909 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-20 04:59:33 +00:00
Toshi MARUYAMA 4dc7bc75b4 update Rails to 3.2.17
git-svn-id: http://svn.redmine.org/redmine/trunk@12906 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-19 09:32:51 +00:00
Toshi MARUYAMA 78f9d6d2ce svn propset svn:eol-style native fixture (#16122)
git-svn-id: http://svn.redmine.org/redmine/trunk@12905 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-18 23:28:23 +00:00
Toshi MARUYAMA 63a53e17fd fix newline of fixture (#16122)
git-svn-id: http://svn.redmine.org/redmine/trunk@12904 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-18 23:27:39 +00:00
Toshi MARUYAMA b5d80456ac add test of gmail ISO-8859-2 mail receiving (#16122)
git-svn-id: http://svn.redmine.org/redmine/trunk@12903 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-18 23:21:41 +00:00
Toshi MARUYAMA cce92213b0 svn propset svn:eol-style native fixture (#14675)
git-svn-id: http://svn.redmine.org/redmine/trunk@12902 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-17 12:44:58 +00:00
Toshi MARUYAMA 14c02f50cc add test of quoted printable UTF-8 mail reviving (#14675)
git-svn-id: http://svn.redmine.org/redmine/trunk@12901 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-17 12:42:44 +00:00
Toshi MARUYAMA 50ab5ec1b6 Rails4: fix time related git unit test failure
git-svn-id: http://svn.redmine.org/redmine/trunk@12900 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-15 23:13:44 +00:00
Jean-Philippe Lang e8057d41bb Fixed that collapse macro with headings breaks the table of contents (#16077).
git-svn-id: http://svn.redmine.org/redmine/trunk@12899 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-15 10:55:29 +00:00
Jean-Philippe Lang 4a2114c73b Move the field format at the top of the form.
git-svn-id: http://svn.redmine.org/redmine/trunk@12897 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-15 10:04:25 +00:00
Jean-Philippe Lang 1114bf5e99 Fixed: Export CSV - Custom field true/false not using translation (#16081).
git-svn-id: http://svn.redmine.org/redmine/trunk@12896 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-15 09:18:01 +00:00
Jean-Philippe Lang 88568da451 Always preload issues custom values (#16091).
git-svn-id: http://svn.redmine.org/redmine/trunk@12894 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-15 08:59:45 +00:00
Jean-Philippe Lang ceb7e346a7 Fixed alignments.
git-svn-id: http://svn.redmine.org/redmine/trunk@12892 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-15 08:34:30 +00:00
Jean-Philippe Lang b5e19e2d17 Removed trailing spaces in french locale.
git-svn-id: http://svn.redmine.org/redmine/trunk@12890 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-15 08:15:25 +00:00
Jean-Philippe Lang 7204f64254 Typo in french locale (#16073).
git-svn-id: http://svn.redmine.org/redmine/trunk@12889 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-15 08:08:18 +00:00
Jean-Philippe Lang a339deeacd Typo in french locale (#16073).
git-svn-id: http://svn.redmine.org/redmine/trunk@12888 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-15 08:04:11 +00:00
Jean-Philippe Lang 0b97099f8c Set version to 2.5.0.
git-svn-id: http://svn.redmine.org/redmine/trunk@12886 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-15 07:40:26 +00:00
Toshi MARUYAMA 83733e5565 German translation updated by Daniel Felix (#16097)
git-svn-id: http://svn.redmine.org/redmine/trunk@12884 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-15 00:42:37 +00:00
Toshi MARUYAMA 23fb42a890 use escaped "Can't" constant at MailerTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12883 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-14 05:05:39 +00:00
Toshi MARUYAMA e8df3d50e8 Rails4: fix time related git adapter test failures
git-svn-id: http://svn.redmine.org/redmine/trunk@12882 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-14 05:05:24 +00:00
Toshi MARUYAMA 0aaf7f799a Rails4: replace deprecated Relation#sum with finder options at lib/redmine/helpers/time_report.rb
git-svn-id: http://svn.redmine.org/redmine/trunk@12881 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-14 02:33:00 +00:00
Toshi MARUYAMA 3d79ddfe75 add missing fixtures to TimeEntryReportsControllerTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12880 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-14 02:02:06 +00:00
Toshi MARUYAMA 49e0489bc8 Rails4: fix PreviewsControllerTest assert_template failures
<pre>
  1) Failure:
PreviewsControllerTest#test_preview_issue_notes [test/functional/previews_controller_test.rb:44]:
expecting <"preview"> but rendering with <["previews/issue"]>
</pre>

git-svn-id: http://svn.redmine.org/redmine/trunk@12879 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-13 08:17:04 +00:00
Toshi MARUYAMA 22c7e0b8df fix source indent of Repository::Cvs model
git-svn-id: http://svn.redmine.org/redmine/trunk@12878 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-13 07:13:59 +00:00
Toshi MARUYAMA 7a594a2c3d Rails4: replace hard-coded html with class at ApplicationHelperTest#test_wiki_links
See r12784 comment.

git-svn-id: http://svn.redmine.org/redmine/trunk@12877 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-13 06:29:34 +00:00
Toshi MARUYAMA 2fc8ede093 Rails4: replace hard-coded html with class at Redmine::WikiFormatting::MacrosTest
See r12784 comment.

git-svn-id: http://svn.redmine.org/redmine/trunk@12876 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-13 05:40:09 +00:00
Toshi MARUYAMA b1c151f6c3 allow jruby test failure on travis
SCM tests fail randomly due to IO.popen().

See:
https://github.com/jruby/jruby/issues/779

git-svn-id: http://svn.redmine.org/redmine/trunk@12875 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-11 23:54:51 +00:00
Toshi MARUYAMA 489496488f use jruby instead of jruby-18mode etc. at .travis.yml
git-svn-id: http://svn.redmine.org/redmine/trunk@12874 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-11 23:54:36 +00:00
Toshi MARUYAMA 561f0f14ba add "jruby-20mode" and "jruby-21mode" to .travis.yml
git-svn-id: http://svn.redmine.org/redmine/trunk@12873 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-11 08:40:25 +00:00
Toshi MARUYAMA 889a5ed77a Rails4: replace hard-coded html with class at IssuesHelperTest
See r12784 comment.

git-svn-id: http://svn.redmine.org/redmine/trunk@12872 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-11 07:27:30 +00:00
Toshi MARUYAMA 71f8fe1519 Traditional Chinese translation updated by ChunChang Lo (#16060)
git-svn-id: http://svn.redmine.org/redmine/trunk@12871 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-10 06:21:28 +00:00
Jean-Philippe Lang 83dae30140 Test failure with Postgresql+ruby1.8 (#2549).
git-svn-id: http://svn.redmine.org/redmine/trunk@12870 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-09 16:34:41 +00:00
Jean-Philippe Lang ff46e9d0a4 Makes #watcher_link return an empty string when given nil.
git-svn-id: http://svn.redmine.org/redmine/trunk@12869 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-09 12:04:44 +00:00
Jean-Philippe Lang 79d01c7fe5 Display watch link only when inside project with logged-in user (#2549).
git-svn-id: http://svn.redmine.org/redmine/trunk@12868 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-09 12:01:22 +00:00
Jean-Philippe Lang 2585ed2e3b Use spaces instead of tabs.
git-svn-id: http://svn.redmine.org/redmine/trunk@12867 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-09 11:58:19 +00:00
Jean-Philippe Lang 1ad33134d3 Enable the watching of news (#2549).
git-svn-id: http://svn.redmine.org/redmine/trunk@12866 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-09 11:54:21 +00:00
Jean-Philippe Lang fa31229a23 Check that target tables exist before proceeding.
git-svn-id: http://svn.redmine.org/redmine/trunk@12865 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-09 10:49:57 +00:00
Jean-Philippe Lang 8e00c6ebb9 Prevent inline images to overflow (#3163).
git-svn-id: http://svn.redmine.org/redmine/trunk@12864 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-08 11:16:13 +00:00
Jean-Philippe Lang c366502b61 Updates for 2.4.3 release.
git-svn-id: http://svn.redmine.org/redmine/trunk@12861 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-08 08:00:23 +00:00
Toshi MARUYAMA 62225e9773 Bulgarian translation updated by Ivan Cenov (#16049)
git-svn-id: http://svn.redmine.org/redmine/trunk@12859 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-08 01:12:17 +00:00
Toshi MARUYAMA 28242420c2 add "git --version" to .travis.yml
git-svn-id: http://svn.redmine.org/redmine/trunk@12858 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-07 23:11:53 +00:00
Toshi MARUYAMA 833068207c fix source indent of ApplicationHelperTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12857 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-07 12:12:09 +00:00
Jean-Philippe Lang 98cbbdf7f1 Reverts r12855.
git-svn-id: http://svn.redmine.org/redmine/trunk@12856 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-07 11:45:25 +00:00
Jean-Philippe Lang 3d64938adc Adds JS response support to #render_error (#15760).
git-svn-id: http://svn.redmine.org/redmine/trunk@12855 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-07 09:26:27 +00:00
Jean-Philippe Lang 171581da7e Project.activities should always return a ActiveRecord::Relation (#15983).
git-svn-id: http://svn.redmine.org/redmine/trunk@12854 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-07 08:36:49 +00:00
Jean-Philippe Lang 8b58c95212 Code cleanup.
git-svn-id: http://svn.redmine.org/redmine/trunk@12851 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-07 08:00:39 +00:00
Jean-Philippe Lang 926f27b5c7 Updated locales.
git-svn-id: http://svn.redmine.org/redmine/trunk@12850 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-07 07:58:35 +00:00
Jean-Philippe Lang 7b127ee489 Show tabs for existing custom field types only and adds a view for choosing the type when adding a new custom field.
git-svn-id: http://svn.redmine.org/redmine/trunk@12849 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-07 07:57:59 +00:00
Jean-Philippe Lang 09b95905dc Make sure that Repository#extra_info returns a Hash or nil (#16032).
git-svn-id: http://svn.redmine.org/redmine/trunk@12848 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-06 20:23:06 +00:00
Toshi MARUYAMA a0baf7ee5d fix wrong issue 'assigned-to-my-group' css class (#16038)
git-svn-id: http://svn.redmine.org/redmine/trunk@12844 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-06 12:16:27 +00:00
Toshi MARUYAMA 3817f1e304 Rails4: replace hard-coded html with class at ApplicationHelperTest#test_wiki_links_within_wiki_page_context
See r12784 comment.

git-svn-id: http://svn.redmine.org/redmine/trunk@12843 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-06 04:45:54 +00:00
Toshi MARUYAMA 50eed3f9ab use escaped "Can't" constant at IssuesHelperTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12842 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-06 04:45:38 +00:00
Toshi MARUYAMA 70ab59354f Rails4: replace ActionView::Helpers::TextHelper#truncate by String#truncate at app/views/issues/_list_simple.html.erb
git-svn-id: http://svn.redmine.org/redmine/trunk@12841 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-06 03:36:40 +00:00
Toshi MARUYAMA 52e043d0e4 Rails4: replace ActionView::Helpers::TextHelper#truncate by String#truncate at app/views/repositories/revision.html.erb
git-svn-id: http://svn.redmine.org/redmine/trunk@12840 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-06 03:36:24 +00:00
Toshi MARUYAMA b412f0cc00 Rails4: replace ActionView::Helpers::TextHelper#truncate by String#truncate at app/views/repositories/_dir_list_content.html.erb
git-svn-id: http://svn.redmine.org/redmine/trunk@12839 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-06 03:36:08 +00:00
Toshi MARUYAMA 3d77481081 Rails4: replace ActionView::Helpers::TextHelper#truncate by String#truncate at app/views/repositories/_revisions.html.erb
git-svn-id: http://svn.redmine.org/redmine/trunk@12838 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-06 03:35:52 +00:00
Toshi MARUYAMA 4498df2d7c Rails4: replace ActionView::Helpers::TextHelper#truncate by String#truncate at app/views/search/index.html.erb
git-svn-id: http://svn.redmine.org/redmine/trunk@12837 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-06 03:35:36 +00:00
Toshi MARUYAMA 34870add02 Rails4: replace ActionView::Helpers::TextHelper#truncate by String#truncate at app/views/auto_completes/issues.html.erb
git-svn-id: http://svn.redmine.org/redmine/trunk@12836 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-06 03:35:19 +00:00
Toshi MARUYAMA 8934e790fe Rails4: replace ActionView::Helpers::TextHelper#truncate by String#truncate at ApplicationHelper#format_activity_description
git-svn-id: http://svn.redmine.org/redmine/trunk@12835 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-06 03:35:01 +00:00
Toshi MARUYAMA 16211f9a5b Rails4: replace ActionView::Helpers::TextHelper#truncate by String#truncate at ApplicationHelper#link_to_message
git-svn-id: http://svn.redmine.org/redmine/trunk@12834 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-06 03:34:45 +00:00
Toshi MARUYAMA ae087d7578 Rails4: replace ActionView::Helpers::TextHelper#truncate by String#truncate at ApplicationHelper#parse_redmine_links
git-svn-id: http://svn.redmine.org/redmine/trunk@12833 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-06 03:34:27 +00:00
Toshi MARUYAMA fd6fea5713 Rails4: replace ActionView::Helpers::TextHelper#truncate by String#truncate at lib/redmine/export/pdf.rb
git-svn-id: http://svn.redmine.org/redmine/trunk@12832 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-06 03:34:09 +00:00
Toshi MARUYAMA 3e38bd0654 Rails4: replace ActionView::Helpers::TextHelper#truncate by String#truncate at ApplicationHelper#link_to_issue
git-svn-id: http://svn.redmine.org/redmine/trunk@12831 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-06 03:33:51 +00:00
Toshi MARUYAMA ae7a4b9678 Rails4: add ApplicationHelper#truncate_single_line_raw method replacing truncate_single_line
git-svn-id: http://svn.redmine.org/redmine/trunk@12830 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-06 03:33:33 +00:00
Toshi MARUYAMA e4d152e84a add tests of ApplicationHelper#link_to_issue subject and title
git-svn-id: http://svn.redmine.org/redmine/trunk@12829 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-06 02:38:37 +00:00
Toshi MARUYAMA b6668e3ebf Rails4: replace hard-coded html with class at ApplicationHelperTest#test_pre_content_should_not_parse_wiki_and_redmine_links
See r12784 comment.

git-svn-id: http://svn.redmine.org/redmine/trunk@12828 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-06 01:30:45 +00:00
Toshi MARUYAMA fab81930f7 Rails4: replace hard-coded html with class at ApplicationHelperTest#test_link_to_user_should_link_to_locked_user_if_current_user_is_admin
See r12784 comment.

git-svn-id: http://svn.redmine.org/redmine/trunk@12827 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-06 01:30:29 +00:00
Toshi MARUYAMA 54de8a19d1 Rails4: replace hard-coded html with class at ApplicationHelperTest#test_link_to_user
See r12784 comment.

git-svn-id: http://svn.redmine.org/redmine/trunk@12826 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-06 01:30:12 +00:00
Toshi MARUYAMA 789523db5f do stricter ApplicationHelperTest#test_truncate_single_line
git-svn-id: http://svn.redmine.org/redmine/trunk@12825 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-06 01:29:56 +00:00
Toshi MARUYAMA fc4004d0ba add tests of ApplicationHelper#truncate_single_line
git-svn-id: http://svn.redmine.org/redmine/trunk@12824 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-06 00:36:50 +00:00
Toshi MARUYAMA 325b3db186 Rails4: replace hard-coded html with class at ApplicationHelperTest#test_wiki_links_anchor_option_should_prepend_page_title_to_href
See r12784 comment.

git-svn-id: http://svn.redmine.org/redmine/trunk@12823 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-05 08:56:35 +00:00
Toshi MARUYAMA 936052f9f6 Rails4: replace hard-coded html with class at ApplicationHelperTest#test_link_to_project
See r12784 comment.

git-svn-id: http://svn.redmine.org/redmine/trunk@12822 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-05 08:56:19 +00:00
Toshi MARUYAMA 89920d2714 Rails4: replace hard-coded html with class at ApplicationHelperTest#test_link_to_attachment
See r12784 comment.

git-svn-id: http://svn.redmine.org/redmine/trunk@12821 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-05 08:56:03 +00:00
Toshi MARUYAMA 7928ce3797 Rails4: replace hard-coded html with class at ApplicationHelperTest#test_cross_project_redmine_links
See r12784 comment.

git-svn-id: http://svn.redmine.org/redmine/trunk@12820 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-05 08:55:49 +00:00
Toshi MARUYAMA 0a54a50813 code format clean up ApplicationHelperTest#test_cross_project_redmine_links
git-svn-id: http://svn.redmine.org/redmine/trunk@12819 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-05 08:55:32 +00:00
Toshi MARUYAMA 2bcd63ad28 code format clean up app/views/issues/_list_simple.html.erb
git-svn-id: http://svn.redmine.org/redmine/trunk@12818 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-05 08:55:17 +00:00
Toshi MARUYAMA 4d806cc7f5 remove unneeded h() from app/views/repositories/_revisions.html.erb
git-svn-id: http://svn.redmine.org/redmine/trunk@12817 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-05 08:55:01 +00:00
Toshi MARUYAMA 8d0ce6498e remove unneeded h() from app/views/repositories/_dir_list_content.html.erb
git-svn-id: http://svn.redmine.org/redmine/trunk@12816 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-05 08:54:46 +00:00
Toshi MARUYAMA c714322530 remove unneeded h() from app/views/issues/_list_simple.html.erb
git-svn-id: http://svn.redmine.org/redmine/trunk@12815 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-05 08:54:28 +00:00
Toshi MARUYAMA fb1055eb3f code format clean up app/views/search/index.html.erb
git-svn-id: http://svn.redmine.org/redmine/trunk@12814 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-05 08:54:12 +00:00
Toshi MARUYAMA 47353387c1 Rails4: replace hard-coded html with class at ApplicationHelperTest#test_attachment_links
See r12784 comment.

git-svn-id: http://svn.redmine.org/redmine/trunk@12813 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-05 04:14:58 +00:00
Toshi MARUYAMA 79e5570b27 Rails4: replace hard-coded html with class at ApplicationHelperTest#test_attachment_link_should_link_to_latest_attachment
See r12784 comment.

git-svn-id: http://svn.redmine.org/redmine/trunk@12812 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-05 04:14:43 +00:00
Toshi MARUYAMA 2f43fca8f0 Rails4: replace hard-coded html with class at ApplicationHelperTest#test_wiki_links_in_tables
See r12784 comment.

git-svn-id: http://svn.redmine.org/redmine/trunk@12811 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-05 04:14:27 +00:00
Toshi MARUYAMA f21aeaeb7b Traditional Chinese translation updated by ChunChang Lo (#16023)
git-svn-id: http://svn.redmine.org/redmine/trunk@12810 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-05 03:24:39 +00:00
Toshi MARUYAMA fb54d4e459 code format clean up ApplicationHelper#parse_redmine_links
git-svn-id: http://svn.redmine.org/redmine/trunk@12809 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-05 03:24:22 +00:00
Toshi MARUYAMA f44c32557c code format clean up ApplicationHelper#link_to_issue
git-svn-id: http://svn.redmine.org/redmine/trunk@12808 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-05 03:24:07 +00:00
Toshi MARUYAMA bd6d45428f use escaped "Can't" constant at ApplicationHelperTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12807 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-05 00:42:50 +00:00
Toshi MARUYAMA 52b5a26507 Rails4: replace hard-coded html with class at ApplicationHelperTest#test_redmine_links_with_a_different_project_before_current_project
See r12784 comment.

git-svn-id: http://svn.redmine.org/redmine/trunk@12806 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-05 00:42:34 +00:00
Toshi MARUYAMA 760f88bd58 use escaped "Can't" constant at IssueStatusesControllerTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12805 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-04 23:52:44 +00:00
Toshi MARUYAMA 03f7281f82 use escaped "can't" constant at IssueStatusesControllerTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12804 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-04 23:52:28 +00:00
Toshi MARUYAMA 98249335d5 use escaped "can't" constant at NewsControllerTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12803 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-04 23:52:12 +00:00
Toshi MARUYAMA 031e4fde63 use escaped "can't" constant at ProjectsControllerTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12802 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-04 23:51:56 +00:00
Toshi MARUYAMA afa18701fd use escaped "can't" constant at AuthSourcesControllerTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12801 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-04 23:51:39 +00:00
Toshi MARUYAMA 61b5a44b1a Rails4: fix "assert_template 'calendar'" fails at CalendarsControllerTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12800 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-04 23:51:23 +00:00
Toshi MARUYAMA 8bdb66bf98 Rails4: use "assert_template 'context_menus/time_entries'" at ContextMenusControllerTest
This asserting does not fail, but use same logic with "assert_template 'context_menus/issues'"

git-svn-id: http://svn.redmine.org/redmine/trunk@12799 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-04 23:51:07 +00:00
Toshi MARUYAMA 035c1b9a18 Rails4: fix "assert_template 'context_menu'" fails at ContextMenusControllerTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12798 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-04 23:50:49 +00:00
Toshi MARUYAMA 09bbfad124 code format clean up app/views/projects/settings/_members.html.erb
git-svn-id: http://svn.redmine.org/redmine/trunk@12797 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-04 23:50:32 +00:00
Toshi MARUYAMA 67e3af6c97 code format clean up ProjectsControllerTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12796 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-04 23:50:14 +00:00
Toshi MARUYAMA f1572de51e code format clean up AuthSourcesControllerTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12795 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-04 23:49:55 +00:00
Toshi MARUYAMA e91bce3d05 use escaped "Can't" constant at TrackersControllerTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12794 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-04 10:07:57 +00:00
Toshi MARUYAMA b825198e0f define constant of escaped "Can't" for tests
git-svn-id: http://svn.redmine.org/redmine/trunk@12793 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-04 10:07:41 +00:00
Toshi MARUYAMA a6d4cdb25b use escaped "can't" constant at TrackersControllerTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12792 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-04 10:07:19 +00:00
Toshi MARUYAMA 1f2c5ac08e Rails4: fix "assert_template 'form'" fails at IssuesControllerTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12791 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-04 10:07:02 +00:00
Toshi MARUYAMA a464abefdd replace shoulda context "#subjects" at GanttHelperTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12790 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-04 10:06:46 +00:00
Toshi MARUYAMA 3ad3c691cc replace shoulda context "#number_of_rows_on_project" at GanttHelperTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12789 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-04 10:06:28 +00:00
Toshi MARUYAMA 8543dfd109 replace shoulda context "#number_of_rows" at GanttHelperTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12788 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-04 10:06:11 +00:00
Toshi MARUYAMA 10c6b0e84f define as private GanttHelperTest helper methods
git-svn-id: http://svn.redmine.org/redmine/trunk@12787 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-04 10:05:54 +00:00
Toshi MARUYAMA cfcdf06f89 replace shoulda context "with workflow privilege" at IssuesControllerTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12786 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-04 07:50:55 +00:00
Toshi MARUYAMA 06c53f878f replace shoulda context "without workflow privilege" at IssuesControllerTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12785 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-04 07:50:39 +00:00
Toshi MARUYAMA 05b2bd173e Rails4: use link_to instead of hard coded html at ApplicationHelperTest#test_wiki_links_within_local_file_generation_context
On Rails 4.0.2, test fails.

<pre>
  --- expected
  +++ actual
  @@ -1 +1 @@
  -"<p><a href=\"CookBook_documentation.html\" class=\"wiki-page\">documentation</a></p>"
  +"<p><a class=\"wiki-page\" href=\"CookBook_documentation.html\">documentation</a></p>"
</pre>

git-svn-id: http://svn.redmine.org/redmine/trunk@12784 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-04 07:50:20 +00:00
Toshi MARUYAMA 31cab06f91 code format clean up escaped "can't" constant
git-svn-id: http://svn.redmine.org/redmine/trunk@12783 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-04 04:41:27 +00:00
Toshi MARUYAMA 0d4551c270 use escaped "can't" constant at TrackersControllerTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12782 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-04 04:32:37 +00:00
Toshi MARUYAMA c38fa97165 use escaped "can't" constant at WikisControllerTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12781 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-04 04:32:20 +00:00
Toshi MARUYAMA 5e94d388b5 define constant of escaped "can't" for tests
git-svn-id: http://svn.redmine.org/redmine/trunk@12780 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-04 04:32:04 +00:00
Toshi MARUYAMA fe7c6057f9 code format clean up TrackersControllerTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12779 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-04 04:31:46 +00:00
Toshi MARUYAMA 669a16376f code format clean up WikisControllerTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12778 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-04 04:31:29 +00:00
Toshi MARUYAMA b87a7b8984 scm: mercurial: insert long id to DB unless existing id in DB is not short id (#14361)
git-svn-id: http://svn.redmine.org/redmine/trunk@12777 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-02 14:53:16 +00:00
Toshi MARUYAMA 85f15f694a scm: mercurial: add asserting first and last changeset to test_fetch_changesets_from_scratch (#14361)
git-svn-id: http://svn.redmine.org/redmine/trunk@12776 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-02 13:08:50 +00:00
Toshi MARUYAMA f9e7c24733 scm: mercurial: use scmid_for_assert in assert_parents (#14361)
git-svn-id: http://svn.redmine.org/redmine/trunk@12775 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-02 12:20:32 +00:00
Toshi MARUYAMA 58d906446d scm: mercurial: use scmid_for_assert in assert_entries (#14361)
git-svn-id: http://svn.redmine.org/redmine/trunk@12774 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-02 12:20:16 +00:00
Toshi MARUYAMA 642f13605e scm: mercurial: use scmid_for_assert in assert_entry (#14361)
git-svn-id: http://svn.redmine.org/redmine/trunk@12773 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-02 12:19:59 +00:00
Toshi MARUYAMA 1cda73c1b4 scm: mercurial: use scmid_for_assert in assert_copied_files (#14361)
git-svn-id: http://svn.redmine.org/redmine/trunk@12772 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-02 12:19:42 +00:00
Toshi MARUYAMA 396323726b scm: mercurial: add test helper method to switch short or long id (#14361)
git-svn-id: http://svn.redmine.org/redmine/trunk@12771 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-02 12:19:26 +00:00
Toshi MARUYAMA da071e5531 scm: mercurial: split test_parents to sub method (#14361)
git-svn-id: http://svn.redmine.org/redmine/trunk@12770 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-02 11:41:17 +00:00
Toshi MARUYAMA 4bde749d40 scm: mercurial: split test_copied_files to sub method (#14361)
git-svn-id: http://svn.redmine.org/redmine/trunk@12769 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-02 11:41:01 +00:00
Toshi MARUYAMA febd239d22 scm: mercurial: split test_entries_short_id to sub method (#14361)
git-svn-id: http://svn.redmine.org/redmine/trunk@12768 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-02 11:40:44 +00:00
Toshi MARUYAMA 1f2a520a46 scm: mercurial: split test_entry_short_id to sub method (#14361)
git-svn-id: http://svn.redmine.org/redmine/trunk@12767 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-02 11:40:28 +00:00
Toshi MARUYAMA b07c983740 scm: mercurial: split latest_changesets tag test to sub method (#14361)
git-svn-id: http://svn.redmine.org/redmine/trunk@12766 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-02 07:57:02 +00:00
Toshi MARUYAMA 074984688e scm: mercurial: split latest_changesets default branch test to sub method (#14361)
git-svn-id: http://svn.redmine.org/redmine/trunk@12765 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-02 07:56:46 +00:00
Toshi MARUYAMA 8c96db6e53 scm: mercurial: split latest_changesets tag test with path or not (#14361)
git-svn-id: http://svn.redmine.org/redmine/trunk@12764 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-02 07:56:31 +00:00
Toshi MARUYAMA 79e73095e5 scm: mercurial: add latest_changesets "default" branch test (#14361)
git-svn-id: http://svn.redmine.org/redmine/trunk@12763 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-02 06:34:31 +00:00
Toshi MARUYAMA 3698dd26cf scm: mercurial: split latest_changesets tag test with limit or not (#14361)
git-svn-id: http://svn.redmine.org/redmine/trunk@12762 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-02 06:34:15 +00:00
Toshi MARUYAMA 5872d079e6 scm: mercurial: use long id in adapter level (#14361)
git-svn-id: http://svn.redmine.org/redmine/trunk@12761 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-02 04:44:38 +00:00
Toshi MARUYAMA d301b8c0c1 scm: mercurial: switch short or long id of entry by existing value in DB (#14361)
git-svn-id: http://svn.redmine.org/redmine/trunk@12760 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-02 04:44:20 +00:00
Toshi MARUYAMA eb18660369 scm: mercurial: override entry and scm_entries (#14361)
git-svn-id: http://svn.redmine.org/redmine/trunk@12759 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-02 04:44:04 +00:00
Toshi MARUYAMA 07d7b47ddc scm: mercurial: add model entry test (#14361)
git-svn-id: http://svn.redmine.org/redmine/trunk@12758 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-02 04:43:48 +00:00
Toshi MARUYAMA 1662720d7b scm: mercurial: add model entries test (#14361)
git-svn-id: http://svn.redmine.org/redmine/trunk@12757 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-02 04:43:32 +00:00
Toshi MARUYAMA d26b4fc5b7 scm: mercurial: add adapter entry test (#14361)
git-svn-id: http://svn.redmine.org/redmine/trunk@12756 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-02 04:43:17 +00:00
Toshi MARUYAMA 8a35585bd2 scm: mercurial: add method to switch short or long id by existing value in DB (#14361)
git-svn-id: http://svn.redmine.org/redmine/trunk@12755 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-02 00:41:16 +00:00
Toshi MARUYAMA d45bf0a83e scm: split Repository#entries (#14361)
git-svn-id: http://svn.redmine.org/redmine/trunk@12754 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-02 00:40:59 +00:00
Toshi MARUYAMA f2ec6f8d77 back out r12752 (#14361)
Revision, Author and Comment of repository browser are broken.

git-svn-id: http://svn.redmine.org/redmine/trunk@12753 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-01 08:46:47 +00:00
Toshi MARUYAMA ae68ff1100 scm: mercurial: use long id in adapter level (#14361)
git-svn-id: http://svn.redmine.org/redmine/trunk@12752 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-01 07:47:04 +00:00
Toshi MARUYAMA 6ea2b7a43b scm: mercurial: split Repository::Mercurial#latest_changesets_cond for short and long id (#14361)
git-svn-id: http://svn.redmine.org/redmine/trunk@12751 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-01 07:46:45 +00:00
Toshi MARUYAMA 28fbc270fa scm: mercurial: add check scmid to RepositoryMercurialTest#test_fetch_changesets_from_scratch (#14361)
git-svn-id: http://svn.redmine.org/redmine/trunk@12750 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-01 06:08:22 +00:00
Toshi MARUYAMA 5dcecec1bd scm: mercurial: use 12 chars id for format_changeset_identifier (#14361)
git-svn-id: http://svn.redmine.org/redmine/trunk@12749 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-01 04:23:53 +00:00
Toshi MARUYAMA fdc0731cb5 scm: mercurial: split latest_changesets test to tag and branch
git-svn-id: http://svn.redmine.org/redmine/trunk@12748 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-01 03:45:33 +00:00
Toshi MARUYAMA 31af31eef7 remove redundant empty line from RepositoryMercurialTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12747 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-02-01 02:39:51 +00:00
Jean-Philippe Lang d651b93eff Adds some test helpers to cleanup tests.
git-svn-id: http://svn.redmine.org/redmine/trunk@12746 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-31 18:13:42 +00:00
Jean-Philippe Lang 888823a449 Fixed calculation of done_ratio of parent task with child having estimated_time at 0 (#15870).
git-svn-id: http://svn.redmine.org/redmine/trunk@12745 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-31 17:42:46 +00:00
Toshi MARUYAMA e699458b3c Rails4 compatibility of WatcherTest#test_watcher_users
Rails4 has_many returns ActiveRecord::Associations::CollectionProxy not array

git-svn-id: http://svn.redmine.org/redmine/trunk@12744 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-31 15:35:48 +00:00
Toshi MARUYAMA 619857e1a4 remove unneeded Relation#all from Repository::Git model
git-svn-id: http://svn.redmine.org/redmine/trunk@12743 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-31 10:15:52 +00:00
Toshi MARUYAMA 8574948617 code format clean up Repository::Git model
git-svn-id: http://svn.redmine.org/redmine/trunk@12742 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-31 10:15:37 +00:00
Toshi MARUYAMA 7c56ed6004 fix source indent of Redmine::Scm::Adapters::AbstractAdapter#without_trailling_slash
git-svn-id: http://svn.redmine.org/redmine/trunk@12741 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-31 09:38:43 +00:00
Jean-Philippe Lang 5fc8cfe9e3 Removed debug output.
git-svn-id: http://svn.redmine.org/redmine/trunk@12740 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-30 22:27:08 +00:00
Jean-Philippe Lang d5a9af54fa Reverts r12669 and add a test for #15870.
git-svn-id: http://svn.redmine.org/redmine/trunk@12739 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-30 22:18:07 +00:00
Toshi MARUYAMA cb000a5d85 fix r12737 de.yml alphabetical order
git-svn-id: http://svn.redmine.org/redmine/trunk@12738 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-30 00:21:10 +00:00
Toshi MARUYAMA acb0d148d1 German translation updated by Daniel Felix (#15980)
git-svn-id: http://svn.redmine.org/redmine/trunk@12737 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-29 23:10:05 +00:00
Toshi MARUYAMA 35cc911192 update copyright year (#15977)
Contributed by Daniel Felix.

git-svn-id: http://svn.redmine.org/redmine/trunk@12736 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-29 22:45:39 +00:00
Toshi MARUYAMA a711cbb44e back out from r12715 to r12720: #connection replacing
These revisions have performance regression on Rails 3.2.16.

git-svn-id: http://svn.redmine.org/redmine/trunk@12735 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-27 07:21:47 +00:00
Toshi MARUYAMA 9e71d89cdb Gemfile: use awesome_nested_set 2.1.6 gem
git-svn-id: http://svn.redmine.org/redmine/trunk@12734 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-27 06:48:38 +00:00
Toshi MARUYAMA ba75aa504b move r12689 awesome_nested_set modification to config/initializers/10-patches.rb (#7920)
git-svn-id: http://svn.redmine.org/redmine/trunk@12733 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-27 06:47:46 +00:00
Toshi MARUYAMA 4f996fa5c2 remove unneeded Relation#all from TimeEntryQuery model
git-svn-id: http://svn.redmine.org/redmine/trunk@12732 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-27 02:19:20 +00:00
Toshi MARUYAMA ea8febad03 remove unneeded Relation#all from Principal model
git-svn-id: http://svn.redmine.org/redmine/trunk@12731 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-27 02:19:03 +00:00
Toshi MARUYAMA 8832cca13b remove unneeded Relation#all from Repository::Subversion model
git-svn-id: http://svn.redmine.org/redmine/trunk@12730 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-27 02:18:47 +00:00
Toshi MARUYAMA b6f066ddf3 remove unneeded Relation#all from Project model
git-svn-id: http://svn.redmine.org/redmine/trunk@12729 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-27 02:18:30 +00:00
Toshi MARUYAMA 051ed3557b remove unneeded Relation#all from MemberRole model
git-svn-id: http://svn.redmine.org/redmine/trunk@12728 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-27 02:18:13 +00:00
Toshi MARUYAMA 3b3a7c50a9 remove unneeded Relation#all from Journal model
git-svn-id: http://svn.redmine.org/redmine/trunk@12727 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-27 02:17:57 +00:00
Toshi MARUYAMA c489c28219 code format cleanup Repository::Subversion model
git-svn-id: http://svn.redmine.org/redmine/trunk@12726 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-27 01:42:31 +00:00
Toshi MARUYAMA 2bdf28262b remove unneeded Relation#all from IssueStatus model
git-svn-id: http://svn.redmine.org/redmine/trunk@12725 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-27 01:24:41 +00:00
Toshi MARUYAMA 9c7568c1a1 remove unneeded Relation#all from IssueQuery model
git-svn-id: http://svn.redmine.org/redmine/trunk@12724 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-27 01:09:24 +00:00
Toshi MARUYAMA ea8e5c74ec remove unneeded Relation#all from Mailer model
git-svn-id: http://svn.redmine.org/redmine/trunk@12723 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-27 01:09:09 +00:00
Toshi MARUYAMA ca3d706f56 remove unneeded Relation#all from IssuePriority model
git-svn-id: http://svn.redmine.org/redmine/trunk@12722 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-27 01:08:54 +00:00
Toshi MARUYAMA 077598fe4b remove unneeded Relation#all from WorkflowsController
git-svn-id: http://svn.redmine.org/redmine/trunk@12721 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-27 01:08:40 +00:00
Toshi MARUYAMA dff2721fbe Rails4: replace deprecated #connection from Query model
DEPRECATION WARNING: #connection is deprecated in favour of accessing it via the class.

git-svn-id: http://svn.redmine.org/redmine/trunk@12720 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-27 01:08:25 +00:00
Toshi MARUYAMA f5c5393d09 Rails4: replace deprecated #connection from Project model
DEPRECATION WARNING: #connection is deprecated in favour of accessing it via the class.

git-svn-id: http://svn.redmine.org/redmine/trunk@12719 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-27 01:08:09 +00:00
Toshi MARUYAMA b1d0107ac0 Rails4: replace deprecated #connection from Repository model
DEPRECATION WARNING: #connection is deprecated in favour of accessing it via the class.

git-svn-id: http://svn.redmine.org/redmine/trunk@12718 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-27 01:07:52 +00:00
Toshi MARUYAMA 6be972af35 Rails4: replace deprecated #connection from IssueQuery model
DEPRECATION WARNING: #connection is deprecated in favour of accessing it via the class.

git-svn-id: http://svn.redmine.org/redmine/trunk@12717 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-27 01:07:34 +00:00
Toshi MARUYAMA ecf27b3f12 Rails4: replace deprecated #connection from IssueCustomField model
DEPRECATION WARNING: #connection is deprecated in favour of accessing it via the class.

git-svn-id: http://svn.redmine.org/redmine/trunk@12716 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-27 01:07:17 +00:00
Toshi MARUYAMA 0daa1a1a4f Rails4: replace deprecated #connection from Issue model
DEPRECATION WARNING: #connection is deprecated in favour of accessing it via the class.

git-svn-id: http://svn.redmine.org/redmine/trunk@12715 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-27 01:06:58 +00:00
Toshi MARUYAMA 28b1b1ea90 remove unneeded Relation#all from UserTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12714 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-27 00:09:19 +00:00
Toshi MARUYAMA e63029cee4 remove unneeded Relation#all from ProjectTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12713 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-27 00:09:02 +00:00
Toshi MARUYAMA e746e5dd83 remove unneeded Relation#all from PrincipalTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12712 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-27 00:08:47 +00:00
Toshi MARUYAMA 45289b9791 remove unneeded Relation#all from IssueStatusTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12711 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-27 00:08:32 +00:00
Toshi MARUYAMA c47940f4a5 remove unneeded Relation#all from IssueTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12710 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-27 00:08:15 +00:00
Toshi MARUYAMA 9941a987e9 add more comment about awesome_nested_set 2-1-stable branch regression
git-svn-id: http://svn.redmine.org/redmine/trunk@12709 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-26 09:10:58 +00:00
Toshi MARUYAMA 38fa36d23b remove Rails4 deprecated Relation#all from IssueTest#test_visible_and_nested_set_scopes and add awesome_nested_set regression test
git-svn-id: http://svn.redmine.org/redmine/trunk@12708 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-26 09:05:59 +00:00
Toshi MARUYAMA 0139b0a0db Japanese translation updated by Go MAEDA (#15962)
git-svn-id: http://svn.redmine.org/redmine/trunk@12707 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-26 01:47:23 +00:00
Jean-Philippe Lang ddb6b7d1e9 Successful update notice for workflows (#15831).
git-svn-id: http://svn.redmine.org/redmine/trunk@12706 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-25 13:17:08 +00:00
Jean-Philippe Lang a2f869b43e Redirect to back_url or referer when clicking "Sign in" while already logged-in (#15926).
git-svn-id: http://svn.redmine.org/redmine/trunk@12705 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-25 12:35:05 +00:00
Jean-Philippe Lang 5faa1a4e6e REST API: Integer custom field validation fails when using non-string values (#15929).
git-svn-id: http://svn.redmine.org/redmine/trunk@12704 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-25 12:08:22 +00:00
Toshi MARUYAMA 20ff37ef42 Spanish translation updated by Borja Campina (#15959)
git-svn-id: http://svn.redmine.org/redmine/trunk@12703 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-25 06:02:58 +00:00
Toshi MARUYAMA d2bc5220dd Bulgarian translation updated by Ivan Cenov (#15956)
git-svn-id: http://svn.redmine.org/redmine/trunk@12702 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-25 06:02:42 +00:00
Toshi MARUYAMA 07962dd5c2 Bulgarian translation changed by Ivan Cenov (#15956)
* notice_account_activated
* setting_login_required

git-svn-id: http://svn.redmine.org/redmine/trunk@12701 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-25 06:02:25 +00:00
Toshi MARUYAMA 666a8a4aca move setting_default_projects_tracker_ids at de.yml to alphabetical order
git-svn-id: http://svn.redmine.org/redmine/trunk@12700 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-25 06:02:09 +00:00
Toshi MARUYAMA 5a030f3416 German translation updated by Daniel Felix (#15955)
git-svn-id: http://svn.redmine.org/redmine/trunk@12699 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-25 06:01:53 +00:00
Toshi MARUYAMA 0fefc3bab7 Russian translation updated by Kirill Bezrukov (#15953)
git-svn-id: http://svn.redmine.org/redmine/trunk@12698 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-25 06:01:36 +00:00
Toshi MARUYAMA 609b80e5b7 pt-BR translation for trunk updated by Leandro Gehlen (#15961)
git-svn-id: http://svn.redmine.org/redmine/trunk@12696 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-25 04:54:35 +00:00
Toshi MARUYAMA 02817281f5 pt-BR translation for 2.4-stable updated by Leandro Gehlen (#15960)
git-svn-id: http://svn.redmine.org/redmine/trunk@12695 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-25 04:33:00 +00:00
Toshi MARUYAMA e917aa7ed8 fix comment of awesome_nested_set new node lft and rgt value behavior change
git-svn-id: http://svn.redmine.org/redmine/trunk@12694 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-24 16:40:06 +00:00
Toshi MARUYAMA 17a5f26e50 adjust tests to awesome_nested_set new node lft and rgt value behavior change
git-svn-id: http://svn.redmine.org/redmine/trunk@12693 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-24 16:26:50 +00:00
Jean-Philippe Lang 0829ac775d Adds locales strings (#2691).
git-svn-id: http://svn.redmine.org/redmine/trunk@12692 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-24 10:29:06 +00:00
Jean-Philippe Lang e391be4086 Adds settings for disabling browser language detection and language preference (#2691).
git-svn-id: http://svn.redmine.org/redmine/trunk@12691 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-24 10:28:12 +00:00
Jean-Philippe Lang 6e6c6fac5c Adds firstname initials+lastname user format.
git-svn-id: http://svn.redmine.org/redmine/trunk@12690 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-24 09:23:11 +00:00
Toshi MARUYAMA 4b5ce4c089 graft r5285 to awesome_nested_set 2.1.6 (#7920)
git-svn-id: http://svn.redmine.org/redmine/trunk@12689 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-21 07:55:16 +00:00
Toshi MARUYAMA 4a57f5f7f3 add lib/plugins/awesome_nested_set/init.rb
git-svn-id: http://svn.redmine.org/redmine/trunk@12688 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-21 07:55:00 +00:00
Toshi MARUYAMA 3f6a676622 import awesome_nested_set 2.1.6
64cc8bc8cf

git-svn-id: http://svn.redmine.org/redmine/trunk@12687 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-21 07:54:42 +00:00
Toshi MARUYAMA bdfcfb35a3 remove unneeded Project#acts_as_nested_set :order => 'name' option
git-svn-id: http://svn.redmine.org/redmine/trunk@12686 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-21 06:51:39 +00:00
Toshi MARUYAMA 2d2542008e graft r5285 to awesome_nested_set 2.1.5 (#7920)
git-svn-id: http://svn.redmine.org/redmine/trunk@12685 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-21 06:51:22 +00:00
Toshi MARUYAMA 65d2df44db back out r12679 awesome_nested_set 2.1.5 modification
git-svn-id: http://svn.redmine.org/redmine/trunk@12684 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-21 06:51:06 +00:00
Toshi MARUYAMA 962ecabc47 call Project#set_or_update_position_under in Project.rebuild_tree! (#12431)
git-svn-id: http://svn.redmine.org/redmine/trunk@12683 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-21 06:29:48 +00:00
Toshi MARUYAMA 94e3eb2b8b move awesome_nested_set leaf? modification to config/initializers/10-patches.rb
git-svn-id: http://svn.redmine.org/redmine/trunk@12682 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-20 17:54:47 +00:00
Toshi MARUYAMA 89c43d24c8 back out r12680
<pre>
  1) Failure:
test_children(ProjectTest) [test/unit/project_test.rb:374]:
<[5, 3, 4]> expected but was
<[3, 4, 5]>.
</pre>

git-svn-id: http://svn.redmine.org/redmine/trunk@12681 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-20 13:35:05 +00:00
Toshi MARUYAMA 1c0c22de17 use :order_column option instead of :order for acts_as_nested_set
git-svn-id: http://svn.redmine.org/redmine/trunk@12680 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-20 12:53:01 +00:00
Toshi MARUYAMA bcec29d5e4 apply Redmine awesome_nested_set 2.1.5 modification
git-svn-id: http://svn.redmine.org/redmine/trunk@12679 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-20 05:59:50 +00:00
Toshi MARUYAMA 90777c1673 add lib/plugins/awesome_nested_set/init.rb
git-svn-id: http://svn.redmine.org/redmine/trunk@12678 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-20 05:59:34 +00:00
Toshi MARUYAMA 6f78b3a408 import awesome_nested_set 2.1.5
60fe4f69e4

git-svn-id: http://svn.redmine.org/redmine/trunk@12677 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-20 05:59:16 +00:00
Toshi MARUYAMA 77f29deb29 svn propset svn:eol-style LF lib/plugins/awesome_nested_set/spec/*
git-svn-id: http://svn.redmine.org/redmine/trunk@12676 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-20 02:19:08 +00:00
Toshi MARUYAMA df9da6750d svn propset svn:eol-style LF lib/plugins/awesome_nested_set/.travis.yml
git-svn-id: http://svn.redmine.org/redmine/trunk@12675 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-20 01:53:58 +00:00
Toshi MARUYAMA 4d95f815d2 svn propset svn:eol-style LF lib/plugins/awesome_nested_set/.autotest
git-svn-id: http://svn.redmine.org/redmine/trunk@12674 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-20 01:47:06 +00:00
Jean-Philippe Lang a525bc8e98 Don't display default watchers checkboxes on the new issue form when there are more than 20 members (#8562).
git-svn-id: http://svn.redmine.org/redmine/trunk@12673 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-19 10:01:14 +00:00
Toshi MARUYAMA b933cd7a65 add newline at end of lib/plugins/awesome_nested_set/init.rb
git-svn-id: http://svn.redmine.org/redmine/trunk@12672 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-19 09:59:25 +00:00
Jean-Philippe Lang caa7af66e6 Prevents no method errors when reloading in development mode.
git-svn-id: http://svn.redmine.org/redmine/trunk@12671 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-19 09:51:04 +00:00
Jean-Philippe Lang bacc250816 Focus first text field automatically (#13134).
git-svn-id: http://svn.redmine.org/redmine/trunk@12670 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-19 08:57:47 +00:00
Jean-Philippe Lang 6f1cda4852 Make sure that we don't set the done ratio to a value > 100% (#15870).
git-svn-id: http://svn.redmine.org/redmine/trunk@12669 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-19 08:35:59 +00:00
Toshi MARUYAMA 364b334d89 remove JRuby PostgreSQL from allow_failures of .travis.yml
Tests pass on Travis.
* jruby 1.7.9 (1.9.3p392) 2014-01-09 87b108a on Java HotSpot(TM) 64-Bit Server VM 1.7.0_45-b18 [linux-amd64]
* jdbc-postgres (9.3.1100)
* activerecord-jdbc-adapter (1.3.5)
* activerecord-jdbcpostgresql-adapter (1.3.5)

git-svn-id: http://svn.redmine.org/redmine/trunk@12668 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-19 02:24:44 +00:00
Toshi MARUYAMA 5c0e3fcf8d svn propset svn:eol-style native .travis.yml
git-svn-id: http://svn.redmine.org/redmine/trunk@12667 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-19 00:09:31 +00:00
Toshi MARUYAMA a27e049eaa fix typo of .travis.yml
git-svn-id: http://svn.redmine.org/redmine/trunk@12666 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-19 00:07:13 +00:00
Toshi MARUYAMA 1951aeac78 add .travis.yml and switch database user/password by environments
git-svn-id: http://svn.redmine.org/redmine/trunk@12665 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-18 23:59:32 +00:00
Toshi MARUYAMA caf49264c8 Rails4: replace deprecated Relation#update_all at ChangeRepositoriesToFullSti db migration
git-svn-id: http://svn.redmine.org/redmine/trunk@12664 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-17 01:41:06 +00:00
Jean-Philippe Lang f890c775f1 Show warning when exported issues exceed the limit (#13770).
git-svn-id: http://svn.redmine.org/redmine/trunk@12663 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-12 10:39:42 +00:00
Jean-Philippe Lang 682f0231ff Adds favicon to ATOM feeds (#14309).
git-svn-id: http://svn.redmine.org/redmine/trunk@12662 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-12 10:03:59 +00:00
Jean-Philippe Lang 1eda38be4c Adds #favicon_path and #favicon_url helpers.
git-svn-id: http://svn.redmine.org/redmine/trunk@12661 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-12 09:58:07 +00:00
Jean-Philippe Lang 5df064ed85 Fixed Changeset#text_tag for changeset with hash and repository identifier (#13544).
git-svn-id: http://svn.redmine.org/redmine/trunk@12660 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-12 09:19:47 +00:00
Jean-Philippe Lang b25c7003da Adds a task for moving Redmine data to a different DBMS.
git-svn-id: http://svn.redmine.org/redmine/trunk@12659 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-12 09:02:31 +00:00
Jean-Philippe Lang b9f45c80c6 Code cleanup (#14766).
Patch by Daniel Felix.

git-svn-id: http://svn.redmine.org/redmine/trunk@12658 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-11 13:29:53 +00:00
Jean-Philippe Lang e9689f5fe3 Removes duplicate ids (#15485).
git-svn-id: http://svn.redmine.org/redmine/trunk@12657 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-11 12:55:21 +00:00
Jean-Philippe Lang d302450731 Removes duplicate ids (#15485).
git-svn-id: http://svn.redmine.org/redmine/trunk@12656 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-11 12:47:26 +00:00
Jean-Philippe Lang d3106af830 Removes duplicate ids (#15485).
git-svn-id: http://svn.redmine.org/redmine/trunk@12655 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-11 12:45:57 +00:00
Jean-Philippe Lang f4f3756fcc Removes duplicate ids (#15485).
git-svn-id: http://svn.redmine.org/redmine/trunk@12654 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-11 12:45:19 +00:00
Jean-Philippe Lang 9fe24bc88f Removes duplicate ids (#15485).
git-svn-id: http://svn.redmine.org/redmine/trunk@12653 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-11 12:42:11 +00:00
Jean-Philippe Lang 0711c585b6 Adds missing permissions on attachments/upload (#15664).
git-svn-id: http://svn.redmine.org/redmine/trunk@12652 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-11 12:27:01 +00:00
Jean-Philippe Lang 4e151a4722 Syntax error with ruby1.8.
git-svn-id: http://svn.redmine.org/redmine/trunk@12651 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-11 11:50:47 +00:00
Jean-Philippe Lang 9ad2ca61da Fixed: cannot retrieve members for closed projects through the REST API (#15848).
git-svn-id: http://svn.redmine.org/redmine/trunk@12650 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-11 11:47:26 +00:00
Jean-Philippe Lang de19424ea5 Adds project status to GET /projects/:id and GET /projects API response (#15815).
git-svn-id: http://svn.redmine.org/redmine/trunk@12649 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-11 11:33:47 +00:00
Jean-Philippe Lang a89468ebc8 Adds rel=stylesheet condition for stylesheets assertions.
git-svn-id: http://svn.redmine.org/redmine/trunk@12648 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-11 11:28:09 +00:00
Jean-Philippe Lang fa52c5d9fc Use #assert_select instead of #assert_tag.
git-svn-id: http://svn.redmine.org/redmine/trunk@12647 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-11 11:26:53 +00:00
Jean-Philippe Lang 8b999962de Make favicon themeable (#15689).
Patch by Felix Schäfer modified by Jean-Philippe Lang.

git-svn-id: http://svn.redmine.org/redmine/trunk@12646 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-11 11:22:46 +00:00
Jean-Philippe Lang 2db3338ab2 Wrap filters, options and buttons with extra div (#15362).
git-svn-id: http://svn.redmine.org/redmine/trunk@12645 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-11 11:12:03 +00:00
Toshi MARUYAMA 2a8ae016c5 Rails4: replace deprecated find_all_by_* at TimelogControllerTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12644 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-11 10:14:24 +00:00
Toshi MARUYAMA 8f43b53077 Rails4: replace deprecated Relation#first with finder options at TrackersControllerTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12643 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-11 10:14:08 +00:00
Toshi MARUYAMA eab8f307f9 Rails4: replace deprecated Relation#first with finder options at TimelogControllerTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12642 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-11 10:13:53 +00:00
Toshi MARUYAMA abd6471270 Rails4: replace deprecated Relation#first with finder options at RepositoriesGitControllerTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12641 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-11 10:13:37 +00:00
Toshi MARUYAMA 309e588440 Rails4: replace deprecated Relation#first with finder options at RepositoriesControllerTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12640 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-11 10:13:21 +00:00
Toshi MARUYAMA b47fc8f618 Rails4: replace deprecated Relation#first with finder options at MessagesControllerTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12639 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-11 10:13:05 +00:00
Toshi MARUYAMA 190bb9af30 Rails4: replace deprecated Relation#first with finder options at IssuesControllerTransactionTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12638 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-11 10:12:49 +00:00
Toshi MARUYAMA 1bb79568e5 Rails4: replace deprecated Relation#update_all at SearchControllerTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12637 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-11 09:25:12 +00:00
Toshi MARUYAMA 45496b0eb2 Rails4: replace deprecated Relation#first with finder options at UsersControllerTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12636 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-11 09:24:56 +00:00
Toshi MARUYAMA 378a3e684f Rails4: replace deprecated Relation#first with finder options at WikiControllerTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12635 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-11 09:24:40 +00:00
Toshi MARUYAMA a313d540a6 code format cleanup WikiControllerTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12634 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-11 09:24:24 +00:00
Toshi MARUYAMA 6097d6b1bf Rails4: replace deprecated find_all_by_* at TimelogCustomFieldsVisibilityTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12633 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-11 09:24:08 +00:00
Toshi MARUYAMA 6e8d8da1f3 Rails4: replace deprecated Relation#update_all at ProjectEnumerationsControllerTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12632 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-11 09:23:52 +00:00
Toshi MARUYAMA e11c68e417 Rails4: replace deprecated find_all_by_* at ProjectEnumerationsControllerTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12631 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-11 09:23:36 +00:00
Toshi MARUYAMA d401f86b0d fix find_all_by_id(n1, n2) parameter at TimelogCustomFieldsVisibilityTest
find_all_by_id(n1, n2) returns only n1 result.

git-svn-id: http://svn.redmine.org/redmine/trunk@12630 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-11 08:50:21 +00:00
Toshi MARUYAMA 97a4211b03 code format cleanup TimelogCustomFieldsVisibilityTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12629 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-11 08:50:07 +00:00
Toshi MARUYAMA a516a1bdb2 Rails4: replace deprecated find_all_by_* at IssuesCustomFieldsVisibilityTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12628 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-11 08:32:28 +00:00
Toshi MARUYAMA 8c595df595 Rails4: replace deprecated find_all_by_* at IssuesControllerTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12627 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-11 08:32:12 +00:00
Toshi MARUYAMA 65ba233c62 Rails4: replace deprecated Relation#last with finder options at MessagesControllerTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12626 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-11 07:47:18 +00:00
Toshi MARUYAMA 7ac013fbe8 Rails4: replace deprecated Relation#last with finder options at IssuesControllerTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12625 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-11 07:47:02 +00:00
Toshi MARUYAMA 15031f6173 code format cleanup ProjectEnumerationsControllerTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12624 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-11 07:46:46 +00:00
Toshi MARUYAMA e30aa4b245 code format cleanup MessagesControllerTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12623 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-11 07:46:29 +00:00
Toshi MARUYAMA 20482fdee3 Rails4: replace deprecated find_all_by_* at IssuesControllerTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12622 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-11 07:22:39 +00:00
Toshi MARUYAMA ca4ea40888 fix find_all_by_id(n1, n2) parameter at IssuesCustomFieldsVisibilityTest#test_index_with_partial_custom_field_visibility
find_all_by_id(n1, n2) returns only n1 result.

git-svn-id: http://svn.redmine.org/redmine/trunk@12621 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-11 07:05:48 +00:00
Toshi MARUYAMA 7484cf07b6 cleanup syntax of Relation#all at WikiController#export
git-svn-id: http://svn.redmine.org/redmine/trunk@12620 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-11 06:03:38 +00:00
Toshi MARUYAMA 39ceaa7d55 cleanup syntax of Relation#all at app/views/watchers/_new.html.erb
git-svn-id: http://svn.redmine.org/redmine/trunk@12619 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-11 05:51:35 +00:00
Toshi MARUYAMA 2066969c7d code format cleanup WikiController
git-svn-id: http://svn.redmine.org/redmine/trunk@12618 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-11 05:51:18 +00:00
Toshi MARUYAMA 3e17eb2956 code format cleanup app/views/watchers/_new.html.erb
git-svn-id: http://svn.redmine.org/redmine/trunk@12617 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-11 05:26:33 +00:00
Toshi MARUYAMA a7b8e6c02a Rails4: replace deprecated find_all_by_* at WatchersController
git-svn-id: http://svn.redmine.org/redmine/trunk@12616 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-10 12:49:52 +00:00
Toshi MARUYAMA a3f0dae9c4 Rails4: replace deprecated find_all_by_* at RepositoriesController#committers
git-svn-id: http://svn.redmine.org/redmine/trunk@12615 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-10 12:49:35 +00:00
Toshi MARUYAMA 073b403bd9 Rails4: replace deprecated Relation#update_all at Project#create_time_entry_activity_if_needed
git-svn-id: http://svn.redmine.org/redmine/trunk@12614 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-10 12:49:20 +00:00
Toshi MARUYAMA 1c71eccff2 remove unneeded Relation#all from app/views/settings/_repositories.html.erb
git-svn-id: http://svn.redmine.org/redmine/trunk@12613 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-10 12:49:04 +00:00
Toshi MARUYAMA fa544d9934 Rails4: replace deprecated Relation#count with finder options at UsersHelper#users_status_options_for_select
git-svn-id: http://svn.redmine.org/redmine/trunk@12612 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-10 12:48:48 +00:00
Toshi MARUYAMA 9420d7e345 Rails4: replace deprecated Relation#first with finder options at ApiTest::VersionsTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12611 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-10 12:24:19 +00:00
Toshi MARUYAMA 7a4e325b36 remove unneeded Relation#all from app/views/settings/_projects.html.erb
git-svn-id: http://svn.redmine.org/redmine/trunk@12610 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-10 12:13:10 +00:00
Toshi MARUYAMA 373082fcbf code format cleanup app/views/settings/_repositories.html.erb
git-svn-id: http://svn.redmine.org/redmine/trunk@12609 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-10 12:12:53 +00:00
Toshi MARUYAMA ea9b40ab4d Rails4: replace deprecated Relation#first with finder options at ApiTest::VersionsTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12608 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-10 11:25:25 +00:00
Toshi MARUYAMA c538543583 Rails4: replace deprecated Relation#first with finder options at ApiTest::UsersTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12607 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-10 11:24:59 +00:00
Toshi MARUYAMA 7f93cc74b4 Rails4: replace deprecated Relation#first with finder options at ApiTest::TimeEntriesTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12606 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-10 11:24:34 +00:00
Toshi MARUYAMA 505483f224 Rails4: replace deprecated Relation#first with finder options at ApiTest::ProjectsTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12605 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-10 11:24:00 +00:00
Toshi MARUYAMA e03cfe1443 remove unneeded Relation#all from RepositoriesHelper#render_changeset_changes
git-svn-id: http://svn.redmine.org/redmine/trunk@12604 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-10 11:23:28 +00:00
Toshi MARUYAMA b02429e864 Rails4: replace deprecated find_all_by_* at TimelogController#find_time_entries
git-svn-id: http://svn.redmine.org/redmine/trunk@12603 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-10 10:40:46 +00:00
Toshi MARUYAMA c57490f48e cleanup syntax of Relation#all at QueriesController#index
git-svn-id: http://svn.redmine.org/redmine/trunk@12602 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-10 10:30:57 +00:00
Toshi MARUYAMA 72715ec78e cleanup syntax of Relation#all at MembersController#index
git-svn-id: http://svn.redmine.org/redmine/trunk@12601 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-10 10:30:33 +00:00
Toshi MARUYAMA fe6ef59e37 cleanup syntax of Relation#all at IssueStatusesController#index
git-svn-id: http://svn.redmine.org/redmine/trunk@12600 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-10 10:30:10 +00:00
Toshi MARUYAMA d02bcbcee5 Rails4: replace deprecated Relation#first with finder options at integration IssuesTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12599 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-10 08:39:32 +00:00
Toshi MARUYAMA 1c938cd1d3 Rails4: replace deprecated Relation#first with finder options at ApiTest::IssuesTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12598 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-10 08:38:59 +00:00
Toshi MARUYAMA b6d6325198 Rails4: replace deprecated Relation#first with finder options at ApiTest::IssueRelationsTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12597 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-10 08:38:36 +00:00
Toshi MARUYAMA 3480d46ff3 Rails4: replace deprecated Relation#first with finder options at ApiTest::IssueCategoriesTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12596 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-10 08:38:09 +00:00
Toshi MARUYAMA c020578820 Rails4: replace deprecated Relation#first with finder options at ApiTest::AttachmentsTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12595 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-10 08:37:33 +00:00
Toshi MARUYAMA b652f7fc27 cleanup syntax of Relation#all at NewsController#index
git-svn-id: http://svn.redmine.org/redmine/trunk@12594 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-10 08:13:47 +00:00
Toshi MARUYAMA 99fe35be42 remove unneeded Relation#all from AuthSource#authenticate
git-svn-id: http://svn.redmine.org/redmine/trunk@12593 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-10 08:00:57 +00:00
Toshi MARUYAMA 4292f4116b Rails4: replace deprecated Relation#count with finder options at ProjectsController#show
git-svn-id: http://svn.redmine.org/redmine/trunk@12592 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-10 07:46:53 +00:00
Toshi MARUYAMA f7a1664399 cleanup syntax of Relation#all at app/views/wiki/rename.html.erb
git-svn-id: http://svn.redmine.org/redmine/trunk@12591 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-10 07:46:23 +00:00
Toshi MARUYAMA 6f4d3c1c64 Rails4: replace deprecated Relation#first with finder options at IssuesControllerTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12590 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-10 05:46:33 +00:00
Toshi MARUYAMA 57740505b0 remove unneeded Relation#all from IssuesControllerTest#test_bulk_copy_to_another_project
git-svn-id: http://svn.redmine.org/redmine/trunk@12589 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-10 05:46:15 +00:00
Toshi MARUYAMA 56a3c1ad40 Rails4: replace deprecated Relation#sum with finder options at Issue#total_spent_hours
git-svn-id: http://svn.redmine.org/redmine/trunk@12588 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-10 05:02:44 +00:00
Toshi MARUYAMA 5d535f8996 cleanup syntax of Relation#all at app/views/wiki/edit.html.erb
git-svn-id: http://svn.redmine.org/redmine/trunk@12587 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-10 04:45:46 +00:00
Toshi MARUYAMA c1c1b548d0 remove unneeded Relation#all from IssuesControllerTest#test_bulk_copy_should_allow_not_changing_the_issue_attributes
git-svn-id: http://svn.redmine.org/redmine/trunk@12586 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-10 04:45:28 +00:00
Toshi MARUYAMA 3fcd5d529c add missing Relation#all at WorkflowsController#copy of r12583
git-svn-id: http://svn.redmine.org/redmine/trunk@12585 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-10 04:19:47 +00:00
Toshi MARUYAMA c7723e9bc9 Rails4: replace deprecated Relation#first with finder options at IssueRelationsControllerTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12584 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-10 04:11:53 +00:00
Toshi MARUYAMA ee49bdd81b Rails4: replace deprecated find_all_by_* at WorkflowsController#copy
git-svn-id: http://svn.redmine.org/redmine/trunk@12583 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-10 04:11:36 +00:00
Toshi MARUYAMA efb5d5769a Rails4: replace deprecated Relation#last with finder options at IssuesControllerTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12582 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-10 04:11:20 +00:00
Toshi MARUYAMA c0303bf47c remove unneeded Relation#all from WorkflowsControllerTest#status_transitions
git-svn-id: http://svn.redmine.org/redmine/trunk@12581 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-10 03:54:23 +00:00
Toshi MARUYAMA 0a72533b59 Rails4: replace deprecated Relation#update_all at IssuesController
git-svn-id: http://svn.redmine.org/redmine/trunk@12580 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-10 03:39:51 +00:00
Toshi MARUYAMA 09147940fa Rails4: replace deprecated find_all_by_* at IssuesController
git-svn-id: http://svn.redmine.org/redmine/trunk@12579 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-10 03:39:35 +00:00
Toshi MARUYAMA 7c10f41ce3 Rails4: replace deprecated Relation#first with finder options at AttachmentsControllerTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12578 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-10 01:21:07 +00:00
Toshi MARUYAMA d852b8a4e6 remove unneeded Relation#all from RepositorySubversionTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12577 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-09 09:55:26 +00:00
Toshi MARUYAMA e41271f2bd remove unneeded Relation#all from RepositoryMercurialTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12576 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-09 09:55:10 +00:00
Toshi MARUYAMA 776bf76f46 remove unneeded Relation#all from RepositoryDarcsTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12575 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-09 09:54:54 +00:00
Toshi MARUYAMA 4ab85ff0cb remove unneeded Relation#all from RepositoryCvsTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12574 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-09 09:54:37 +00:00
Toshi MARUYAMA 890851eb85 remove unneeded Relation#all from RepositoryBazaarTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12573 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-09 09:54:21 +00:00
Toshi MARUYAMA ac72e7a8d5 remove unneeded Relation#all from Watcher#prune
git-svn-id: http://svn.redmine.org/redmine/trunk@12572 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-09 08:35:10 +00:00
Toshi MARUYAMA 907663f83c Rails4: replace deprecated find_all_by_* at UserTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12571 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-09 08:14:21 +00:00
Toshi MARUYAMA b3dbe07c95 Rails4: replace deprecated find_all_by_* at FieldFormat
git-svn-id: http://svn.redmine.org/redmine/trunk@12570 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-09 08:14:06 +00:00
Toshi MARUYAMA 6dbb9c3677 remove unneeded Relation#all from Watcher#prune_single_user
git-svn-id: http://svn.redmine.org/redmine/trunk@12569 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-09 07:41:50 +00:00
Toshi MARUYAMA 05aa146fad code format cleanup Watcher model
git-svn-id: http://svn.redmine.org/redmine/trunk@12568 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-09 07:41:34 +00:00
Toshi MARUYAMA 8a9db2841d backout r12562 : remove unneeded Relation#all from Repository::Mercurial#latest_changesets
git-svn-id: http://svn.redmine.org/redmine/trunk@12567 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-09 07:07:06 +00:00
Toshi MARUYAMA eb98a1f714 backout r12540 : remove unneeded Relation#all from News#latest
git-svn-id: http://svn.redmine.org/redmine/trunk@12566 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-09 07:06:50 +00:00
Toshi MARUYAMA a6da09026a Rails4: replace deprecated Relation#first with finder options at WikiContentTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12565 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-09 06:43:49 +00:00
Toshi MARUYAMA d305d15373 Rails4: replace deprecated Relation#first with finder options at UserTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12564 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-09 06:43:33 +00:00
Toshi MARUYAMA 3ca03beb6f Rails4: replace deprecated find_all_by_* at IssueQuery model
git-svn-id: http://svn.redmine.org/redmine/trunk@12563 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-09 06:34:40 +00:00
Toshi MARUYAMA 1ddabbc874 remove unneeded Relation#all from Repository::Mercurial#latest_changesets
git-svn-id: http://svn.redmine.org/redmine/trunk@12562 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-09 05:25:05 +00:00
Toshi MARUYAMA 5315943bb9 remove trailing white-spaces from RepositoryTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12561 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-09 05:09:44 +00:00
Toshi MARUYAMA 01e22fc4b8 code format cleanup RepositoryTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12560 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-09 05:09:28 +00:00
Toshi MARUYAMA 205e727565 Rails4: replace deprecated find_all_by_* at ProjectTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12559 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-09 05:09:10 +00:00
Toshi MARUYAMA 56a40b3579 Rails4: replace deprecated find_all_by_* at RepositoryTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12558 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-09 05:08:54 +00:00
Toshi MARUYAMA 95bc7bf189 Rails4: replace deprecated Relation#update_all at RepositoryTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12557 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-09 05:08:38 +00:00
Toshi MARUYAMA 7960f543a4 remove unneeded Relation#all from ProjectTest#test_destroy
git-svn-id: http://svn.redmine.org/redmine/trunk@12556 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-09 04:30:17 +00:00
Toshi MARUYAMA ab46ef7c15 Rails4: replace deprecated Relation#update_all at QueryTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12555 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-09 04:24:24 +00:00
Toshi MARUYAMA 494a13d004 Rails4: replace deprecated Relation#update_all at ProjectTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12554 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-09 04:24:07 +00:00
Toshi MARUYAMA d15183b2e7 Rails4: replace deprecated Relation#update_all at WatcherTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12553 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-09 04:23:51 +00:00
Toshi MARUYAMA d7f986b6a8 Rails4: replace deprecated Relation#update_all at ProjectNestedSetTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12552 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-09 04:23:36 +00:00
Toshi MARUYAMA 394628f205 Rails4: replace deprecated Relation#first with finder options at MailHandlerTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12551 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-09 04:23:19 +00:00
Toshi MARUYAMA 132021f895 Rails4: replace deprecated Relation#first with finder options at CipheringTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12550 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-09 04:23:03 +00:00
Toshi MARUYAMA bb54f0b7c5 Rails4: replace deprecated Relation#first with finder options at IssueTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12549 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-09 04:22:47 +00:00
Toshi MARUYAMA a6c18dce13 Rails4: replace deprecated find_all_by_* at Tracker model
git-svn-id: http://svn.redmine.org/redmine/trunk@12548 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-09 03:51:14 +00:00
Toshi MARUYAMA 92a948855e Rails4: replace deprecated Relation#update_all at IssueTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12547 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-09 03:35:14 +00:00
Toshi MARUYAMA d12c8e8397 Rails4: replace deprecated Relation#update_all at Repository model
git-svn-id: http://svn.redmine.org/redmine/trunk@12546 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-09 03:34:58 +00:00
Toshi MARUYAMA 4245a88542 Rails4: replace deprecated find_all_by_* at WikiPageTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12545 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-09 02:37:21 +00:00
Toshi MARUYAMA ecda4d33e8 Rails4: replace deprecated Relation#update_all at User model
git-svn-id: http://svn.redmine.org/redmine/trunk@12544 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-09 02:37:06 +00:00
Toshi MARUYAMA 09884154c9 code format cleanup ChangesetTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12543 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-09 00:06:06 +00:00
Toshi MARUYAMA facf04593f remove unneeded Relation#all from MailHandler#add_watchers
git-svn-id: http://svn.redmine.org/redmine/trunk@12542 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-09 00:05:50 +00:00
Toshi MARUYAMA c0e587ffc4 remove unneeded Relation#all from Project#copy_issues
git-svn-id: http://svn.redmine.org/redmine/trunk@12541 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-09 00:05:33 +00:00
Toshi MARUYAMA ca4dcdc3af remove unneeded Relation#all from News#latest
git-svn-id: http://svn.redmine.org/redmine/trunk@12540 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-09 00:05:14 +00:00
Toshi MARUYAMA d9624990e0 remove unneeded Relation#all from ChangesetTest#test_ref_keywords_closing_with_timelog
git-svn-id: http://svn.redmine.org/redmine/trunk@12539 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-09 00:04:56 +00:00
Toshi MARUYAMA ac214f5480 Rails4: replace deprecated Relation#first with finder options at ChangesetTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12538 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-09 00:04:38 +00:00
Toshi MARUYAMA 5feb02c31d Rails4: replace deprecated Relation#calculate with finder options at Issue model
git-svn-id: http://svn.redmine.org/redmine/trunk@12537 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-08 14:53:29 +00:00
Toshi MARUYAMA 66bdc014d4 remove unneeded Relation#all from Group#user_removed
git-svn-id: http://svn.redmine.org/redmine/trunk@12536 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-08 13:26:02 +00:00
Toshi MARUYAMA 1c2c4c484e Rails4: replace deprecated find_all_by_* at WikiPageTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12535 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-08 12:43:27 +00:00
Toshi MARUYAMA 143a1d8ec3 remove unneeded Relation#all from WikiPage#handle_redirects
git-svn-id: http://svn.redmine.org/redmine/trunk@12534 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-08 12:43:10 +00:00
Toshi MARUYAMA 95d86daef3 Rails4: replace deprecated find_all_by_* at WikiPage model
git-svn-id: http://svn.redmine.org/redmine/trunk@12533 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-08 12:42:53 +00:00
Toshi MARUYAMA 8aa22a05f4 Rails4: replace deprecated Relation#update_all at Issue model
git-svn-id: http://svn.redmine.org/redmine/trunk@12532 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-08 12:20:52 +00:00
Toshi MARUYAMA 84f43584f9 Rails4: replace deprecated Relation#update_all at IssueCategory model
git-svn-id: http://svn.redmine.org/redmine/trunk@12531 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-08 12:20:35 +00:00
Toshi MARUYAMA fb877ddcfb Rails4: replace deprecated Relation#update_all at GroupTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12530 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-08 12:20:16 +00:00
Toshi MARUYAMA 9f079015bf Rails4: replace deprecated Relation#update_all at Group model
git-svn-id: http://svn.redmine.org/redmine/trunk@12529 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-08 12:19:59 +00:00
Toshi MARUYAMA 599ac20570 Rails4: replace deprecated Relation#update_all at Issue model
git-svn-id: http://svn.redmine.org/redmine/trunk@12528 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-08 10:27:37 +00:00
Toshi MARUYAMA e80d9bb69a Rails4: replace deprecated Relation#update_all at IssueTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12527 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-08 10:11:32 +00:00
Toshi MARUYAMA 78ca50560a Rails4: replace deprecated Relation#update_all at acts_as_list
git-svn-id: http://svn.redmine.org/redmine/trunk@12526 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-08 10:11:16 +00:00
Toshi MARUYAMA 74ccf34361 Rails4: replace deprecated Relation#first with finder options at IssueCategoryTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12525 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-08 10:11:00 +00:00
Toshi MARUYAMA 2b36ff7016 Rails4: replace deprecated Relation#update_all at User model
git-svn-id: http://svn.redmine.org/redmine/trunk@12524 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-08 06:58:33 +00:00
Toshi MARUYAMA ce2e9158a5 Rails4: replace deprecated find_all_by_* at ProjectEnumerationsControllerTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12523 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-08 06:42:52 +00:00
Toshi MARUYAMA 184ea832d6 Rails4: replace deprecated Relation#first with finder options at NewsControllerTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12522 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-08 06:26:25 +00:00
Toshi MARUYAMA 4f28ed2fb4 Rails4: replace deprecated Relation#first with finder options at NewsControllerTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12521 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-08 06:23:43 +00:00
Toshi MARUYAMA 273e7420d4 Rails4: replace deprecated passing options to find at MessagesController
git-svn-id: http://svn.redmine.org/redmine/trunk@12520 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-08 06:11:46 +00:00
Toshi MARUYAMA c92f425309 Rails4: replace deprecated Relation#update_all at IssuesControllerTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12519 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-08 06:03:54 +00:00
Toshi MARUYAMA d731c036fb Rails4: replace deprecated find_all_by_* at GroupsController
git-svn-id: http://svn.redmine.org/redmine/trunk@12518 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-08 05:55:52 +00:00
Toshi MARUYAMA 251e3cc7fa remove unneeded Relation#all from app/views/custom_fields/_form.html.erb
git-svn-id: http://svn.redmine.org/redmine/trunk@12517 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-08 05:36:34 +00:00
Toshi MARUYAMA 585d93e499 Rails4: replace deprecated Relation#first with finder options at WikiPageTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12516 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-08 05:14:18 +00:00
Toshi MARUYAMA 2977f95ad9 Rails4: replace deprecated find_all_by_* at WikiPage model
git-svn-id: http://svn.redmine.org/redmine/trunk@12515 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-08 05:09:05 +00:00
Toshi MARUYAMA 035c68f1a9 Rails4: replace deprecated Relation#first with finder options at ChangesetTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12514 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-08 05:02:14 +00:00
Toshi MARUYAMA 4ca6fb4226 Rails4: replace deprecated Relation#update_all at BoardsControllerTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12513 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-08 04:58:29 +00:00
Toshi MARUYAMA 30e3e7e0b4 Rails4: replace deprecated Relation#update_all at Member model
git-svn-id: http://svn.redmine.org/redmine/trunk@12512 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-08 04:58:13 +00:00
Toshi MARUYAMA 5b77bd0076 Rails4: replace deprecated Relation#update_all at IssueStatus model
git-svn-id: http://svn.redmine.org/redmine/trunk@12511 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-08 04:57:56 +00:00
Toshi MARUYAMA c4a9339e3f Rails4: replace deprecated Relation#update_all at Enumeration model
git-svn-id: http://svn.redmine.org/redmine/trunk@12510 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-08 04:57:38 +00:00
Toshi MARUYAMA d9dc18011d Rails4: replace deprecated Relation#first with finder options at IssueCategoriesControllerTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12509 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-08 04:32:31 +00:00
Toshi MARUYAMA 7d4420fe19 Rails4: replace deprecated Relation#first with finder options at GroupsControllerTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12508 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-08 04:32:16 +00:00
Toshi MARUYAMA 848edf35fa Rails4: replace deprecated Relation#first with finder options at DocumentsControllerTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12507 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-08 04:32:00 +00:00
Toshi MARUYAMA 6204bcb34e Rails4: replace deprecated Relation#first with finder options at BoardsControllerTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12506 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-08 04:31:45 +00:00
Toshi MARUYAMA 375eca924c Rails4: replace deprecated Relation#first with finder options at AccountControllerTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12505 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-08 04:31:29 +00:00
Toshi MARUYAMA 76110407b7 Rails4: replace deprecated Relation#update_all at acts_as_list
git-svn-id: http://svn.redmine.org/redmine/trunk@12504 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-08 04:13:18 +00:00
Toshi MARUYAMA 6dcfa742fd Rails4: replace deprecated Relation#update_all at Board model
git-svn-id: http://svn.redmine.org/redmine/trunk@12503 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-08 04:03:11 +00:00
Toshi MARUYAMA ab6ac3b08f Rails4: replace deprecated Relation#update_all at Message model
git-svn-id: http://svn.redmine.org/redmine/trunk@12502 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-08 03:51:50 +00:00
Toshi MARUYAMA 0788000809 Rails4: replace deprecated Relation#first with finder options at AccountControllerOpenidTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12501 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-08 03:31:04 +00:00
Toshi MARUYAMA 8a6f4c3880 Rails4: replace deprecated Relation#first with finder options at AttachmentTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12500 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-08 02:49:09 +00:00
Toshi MARUYAMA 89b5518e0b Rails4: replace deprecated find_all_by_* at Journal model
git-svn-id: http://svn.redmine.org/redmine/trunk@12499 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-07 15:55:03 +00:00
Toshi MARUYAMA 52bcc01b32 Rails4: replace deprecated find_all_by_* at IssueQuery model
git-svn-id: http://svn.redmine.org/redmine/trunk@12498 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-07 15:54:47 +00:00
Toshi MARUYAMA d020a06c5c Rails4: replace deprecated find_all_by_* at ProjectTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12497 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-07 15:43:21 +00:00
Toshi MARUYAMA d884d09cc2 Rails4: replace deprecated find_all_by_* at MessageTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12496 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-07 15:43:05 +00:00
Toshi MARUYAMA 8dc4992973 Rails4: replace deprecated find_all_by_* at IssueTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12495 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-07 15:42:49 +00:00
Toshi MARUYAMA 1d0c93792b Rails4: replace deprecated Relation#update_all at SetDefaultRepositories db migration
git-svn-id: http://svn.redmine.org/redmine/trunk@12494 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-07 14:54:20 +00:00
Toshi MARUYAMA 9eaa4a7c1a Rails4: replace deprecated Relation#update_all at Repository model
git-svn-id: http://svn.redmine.org/redmine/trunk@12493 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-07 14:54:05 +00:00
Toshi MARUYAMA 691e218a75 add unit test to have one default repository
git-svn-id: http://svn.redmine.org/redmine/trunk@12492 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-07 14:53:49 +00:00
Toshi MARUYAMA f8df0e729c Rails4: deprecated find_by methods with options at ApplicationHelper
git-svn-id: http://svn.redmine.org/redmine/trunk@12491 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-07 14:11:03 +00:00
Toshi MARUYAMA a8c8266b9d Rails4: replace deprecated Relation#update_all at application helper test
git-svn-id: http://svn.redmine.org/redmine/trunk@12490 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-07 13:26:13 +00:00
Toshi MARUYAMA 14fa4dc683 Rails4: replace deprecated Relation#update_all at IssuePriority model
git-svn-id: http://svn.redmine.org/redmine/trunk@12489 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-07 12:33:43 +00:00
Toshi MARUYAMA 0bc3ef5014 Rails4: replace deprecated Relation#update_all at db migrations
git-svn-id: http://svn.redmine.org/redmine/trunk@12488 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-07 10:03:11 +00:00
Toshi MARUYAMA a5f028a242 use lambda form in acts_as_tree scope (#12499)
git-svn-id: http://svn.redmine.org/redmine/trunk@12487 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-07 10:02:50 +00:00
Toshi MARUYAMA e17bf40fe1 use lambda form in Version model scope (#12499)
git-svn-id: http://svn.redmine.org/redmine/trunk@12486 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-07 07:51:15 +00:00
Toshi MARUYAMA 73b27124f1 Rails4: replace deprecated Relation#update_all at CreateCustomFieldsRoles db migration
git-svn-id: http://svn.redmine.org/redmine/trunk@12485 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-07 07:50:59 +00:00
Jean-Philippe Lang d2f540358f Store mime type lookups in a hash.
git-svn-id: http://svn.redmine.org/redmine/trunk@12484 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-05 17:56:21 +00:00
Jean-Philippe Lang e1189c5335 Use the mime-types gem for getting mime types from filenames (#15790).
git-svn-id: http://svn.redmine.org/redmine/trunk@12483 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-05 16:35:59 +00:00
Jean-Philippe Lang 1f50862586 Use Rails.application.config.i18n.load_path for adding plugin locales (#12753).
Patch by Takeshi Yaegashi.

git-svn-id: http://svn.redmine.org/redmine/trunk@12482 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-05 14:46:22 +00:00
Jean-Philippe Lang 77ac3b7891 Reduces the number of subqueries when searching with many custom fields set as searchable (#15781).
git-svn-id: http://svn.redmine.org/redmine/trunk@12481 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-05 14:23:36 +00:00
Jean-Philippe Lang 7087dbb5b4 Fixed assertion for postgresql and sqlite (#8842).
git-svn-id: http://svn.redmine.org/redmine/trunk@12480 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-04 08:22:50 +00:00
Jean-Philippe Lang 3c540594dc Fixed test failure with ruby1.8 (#8842).
git-svn-id: http://svn.redmine.org/redmine/trunk@12479 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-03 19:42:43 +00:00
Jean-Philippe Lang 429b3a5dae Fixed test failure with sqlite (#8842).
git-svn-id: http://svn.redmine.org/redmine/trunk@12478 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-03 16:36:04 +00:00
Jean-Philippe Lang a4d3da988a Allow filtering with timestamp (#8842).
git-svn-id: http://svn.redmine.org/redmine/trunk@12477 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-03 15:54:49 +00:00
Jean-Philippe Lang 58a63c49c4 Fixed that magic links to existing attachments are not converted when previewing issue notes.
git-svn-id: http://svn.redmine.org/redmine/trunk@12476 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-03 14:42:15 +00:00
Toshi MARUYAMA 4ccc7dff14 svn propset svn:eol-style native test fixture (#15785)
git-svn-id: http://svn.redmine.org/redmine/trunk@12475 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-01 05:57:50 +00:00
Toshi MARUYAMA 803a0a030e support more character encoding in incoming emails (#15785)
Supporting encodings of iconv on Ruby 1.8 depend on iconv implementation.
glibc-common-2.12-1.132 on CentOS6 does not support ks_c_5601-1987.

Contributed by Felix Schäfer.

git-svn-id: http://svn.redmine.org/redmine/trunk@12474 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-01-01 05:54:28 +00:00
Toshi MARUYAMA 3ace0292c2 Rails4: replace deprecated find_by_id at Changeset class
git-svn-id: http://svn.redmine.org/redmine/trunk@12473 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-29 13:49:09 +00:00
Toshi MARUYAMA 9cefc90b0b Rails4: scm: reload repository after destroying changesets in incremental fetch test
git-svn-id: http://svn.redmine.org/redmine/trunk@12472 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-29 13:48:52 +00:00
Toshi MARUYAMA e9470e5585 explicitly define fix has_and_belongs_to_many join_table at Group and User
Rails4 cannot resolve automatically.

git-svn-id: http://svn.redmine.org/redmine/trunk@12471 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-27 23:33:15 +00:00
Toshi MARUYAMA 24904b4a03 Rails4 compatibility of RepositoryTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12470 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-27 03:40:30 +00:00
Toshi MARUYAMA 74dbb35b87 fix find_all_by_id(n1, n2) parameter at test_member_of_scope_should_return_the_union_of_all_members of PrincipalTest
find_all_by_id(n1, n2) returns only n1 result.

git-svn-id: http://svn.redmine.org/redmine/trunk@12469 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-27 03:26:05 +00:00
Toshi MARUYAMA 2959818688 fix find_all_by_id(n1, n2) parameter at test_not_member_of_scope_should_return_users_that_have_no_memberships of PrincipalTest
find_all_by_id(n1, n2) returns only n1 result.

git-svn-id: http://svn.redmine.org/redmine/trunk@12468 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-27 03:25:49 +00:00
Toshi MARUYAMA 8ec6004a7f fix find_all_by_id(n1, n2) parameter at test_show_export_to_pdf_with_changesets of IssuesControllerTest
find_all_by_id(n1, n2) returns only n1 result.

git-svn-id: http://svn.redmine.org/redmine/trunk@12467 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-27 03:25:32 +00:00
Toshi MARUYAMA 9c8e00057e Rails4 compatibility of ProjectTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12466 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-26 10:45:13 +00:00
Toshi MARUYAMA 25a0bde311 Rails4 compatibility of version group count
git-svn-id: http://svn.redmine.org/redmine/trunk@12465 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-26 10:33:18 +00:00
Toshi MARUYAMA 61c6858b05 code format cleanup Principal class
git-svn-id: http://svn.redmine.org/redmine/trunk@12464 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-26 09:19:56 +00:00
Toshi MARUYAMA c97986aa52 remove unneeded including ApplicationHelper from helper tests
git-svn-id: http://svn.redmine.org/redmine/trunk@12463 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-26 04:27:21 +00:00
Toshi MARUYAMA e9a48cf86a remove unneeded 'redmine/field_format' requirement from FieldFormatTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12462 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-26 04:11:16 +00:00
Toshi MARUYAMA 461c93a2dc fix typo redcarpet requirement in lib/redmine.rb (#15520)
git-svn-id: http://svn.redmine.org/redmine/trunk@12461 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-26 03:52:25 +00:00
Toshi MARUYAMA ce57d7b24a fix Pagination helper test class name
git-svn-id: http://svn.redmine.org/redmine/trunk@12460 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-26 03:18:57 +00:00
Toshi MARUYAMA 60640d4a59 Traditional Chinese translation updated by ChunChang Lo (#15764)
git-svn-id: http://svn.redmine.org/redmine/trunk@12457 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-24 05:47:48 +00:00
Toshi MARUYAMA e10aa2529d change requirement in bazaar lib as same with other scm libs (#15756)
git-svn-id: http://svn.redmine.org/redmine/trunk@12456 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-24 05:06:36 +00:00
Jean-Philippe Lang a657a12450 Don't load redcarpet with JRuby.
git-svn-id: http://svn.redmine.org/redmine/trunk@12453 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-23 17:07:51 +00:00
Jean-Philippe Lang 471e01ca50 Adds experimental support for Markdown formatting with redcarpet (#15520).
git-svn-id: http://svn.redmine.org/redmine/trunk@12452 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-23 13:05:10 +00:00
Jean-Philippe Lang 6311ade827 Rescue syntax highlighter exceptions.
git-svn-id: http://svn.redmine.org/redmine/trunk@12451 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-23 12:39:18 +00:00
Jean-Philippe Lang 0dc98aabe6 Adds an option for formatter display name.
git-svn-id: http://svn.redmine.org/redmine/trunk@12450 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-23 12:33:42 +00:00
Jean-Philippe Lang 0fabbd281e Updates for 2.4.2 release.
git-svn-id: http://svn.redmine.org/redmine/trunk@12447 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-23 08:46:47 +00:00
Toshi MARUYAMA f81f5589f9 Bulgarian translation updated by Ivan Cenov (#15755)
git-svn-id: http://svn.redmine.org/redmine/trunk@12446 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-23 02:20:21 +00:00
Jean-Philippe Lang b8c94d93e9 Fixed slow SELECT ... FOR UPDATE query when deleting an issue.
git-svn-id: http://svn.redmine.org/redmine/trunk@12445 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-22 15:49:53 +00:00
Toshi MARUYAMA 14bd57eb47 back out r12441
It is not compatible with Ruby 1.8.7.

git-svn-id: http://svn.redmine.org/redmine/trunk@12443 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-22 14:41:44 +00:00
Jean-Philippe Lang 4333a80bc1 Adds support for links on values for various custom field formats (#1358).
git-svn-id: http://svn.redmine.org/redmine/trunk@12442 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-22 14:09:33 +00:00
Toshi MARUYAMA b8b358a85f Rails4 compatibility of stylesheet_link_tag and javascript_include_tag at ApplicationHelper
git-svn-id: http://svn.redmine.org/redmine/trunk@12441 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-22 12:58:04 +00:00
Toshi MARUYAMA 90d3bb28b2 add stderr to config.active_support.deprecation in test and dev env
git-svn-id: http://svn.redmine.org/redmine/trunk@12440 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-22 12:39:56 +00:00
Toshi MARUYAMA b9db2228c0 replace deprecated Version#completed_pourcent at lib/redmine/helpers/gantt.rb (#12724)
git-svn-id: http://svn.redmine.org/redmine/trunk@12439 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-22 12:39:38 +00:00
Jean-Philippe Lang 5ee277fa22 Fixed that OpenID authentication fails with 422 error due to token verification (#15735).
git-svn-id: http://svn.redmine.org/redmine/trunk@12438 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-21 12:04:38 +00:00
Toshi MARUYAMA 2db5fc1a66 use environment variable for running independent tests (units etc.) in ci.rake
git-svn-id: http://svn.redmine.org/redmine/trunk@12437 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-21 12:00:08 +00:00
Jean-Philippe Lang bea821166d Fixed multiple scrollbars in project tree (#15741).
git-svn-id: http://svn.redmine.org/redmine/trunk@12435 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-21 11:34:28 +00:00
Toshi MARUYAMA 637e450824 make WatchersHelperTest passes when config.threadsafe! is enabled (#12097)
git-svn-id: http://svn.redmine.org/redmine/trunk@12428 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-21 11:13:39 +00:00
Toshi MARUYAMA fc4df508f0 make IssuesHelperTest passes when config.threadsafe! is enabled (#12097)
git-svn-id: http://svn.redmine.org/redmine/trunk@12427 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-21 11:08:51 +00:00
Toshi MARUYAMA 694394b04e use environment variable for extacting SCM repositories in ci.rake
git-svn-id: http://svn.redmine.org/redmine/trunk@12426 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-21 09:30:53 +00:00
Toshi MARUYAMA f9b5543075 fix svn raw diff failure on svn version 1.6.17 (revision 1128011)
git-svn-id: http://svn.redmine.org/redmine/trunk@12424 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-20 17:17:08 +00:00
Toshi MARUYAMA 3e4d4a0c1a Rails4 compatibility of Setting model
git-svn-id: http://svn.redmine.org/redmine/trunk@12423 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-20 11:54:23 +00:00
Toshi MARUYAMA 9b5ce4b7b4 Rails4: db migrate: replace "Permission.find_by_controller_and_action"
git-svn-id: http://svn.redmine.org/redmine/trunk@12422 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-20 07:10:46 +00:00
Jean-Philippe Lang 5c5ba0c61a Fixed that time entries custom values are not deleted when deleting a project or an issue (#15709).
git-svn-id: http://svn.redmine.org/redmine/trunk@12421 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-18 18:39:09 +00:00
Jean-Philippe Lang d4297ca3ff Fixed that text/plain attachments are added to issue description (#15684).
git-svn-id: http://svn.redmine.org/redmine/trunk@12420 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-18 18:13:13 +00:00
Jean-Philippe Lang 0ee2af4c06 Fixed that previous assignee is not notified on issue update (#15714).
git-svn-id: http://svn.redmine.org/redmine/trunk@12419 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-17 20:48:18 +00:00
Toshi MARUYAMA 82fb19a464 Traditional Chinese translation updated by ChunChang Lo (#15710)
git-svn-id: http://svn.redmine.org/redmine/trunk@12418 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-16 07:48:06 +00:00
Jean-Philippe Lang d5feb01b7e Removed unused variable.
git-svn-id: http://svn.redmine.org/redmine/trunk@12417 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-15 11:03:48 +00:00
Jean-Philippe Lang 77665b5252 Store relation type instead of i18n key in journals (#15704).
git-svn-id: http://svn.redmine.org/redmine/trunk@12416 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-15 11:02:24 +00:00
Jean-Philippe Lang 13756eb3a8 Fixed that links for relations in notifications do not include hostname (#15677).
git-svn-id: http://svn.redmine.org/redmine/trunk@12415 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-15 10:32:03 +00:00
Jean-Philippe Lang c6fc1a8047 Fixed that filtering time entries on activity does not take care of activity overrides (#15623).
git-svn-id: http://svn.redmine.org/redmine/trunk@12414 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-15 09:49:12 +00:00
Jean-Philippe Lang a4a91cab7e Add project identifier substitution option to the URL-pattern property of link format custom fields (#15701).
Patch by Mischa The Evil.

git-svn-id: http://svn.redmine.org/redmine/trunk@12413 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-15 08:53:02 +00:00
Jean-Philippe Lang 3d36b7d91a Typos in test names (#15701).
Patch by Mischa The Evil.

git-svn-id: http://svn.redmine.org/redmine/trunk@12412 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-15 08:49:45 +00:00
Toshi MARUYAMA 35d1ef2532 Bulgarian translation updated by Ivan Cenov (#15700)
git-svn-id: http://svn.redmine.org/redmine/trunk@12409 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-15 04:16:06 +00:00
Toshi MARUYAMA 3f4e2a0469 Russian translation updated by Alex Stein (#15696)
git-svn-id: http://svn.redmine.org/redmine/trunk@12408 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-15 04:05:12 +00:00
Toshi MARUYAMA 8bebe8016e Spanish translation updated by Borja Campina (#15688)
git-svn-id: http://svn.redmine.org/redmine/trunk@12407 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-15 03:46:13 +00:00
Jean-Philippe Lang a06952ed8a Adds tests for custom field description.
git-svn-id: http://svn.redmine.org/redmine/trunk@12406 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-14 11:26:47 +00:00
Jean-Philippe Lang e715c4b847 Removed default values on custom field min and max length.
git-svn-id: http://svn.redmine.org/redmine/trunk@12405 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-14 10:01:45 +00:00
Jean-Philippe Lang 3e5f1e326a ruby1.8 compatibility.
git-svn-id: http://svn.redmine.org/redmine/trunk@12404 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-14 09:24:37 +00:00
Jean-Philippe Lang a59dc1658b Removed hardcoded format in API response.
git-svn-id: http://svn.redmine.org/redmine/trunk@12403 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-14 09:00:05 +00:00
Jean-Philippe Lang ebb8e86122 Removed hardcoded formats for right-click edit.
git-svn-id: http://svn.redmine.org/redmine/trunk@12402 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-14 08:57:30 +00:00
Jean-Philippe Lang 32f782f1aa Adds translations.
git-svn-id: http://svn.redmine.org/redmine/trunk@12401 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-14 08:29:09 +00:00
Jean-Philippe Lang 2e2e2cfe42 Merged custom fields format refactoring.
git-svn-id: http://svn.redmine.org/redmine/trunk@12400 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-14 08:22:43 +00:00
Toshi MARUYAMA c74f6d9f9b add tests for non member watchers (#15622)
git-svn-id: http://svn.redmine.org/redmine/trunk@12396 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-09 06:16:03 +00:00
Toshi MARUYAMA 4823d03423 fix indents of OpenID tests in UserTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12395 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-09 06:15:52 +00:00
Toshi MARUYAMA 478a23bfa3 code format clean up UserTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12394 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-09 06:15:42 +00:00
Toshi MARUYAMA 0e4657cfad code format clean up MemberTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12393 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-09 06:15:31 +00:00
Toshi MARUYAMA 424393c28c code format clean up WatchersControllerTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12392 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-09 06:15:20 +00:00
Toshi MARUYAMA 3782836e73 fix disable to run test environment
git-svn-id: http://svn.redmine.org/redmine/trunk@12387 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-09 04:30:51 +00:00
Toshi MARUYAMA 7c15737ff2 remove duplicate test from UsersControllerTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12368 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-07 02:10:08 +00:00
Toshi MARUYAMA dce3d904a7 fix duplicate test name in IssuesControllerTest
git-svn-id: http://svn.redmine.org/redmine/trunk@12367 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-07 02:09:57 +00:00
Toshi MARUYAMA f1175fda70 prevent i18n deprecated warning
i18n 0.6.4 on Rails 3.2.16 changes behavior.
3b6e56e06f

git-svn-id: http://svn.redmine.org/redmine/trunk@12365 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-07 01:32:22 +00:00
Toshi MARUYAMA a624204f1b remove extra empty lines from test/unit/changeset_test.rb
git-svn-id: http://svn.redmine.org/redmine/trunk@12364 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-06 23:42:06 +00:00
Toshi MARUYAMA 436d44962d add test to send one mail with both settngs in creating issue (#15612)
git-svn-id: http://svn.redmine.org/redmine/trunk@12363 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-06 23:22:38 +00:00
Toshi MARUYAMA b212fdb72b add test not to send mail with no settng in creating issue (#15612)
git-svn-id: http://svn.redmine.org/redmine/trunk@12362 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-06 23:22:26 +00:00
Toshi MARUYAMA dceee1ea9a explicitly use mail send setting in unit issue test (#15612)
git-svn-id: http://svn.redmine.org/redmine/trunk@12361 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-06 23:22:15 +00:00
Toshi MARUYAMA 9223ab4252 remove "address_separator" etc. from tr.yml
These keys are not in other yamls.
These keys were removed from Rails i18n on 2011-11-21.
29f3cba4eb

git-svn-id: http://svn.redmine.org/redmine/trunk@12360 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-05 03:41:47 +00:00
Toshi MARUYAMA be002a1076 Turkish translation updated by Mert Salih Kaplan (#15601)
git-svn-id: http://svn.redmine.org/redmine/trunk@12358 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-05 02:59:16 +00:00
Toshi MARUYAMA afda064058 remove trailing white-spaces from test/unit/attachment_test.rb
git-svn-id: http://svn.redmine.org/redmine/trunk@12356 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-04 07:09:17 +00:00
Toshi MARUYAMA 8a123b178c update Rails version 3.2.16
git-svn-id: http://svn.redmine.org/redmine/trunk@12355 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-12-04 07:04:15 +00:00
Jean-Philippe Lang 6032263d9b Fixed that preferences are not preserved when adding a user fails (#15552).
git-svn-id: http://svn.redmine.org/redmine/trunk@12350 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-11-29 21:43:29 +00:00
Jean-Philippe Lang e494983e1f Fixed that CSS class for done ratio is not properly generated (#15523).
Patch by Go MAEDA.

git-svn-id: http://svn.redmine.org/redmine/trunk@12349 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-11-29 21:23:21 +00:00
Jean-Philippe Lang 23974fb0ce Fixed that validating a Setting with invalid name triggers an error (#15551).
git-svn-id: http://svn.redmine.org/redmine/trunk@12348 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-11-29 21:18:35 +00:00
Jean-Philippe Lang 088ab2e686 Fixed that the label element may contain at most one input.
git-svn-id: http://svn.redmine.org/redmine/trunk@12346 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-11-27 13:31:24 +00:00
Toshi MARUYAMA 391b5ec6ef use escaping html in wiki_syntax_detailed.html
git-svn-id: http://svn.redmine.org/redmine/trunk@12340 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-11-25 05:23:09 +00:00
Toshi MARUYAMA 41478dc664 Japanese translation updated by Go MAEDA (#15524)
git-svn-id: http://svn.redmine.org/redmine/trunk@12339 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-11-25 05:22:32 +00:00
Toshi MARUYAMA a528aa0333 use escaping html in Russian wiki_syntax.html (#9442)
git-svn-id: http://svn.redmine.org/redmine/trunk@12331 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-11-23 23:39:56 +00:00
Toshi MARUYAMA 9c0debd2c1 Russian wiki syntax help translations by Denis Savitsky (#9442)
git-svn-id: http://svn.redmine.org/redmine/trunk@12326 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-11-23 18:43:46 +00:00
Jean-Philippe Lang 8578a46b35 Extract generic formatting options to an helper.
git-svn-id: http://svn.redmine.org/redmine/trunk@12319 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-11-23 10:50:41 +00:00
Jean-Philippe Lang 8a1f26617d Don't create duplicate wikis in test (#15420).
Patch by George Gensure.

git-svn-id: http://svn.redmine.org/redmine/trunk@12317 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-11-23 09:13:48 +00:00
Jean-Philippe Lang 436ab28443 Updates for 2.4.1 release.
git-svn-id: http://svn.redmine.org/redmine/trunk@12314 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-11-23 08:26:39 +00:00
Jean-Philippe Lang 5c0078c63a Fixed that non-GET API requests respond with 422 (#15427).
git-svn-id: http://svn.redmine.org/redmine/trunk@12311 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-11-22 22:57:30 +00:00
Jean-Philippe Lang bba304ef39 Fixed that the sidebar may be displayed empty (#15414).
git-svn-id: http://svn.redmine.org/redmine/trunk@12310 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-11-20 19:17:20 +00:00
Jean-Philippe Lang 7df9f8d31e Use pagination css class for search results pagination (#15398).
git-svn-id: http://svn.redmine.org/redmine/trunk@12309 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-11-19 19:37:15 +00:00
Jean-Philippe Lang 00683d52f8 HTML5 conformance of error pages (#15381).
git-svn-id: http://svn.redmine.org/redmine/trunk@12308 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-11-19 19:21:48 +00:00
Toshi MARUYAMA 508a14c43f Czech "message" and "changeset" translation changed by Karel Pičman (#15391, #15403)
git-svn-id: http://svn.redmine.org/redmine/trunk@12303 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-11-19 12:24:33 +00:00
Toshi MARUYAMA 5a6e93584e fix wiki syntax "bold italic" (#15391, #15401)
Contributed by Karel Pičman.

git-svn-id: http://svn.redmine.org/redmine/trunk@12302 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-11-19 12:24:23 +00:00
Toshi MARUYAMA bd6c4b1a9c Czech Wiki syntax traslation updated by Karel Pičman (#15391, #15400)
git-svn-id: http://svn.redmine.org/redmine/trunk@12301 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-11-19 12:23:46 +00:00
Toshi MARUYAMA b9f1cdf8f5 German translation updated by Daniel Felix (#15395)
git-svn-id: http://svn.redmine.org/redmine/trunk@12300 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-11-19 12:23:33 +00:00
Toshi MARUYAMA 420a26de3f Czech traslation for 2.4-stable updated by Karel Pičman (#15391, #15402)
git-svn-id: http://svn.redmine.org/redmine/trunk@12299 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-11-19 12:23:21 +00:00
Jean-Philippe Lang bc0ec54afa Removed database_cleaner dependency (#15377).
git-svn-id: http://svn.redmine.org/redmine/trunk@12298 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-11-18 21:56:26 +00:00
Toshi MARUYAMA 8c3da81a1a Traditional Chinese translation updated by ChunChang Lo (#15376)
git-svn-id: http://svn.redmine.org/redmine/trunk@12296 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-11-18 08:18:59 +00:00
Jean-Philippe Lang dcbca130d1 CHANGELOG for 2.4.0.
git-svn-id: http://svn.redmine.org/redmine/trunk@12292 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-11-17 11:21:54 +00:00
Jean-Philippe Lang b1a1720f04 Bulgarian translation by Ivan Cenov (#15369).
git-svn-id: http://svn.redmine.org/redmine/trunk@12288 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-11-16 08:47:18 +00:00
Jean-Philippe Lang 0a5632013f Fixed UI tests.
git-svn-id: http://svn.redmine.org/redmine/trunk@12287 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-11-16 08:46:22 +00:00
Jean-Philippe Lang 67aa2cb34e Use :button_edit instead of :button_update for editing issues (#15275).
git-svn-id: http://svn.redmine.org/redmine/trunk@12285 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-11-16 08:32:09 +00:00
Jean-Philippe Lang f5985b3cd5 Use :button_save instead of :button_update on committers form (#15275).
git-svn-id: http://svn.redmine.org/redmine/trunk@12284 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-11-16 08:28:29 +00:00
Jean-Philippe Lang 3d7c3041b8 Removed deferred tests.
git-svn-id: http://svn.redmine.org/redmine/trunk@12283 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-11-16 07:58:35 +00:00
Jean-Philippe Lang f69b4da75f Add an indication to admin/info whether or not ImageMagick convert is available (#15311).
Patch by Mischa The Evil.

git-svn-id: http://svn.redmine.org/redmine/trunk@12278 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-11-15 20:11:00 +00:00
Jean-Philippe Lang 71c61f4996 Fixed that update_form always proposes the default status when updating an existing issue (#15344).
git-svn-id: http://svn.redmine.org/redmine/trunk@12277 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-11-15 19:59:19 +00:00
Toshi MARUYAMA 8910b7c605 fix repository tree can't handle two loading at once (#13348)
Contributed by Vadim Pushtaev.

git-svn-id: http://svn.redmine.org/redmine/trunk@12274 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-11-13 09:42:13 +00:00
Jean-Philippe Lang a22242ed20 Fixed uninitialized constant Redmine::Scm::Adapters::CommandFailed error when reloading in development mode.
git-svn-id: http://svn.redmine.org/redmine/trunk@12273 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-11-11 22:02:21 +00:00
Jean-Philippe Lang 6ae4bd7842 Fixed repository browser alignment (#15307).
git-svn-id: http://svn.redmine.org/redmine/trunk@12272 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-11-11 21:46:05 +00:00
Jean-Philippe Lang f8c2da3432 Removed svn:mergeinfo properties from trunk.
git-svn-id: http://svn.redmine.org/redmine/trunk@12269 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-11-11 21:13:59 +00:00
Jean-Philippe Lang 967564cba0 Removed deprecated align and width html attributes (#15307).
git-svn-id: http://svn.redmine.org/redmine/trunk@12268 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-11-11 21:01:21 +00:00
Jean-Philippe Lang 0569005759 Code cleanup: unverified request no longer raises a InvalidAuthenticityToken exception.
git-svn-id: http://svn.redmine.org/redmine/trunk@12267 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-11-11 20:59:17 +00:00
Toshi MARUYAMA 81d6952587 ci.rake: code format cleanup
git-svn-id: http://svn.redmine.org/redmine/trunk@12266 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-11-10 22:59:10 +00:00
Jean-Philippe Lang 8525e56c33 Adds a CSS class for reorder links (#15307).
git-svn-id: http://svn.redmine.org/redmine/trunk@12265 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-11-10 13:24:07 +00:00
Jean-Philippe Lang 3096b6183e Set version to 2.4.0.
git-svn-id: http://svn.redmine.org/redmine/trunk@12263 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-11-10 11:21:21 +00:00
Jean-Philippe Lang 6ccdee7713 Fixed that rake db:create fails with JRuby (#15218).
git-svn-id: http://svn.redmine.org/redmine/trunk@12261 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-11-10 10:33:35 +00:00
Toshi MARUYAMA ccf55e65f0 ci.rake: use 'jdbcsqlite3' for JRuby
git-svn-id: http://svn.redmine.org/redmine/trunk@12258 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-11-10 08:17:49 +00:00
Toshi MARUYAMA 0707c7a12d ci.rake: code format cleanup
git-svn-id: http://svn.redmine.org/redmine/trunk@12257 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-11-10 08:17:40 +00:00
Toshi MARUYAMA 882c4495c0 work around "rake db:create:all" error on JRuby SQLite3
<pre>
$ bundle exec rake ci --trace
...
rake aborted!
stack level too deep
/home/xxxx/.rvm/gems/jruby-1.7.4/gems/activerecord-3.2.15/lib/active_record/railties/databases.rake:184:in `local_database?'
/home/xxxx/.rvm/gems/jruby-1.7.4/gems/activerecord-3.2.15/lib/active_record/railties/databases.rake:52:in `(root)'
org/jruby/RubyHash.java:1375:in `each_value'
/home/xxxx/.rvm/gems/jruby-1.7.4/gems/activerecord-3.2.15/lib/active_record/railties/databases.rake:38:in `(root)'
</pre>

git-svn-id: http://svn.redmine.org/redmine/trunk@12256 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-11-10 00:19:17 +00:00
Toshi MARUYAMA 303fdc2913 remove trailing white-spaces from test/unit/project_members_inheritance_test.rb
git-svn-id: http://svn.redmine.org/redmine/trunk@12255 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-11-09 16:47:40 +00:00
Toshi MARUYAMA b96941763d upgrade activerecord-jdbc-adapter to 1.3.2
git-svn-id: http://svn.redmine.org/redmine/trunk@12254 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-11-09 16:44:44 +00:00
Toshi MARUYAMA 44012ec6c6 remove trailing white-spaces from test/unit/query_test.rb
git-svn-id: http://svn.redmine.org/redmine/trunk@12253 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-11-09 13:10:19 +00:00
Toshi MARUYAMA 979d3400ab remove trailing white-spaces from test/unit/setting_test.rb
git-svn-id: http://svn.redmine.org/redmine/trunk@12252 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-11-09 12:48:19 +00:00
Jean-Philippe Lang bff12254ac Custom fields in issue form - splitting is incorrect (#15227).
git-svn-id: http://svn.redmine.org/redmine/trunk@12251 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-11-09 11:19:06 +00:00
Jean-Philippe Lang d89c968bb1 Accept issue id with leading sharp when adding a related issue.
git-svn-id: http://svn.redmine.org/redmine/trunk@12250 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-11-09 11:09:50 +00:00
Jean-Philippe Lang f4aff7919a Log errors when moving attachments (#15295).
git-svn-id: http://svn.redmine.org/redmine/trunk@12249 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-11-09 09:46:55 +00:00
Jean-Philippe Lang 10e29f2223 Accept custom field format added at runtime (#15277).
Patch by Boris Bera.

git-svn-id: http://svn.redmine.org/redmine/trunk@12248 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-11-09 09:07:48 +00:00
Jean-Philippe Lang 1871378648 Gantt: sort versions like on the roadmap (#7335).
git-svn-id: http://svn.redmine.org/redmine/trunk@12247 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-11-09 08:54:45 +00:00
Jean-Philippe Lang 3661766edc Upgrade to Rails 3.2.15.
git-svn-id: http://svn.redmine.org/redmine/trunk@12246 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-11-09 07:51:00 +00:00
Jean-Philippe Lang 71b43ea1c7 Wiki Pages REST API with version returns wrong comments (#15235).
Patch by Yukinari TOYOTA.

git-svn-id: http://svn.redmine.org/redmine/trunk@12245 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-11-09 07:42:54 +00:00
Toshi MARUYAMA 2e1f80dcde Gemfile: remove "i18n"
activesupport 3.2.13 requires i18n 0.6.1 explicitly.
197b9f4d61

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12243 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-10-29 06:24:28 +00:00
Toshi MARUYAMA 56639689e0 back out r12241 (back out Rails version 3.2.13)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12242 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-10-29 05:45:44 +00:00
Toshi MARUYAMA 2cc413351a Gemfile: update Rails version 3.2.15
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12241 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-10-29 05:18:06 +00:00
Jean-Philippe Lang 918ec276f1 Fixed test failure (#15182).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12240 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-10-26 11:50:16 +00:00
Jean-Philippe Lang ba083225b7 Return to section anchor after wiki section edit (#15182).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12239 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-10-26 09:03:08 +00:00
Jean-Philippe Lang 7f22cc6113 Upgrade CodeRay to 1.1.0 (#8253).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12238 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-10-26 08:55:50 +00:00
Jean-Philippe Lang e162f87964 Replaces <option value=""></option> which is not HTML5 valid (#15191).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12237 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-10-26 08:08:45 +00:00
Jean-Philippe Lang 711982b7b3 Prevents duplicate element ids (#15191).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12236 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-10-26 07:17:02 +00:00
Jean-Philippe Lang 3578cf4d9a Replaced acronym with abbr tags (#15191).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12235 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-10-26 07:15:08 +00:00
Jean-Philippe Lang ec5dbdb0bd Fixed: JS-error while using a global custom query w/ project filter in a project context (#15190).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12234 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-10-26 06:56:35 +00:00
Toshi MARUYAMA 41ade07171 Simplified Chinese translation updated (#15186)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12232 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-10-24 06:06:30 +00:00
Toshi MARUYAMA 3109ed9320 code format cleanup app/models/changeset.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12231 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-10-24 05:40:32 +00:00
Toshi MARUYAMA 16b94e126b code format cleanup app/models/issue.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12230 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-10-24 05:40:21 +00:00
Toshi MARUYAMA 0552655ff5 Simplified Chinese translation for 2.3-stable updated (#15185)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12229 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-10-24 05:40:08 +00:00
Jean-Philippe Lang b48fcdaa97 Avoid a query if enabled_modules association is already loaded (#15058).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12228 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-10-20 16:04:04 +00:00
Jean-Philippe Lang 99bf8c95ab Fixed that issue nested set update is triggered even if parent is not changed (#15135).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12226 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-10-20 09:25:14 +00:00
Jean-Philippe Lang 13e381d31d Projects selection on custom field form (#15136).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12225 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-10-20 08:29:55 +00:00
Toshi MARUYAMA 4eea64d38f remove trailing white-spaces from test/unit/user_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12224 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-10-17 01:00:04 +00:00
Jean-Philippe Lang 3172359f97 Avoid N queries when displaying the issue list with custom fields.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12223 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-10-15 16:38:17 +00:00
Jean-Philippe Lang 758cc2f2e6 Fixed that WikiContent#next_version raises a comparison of Symbol with Arel::Table failed error (#14773).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12222 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-10-14 17:07:17 +00:00
Jean-Philippe Lang 699317e12e Adds some links for wiki history navigation.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12221 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-10-14 16:58:39 +00:00
Jean-Philippe Lang 5f747faa58 Fixed that viewing/editing a wiki page without WikiContent raises an error (#14986).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12220 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-10-13 11:19:47 +00:00
Jean-Philippe Lang 94e7df78ca Fixed that controller_issues_edit_before/after_save hooks have no controller context (#15044).
Patch by Jordan Hollinger.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12219 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-10-13 10:31:04 +00:00
Jean-Philippe Lang 58c69b8123 Fixed that redmine:migrate_from_mantis fails to migrate projects with all upper case name (#15050).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12218 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-10-13 10:07:34 +00:00
Jean-Philippe Lang 7bea176cdb Avoid lots of CustomField.find_by_id calls when displaying an issue history with custom fields (#15072).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12217 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-10-13 10:04:59 +00:00
Jean-Philippe Lang 60d6e16978 Fixed that non array commit_update_keywords raises an error (#7590).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12216 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-10-13 10:03:13 +00:00
Jean-Philippe Lang b071a937b3 List custom fields fielters: multiple select filter wider (#15073).
Patch by Jérôme Bataille.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12215 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-10-13 08:42:32 +00:00
Jean-Philippe Lang 176ce78574 Fixed that the mail method should return a Mail::Message (#15113).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12210 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-10-13 07:58:33 +00:00
Jean-Philippe Lang c6c0491ad8 Migrate settings according to r12208 (#7590).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12209 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-10-13 07:39:20 +00:00
Jean-Philippe Lang b6cb7aa8e3 Ability to define commit keywords per tracker (#7590).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12208 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-10-13 07:37:49 +00:00
Toshi MARUYAMA b8aa4da28a remove unneeded "require 'diff'" from WikiController (#15105)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12207 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-10-11 17:37:51 +00:00
Toshi MARUYAMA 461342dd2e add missing "require 'diff'" to Redmine::Helpers::Diff (#15105)
Contributed by Felix Bünemann.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12206 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-10-11 17:37:38 +00:00
Toshi MARUYAMA e7bc6364e1 add unit test of Redmine::Helpers::Diff (#15105)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12205 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-10-11 17:37:25 +00:00
Toshi MARUYAMA 53d749eb79 remove trailing white space from test/unit/wiki_content_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12204 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-10-10 03:56:54 +00:00
Toshi MARUYAMA a9892b5f0e fix typo in the Dutch "label_user_mail_option_all" translation (#15075)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12203 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-10-09 18:19:38 +00:00
Jean-Philippe Lang cfc65d9397 NoMethodError when uploading a file without logger (#14977).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12202 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-10-05 11:37:57 +00:00
Jean-Philippe Lang 1b63553dd4 Rows may not be oredered as expected with ruby1.8 (#4911).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12201 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-10-05 10:58:33 +00:00
Jean-Philippe Lang 3f566d6042 Hide issue custom fields when disabling issue tracking on new project.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12200 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-10-05 10:45:43 +00:00
Jean-Philippe Lang 7b1b605ae8 Don't update issues nor log time when importing old changesets (#4823).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12199 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-10-05 10:33:03 +00:00
Jean-Philippe Lang 0444ecca3c Pass the commit keyword used to update the issue to the plugin hook.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12198 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-10-05 10:02:31 +00:00
Jean-Philippe Lang a77b462a53 Support for multiple issue update keywords/rules in commit messages (#4911).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12197 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-10-05 09:41:11 +00:00
Toshi MARUYAMA b59d109680 German translation updated by Daniel Felix (#15028)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12196 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-10-02 13:31:19 +00:00
Toshi MARUYAMA 6ed3730c46 remove trailing white-spaces from config/locales/it.yml
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12195 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-10-02 08:34:23 +00:00
Toshi MARUYAMA 0c0b2f817f Traditional Chinese translation updated by ChunChang Lo (#15022)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12194 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-10-02 04:44:46 +00:00
Jean-Philippe Lang f399b31eff Test broken by r12192 (#2199).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12193 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-09-30 22:17:27 +00:00
Jean-Philippe Lang e35640f3e8 Allows user to clear dates and text fields when bulk editing issues (#2199).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12192 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-09-30 19:27:00 +00:00
Toshi MARUYAMA 285baaff94 Japanese translation updated by Go MAEDA (#15011)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12190 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-09-30 11:26:50 +00:00
Toshi MARUYAMA 38e8703ed4 pdf: fix empty page attached when exporting (#13632)
Contributed by Jun NAITOH.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12189 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-09-30 10:16:16 +00:00
Toshi MARUYAMA d8ddb2cee4 remove trailing white-spaces from app/models/custom_field.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12188 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-09-30 09:53:57 +00:00
Toshi MARUYAMA 31ccc32016 Slovak translation updated and changed by Katarína Nosková (#14901)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12187 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-09-30 08:34:54 +00:00
Toshi MARUYAMA 77c497daa0 Italian translation changed by Alberto Cennini (#14981)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12186 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-09-30 07:14:39 +00:00
Toshi MARUYAMA cbe75f3b9f remove trailing white-spaces from config/locales/ru.yml
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12185 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-09-30 06:54:57 +00:00
Toshi MARUYAMA 9b00bba5b5 Russian numeric translation changed by Sergei Danilov (#14920)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12184 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-09-30 06:54:46 +00:00
Toshi MARUYAMA 166d67bf87 Dutch translation updated by Pieter Nicolai (#14896)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12182 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-09-30 05:34:57 +00:00
Toshi MARUYAMA c72baca17c Dutch activerecord.errors.messages.too_long/too_short translation updated by Pieter Nicolai (#14896)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12181 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-09-30 05:34:46 +00:00
Toshi MARUYAMA b6f2b982ab Norwegian translation updated by Lennart Nordgreen (#14886)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12180 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-09-30 05:07:34 +00:00
Toshi MARUYAMA 13f6cd6b71 revert r12175 (#14883)
revert jdbc adapter version to above 1.2.6
due to test failure by "stack level too deep".

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12179 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-09-30 03:25:06 +00:00
Toshi MARUYAMA 7c2f62c798 Japanese "notice_not_authorized" translation changed (#14995)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12177 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-09-30 02:37:31 +00:00
Toshi MARUYAMA 3e90b6bcbf Bulgarian translation updated by Ivan Cenov (#15007)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12176 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-09-30 02:37:20 +00:00
Toshi MARUYAMA 5259da5e80 Gemfile: update jdbc adapter version above 1.3.0 (#14883)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12175 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-09-30 02:01:25 +00:00
Toshi MARUYAMA 3bc1dd573a Gemfile: update ruby-openid version above 2.3.0 (#14919)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12173 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-09-30 00:18:26 +00:00
Toshi MARUYAMA c136e6bc60 Gemfile: update jdbc adapter version above 1.2.6 (#14883)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12172 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-09-29 23:52:00 +00:00
Jean-Philippe Lang a1addba26c Adds some css classes (#14767).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12171 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-09-29 15:39:56 +00:00
Jean-Philippe Lang 481a1311b7 Adds a project specific css class to body (#14767).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12170 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-09-29 15:34:25 +00:00
Jean-Philippe Lang 2012e635b0 Removed unused code (#14621).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12169 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-09-29 15:27:31 +00:00
Jean-Philippe Lang 30eaf86f29 Filling locales (#3413).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12168 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-09-29 11:51:32 +00:00
Jean-Philippe Lang cfc05d310e Exclude attachments from incoming emails based on file name (#3413).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12167 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-09-29 11:50:49 +00:00
Jean-Philippe Lang 2c97f9ecde AJAX call on the issue form resets data entered during the call (#14621).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12166 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-09-29 10:29:29 +00:00
Jean-Philippe Lang 886284b33f REST API: custom fields definition (#11159).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12165 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-09-29 10:08:30 +00:00
Jean-Philippe Lang 4a36e09d49 migrate_from_trac.rake does not properly parse First Name and Last Name (#14592).
Patch by Craig Rodrigues.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12164 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-09-25 17:49:58 +00:00
Jean-Philippe Lang 5e2eedf2c5 Fixed that Mantis/Trac users are not imported because of password too short (#14590).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12163 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-09-25 17:47:29 +00:00
Jean-Philippe Lang 62b66e9b38 Prevents invalid SQL with invalid group_ids (#14902).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12162 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-09-25 17:35:59 +00:00
Jean-Philippe Lang 3ace406bba French translation for underscore (#14972).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12161 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-09-25 17:17:55 +00:00
Toshi MARUYAMA 11ae71c5b9 remove trailing white-space from test/functional/repositories_bazaar_controller_test.rb (#14931)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12157 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-09-18 14:37:25 +00:00
Toshi MARUYAMA 5aa8358f97 scm: fix annotate error with non ASCII author on Ruby 1.9 and Ruby 2.0 (#14931)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12156 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-09-18 14:22:44 +00:00
Toshi MARUYAMA 120689e7cb scm: bazaar: update test repository for non ASCII author (#14931)
* run "bzr branch --no-tree branch00 author_non_ascii"
* add revision to this branch

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12155 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-09-18 14:22:32 +00:00
Toshi MARUYAMA bf0676e17a scm: git: fix indents of non ASCII path annotate test (#14931)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12153 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-09-18 13:23:09 +00:00
Toshi MARUYAMA 9c9b5e471c use assert_select instead of assert_tag in Git non ASCII path annotate test (#14931)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12150 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-09-18 10:36:38 +00:00
Toshi MARUYAMA d604725b40 scm: remove unnecessary h() from annotate author (#14931)
Rails3 escapes by default.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12149 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-09-18 10:13:28 +00:00
Toshi MARUYAMA 8b794b5e83 scm: bazaar: add test for author html escaping (#14931)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12148 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-09-18 10:13:16 +00:00
Toshi MARUYAMA ef87b1cee4 scm: bazaar: update test repository for author html escaping (#14931)
* run "bzr branch --no-tree branch00 author_escaping"
* add revision to this branch

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12147 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-09-18 10:13:05 +00:00
Toshi MARUYAMA 23c56501de scm: bazaar: split REPOSITORY_PATH to trunk in functional test (#14931)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12146 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-09-18 10:12:53 +00:00
Toshi MARUYAMA 9002477006 scm: git: use "--encoding=UTF-8" for blame (#14931)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12143 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-09-18 06:16:55 +00:00
Toshi MARUYAMA da87e4b1ef scm: git: change non ASCII user name variable to instance variable (#14931)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12142 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-09-18 06:16:43 +00:00
Toshi MARUYAMA eaf05a87b4 use assert_select instead of assert_tag in Bazaar annotate test (#14931)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12141 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-09-18 05:44:41 +00:00
Toshi MARUYAMA 72e48e6a68 use assert_select instead of assert_tag in Mercurial annotate test (#14931)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12140 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-09-18 05:01:35 +00:00
Toshi MARUYAMA 435df86757 fix test failure (#14931)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12139 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-09-18 04:19:27 +00:00
Toshi MARUYAMA 12e1499b06 code format cleanup app/views/repositories/annotate.html.erb (#14931)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12138 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-09-18 03:36:49 +00:00
Jean-Philippe Lang 4db3e0be80 Updates for 2.3.3
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12135 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-09-14 06:46:40 +00:00
Jean-Philippe Lang 59b935aa46 Filters show issues with unused custom fields (#13537).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12133 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-09-13 17:41:54 +00:00
Jean-Philippe Lang ae7304dd00 Test for #14798.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12132 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-09-11 22:00:40 +00:00
Jean-Philippe Lang cb747a34ef Wrong done_ratio calculation for parent with subtask having estimated_hours=0 ().
Patch by Daniel Felix.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12131 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-09-11 22:00:18 +00:00
Jean-Philippe Lang e7931941a7 Typo (#14819).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12130 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-09-11 21:34:27 +00:00
Jean-Philippe Lang 9149425750 Remove EOLs from attachments filename (#14819).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12129 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-09-11 21:31:59 +00:00
Jean-Philippe Lang 02fca76c13 Strip eols from file names (#14819).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12128 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-09-11 19:19:24 +00:00
Jean-Philippe Lang 06efcaddfa Fixed usage of #attribute_present? in UserPreference (#13008).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12126 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-09-10 17:39:49 +00:00
Toshi MARUYAMA 15ab64488a remove trailing white-space from app/models/journal.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12121 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-09-05 11:14:30 +00:00
Toshi MARUYAMA 0fc21282d5 fix Russian "description_date_range_interval" translation misprint (#14501)
Contributed by Artem Kondratyev.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12120 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-09-05 10:43:30 +00:00
Toshi MARUYAMA 4212654b64 fix wrong Russian translation in close project message (#14697)
Contributed by Artur Gadelshin.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12118 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-08-15 13:54:13 +00:00
Toshi MARUYAMA 81ad6501ef Portuguese translation for trunk updated by Lije Also (#14682)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12116 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-08-14 05:43:02 +00:00
Toshi MARUYAMA 1f196787c8 Portuguese translation for 2.3-stable updated by Lije Also (#14682, #14686)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12115 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-08-14 05:42:49 +00:00
Toshi MARUYAMA 4a2f9685bb Traditional Chinese translation for wiki_syntax.html by ChunChang Lo (#14684)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12114 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-08-14 03:51:02 +00:00
Toshi MARUYAMA 69714f4a07 use escaping html in wiki_syntax.html
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12113 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-08-13 10:52:53 +00:00
Toshi MARUYAMA b188a05713 fix icon image paths of en-GB wiki syntax help (#14630)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12112 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-08-13 09:48:14 +00:00
Toshi MARUYAMA e574aad6d7 Traditional Chinese translation for wiki_syntax by ChunChang Lo (#14677)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12111 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-08-13 09:09:51 +00:00
Toshi MARUYAMA bda60769ea Japanese wiki_syntax_detailed.html translation updated by Go MAEDA (#14676)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12110 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-08-13 09:09:39 +00:00
Toshi MARUYAMA e4fc36fa1b French wiki_syntax.html and wiki_syntax_detailed.html updated by Thomas Godard (#14670)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12109 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-08-13 02:18:30 +00:00
Toshi MARUYAMA a3c30bf234 remove svn:executable from lib/plugins/rfpdf excluding lib/fonts/ttf2ufm/ttf2ufm(.exe)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12108 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-08-10 09:52:40 +00:00
Toshi MARUYAMA 98ac4c0baf remove unused lib/plugins/rfpdf/lib/fpdf/fpdf_eps.rb
This source has broken syntax "when :" on Ruby 1.9.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12107 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-08-10 09:37:10 +00:00
Toshi MARUYAMA 556cbad5c0 Japanese wiki_syntax.html translation updated by Go MAEDA (#14659)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12106 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-08-10 09:36:59 +00:00
Toshi MARUYAMA d769b8080d German translation for member inheritance changed by Daniel Felix (#14657)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12105 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-08-10 08:42:36 +00:00
Toshi MARUYAMA 816a6e4b1f Bulgarian translation updated by Ivan Cenov (#14651)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12104 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-08-09 08:11:05 +00:00
Toshi MARUYAMA 2aa4f77fb0 German wiki_syntax.html translation updated by Daniel Felix (#14649)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12103 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-08-09 02:19:22 +00:00
Toshi MARUYAMA b5b0d7396b German translation updated by Daniel Felix (#14647)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12102 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-08-09 01:47:59 +00:00
Toshi MARUYAMA bdf6bd3355 Spanish translation updated by Thomas Godard (#14645)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12101 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-08-09 01:47:48 +00:00
Toshi MARUYAMA 8254cd2381 fix icon image paths of wiki syntax help (#14630)
Contributed by Go MAEDA.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12100 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-08-09 00:52:09 +00:00
Toshi MARUYAMA adebdc835f code format cleanup app/views/projects/settings/_members.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12099 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-08-09 00:42:24 +00:00
Toshi MARUYAMA 3acefa8923 remove unneeded h() from app/views/projects/settings/_members.html.erb
Rails3 escapes by default.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12098 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-08-09 00:42:12 +00:00
Toshi MARUYAMA 4a11737d1c change member save button from :button_change to :button_save (#13745)
Contributed by Daniel Felix.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12097 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-08-09 00:09:06 +00:00
Toshi MARUYAMA 0be69b8b04 copy English wiki syntax helps to other languages (#14630)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12096 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-08-08 03:49:00 +00:00
Toshi MARUYAMA 43da3859bc revert r12094 (#14630)
r12094 lost "svn copy".

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12095 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-08-08 03:46:39 +00:00
Toshi MARUYAMA e4c13efed7 copy English wiki syntax helps to other languages (#14630)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12094 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-08-08 03:38:50 +00:00
Toshi MARUYAMA 7394aeaa32 move English wiki syntax helps to en sub directory (#14630)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12093 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-08-08 03:38:21 +00:00
Toshi MARUYAMA 9fc4efcdd9 remove trailing white-spaces from public/help/wiki_syntax_detailed.html
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12092 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-08-08 03:38:09 +00:00
Toshi MARUYAMA 62bbd52452 Japanese translation updated by Go MAEDA (#14631)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12091 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-08-07 23:48:15 +00:00
Toshi MARUYAMA c93dd877e9 code format cleanup app/views/projects/index.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12090 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-08-07 23:48:03 +00:00
Toshi MARUYAMA e05f54819b Traditional Chinese translation updated by ChunChang Lo (#14625)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12089 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-08-07 07:18:52 +00:00
Toshi MARUYAMA 33ef601b12 gender neutral source comment at app/controllers/my_controller.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12088 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-08-06 06:27:30 +00:00
Toshi MARUYAMA ae2b47afd6 code format cleanup app/models/issue.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12087 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-08-06 06:27:16 +00:00
Jean-Philippe Lang 85d4ac372a Submit handler should be live as well (#14615).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12086 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-08-05 18:32:18 +00:00
Jean-Philippe Lang 936ef250b4 Add hooks for user preferences (#14614).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12085 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-08-05 18:29:29 +00:00
Jean-Philippe Lang cb90cdcc15 Warn me when leaving a page with unsaved text doesn't work when editing an update note (#14615).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12084 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-08-05 18:12:34 +00:00
Jean-Philippe Lang fbffe332e2 Removed hardcoded string (#3872).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12083 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-08-05 18:04:20 +00:00
Jean-Philippe Lang fa51c8601d Adds field_must_change_passwd string to locales (#3872).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12082 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-08-05 18:00:42 +00:00
Jean-Philippe Lang b764e39847 Option to force a user to change his password (#3872).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12081 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-08-05 17:58:33 +00:00
Jean-Philippe Lang bd4fba08e5 One click filter in search view (#2865).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12080 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-08-05 17:19:49 +00:00
Jean-Philippe Lang fd1b060705 Fixed that standard fields disabled still appear in email notifications (#14584).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12079 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-08-05 17:08:26 +00:00
Jean-Philippe Lang b19b902345 Moved CUSTOM_FIELDS_TABS out of the model.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12077 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-08-04 10:26:54 +00:00
Jean-Philippe Lang b900ea8e2f Default data loader raises an error when called from the rake task (#14607).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12076 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-08-04 10:18:46 +00:00
Toshi MARUYAMA e13814a59c remove trailing white-spaces from ApplicationHelper
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12075 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-08-03 13:23:32 +00:00
Toshi MARUYAMA 60fa32d51a replace tab to space at ApplicationHelper
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12074 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-08-03 13:23:21 +00:00
Toshi MARUYAMA 7711e37da4 remove ineffective "logger.info" and "logger.error" check from MailHandler model (#14598)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12073 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-08-03 10:46:53 +00:00
Toshi MARUYAMA f5658df8db add example on how to run a single test to documentation (#14588)
Contributed by Mischa The Evil.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12072 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-08-01 03:31:54 +00:00
Toshi MARUYAMA c49451eb10 not use assert_not_nil in Errors#[]
r7593 etc. replaced Rails2 Errors#on.
Rails3 Errors#[] always return array.
So, Rails3 Errors#[] is always not nil.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12070 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-30 08:23:54 +00:00
Toshi MARUYAMA c20b1d64a7 add missing fixture to test/unit/issue_relation_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12069 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-30 08:23:42 +00:00
Jean-Philippe Lang 3df08b02b4 Broken tests (#14491).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12068 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-29 19:08:01 +00:00
Jean-Philippe Lang 1502da5726 Use the default project when receiving an email with an invalid project keyword (#14491).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12067 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-29 16:37:45 +00:00
Jean-Philippe Lang 27c3299f32 Fixed that open/closed counts on issues summary are not displayed with SQLServer (#14369).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12060 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-28 16:38:09 +00:00
Jean-Philippe Lang df7e56b13c Autocomplete fields rendering issue with alternate theme (#14340).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12059 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-28 15:36:52 +00:00
Jean-Philippe Lang 4a70a319c5 Filtering issues on "related to" may ignore other filters (#14401).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12058 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-28 15:29:31 +00:00
Jean-Philippe Lang 76e48c3914 Spent time details and report should ignore 'Setting.display_subprojects_issues?' (#14415).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12057 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-28 15:16:14 +00:00
Jean-Philippe Lang 474453d2b0 Additional status transitions for assignees do not work if assigned to a group (#14447).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12056 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-28 14:58:06 +00:00
Jean-Philippe Lang 9a0db9cb88 Fixed: warning: class variable access from toplevel on Ruby 2.0 (#14511).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12052 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-28 11:57:39 +00:00
Jean-Philippe Lang 642a892c05 Missing Sort Column Label and Center Align on Admin-Enumerations (#14516).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12051 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-28 11:53:28 +00:00
Jean-Philippe Lang f3241385cd Adds missing html titles (#14517).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12050 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-28 11:50:18 +00:00
Jean-Philippe Lang 1e738fbaca Set titles on Groups pages (#14517)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12049 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-28 11:23:22 +00:00
Jean-Philippe Lang 2f9050115b Adds a helper for building h2 tags and setting html_title (#14517).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12048 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-28 11:21:58 +00:00
Toshi MARUYAMA 3700378764 svn propset svn:eol-style native test fixtures (#14562)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12047 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-28 11:02:55 +00:00
Toshi MARUYAMA 670d2b6e2b fix diff of CJK(Chinese/Japanese/Korean) is broken on Ruby 1.8 (#14562)
Contributed by Jun NAITOH.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12046 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-28 11:00:02 +00:00
Jean-Philippe Lang 0ac3afebc6 Don't use finder options.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12045 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-28 10:15:53 +00:00
Jean-Philippe Lang ef8dd0f64b Preload some associations.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12044 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-28 10:13:48 +00:00
Jean-Philippe Lang 21fc903c04 Fixed that sorting time entries by custom field raises a SQL error (#14366).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12042 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-28 09:59:34 +00:00
Jean-Philippe Lang dc5e5eca6b Fixed that displaying time entries with custom field column raises an error (#5037).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12041 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-24 18:18:08 +00:00
Toshi MARUYAMA 4069f95fd1 Spanish translations for trunk updated by Jorge López (#14521)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12039 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-24 09:52:38 +00:00
Toshi MARUYAMA 26c30a04ba Spanish translations for 2.3.x updated by Jorge López (#14531, #14521)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12038 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-24 09:52:27 +00:00
Toshi MARUYAMA 053c15df8a Russian translation for trunk updated by Alex Stein (#14501)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12035 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-19 16:06:24 +00:00
Toshi MARUYAMA b6e6fb1fac Russian translation for 2.3-stable updated by Alex Stein (#14502, #14501)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12034 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-19 16:06:13 +00:00
Toshi MARUYAMA a43eb91f45 update ruby-openid version to 2.2.3
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12033 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-19 15:21:14 +00:00
Toshi MARUYAMA 76ab4710a8 Bulgarian translation updated by Ivan Cenov (#14473)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12031 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-18 08:32:46 +00:00
Toshi MARUYAMA b6dd64aac1 Japanese translation updated by Go MAEDA (#14478)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12030 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-18 08:32:34 +00:00
Toshi MARUYAMA 7bb6dabf23 Traditional Chinese translation for trunk updated by ChunChang Lo (#14458)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12029 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-18 08:32:23 +00:00
Toshi MARUYAMA 3c4f47acc9 Traditional Chinese translation for 2.3-stable updated by ChunChang Lo (#14485, #14458)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12028 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-18 08:32:11 +00:00
Jean-Philippe Lang 01a9e17c49 CVS root_url not recognized when connection string does not include port (#14422).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12027 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-15 21:06:54 +00:00
Jean-Philippe Lang 9ca8b20d55 Don't hardcode news model in Comment.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12026 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-15 20:53:23 +00:00
Jean-Philippe Lang 0e3dfa8de4 Updates for 2.3.2 release.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12024 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-14 14:51:01 +00:00
Jean-Philippe Lang 085417bdbb Additional tests for AccountController.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12022 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-14 14:39:31 +00:00
Jean-Philippe Lang 205eda8b33 Use AR callbacks instead of observers (removed in Rails4) for notifications.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12021 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-14 14:26:27 +00:00
Jean-Philippe Lang 010bfc56e1 Ability to save Gantt query filters (#7836).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12020 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-14 13:41:30 +00:00
Jean-Philippe Lang 3c9263221d Test failures with ruby1.8.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12019 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-13 21:35:33 +00:00
Jean-Philippe Lang 13bf8dc8bf ruby1.8 compatibility.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12018 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-13 12:15:24 +00:00
Jean-Philippe Lang 01f259be0d Adds a test for CvsAdapter#root_url_path (#14422).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12017 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-13 11:03:37 +00:00
Jean-Philippe Lang 594589e0ec Use Hash#reject that returns a Hash with ruby1.8 when Hash#select that returns an Array.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12016 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-13 10:39:36 +00:00
Jean-Philippe Lang 0087d237f7 Don't notify users about relations that are not visible (#1005).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12015 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-13 10:32:48 +00:00
Jean-Philippe Lang 7509dda1ff Fixed that relations to issues that are not visible are displayed in the issue history (#1005).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12014 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-13 09:56:58 +00:00
Jean-Philippe Lang 5fbc7f8f1f Fills locales with new strings.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12013 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-13 09:21:58 +00:00
Jean-Philippe Lang 628d05629b Role-based issue custom field visibility (#5037).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12012 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-13 09:20:11 +00:00
Jean-Philippe Lang a74d55edd9 Removed dead code.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12011 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-13 08:13:34 +00:00
Jean-Philippe Lang 8ff33ac9f7 Log email delivery errors (#14403).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12010 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-13 08:11:20 +00:00
Jean-Philippe Lang 6ecd90e7ff Exception message may not be UTF-8 encoded.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12009 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-12 20:16:59 +00:00
Jean-Philippe Lang 0a4d2affd8 Fixed one query per member on project settings.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12008 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-11 19:57:15 +00:00
Jean-Philippe Lang 9cb68f7b29 One query is enough.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12007 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-11 19:41:48 +00:00
Jean-Philippe Lang 80b1a73ccf Adds 'assigned-to-my-group' css class to issues that are assigned to a user's group (#12681).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12006 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-11 19:35:40 +00:00
Jean-Philippe Lang f3d1aa5359 Issue-notes Redmine links: append actual note reference to rendered links (#12912).
Patch by YOSHITANI Mitsuhiro.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12005 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-11 19:18:37 +00:00
Jean-Philippe Lang f5768cc99b Useless "edit" link in workflow menu (#12824).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12004 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-11 19:12:08 +00:00
Jean-Philippe Lang bc4785ca60 Add more info about the ruby version (#14419).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12003 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-11 18:45:43 +00:00
Jean-Philippe Lang 888c3581eb Role based custom queries (#1019).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11994 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-11 17:45:10 +00:00
Toshi MARUYAMA 4545b906b4 gender neutral source comment at test/unit/journal_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11993 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-06 01:02:44 +00:00
Toshi MARUYAMA b38de1f5e2 gender neutral source comment at test/unit/issue_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11992 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-06 01:02:33 +00:00
Toshi MARUYAMA 7ee06dfe08 gender neutral source comment at test/integration/account_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11991 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-06 01:02:21 +00:00
Toshi MARUYAMA c5ca4e2622 gender neutral source comment at lib/tasks/migrate_from_trac.rake
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11990 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-06 01:02:10 +00:00
Toshi MARUYAMA edb6e245cf gender neutral source comment at app/models/user.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11989 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-06 00:04:58 +00:00
Toshi MARUYAMA e1ca4a8663 gender neutral source comment at app/models/mailer.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11988 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-06 00:04:47 +00:00
Toshi MARUYAMA b1b721ff6d gender neutral source comment at app/controllers/projects_controller.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11987 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-06 00:04:35 +00:00
Toshi MARUYAMA de6ff11164 remove trailing white-space from test/unit/issue_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11986 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-05 22:50:48 +00:00
Toshi MARUYAMA 6db84ab0c1 remove trailing white-space from test/integration/account_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11985 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-07-05 22:50:29 +00:00
Toshi MARUYAMA bc18590da3 Slovene translation changed by Zdravko Balorda (#14360)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11983 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-26 11:42:40 +00:00
Toshi MARUYAMA e4e1c7a0f2 fix Latvian "button_log_time" translation by Arnis Juraga (#14346)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11982 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-26 10:29:45 +00:00
Toshi MARUYAMA 7dfc6545ff replace "email.yml" to "configuration.yml" in pl.yml (#9996)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11980 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-15 11:49:22 +00:00
Toshi MARUYAMA 9bf4288af9 not run Capybara tests on the CI server (#12822)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11979 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-14 14:39:48 +00:00
Toshi MARUYAMA 56f9354998 prevent UI test failure randomly
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11978 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-14 14:06:04 +00:00
Toshi MARUYAMA 484a3ffc8a increase Capybara.default_wait_time from 12 to 20 (#12822)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11977 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-14 12:42:03 +00:00
Toshi MARUYAMA c17347b7f7 increase Capybara.default_wait_time from 7 to 12 (#12822)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11976 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-14 10:50:59 +00:00
Toshi MARUYAMA 9b549fdfe9 shorten comment lines at test/ui/base.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11975 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-14 10:50:48 +00:00
Toshi MARUYAMA 17378152bf use database_cleaner (#12822)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11974 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-14 09:59:21 +00:00
Toshi MARUYAMA b29288c50a prevent UI test failure randomly
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11973 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-14 08:30:53 +00:00
Toshi MARUYAMA 784440691c increase Capybara.default_wait_time from 6 to 7 (#12822)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11972 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-14 07:31:11 +00:00
Toshi MARUYAMA 6da348c3e6 prevent UI test failure randomly
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11971 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-14 07:31:00 +00:00
Toshi MARUYAMA 6ccb68bd46 prevent UI test failure randomly
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11970 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-14 05:14:29 +00:00
Toshi MARUYAMA eeb290d650 German translation updated by Daniel Felix (#14277)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11969 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-14 04:42:58 +00:00
Toshi MARUYAMA 0396c99945 increase Capybara.default_wait_time from 5 to 6 (#12822)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11968 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-14 04:24:02 +00:00
Jean-Philippe Lang 2f53246c13 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11967 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-13 19:31:43 +00:00
Jean-Philippe Lang 07d88851bf Fixed tests broken by r11965.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11966 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-12 21:55:39 +00:00
Jean-Philippe Lang e978b3ace0 Adds User#builtin_role.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11965 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-12 19:38:43 +00:00
Jean-Philippe Lang cd716e311a Preload boards projects.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11964 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-12 19:34:23 +00:00
Jean-Philippe Lang f9ddb562d5 Cleanup of finders with :conditions option.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11963 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-12 19:13:25 +00:00
Jean-Philippe Lang 136cdc765a Don't redirect XHR requests to /login.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11962 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-12 16:49:12 +00:00
Jean-Philippe Lang 60d2a5e322 Use #find_issues as before filter for issues context menu.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11961 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-11 18:33:06 +00:00
Jean-Philippe Lang 7371077fa2 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11960 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-11 18:29:29 +00:00
Jean-Philippe Lang e0c7eb25a4 Adds Watcher.any_watched? to check if at least one object of a collection is watched.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11959 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-11 18:25:05 +00:00
Jean-Philippe Lang 2113b88db3 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11958 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-11 18:18:02 +00:00
Jean-Philippe Lang 3e9aeea75d Perf: preload a few associations for bulk operations.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11957 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-11 17:24:17 +00:00
Jean-Philippe Lang 32464f4912 Perf: don't load all projects.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11956 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-11 16:54:48 +00:00
Toshi MARUYAMA 0ba6ece2fd Bulgarian translation updated by Ivan Cenov (#14252)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11955 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-11 07:58:01 +00:00
Toshi MARUYAMA cb140248ea remove trailing white-space from app/models/user.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11954 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-10 08:48:49 +00:00
Toshi MARUYAMA ebb73fa258 set html lang by user locale (#14206)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11952 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-10 01:41:30 +00:00
Toshi MARUYAMA 5a7f656303 run test:ui on CI Server Ruby 1.9.3 or higher (#12822)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11951 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-10 00:51:37 +00:00
Jean-Philippe Lang 2d02a2692a Resets strings that don't mention that an email was sent for activating the account.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11950 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-09 10:28:03 +00:00
Jean-Philippe Lang 52af9a1766 Adds the email address to the flash message after registeration.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11949 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-09 10:23:31 +00:00
Jean-Philippe Lang 86cfa025ed Adds a test for User.try_to_login with active_only set to false.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11948 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-09 10:12:02 +00:00
Jean-Philippe Lang f64dc99f8a Adds i18n strings (#14228).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11947 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-09 10:06:00 +00:00
Jean-Philippe Lang 4bd874ab46 Adds a way for a registered user to get a new action email (#14228).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11946 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-09 10:01:56 +00:00
Toshi MARUYAMA ec46d4315c svn propset svn:eol-style native CONTRIBUTING.md
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11944 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-08 10:11:47 +00:00
Toshi MARUYAMA 597b2ad2ea add CONTRIBUTING.md for github pull request
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11943 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-08 10:09:02 +00:00
Toshi MARUYAMA a0423f4eb1 fix that project auto generation fails when projects created in the same time (#14242)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11942 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-08 09:50:34 +00:00
Jean-Philippe Lang 2a00c33a61 Splits tests (#1005).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11941 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-06 16:25:51 +00:00
Jean-Philippe Lang d90f46a5da Prepends issue numbers with a number sign (#1005).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11940 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-06 16:22:18 +00:00
Jean-Philippe Lang 019f57e5c7 Fixed that journal details about issue relations may disclose issues that are not visible (#1005).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11939 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-06 16:19:53 +00:00
Toshi MARUYAMA 60a8230209 fix three png transparency (#14223)
Contributed by W Snyder.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11938 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-06 08:22:01 +00:00
Toshi MARUYAMA 346bbcb80a German translation: grammar + spelling (#14222)
Contributed by Filou Centrinov.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11937 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-06 06:47:20 +00:00
Toshi MARUYAMA bbd0cb269d remove redundant empty lines from PluginTest
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11936 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-06 06:47:10 +00:00
Toshi MARUYAMA 9aad7c3907 Japanese translation updated by Go MAEDA (#14224)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11934 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-06 05:39:29 +00:00
Toshi MARUYAMA 442532e316 remove trailing white-spaces from lib/redmine/plugin.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11933 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-06 05:09:46 +00:00
Toshi MARUYAMA 6ab02e535f translate x_hours in many languages (#14221)
Contributed by Filou Centrinov.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11932 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-06 05:09:35 +00:00
Jean-Philippe Lang 8cea7d8cf2 Don't validate start date when updating an issue without changing it (#14086).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11931 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-05 19:56:59 +00:00
Toshi MARUYAMA 6327bdc6f8 Bulgarian translation updated by Ivan Cenov (#14209)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11930 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-05 04:37:12 +00:00
Jean-Philippe Lang 4c2776c634 Really adjusts error message in tests (#14086).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11928 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-04 17:41:58 +00:00
Jean-Philippe Lang b0c7884976 Adjusts error message in tests (#14086).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11927 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-04 17:32:13 +00:00
Jean-Philippe Lang 46085644ed Adds a specific error message for when the start date is too earlier than the minimum start date (#14086).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11926 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-04 17:17:48 +00:00
Toshi MARUYAMA 01411ab567 prevent coderay "warning: already initialized constant" on Ruby 1.8.7 (#13692)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11925 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-04 14:07:46 +00:00
Toshi MARUYAMA 7e4d0209bb increase Capybara.default_wait_time from 4 to 5 (#12822)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11923 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-04 11:57:49 +00:00
Toshi MARUYAMA 1fd7540b85 pdf: replace "id_width" parameter name to original "col_id_width" (#14178)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11921 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-04 11:02:45 +00:00
Toshi MARUYAMA 7bc0c26198 pdf: restore "id_width" parameter of issues_to_pdf_draw_borders (#14178)
Contributed by Massimo Rossello.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11920 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-04 10:54:55 +00:00
Toshi MARUYAMA f41d917141 Italian translation for 2.3-stable by Riccardo Rocca (#14196)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11919 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-04 10:29:18 +00:00
Jean-Philippe Lang 29c3b34641 Adds SCM versions in script/about output.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11918 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-01 16:32:29 +00:00
Jean-Philippe Lang e27deb1ece Query#add_custom_fields_filters now takes a custom fields scope.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11917 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-01 10:56:12 +00:00
Jean-Philippe Lang bf76b3b286 Project#all_issue_custom_fields now returns a scope.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11916 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-06-01 10:26:17 +00:00
Jean-Philippe Lang 5a90b6d0b5 Fixed that project name is not properly escaped in issue filters (#14186).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11915 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-31 20:47:38 +00:00
Toshi MARUYAMA bc75b15546 use English "Tag" and "Branch" in pt-BR locale (#14180)
patch by Marcela Oliveira.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11913 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-31 10:20:08 +00:00
Toshi MARUYAMA 2ca2634138 pt-BR translation improved by Marcela Oliveira (#14180)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11912 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-31 10:19:57 +00:00
Toshi MARUYAMA 0163ef8bfb pt-BR translation for 2.3-stable updated by Marcela Oliveira (#14182, #14180)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11911 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-31 09:51:05 +00:00
Toshi MARUYAMA 57c347d8f8 back out r11907 (#14151)
German "x_days" translation changed by Filou Centrinov.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11910 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-30 12:04:38 +00:00
Toshi MARUYAMA a4394e877e add changeset comment in revision page title (#14138)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11909 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-30 08:05:44 +00:00
Toshi MARUYAMA d2192bba02 add test of revision page title (#14138)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11908 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-30 07:41:17 +00:00
Toshi MARUYAMA 71afcaf43b German "x_days" translation changed by Filou Centrinov (#14151)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11907 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-30 07:41:06 +00:00
Jean-Philippe Lang 73aadc4900 Use uid_ methods for retrieving IMAP messages (#14101).
Patch by Pierre Pretorius.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11906 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-28 18:41:14 +00:00
Jean-Philippe Lang 131dc3a8fc Disconnect and logout from IMAP after mail receive (#14103).
Patch by Pierre Pretorius.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11905 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-28 18:17:36 +00:00
Jean-Philippe Lang 69496179d4 Adds a button to duplicate a workflow permission to the next statuses.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11904 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-28 10:59:04 +00:00
Toshi MARUYAMA 4dbe2e7062 remove trailing white-space from app/models/mailer.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11902 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-25 05:35:13 +00:00
Toshi MARUYAMA 672331d7e4 German translation of x_hours updated by Filou Centrinov (#14145)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11901 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-25 04:31:51 +00:00
Toshi MARUYAMA 1e18c23095 use document.referrer instead of history.length (#13697)
Contributed by Filou Centrinov.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11900 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-24 07:21:56 +00:00
Toshi MARUYAMA 54478d1e08 remove trailing white-space from app/views/repositories/_breadcrumbs.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11899 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-24 06:59:41 +00:00
Toshi MARUYAMA f085508121 gantt: sort versions by start date (#7335)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11898 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-21 13:42:34 +00:00
Toshi MARUYAMA 8ea4e79964 gantt: sort issues by start date (#7335)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11897 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-21 13:42:19 +00:00
Toshi MARUYAMA 596366b062 upgrade mocha 0.14 and remove deprecation warning
<pre>
Mocha deprecation warning: Change `require 'mocha'` to `require 'mocha/setup'`.
</pre>

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11896 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-21 12:57:11 +00:00
Toshi MARUYAMA f4637c38b4 fix yaml syntax and comment out (#14060)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11895 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-21 10:00:53 +00:00
Toshi MARUYAMA 9d62a564df remove unneeded escaping at app/views/journals/diff.html.erb
Rails3 escapes by default.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11894 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-21 07:11:36 +00:00
Toshi MARUYAMA 83d148242a fix back-button on description diff page in case of no browser history (#13697)
Contributed by Filou Centrinov.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11893 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-21 07:11:25 +00:00
Toshi MARUYAMA 38f6c588ca code layout clean up test_bulk_copy_should_allow_not_changing_the_issue_attributes of IssuesControllerTest
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11892 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-19 04:03:31 +00:00
Toshi MARUYAMA 7def5b551d code layout clean up test_bulk_update_with_some_failures_should_show_errors of IssuesControllerTest
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11891 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-19 04:03:21 +00:00
Toshi MARUYAMA a968c1196e code layout clean up test_bulk_update_parent_id of IssuesControllerTest
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11890 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-19 04:03:11 +00:00
Toshi MARUYAMA e3d47acb0b code layout clean up test_bulk_edit_should_only_propose_statuses_allowed_for_all_issues of IssuesControllerTest
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11889 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-19 04:03:01 +00:00
Toshi MARUYAMA 098a38bb3a code layout clean up test_create_as_copy_should_add_relation_with_copied_issue of IssuesControllerTest
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11888 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-19 04:02:50 +00:00
Toshi MARUYAMA dbc7369d9d adjust functional IssuesControllerTest (#1005)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11887 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-19 03:40:22 +00:00
Toshi MARUYAMA b3a6555b30 remove "del" tag from deleted issue relation (#1005)
It is confused with deleted issue.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11886 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-19 02:09:49 +00:00
Toshi MARUYAMA 1f9e1ca318 add journal after creating/deleting issue relation (#1005)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11885 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-19 02:09:39 +00:00
Toshi MARUYAMA e5e73a56a7 svn:eol-style native datepicker.js (#14024)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11884 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-19 01:09:45 +00:00
Toshi MARUYAMA 0e20ec697b set default issue start/due datepicker from due/start date (#14024)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11883 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-19 01:06:25 +00:00
Toshi MARUYAMA cbb8b12ba4 increase Capybara.default_wait_time from 3 to 4 (#12822)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11882 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-19 01:06:14 +00:00
Toshi MARUYAMA eeeada0773 code layout clean up VersionTest
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11881 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-19 01:06:04 +00:00
Toshi MARUYAMA bbca694881 remove empty setup method from VersionTest
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11880 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-19 01:05:53 +00:00
Toshi MARUYAMA 160f6cd361 add test of current issue start and due date datepicker (#14024)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11879 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-19 00:27:39 +00:00
Toshi MARUYAMA 11b24ab64b replace non ASCII literal to hexadecimal at ApplicationHelperTest
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11878 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-18 23:06:53 +00:00
Toshi MARUYAMA 360bda7e68 include Redmine::I18n in ApplicationHelperTest
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11877 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-18 22:36:58 +00:00
Toshi MARUYAMA 0c6e2feeaa backout r11875 ApplicationHelperTest change
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11876 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-18 22:36:45 +00:00
Jean-Philippe Lang bd8b509986 Include Redmine::I18n in helpers tests.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11875 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-18 20:29:40 +00:00
Jean-Philippe Lang 2e67ffe769 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11874 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-18 20:09:59 +00:00
Jean-Philippe Lang ed364c9114 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11873 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-18 19:58:43 +00:00
Jean-Philippe Lang 1093454193 Adds markings to emails generated by private comments (#12888).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11869 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-18 17:24:23 +00:00
Toshi MARUYAMA de394f5f74 fix unit VersionTest failure
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11868 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-18 12:55:24 +00:00
Toshi MARUYAMA 23527da802 backout r11865 test/object_helpers.rb changes
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11867 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-18 12:07:43 +00:00
Jean-Philippe Lang 79c8fea12f Removed debug log (#14038).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11866 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-18 09:31:43 +00:00
Jean-Philippe Lang 61dfab12fd Removed some shoulda context.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11865 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-18 09:27:48 +00:00
Jean-Philippe Lang 474c010746 Removed some shoulda context.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11864 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-18 09:14:10 +00:00
Jean-Philippe Lang 8f7b69f77e Removed some shoulda context.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11863 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-18 08:57:27 +00:00
Jean-Philippe Lang 0d4bb7558f Removed some shoulda context.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11862 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-18 08:27:53 +00:00
Jean-Philippe Lang 5b29964512 User #where instead of :conditions.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11861 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-18 07:49:13 +00:00
Jean-Philippe Lang 2c67e9e0d7 Moved links to block titles on "My page".
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11860 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-18 07:47:34 +00:00
Jean-Philippe Lang 6b03c741ac Adds a link on "My Page" to view all my spent time (#13157).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11859 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-18 07:39:26 +00:00
Jean-Philippe Lang 45a9b9954a Highlighting of source link target line for annotate view (#13746).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11858 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-18 07:10:14 +00:00
Jean-Philippe Lang 6e35d2f0e9 Highlighting of source link target line (#13746).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11857 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-18 07:09:02 +00:00
Toshi MARUYAMA 997bfbe78f gantt: add test to sort issues by current logic (#7335)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11856 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-17 22:59:52 +00:00
Toshi MARUYAMA 6aa63659aa gantt: change sort method to class method (#7335)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11855 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-17 22:59:39 +00:00
Jean-Philippe Lang c90bf645f5 Fixed that submitting the form without selecting a value may raise raises an error with SQLServer (#13783).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11854 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-17 18:18:06 +00:00
Jean-Philippe Lang d678959359 Add links to attachments in new issue email notification (#12293).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11853 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-17 16:51:09 +00:00
Toshi MARUYAMA 8bbc6d251e increase Capybara.default_wait_time from default 2 to 3 (#12822)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11852 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-17 04:08:06 +00:00
Jean-Philippe Lang eab2c74e10 Use a shallow block instead of the :shallow option that ignores routes scope (#14023).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11851 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-16 16:57:53 +00:00
Jean-Philippe Lang 35ca873269 Fixed that filtering may return unwanted blank values (#14051).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11850 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-16 16:29:59 +00:00
Toshi MARUYAMA a4391db7cd enable configuration of OpenIdAuthentication.store (#14060)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11849 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-16 10:55:41 +00:00
Toshi MARUYAMA f2a609c358 move filter order tests from helper to model.
r11372 (#13154) moves filter order logic from helper to model.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11848 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-16 10:55:27 +00:00
Toshi MARUYAMA 559aa626cd increase base height of author lines on 'Commits per author' graph (#14068, #1983)
Contributed by Mischa The Evil.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11847 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-16 04:29:51 +00:00
Toshi MARUYAMA 5ef5b3202d remove width and height from repository stats embed tags (#1983, #13486)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11846 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-16 04:29:39 +00:00
Jean-Philippe Lang b3d80d50a3 Fixed that ordered/unordered lists inside table cell are mangled (#14038).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11845 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-14 16:29:59 +00:00
Toshi MARUYAMA 28ca9d240a run test:ui in CI Server on only Ruby 2.0 (#12822)
UI tests fails randomly on Ruby 1.9.3.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11844 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-13 23:16:02 +00:00
Jean-Philippe Lang ece5232110 Fixed that values of custom fields are not kept in issues when copying a project (#13910).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11843 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-13 19:52:37 +00:00
Jean-Philippe Lang 7e41730293 Display error messages when attachment validation fails (#13949).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11842 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-13 18:50:04 +00:00
Jean-Philippe Lang 288c3b863d Fixed that JS warning is not displayed when attachment maximum size is 0 (#13949).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11841 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-13 18:30:56 +00:00
Jean-Philippe Lang 4a59b869c0 Update notified_project_ids while saving record.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11840 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-13 17:11:38 +00:00
Jean-Philippe Lang 10ed306b19 Fixed that locking and unlocking a user resets the email notification checkbox (#14020).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11839 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-13 16:38:08 +00:00
Jean-Philippe Lang 0dce4761a8 Disable autofetching of repository changesets if projects are closed (#13945).
Patch by Mischa The Evil.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11838 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-12 10:05:35 +00:00
Jean-Philippe Lang 9b7d312a0e Fix handling multiple text parts in email (#13646).
Patch by Alex Shulgin.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11834 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-12 09:38:20 +00:00
Jean-Philippe Lang 76a3298306 Issue#children is never nil (#14015).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11833 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-12 08:49:54 +00:00
Jean-Philippe Lang 922acdbcc2 Check inclusion only once (#14015).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11832 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-12 08:45:40 +00:00
Jean-Philippe Lang a7102db8c4 Replaces camelcase variable names (#14015).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11831 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-12 08:42:41 +00:00
Jean-Philippe Lang a2b6088772 Removes some empty lines (#14015).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11830 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-12 08:41:21 +00:00
Jean-Philippe Lang cf30a68312 Removes then's (#14015).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11829 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-12 08:39:18 +00:00
Jean-Philippe Lang 8c9bba1cbf Replaces camelcase variable names (#14015).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11828 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-12 08:37:54 +00:00
Jean-Philippe Lang 78dc37d8af Improved Issue#all_dependent_issues (#14015).
Patch by Jost Baron.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11827 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-12 08:33:21 +00:00
Jean-Baptiste Barth ef153a5bca Improve plugins' Gemfile loading (#14028).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11826 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-11 11:19:21 +00:00
Toshi MARUYAMA f9e6414de6 sync Lithuanian jQuery datepicker (#13674)
This is from following revision.
ce73a2688d

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11825 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-11 07:22:29 +00:00
Toshi MARUYAMA b49ea330d1 prevent failure of test_create_issue_with_watchers at UI IssuesTest
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11824 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-10 09:22:57 +00:00
Toshi MARUYAMA 8a87ff96f9 code layout clean up app/views/issues/_attributes.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11823 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-10 06:44:45 +00:00
Toshi MARUYAMA 72a46e53ed prevent failure of test_create_issue_with_watchers at UI IssuesTest
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11822 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-10 05:51:31 +00:00
Toshi MARUYAMA ed956ba5d4 use with_settings at test_post_create_without_start_date_and_default_start_date_is_creation_date of IssuesControllerTest
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11821 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-10 04:37:42 +00:00
Toshi MARUYAMA e1ba9012c6 use with_settings at test_post_create_without_start_date_and_default_start_date_is_not_creation_date of IssuesControllerTest
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11820 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-10 04:37:31 +00:00
Toshi MARUYAMA a3766c5281 use with_settings at test_get_new_with_default_start_date_is_creation_date of IssuesControllerTest
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11819 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-10 04:37:21 +00:00
Toshi MARUYAMA af2053fe13 use with_settings at test_get_new_without_default_start_date_is_creation_date of IssuesControllerTest
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11818 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-10 04:37:09 +00:00
Toshi MARUYAMA 68ef3aeaa8 remove redundant empty lines from test_show_by_manager of IssuesControllerTest
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11817 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-10 03:50:44 +00:00
Toshi MARUYAMA d65c0e8ed7 remove redundant empty lines from test_show_by_anonymous of IssuesControllerTest
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11816 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-10 03:50:33 +00:00
Toshi MARUYAMA 644455d56b remove redundant empty line from test_index_with_fixed_version_column of IssuesControllerTest
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11815 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-10 03:50:22 +00:00
Toshi MARUYAMA 4b5677101c remove redundant empty line from test_index_should_not_show_spent_hours_column_without_permission of IssuesControllerTest
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11814 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-10 03:50:11 +00:00
Toshi MARUYAMA 47235f7b23 remove redundant empty line from test_index_with_spent_hours_column of IssuesControllerTest
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11813 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-10 03:50:00 +00:00
Toshi MARUYAMA 2542afbc3b remove redundant empty lines from test_index_with_done_ratio_column of IssuesControllerTest
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11812 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-10 03:49:48 +00:00
Toshi MARUYAMA 83d3aaf170 remove redundant empty lines from test_index_with_date_column of IssuesControllerTest
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11811 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-09 16:14:16 +00:00
Toshi MARUYAMA cd2776a96f run test:ui on CI Server Ruby 1.9.3 or higher (#12822)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11810 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-09 13:45:32 +00:00
Toshi MARUYAMA e038d630d5 prevent assert_difference failure of test_bulk_watch_issues_via_context_menu at UI IssuesTest
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11809 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-09 13:45:21 +00:00
Toshi MARUYAMA 6d4e43f3fb prevent assert_difference failure of test_watch_issue_via_context_menu at UI IssuesTest
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11808 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-09 13:45:09 +00:00
Toshi MARUYAMA aaa37be223 fix failure of test_remove_issue_watcher_from_sidebar at UI IssuesTest
<pre>
  2) Failure:
test_remove_issue_watcher_from_sidebar(Redmine::UiTest::IssuesTest) [test/ui/issues_test.rb:186]:
"Watcher.count" didn't change by -1.
<3> expected but was
<4>.
</pre>

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11807 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-09 13:03:41 +00:00
Toshi MARUYAMA 2b022ac097 install capybara on only Ruby 1.9.3 or higher (#12822)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11806 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-09 13:03:28 +00:00
Toshi MARUYAMA 00f15828a2 upgrade capybara to 2.1 (#12822)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11805 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-09 12:21:45 +00:00
Toshi MARUYAMA 9f41c7283c add more asserting to test_create_issue_with_watchers of ui issues_test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11804 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-09 11:34:25 +00:00
Jean-Baptiste Barth 1e7c26d9a5 Document project links in ApplicationHelper#parse_redmine_links (#6689).
Contributed by Mischa The Evil


git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11803 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-08 07:59:14 +00:00
Toshi MARUYAMA fe0293a110 sync Lithuanian jQuery datepicker (#13674)
This is from following revision.
49f9b849b9

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11802 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-08 03:51:04 +00:00
Toshi MARUYAMA 79e394a0c5 Enhanced Arabic translation by Amr Noaman (#13988)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11800 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-08 01:17:28 +00:00
Toshi MARUYAMA 5b95b6a6aa Swedish Translation for trunk updated by Nicklas Holm (#14003)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11799 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-07 23:38:11 +00:00
Toshi MARUYAMA d994ff79f4 Swedish Translation for 2.3-stable updated by Nicklas Holm (#14003, #14005)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11798 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-07 23:37:59 +00:00
Jean-Baptiste Barth 0d2fb4503b Add documentation about horizontal rule syntax (#2427).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11797 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-07 06:22:40 +00:00
Jean-Baptiste Barth b4c3bb0558 Fix Trac importer breaking on exotic characters with ruby 1.9+ (#13990).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11796 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-06 22:19:37 +00:00
Jean-Baptiste Barth 2b3111122e Ensure Tranc and Mantis importers don't reset global notification settings (#13989).
Contributed by Brandon Valentine


git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11795 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-06 20:39:03 +00:00
Toshi MARUYAMA db3b3d3a1c Lithuanian "label_attachment" translation changed by Andrius Kriučkovas (#13674)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11794 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-05 10:58:19 +00:00
Toshi MARUYAMA be0da7aaa8 Lithuanian "field_generate_password" translation updated by Andrius Kriučkovas (#13674)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11793 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-05 10:58:08 +00:00
Toshi MARUYAMA 2183c673d1 remove duplicate Lithuanian "error_attachment_too_big" translation keys (#13950)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11791 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-05 09:24:25 +00:00
Jean-Baptiste Barth ec4dbbced5 Add status to /users/:id API for admins (#13948).
Patch by Kambiz Darabi


git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11790 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-05 08:19:17 +00:00
Jean-Philippe Lang afa9100453 Fixed test broken by r11787 (#13943).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11789 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-04 15:44:09 +00:00
Jean-Philippe Lang d69de691a7 Fixed that bulk copy raises an error on validation failure (#13943).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11788 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-04 15:18:16 +00:00
Jean-Philippe Lang 70bdb86c53 Preserve field values on bulk edit failure (#13943).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11787 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-04 15:03:07 +00:00
Jean-Philippe Lang 1269e6c7d3 Display the bulk edit form with error messages when some issues can not be saved (#13943).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11786 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-04 08:52:51 +00:00
Jean-Philippe Lang ed18b3359b Adds a method for extracting MailHandler options from ENV.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11785 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-04 07:32:35 +00:00
Toshi MARUYAMA 33afeea87a use assert_select instead of assert_tag at versions index sidebar
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11784 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-03 11:39:33 +00:00
Toshi MARUYAMA 452c71c9dc use li tags for label completed versions and subproject in version index sidebar (#13242)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11783 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-03 11:39:23 +00:00
Toshi MARUYAMA 42753001ea use li tags for completed versions in version index sidebar (#13242)
Contributed by Filou Centrinov.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11782 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-03 11:39:11 +00:00
Toshi MARUYAMA 8d824f5088 use li tags for versions in version index (#13242)
Contributed by Filou Centrinov.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11781 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-03 09:53:29 +00:00
Toshi MARUYAMA bee45bac8f remove unneeded h() from versions index tracker name
Rails3 escapes by default.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11780 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-03 09:53:19 +00:00
Toshi MARUYAMA 5aca038b7c use li tags for trackers in version index (#13242)
Contributed by Filou Centrinov.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11779 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-03 09:53:09 +00:00
Toshi MARUYAMA 22a7885605 code layout clean up app/views/versions/index.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11778 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-03 09:52:58 +00:00
Toshi MARUYAMA 7bd4ea835e use li tags for issue links in documents index (#13242)
Contributed by Filou Centrinov.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11777 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-03 08:09:47 +00:00
Toshi MARUYAMA 012dc74eea use li tags for issue links in activities index (#13242)
Contributed by Filou Centrinov.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11776 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-03 08:09:36 +00:00
Toshi MARUYAMA eb8770899c use li tags for issue links in the wiki sidebar (#13242)
Contributed by Filou Centrinov.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11775 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-03 08:09:26 +00:00
Toshi MARUYAMA 784f33daa7 code layout clean up test/functional/versions_controller_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11774 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-03 08:09:16 +00:00
Toshi MARUYAMA 59b1a6695e fix error and inconsistencies in Croatian translation (#13931)
Contributed by Jadranko Stjepanović.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11773 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-03 00:49:40 +00:00
Jean-Baptiste Barth 953e4b4abf Add missing tests for Redmine::MenuManager::Mapper#initialize.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11772 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-03 00:40:41 +00:00
Jean-Baptiste Barth 208d6d881c Add missing tests for Redmine::Helpers::Gantt#number_of_rows.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11771 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-02 23:42:03 +00:00
Jean-Baptiste Barth bc68c1c039 Add missing unit tests for ApplicationHelper#link_to_if_authorized.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11770 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-02 22:57:24 +00:00
Jean-Baptiste Barth 84e455b583 Remove duplicate test TokenTest#test_find_token_should_return_nil_with_wrong_action.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11768 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-02 18:37:20 +00:00
Jean-Baptiste Barth e6ab36d205 Remove duplicate test Redmine::I18nTest#test_time_format (keeping the most complete).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11767 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-02 18:14:26 +00:00
Jean-Baptiste Barth e771d68214 Allow plugins to define their base directory (#13927).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11766 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-02 17:59:34 +00:00
Jean-Baptiste Barth 501007f01d Update URL when changing tab (#13900).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11765 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-02 16:09:58 +00:00
Jean-Baptiste Barth 8aa1bdc031 Add .powrc and .rvmrc in svn, git and hg ignores
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11764 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-02 16:01:31 +00:00
Jean-Philippe Lang c5ac2d3966 Fixed that deleting a system activity with children in use raises an error (#13783).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11763 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-01 17:10:15 +00:00
Jean-Philippe Lang 6c39a260a3 Propose system activities only when reassigning time entries (#13783).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11762 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-01 16:43:51 +00:00
Jean-Philippe Lang 5cc597e394 Fixed: "obj" parameter is not defined for macros used in description of documents (#13821).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11761 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-01 16:08:51 +00:00
Jean-Philippe Lang 5a3b903733 Fixed: Unable to set custom fields for versions using the REST API (#13850).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11760 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-01 15:57:31 +00:00
Jean-Philippe Lang 92dcaeb472 Updates for 2.3.1 release.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11757 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-01 15:13:58 +00:00
Jean-Philippe Lang 9d190c922a Pevents duplicate accesskeys (#12684).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11754 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-01 13:13:53 +00:00
Jean-Philippe Lang e1d47931f1 Restores the bottom action menu.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11753 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-01 13:12:53 +00:00
Jean-Philippe Lang 5d09c730d4 git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11752 e93f8b46-1217-0410-a6f0-8f06a7374b81 2013-05-01 13:11:49 +00:00
Jean-Philippe Lang 89847f9269 Fixed: Lost text after selection in issue list with IE (#12650).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11750 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-01 12:52:37 +00:00
Jean-Philippe Lang 2ad0465864 Fetching emails via rake task does not support --no-account-notice and --default-group options (#13712).
Contributed by Julian Faude and Alex Shulgin.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11748 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-05-01 12:28:09 +00:00
Toshi MARUYAMA f8b756627c code layout clean up application.js
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11744 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-04-23 04:10:30 +00:00
Toshi MARUYAMA af7540a23a code layout clean up select_list_move.js
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11743 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-04-23 04:10:18 +00:00
Toshi MARUYAMA b54496e61f remove commented code from select_list_move.js
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11742 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-04-23 04:10:04 +00:00
Toshi MARUYAMA 86442e60ed application.js: randomKey function optimization (#13826)
Contributed by Filou Centrinov.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11741 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-04-22 08:10:48 +00:00
Toshi MARUYAMA 932380b284 fix favicon bug in IE8 (#13829)
Contributed by Filou Centrinov.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11740 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-04-22 05:56:15 +00:00
Toshi MARUYAMA 8387c628cd fix JavaScript error of revision_graph.js on IE7 (#13823)
Contributed by Filou Centrinov.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11738 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-04-21 07:34:38 +00:00
Toshi MARUYAMA e59814f981 fix JavaScript error of gantt.js on IE7 (#13823)
Contributed by Filou Centrinov.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11737 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-04-21 07:34:27 +00:00
Toshi MARUYAMA fe903be480 remove trailing white-space from app/models/project.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11736 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-04-21 04:56:26 +00:00
Toshi MARUYAMA 885b67fcaa update jquery.ui.datepicker-de.js (#13825)
This is from following revision.
10ca48308f

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11735 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-04-21 03:50:13 +00:00
Toshi MARUYAMA 22a69cc9ae add missing ; in {} at application.js (#13811)
Contributed by Adrian Wilkins.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11733 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-04-20 08:08:28 +00:00
Toshi MARUYAMA de26e3fb85 fix ; position of if(){} at application.js (#13811)
Contributed by Adrian Wilkins.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11732 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-04-20 08:08:17 +00:00
Toshi MARUYAMA 485ce41523 remove unneeded ; from warnLeavingUnsaved of application.js (#13811)
Contributed by Adrian Wilkins.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11731 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-04-20 08:08:05 +00:00
Toshi MARUYAMA 98bb49382b add missing ; at toggleCheckboxesBySelector of application.js (#13811)
Contributed by Adrian Wilkins.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11730 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-04-20 08:07:54 +00:00
Toshi MARUYAMA b31d1329ca use ===/!== instead of ==/!= in application.js (#13811)
Contributed by Adrian Wilkins.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11729 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-04-20 08:07:41 +00:00
Toshi MARUYAMA f7f6b7ba5b fix JavaScript error on IE7 (#13811)
Contributed by Adrian Wilkins.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11728 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-04-20 07:39:26 +00:00
Toshi MARUYAMA eae3a82067 Bulgarian "label_statistics" translation changed by Ivan Cenov (#13808)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11727 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-04-19 07:18:50 +00:00
Toshi MARUYAMA 7ab18f6aa1 remove trailing white-spaces and redundant empty line from app/models/issue_query.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11726 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-04-19 07:18:38 +00:00
Toshi MARUYAMA 6c182d0a8a remove unused variable from QueriesHelperTest
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11725 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-04-19 07:18:26 +00:00
Toshi MARUYAMA 21b1783da3 add TODO comment about gantt issues sort (#7335)
Sorting by date was dropped by r4581 (#7128).

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11724 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-04-19 05:14:25 +00:00
Toshi MARUYAMA ba11020fdf make height of "Commits per author" graph flexible (#1983, #13486)
Contributed by Max Horn.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11723 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-04-18 02:07:44 +00:00
Toshi MARUYAMA 1bdd37f3e0 fix test name (#13482)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11722 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-04-18 01:09:06 +00:00
Toshi MARUYAMA 19f70c95d1 not add empty header/footer to notification emails (#13482)
Contributed by Max Horn.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11721 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-04-18 00:58:24 +00:00
Toshi MARUYAMA 9fea2ab6d2 add mail footer test (#13482)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11720 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-04-18 00:29:29 +00:00
Toshi MARUYAMA c709c5120c extend mail header test to text mail (#13482)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11719 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-04-18 00:29:18 +00:00
Toshi MARUYAMA 32ee6b3275 stricter asserting of subversion url validation test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11718 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-04-14 16:18:45 +00:00
Toshi MARUYAMA 7a18920728 add unit tests of subversion url validation
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11717 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-04-14 15:31:18 +00:00
Toshi MARUYAMA 5d05de4b09 code layout clean up test/unit/repository_subversion_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11716 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-04-14 15:31:04 +00:00
Toshi MARUYAMA 36120d17e7 remove trailing white-space from app/models/role.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11715 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-04-12 01:50:01 +00:00
Toshi MARUYAMA 691add1aff remove redundant 'IssuesHelper#' from issues_helper_test context
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11714 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-04-12 01:18:52 +00:00
Toshi MARUYAMA c745acf4c2 code layout clean up issues_helper_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11713 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-04-12 01:18:40 +00:00
Toshi MARUYAMA 6869e652c4 remove redundant variable from config/initializers/00-core_plugins.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11712 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-04-12 01:18:28 +00:00
Toshi MARUYAMA bd0e728352 fix favicon for Opera (#13687)
Contributed by Filou Centrinov.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11711 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-04-06 15:05:03 +00:00
Toshi MARUYAMA 760d397363 svn propset svn:eol-style native test fixtures (#13644)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11708 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-04-05 07:38:02 +00:00
Toshi MARUYAMA 6469e9a5a3 fix diff error in case of line_left out of range (#13644)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11707 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-04-05 07:30:51 +00:00
Toshi MARUYAMA 0d02931759 check integer ordinal range on only Ruby 1.8 (#13644)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11706 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-04-05 05:51:58 +00:00
Toshi MARUYAMA ed0a8413a2 remove extra white-spaces around new-line from Lithuanian translation
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11705 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-04-04 12:54:17 +00:00
Toshi MARUYAMA d42c3dbf18 remove trailing white-spaces from Lithuanian translation
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11704 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-04-04 12:54:06 +00:00
Toshi MARUYAMA 09d1f5dd2e Lithuanian translation changed by Vasaris Vėjas (#13674)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11701 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-04-04 12:01:03 +00:00
Toshi MARUYAMA d5004b607b Lithuanian translation for 2.3-stable updated by Vasaris Vėjas (#13678, #13674)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11700 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-04-04 11:25:43 +00:00
Toshi MARUYAMA c961fe8f2b remove duplicate "text_repository_usernames_mapping" from Lithuanian translation
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11699 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-04-04 10:12:15 +00:00
Jean-Philippe Lang 633e4a00e6 Check that the SCM log file is writable before using it (#13541).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11698 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-04-03 20:01:41 +00:00
Jean-Philippe Lang 25209273d3 Fixed that CSV Export of Spent Time ignores filters and columns selection (#13618).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11696 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-04-03 16:48:28 +00:00
Etienne Massip 4224a0c3fe Code cleanup (#13630).
Contributed by F Schroedter.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11694 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-04-02 17:37:52 +00:00
Etienne Massip 4a3864a180 Fixed that issue list PDF export displays ID column twice (#13630).
Contributed by F Schroedter.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11693 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-04-02 17:34:15 +00:00
Jean-Philippe Lang ed5b14884c Fixed that r11641 prevents precedes/follows relations between subtasks (#13586).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11692 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-26 21:31:29 +00:00
Toshi MARUYAMA de68231632 remove trailing white-space from app/models/setting.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11688 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-25 13:39:56 +00:00
Toshi MARUYAMA bc555048a5 svn:eol-style native jquery.ui.datepicker-pt.js (#13584)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11687 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-25 12:15:43 +00:00
Toshi MARUYAMA 8045ef9d3d add missing Portuguese jQuery UI date picker (#13584)
jquery.ui.datepicker-pt.js is from
https://raw.github.com/jquery/jquery-ui/49f9b849b9c5023f13/ui/i18n/jquery.ui.datepicker-pt.js

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11686 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-25 12:12:28 +00:00
Toshi MARUYAMA 213e8facee add test of datepicker in Simplified Chinese and Traditional Chinese (#13579)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11685 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-25 11:46:41 +00:00
Toshi MARUYAMA 3f2982ede6 back out r11683.
explicitly define jquery locale in en en-GB pt pt-BR.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11684 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-25 11:46:30 +00:00
Toshi MARUYAMA 1ef354f75c explicitly define jquery locale in en en-GB pt pt-BR
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11683 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-25 10:41:13 +00:00
Toshi MARUYAMA 2adc469439 fix that datepicker uses Simplified Chinese in Traditional Chinese locale (#13579)
Contributed by Chage Juan.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11682 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-25 10:41:02 +00:00
Toshi MARUYAMA 1b9faa1aaf Japanese translation improvement ("done ratio") by Go MAEDA (#13577)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11681 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-25 08:11:50 +00:00
Jean-Philippe Lang d8769cb27c Log SCM stderr when log level is set to debug only (#13541).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11680 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-22 07:50:28 +00:00
Toshi MARUYAMA c20a13f8ee Dutch translation changed by Pieter Nicolai (#13551)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11677 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-22 00:34:47 +00:00
Toshi MARUYAMA 3f277b6b65 Dutch translation for trunk updated by Pieter Nicolai (#13551)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11676 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-22 00:34:36 +00:00
Toshi MARUYAMA 700e9c8aa0 Dutch translations for 2.3-stable updated by Pieter Nicolai (#13552, #13551)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11675 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-21 23:40:32 +00:00
Toshi MARUYAMA 919d4589b9 fix unit search test failure (#13405)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11674 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-21 23:40:21 +00:00
Toshi MARUYAMA 1e5fa50a80 add test to ensure language name is UTF-8 (#12475)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11673 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-21 22:54:59 +00:00
Toshi MARUYAMA 31590e307a fix test failure (#13405)
<pre>
  1) Failure:
test_scan_changesets_for_issue_ids(RepositoryTest) [/xxx/test/unit/repository_test.rb:214]:
<"Applied in changeset r2."> expected but was
<"Applied in changeset commit:691322a8eb01e11fd7.">.
</pre>

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11672 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-21 22:54:48 +00:00
Etienne Massip d7cb14773b Fixed commit link title escaping (fixes #13405).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11671 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-21 21:53:28 +00:00
Toshi MARUYAMA b26f1c55cc remove trailing white-space from app/models/user_preference.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11670 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-20 08:48:03 +00:00
Toshi MARUYAMA 75050f767a Traditional Chinese "label_total_time" translation changed by ChunChang Lo (#13528)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11668 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-20 06:02:58 +00:00
Toshi MARUYAMA 8cbd91214d code layout cleanup test/integration/account_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11667 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-20 06:02:48 +00:00
Toshi MARUYAMA a9ea20e818 backout r11665 (#13528)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11666 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-20 05:03:51 +00:00
Toshi MARUYAMA b3c5ef8afe Traditional Chinese "label_total_time" translation changed by ChunChang Lo (#13528)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11665 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-20 04:43:51 +00:00
Toshi MARUYAMA 9c1f943a17 Traditional Chinese translation for 2.3-stable updated by ChunChang Lo (#13531 ,#13528)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11664 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-20 04:43:41 +00:00
Jean-Philippe Lang 6bc4a110e4 JQuery Datepicker popup is missing multiple month/year modifiers (#13260).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11663 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-19 21:53:22 +00:00
Jean-Philippe Lang 064bb49b55 Add a "Cancel" button to the "Delete" project page when deleting a project (#2795).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11662 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-19 21:19:46 +00:00
Jean-Philippe Lang 067aebab76 Updates for 2.3.0 release.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11657 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-19 19:22:22 +00:00
Jean-Philippe Lang aa583b4144 All translations: RSS -> Atom (#13460).
Patch by Daniel Felix.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11654 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-19 18:26:32 +00:00
Toshi MARUYAMA 32391269ae remove trailing white space from app/models/version.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11651 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-19 07:29:00 +00:00
Toshi MARUYAMA cc5f59abd4 fix broken tests on Rails 3.2.13 with Ruby 1.8 (#12399, #12375)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11650 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-19 06:35:39 +00:00
Toshi MARUYAMA cf1cc08c49 upgrade Rails 3.2.13
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11649 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-19 05:23:52 +00:00
Toshi MARUYAMA e41b90c71c upgrade mocha ~> 0.13.3
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11648 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-19 03:28:13 +00:00
Toshi MARUYAMA 134aeb2ca8 backout r11644.
revert Rails version to 3.2.12.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11647 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-19 03:28:03 +00:00
Toshi MARUYAMA c616f21d1f fix pt-BR "permission_set_notes_private" translation (#13514)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11645 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-19 02:46:40 +00:00
Toshi MARUYAMA b8a70f2e24 upgrade Rails 3.2.13
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11644 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-19 02:27:16 +00:00
Toshi MARUYAMA 5d600587a1 replace tab to space at app/models/mail_handler.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11643 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-18 02:14:11 +00:00
Jean-Philippe Lang 24e99f8b22 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11642 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-17 15:17:48 +00:00
Jean-Philippe Lang 38b3e045cf Fixed: Circular loop when using relations and subtasks (#8794).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11641 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-17 15:02:57 +00:00
Jean-Philippe Lang b1afd75620 Fixed: subtasks don't resepect following/precedes relations on creation (#12968).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11640 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-17 13:46:20 +00:00
Toshi MARUYAMA 628f9dc4cf PDF: fix incompatible character encodings: UTF-8 and ASCII-8BIT (#13354)
Contributed by Jun NAITOH.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11637 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-16 07:02:43 +00:00
Toshi MARUYAMA 7040a1212f replace tabs to spaces at app/views/repositories/_navigation.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11636 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-15 14:58:22 +00:00
Toshi MARUYAMA 1ada210da1 replace tabs to spaces at app/views/projects/settings/_issue_categories.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11635 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-15 14:58:11 +00:00
Toshi MARUYAMA 1dc94c65cb replace tabs to spaces at app/views/projects/settings/_boards.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11634 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-15 14:58:00 +00:00
Toshi MARUYAMA 3749e4eb98 replace tabs to spaces and code cleanup at app/views/repositories/_form.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11633 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-15 14:57:49 +00:00
Toshi MARUYAMA 544bbba046 replace tabs to spaces and code cleanup at app/views/issues/bulk_edit.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11632 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-15 14:57:38 +00:00
Toshi MARUYAMA a97a2fec3f replace tabs to spaces and code cleanup at app/views/versions/_overview.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11631 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-15 14:15:57 +00:00
Toshi MARUYAMA 4e62001154 replace tabs to spaces at app/views/versions/index.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11630 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-15 14:15:46 +00:00
Toshi MARUYAMA ab9f201302 replace tabs to spaces at app/views/documents/index.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11629 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-15 14:15:34 +00:00
Toshi MARUYAMA a1b24e0f65 remove trailing tabs from app/views/context_menus/issues.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11628 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-15 13:12:04 +00:00
Toshi MARUYAMA eaa016bbc3 replace tabs to spaces and fix indents at app/views/my/destroy.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11627 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-15 11:30:36 +00:00
Toshi MARUYAMA e6f7e47547 update .gitignore for non-default themes + plugins (#13476)
Contributed by Pieter Nicolai.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11626 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-15 10:51:35 +00:00
Toshi MARUYAMA d78d83f553 replace tabs to spaces and fix indents at app/views/settings/_repositories.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11625 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-15 10:51:24 +00:00
Toshi MARUYAMA 1f4e3af192 replace tabs to spaces at app/views/settings/_issues.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11624 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-15 10:51:13 +00:00
Toshi MARUYAMA e74734f57c fix pt-BR translation (#13475)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11622 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-15 00:58:42 +00:00
Toshi MARUYAMA 71b3b5d1b5 Russian translation updated by Kirill Bezrukov (#13463)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11620 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-13 08:00:41 +00:00
Toshi MARUYAMA 51631e54f8 Bulgarian translation ordered by Ivan Cenov (#13458)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11615 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-12 23:46:32 +00:00
Toshi MARUYAMA 0dac2e8c59 Czech translation changed by Karel Pičman (#13450)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11614 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-12 23:46:22 +00:00
Toshi MARUYAMA c950adfe82 Fixing HTML in groups index view
Contributed by Gregor Schmidt.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11613 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-12 23:17:16 +00:00
Jean-Philippe Lang 61396f68d0 Use #count instead of #size.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11612 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-12 20:44:25 +00:00
Jean-Philippe Lang 1d48ab201b Log errors when bulk edit/copy fails (#13440).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11611 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-12 19:43:46 +00:00
Jean-Philippe Lang 83d7761998 Always instanciate a relation.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11610 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-12 18:35:59 +00:00
Jean-Philippe Lang 6d20cfe831 Moves Project#users to a regular method.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11609 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-12 18:32:36 +00:00
Jean-Philippe Lang 3528343863 Moves Project#principals to a regular method.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11608 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-12 18:07:37 +00:00
Jean-Philippe Lang 248d983a7d Don't verify method.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11607 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-12 17:25:49 +00:00
Jean-Philippe Lang 447e15d6cb Prevent one query per User#member_of? call after r11508 (#13301).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11605 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-12 17:08:50 +00:00
Toshi MARUYAMA 734188c0dc German translation changed by Filou Centrinov (#13447)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11603 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-12 14:37:21 +00:00
Toshi MARUYAMA 999c9762e6 replace English setting_emails_header and setting_emails_header translation (#13438)
Contributed by Filou Centrinov.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11601 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-12 11:54:34 +00:00
Toshi MARUYAMA 5e4060b15c replace scm to SCM at config/configuration.yml.example (#13438)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11600 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-12 11:54:23 +00:00
Toshi MARUYAMA 121df3d4a7 replace scm to SCM at locale files (#13438)
Contributed by Filou Centrinov.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11599 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-12 11:54:11 +00:00
Toshi MARUYAMA f83c0a81fe German translation of setting_emails_header changed by Filou Centrinov (#13437)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11597 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-12 10:35:00 +00:00
Jean-Philippe Lang de6e4ad431 INSTALL update (#12913).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11592 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-11 18:12:42 +00:00
Jean-Philippe Lang bca9a8431e Mail handler: set mail_notification to only_my_events when creating a new user (#13341).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11590 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-11 17:50:18 +00:00
Toshi MARUYAMA 7cecd72faa Korean translation changed by Jongwook Choi (#13420)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11588 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-11 00:47:24 +00:00
Toshi MARUYAMA d85cc5f561 Korean translation updated by Jongwook Choi (#13420)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11585 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-10 22:52:09 +00:00
Toshi MARUYAMA fe8fb875c2 Korean translation changed by Jongwook Choi (#13420)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11584 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-10 22:51:58 +00:00
Jean-Philippe Lang 06a92fe0d0 Adds label_total_time string (#13337).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11582 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-10 13:01:46 +00:00
Toshi MARUYAMA 3126ff8388 Bulgarian translation updated and changed by Ivan Cenov (#13414)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11578 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-10 03:50:41 +00:00
Jean-Philippe Lang 9c2561b59d Preserve gantt options when changing filters (#12122).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11571 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-09 10:44:39 +00:00
Jean-Philippe Lang bb80baf9a5 Adds setting_default_projects_tracker_ids string to locales (#13175, #13272).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11567 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-09 09:52:35 +00:00
Toshi MARUYAMA ba797909b0 Korean translation changed by Lucas Yang (#13399)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11560 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-08 08:10:29 +00:00
Toshi MARUYAMA 5416c6e3ef Czech translation changed by Karel Pičman (#13391)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11556 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-07 23:13:35 +00:00
Toshi MARUYAMA 9d406189bd Czech translation for trunk updated by Karel Pičman (#13391)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11555 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-07 23:13:24 +00:00
Toshi MARUYAMA df3adb9a90 Czech translation for 2.3-stable updated by Karel Pičman (#13391)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11554 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-07 23:13:13 +00:00
Toshi MARUYAMA d40ad599ed Czech translation for 2.2-stable updated by Karel Pičman (#13398, #13391)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11553 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-07 23:13:02 +00:00
Toshi MARUYAMA dac066ea0a svn propset svn:eol-style native to fixtures (#12641)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11550 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-07 12:53:36 +00:00
Toshi MARUYAMA d3de07a17c fix that diff outputs become ??? in some non ASCII words (#12641)
Contributed by Filou Centrinov.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11549 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-07 10:36:06 +00:00
Toshi MARUYAMA 72539451aa set html encoding utf8 at Diff class (#12641)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11547 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-07 10:17:45 +00:00
Toshi MARUYAMA 0d141eef32 code cleanup (#12641)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11546 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-07 08:47:38 +00:00
Toshi MARUYAMA b19a6d06d9 move utf8 encoding from view to UnifiedDiff (#12641)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11545 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-07 08:31:58 +00:00
Toshi MARUYAMA 8e92ffc191 remove unnecessary h() from diff filename (#12641)
On Rails3, escaping is default.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11544 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-07 07:24:46 +00:00
Toshi MARUYAMA b53b7b1acd use %r{} instead of // at app/models/repository/subversion.rb
Syntax highlight is broken in gedit 2.28.4 on CentOS 6.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11543 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-07 04:07:20 +00:00
Toshi MARUYAMA 39b9599360 use %r{} instead of // at lib/redmine/unified_diff.rb
Syntax highlight is broken in gedit 2.28.4 on CentOS 6.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11542 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-07 04:07:09 +00:00
Toshi MARUYAMA 5984adc3df code layout cleanup AccountController#open_id_authenticate
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11539 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-06 08:42:00 +00:00
Toshi MARUYAMA 6a4966fe10 remove trailing white-spaces from test/functional/account_controller_openid_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11538 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-06 08:41:48 +00:00
Toshi MARUYAMA 419b18b4a9 fix some Japanese "issue" translations (#13350)
Contributed by Go MAEDA.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11537 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-06 08:41:36 +00:00
Toshi MARUYAMA 7d3f29ea3f Japanese translation updated by Go MAEDA (#13349)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11536 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-06 08:41:25 +00:00
Toshi MARUYAMA 9286ddd655 Vietnamese translation changed by Minh Thien Nguyen (#13339)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11530 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-03 10:26:26 +00:00
Toshi MARUYAMA 3357850013 Vietnamese translation for 2.3-stable updated by Minh Thien Nguyen (#13339)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11529 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-03 10:26:14 +00:00
Toshi MARUYAMA 68e98fa37d Vietnamese translation for 2.2-stable updated by Minh Thien Nguyen (#13343, #13339)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11528 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-03 10:26:01 +00:00
Toshi MARUYAMA 0225030551 Ruby2.0: remove "warning: class variable access from toplevel" in lib/plugins/rfpdf/lib/tcpdf.rb (#13338, #13329)
Contributed by Jun NAITOH.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11527 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-03 10:25:47 +00:00
Jean-Philippe Lang f77ed4a7c3 Mail handler: adds --no-notification option to disable notifications to the created user (#13341).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11526 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-03 08:57:00 +00:00
Jean-Philippe Lang 6cffab9919 Mail handler: adds --no-account-notice option for not sending account information to the created user (#11498).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11525 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-03 08:41:52 +00:00
Jean-Philippe Lang e7bf31d162 Typo and text formatting in rdm-mailhandler usage.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11524 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-03 08:10:40 +00:00
Jean-Philippe Lang c4cf97dea5 Adds copyright.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11523 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-03 08:05:44 +00:00
Jean-Philippe Lang b25d496c24 Mail handler: adds --default-group option to add created user to one or more groups (#13340).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11522 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-03 07:59:29 +00:00
Jean-Philippe Lang d5ca514688 Adds autologin param in openid return_to url (#3371).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11521 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-02 20:38:25 +00:00
Jean-Philippe Lang a010372458 Fixed that autologin cookie is not deleted when using custom cookie name (#13335).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11520 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-02 20:30:57 +00:00
Jean-Philippe Lang 08ef201cec Fixed that autologin is broken when using a custom cookie name (#13335).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11519 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-02 20:28:21 +00:00
Jean-Philippe Lang 80807a8c49 Add user's API key to /users/current.format (#8529).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11518 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-01 16:32:30 +00:00
Jean-Philippe Lang caf61dc923 Fixed that copying an issue as a child of itself creates an extra issue (#13328).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11513 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-01 12:26:06 +00:00
Jean-Philippe Lang 4185a4ae3b Test failures (#13309).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11512 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-01 11:27:55 +00:00
Jean-Philippe Lang 5a8b369754 Project select for new membership overflows with long project names.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11511 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-01 11:01:28 +00:00
Jean-Philippe Lang cfcc9069e5 Performance: avoid one "SELECT 1 ..." query per project on user memberships form.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11510 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-01 10:54:31 +00:00
Jean-Philippe Lang a140a03a35 Adds "tracker-[id]" CSS class to issues (#13309).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11509 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-01 10:42:05 +00:00
Jean-Philippe Lang 6803d95a32 Performance: avoid querying all memberships in User#roles_for_project (#13301).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11508 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-01 10:24:23 +00:00
Jean-Philippe Lang 69657be534 Test failure with ruby 2.0.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11507 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-01 09:01:05 +00:00
Jean-Philippe Lang 5f0509435a Regexp not working as expected with ruby 2.0.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11506 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-01 08:57:01 +00:00
Toshi MARUYAMA b2f2c58f3d pt-BR translation changed (#13324)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11504 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-01 03:33:17 +00:00
Toshi MARUYAMA 466a7f2293 pt-BR translation for trunk updated (#13324)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11502 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-01 02:10:24 +00:00
Toshi MARUYAMA 5f4e940a09 pt-BR translation for 2.3-stable updated (#13324)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11499 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-01 00:48:11 +00:00
Toshi MARUYAMA 2f9c6b38cd pt-BR translation for 2.2-stable updated (#13325, #13324)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11498 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-03-01 00:13:51 +00:00
Jean-Philippe Lang 5c1e1ee4bb Fixed that #reload raises a Stack too deep error with ruby 2.0.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11497 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-28 18:47:25 +00:00
Jean-Philippe Lang f544dd682b Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11496 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-28 17:52:29 +00:00
Jean-Philippe Lang 5bf647f290 Don't reload the issue in after_save callback.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11495 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-28 17:47:58 +00:00
Jean-Philippe Lang 953b3619d4 Distinguish mysql/mysql2 adapters in Gemfile (#13270).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11494 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-28 17:20:28 +00:00
Toshi MARUYAMA a5c05435ab pt-BR "label_last_n_weeks" translation updated (#13310)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11491 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-28 07:22:01 +00:00
Toshi MARUYAMA 9a8f430db6 Ruby2.0: switch mysql2 platforms by RUBY_VERSION
It seems old bundler does not support :mri_20 and :mingw_20

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11490 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-26 12:20:45 +00:00
Toshi MARUYAMA 23941adee1 Ruby2.0: add platforms to Gemfile mysql2
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11489 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-26 11:41:20 +00:00
Toshi MARUYAMA bf917a61e7 Ruby2.0: add "require 'yaml'" to Gemfile
On ruby 2.0.0p0 (2013-02-24 revision 39474) [x86_64-linux]:
<pre>
$ ruby script/about
There was an error in your Gemfile, and Bundler cannot continue.
</pre>

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11488 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-26 11:41:09 +00:00
Toshi MARUYAMA 2ffbfacf5f back out r11486
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11487 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-26 11:40:58 +00:00
Jean-Philippe Lang 3f67ec4436 Require 'yaml'.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11486 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-25 17:31:58 +00:00
Toshi MARUYAMA 36da6d0f80 Russian translation updated by Kirill Bezrukov (#13281)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11483 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-25 14:22:24 +00:00
Toshi MARUYAMA 7d49d8b20e German translation changed by Filou Centrinov (#13280)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11482 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-25 13:41:16 +00:00
Toshi MARUYAMA fb0303ac1d Traditional Chinese translation updated by ChunChang Lo (#13279)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11480 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-25 10:50:20 +00:00
Toshi MARUYAMA 223f892742 Russian translation updated by Filou Centrinov (#13266)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11479 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-25 10:50:09 +00:00
Toshi MARUYAMA b32056b79d German translation updated by Filou Centrinov (#13265)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11478 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-25 10:49:58 +00:00
Toshi MARUYAMA 92532fb7b8 Bulgarian translation updated by Ivan Cenov (#13264)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11477 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-25 10:49:47 +00:00
Toshi MARUYAMA c22810ed51 German translation changed by Filou Centrinov (#13246)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11476 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-25 10:33:01 +00:00
Jean-Philippe Lang 870d9bad86 Removed deferred test, circular relations are unit tested.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11475 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-24 13:03:00 +00:00
Jean-Philippe Lang 5b4a9ac3b3 Restricts characters before auto links (#10277).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11474 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-24 12:56:50 +00:00
Jean-Philippe Lang dfca67d844 Fixed that www followed by a dot generates broken links in formatted text (#3676).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11473 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-24 12:39:06 +00:00
Jean-Philippe Lang 458800c1d5 Time entry with 2 digits year should not validate (#3107).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11472 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-24 12:28:44 +00:00
Jean-Philippe Lang 0a6a7f0ed7 Fixed that time entries report by week breaks on edge cases (#5329).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11471 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-24 12:18:29 +00:00
Jean-Philippe Lang e37ee0d21b Use li tags for issue links in the sidebar (#13242).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11470 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-24 11:33:27 +00:00
Jean-Philippe Lang de716bd024 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11469 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-24 11:25:52 +00:00
Jean-Philippe Lang cd9de0837f Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11468 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-24 11:10:12 +00:00
Jean-Philippe Lang 0082e36b60 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11467 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-24 11:08:14 +00:00
Jean-Philippe Lang ace19cc20f Use ti tags for sidebar queries (#13242).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11466 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-24 11:06:08 +00:00
Jean-Philippe Lang 0cefb7716e Use https://rubygems.org as gem source (#13173).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11464 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-24 10:13:43 +00:00
Jean-Philippe Lang 6f21796c34 Missing fixtures.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11462 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-24 10:05:58 +00:00
Jean-Philippe Lang 8e17c2aeac Fixed that relations may not be refreshed when adding a follows relation (#13251).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11461 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-24 09:59:45 +00:00
Jean-Philippe Lang 85b872f340 Makes project custom fields available on spent time report (#1766).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11459 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-24 08:57:04 +00:00
Jean-Philippe Lang 3269fab34e Adds field_generate_password string to locales (#3872).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11458 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-23 17:00:53 +00:00
Jean-Philippe Lang e14caf8e33 Use User#generate_password in MailHandler.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11457 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-23 16:57:45 +00:00
Jean-Philippe Lang fac4a79d4c Option to generate a random password on user creation/update.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11456 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-23 16:50:07 +00:00
Jean-Philippe Lang 78997eea16 Typo.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11453 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-23 13:53:47 +00:00
Jean-Philippe Lang d255e98023 Adds an helper for rendering query columns selection.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11452 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-23 12:14:22 +00:00
Jean-Philippe Lang 1ac8fd8c42 Adds helpers for query columns selection.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11451 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-23 12:04:29 +00:00
Jean-Philippe Lang 998928ecdf Set version to 2.3.0.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11450 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-23 11:51:56 +00:00
Jean-Philippe Lang aca59db4cc Rename issues CSV and PDF exports.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11449 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-23 11:10:10 +00:00
Jean-Philippe Lang 797a9f1ea9 Refactor: #issues_to_csv and #entries_to_csv merged into QueriesHelper#query_to_csv.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11448 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-23 11:07:43 +00:00
Jean-Philippe Lang 9b1ebd6808 Refactor: makes issue id a regular QueryColumn.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11447 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-23 10:53:21 +00:00
Jean-Philippe Lang d1244b31a4 Fixed that requesting a message from an invalid forum should respond with 404 (#13232).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11446 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-20 20:59:52 +00:00
Jean-Philippe Lang 2ae7ddcb24 Asserts that the watchers list is updated.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11445 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-20 20:49:01 +00:00
Jean-Philippe Lang f88e4225c1 Removed hard-coded style in watchers list.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11444 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-20 20:46:42 +00:00
Jean-Philippe Lang aca31973c2 Fixed that delete watcher link was broken by r11290 (#13231).
Deleting a watcher now use DELETE /watchers instead of POST /watchers/destroy.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11443 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-20 20:43:28 +00:00
Jean-Philippe Lang f8c649320f Makes all time entry columns available in the CSV export.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11442 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-19 20:41:54 +00:00
Jean-Philippe Lang af92686c62 Fixed that float custom fields do not use CSV decimal separator (#10364).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11441 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-19 20:01:00 +00:00
Jean-Philippe Lang 59c704dcd2 Don't use iconv with ruby1.9 (#12787).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11440 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-18 21:39:17 +00:00
Jean-Philippe Lang b0de1b1908 Removed some shoulda context.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11439 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-18 17:30:11 +00:00
Jean-Philippe Lang 58c643b420 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11438 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-18 17:29:31 +00:00
Jean-Philippe Lang 504116bfca Add login to /users/:id API for current user (#13155).
Patch by Jérôme Bataille.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11437 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-18 17:24:54 +00:00
Toshi MARUYAMA 661dd6dcf5 Portuguese translation for trunk updated by Rui Rebelo (#13206)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11434 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-18 13:02:37 +00:00
Toshi MARUYAMA bf6f3bfbe1 Portuguese translation changed by Rui Rebelo (#13206)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11433 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-18 13:01:44 +00:00
Toshi MARUYAMA d67ea67ded Portuguese translation for 2.2-stable updated by Rui Rebelo (#13207, #13206)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11432 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-18 13:01:05 +00:00
Toshi MARUYAMA b9de6a5ee9 German "label_follows" translation changed by Daniel Felix (#13203)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11431 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-18 11:42:03 +00:00
Toshi MARUYAMA 73c6a619e7 Traditional Chinese translation updated and changed by ChunChang Lo (#13198)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11430 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-18 11:01:45 +00:00
Toshi MARUYAMA d3bee90a35 Russian "almost_x_years" changed by Mikhail Velkin (#12645)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11429 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-18 11:01:19 +00:00
Toshi MARUYAMA 8bdd08fc34 German translation updated by Daniel Felix (#13202)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11428 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-18 11:00:51 +00:00
Toshi MARUYAMA f76dcf33ef fix typo at app/models/user.rb (#5719)
Contributed by Tom Copeland.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11427 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-18 11:00:21 +00:00
Jean-Philippe Lang 64bbf64fb6 Optimizes the SQL query behind Principal#member_of.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11426 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-17 12:41:31 +00:00
Jean-Philippe Lang d8e4a8fb32 Use #per_page instead of #items_per_page.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11425 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-17 11:35:42 +00:00
Jean-Philippe Lang c17ec1643c Fixed that messages are not sorted by last reply (#12243).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11424 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-17 11:10:17 +00:00
Toshi MARUYAMA dbf1fed6fb replace tabs to spaces at app/controllers/boards_controller.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11423 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-17 10:17:33 +00:00
Toshi MARUYAMA e79b232a02 replace tabs to spaces at app/models/issue.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11422 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-17 10:17:10 +00:00
Toshi MARUYAMA e478f3044e replace tabs to spaces at app/models/setting.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11421 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-17 10:16:46 +00:00
Toshi MARUYAMA a39f9bcec0 replace tabs to spaces at app/helpers/application_helper.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11420 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-17 10:16:21 +00:00
Toshi MARUYAMA e0215681b4 remove trailing tabs from app/controllers/users_controller.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11419 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-17 10:15:44 +00:00
Toshi MARUYAMA 51abe725ba remove trailing tabs from app/controllers/projects_controller.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11418 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-17 10:15:10 +00:00
Jean-Philippe Lang b4013dc9f2 Removed the default 0 value for issues foreign keys.
It prevents useless "... where id=0" queries and ensures that *_id attributes default to nil.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11417 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-17 10:14:58 +00:00
Toshi MARUYAMA c0a5796443 remove trailing tabs from app/controllers/admin_controller.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11416 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-17 10:14:35 +00:00
Toshi MARUYAMA e31a8e2cb3 remove trailing tabs from app/models/project.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11415 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-17 10:14:08 +00:00
Toshi MARUYAMA 14fcac8160 remove trailing tab from app/helpers/custom_fields_helper.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11414 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-17 10:13:40 +00:00
Toshi MARUYAMA 9ac2afec04 remove trailing tab and white-spaces from app/controllers/issue_statuses_controller.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11413 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-17 10:13:12 +00:00
Jean-Philippe Lang 7b7427b46e Adds Issue#status_was that returns the initial issue status.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11412 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-17 09:30:17 +00:00
Jean-Philippe Lang 7a1af68178 Adds closed_on to issues API responses (#824).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11411 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-16 15:32:44 +00:00
Jean-Philippe Lang 9dd8988638 Make sure that fields filled before tracker change are preserved.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11410 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-16 15:20:36 +00:00
Toshi MARUYAMA d01fe87a67 Russian "label_last_n_weeks" translation changed by Mikhail Velkin (#12645)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11409 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-16 13:04:36 +00:00
Toshi MARUYAMA da0598a029 Russian "label_x_issues" translation changed by Mikhail Velkin (#12645)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11408 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-16 13:04:23 +00:00
Toshi MARUYAMA dadad2f054 Bulgarian translation changed and updated by Ivan Cenov (#13190)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11407 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-16 13:04:09 +00:00
Toshi MARUYAMA 5778bdd4f7 replace tabs to spaces at app/helpers/timelog_helper.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11406 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-16 13:03:54 +00:00
Jean-Philippe Lang 7799788b3d Fixed that updating the issue form was broken by r4011 when user is not allowed to add issues (#13188).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11405 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-16 11:35:18 +00:00
Jean-Philippe Lang 1cf09a2d31 Adds field_closed_on to locales (#824).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11404 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-16 09:40:43 +00:00
Jean-Philippe Lang 98cd140a19 Makes closed_on available as column and filter on the issue list (#824).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11403 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-16 09:39:52 +00:00
Jean-Philippe Lang a45c0dc550 Adds closed_on column that stores the time of the last closing (#824).
The value is preserved when reopening the issue.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11402 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-16 09:38:01 +00:00
Jean-Philippe Lang 723e21243e Don't fail if new filter is added.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11401 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-16 09:12:21 +00:00
Toshi MARUYAMA d5f1e186f1 not use htmlentities gem in rfpdf plugin (#13138)
Contributed by Jun NAITOH.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11399 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-15 13:24:10 +00:00
Jean-Philippe Lang b5c2ca5666 Adds the date picker for the default value of date custom fields.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11398 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-15 10:45:34 +00:00
Jean-Philippe Lang 3277d59e5c Remove default for when changing custom field format.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11397 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-15 10:43:56 +00:00
Jean-Philippe Lang 32bf0f03ef Use a textarea instead of an input for the default value of long text custom fields (#13176).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11396 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-15 08:48:51 +00:00
Jean-Philippe Lang 9a3e4e0a51 Test broken by r11392 (#13174).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11395 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-15 08:32:06 +00:00
Jean-Philippe Lang 4e9fbeb851 Possibility to define the default enable trackers when creating a project (#13175).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11394 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-15 08:28:34 +00:00
Toshi MARUYAMA 348a1d59ef Azerbaijanian translation updated by Samir Suleymanov (#13152)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11393 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-15 07:52:04 +00:00
Jean-Philippe Lang ee1d9647b8 Raised group name maximum length to 255 characters (#13174).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11392 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-15 07:48:37 +00:00
Toshi MARUYAMA 5891a873fb Bulgarian translation of jstoolbar-bg.js updated by Ivan Cenov (#13181)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11390 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-15 06:20:10 +00:00
Toshi MARUYAMA 52d15dd122 add "tmp:clear" to "ci:setup" rake task for new translation
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11389 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-15 06:10:40 +00:00
Toshi MARUYAMA e550aa1b17 set svn eol native Azerbaijanian translation files (#13152)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11388 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-15 05:47:46 +00:00
Toshi MARUYAMA 22b7cc834b add jquery.ui.datepicker-az.js (#13152)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11387 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-15 05:29:49 +00:00
Toshi MARUYAMA 2cad145d5c copy jstoolbar-az.js from jstoolbar-en.js (#13152)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11386 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-15 05:29:36 +00:00
Toshi MARUYAMA d954432284 adjust Azerbaijanian "general_lang_name" (#13152)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11385 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-15 05:29:22 +00:00
Toshi MARUYAMA 4a2206afa5 add missing i18n keys to az.yml (#13152)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11384 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-15 05:29:09 +00:00
Toshi MARUYAMA 0836b7fb9c remove "permission_manage_documents" from az.yml (#13152, #12401)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11383 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-15 05:28:54 +00:00
Toshi MARUYAMA 6557147b1d remove unused "label_modification" i18n keys from az.yml (#13152, #12645)
These keys were removed from app/views/repositories/revision.rhtml by r535
and app/views/repositories/revisions.rhtml by r381.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11382 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-15 05:28:40 +00:00
Toshi MARUYAMA c509a64184 remove unused "label_download" i18n keys from az.yml (#13152, #12645)
These keys were removed from app/views/documents/show.rhtml by r1180.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11381 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-15 05:28:25 +00:00
Toshi MARUYAMA 0408c24ae6 remove unused "gui_validation_error" i18n keys from az.yml (#13152, #12645)
These keys were removed from app/helpers/application_helper.rb by r2493.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11380 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-15 05:28:10 +00:00
Toshi MARUYAMA 6d9b6ad749 remove unused i18n string from az.yml (#13152, #8373)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11379 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-15 05:27:49 +00:00
Toshi MARUYAMA 0dae278d73 add Azerbaijanian translation (#13152)
Contributed by Samir Suleymanov.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11378 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-15 05:27:33 +00:00
Toshi MARUYAMA cd0b8d9363 fix double "one" in Polish translation by Filou Centrinov (#7202)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11377 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-15 02:03:26 +00:00
Toshi MARUYAMA 70612342a5 Polish translation updated and changed (#7202)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11376 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-15 00:13:43 +00:00
Jean-Philippe Lang 3c3ac3c6ee Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11375 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-14 22:13:49 +00:00
Jean-Philippe Lang 812da860b3 Adds token finder methods.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11374 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-14 21:47:07 +00:00
Jean-Philippe Lang adb4a575dc Adds SQL server example and cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11373 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-14 20:38:08 +00:00
Jean-Philippe Lang 0be82ea2c4 Refactor: use an ordered hash to store available filters and remove :order option (#13154).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11372 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-14 20:37:17 +00:00
Jean-Philippe Lang f77edce621 Fixed thatinitialize_http_header overrides basic auth in rdm-mailhandler.rb (#13165).
Patch by Jean-Louis Fuchs.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11371 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-14 17:52:37 +00:00
Toshi MARUYAMA afaab7d43f Italian translation changed by Luca Colombini (#7851)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11370 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-13 11:22:56 +00:00
Toshi MARUYAMA 6783497a4d fix a spelling mistake of German "label_query_plural" (#9475, #13142)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11369 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-12 22:46:44 +00:00
Jean-Philippe Lang 1faa94af8a Updates for 2.2.3 release.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11366 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-12 18:07:38 +00:00
Toshi MARUYAMA 4d078d3a17 German translation for my page changed (#12660)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11360 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-12 10:17:42 +00:00
Toshi MARUYAMA 3473152538 German "My custom queries" and "Custom queries" changed by Filou Centrinov (#9475)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11359 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-12 10:17:13 +00:00
Toshi MARUYAMA 77bc6e11ff remove trailing white-spaces from app/models/custom_field.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11354 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-12 00:51:11 +00:00
Toshi MARUYAMA 204abe392b upgrade Rails to 3.2.12
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11353 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-12 00:20:55 +00:00
Jean-Philippe Lang dbe7d6fbfb Removed unused fixtures.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11352 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-11 20:14:26 +00:00
Jean-Philippe Lang 999e62711f Fixed that long project names in the header may overlap the main menu (#13127).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11351 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-11 18:14:00 +00:00
Jean-Philippe Lang cd04a041fe Format all floats with 2 decimals in the issue list (#13126).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11350 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-11 18:07:45 +00:00
Jean-Philippe Lang 514f2d6c0f Fixed that custom_field_values are not reloaded on #reload (#13119).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11349 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-11 17:38:30 +00:00
Jean-Philippe Lang eed4954f0a Submit the form after preview.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11348 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-10 21:28:29 +00:00
Jean-Philippe Lang 0df1b9b1a4 Removed delay.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11347 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-10 21:11:48 +00:00
Jean-Philippe Lang 7c22c30791 Fixed test after r11343.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11346 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-10 17:52:19 +00:00
Jean-Philippe Lang a24bf65a8b Don't run Capybara tests on the CI server (#12822).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11345 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-10 17:09:33 +00:00
Jean-Philippe Lang 01a7c34828 Don't generate duplicate ids.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11344 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-10 16:41:26 +00:00
Jean-Philippe Lang deffd81ada Use POST/DELETE to watch/unwatch an item.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11343 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-10 16:10:53 +00:00
Jean-Philippe Lang 75129aaa1b Clean up watchers routes declaration.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11342 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-10 16:05:30 +00:00
Jean-Philippe Lang 6d408b8261 Adds context menu tests and skip test_preview_issue_description that breaks the test suite.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11341 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-10 15:53:14 +00:00
Jean-Philippe Lang bd52c23e7b Adds a test for creating an issue with watchers.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11340 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-10 10:31:38 +00:00
Jean-Philippe Lang 856ef810b4 Bulk watch/unwatch issues from the context menu (#7159).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11339 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-10 10:31:12 +00:00
Toshi MARUYAMA 7303cc416c remove trailing white-space from app/models/board.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11338 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-10 04:04:21 +00:00
Jean-Philippe Lang 0d93b6dc3c Typo that breaks with ruby1.8.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11337 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-09 15:20:07 +00:00
Jean-Philippe Lang 0f2ee79f35 Fixed that project overview page shows trackers from subprojects with disabled issue module (#13076).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11336 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-09 13:56:11 +00:00
Jean-Philippe Lang 1fe29c8a0c Small datepicker improvements (#13098).
Patch by Daniel Felix.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11335 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-09 13:39:57 +00:00
Jean-Philippe Lang 8b205052a9 Don't wrap watcher link with span.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11334 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-07 20:13:15 +00:00
Jean-Philippe Lang 1d71bd598f Test failures from r11331 (#13075).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11333 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-07 19:58:43 +00:00
Jean-Philippe Lang 2cd749955e Fixed: error raised when copying project wiki with wiki module disabled (#13097).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11332 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-07 19:24:57 +00:00
Jean-Philippe Lang eece12ddfd Fixed: Can't clear custom field value through context menu in the issue list (#13075).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11331 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-07 18:35:51 +00:00
Jean-Philippe Lang 457c27e697 Add unique index on custom_fields_projects.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11330 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-07 18:21:18 +00:00
Jean-Philippe Lang 37a4342bcd Add unique index on custom_fields_trackers (#13059).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11329 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-07 18:20:59 +00:00
Toshi MARUYAMA 36d6caf35f German "label_in" translation changed by Filou Centrinov (#13080)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11328 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-05 04:30:05 +00:00
Toshi MARUYAMA a375ab498f Gemfile: unpin mocha version
This is pinned by r10155 and r10167 due to CI server failure.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11327 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-04 08:33:53 +00:00
Toshi MARUYAMA 46ac549982 Traditional Chinese translation updated by ChunChang Lo (#13071)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11326 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-04 08:33:27 +00:00
Toshi MARUYAMA 04a2ca9ce7 remove "test-unit" from Gemfile
This is added by r10137 (#10320, #10818) and shoulda version was upgraded by r11324.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11325 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-04 08:05:21 +00:00
Jean-Philippe Lang 69ff805c8d Upgrade shoulda.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11324 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-03 15:49:02 +00:00
Jean-Philippe Lang 25e1842f5f Create all databases.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11323 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-03 15:46:54 +00:00
Jean-Philippe Lang 8aff70398c Dup generated attributes.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11322 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-03 15:46:42 +00:00
Jean-Philippe Lang 4fa7f62182 Removed unused fixtures.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11321 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-03 14:27:19 +00:00
Jean-Philippe Lang ff6425c0fa Removed unused fixtures.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11320 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-03 10:23:17 +00:00
Jean-Philippe Lang bf36b6b0bb Removing shoulda context.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11319 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-03 10:19:42 +00:00
Jean-Philippe Lang 0afab2fb30 Removing shoulda context.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11318 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-03 10:02:22 +00:00
Jean-Philippe Lang ca5c5d38d6 Removed unused fixtures.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11317 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-03 09:49:18 +00:00
Jean-Philippe Lang f4f3764686 Removing shoulda context.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11316 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-03 09:43:37 +00:00
Jean-Philippe Lang 14b50dfbab Removing shoulda context.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11315 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-03 09:20:05 +00:00
Toshi MARUYAMA de8033d183 comment out i18n key in plugin template (#12900)
It seems duplicate keys in plugins cause problems.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11314 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-03 08:46:40 +00:00
Jean-Philippe Lang b3a2d07257 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11313 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-03 08:23:20 +00:00
Jean-Philippe Lang c9c72cb198 Don't display the warning to administrators (#5605).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11312 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-03 08:14:40 +00:00
Jean-Philippe Lang 140eb1f13b Fixed incorrect test name.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11311 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-03 08:03:42 +00:00
Jean-Philippe Lang 1acf1d6bf7 Adds a warning for when a user with inherited permissions disables inheritance (#5605).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11310 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-03 08:03:25 +00:00
Toshi MARUYAMA 08664b3742 Bulgarian translation updated by Ivan Cenov (#13066)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11309 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-03 07:33:30 +00:00
Toshi MARUYAMA f9927d6a4c German translation updated by Daniel Felix (#13065)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11307 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-03 05:44:48 +00:00
Toshi MARUYAMA afc9e4784b pdf: fix broken new line in table (#11987)
Contributed by Jun NAITOH.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11306 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-03 05:44:13 +00:00
Jean-Philippe Lang dadf1d4fa1 CSS cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11305 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-02 15:10:13 +00:00
Jean-Philippe Lang 791b620b98 Removed div around fieldset on project modules.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11304 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-02 15:06:34 +00:00
Jean-Philippe Lang 8e08aae904 Raises project description height.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11303 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-02 14:55:21 +00:00
Jean-Philippe Lang 0380292eca Typo that makes the checkbox not visible (#5605).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11302 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-02 14:46:26 +00:00
Jean-Philippe Lang 9536d04c1e Typo that triggers an error when editing a subproject (#5605).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11301 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-02 13:18:04 +00:00
Jean-Philippe Lang 5fea79504c Don't remove watchers on permission change.
This can be far too slow (especially with membership inheritance) and notifications are not sent to watchers that are not allowed to view the item. If we still want to remove watchers that are no longer able to view the watched items, the redmine:watchers:prune task can be called periodically.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11300 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-02 13:03:22 +00:00
Jean-Philippe Lang 00481b78c8 Adds :field_inherit_members string to locales (#5605).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11299 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-02 12:51:27 +00:00
Jean-Philippe Lang 0f29e265fc Optionaly inherit members from parent project (#5605).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11298 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-02 12:50:45 +00:00
Jean-Philippe Lang 137aa1cf66 Test broken by r11296.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11297 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-02 09:49:26 +00:00
Jean-Philippe Lang 9e0723c11b Refactors methods for searching a user by token.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11296 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-02 08:46:58 +00:00
Jean-Philippe Lang 8b010e85e3 Add unique index on tokens.value.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11295 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-01 20:04:38 +00:00
Jean-Philippe Lang 9bf98bce26 Skip callbacks when updating last_login_on.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11294 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-02-01 18:32:12 +00:00
Jean-Philippe Lang 8585cda7b1 Use database LOWER instead of #downcase.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11293 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-31 22:45:07 +00:00
Jean-Philippe Lang f29ced77a7 Makes autocomplete accept issue id with hash.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11292 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-31 22:43:24 +00:00
Jean-Philippe Lang bf2613a02b Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11291 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-30 21:31:13 +00:00
Jean-Philippe Lang a0158eff96 Add/remove issue watchers via the REST API (#6727).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11290 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-30 20:51:21 +00:00
Jean-Philippe Lang f2fd78f7b8 Use POST instead of GET for logging out (#13022).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11289 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-30 17:34:48 +00:00
Jean-Philippe Lang 41faf7f5f5 Adds test:ui to ci:build.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11288 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-29 18:49:33 +00:00
Jean-Philippe Lang 69ac014e2e rake test aborts with ruby1.8.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11287 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-29 18:47:54 +00:00
Jean-Philippe Lang b0f496a58d Parse database.yml with erb (#13004).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11286 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-29 18:02:20 +00:00
Jean-Philippe Lang 1e0a94de84 Fixe that filter "Assignee's group" doesn't work with group assignments (#13006).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11285 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-29 17:59:20 +00:00
Jean-Philippe Lang 5851f55eeb Let me see what was not found.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11284 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-29 17:58:10 +00:00
Jean-Philippe Lang d215cc136c CI tasks cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11283 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-29 17:34:35 +00:00
Toshi MARUYAMA 8ec0990d94 Traditional Chinese translation updated by ChunChang Lo (#13003)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11282 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-28 08:08:47 +00:00
Jean-Philippe Lang f928f36070 Wiki links to repositories with underscore their identifiers don't work (#12979).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11281 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-27 16:02:49 +00:00
Jean-Philippe Lang 10a38010fb Test failure with JRuby 1.7.2 (#12228).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11280 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-27 12:23:02 +00:00
Jean-Philippe Lang b73c42f619 Test failure with JRuby 1.7.2 (#12228).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11279 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-27 12:03:47 +00:00
Jean-Philippe Lang 7643281510 undefined method `strip' for nil:NilClass error with JRuby 1.7.2 (#12228).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11278 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-27 10:50:19 +00:00
Toshi MARUYAMA fb663210b2 Spanish login/logout translations changed by Jorge López (#12967)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11277 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-27 08:12:58 +00:00
Toshi MARUYAMA b1aea7a562 Japanese translation updated by Go MAEDA (#12996)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11276 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-27 05:21:26 +00:00
Toshi MARUYAMA f046a1bdd3 Bulgarian translation updated by Ivan Cenov (#12995)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11275 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-27 02:23:23 +00:00
Toshi MARUYAMA b947823482 German translation updated by Daniel Felix (#12993)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11274 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-27 02:22:53 +00:00
Jean-Philippe Lang b3a55983a3 Filling locales (#12992).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11273 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-26 18:38:01 +00:00
Jean-Philippe Lang 9f127793be Make JSONP support optional and disabled by default (#12992).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11272 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-26 18:37:09 +00:00
Jean-Philippe Lang 134b66cb29 Always notify project members about news unless they turned off all notifications (#4700).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11271 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-26 18:07:57 +00:00
Jean-Philippe Lang 9c1077841e Adds first Capybara tests (#12822).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11270 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-26 14:36:02 +00:00
Jean-Philippe Lang 08826ed0b6 Set proper EOL on SVG source files (#12971).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11269 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-26 09:46:51 +00:00
Toshi MARUYAMA a2bf01cf89 Japanese translation updated by Go MAEDA (#12990)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11268 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-26 07:46:58 +00:00
Toshi MARUYAMA 3d7819ed82 remove trailing white-space from app/models/attachment.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11267 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-26 00:47:29 +00:00
Toshi MARUYAMA 8f2fdaccd2 Russian "setting_non_working_week_days" translation changed (#12988)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11265 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-25 23:37:34 +00:00
Toshi MARUYAMA 4b780de127 Russian translation for trunk updated (#12988)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11264 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-25 23:36:55 +00:00
Toshi MARUYAMA 54f9c5a435 Russian translation for 2.2-stable updated (#12987)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11263 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-25 23:35:52 +00:00
Toshi MARUYAMA 0e180c861f fix typo "header_heigth" in gantt view
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11262 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-24 12:17:47 +00:00
Jean-Philippe Lang 63cc617bc5 Fixed Redmine case.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11261 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-23 18:09:16 +00:00
Jean-Philippe Lang 8f00d31ec6 Accommodates fixtures for databases with case sensitive sort.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11260 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-23 18:09:03 +00:00
Jean-Philippe Lang e53a5de918 Adds "sorted" scope to Principal and User and sort users/groups properly.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11259 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-23 17:44:28 +00:00
Jean-Philippe Lang c7df78f3b6 Wrong redmine link after referencing an object from a different project (#12930).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11258 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-22 20:40:39 +00:00
Jean-Philippe Lang a4c10376ce Removed default comments.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11257 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-22 18:31:25 +00:00
Jean-Philippe Lang 43503dad48 Removed unused shoulda macros.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11256 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-22 18:29:12 +00:00
Jean-Philippe Lang 9645cb83f2 ActionController::IntegrationTest is ActionDispatch::IntegrationTest.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11255 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-22 18:28:58 +00:00
Jean-Philippe Lang 5397216190 Adds missing copyright.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11254 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-22 18:27:27 +00:00
Jean-Philippe Lang 55a994cb29 Adds a subclass of ActionDispatch::IntegrationTest for API tests.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11253 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-22 18:26:04 +00:00
Jean-Philippe Lang eb5675f4bc More specific warning.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11252 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-21 20:53:52 +00:00
Toshi MARUYAMA bd070c13c5 Swedish translation changed by Nicklas Holm (#12927)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11250 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-21 12:36:31 +00:00
Toshi MARUYAMA 6957cd0548 Swedish translation updated by Nicklas Holm (#12927)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11249 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-21 12:36:17 +00:00
Toshi MARUYAMA 5f8eaf106e Bulgarian translation changed by Ivan Cenov (#12926)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11248 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-21 12:36:04 +00:00
Toshi MARUYAMA b197f8a1fe Bulgarian translation for trunk updated by Ivan Cenov (#12926)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11247 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-21 12:35:51 +00:00
Toshi MARUYAMA f388297c9b Bulgarian translation for 2.2-stable updated by Ivan Cenov (#12926, #12928)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11246 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-21 12:35:37 +00:00
Toshi MARUYAMA e0fb076839 Spanish translation for trunk updated by Jorge López (#12922)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11244 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-21 10:03:18 +00:00
Toshi MARUYAMA ebe0184b4e Spanish translation for 2.2-stable updated by Jorge López (#12922)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11243 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-21 10:02:49 +00:00
Toshi MARUYAMA 13875b1eae Traditional Chinese translation updated by ChunChang Lo (#12916)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11242 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-21 03:59:35 +00:00
Jean-Philippe Lang 2b32a63cee Updates for 2.2.2 release.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11239 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-20 18:24:14 +00:00
Jean-Philippe Lang d6d7563a4b Input fields restricted on length should have maxlength parameter set (#12833).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11233 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-20 17:02:11 +00:00
Jean-Philippe Lang f99535bba2 "Parent task is invalid" while editing child issues with restricted Issues Visibility (#12851).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11228 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-20 16:41:31 +00:00
Jean-Philippe Lang d0888b2f71 Strip {{toc}} tags in pdf exports (#9842).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11227 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-20 16:22:20 +00:00
Jean-Philippe Lang 15f035be51 Respond with 404 when params[:ids] is missing (#12898).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11226 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-20 16:04:25 +00:00
Jean-Philippe Lang 6e6ce7c085 Fixed that adding a blank/invalid block to my page renders a blank page (#12838).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11225 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-20 15:56:46 +00:00
Jean-Philippe Lang 8b23d41cf9 Test failure.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11224 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-20 15:09:57 +00:00
Toshi MARUYAMA 4c3fe2f1f8 German translation updated by Daniel Felix (#12122)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11223 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-20 14:34:04 +00:00
Jean-Philippe Lang 5741d007f6 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11222 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-20 13:57:29 +00:00
Jean-Philippe Lang e355a55e3c Don't use && return.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11221 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-20 13:54:42 +00:00
Jean-Philippe Lang b07a27b028 Don't use && return.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11220 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-20 13:53:26 +00:00
Jean-Philippe Lang 92b92d6bb8 Safer find_by_ call.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11219 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-20 13:50:51 +00:00
Jean-Philippe Lang 8357426e79 Adjust warning message (#12251).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11218 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-20 13:48:06 +00:00
Jean-Philippe Lang 22f9b8846b Plugin settings div should perhaps have 'settings' CSS class (#12910).
Patch by Harry Garrood.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11217 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-20 13:05:23 +00:00
Jean-Philippe Lang bb31402939 Fix 500 error for requests to the settings path for non-configurable plugins (#12911).
Path by Harry Garrood.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11216 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-20 13:03:55 +00:00
Jean-Philippe Lang 253197c598 Changed fieldset legend and make it hidden by default like on the issue list (#12122).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11215 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-20 12:55:09 +00:00
Toshi MARUYAMA cf8182e1bc German translation updated by Daniel Felix (#12401)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11214 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-20 12:48:01 +00:00
Jean-Philippe Lang e1b9767ef3 Fills locales (#12122).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11213 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-20 12:37:02 +00:00
Jean-Philippe Lang fec32fd49d Style should be applied to child legend only.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11212 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-20 12:33:57 +00:00
Jean-Philippe Lang 8b91a2bb30 Removed duplicate HTML element id (#12122).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11211 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-20 12:31:17 +00:00
Jean-Philippe Lang 237f297f03 Gantt progress lines (#12122).
Patch by Toshi MARUYAMA.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11210 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-20 12:30:40 +00:00
Jean-Philippe Lang 30801ca968 Always log scm stderr and makes the log file path configurable.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11209 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-20 12:04:23 +00:00
Jean-Philippe Lang 9f9802bf46 Update locales for new document permissions (#12401).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11207 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-20 11:43:10 +00:00
Jean-Philippe Lang 48fb02e383 Split "Manage documents" permission into create, edit and delete permissions (#12401).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11206 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-20 11:38:20 +00:00
Jean-Philippe Lang 26016cdc08 Adds tests for Redmine::MenuManager.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11205 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-20 10:59:53 +00:00
Jean-Philippe Lang 1188789e15 Set ruby1.9 as default for the database configuration example.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11204 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-19 14:47:19 +00:00
Jean-Philippe Lang 513419debb database.yml should be configured first.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11203 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-19 14:45:39 +00:00
Jean-Philippe Lang 0450547b66 Don't abort when database.yml is not present.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11202 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-19 14:44:26 +00:00
Jean-Philippe Lang db26041f83 Adds sqlserver configuration for the CI server.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11201 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-19 13:39:53 +00:00
Jean-Philippe Lang 1257f1960f Adds pagination to users list when adding project or group members (#9549).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11200 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-18 17:57:16 +00:00
Toshi MARUYAMA 10c96dba8b not use unnecessary instance variable at unit message test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11199 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-18 15:46:38 +00:00
Toshi MARUYAMA 0f832e0d76 code layout clean up unit message test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11198 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-18 15:46:22 +00:00
Jean-Philippe Lang 93e0885b64 Link to attachment should return latest attachment (#7510).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11196 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-15 21:08:27 +00:00
Jean-Philippe Lang 48c3785991 Underscores are allowed in project identifiers (#9225).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11195 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-15 19:44:21 +00:00
Jean-Philippe Lang 04ab2f2458 Bundle only the required database gems and adds sqlserver support (#12713).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11194 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-15 19:23:03 +00:00
Jean-Philippe Lang 17e8664b61 Attachment name is added in the generated link.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11193 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-14 23:07:26 +00:00
Jean-Philippe Lang 1cb1bc7c96 Attachment name is added in the generated link.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11192 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-14 22:43:26 +00:00
Jean-Philippe Lang 6326752290 Attachment name is added in the generated link.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11191 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-14 21:18:40 +00:00
Jean-Philippe Lang 1386c10074 Use helper.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11190 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-14 21:13:09 +00:00
Jean-Philippe Lang 2230c11baa Use named route with attachment filename for inline images.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11189 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-14 21:03:53 +00:00
Jean-Philippe Lang 6ce28450c0 Adds a named route for thumbnails and use route helper in #thumbnail_tag.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11188 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-14 20:51:49 +00:00
Jean-Philippe Lang 4ebdcf13db Add named routes for attachments and use route helpers in #link_to_attachment.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11187 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-14 20:44:48 +00:00
Jean-Philippe Lang f607a7a023 Use route helper in #link_to_message.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11186 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-14 19:22:09 +00:00
Jean-Philippe Lang b41b738aa4 Removed deprecated call from examples.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11185 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-14 19:18:52 +00:00
Jean-Philippe Lang 1da158edcf Use route helper in #link_to_project.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11184 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-14 19:16:29 +00:00
Jean-Philippe Lang 9a80e118b9 Add links to projects in Group projects list (#12843).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11183 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-14 17:40:51 +00:00
Toshi MARUYAMA 5ea7abcf83 Traditional Chinese translation updated by ChunChang Lo (#12831)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11182 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-13 16:10:41 +00:00
Toshi MARUYAMA c8bef6d2d3 use "UTF-16LE" instead of "UTF-16" on Ruby 1.9.2 due to test failure (#12787)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11181 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-13 01:50:14 +00:00
Toshi MARUYAMA c363fc47f3 fix typo of attachments controller test names
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11180 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-13 00:43:36 +00:00
Toshi MARUYAMA 58dfbde1ea fix test failures (#12787)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11179 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-13 00:43:24 +00:00
Jean-Philippe Lang 45f870cb53 Encoding::InvalidByteSequenceError may be raised even if encoding is valid (#12787).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11178 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-12 22:34:00 +00:00
Jean-Philippe Lang ff53a9cfe1 Don't use Iconv with ruby1.9 (#12787).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11177 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-12 21:27:36 +00:00
Jean-Philippe Lang e224d50408 Removed useless require 'iconv' (#12787).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11176 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-12 20:36:22 +00:00
Toshi MARUYAMA 926a7c1e50 German translation updated by Daniel Felix (#12819)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11175 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-12 13:26:28 +00:00
Jean-Philippe Lang e18d0e268d Makes issue custom fields available as timelog columns (#1766).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11174 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-12 13:09:06 +00:00
Jean-Philippe Lang a9e81b6b84 Filling locales (#10191).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11173 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-12 12:45:37 +00:00
Jean-Philippe Lang 14b09361e4 Adds issue custom fields to time entries filters (#10191).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11171 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-12 12:38:45 +00:00
Toshi MARUYAMA cd9923e391 Swedish translation updated by Nicklas Holm (#12818)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11170 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-12 11:30:58 +00:00
Jean-Philippe Lang e396a0eebe Copyright for 2013 (#12788).
Patch by Daniel Felix.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11169 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-12 09:29:31 +00:00
Jean-Philippe Lang bf2fb5d535 Adds a message about disabling multiple values on custom field form (#12251).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11168 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-12 09:27:03 +00:00
Jean-Philippe Lang 5c1039a69e Ability to uncheck "Multiple values" for existing custom fields (#12251).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11167 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-12 09:12:09 +00:00
Jean-Philippe Lang 44ceb513ed Plugins cannot route wiki page sub-path (#12749).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11166 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-11 17:42:31 +00:00
Toshi MARUYAMA 3716a5c62f Swedish translation changed by Nicklas Holm (#12810, #12809)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11164 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-11 12:12:06 +00:00
Toshi MARUYAMA 92d1ac6f65 Swedish translation updated by Nicklas Holm (#12809)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11163 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-11 12:11:41 +00:00
Toshi MARUYAMA 32fe21341f Serbian translation changed by Miodrag Milic (#12806, #12800)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11161 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-11 07:02:49 +00:00
Toshi MARUYAMA 4a71be4a11 Serbian translation updated by Miodrag Milic (#12800)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11160 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-11 07:02:36 +00:00
Jean-Philippe Lang 956239fc85 Fixed: Cannot edit a wiki section which title starts with a tab (#12799).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11159 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-10 22:05:22 +00:00
Jean-Philippe Lang 18061b641f Code cleanup (#12801).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11158 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-10 21:40:04 +00:00
Jean-Philippe Lang d0ffc0575a Fixed that viewing the history of a wiki page with attachments raises an error (#12801).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11157 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-10 21:38:11 +00:00
Jean-Philippe Lang a103e0cd26 Changes for 2.2.1 release.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11146 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-09 13:32:39 +00:00
Toshi MARUYAMA 4c6a0535fc Upgrade to Rails 3.2.11
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11140 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-08 22:52:00 +00:00
Jean-Philippe Lang 9394d739b1 Deprecation warnings (#12774).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11139 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-08 20:18:12 +00:00
Jean-Philippe Lang b29d74f9d5 Workaround for #12750.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11138 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-08 20:02:53 +00:00
Jean-Philippe Lang cc47ccb1c2 Check if index exists before removing it (#12713).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11137 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-06 14:46:51 +00:00
Jean-Philippe Lang 98c8212d71 Don't compute version start date if due_date is nil.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11136 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-06 14:05:55 +00:00
Jean-Philippe Lang 8ee0b52d59 Gantt perf: fixed that Project#start_date and #due_date run way too much queries.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11135 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-06 14:03:49 +00:00
Jean-Philippe Lang 114537530f Removed debug messages.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11134 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-06 13:29:25 +00:00
Jean-Philippe Lang fc19b180c8 Fixed that previews are broken by r10957 (#12642).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11133 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-06 13:26:25 +00:00
Toshi MARUYAMA d9ec03493d More specific message for project identifier in Japanese (#9225)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11132 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-06 12:18:01 +00:00
Toshi MARUYAMA 7e4999ecdb Japanese "notice_account_register_done" translation updated by Takeshi Yaegashi (#12754)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11131 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-06 12:04:14 +00:00
Jean-Philippe Lang 20ecf57fba More specific message for project identifier (#9225).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11130 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-06 11:46:51 +00:00
Jean-Philippe Lang 062b003deb Generate project identifier automatically with JavaScript (#9225).
Based on Jan Schulz-Hofen's patch.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11129 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-06 11:41:37 +00:00
Jean-Philippe Lang d2785d680d Test fails when run at the beginning of the day.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11128 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-06 09:54:24 +00:00
Toshi MARUYAMA 4bc2805c4a remove trailing white-spaces from app/models/mail_handler.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11127 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-06 09:32:42 +00:00
Jean-Philippe Lang 582dcf4b36 Fixed that macros with uppercase letters can not be called (#12744).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11126 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-05 23:11:35 +00:00
Jean-Philippe Lang 45c93340b7 Negative estimated hours should not be valid (#12735).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11125 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-05 16:34:41 +00:00
Jean-Philippe Lang 3e14c3017c Adds a custom validator for dates (#12736).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11124 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-05 16:09:15 +00:00
Jean-Philippe Lang 6ed7e091df Adjust test for r11120 (#3436).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11123 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-05 16:04:21 +00:00
Jean-Philippe Lang 7c2490c6fc Login link unexpected logs you out (#12611).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11122 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-05 13:53:18 +00:00
Jean-Philippe Lang d56f916a0e Store the other issue in a variable (#10916).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11121 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-05 13:23:33 +00:00
Jean-Philippe Lang f9325193be Only process issues that have relations.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11120 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-05 12:41:24 +00:00
Jean-Philippe Lang 59ddbf8c09 Use JSON so we don't have to parse data-rels manually (#3436).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11119 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-05 12:34:20 +00:00
Jean-Philippe Lang 601148c5b1 Show precedes/follows and blocks/blocked relations on the Gantt diagram (#3436).
Based on Toshi MARUYAMA's patch.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11118 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-05 12:28:34 +00:00
Jean-Philippe Lang 9adb0c61a9 Make sure that dates are stored as YYYY-MM-DD in journal details (#12713).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11117 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-04 15:38:52 +00:00
Jean-Philippe Lang 9a66463ff8 Prevent sqlserver adapter from breaking the sub-query (#12713).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11116 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-04 10:08:29 +00:00
Jean-Philippe Lang a8083fb9a8 Pass the order option as an array to satisfy sqlserver adapter (#12713).
Unlike other adapters, the sqlserver adapter processes the order option and wipes it when using functions.
Here we can see a "ASC" inserted in the COALESCE call:

irb(main):001:0> Issue.order("coalesce(estimated_hours, 0), id").to_sql
=> "SELECT [issues].* FROM [issues] ORDER BY coalesce(estimated_hours ASC, 0) ASC, id ASC"

This does not happen when passing the order SQL fragments separately.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11115 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-04 10:04:25 +00:00
Jean-Philippe Lang 0337d9abc3 Use activerecord-jdbc-adapter 1.2.5.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11114 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-04 09:00:55 +00:00
Jean-Philippe Lang 9613a13b10 Deprecates Version#*_pourcent in favour of #*_percent (#12724).
Patch by Daniel Felix.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11113 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-04 08:30:25 +00:00
Jean-Philippe Lang 9c698157f4 Check permissions before the extra condition for displaying a menu item (#12721).
Patch by Daniel Ritz.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11112 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-04 08:21:33 +00:00
Toshi MARUYAMA 3bf6f8d7ff remove trailing white-space from app/controllers/wiki_controller.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11110 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-04 01:11:33 +00:00
Jean-Philippe Lang d264911f14 Upgrade to Rails 3.2.10.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11109 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-03 22:54:33 +00:00
Jean-Philippe Lang 902d4bcf1c Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11108 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-03 13:59:15 +00:00
Jean-Philippe Lang 03329b5d4d Use joins instead of sub-queries (#12713).
Sub-queries in group by are not supported by SQLServer.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11107 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-03 13:57:27 +00:00
Jean-Philippe Lang 24ec41f7d4 A column has been specified more than once in the order by list (#12713).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11106 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-03 13:40:50 +00:00
Jean-Philippe Lang 503933c585 Don't do any query if id is not present.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11105 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-03 13:39:04 +00:00
Jean-Philippe Lang e4f0b9a9f9 Fixed fixtures.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11104 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-03 13:38:22 +00:00
Jean-Philippe Lang 77f6b404fa Make sure we don't cast an empty string to numeric (#12713).
SQLServer evaluates the CAST condition even if the <> '' condition is false.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11103 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-03 13:33:16 +00:00
Jean-Philippe Lang d82159bcf5 Use joins instead of sub-queries in group by/sort by when using custom fields (#12713).
Sub-queries in group by are not supported by SQLServer.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11102 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-03 12:28:50 +00:00
Jean-Philippe Lang 049eaeb776 Repository changesets are already sorted by committed_on DESC (#12713).
SQLServer raises an error because committed_on is specified twice in the order by list.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11101 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-03 11:40:39 +00:00
Jean-Philippe Lang 8b08c1a534 Prevents position to be specified more than once in the order by list which is not supported by SQLServer (#12713).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11100 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-03 11:37:07 +00:00
Jean-Philippe Lang dd7d54b3a1 SQLServer: rule is a reserved keyword (#12713).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11099 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-03 11:21:45 +00:00
Jean-Philippe Lang 0135dc504a SQLServer: The size (60) given to the type 'decimal' exceeds the maximum allowed (#12713).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11098 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-03 11:21:03 +00:00
Jean-Philippe Lang 9c561f9124 SQLServer does not support changing the type of an indexed column (#12713).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11097 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-03 11:19:08 +00:00
Jean-Philippe Lang 3218b8204c Check that locale is well formed.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11096 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-03 11:12:41 +00:00
Jean-Philippe Lang 6f614c034f YAML.load_file returns a Hash with 3 keys with ruby 1.9.3p194 (2012-04-20) [i386-mingw32].
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11095 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-03 11:02:11 +00:00
Jean-Philippe Lang 5715f40b21 YAML.load_file fails with ruby 1.9.3p194 (2012-04-20) [i386-mingw32].
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11094 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-03 11:01:42 +00:00
Toshi MARUYAMA 524baaa9ca German translation restructured by Daniel Felix (#12708)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11092 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-02 16:30:58 +00:00
Toshi MARUYAMA 2ba7228b06 fix incorrect min_x_value of lib/SVG/Graph/TimeSeries.rb by r10439 (#12711, #11290)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11091 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-02 15:53:52 +00:00
Jean-Philippe Lang 64b98928c9 Typo in app/models/tracker.rb (#12707).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11090 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-02 13:02:20 +00:00
Jean-Philippe Lang 3644571d8a cannot load Java class com.mysql.jdbc.Driver error with jdbc-mysql 5.1.22.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11089 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-02 11:59:25 +00:00
Jean-Philippe Lang 01cbac3b74 Link to Wikipedia (#12691).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11088 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-02 07:50:38 +00:00
Jean-Philippe Lang a18f6ffb37 Icon for the textile help link.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11087 e93f8b46-1217-0410-a6f0-8f06a7374b81
2013-01-02 07:47:12 +00:00
Toshi MARUYAMA 758e07cd96 replace tabs to spaces at app/views/timelog/_form.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11086 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-27 03:09:56 +00:00
Jean-Philippe Lang 11977f08a7 Tests broken with activerecord-jdbc-adapter 1.2.3.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11085 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-26 14:16:42 +00:00
Jean-Philippe Lang c87f36d20b Log an error when trying to send an attachment that cannot be read.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11084 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-26 14:00:10 +00:00
Jean-Philippe Lang 6be315c1ff Update the issue subject when choosing an issue from the drop down menu.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11083 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-26 13:12:38 +00:00
Jean-Philippe Lang 48a51e60bc Adds an indicator to all autocomplete/search fields.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11082 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-26 12:01:11 +00:00
Jean-Philippe Lang 7606353ff9 Upgraded JQuery to 1.8.3 and JQuery UI to 1.9.2.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11081 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-26 11:47:51 +00:00
Jean-Philippe Lang 7b8ebb7e3f Auto-populate fields while creating a new user with LDAP (#10286).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11080 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-26 11:23:53 +00:00
Jean-Philippe Lang eba4efc9d0 Missing labels on auth_source edit form.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11079 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-24 10:42:37 +00:00
Jean-Philippe Lang b7d8913459 Code cleanup, use named routes.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11078 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-23 16:10:07 +00:00
Jean-Philippe Lang 4ac43ab876 Code cleanup, use named routes.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11077 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-23 15:55:57 +00:00
Jean-Philippe Lang 3ef7f5855e Renamed #_issues_path to #_project_issues_path.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11076 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-23 15:19:57 +00:00
Jean-Philippe Lang e921d70e53 Moved routes helper methods to an helper.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11075 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-23 15:18:39 +00:00
Jean-Philippe Lang 1528c719a4 Code cleanup, use named routes.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11074 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-23 15:12:57 +00:00
Jean-Philippe Lang 0927230a18 Adds route names for r11072.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11073 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-22 15:57:27 +00:00
Jean-Philippe Lang 8eea999ca6 Code cleanup, use named routes.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11072 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-22 15:57:07 +00:00
Jean-Philippe Lang ad246e81ad Code cleanup, use named routes.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11071 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-22 12:24:43 +00:00
Jean-Philippe Lang a4f989a5e0 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11070 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-22 10:57:01 +00:00
Jean-Philippe Lang 6c15812d96 Code cleanup, use named routes.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11069 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-22 10:40:32 +00:00
Jean-Philippe Lang bda9b98a56 Code cleanup, use named routes.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11068 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-22 10:30:42 +00:00
Jean-Philippe Lang cd437b7e1d Code cleanup, use named routes.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11067 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-22 10:00:00 +00:00
Jean-Philippe Lang 3976d5e740 Use #assert_select instead of #assert_tag.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11066 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-22 09:35:35 +00:00
Jean-Philippe Lang eecabc5bb0 Use #assert_select instead of #assert_tag.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11065 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-22 08:17:59 +00:00
Jean-Philippe Lang 7f74044854 "New issue" menu item should not link to copy form (#12652).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11064 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-21 21:17:21 +00:00
Jean-Philippe Lang 94d9172634 Changed revision regexp to make source: links accept a branch.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11063 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-21 20:59:35 +00:00
Jean-Philippe Lang 852b336f5e Adds CSS classes on pagination links.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11062 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-21 20:58:55 +00:00
Toshi MARUYAMA b4aab7b375 remove trailing white-spaces from app/models/issue_relation.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11061 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-21 04:52:58 +00:00
Toshi MARUYAMA 77a974b4ee Russian "about_x_hours" and "x_hours" translation changed by Mikhail Velkin (#12645)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11060 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-20 05:17:55 +00:00
Toshi MARUYAMA f0c227613a remove unused "label_modification" i18n keys (#12645)
These keys were removed from app/views/repositories/revision.rhtml by r535
and app/views/repositories/revisions.rhtml by r381.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11059 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-20 03:57:29 +00:00
Toshi MARUYAMA 7c194ea59a remove unused "label_download" i18n keys (#12645)
These keys were removed from app/views/documents/show.rhtml by r1180.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11058 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-20 03:56:53 +00:00
Toshi MARUYAMA 7eb53ae50f remove unused "gui_validation_error" i18n keys (#12645)
These keys were removed from app/helpers/application_helper.rb by r2493.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11057 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-20 03:55:35 +00:00
Toshi MARUYAMA 5dacff5ccc add "few" and "many" to Russian "x_hours" (#12640)
Contributed by Mikhail Velkin.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11056 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-19 15:03:38 +00:00
Toshi MARUYAMA d42aaf2254 German "label_issues_by" changed by Daniel Felix (#12629)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11053 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-18 23:19:53 +00:00
Toshi MARUYAMA 82d4adc356 Russian "about_x_hours" translation changed by Mikhail Velkin (#12640)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11052 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-18 23:19:25 +00:00
Toshi MARUYAMA c3cfdfadfd Russian "x_hours" translation updated by Mikhail Velkin (#12630)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11051 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-18 22:50:53 +00:00
Toshi MARUYAMA c7fae614f0 Japanese "permission_commit_access" and "button_view" translation changed by Ian Walker (#12626)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11050 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-18 14:18:11 +00:00
Toshi MARUYAMA 16bddb9d24 replace tabs to spaces at Redmine.pm
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11049 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-18 14:17:27 +00:00
Jean-Philippe Lang 8396fff19b Changelog for 2.2.0 release.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11041 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-18 12:23:31 +00:00
Toshi MARUYAMA 9a1262846a Russian translation changed by Kirill Bezrukov (#12615, #12619)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11036 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-17 23:06:09 +00:00
Toshi MARUYAMA 2881a7245d Russian translation updated by Kirill Bezrukov (#12615)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11035 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-17 22:34:15 +00:00
Jean-Philippe Lang 352ec0e9e4 #pagination_links_each yields all links!
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11034 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-17 20:27:56 +00:00
Jean-Philippe Lang 1a58737004 Reset the page parameter when changing the number of items per page.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11033 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-17 20:20:56 +00:00
Jean-Philippe Lang 7f152d3485 Makes #per_page_links take a paginator.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11032 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-17 20:19:48 +00:00
Jean-Philippe Lang 56669f9b13 Split #per_page_links helper and moved test to specific test case.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11031 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-17 20:17:52 +00:00
Jean-Philippe Lang ab3330a945 All spaces after links.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11030 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-17 19:39:32 +00:00
Jean-Philippe Lang 7143bd6d27 Makes #pagination_links_full accept a block for building custom links.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11029 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-17 19:38:17 +00:00
Jean-Philippe Lang 42d3ec3a59 Display 25 items.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11028 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-17 18:24:06 +00:00
Jean-Philippe Lang 85fb937a4e Use scoped models for pagination.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11027 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-17 18:23:30 +00:00
Jean-Philippe Lang 1cf379f370 Replaces the classic_pagination plugin with a simple pagination module.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11026 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-17 18:21:24 +00:00
Toshi MARUYAMA dfe2b6fbe9 Dutch translation updated (#12614)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11022 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-17 11:49:46 +00:00
Toshi MARUYAMA dd26ac3038 code cleanup gantt_helper.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11021 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-17 07:14:26 +00:00
Toshi MARUYAMA 44413d3db7 Norwegian translation changed by Ketil Mehl (#12605, #12608)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11015 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-16 06:37:02 +00:00
Toshi MARUYAMA 341431d44a Norwegian translation for 1.4-stable updated by Ketil Mehl (#12605)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11014 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-16 06:36:49 +00:00
Toshi MARUYAMA 1538ab894b Japanese translation updated by Go MAEDA (#12606)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11013 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-16 05:44:04 +00:00
Toshi MARUYAMA b5820ce54f Japanese translation for 2.2-stable updated (#12607)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11012 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-16 05:43:50 +00:00
Jean-Philippe Lang ccb886b715 Verifies that the param is a Hash.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11011 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-15 10:03:52 +00:00
Jean-Philippe Lang 39e7bab2b9 Save the selected file just in case uploading stuff fails/is not supported.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11010 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-15 10:03:34 +00:00
Toshi MARUYAMA 0d86303e3f Korean translation updated by Jongwook Choi (#12602)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10999 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-15 00:01:54 +00:00
Toshi MARUYAMA 301d7e7cb1 German translation updated by Daniel Felix (#10191)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10998 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-14 14:47:46 +00:00
Etienne Massip bc51058a7c Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10997 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-13 18:43:34 +00:00
Jean-Philippe Lang 7775f86a69 Code cleanup in AuthSource controller and views.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10996 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-13 15:04:11 +00:00
Jean-Philippe Lang c31f498ba6 Code cleanup: implement Plugin#to_param for generating routes.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10995 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-13 13:52:56 +00:00
Jean-Philippe Lang c93fccc84a Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10994 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-13 13:43:01 +00:00
Jean-Philippe Lang d46a0a3a4f NoMethodError: private method `now' called for DateTime:Class error in tests with ruby < 1.9.3 (#5298).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10993 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-13 13:18:41 +00:00
Jean-Philippe Lang 0a773bcbb3 Fixed that validation fails when receiving an email with list custom fields (#12400).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10992 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-13 13:14:46 +00:00
Jean-Philippe Lang b99a6f11f3 Fixed: clicking journal edit multiple times shows multiple forms (#12568).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10991 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-13 12:42:10 +00:00
Jean-Philippe Lang c99b638d61 Store attachments in subdirectories (#5298).
Existing files can be moved to their target subdirectories using rake redmine:attachments:move_to_subdirectories.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10990 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-13 12:07:19 +00:00
Toshi MARUYAMA d0bbaef308 remove trailing white-spaces from public/javascripts/attachments.js
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10989 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-12 10:23:08 +00:00
Jean-Philippe Lang cabfece11b Use browser language as default when registering.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10988 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-12 06:05:35 +00:00
Jean-Philippe Lang 24be0551cc Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10987 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-11 20:38:26 +00:00
Jean-Philippe Lang 5dd7467061 Fixed duplicate test name.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10986 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-11 20:14:39 +00:00
Jean-Philippe Lang 8c7b6012f5 Removed unused code.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10985 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-11 20:09:16 +00:00
Jean-Philippe Lang ec7c512693 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10984 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-11 19:42:12 +00:00
Jean-Philippe Lang 8ab9215ea8 Use named routes in controllers.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10983 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-11 19:39:47 +00:00
Jean-Philippe Lang 60d06d8c17 Removed temp file.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10982 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-11 17:51:48 +00:00
Jean-Philippe Lang 0b96094680 Use named routes in controllers.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10981 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-11 17:51:30 +00:00
Jean-Philippe Lang cf66561b1e Routes cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10980 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-11 17:51:20 +00:00
Jean-Philippe Lang 228414f777 Moved IssueRelations to IssueRelation::Relations.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10979 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-10 21:59:01 +00:00
Jean-Philippe Lang 42b6f8365a Moved javascript include tag to head.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10978 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-10 20:19:26 +00:00
Jean-Philippe Lang ef25210aca Merged ajax_upload branch (#3957).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10977 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-10 20:09:41 +00:00
Etienne Massip 2304f5d42c Fixed notes preview in issue history broken and hidden by a broken test.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10975 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-10 19:29:21 +00:00
Jean-Philippe Lang aba07a860f Rescue Query::StatementInvalid in TimelogController.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10973 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-09 21:13:26 +00:00
Jean-Philippe Lang 0ce6eb9285 Makes time entry custom fields available for display on the time entries list (#1766).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10972 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-09 21:03:30 +00:00
Jean-Philippe Lang 60088ed5a3 Adds filters for custom fields related to the project and user of time entries (#10191).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10971 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-09 19:25:03 +00:00
Jean-Philippe Lang 9dc07d4790 Adds filters for regular/custom fields to the time entries list/report (#10191).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10970 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-09 19:18:57 +00:00
Jean-Philippe Lang 093ecdfc73 Fixed syntax for ruby1.8.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10969 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-09 18:46:02 +00:00
Jean-Philippe Lang d6ecfcf50c Rename the Member column to User on the time entries list.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10968 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-09 18:09:44 +00:00
Jean-Philippe Lang f8895a7cdd Adds TimeEntryQuery for listing time entries.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10967 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-09 17:57:18 +00:00
Jean-Philippe Lang 10998c9bae Moved build_query_from_params helper to Query#build_from_params.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10966 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-09 15:11:00 +00:00
Jean-Philippe Lang eb1829e739 Moves issue specific code to IssueQuery.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10965 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-09 14:44:28 +00:00
Jean-Philippe Lang ab066317e6 Adds STI to Query model. Issue queries are now IssueQuery instances.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10964 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-09 14:10:49 +00:00
Jean-Philippe Lang fb9a87f53e Use inheritable class attributes in Query model.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10963 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-09 13:19:32 +00:00
Jean-Philippe Lang 8ead410f98 Removed conditions on HTTP methods.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10962 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-08 11:31:29 +00:00
Jean-Philippe Lang 0bd70d4680 Use \A and \z in validation regexps.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10961 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-08 11:06:53 +00:00
Jean-Philippe Lang 147e7a8d61 Use \A and \z in validation regexps.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10960 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-08 10:59:31 +00:00
Jean-Philippe Lang 4c6dfdf95f Cleanup dependencies in Project model.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10959 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-08 10:45:34 +00:00
Jean-Philippe Lang df0b91e238 Moved user status constants to Principal model.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10958 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-08 10:44:42 +00:00
Jean-Philippe Lang 2ebcc6d960 Specifies HTTP methods for all routes.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10957 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-08 10:28:29 +00:00
Jean-Philippe Lang 5c407a8c40 Fixed that issues grouped by custom field is broken in PDF export (#12513).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10956 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-08 09:45:38 +00:00
Jean-Philippe Lang 1bcff510b1 Don't use jruby-openssl with JRuby 1.7.0 (#12228).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10955 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-08 09:22:46 +00:00
Jean-Philippe Lang 00d16d07de MailHandler: exit with 75 when a SystemCallError is raised (#12528).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10954 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-08 09:14:06 +00:00
Jean-Philippe Lang cf69c2da21 Don't force english language for default admin account (#12485).
Contributed by Go MAEDA.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10953 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-08 08:53:09 +00:00
Jean-Philippe Lang 0e30724d66 Group events in the activity view (#12542).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10951 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-08 08:24:01 +00:00
Jean-Philippe Lang 7222e4012d Rewrites named scopes with ARel queries.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10950 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-07 17:59:20 +00:00
Jean-Baptiste Barth 4896d5c7e8 Use lambda form in model scopes (#12499)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10949 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-07 10:12:47 +00:00
Jean-Philippe Lang 8201761e77 Adds an option for displaying the issue description on the issue list (#3447).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10948 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-06 17:48:19 +00:00
Toshi MARUYAMA 43fb321195 Lithuanian translation updated by Egidijus Zideckas (#12514)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10946 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-06 05:11:36 +00:00
Jean-Philippe Lang 3e4b4ffd9a Redmine::Scm::Base.all should return an empty array instead of nil when no SCM was added.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10945 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-05 22:00:02 +00:00
Jean-Philippe Lang 0878be4e0c Prevents redmine/scm/base from being reloaded in dev mode (#12097).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10944 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-05 21:59:00 +00:00
Toshi MARUYAMA d7229d8f9d remove trailing white-spaces from application.css
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10943 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-05 09:58:26 +00:00
Toshi MARUYAMA ee7685670d remove trailing white-space from app/models/issue_category.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10941 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-04 04:22:59 +00:00
Toshi MARUYAMA 7082e1db9d Bulgarian "button_submit" translation changed by Ivan Cenov (#12494)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10940 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-04 03:36:12 +00:00
Jean-Philippe Lang 33549495c9 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10939 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-03 23:03:33 +00:00
Jean-Philippe Lang 5dbefbc40d Removed unused Redmine::About class.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10938 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-03 22:33:08 +00:00
Jean-Philippe Lang 46fe61d51e Adds tests for when showing/deleting an invalid issue.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10937 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-03 22:29:59 +00:00
Jean-Philippe Lang 4cc4e8bfd3 Functional tests cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10936 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-03 22:23:23 +00:00
Jean-Philippe Lang 349049a539 Test case cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10935 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-03 22:07:43 +00:00
Jean-Philippe Lang 127a2508fa Add a test for my page with all blocks.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10934 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-03 22:06:04 +00:00
Jean-Philippe Lang 2844e90902 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10933 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-03 21:52:32 +00:00
Jean-Philippe Lang e9018553e5 Removed unused helper.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10932 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-03 21:46:11 +00:00
Jean-Philippe Lang ea296a109a Replaces find(:first/:all) calls.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10931 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-03 21:30:10 +00:00
Jean-Philippe Lang a7023dfa9b Replaces find(:first) calls.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10930 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-03 20:55:04 +00:00
Jean-Philippe Lang 738cf2e187 Replaces find(:first) calls in migrations.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10929 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-03 18:25:57 +00:00
Jean-Philippe Lang 31c33f462d Replaces find(:first) calls.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10928 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-03 18:21:32 +00:00
Jean-Philippe Lang 013c6fe009 Replaces find(:all) calls in acts_as_searchable.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10927 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-02 22:13:11 +00:00
Jean-Philippe Lang 30787e9cd2 Preserve the "from" parameter in activity links.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10926 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-02 21:41:03 +00:00
Jean-Philippe Lang 85b5b1c7f0 Replaces find(:all) calls.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10925 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-02 21:28:19 +00:00
Jean-Philippe Lang b4438b29d6 Replaces find(:all) calls in classic_pagination.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10924 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-02 21:21:28 +00:00
Jean-Philippe Lang 7a40e309e4 Restores acts_as_tree instance methods removed in r10919.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10923 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-02 21:20:27 +00:00
Jean-Philippe Lang 9230628953 Adds helpers for retrieving my page data.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10922 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-02 21:08:03 +00:00
Jean-Philippe Lang 45ea24ecad Replaces find(:all) calls.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10921 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-02 20:43:16 +00:00
Jean-Philippe Lang 5cb56fd1e4 Replaces find(:all) calls.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10920 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-02 20:42:58 +00:00
Jean-Philippe Lang 282a13d6ee Replaces acts_as_tree #roots class method with a scope.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10919 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-02 20:41:03 +00:00
Jean-Philippe Lang abd921736b Replaces find(:all) calls.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10918 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-02 20:28:37 +00:00
Jean-Philippe Lang 536747b747 Replaces find(:all) calls.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10917 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-02 20:23:48 +00:00
Jean-Philippe Lang 96fca0b08f Replaces find(:all) calls.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10916 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-02 19:16:32 +00:00
Jean-Philippe Lang bd10a71217 Load RMagick before the gantt helper (#12097).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10915 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-02 19:15:52 +00:00
Jean-Philippe Lang 5b21efd4a4 Replaces find(:all) calls.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10914 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-02 19:09:42 +00:00
Jean-Philippe Lang 1951c6a3fd Removed unused instance variable.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10913 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-02 19:00:00 +00:00
Jean-Philippe Lang def118b42a Fixed dependency loading for when running in dev mode (#12097).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10912 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-02 18:32:29 +00:00
Jean-Philippe Lang 9507b448b2 Makes User.current thread safe (#12097).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10911 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-02 18:15:46 +00:00
Jean-Philippe Lang e821020394 Make the tests pass when config.threadsafe! is enabled (#12097).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10910 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-02 18:07:35 +00:00
Jean-Philippe Lang f474d1ff81 Explicitly load dependencies for when running with config.threadsafe! (#12097).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10909 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-02 18:06:06 +00:00
Jean-Philippe Lang ee3d6dbdbb Set version to 2.2.0.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10906 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-02 17:57:30 +00:00
Jean-Philippe Lang e97a3ab97b Fixed find_issues logic.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10905 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-02 10:25:30 +00:00
Jean-Philippe Lang 6e1ff5bba6 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10904 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-02 09:59:22 +00:00
Jean-Philippe Lang 88d5663ad2 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10903 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-01 17:57:30 +00:00
Jean-Philippe Lang 16441b4938 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10902 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-01 16:25:20 +00:00
Jean-Philippe Lang 65d3bffad7 Moved duplicate #options_for_membership_project_select to ApplicationHelper.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10901 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-01 16:19:52 +00:00
Jean-Philippe Lang 4d71446791 Don't load all helpers.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10900 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-12-01 16:14:05 +00:00
Jean-Philippe Lang 0ef82b3dcf Removes textarea resizer in favour of built-in browser support.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10894 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-30 08:56:02 +00:00
Jean-Philippe Lang a1d156d794 Fixed that roles API should accept API auth for when authentication is required (#12472).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10893 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-30 07:48:47 +00:00
Toshi MARUYAMA a1119624c0 fix comment of RMagcik font configuration (#4787)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10892 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-28 11:00:57 +00:00
Toshi MARUYAMA 0a675c7c77 remove trailing white-spaces from app/models/repository.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10891 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-28 10:46:10 +00:00
Toshi MARUYAMA c7ee26b144 add configuration of RMagcik font for CJK (Chinese, Japanese and Korean) (#4787)
Contributed by Jun NAITOH.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10890 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-28 10:11:33 +00:00
Toshi MARUYAMA f4cf7bc6f5 code layout cleanup app/models/issue_relation.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10889 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-28 01:11:32 +00:00
Jean-Philippe Lang c3817e620f Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10888 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-27 22:16:33 +00:00
Jean-Philippe Lang 9a270c46c0 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10887 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-27 22:13:14 +00:00
Jean-Philippe Lang e43448f6ca Use 8+ characters long passwords in tests.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10886 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-27 21:52:38 +00:00
Jean-Philippe Lang 14e56006a1 Fixed that #extract_macro_options should not be greedy (#12451).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10885 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-27 19:59:33 +00:00
Jean-Philippe Lang bf5b6014f7 Set the default minimum password length to 8.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10884 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-27 19:27:21 +00:00
Jean-Philippe Lang 6c0f3cd5d4 Validate email only if changed.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10883 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-27 19:25:56 +00:00
Jean-Philippe Lang 04dcdb3290 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10882 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-27 19:24:22 +00:00
Jean-Philippe Lang 457f0bb337 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10881 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-27 19:21:21 +00:00
Jean-Philippe Lang 96e01c6d4a Fixed the behaviour for when rescheduling a parent task (#4590).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10880 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-24 15:09:51 +00:00
Jean-Philippe Lang fb9a2901e9 Fixed that autolinks and textile links ending with cyrilic characters are broken (#12397).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10879 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-24 14:20:01 +00:00
Jean-Philippe Lang b94c971755 Precede-Follow relation should move following issues earlier when rescheduling issue earlier (#4590).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10878 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-24 13:43:52 +00:00
Jean-Philippe Lang 29fc292b18 Respond with 404 instead of 500 when requesting a wiki diff with invalid versions (#12434).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10877 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-24 12:27:00 +00:00
Jean-Philippe Lang 845d7bc645 Updates for 2.1.4 release.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10874 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-24 09:34:42 +00:00
Jean-Philippe Lang cb24cafedc Removed duplicated test.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10869 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-23 17:53:47 +00:00
Jean-Philippe Lang dc68be983a Use Project.rebuild_tree! instead of .rebuild! in migration.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10868 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-23 17:53:12 +00:00
Jean-Philippe Lang 25c63ec747 Adds a Project.rebuild_tree! method to force the rebuild of the nested set.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10867 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-23 17:50:46 +00:00
Jean-Philippe Lang 13f5301c09 Fixed that Project.rebuild! sorts projects by id instead of name (#12431).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10866 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-23 17:39:38 +00:00
Jean-Philippe Lang be7895e04e Do not create projects in alphabetical order in nested set tests (#12431).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10865 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-23 17:36:04 +00:00
Toshi MARUYAMA 921ad01bde scm: git: change extra_report_last_commit type at unit test to string (#12409)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10862 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-21 23:34:27 +00:00
Jean-Philippe Lang d00cc4d9b5 Upgrade to Rails 3.2.9 (#12393).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10860 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-21 20:22:43 +00:00
Toshi MARUYAMA f6367b8ba7 scm: git: fix tests fail when extra_info is nil (#12409)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10857 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-21 08:17:56 +00:00
Toshi MARUYAMA 5d8d38aa60 scm: git: fix changesets aren't read after clear_changesets call (#12409)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10856 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-21 07:44:29 +00:00
Toshi MARUYAMA 7048f66619 svn propset svn:eol-style native to fixtures (#12399)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10853 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-21 05:43:36 +00:00
Toshi MARUYAMA 6740f441c4 fix non ASCII attachment filename encoding broken (MOJIBAKE) in receiving mail on Ruby 1.8 (#12399)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10852 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-21 05:37:22 +00:00
Toshi MARUYAMA adcf54a92b remove trailing white-space from app/controllers/trackers_controller.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10851 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-18 23:15:45 +00:00
Jean-Philippe Lang a829bfa755 Fixed that MailHandler raises an error when email has no subject header (#12396).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10850 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-18 23:09:45 +00:00
Jean-Philippe Lang f232f56d97 Adds copyright.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10847 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-18 18:21:16 +00:00
Jean-Philippe Lang 26b3e48545 Symbols can not be sorted with ruby1.8.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10846 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-18 18:19:48 +00:00
Jean-Philippe Lang 2d1e7ff829 Adds english names for several languages.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10845 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-18 18:16:14 +00:00
Jean-Philippe Lang a49de1c39d Cache languages names to avoid loading all translations files.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10844 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-18 18:01:24 +00:00
Jean-Philippe Lang 3739810afa Adds a custom i18n backend that lazily loads translations files.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10843 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-18 17:41:31 +00:00
Jean-Philippe Lang f36b3fff60 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10842 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-18 16:01:07 +00:00
Jean-Philippe Lang 46d27348fd Eager-load authors.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10841 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-18 14:37:37 +00:00
Jean-Philippe Lang 1ff8bbf080 Pins mysql gem to ~> 2.8.1.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10840 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-18 14:28:45 +00:00
Jean-Philippe Lang 628b3cde71 Removed unused i18n string (#8373).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10839 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-18 10:31:20 +00:00
Jean-Philippe Lang 5f36e1fff2 Removed the limit of 75 pages when exporting wiki pages (#12274).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10838 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-18 10:18:30 +00:00
Jean-Philippe Lang aa45516a02 Fixed that repository identifier may not be displayed in project settings (#12332).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10837 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-18 10:10:09 +00:00
Jean-Philippe Lang 3cf6a56b97 Fixed context menu for IE 7/8 (#12298).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10836 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-18 10:02:07 +00:00
Jean-Philippe Lang 98f225f6cd Updates for 2.1.3 release.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10831 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-17 12:49:08 +00:00
Jean-Philippe Lang 72ea1851b9 'None' grouped issue list section should be translated (#12358).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10829 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-17 11:18:54 +00:00
Jean-Philippe Lang 1c14dd35cf Fixes #requires_redmine comments (#12299).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10828 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-17 11:05:27 +00:00
Jean-Philippe Lang 4bd1e887d9 Makes Plugin#requires_redmine accept a range of versions (#12299).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10827 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-17 10:55:38 +00:00
Jean-Philippe Lang b3cf67cad4 Makes Plugin#requires_redmine accept only major and minor version (#12299).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10826 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-17 10:07:21 +00:00
Jean-Philippe Lang 19bd857790 Rewrites requires_redmine tests.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10825 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-17 09:54:56 +00:00
Jean-Philippe Lang dd96ef4248 Issue "Update" link broken focus (#12356).
Patch by Alexander Oryol.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10818 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-17 08:48:08 +00:00
Toshi MARUYAMA 70bcbd1404 replace non ASCII characters to hexadecimals at unit mail handler test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10814 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-16 06:48:46 +00:00
Toshi MARUYAMA 9f6cf296d1 svn propset svn:eol-style native to fixtures (#12375)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10813 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-16 06:26:43 +00:00
Toshi MARUYAMA 617cb7ac53 fix receiving mail subject broken which does not begin with encoding name (#12375)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10812 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-16 06:19:42 +00:00
Toshi MARUYAMA 1da74009cd add test of receiving mail subject begins with encoding name (#12375)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10811 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-16 05:25:18 +00:00
Jean-Philippe Lang 8b527ce247 Fixed version date validation (#12359).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10810 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-15 22:43:10 +00:00
Jean-Philippe Lang e9e5d2e072 Fixed new issue form rendering with IE8.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10806 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-15 19:59:14 +00:00
Toshi MARUYAMA fd41840434 Gemfile: remove rake
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10805 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-13 22:44:13 +00:00
Jean-Philippe Lang b880020527 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10804 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-13 22:15:47 +00:00
Jean-Philippe Lang 547b85c4ef Adds table name to the SQL clause used by Principale.like scope.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10803 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-13 22:13:39 +00:00
Jean-Philippe Lang d21cfe6bb4 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10802 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-13 22:03:42 +00:00
Jean-Philippe Lang ce04c41830 Fixed that Principal#like scope does not work with cyrillic characters and Postgresql (#12349).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10801 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-13 22:01:31 +00:00
Jean-Philippe Lang 37c590bfef Unpin rake version.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10800 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-13 18:10:04 +00:00
Toshi MARUYAMA b0b8352bc5 Gemfile: pin rake version 0.9.2.2
CI server tests fail.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10799 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-13 04:46:46 +00:00
Toshi MARUYAMA 37a600475c Gemfile: pin rake version 0.9
CI server tests fail.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10798 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-13 04:24:54 +00:00
Toshi MARUYAMA cb68851eac remove trailing white-space from app/controllers/timelog_controller.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10797 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-13 03:58:38 +00:00
Jean-Philippe Lang d6b1ad38a7 Adds a div that wraps everything except the footer.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10794 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-08 18:26:48 +00:00
Jean-Philippe Lang a17f4c8375 Make sure that attachments are created in the same order they were selected (#12310).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10793 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-07 18:45:56 +00:00
Jean-Philippe Lang 00927f58af Make sure that #attachments returns attachments with same timestamp in the order they were created (#12310).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10792 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-07 18:06:42 +00:00
Toshi MARUYAMA 4ef90b6096 fix Lithuanian numeral translation (#12316)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10791 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-06 22:54:40 +00:00
Jean-Philippe Lang d6e8a2d4e6 Fixed misleading German translation for "Registered" (#12294).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10790 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-05 16:47:14 +00:00
Jean-Philippe Lang c8b722456c Fixed that watchers receive notifications for private comments without permission (#12286).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10789 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-05 15:49:07 +00:00
Jean-Baptiste Barth 7f3cc6e38b Fixed some more test/integration/*_test.rb breaking when run alone (#12285)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10788 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-01 22:47:59 +00:00
Jean-Baptiste Barth 7d9c45fb8a Fixed some more test/functional/*_test.rb breaking when run alone (#12285)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10787 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-01 22:47:44 +00:00
Jean-Baptiste Barth 0beef88850 Fixed some more test/unit/*_test.rb breaking when run alone (#12285)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10786 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-01 22:47:25 +00:00
Jean-Baptiste Barth ff9b3d3a06 Fixed test/functional/welcome_controller_test.rb breaking when run alone (#12285)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10785 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-01 13:26:50 +00:00
Jean-Baptiste Barth 3ac94be04b Fixed test/functional/sessions_test.rb breaking when run alone (#12285)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10784 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-01 13:23:57 +00:00
Jean-Baptiste Barth 9280182bde Fixed test/functional/mail_handler_controller_test.rb breaking when run alone (#12285)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10783 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-01 13:20:42 +00:00
Jean-Baptiste Barth 68cd78f7cc Fixed test/functional/groups_controller_test.rb breaking when run alone (#12285)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10782 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-01 11:58:45 +00:00
Jean-Baptiste Barth 45e7c63fc4 Fixed test/unit/issue_category_test.rb breaking when run alone (#12285)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10781 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-01 10:29:55 +00:00
Jean-Baptiste Barth 0eabfc5e72 Fixed test/unit/version_test.rb breaking when run alone (#12285)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10780 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-01 10:23:49 +00:00
Jean-Baptiste Barth 6e190a76fb Fixed test/unit/watcher_test.rb breaking when run alone (#12285)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10779 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-01 10:22:37 +00:00
Jean-Baptiste Barth e00b4acf1e Use Rake::TestTask#pattern for plugin tests instead of #test_files (#11534)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10778 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-11-01 09:40:40 +00:00
Toshi MARUYAMA 511e46e978 Bulgarian translation updated by Ivan Cenov (#12280)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10777 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-31 22:55:51 +00:00
Toshi MARUYAMA 8a66522314 fix unit issue test fails on Wednesday
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10776 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-31 10:20:59 +00:00
Toshi MARUYAMA b49948d880 Traditional Chinese translation updated by ChunChang Lo (#12271)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10775 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-31 09:05:20 +00:00
Toshi MARUYAMA fdff662f4e German translation updated by Daniel Felix (#12257)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10774 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-30 22:49:13 +00:00
Toshi MARUYAMA 7158a51add Japanese translation updated by Go MAEDA (#12256)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10773 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-30 22:48:43 +00:00
Jean-Philippe Lang b5f8290f4c Fixed source indentation (#8106).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10772 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-30 15:17:11 +00:00
Jean-Philippe Lang f909a8c006 Issues by Category should show tasks without category (#8106).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10771 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-30 14:24:33 +00:00
Jean-Philippe Lang 399223daba New user name format: firstname + first letter of lastname (#12085).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10770 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-30 08:40:12 +00:00
Jean-Philippe Lang cdc8944a89 Filling locales (#11426).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10769 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-30 08:21:54 +00:00
Jean-Philippe Lang d62ef6b9b1 Changes how relative date filters work and adds specific filters for filtering dates in past/next n days (#11426).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10768 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-30 08:21:15 +00:00
Jean-Philippe Lang b9c72bf590 Validate value for date filters.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10767 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-30 07:53:14 +00:00
Toshi MARUYAMA cb7ab9bc0c Bulgarian translation updated by Ivan Cenov (#12254)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10766 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-30 07:47:09 +00:00
Jean-Philippe Lang 9f148e098b Ability to sort issues by grouped column (#3511).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10765 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-29 18:32:41 +00:00
Toshi MARUYAMA 1fc324b74c German Translation updated by Daniel Felix (#12237)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10763 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-29 14:44:16 +00:00
Toshi MARUYAMA 69b5e929af Japanese translation updated by Go MAEDA (#12246)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10762 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-29 13:23:14 +00:00
Jean-Philippe Lang ea0e3849e3 Limit resizing of textare vertically.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10761 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-29 13:11:29 +00:00
Jean-Philippe Lang 96b7c041c8 German Translation updated by Daniel Felix.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10758 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-29 12:12:25 +00:00
Jean-Philippe Lang e74986391a German Translation updated by Daniel Felix.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10757 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-29 12:11:24 +00:00
Jean-Philippe Lang c00084b80b Display non working days on gantt image according to settings (#2161).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10751 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-29 10:23:59 +00:00
Jean-Philippe Lang 1f55907f83 Display non working days on gantt according to settings (#2161).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10750 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-29 10:21:00 +00:00
Jean-Philippe Lang 5fe4aae7ba Non working days is an array of strings (#2161).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10749 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-29 10:19:40 +00:00
Jean-Philippe Lang 6b2e0333ca Filling locales (#2161).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10748 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-29 10:07:07 +00:00
Jean-Philippe Lang b71355f10b Ignore non-working days when rescheduling an issue (#2161).
Weekly non-working days can be configured in application settings (set to saturday and sunday by default).

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10747 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-29 10:06:30 +00:00
Jean-Philippe Lang 48d83884c3 Hard-coded "Back" on 404 view (#12231).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10745 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-28 20:42:18 +00:00
Jean-Philippe Lang fe690dcf20 Use page parameter instead of p for pagination.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10744 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-28 20:27:50 +00:00
Jean-Philippe Lang beb2610650 REST API for deleting wiki pages (#7082).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10743 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-28 20:17:38 +00:00
Toshi MARUYAMA 625eebb720 code cleanup scm_iconv (#12228)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10742 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-28 11:39:43 +00:00
Toshi MARUYAMA 123d2b318f fix scm_iconv local variable name (#12228)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10741 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-28 07:12:23 +00:00
Toshi MARUYAMA 5a2c80cb48 use String#encode at scm_iconv on Ruby 1.9 (#12228)
Unit git adapter test fails on JRuby 1.7.

<pre>
Failure:
  <"test-Ü-2.txt">("UTF-8") expected but was
  <"test-\xC3\x9C-2.txt">("ASCII-8BIT").

  diff:
  - test-Ü-2.txt
  ?      ^
  + test-Ü-2.txt
  ?      ^^
test_entries_latin_1_files(GitAdapterTest)
test/unit/lib/redmine/scm/adapters/git_adapter_test.rb:468:in `test_entries_latin_1_files'
     465:         assert entries1
     466:         assert_equal 3, entries1.size
     467:         f1 = entries1[1]
  => 468:         assert_equal "test-#{@char_1}-2.txt", f1.name
     469:         assert_equal "latin-1-dir/test-#{@char_1}-2.txt", f1.path
     470:         assert_equal 'file', f1.kind
     471:       end
</pre>

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10740 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-28 06:19:29 +00:00
Toshi MARUYAMA a71ff93f8f fix JRuby 1.6 tests fail on CI server (#12228)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10739 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-28 03:59:09 +00:00
Toshi MARUYAMA 49f2d4729d prevent rake task error on JRuby 1.7 (#12228)
Following is "rake db:migrate RAILS_ENV=test" output
on jruby 1.7.0 (1.9.3p203) 2012-10-22 ff1ebbe on OpenJDK Client VM 1.6.0_18-b18 [linux-i386].

<pre>
ArgumentError: file not found: db:migrate
   non_options at /xxxxx/rubies/jruby-1.7.0/lib/ruby/1.9/test/unit.rb:167
          map! at org/jruby/RubyArray.java:2387
   non_options at /xxxxx/rubies/jruby-1.7.0/lib/ruby/1.9/test/unit.rb:146
   non_options at /xxxxx/rubies/jruby-1.7.0/lib/ruby/1.9/test/unit.rb:207
  process_args at /xxxxx/rubies/jruby-1.7.0/lib/ruby/1.9/test/unit.rb:52
          _run at /xxxxx/rubies/jruby-1.7.0/lib/ruby/1.9/minitest/unit.rb:891
           run at /xxxxx/rubies/jruby-1.7.0/lib/ruby/1.9/minitest/unit.rb:884
           run at /xxxxx/rubies/jruby-1.7.0/lib/ruby/1.9/test/unit.rb:21
       autorun at /xxxxx/rubies/jruby-1.7.0/lib/ruby/1.9/test/unit.rb:326
      run_once at /xxxxx/rubies/jruby-1.7.0/lib/ruby/1.9/test/unit.rb:27
       autorun at /xxxxx/rubies/jruby-1.7.0/lib/ruby/1.9/test/unit.rb:325
</pre>

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10737 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-28 01:52:01 +00:00
Toshi MARUYAMA d840837563 remove trailing white-space from app/controllers/repositories_controller.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10736 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-28 01:12:00 +00:00
Toshi MARUYAMA ac75aad581 German translation enhancements by Daniel Felix (#12232)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10735 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-28 00:43:53 +00:00
Toshi MARUYAMA 176e239e23 German translation for trunk updated by Daniel Felix (#12232)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10734 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-28 00:43:25 +00:00
Toshi MARUYAMA 0932689ef6 German translation for 2.1-stable updated by Daniel Felix (#12232, #12235)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10733 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-28 00:42:36 +00:00
Jean-Philippe Lang 00736951cf Adds double quotes in mysql configuration example (#12229).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10729 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-27 08:50:33 +00:00
Jean-Philippe Lang 29a474b641 Wrap issue description and its contextual menu in a div (#12211).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10728 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-27 08:35:19 +00:00
Jean-Philippe Lang 8a2786c91e Fixes that test randomly fails.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10727 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-27 07:36:06 +00:00
Jean-Philippe Lang fb68f4703b Use textual CSS class for priorities in alternate theme (#12216).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10726 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-27 06:26:24 +00:00
Jean-Philippe Lang 2af516bd05 Use textual CSS class for priorities in alternate theme (#12216).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10725 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-27 06:25:41 +00:00
Jean-Philippe Lang 166cbfdb3c Adjusts tests for the css class added in r10720 (#12216).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10721 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-26 02:46:38 +00:00
Jean-Philippe Lang 113f8b5cf2 Adds a textual css class for issue priorities (#12216).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10720 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-26 01:25:23 +00:00
Jean-Philippe Lang a679d19709 Adds last edit comments on the wiki page (#7082).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10719 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-25 21:17:46 +00:00
Jean-Philippe Lang 03062394fc Adds ?include=attachments option when retrieving a wiki page with the REST API (#7082).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10718 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-25 20:44:37 +00:00
Jean-Philippe Lang eff874b29a REST API for creating/updating wiki pages (#7082).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10717 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-25 20:38:29 +00:00
Jean-Philippe Lang 9e31308720 REST API for retrieving wiki pages (#7082).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10716 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-25 19:44:04 +00:00
Jean-Philippe Lang b2e035fa96 Don't show confirmation message when disabled delete link in the context menu (#12199).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10715 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-24 21:24:40 +00:00
Jean-Philippe Lang 1c7e4bb7f0 Javascript syntax error (#12195).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10714 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-24 21:01:37 +00:00
Toshi MARUYAMA e0811bc80d scm: use nil instead of @rev at revision text box of "View all revisions" page
@rev is set as default branch at controller.
On Git, in most cases it is "master".
And it is set on revision text box of "View all revisions" page.
"master" branch is NOT revision, so clicking OK button causes error.
It is very confused.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10713 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-24 11:12:05 +00:00
Toshi MARUYAMA 60afbcd37f add tmp/thumbnails/* to .hgignore and .gitignore
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10712 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-24 11:11:38 +00:00
Toshi MARUYAMA c4ce048970 fix "Page not found" on OK button in SCM "View all revisions" page (#12196)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10709 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-24 09:24:30 +00:00
Toshi MARUYAMA 2beae77c58 backout r10707 (#12196)
fix "Page not found" on OK button in SCM "View all revisions" page.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10708 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-24 09:23:59 +00:00
Toshi MARUYAMA 440232a54d fix "Page not found" on OK button in SCM "View all revisions" page (#12196)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10707 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-24 07:59:16 +00:00
Jean-Philippe Lang 881a22d248 Fixed test case class name (#10852).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10706 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-23 21:24:38 +00:00
Jean-Philippe Lang 6cccdce06e Ability to delete a version from a wiki page history (#10852).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10705 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-23 18:45:14 +00:00
Toshi MARUYAMA 9e7f71080f add tmp/pdf directory (#12189)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10702 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-23 10:50:09 +00:00
Toshi MARUYAMA ff4a92a782 Simplified Chinese translation for trunk updated by Steven Wong (#12188)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10700 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-23 06:18:06 +00:00
Toshi MARUYAMA a829e381be Simplified Chinese translation for 2.1-stable updated by Steven Wong (#12188)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10699 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-23 06:17:39 +00:00
Toshi MARUYAMA 1db6a0f89c gantt: remove unused issues parameter from gantt_issue_compare method
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10698 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-23 00:17:05 +00:00
Toshi MARUYAMA 8975f9c235 Traditional Chinese translation updated by ChunChang Lo (#12176)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10696 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-22 08:13:37 +00:00
Toshi MARUYAMA 4ff3c9fdb5 partial backout r10263
Backout replacing shoulda context of test/unit/helpers/issues_helper_test.rb.
Test methods in shoulda context do not run on Ruby 1.8.7-p370.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10689 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-22 02:03:23 +00:00
Toshi MARUYAMA f188277ab2 backout r10253
Backout replacing shoulda context of test/unit/helpers/issues_helper_test.rb.
Test methods in shoulda context do not run on Ruby 1.8.7-p370.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10688 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-22 02:03:11 +00:00
Jean-Philippe Lang d66b3452db Wiki page versions routes cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10687 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-21 18:46:26 +00:00
Toshi MARUYAMA 9ec142713d Japanese translation updated by Go MAEDA (#12171)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10686 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-21 10:12:11 +00:00
Jean-Philippe Lang 61d8e8f1f4 Don't show watch, lock/unlock, delete links on previous wiki page versions.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10685 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-21 04:56:58 +00:00
Jean-Philippe Lang 9796d18609 Handle deleted wiki page versions (#10852).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10684 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-21 04:43:15 +00:00
Jean-Philippe Lang f09be68323 Adds cc and bcc to email log messages (#12090).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10683 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-21 03:38:54 +00:00
Jean-Philippe Lang 82eab51203 Bulgarian translation updated by Ivan Cenov (#12168).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10682 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-20 17:17:25 +00:00
Jean-Philippe Lang d22b57a27d Filling locales (#12167).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10681 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-20 15:01:44 +00:00
Jean-Philippe Lang d29fa4735b Adds a macro for inserting collapsed text (#12167).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10680 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-20 14:49:32 +00:00
Toshi MARUYAMA 0faab70be5 Lithuanian "label_in" translation updated by Gediminas Muižis (#12142)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10679 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-20 11:39:02 +00:00
Jean-Philippe Lang 251f263abd Let the attachment filename be specified on upload (#12125).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10678 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-18 21:06:35 +00:00
Jean-Philippe Lang 79c1ec7adc Reverts r10676 that broke a test.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10677 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-18 18:11:42 +00:00
Jean-Philippe Lang e7dfc30c2f Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10676 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-18 17:15:26 +00:00
Jean-Philippe Lang 9b702971bf Use named route.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10675 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-18 17:12:22 +00:00
Jean-Philippe Lang 2b4389466f Use named route.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10674 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-18 17:10:00 +00:00
Jean-Philippe Lang 7729178d9d Adds links to locked users when current user is admin.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10673 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-18 17:08:42 +00:00
Jean-Philippe Lang 50037b18c4 Adds a test for start date < due date validation.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10672 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-18 16:48:19 +00:00
Jean-Philippe Lang 1a9d482fc9 Code cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10671 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-18 16:47:41 +00:00
Jean-Philippe Lang 1737552eca Fixed that invalid start date is ignored (#12092).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10670 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-18 16:43:14 +00:00
Toshi MARUYAMA 9ff16dd411 remove duplicate keys from Lithuanian translation file (#12142)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10669 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-18 03:30:52 +00:00
Toshi MARUYAMA 59cf6dea86 Lithuanian translation updated by Gediminas Muižis (#12142)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10668 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-18 02:29:44 +00:00
Toshi MARUYAMA f293f82c3f remove field_is_in_chlog and label_change_log from locales which removed r3162
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10667 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-18 00:31:46 +00:00
Toshi MARUYAMA e764349a1b backout r10665
Removed field_is_in_chlog and label_change_log revision from locales is not r3147.
It is r3162.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10666 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-18 00:31:30 +00:00
Toshi MARUYAMA c3788674ff remove field_is_in_chlog and label_change_log from locales which removed r3147
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10665 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-17 23:39:19 +00:00
Jean-Philippe Lang d62b90db73 Makes enumerations available through the REST API.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10664 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-17 17:29:27 +00:00
Jean-Philippe Lang fcb22595d0 Use named route (#12113).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10663 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-17 17:01:07 +00:00
Jean-Philippe Lang ef1f14905b Use parent tracker as the default tracker when adding a subtask (#12113).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10662 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-17 17:00:24 +00:00
Jean-Philippe Lang b8fbb41d5f Adds a helper for displaying a link to add a subtask (#12113).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10661 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-17 16:58:44 +00:00
Jean-Philippe Lang 0a000921f8 Use a local variable.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10660 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-17 16:54:26 +00:00
Toshi MARUYAMA c945fe82b2 change Japanese translation of "admin" (#12117)
Contributed by Go MAEDA.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10659 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-17 09:16:26 +00:00
Jean-Philippe Lang 4b6b568635 Fixed that entering #nnn as parent task should validate (#11979).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10658 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-14 14:35:57 +00:00
Toshi MARUYAMA 5aaf9c734c svn propset svn:eol-style native extra/sample_plugin/test/integration/routing_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10657 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-13 16:29:12 +00:00
Toshi MARUYAMA ff2d374a14 add routing test to sample plugin
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10656 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-13 16:22:04 +00:00
Toshi MARUYAMA 9581afe060 code layout clean up test_should_not_be_able_to_assign_a_new_issue_to_a_locked_version of unit issue test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10655 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-13 11:20:55 +00:00
Toshi MARUYAMA 6ebfe54e6e code layout clean up test_assignable_versions of unit issue test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10654 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-13 11:20:31 +00:00
Toshi MARUYAMA 02c770968f code layout clean up test_should_not_be_able_to_assign_a_new_issue_to_a_closed_version of unit issue test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10653 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-13 11:20:06 +00:00
Toshi MARUYAMA 5ae73e3784 code layout clean up test_should_not_close_duplicated_issue of unit issue test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10652 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-13 11:19:39 +00:00
Toshi MARUYAMA d5abb11c0b code layout clean up test_should_close_duplicates of unit issue test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10651 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-13 11:19:12 +00:00
Toshi MARUYAMA 04ac60d891 code layout clean up test_should_not_call_after_project_change_on_creation of unit issue test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10650 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-13 11:18:45 +00:00
Toshi MARUYAMA eedad03141 code layout clean up test_read_only_attribute_names_for_multiple_roles_should_intersect_rules of unit issue test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10649 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-13 11:18:16 +00:00
Toshi MARUYAMA 8487a3e0e6 code layout clean up test_required_attribute_names_for_multiple_roles_should_intersect_rules of unit issue test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10648 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-13 11:17:43 +00:00
Toshi MARUYAMA a1b82c7650 code layout clean up test_should_be_able_to_assign_a_new_issue_to_an_open_version of unit issue test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10647 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-13 10:55:49 +00:00
Toshi MARUYAMA 93daf6865e code layout clean up test_required_attributes_should_be_validated of unit issue test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10646 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-13 10:55:09 +00:00
Toshi MARUYAMA 0df2c4a975 code layout clean up test_safe_attributes_should_accept_target_status_writable_fields of unit issue test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10645 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-13 10:54:27 +00:00
Toshi MARUYAMA 0cf44b976f code layout clean up test_new_statuses_allowed_to_should_return_all_transitions_for_admin of unit issue test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10644 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-13 10:53:44 +00:00
Toshi MARUYAMA f76de605a0 code layout clean up test_new_statuses_allowed_to of unit issue test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10643 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-13 10:53:05 +00:00
Toshi MARUYAMA 7a162b7255 code layout clean up test_safe_attributes_should_accept_target_tracker_writable_fields of unit issue test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10642 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-13 10:52:31 +00:00
Toshi MARUYAMA 9da555fcb7 code layout clean up test_editable_custom_field_values_should_return_non_readonly_custom_values of unit issue test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10641 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-13 10:51:57 +00:00
Toshi MARUYAMA ed9f954c6c code layout clean up test_safe_attributes_should_not_include_readonly_custom_fields of unit issue test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10640 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-13 10:51:21 +00:00
Toshi MARUYAMA 0f6be546b8 code layout clean up test_safe_attributes_should_not_include_readonly_fields of unit issue test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10639 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-13 10:50:49 +00:00
Toshi MARUYAMA a66a50eda2 code layout clean up test_should_not_update_custom_fields_on_changing_tracker_with_different_custom_fields of unit issue test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10638 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-13 10:50:19 +00:00
Jean-Philippe Lang 69f863b3c8 Tests cleanup, use #assert_select instead of #assert_tag.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10637 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-13 10:24:17 +00:00
Toshi MARUYAMA db67eff913 code layout clean up test_journalized_multi_custom_field of unit issue test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10636 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-13 10:15:59 +00:00
Toshi MARUYAMA 756adebb96 code layout clean up context "#assignable_users" of unit issue test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10635 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-13 10:15:34 +00:00
Toshi MARUYAMA 0bcc6115c3 code layout clean up context "#behind_schedule?" of unit issue test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10634 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-13 10:15:08 +00:00
Toshi MARUYAMA be79553f33 code layout clean up test_overdue of unit issue test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10633 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-13 10:14:42 +00:00
Toshi MARUYAMA dd887891f7 code layout clean up test_rescheduling_an_issue_should_reschedule_following_issue of unit issue test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10632 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-13 10:14:16 +00:00
Jean-Philippe Lang 55dbd8886f Tests cleanup, use #assert_select instead of #assert_tag.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10631 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-13 09:54:31 +00:00
Toshi MARUYAMA 5d9bdf888a Traditional Chinese translation updated by ChunChang Lo (#12091)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10630 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-13 09:40:07 +00:00
Jean-Philippe Lang 43da05f3cb Set proper locale.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10629 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-13 08:22:49 +00:00
Jean-Philippe Lang 6c3e38c4c0 Tests cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10628 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-13 08:21:18 +00:00
Jean-Philippe Lang a88782bdec Tests cleanup.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10627 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-13 08:14:53 +00:00
Jean-Philippe Lang 31ee1d22eb Test moved to tests with transactional fixtures disabled.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10626 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-13 08:03:19 +00:00
Jean-Philippe Lang 9af6141c91 Reverts r10623 for clarity, this test does not need the default language to be forced to "en".
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10625 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-13 07:56:45 +00:00
Jean-Philippe Lang 8a6ce3a646 Make sure that custom field format cannot be changed.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10624 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-13 07:40:07 +00:00
Toshi MARUYAMA e04bd297e0 set language en at test_put_update_with_spent_time_and_failure_should_not_add_spent_time at functional issues controller test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10623 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-12 23:23:32 +00:00
Toshi MARUYAMA 3bda16f825 remove trailing white-spaces from app/controllers/issue_categories_controller.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10622 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-12 22:57:15 +00:00
Jean-Philippe Lang 7b5d15eca8 Test that spent time should not be added when issue update fails (#11283).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10621 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-12 21:30:12 +00:00
Jean-Philippe Lang ad94777d9c Expose roles details via REST API (#11502).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10620 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-12 17:22:52 +00:00
Toshi MARUYAMA 90e0d681dc code layout cleanup test/unit/issue_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10619 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-12 14:33:22 +00:00
Toshi MARUYAMA 924e5ad61b set language en at test_create_with_invalid_parent_issue_id of unit issue test (#11979)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10618 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-12 14:32:55 +00:00
Toshi MARUYAMA b537a2f1de add test of parent issue id beginning sharp to unit issue test (#11979)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10617 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-12 14:32:24 +00:00
Jean-Philippe Lang 7af1504672 Fixed that Redmine::VERSION.revision returns nil with svn 1.7 (#12012).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10616 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-12 14:09:58 +00:00
Jean-Philippe Lang 2b797fa82f Fixed: No validation errors when entering an invalid "Parent task" (#11979).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10615 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-12 13:40:41 +00:00
Jean-Philippe Lang 8358dc1cc5 Fixed that User#allowed_to? should return true or false (#12078).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10614 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-12 09:12:03 +00:00
Jean-Philippe Lang 92391abd1e Removed issue_create! helper in favour of Issue.generate!
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10613 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-12 09:02:25 +00:00
Jean-Philippe Lang 51818cbbb6 Makes Issue.generate_with_descendants! helper accept attributes only.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10612 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-12 08:56:09 +00:00
Jean-Philippe Lang 8bde60dc56 Remove Issue.generate_for_project! test helper and use Issue.generate! instead.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10611 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-12 08:39:22 +00:00
Jean-Philippe Lang d8f039f489 Isolate the test that actually require non transactional fixtures.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10610 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-11 19:07:08 +00:00
Jean-Philippe Lang 3e706adddd Preserve username when authentification failed (#11846).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10609 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-11 17:17:30 +00:00
Jean-Philippe Lang 5344a35f72 Adds an optional X-Redmine-Switch-User header to let admin users swicth user in API calls (#11755).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10608 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-11 17:07:24 +00:00
Toshi MARUYAMA 2ac9f7d6ac remove empty line and add newline at end of test/fixtures/wikis.yml
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10607 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-11 04:30:29 +00:00
Toshi MARUYAMA f9b073f9d0 remove empty line and add newline at end of test/fixtures/watchers.yml
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10606 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-11 04:30:15 +00:00
Toshi MARUYAMA ee3ef85157 remove empty line and add newline at end of test/fixtures/issue_categories.yml
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10605 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-11 04:30:00 +00:00
Toshi MARUYAMA 3ba648e2dc remove empty line and add newline at end of test/fixtures/groups_users.yml
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10604 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-11 04:29:45 +00:00
Toshi MARUYAMA fd79c1b5b4 remove empty line and add newline at end of test/fixtures/comments.yml
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10603 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-11 04:29:30 +00:00
Toshi MARUYAMA 3a683c8ef3 remove empty line and add newline at end of test/fixtures/changesets.yml
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10602 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-11 04:29:14 +00:00
Toshi MARUYAMA 2f555a3183 remove empty line and add newline at end of test/fixtures/changes.yml
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10599 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-11 03:37:32 +00:00
Toshi MARUYAMA da85ca221a Japanese translation updated by Go MAEDA (#12067)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10598 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-11 03:36:59 +00:00
Toshi MARUYAMA 54f7fe5bd3 Japanese translation improvement by Go MAEDA (#12061)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10597 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-11 03:36:24 +00:00
Toshi MARUYAMA f683f956bb German translation updated by Raphael Kallensee (#9732)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10596 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-11 02:49:11 +00:00
Toshi MARUYAMA 667ad23f9c add newline at end of test/fixtures/user_preferences.yml
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10595 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-11 01:15:31 +00:00
Toshi MARUYAMA 578d15ed00 add newline at end of test/fixtures/documents.yml
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10594 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-11 01:15:17 +00:00
Toshi MARUYAMA 70d75ad222 remove empty line from end of test/fixtures/issue_relations.yml
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10593 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-11 01:15:02 +00:00
Toshi MARUYAMA 9a3ab9c704 Bulgarian translation updated by Ivan Cenov (#12064)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10592 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-10 23:57:41 +00:00
Toshi MARUYAMA 00100a15eb remove empty line and add newline at end of test/fixtures/projects.yml
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10591 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-10 23:57:14 +00:00
Toshi MARUYAMA 6c692d9715 remove empty line and add newline at end of test/fixtures/projects_trackers.yml
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10590 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-10 23:56:38 +00:00
Jean-Philippe Lang b15bd840ec Filling locales (#5487).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10589 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-10 17:43:10 +00:00
Jean-Philippe Lang d0e090eff9 Filling locales (#5487).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10588 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-10 17:38:52 +00:00
Jean-Philippe Lang 83bcc1f043 Adds a setting to allow subtasks to belong to other projects (#5487).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10587 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-10 17:38:17 +00:00
Jean-Philippe Lang b0013d9f68 Do not show parents/subtasks subjects that are not visible.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10586 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-09 21:30:40 +00:00
Jean-Philippe Lang 5a02dcf0a9 Fixed that issue notes preview is broken by r10547 (#1554).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10585 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-09 19:11:49 +00:00
Jean-Philippe Lang c4e040fa88 Filling locales (#11862).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10584 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-09 17:41:03 +00:00
Jean-Philippe Lang 3a178a42cf Add "last 2 weeks" preset to time entries reporting (#11862).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10583 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-09 17:40:00 +00:00
Jean-Philippe Lang 340b4a30d0 Removed invalid/duplicate test.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10582 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-09 17:38:46 +00:00
Jean-Philippe Lang 7263862ce3 Cleanup (#12050).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10581 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-09 17:03:40 +00:00
Jean-Philippe Lang 7626b21a1e Fixed that export: links are broken (#12050).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10580 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-09 17:02:22 +00:00
Toshi MARUYAMA 16befaf2e9 Traditional Chinese translation updated by ChunChang Lo (#12042)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10575 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-09 11:03:45 +00:00
Toshi MARUYAMA 92f9280352 code layout cleanup test/integration/api_test/issues_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10574 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-09 11:03:20 +00:00
Toshi MARUYAMA 178f64950f code layout cleanup test/unit/issue_relation_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10573 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-09 11:02:56 +00:00
Toshi MARUYAMA 727aad50b7 add missing fixtures to test/unit/issue_relation_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10572 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-09 10:41:16 +00:00
Toshi MARUYAMA 3599cb15a2 add missing fixture to test/integration/api_test/issues_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10571 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-09 10:14:14 +00:00
Jean-Philippe Lang fa237901b0 Adjusts test for r10569.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10570 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-07 13:47:22 +00:00
Jean-Philippe Lang 6f13f2b842 Restyles the issue counts.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10569 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-07 13:42:40 +00:00
Toshi MARUYAMA f26662f31f Bulgarian translation updated by Ivan Cenov (#12034)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10568 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-06 16:20:34 +00:00
Toshi MARUYAMA 4df979fdc2 fix incorrect Spanish "September" month name (#12027)
Contributed by Bruno Orcha García.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10567 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-05 12:36:10 +00:00
Toshi MARUYAMA 6d6f42c6a9 remove trailing white-spaces from app/controllers/application_controller.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10566 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-05 00:30:52 +00:00
Toshi MARUYAMA 615f8957c5 Russian translation for trunk updated (#12021)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10564 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-04 23:30:44 +00:00
Toshi MARUYAMA e6596dbc43 Russian translation for 2.1-stable updated (#12021)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10563 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-04 23:08:09 +00:00
Jean-Philippe Lang 9d8c0f9a63 Adds label_any string for filters.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10562 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-04 18:50:43 +00:00
Jean-Philippe Lang 5411f93a9a Passing the format in the template name is deprecated.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10561 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-04 18:15:05 +00:00
Jean-Philippe Lang cbe8226759 Filling locales (#3265).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10560 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-04 18:11:15 +00:00
Jean-Philippe Lang b9d7c22297 Adds no_issue_in_project operator for relations filter (#3265).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10559 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-04 18:10:41 +00:00
Toshi MARUYAMA 44137cb1d4 Bulgarian translation updated by Ivan Cenov (#12020)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10558 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-04 12:48:44 +00:00
Toshi MARUYAMA 1503c6cce7 Traditional Chinese translation updated by ChunChang Lo (#12019)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10557 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-04 09:39:11 +00:00
Toshi MARUYAMA 8162d86192 Japanese translation updated by Go MAEDA (#12017)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10556 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-04 04:49:14 +00:00
Toshi MARUYAMA 88e1587b08 sort custom field issue filter by type and position (#12018)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10555 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-04 04:48:48 +00:00
Toshi MARUYAMA fb4210b6d9 move CustomFieldsHelper tabs variable to model constant for common use (#12018)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10554 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-04 04:48:20 +00:00
Toshi MARUYAMA 65a045e207 svn propset svn:eol-style native test/unit/helpers/queries_helper_test.rb (#12018)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10553 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-04 04:18:37 +00:00
Toshi MARUYAMA 7c0c699f95 change "is_private" issue filter order from 15 to 16 (#12018)
Order 15 is duplicate with "watcher_id" filter.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10552 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-04 04:09:41 +00:00
Toshi MARUYAMA eaf46c5512 change "status" issue filter order from 1 to 0 (#12018)
Order 1 is duplicate with "project" filter.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10551 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-04 04:09:14 +00:00
Toshi MARUYAMA b571c3dbc9 split QueriesHelper filters_options_for_select method and add new unit test (#12018)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10550 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-04 04:08:38 +00:00
Toshi MARUYAMA 5ddd6e7d1f insert position field to custom_fields fixture (#12018)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10549 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-04 03:44:47 +00:00
Toshi MARUYAMA 0e87672c49 update locale files (#1554)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10548 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-03 23:21:29 +00:00
Jean-Philippe Lang 0178b5a2fe Private issue notes (#1554).
Adds 2 new permissions for viewing/adding private comments to issues.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10547 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-03 21:36:19 +00:00
Toshi MARUYAMA bb1563f23f fix integration hook test name
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10546 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-02 22:30:44 +00:00
Toshi MARUYAMA 1d4c8abe96 code layout cleanup Query available_filters method
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10545 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-02 10:29:18 +00:00
Toshi MARUYAMA ef988ba17c code cleanup r10542 changes (#10937)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10544 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-01 07:19:11 +00:00
Toshi MARUYAMA a29854707b add new user format "lastname" (#10937)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10543 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-01 07:08:04 +00:00
Toshi MARUYAMA de0e0f09a3 pin user format order at setting panel (#10937)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10542 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-01 07:07:49 +00:00
Toshi MARUYAMA 5f794b5af5 fix replacing shoulda test name at r10540
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10541 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-01 07:07:35 +00:00
Toshi MARUYAMA df44af819c replace "User#before_create" and "User.login" shoulda contexts at unit user test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10540 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-01 06:41:18 +00:00
Toshi MARUYAMA b04f44f944 fix 'object_daddy creation' test name at unit user test
Redmine dropped object_daddy at r9469 for Rails3 porting.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10539 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-10-01 06:41:04 +00:00
Jean-Philippe Lang b49abf0c22 Updates for 2.1.2 release.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10535 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-30 10:42:28 +00:00
Jean-Philippe Lang 757073edef Updates for 2.1.1 release.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10531 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-30 08:06:41 +00:00
Toshi MARUYAMA ecdd77c582 Japanese translation updated by Go MAEDA (#11995)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10530 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-30 06:04:51 +00:00
Toshi MARUYAMA ba2330d0a0 Bulgarian translation updated by Ivan Cenov (#11994)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10529 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-29 22:49:17 +00:00
Jean-Philippe Lang 8cf8f5bdbf Fixed that autocomplete results are not reset after clearing search field (#11909).
Contributed by Jongwook Choi.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10527 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-29 16:43:11 +00:00
Jean-Philippe Lang 81782f2408 Call sort for array with more than one element only.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10519 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-29 15:28:26 +00:00
Jean-Philippe Lang 99662fa18e Test failure.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10518 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-29 15:26:52 +00:00
Jean-Philippe Lang 61248d1dbc Test failure.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10517 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-29 15:19:34 +00:00
Etienne Massip d60b8c927c Japanese translation updated (#11992).
Contributed by Go MAEDA.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10516 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-29 14:35:57 +00:00
Jean-Philippe Lang 1d7f5e34c5 Filling locales (#3239, #3265).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10515 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-29 13:03:33 +00:00
Jean-Philippe Lang c292971390 Display visible relations in API response.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10514 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-29 13:01:09 +00:00
Jean-Philippe Lang 1b6da80e16 Makes related issues available for display and filtering on the issue list (#3239, #3265).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10513 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-29 12:57:38 +00:00
Toshi MARUYAMA 69b8931e92 add functional test of sub repository diff path (#11966)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10503 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-28 03:43:51 +00:00
Toshi MARUYAMA 69a3941ac8 add functional test of main repository diff path (#11966)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10502 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-28 03:43:25 +00:00
Toshi MARUYAMA 086478c5a6 set user preference diff type nil at functional tests
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10501 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-28 02:02:30 +00:00
Toshi MARUYAMA 1efd303b4a scm: git: use with_settings instead of assigned setting at functional test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10498 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-27 23:16:56 +00:00
Toshi MARUYAMA b6be866151 Bulgarian translation updated by Ivan Cenov (#11974)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10497 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-27 22:55:36 +00:00
Jean-Philippe Lang 3e7bb3c632 Missing fixtures.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10496 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-27 22:30:10 +00:00
Jean-Philippe Lang f1fdbf8d80 Do not link copied issues when copying a project (#6899).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10495 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-27 22:27:37 +00:00
Jean-Philippe Lang f58ed6c206 Fixed that issue author is assigned with current user when the edit form is updated (#11975).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10494 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-27 22:12:11 +00:00
Jean-Philippe Lang d255f7f5b0 Don't display the dropdown if no transition is allowed.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10493 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-27 22:03:38 +00:00
Jean-Philippe Lang c6ea8fbf21 Filling locales (#6899).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10492 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-27 19:10:04 +00:00
Jean-Philippe Lang cc4cff9f11 Adds a "Copied from/to" relation when copying issue(s) (#6899).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10491 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-27 19:09:30 +00:00
Toshi MARUYAMA c3e055bd70 explicitly define route at scm diff view (#11966)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10490 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-27 16:05:33 +00:00
Toshi MARUYAMA fe832071d4 fix broken issue list filter (#11885)
Array indexOf() is not defined on IE8.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10487 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-27 05:42:10 +00:00
Toshi MARUYAMA 9c3543ac3f fix javascript syntax mistake in application.js (#11885)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10486 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-27 05:41:52 +00:00
Toshi MARUYAMA 7690aff8bd remove empty setup method from test/unit/changeset_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10480 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-26 11:17:53 +00:00
Toshi MARUYAMA 455738cbe9 use set_language_if_valid 'en' at test_parent_should_be_in_same_project at unit board test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10478 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-26 10:54:47 +00:00
Toshi MARUYAMA cf52a6ccb4 set default_language en at test_commit_closing_a_subproject_issue of unit changeset test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10477 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-26 10:54:30 +00:00
Toshi MARUYAMA c91ce512a9 fix number_to_currency() raises exception on Rails3 bs and de locale (#11922)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10476 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-26 08:45:39 +00:00
Toshi MARUYAMA b7c71fe427 add more error message if public/plugin_assets cannot be created (#11945)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10472 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-26 04:11:14 +00:00
Toshi MARUYAMA 29292a3faf fix "can't convert Errno::EACCES into String" in case of no permission of public/plugin_assets on Ruby 1.9.3 (#11945)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10471 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-26 04:11:00 +00:00
Toshi MARUYAMA d1d8640822 code layout cleanup app/views/issues/_list.html.erb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10470 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-25 23:32:39 +00:00
Toshi MARUYAMA 49c2f316c2 remove trailing white-spaces from app/models/query.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10469 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-25 23:32:15 +00:00
Toshi MARUYAMA 95fe4d61c9 replace tab to space at app/models/query.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10468 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-25 23:31:49 +00:00
Jean-Philippe Lang 917a89fbf7 Fixed JSON escaping of filters (#11929).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10465 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-25 18:23:11 +00:00
Jean-Philippe Lang 18d1c62ca8 Use eager loaded #principal association instead of #user (#11904).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10442 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-22 10:12:59 +00:00
Jean-Philippe Lang 5ce2f4f81c Use eager loaded #principal association instead of #user (#11904).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10441 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-22 09:48:38 +00:00
Jean-Philippe Lang 7c8ac2eecc Avoid to run one SQL query per member on Project#assignable_users (#11904).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10440 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-22 09:33:30 +00:00
Jean-Philippe Lang 3bde603029 ParseDate missing in Ruby 1.9x (#11290).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10439 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-22 07:46:52 +00:00
Jean-Philippe Lang 838025372d Potential can't dup NilClass error in UserPreference (#11905).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10438 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-22 06:16:53 +00:00
Jean-Philippe Lang 5328c4adcb Anonymous users should always see public issues only (#11872).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10437 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-20 19:26:58 +00:00
Jean-Philippe Lang 30b3e796ff New relation form Cancel link is broken with Chrome 21 (#11036).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10436 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-20 16:59:37 +00:00
Toshi MARUYAMA c1b71e84c6 Traditional Chinese translation updated by ChunChang Lo (#11897)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10434 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-20 10:48:47 +00:00
Jean-Philippe Lang 59d8ae61ef Anonymous users should not see private issues with anonymous author (#11872).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10433 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-19 21:48:33 +00:00
Jean-Philippe Lang fa2fe3e1e8 Slight changes to diff/file/annotate styles.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10432 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-19 18:32:34 +00:00
Toshi MARUYAMA cb01d87ddd set svn:eol-style native to test/fixtures/files/hg-export.diff (#11868)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10431 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-19 03:08:07 +00:00
Toshi MARUYAMA 37351ddecc remove empty setup method from test/unit/lib/redmine/unified_diff_test.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10430 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-19 03:02:17 +00:00
Toshi MARUYAMA 551c024b45 add functional attachment test of mercurial export file (#11868)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10429 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-19 03:02:03 +00:00
Toshi MARUYAMA f18edc4e1c use git diff format for all diff (#11868)
Mercurial diff uses git format.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10428 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-19 02:29:11 +00:00
Toshi MARUYAMA 0af04b8ae0 use radio buttons instead of a select at attachment as same as r10426 repository
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10427 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-18 23:48:52 +00:00
Jean-Philippe Lang 3586e44c1d Use radio buttons instead of a select.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10426 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-18 20:51:31 +00:00
Jean-Philippe Lang d277d14432 Remove trailing (revision nn) from filenames in subversion diffs.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10425 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-18 19:44:08 +00:00
Jean-Philippe Lang 12de6a177a Fixed that git diff displays deleted files as /dev/null (#11868).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10424 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-18 19:32:58 +00:00
Toshi MARUYAMA 74f7fc38f0 scm: bazaar: add more comment to non ASCII path tests at unit model test (#11834)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10423 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-18 10:10:55 +00:00
Toshi MARUYAMA 1f58b94bd8 scm: bazaar: do not call super initialize method at adapter (#11834)
On Bazaar 2.0.5, in case of using non ASCII *repository* path,
following trace raise on all operation.

<pre>
Traceback (most recent call last):
  File "/usr/bin/bzr", line 142, in <module>
    exit_val = bzrlib.commands.main()
  File "/usr/lib/python2.6/site-packages/bzrlib/commands.py", line 1102, in main
    argv = osutils.get_unicode_argv()
  File "/usr/lib/python2.6/site-packages/bzrlib/osutils.py", line 90, in get_unicode_argv
    "encoding." % a))
bzrlib.errors.BzrError:
 Parameter ''/somewhere/\xe3\x83\x90\xe3\x82\xb6\xe3\x83\xbc/non_ascii/''
 is unsupported by the current encoding.
</pre>

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10422 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-18 10:10:29 +00:00
Toshi MARUYAMA 1fcd3d956f scm: bazaar: add non ASCII path test to unit model test (#11834)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10421 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-18 09:30:35 +00:00
Toshi MARUYAMA f9208d7c5c scm: bazaar: use log encoding as path encoding (#11834)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10420 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-18 09:30:11 +00:00
Toshi MARUYAMA cbe28d75d0 fix deprecation warning of the format in the template name
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10419 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-18 03:15:00 +00:00
Toshi MARUYAMA a701bd5fbd scm: bazaar: convert path encoding from @path_encoding to UTF-8 at adapter entries method (#11834)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10418 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-17 23:46:53 +00:00
Toshi MARUYAMA a3ae06921d scm: bazaar: convert path encoding from @path_encoding to UTF-8 at adapter revisions method (#11834)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10417 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-17 23:46:27 +00:00
Toshi MARUYAMA a6368733ad scm: bazaar: convert command line character encoding to @path_encoding (#11834)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10416 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-17 23:45:59 +00:00
Toshi MARUYAMA f230ffbd54 scm: bazaar: add @path_encoding instance value and set it UTF-8 at adapter initialize method (#11834)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10415 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-17 23:45:31 +00:00
Toshi MARUYAMA 51e6c7589e scm: bazaar: update test repository (#11834)
Add new "non_ascii" branch.
It was created by "bzr branch --no-tree branch00 non_ascii".
It is equivalent to Git bare repository and Mercurial "hg update null".
It has non ASCII path name files and directory.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10414 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-17 22:49:31 +00:00
Jean-Philippe Lang 581058f663 Fixed: load_default_data task fails to print the error message if one occurs (#11844).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10413 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-17 18:38:54 +00:00
Jean-Philippe Lang 187d5db6b4 Fixed #onthefly_creation_failed broken by r9940 (#11850).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10412 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-17 18:31:20 +00:00
Toshi MARUYAMA 01e2472c92 scm: bazaar: add entry test to unit lib test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10411 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-17 10:41:59 +00:00
Toshi MARUYAMA 2da70de1a7 scm: git: add entry test to unit lib test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10410 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-17 10:41:33 +00:00
Toshi MARUYAMA dd89ce4594 scm: bazaar: code layout cleanup adapter revisions method
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10409 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-17 07:58:31 +00:00
Toshi MARUYAMA 55748b6fc0 scm: bazaar: add revisions test to unit lib test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10408 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-17 07:58:05 +00:00
Jean-Philippe Lang e05e9179fd Added a test for JSON upload.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10407 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-16 19:14:44 +00:00
Jean-Philippe Lang f825167003 Removed test contexts.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10406 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-16 19:11:59 +00:00
Jean-Philippe Lang 57c38a33e5 Adds assertions on the confirmation form.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10405 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-16 15:39:11 +00:00
Jean-Philippe Lang b81a578eb6 Adjust tests for new fixture.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10404 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-16 15:36:05 +00:00
Jean-Philippe Lang 8593e34722 Adds missing WikiContent fixture.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10403 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-16 15:31:59 +00:00
Jean-Philippe Lang 34b64d646f Updates macro description (#10789).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10402 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-16 15:27:21 +00:00
Jean-Philippe Lang 747e4ecd3a Adds a "depth" option to the child_pages macro (#10789).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10401 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-16 15:24:35 +00:00
Jean-Philippe Lang ca4f2c59b6 Attachments should be available to the text formatter when previewing an existing news.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10400 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-16 14:18:43 +00:00
Toshi MARUYAMA 2058c66d73 scm: bazaar: remove unused scm.revisions ":with_paths => true" option from fetch_changesets method
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10399 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-16 14:15:07 +00:00
Toshi MARUYAMA 53e2eb1867 scm: bazaar: add asserting entries root path at unit model test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10398 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-16 14:14:52 +00:00
Jean-Philippe Lang a81da3491e Do not consider that versions that are due today are completed.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10397 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-16 14:09:41 +00:00
Jean-Philippe Lang ff0989a702 Accept float in inline styles.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10396 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-16 13:54:04 +00:00
Jean-Philippe Lang 49d93a5cab Updates for 2.0.4 and 2.1.0 releases.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10391 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-16 12:42:48 +00:00
Toshi MARUYAMA 17db2dca3d scm: mercurial: add test of diff from new to old revision to unit lib test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10390 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-16 08:51:19 +00:00
Toshi MARUYAMA 3cd15102c6 scm: bazaar: add diff test to unit lib test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10389 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-16 08:50:55 +00:00
Toshi MARUYAMA dd5844b86c scm: bazaar: separate constant repository path to repository and trunk branch at unit model test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10388 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-16 06:13:23 +00:00
Toshi MARUYAMA ee0fc2e1d5 scm: bazaar: do not use file:// for repository path at unit app test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10387 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-16 04:12:42 +00:00
Toshi MARUYAMA 4a7e148aff scm: bazaar: add asserting entries subdirectory path at unit app test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10386 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-16 00:22:25 +00:00
Toshi MARUYAMA c2b12d853f scm: git: remove unnecessary encoding header from unit adapter test
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10385 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-15 15:42:14 +00:00
Toshi MARUYAMA 67cdaabe6f scm: git: change test author encoding in unit adapter test to ASCII-8BIT
Author encoding in adapter is ASCII-8BIT.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10384 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-15 15:41:47 +00:00
Toshi MARUYAMA 72af2730ff remove unused "require 'redmine/codeset_util'" from RepositoriesHelper
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10383 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-15 15:40:58 +00:00
Toshi MARUYAMA 5441f8de4d remove redundant empty lines from RepositoriesHelper
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10382 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-15 15:08:28 +00:00
Toshi MARUYAMA e659aff468 remove unused "require 'iconv'" from RepositoriesHelper
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10381 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-15 15:07:29 +00:00
Toshi MARUYAMA 2566aef8ab Japanese translation updated by Go MAEDA (#11836)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10379 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-15 11:13:52 +00:00
Toshi MARUYAMA c70bc540dd add copyright statement to test/unit/lib/redmine/scm/adapters/*.rb
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10378 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-14 21:40:45 +00:00
Etienne Massip 597fbf0e04 Fixed comment.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10377 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-12 21:30:30 +00:00
Jean-Philippe Lang 338d81d6e3 Redmine.pm fails when permissions are NULL (#11818).
Contributed by John Yani.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10375 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-12 19:13:05 +00:00
Jean-Philippe Lang 40302566a8 Code cleanup (#11814).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10373 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-11 17:26:42 +00:00
Jean-Philippe Lang 6d0aed1f44 Set the first day of week in the date picker according to settings (#11814).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10372 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-11 17:15:54 +00:00
Jean-Philippe Lang a3d0e82552 Use javascript_tag.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10371 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-11 17:01:45 +00:00
Jean-Philippe Lang 818f3564fa Moved the javascript includes in html head.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10370 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-11 16:59:30 +00:00
Jean-Philippe Lang 745c5d053e Revision graph sometimes broken (#11612).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10369 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-11 16:55:32 +00:00
Jean-Philippe Lang 049aa3971d Upgraded raphael.js to 2.1.0 (#10419).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10368 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-09-11 16:48:57 +00:00
1188 changed files with 58994 additions and 24302 deletions

10
.gitignore vendored
View File

@ -1,5 +1,7 @@
/.project
/.loadpath
/.powrc
/.rvmrc
/config/additional_environment.rb
/config/configuration.yml
/config/database.yml
@ -15,13 +17,21 @@
/lib/redmine/scm/adapters/mercurial/redminehelper.pyo
/log/*.log*
/log/mongrel_debug
/plugins/*
!/plugins/README
/public/dispatch.*
/public/plugin_assets
/public/themes/*
!/public/themes/alternate
!/public/themes/classic
!/public/themes/README
/tmp/*
/tmp/cache/*
/tmp/pdf/*
/tmp/sessions/*
/tmp/sockets/*
/tmp/test/*
/tmp/thumbnails/*
/vendor/cache
/vendor/rails
*.rbc

View File

@ -2,6 +2,8 @@ syntax: glob
.project
.loadpath
.powrc
.rvmrc
config/additional_environment.rb
config/configuration.yml
config/database.yml
@ -21,9 +23,11 @@ public/dispatch.*
public/plugin_assets
tmp/*
tmp/cache/*
tmp/pdf/*
tmp/sessions/*
tmp/sockets/*
tmp/test/*
tmp/thumbnails/*
vendor/cache
vendor/rails
*.rbc

38
.travis.yml Normal file
View File

@ -0,0 +1,38 @@
# Redmine runs tests on own continuous integration server.
# http://www.redmine.org/projects/redmine/wiki/Continuous_integration
# You can also run tests on your environment.
language: ruby
rvm:
- 1.8.7
- 1.9.3
- 2.0
- 2.1
- jruby
matrix:
allow_failures:
# SCM tests fail randomly due to IO.popen().
# https://github.com/jruby/jruby/issues/779
- rvm: jruby
env:
- "TEST_SUITE=units DATABASE_ADAPTER=postgresql"
- "TEST_SUITE=functionals DATABASE_ADAPTER=postgresql"
- "TEST_SUITE=integration DATABASE_ADAPTER=postgresql"
- "TEST_SUITE=units DATABASE_ADAPTER=mysql"
- "TEST_SUITE=functionals DATABASE_ADAPTER=mysql"
- "TEST_SUITE=integration DATABASE_ADAPTER=mysql"
- "TEST_SUITE=units DATABASE_ADAPTER=sqlite3"
- "TEST_SUITE=functionals DATABASE_ADAPTER=sqlite3"
- "TEST_SUITE=integration DATABASE_ADAPTER=sqlite3"
before_install:
- "sudo apt-get update -qq"
- "sudo apt-get --no-install-recommends install bzr cvs git mercurial subversion"
script:
- "SCMS=bazaar,cvs,subversion,git,mercurial,filesystem"
- "export SCMS"
- "git --version"
- "bundle install"
- "RUN_ON_NOT_OFFICIAL='' RUBY_VER=1.9 BRANCH=trunk bundle exec rake config/database.yml"
- "bundle install"
- "JRUBY_OPTS=-J-Xmx1024m bundle exec rake ci"
notifications:
email: false

8
CONTRIBUTING.md Normal file
View File

@ -0,0 +1,8 @@
**Do not send a pull requst to this github repository**.
For more detail, please see [official website] wiki [Contribute].
[official website]: http://www.redmine.org
[Contribute]: http://www.redmine.org/projects/redmine/wiki/Contribute

101
Gemfile
View File

@ -1,11 +1,13 @@
source 'http://rubygems.org'
source 'https://rubygems.org'
gem 'rails', '3.2.8'
gem "rails", "3.2.18"
gem "rake", "~> 10.1.1"
gem "jquery-rails", "~> 2.0.2"
gem "i18n", "~> 0.6.0"
gem "coderay", "~> 1.0.6"
gem "coderay", "~> 1.1.0"
gem "fastercsv", "~> 1.5.0", :platforms => [:mri_18, :mingw_18, :jruby]
gem "builder", "3.0.0"
gem "request_store"
gem "mime-types"
# Optional gem for LDAP authentication
group :ldap do
@ -14,57 +16,67 @@ end
# Optional gem for OpenID authentication
group :openid do
gem "ruby-openid", "~> 2.1.4", :require => "openid"
gem "ruby-openid", "~> 2.3.0", :require => "openid"
gem "rack-openid"
end
# Optional gem for exporting the gantt to a PNG file, not supported with jruby
platforms :mri, :mingw do
# Optional gem for exporting the gantt to a PNG file, not supported with jruby
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.11.0"
end
group :sqlite do
gem "sqlite3"
end
end
platforms :mri_18, :mingw_18 do
group :mysql do
gem "mysql"
end
end
platforms :mri_19, :mingw_19 do
group :mysql do
gem "mysql2", "~> 0.3.11"
# Optional Markdown support, not for JRuby
group :markdown do
# TODO: upgrade to redcarpet 3.x when ruby1.8 support is dropped
gem "redcarpet", "~> 2.3.0"
end
end
platforms :jruby do
gem "jruby-openssl"
# jruby-openssl is bundled with JRuby 1.7.0
gem "jruby-openssl" if Object.const_defined?(:JRUBY_VERSION) && JRUBY_VERSION < '1.7.0'
gem "activerecord-jdbc-adapter", "~> 1.3.2"
end
group :mysql do
gem "activerecord-jdbcmysql-adapter"
end
group :postgresql do
gem "activerecord-jdbcpostgresql-adapter"
end
group :sqlite do
gem "activerecord-jdbcsqlite3-adapter"
# Include database gems for the adapters found in the database
# configuration file
require 'erb'
require 'yaml'
database_file = File.join(File.dirname(__FILE__), "config/database.yml")
if File.exist?(database_file)
database_config = YAML::load(ERB.new(IO.read(database_file)).result)
adapters = database_config.values.map {|c| c['adapter']}.compact.uniq
if adapters.any?
adapters.each do |adapter|
case adapter
when 'mysql2'
gem "mysql2", "~> 0.3.11", :platforms => [:mri, :mingw]
gem "activerecord-jdbcmysql-adapter", :platforms => :jruby
when 'mysql'
gem "mysql", "~> 2.8.1", :platforms => [:mri, :mingw]
gem "activerecord-jdbcmysql-adapter", :platforms => :jruby
when /postgresql/
gem "pg", ">= 0.11.0", :platforms => [:mri, :mingw]
gem "activerecord-jdbcpostgresql-adapter", :platforms => :jruby
when /sqlite3/
gem "sqlite3", :platforms => [:mri, :mingw]
gem "activerecord-jdbcsqlite3-adapter", :platforms => :jruby
when /sqlserver/
gem "tiny_tds", "~> 0.5.1", :platforms => [:mri, :mingw]
gem "activerecord-sqlserver-adapter", :platforms => [:mri, :mingw]
else
warn("Unknown database adapter `#{adapter}` found in config/database.yml, use Gemfile.local to load your own database gems")
end
end
else
warn("No adapter found in config/database.yml, please configure it first")
end
else
warn("Please configure your config/database.yml first")
end
group :development do
@ -73,10 +85,12 @@ group :development do
end
group :test do
gem "shoulda", "~> 2.11"
# Shoulda does not work nice on Ruby 1.9.3 and seems to need test-unit explicitely.
gem "test-unit", :platforms => [:mri_19]
gem "mocha", "0.12.3"
gem "shoulda", "~> 3.3.2"
gem "mocha", "~> 1.0.0", :require => 'mocha/api'
if RUBY_VERSION >= '1.9.3'
gem "capybara", "~> 2.1.0"
gem "selenium-webdriver"
end
end
local_gemfile = File.join(File.dirname(__FILE__), "Gemfile.local")
@ -88,5 +102,6 @@ end
# Load plugins' Gemfiles
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)
#TODO: switch to "eval_gemfile file" when bundler >= 1.2.0 will be required (rails 4)
instance_eval File.read(file), file
end

View File

@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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,12 +20,22 @@ class AccountController < ApplicationController
include CustomFieldsHelper
# prevents login action to be filtered by check_if_login_required application scope filter
skip_before_filter :check_if_login_required
skip_before_filter :check_if_login_required, :check_password_change
# Overrides ApplicationController#verify_authenticity_token to disable
# token verification on openid callbacks
def verify_authenticity_token
unless using_open_id?
super
end
end
# Login request and validation
def login
if request.get?
logout_user
if User.current.logged?
redirect_back_or_default home_url, :referer => true
end
else
authenticate_user
end
@ -36,15 +46,20 @@ class AccountController < ApplicationController
# Log out current user and redirect to welcome page
def logout
logout_user
redirect_to home_url
if User.current.anonymous?
redirect_to home_url
elsif request.post?
logout_user
redirect_to home_url
end
# display the logout form
end
# Lets user choose a new password
def lost_password
redirect_to(home_url) && return unless Setting.lost_password?
(redirect_to(home_url); return) unless Setting.lost_password?
if params[:token]
@token = Token.find_by_action_and_value("recovery", params[:token].to_s)
@token = Token.find_token("recovery", params[:token].to_s)
if @token.nil? || @token.expired?
redirect_to home_url
return
@ -68,11 +83,15 @@ class AccountController < ApplicationController
else
if request.post?
user = User.find_by_mail(params[:mail].to_s)
# user not found or not active
unless user && user.active?
# user not found
unless user
flash.now[:error] = l(:notice_account_unknown_email)
return
end
unless user.active?
handle_inactive_user(user, lost_password_path)
return
end
# user cannot change its password
unless user.change_password_allowed?
flash.now[:error] = l(:notice_can_t_change_password)
@ -92,10 +111,10 @@ class AccountController < ApplicationController
# User self-registration
def register
redirect_to(home_url) && return unless Setting.self_registration? || session[:auth_source_registration]
(redirect_to(home_url); return) unless Setting.self_registration? || session[:auth_source_registration]
if request.get?
session[:auth_source_registration] = nil
@user = User.new(:language => Setting.default_language)
@user = User.new(:language => current_language.to_s)
else
user_params = params[:user] || {}
@user = User.new
@ -110,7 +129,7 @@ class AccountController < ApplicationController
session[:auth_source_registration] = nil
self.logged_user = @user
flash[:notice] = l(:notice_account_activated)
redirect_to :controller => 'my', :action => 'account'
redirect_to my_account_path
end
else
@user.login = params[:user][:login]
@ -132,11 +151,11 @@ class AccountController < ApplicationController
# Token based account activation
def activate
redirect_to(home_url) && return unless Setting.self_registration? && params[:token]
token = Token.find_by_action_and_value('register', params[:token])
redirect_to(home_url) && return unless token and !token.expired?
(redirect_to(home_url); return) unless Setting.self_registration? && params[:token].present?
token = Token.find_token('register', params[:token].to_s)
(redirect_to(home_url); return) unless token and !token.expired?
user = token.user
redirect_to(home_url) && return unless user.registered?
(redirect_to(home_url); return) unless user.registered?
user.activate
if user.save
token.destroy
@ -145,6 +164,19 @@ class AccountController < ApplicationController
redirect_to signin_path
end
# Sends a new account activation email
def activation_email
if session[:registered_user_id] && Setting.self_registration == '1'
user_id = session.delete(:registered_user_id).to_i
user = User.find_by_id(user_id)
if user && user.registered?
register_by_email_activation(user)
return
end
end
redirect_to(home_url)
end
private
def authenticate_user
@ -156,7 +188,7 @@ class AccountController < ApplicationController
end
def password_authentication
user = User.try_to_login(params[:username], params[:password])
user = User.try_to_login(params[:username], params[:password], false)
if user.nil?
invalid_credentials
@ -164,25 +196,31 @@ class AccountController < ApplicationController
onthefly_creation_failed(user, {:login => user.login, :auth_source_id => user.auth_source_id })
else
# Valid user
successful_authentication(user)
if user.active?
successful_authentication(user)
else
handle_inactive_user(user)
end
end
end
def open_id_authenticate(openid_url)
authenticate_with_open_id(openid_url, :required => [:nickname, :fullname, :email], :return_to => signin_url, :method => :post) do |result, identity_url, registration|
back_url = signin_url(:autologin => params[:autologin])
authenticate_with_open_id(
openid_url, :required => [:nickname, :fullname, :email],
:return_to => back_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?
# Self-registration off
redirect_to(home_url) && return unless Setting.self_registration?
(redirect_to(home_url); return) unless Setting.self_registration?
# Create on the fly
user.login = registration['nickname'] unless registration['nickname'].nil?
user.mail = registration['email'] unless registration['email'].nil?
user.firstname, user.lastname = registration['fullname'].split(' ') unless registration['fullname'].nil?
user.random_password
user.register
case Setting.self_registration
when '1'
register_by_email_activation(user) do
@ -202,7 +240,7 @@ class AccountController < ApplicationController
if user.active?
successful_authentication(user)
else
account_pending
handle_inactive_user(user)
end
end
end
@ -218,12 +256,11 @@ class AccountController < ApplicationController
set_autologin_cookie(user)
end
call_hook(:controller_account_success_authentication_after, {:user => user })
redirect_back_or_default :controller => 'my', :action => 'page'
redirect_back_or_default my_page_path
end
def set_autologin_cookie(user)
token = Token.create(:user => user, :action => 'autologin')
cookie_name = Redmine::Configuration['autologin_cookie_name'] || 'autologin'
cookie_options = {
:value => token.value,
:expires => 1.year.from_now,
@ -231,14 +268,14 @@ class AccountController < ApplicationController
:secure => (Redmine::Configuration['autologin_cookie_secure'] ? true : false),
:httponly => true
}
cookies[cookie_name] = cookie_options
cookies[autologin_cookie_name] = cookie_options
end
# Onthefly creation failed, display the registration form to fill/fix attributes
def onthefly_creation_failed(user, auth_source_options = { })
@user = user
session[:auth_source_registration] = auth_source_options unless auth_source_options.empty?
render register_path
render :action => 'register'
end
def invalid_credentials
@ -253,7 +290,7 @@ class AccountController < ApplicationController
token = Token.new(:user => user, :action => "register")
if user.save and token.save
Mailer.register(token).deliver
flash[:notice] = l(:notice_account_register_done)
flash[:notice] = l(:notice_account_register_done, :email => user.mail)
redirect_to signin_path
else
yield if block_given?
@ -270,7 +307,7 @@ class AccountController < ApplicationController
if user.save
self.logged_user = user
flash[:notice] = l(:notice_account_activated)
redirect_to :controller => 'my', :action => 'account'
redirect_to my_account_path
else
yield if block_given?
end
@ -283,14 +320,32 @@ class AccountController < ApplicationController
if user.save
# Sends an email to the administrators
Mailer.account_activation_request(user).deliver
account_pending
account_pending(user)
else
yield if block_given?
end
end
def account_pending
flash[:notice] = l(:notice_account_pending)
redirect_to signin_path
def handle_inactive_user(user, redirect_path=signin_path)
if user.registered?
account_pending(user, redirect_path)
else
account_locked(user, redirect_path)
end
end
def account_pending(user, redirect_path=signin_path)
if Setting.self_registration == '1'
flash[:error] = l(:notice_account_not_activated_yet, :url => activation_email_path)
session[:registered_user_id] = user.id
else
flash[:error] = l(:notice_account_pending)
end
redirect_to redirect_path
end
def account_locked(user, redirect_path=signin_path)
flash[:error] = l(:notice_account_locked)
redirect_to redirect_path
end
end

View File

@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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
@ -23,19 +23,18 @@ class AdminController < ApplicationController
before_filter :require_admin
helper :sort
include SortHelper
include SortHelper
def index
@no_configuration_data = Redmine::DefaultData::Loader::no_data?
end
def projects
@status = params[:status] || 1
scope = Project.status(@status)
scope = Project.status(@status).order('lft')
scope = scope.like(params[:name]) if params[:name].present?
@projects = scope.all(:order => 'lft')
@projects = scope.all
render :action => "projects", :layout => false if request.xhr?
end
@ -55,7 +54,7 @@ class AdminController < ApplicationController
flash[:error] = l(:error_can_t_load_default_data, e.message)
end
end
redirect_to :action => 'index'
redirect_to admin_path
end
def test_email
@ -66,10 +65,10 @@ class AdminController < ApplicationController
@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)
flash[:error] = l(:notice_email_error, Redmine::CodesetUtil.replace_invalid_utf8(e.message))
end
ActionMailer::Base.raise_delivery_errors = raise_delivery_errors
redirect_to :controller => 'settings', :action => 'edit', :tab => 'notifications'
redirect_to settings_path(:tab => 'notifications')
end
def info
@ -78,7 +77,8 @@ class AdminController < ApplicationController
[: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)]
[:text_rmagick_available, Object.const_defined?(:Magick)],
[:text_convert_available, Redmine::Thumbnail.convert_available?]
]
end
end

View File

@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@ -22,7 +22,10 @@ class Unauthorized < Exception; end
class ApplicationController < ActionController::Base
include Redmine::I18n
include Redmine::Pagination
include RoutesHelper
helper :routes
class_attribute :accept_api_auth_actions
class_attribute :accept_rss_auth_actions
class_attribute :model_object
@ -30,14 +33,24 @@ class ApplicationController < ActionController::Base
layout 'base'
protect_from_forgery
def handle_unverified_request
super
cookies.delete(:autologin)
def verify_authenticity_token
unless api_request?
super
end
end
before_filter :session_expiration, :user_setup, :check_if_login_required, :set_localization
def handle_unverified_request
unless api_request?
super
cookies.delete(autologin_cookie_name)
self.logged_user = nil
render_error :status => 422, :message => "Invalid form authenticity token."
end
end
before_filter :session_expiration, :user_setup, :check_if_login_required, :check_password_change, :set_localization
rescue_from ActionController::InvalidAuthenticityToken, :with => :invalid_authenticity_token
rescue_from ::Unauthorized, :with => :deny_access
rescue_from ::ActionView::MissingTemplate, :with => :missing_template
@ -75,6 +88,9 @@ class ApplicationController < ActionController::Base
session[:user_id] = user.id
session[:ctime] = Time.now.utc.to_i
session[:atime] = Time.now.utc.to_i
if user.must_change_password?
session[:pwd] = '1'
end
end
def user_setup
@ -90,7 +106,7 @@ class ApplicationController < ActionController::Base
def find_current_user
user = nil
unless api_request?
if session[:user_id]
if session[:user_id]
# existing session
user = (User.active.find(session[:user_id]) rescue nil)
elsif autologin_user = try_to_autologin
@ -104,20 +120,38 @@ class ApplicationController < ActionController::Base
if (key = api_key_from_request)
# Use API key
user = User.find_by_api_key(key)
else
elsif request.authorization.to_s =~ /\ABasic /i
# HTTP Basic, either username/password or API key/random
authenticate_with_http_basic do |username, password|
user = User.try_to_login(username, password) || User.find_by_api_key(username)
end
if user && user.must_change_password?
render_error :message => 'You must change your password', :status => 403
return
end
end
# Switch user if requested by an admin user
if user && user.admin? && (username = api_switch_user_from_request)
su = User.find_by_login(username)
if su && su.active?
logger.info(" User switched by: #{user.login} (id=#{user.id})") if logger
user = su
else
render_error :message => 'Invalid X-Redmine-Switch-User header', :status => 412
end
end
end
user
end
def autologin_cookie_name
Redmine::Configuration['autologin_cookie_name'].presence || 'autologin'
end
def try_to_autologin
if cookies[:autologin] && Setting.autologin?
if cookies[autologin_cookie_name] && Setting.autologin?
# auto-login feature starts a new session
user = User.try_to_autologin(cookies[:autologin])
user = User.try_to_autologin(cookies[autologin_cookie_name])
if user
reset_session
start_user_session(user)
@ -140,7 +174,7 @@ class ApplicationController < ActionController::Base
# Logs out current user
def logout_user
if User.current.logged?
cookies.delete :autologin
cookies.delete(autologin_cookie_name)
Token.delete_all(["user_id = ? AND action = ?", User.current.id, 'autologin'])
self.logged_user = nil
end
@ -153,12 +187,22 @@ class ApplicationController < ActionController::Base
require_login if Setting.login_required?
end
def check_password_change
if session[:pwd]
if User.current.must_change_password?
redirect_to my_password_path
else
session.delete(:pwd)
end
end
end
def set_localization
lang = nil
if User.current.logged?
lang = find_language(User.current.language)
end
if lang.nil? && request.env['HTTP_ACCEPT_LANGUAGE']
if lang.nil? && !Setting.force_default_language_for_anonymous? && request.env['HTTP_ACCEPT_LANGUAGE']
accept_lang = parse_qvalues(request.env['HTTP_ACCEPT_LANGUAGE']).first
if !accept_lang.blank?
accept_lang = accept_lang.downcase
@ -178,7 +222,13 @@ class ApplicationController < ActionController::Base
url = url_for(:controller => params[:controller], :action => params[:action], :id => params[:id], :project_id => params[:project_id])
end
respond_to do |format|
format.html { redirect_to :controller => "account", :action => "login", :back_url => url }
format.html {
if request.xhr?
head :unauthorized
else
redirect_to :controller => "account", :action => "login", :back_url => url
end
}
format.atom { redirect_to :controller => "account", :action => "login", :back_url => url }
format.xml { head :unauthorized, 'WWW-Authenticate' => 'Basic realm="Redmine API"' }
format.js { head :unauthorized, 'WWW-Authenticate' => 'Basic realm="Redmine API"' }
@ -266,20 +316,40 @@ class ApplicationController < ActionController::Base
self.model_object = model
end
# Filter for bulk issue operations
# Find the issue whose id is the :id parameter
# Raises a Unauthorized exception if the issue is not visible
def find_issue
# Issue.visible.find(...) can not be used to redirect user to the login form
# if the issue actually exists but requires authentication
@issue = Issue.find(params[:id])
raise Unauthorized unless @issue.visible?
@project = @issue.project
rescue ActiveRecord::RecordNotFound
render_404
end
# Find issues with a single :id param or :ids array param
# Raises a Unauthorized exception if one of the issues is not visible
def find_issues
@issues = Issue.find_all_by_id(params[:id] || params[:ids])
@issues = Issue.where(:id => (params[:id] || params[:ids])).preload(:project, :status, :tracker, :priority, :author, :assigned_to, :relations_to).to_a
raise ActiveRecord::RecordNotFound if @issues.empty?
if @issues.detect {|issue| !issue.visible?}
deny_access
return
end
raise Unauthorized unless @issues.all?(&:visible?)
@projects = @issues.collect(&:project).compact.uniq
@project = @projects.first if @projects.size == 1
rescue ActiveRecord::RecordNotFound
render_404
end
def find_attachments
if (attachments = params[:attachments]).present?
att = attachments.values.collect do |attachment|
Attachment.find_by_token( attachment[:token] ) if attachment[:token].present?
end
att.compact!
end
@attachments = att || []
end
# make sure that the user is a member of the project (or admin) if project is private
# used as a before_filter for actions that do not require any particular permission on the project
def check_project_privacy
@ -304,13 +374,13 @@ class ApplicationController < ActionController::Base
url
end
def redirect_back_or_default(default)
def redirect_back_or_default(default, options={})
back_url = params[:back_url].to_s
if back_url.present?
begin
uri = URI.parse(back_url)
# do not redirect user to another host or to the login or register page
if (uri.relative? || (uri.host == request.host)) && !uri.path.match(%r{/(login|account/register)})
if ((uri.relative? && back_url.match(%r{\A/(\w.*)?\z})) || (uri.host == request.host)) && !uri.path.match(%r{/(login|account/register)})
redirect_to(back_url)
return
end
@ -318,6 +388,9 @@ class ApplicationController < ActionController::Base
logger.warn("Could not redirect to invalid URL #{back_url}")
# redirect to default
end
elsif options[:referer]
redirect_to_referer_or default
return
end
redirect_to default
false
@ -390,19 +463,12 @@ class ApplicationController < ActionController::Base
request.xhr? ? false : 'base'
end
def invalid_authenticity_token
if api_request?
logger.error "Form authenticity token is missing or is invalid. API calls must include a proper Content-type header (text/xml or text/json)."
end
render_error "Invalid form authenticity token."
end
def render_feed(items, options={})
@items = items || []
@items.sort! {|x,y| y.event_datetime <=> x.event_datetime }
@items = @items.slice(0, Setting.feeds_limit.to_i)
@title = options[:title] || Setting.app_title
render :template => "common/feed.atom", :layout => false,
render :template => "common/feed", :formats => [:atom], :layout => false,
:content_type => 'application/atom+xml'
end
@ -492,7 +558,7 @@ class ApplicationController < ActionController::Base
# Returns a string that can be used as filename value in Content-Disposition header
def filename_for_content_disposition(name)
request.env['HTTP_USER_AGENT'] =~ %r{MSIE} ? ERB::Util.url_encode(name) : name
request.env['HTTP_USER_AGENT'] =~ %r{(MSIE|Trident)} ? ERB::Util.url_encode(name) : name
end
def api_request?
@ -508,26 +574,16 @@ class ApplicationController < ActionController::Base
end
end
# Returns the API 'switch user' value if present
def api_switch_user_from_request
request.headers["X-Redmine-Switch-User"].to_s.presence
end
# Renders a warning flash if obj has unsaved attachments
def render_attachment_warning_if_needed(obj)
flash[:warning] = l(:warning_attachments_not_saved, obj.unsaved_attachments.size) if obj.unsaved_attachments.present?
end
# Sets the `flash` notice or error based the number of issues that did not save
#
# @param [Array, Issue] issues all of the saved and unsaved Issues
# @param [Array, Integer] unsaved_issue_ids the issue ids that were not saved
def set_flash_from_bulk_issue_save(issues, unsaved_issue_ids)
if unsaved_issue_ids.empty?
flash[:notice] = l(:notice_successful_update) unless issues.empty?
else
flash[:error] = l(:notice_failed_to_save_issues,
:count => unsaved_issue_ids.size,
:total => issues.size,
:ids => '#' + unsaved_issue_ids.join(', #'))
end
end
# Rescues an invalid query statement. Just in case...
def query_statement_invalid(exception)
logger.error "Query::StatementInvalid: #{exception.message}" if logger
@ -538,8 +594,13 @@ class ApplicationController < ActionController::Base
# Renders a 200 response for successfull updates or deletions via the API
def render_api_ok
# head :ok would return a response body with one space
render :text => '', :status => :ok, :layout => nil
render_api_head :ok
end
# Renders a head API response
def render_api_head(status)
# #head would return a response body with one space
render :text => '', :status => status, :layout => nil
end
# Renders API response on validation failure

View File

@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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
@ -84,16 +84,18 @@ class AttachmentsController < ApplicationController
@attachment = Attachment.new(:file => request.raw_post)
@attachment.author = User.current
@attachment.filename = Redmine::Utils.random_hex(16)
@attachment.filename = params[:filename].presence || Redmine::Utils.random_hex(16)
saved = @attachment.save
if @attachment.save
respond_to do |format|
format.api { render :action => 'upload', :status => :created }
end
else
respond_to do |format|
format.api { render_validation_errors(@attachment) }
end
respond_to do |format|
format.js
format.api {
if saved
render :action => 'upload', :status => :created
else
render_validation_errors(@attachment)
end
}
end
end
@ -101,9 +103,17 @@ class AttachmentsController < ApplicationController
if @attachment.container.respond_to?(:init_journal)
@attachment.container.init_journal(User.current)
end
# Make sure association callbacks are called
@attachment.container.attachments.delete(@attachment)
redirect_to_referer_or project_path(@project)
if @attachment.container
# Make sure association callbacks are called
@attachment.container.attachments.delete(@attachment)
else
@attachment.destroy
end
respond_to do |format|
format.html { redirect_to_referer_or project_path(@project) }
format.js
end
end
private
@ -118,7 +128,12 @@ private
# Checks that the file exists and is readable
def file_readable
@attachment.readable? ? true : render_404
if @attachment.readable?
true
else
logger.error "Cannot send attachment, #{@attachment.diskfile} does not exist or is unreadable."
render_404
end
end
def read_authorize

View File

@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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,57 +20,77 @@ class AuthSourcesController < ApplicationController
menu_item :ldap_authentication
before_filter :require_admin
before_filter :find_auth_source, :only => [:edit, :update, :test_connection, :destroy]
def index
@auth_source_pages, @auth_sources = paginate AuthSource, :per_page => 10
@auth_source_pages, @auth_sources = paginate AuthSource, :per_page => 25
end
def new
klass_name = params[:type] || 'AuthSourceLdap'
@auth_source = AuthSource.new_subclass_instance(klass_name, params[:auth_source])
render_404 unless @auth_source
end
def create
@auth_source = AuthSource.new_subclass_instance(params[:type], params[:auth_source])
if @auth_source.save
flash[:notice] = l(:notice_successful_create)
redirect_to :action => 'index'
redirect_to auth_sources_path
else
render :action => 'new'
end
end
def edit
@auth_source = AuthSource.find(params[:id])
end
def update
@auth_source = AuthSource.find(params[:id])
if @auth_source.update_attributes(params[:auth_source])
flash[:notice] = l(:notice_successful_update)
redirect_to :action => 'index'
redirect_to auth_sources_path
else
render :action => 'edit'
end
end
def test_connection
@auth_source = AuthSource.find(params[:id])
begin
@auth_source.test_connection
flash[:notice] = l(:notice_successful_connection)
rescue Exception => e
flash[:error] = l(:error_unable_to_connect, e.message)
end
redirect_to :action => 'index'
redirect_to auth_sources_path
end
def destroy
@auth_source = AuthSource.find(params[:id])
unless @auth_source.users.find(:first)
unless @auth_source.users.exists?
@auth_source.destroy
flash[:notice] = l(:notice_successful_delete)
end
redirect_to :action => 'index'
redirect_to auth_sources_path
end
def autocomplete_for_new_user
results = AuthSource.search(params[:term])
render :json => results.map {|result| {
'value' => result[:login],
'label' => "#{result[:login]} (#{result[:firstname]} #{result[:lastname]})",
'login' => result[:login].to_s,
'firstname' => result[:firstname].to_s,
'lastname' => result[:lastname].to_s,
'mail' => result[:mail].to_s,
'auth_source_id' => result[:auth_source_id].to_s
}}
end
private
def find_auth_source
@auth_source = AuthSource.find(params[:id])
rescue ActiveRecord::RecordNotFound
render_404
end
end

View File

@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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
@ -23,10 +23,10 @@ class AutoCompletesController < ApplicationController
q = (params[:q] || params[:term]).to_s.strip
if q.present?
scope = (params[:scope] == "all" || @project.nil? ? Issue : @project.issues).visible
if q.match(/^\d+$/)
@issues << scope.find_by_id(q.to_i)
if q.match(/\A#?(\d+)\z/)
@issues << scope.find_by_id($1.to_i)
end
@issues += scope.where("LOWER(#{Issue.table_name}.subject) LIKE ?", "%#{q.downcase}%").order("#{Issue.table_name}.id DESC").limit(10).all
@issues += scope.where("LOWER(#{Issue.table_name}.subject) LIKE LOWER(?)", "%#{q}%").order("#{Issue.table_name}.id DESC").limit(10).all
@issues.compact!
end
render :layout => false

View File

@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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
@ -25,7 +25,7 @@ class BoardsController < ApplicationController
helper :watchers
def index
@boards = @project.boards.includes(:last_message => :author).all
@boards = @project.boards.includes(:project, :last_message => :author).all
# show the board if there is only one
if @boards.size == 1
@board = @boards.first
@ -37,23 +37,29 @@ class BoardsController < ApplicationController
respond_to do |format|
format.html {
sort_init 'updated_on', 'desc'
sort_update 'created_on' => "#{Message.table_name}.created_on",
sort_update 'created_on' => "#{Message.table_name}.created_on",
'replies' => "#{Message.table_name}.replies_count",
'updated_on' => "#{Message.table_name}.updated_on"
'updated_on' => "COALESCE(last_replies_messages.created_on, #{Message.table_name}.created_on)"
@topic_count = @board.topics.count
@topic_pages = Paginator.new self, @topic_count, per_page_option, params['page']
@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)
@topic_pages = Paginator.new @topic_count, per_page_option, params['page']
@topics = @board.topics.
reorder("#{Message.table_name}.sticky DESC").
includes(:last_reply).
limit(@topic_pages.per_page).
offset(@topic_pages.offset).
order(sort_clause).
preload(:author, {:last_reply => :author}).
all
@message = Message.new(:board => @board)
render :action => 'show', :layout => !request.xhr?
}
format.atom {
@messages = @board.messages.find :all, :order => 'created_on DESC',
:include => [:author, :board],
:limit => Setting.feeds_limit.to_i
@messages = @board.messages.
reorder('created_on DESC').
includes(:author, :board).
limit(Setting.feeds_limit.to_i).
all
render_feed(@messages, :title => "#{@project}: #{@board}")
}
end
@ -94,7 +100,7 @@ class BoardsController < ApplicationController
private
def redirect_to_settings_in_projects
redirect_to :controller => 'projects', :action => 'settings', :id => @project, :tab => 'boards'
redirect_to settings_project_path(@project, :tab => 'boards')
end
def find_board_if_available

View File

@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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
@ -32,12 +32,12 @@ class CommentsController < ApplicationController
flash[:notice] = l(:label_comment_added)
end
redirect_to :controller => 'news', :action => 'show', :id => @news
redirect_to news_path(@news)
end
def destroy
@news.comments.find(params[:comment_id]).destroy
redirect_to :controller => 'news', :action => 'show', :id => @news
redirect_to news_path(@news)
end
private

View File

@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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
@ -19,16 +19,15 @@ class ContextMenusController < ApplicationController
helper :watchers
helper :issues
before_filter :find_issues, :only => :issues
def issues
@issues = Issue.visible.all(:conditions => {:id => params[:ids]}, :include => :project)
if (@issues.size == 1)
@issue = @issues.first
end
@issue_ids = @issues.map(&:id).sort
@allowed_statuses = @issues.map(&:new_statuses_allowed_to).reduce(:&)
@projects = @issues.collect(&:project).compact.uniq
@project = @projects.first if @projects.size == 1
@can = {:edit => User.current.allowed_to?(:edit_issues, @projects),
:log_time => (@project && User.current.allowed_to?(:log_time, @project)),
@ -56,12 +55,10 @@ class ContextMenusController < ApplicationController
@options_by_custom_field = {}
if @can[:edit]
custom_fields = @issues.map(&:available_custom_fields).reduce(:&).select do |f|
%w(bool list user version).include?(f.field_format) && !f.multiple?
end
custom_fields = @issues.map(&:editable_custom_fields).reduce(:&).reject(&:multiple?)
custom_fields.each do |field|
values = field.possible_values_options(@projects)
if values.any?
if values.present?
@options_by_custom_field[field] = values
end
end
@ -72,8 +69,9 @@ class ContextMenusController < ApplicationController
end
def time_entries
@time_entries = TimeEntry.all(
:conditions => {:id => params[:ids]}, :include => :project)
@time_entries = TimeEntry.where(:id => params[:ids]).preload(:project).to_a
(render_404; return) unless @time_entries.present?
@projects = @time_entries.collect(&:project).compact.uniq
@project = @projects.first if @projects.size == 1
@activities = TimeEntryActivity.shared.active

View File

@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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,20 +21,29 @@ class CustomFieldsController < ApplicationController
before_filter :require_admin
before_filter :build_new_custom_field, :only => [:new, :create]
before_filter :find_custom_field, :only => [:edit, :update, :destroy]
accept_api_auth :index
def index
@custom_fields_by_type = CustomField.find(:all).group_by {|f| f.class.name }
@tab = params[:tab] || 'IssueCustomField'
respond_to do |format|
format.html {
@custom_fields_by_type = CustomField.all.group_by {|f| f.class.name }
}
format.api {
@custom_fields = CustomField.all
}
end
end
def new
@custom_field.field_format = 'string' if @custom_field.field_format.blank?
@custom_field.default_value = nil
end
def create
if request.post? and @custom_field.save
if @custom_field.save
flash[:notice] = l(:notice_successful_create)
call_hook(:controller_custom_fields_new_after_save, :params => params, :custom_field => @custom_field)
redirect_to :action => 'index', :tab => @custom_field.class.name
redirect_to custom_fields_path(:tab => @custom_field.class.name)
else
render :action => 'new'
end
@ -44,21 +53,22 @@ class CustomFieldsController < ApplicationController
end
def update
if request.put? and @custom_field.update_attributes(params[:custom_field])
if @custom_field.update_attributes(params[:custom_field])
flash[:notice] = l(:notice_successful_update)
call_hook(:controller_custom_fields_edit_after_save, :params => params, :custom_field => @custom_field)
redirect_to :action => 'index', :tab => @custom_field.class.name
redirect_to custom_fields_path(:tab => @custom_field.class.name)
else
render :action => 'edit'
end
end
def destroy
@custom_field.destroy
redirect_to :action => 'index', :tab => @custom_field.class.name
rescue
flash[:error] = l(:error_can_not_delete_custom_field)
redirect_to :action => 'index'
begin
@custom_field.destroy
rescue
flash[:error] = l(:error_can_not_delete_custom_field)
end
redirect_to custom_fields_path(:tab => @custom_field.class.name)
end
private
@ -66,7 +76,7 @@ class CustomFieldsController < ApplicationController
def build_new_custom_field
@custom_field = CustomField.new_subclass_instance(params[:type], params[:custom_field])
if @custom_field.nil?
render_404
render :action => 'select_type'
end
end

View File

@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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
@ -27,7 +27,7 @@ class DocumentsController < ApplicationController
def index
@sort_by = %w(category date title author).include?(params[:sort_by]) ? params[:sort_by] : 'category'
documents = @project.documents.find :all, :include => [:attachments, :category]
documents = @project.documents.includes(:attachments, :category).all
case @sort_by
when 'date'
@grouped = documents.group_by {|d| d.updated_on.to_date }
@ -43,7 +43,7 @@ class DocumentsController < ApplicationController
end
def show
@attachments = @document.attachments.find(:all, :order => "created_on DESC")
@attachments = @document.attachments.all
end
def new
@ -58,7 +58,7 @@ class DocumentsController < ApplicationController
if @document.save
render_attachment_warning_if_needed(@document)
flash[:notice] = l(:notice_successful_create)
redirect_to :action => 'index', :project_id => @project
redirect_to project_documents_path(@project)
else
render :action => 'new'
end
@ -71,7 +71,7 @@ class DocumentsController < ApplicationController
@document.safe_attributes = params[:document]
if request.put? and @document.save
flash[:notice] = l(:notice_successful_update)
redirect_to :action => 'show', :id => @document
redirect_to document_path(@document)
else
render :action => 'edit'
end
@ -79,7 +79,7 @@ class DocumentsController < ApplicationController
def destroy
@document.destroy if request.delete?
redirect_to :controller => 'documents', :action => 'index', :project_id => @project
redirect_to project_documents_path(@project)
end
def add_attachment
@ -89,6 +89,6 @@ class DocumentsController < ApplicationController
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
redirect_to document_path(@document)
end
end

View File

@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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,13 +18,26 @@
class EnumerationsController < ApplicationController
layout 'admin'
before_filter :require_admin
before_filter :require_admin, :except => :index
before_filter :require_admin_or_api_request, :only => :index
before_filter :build_new_enumeration, :only => [:new, :create]
before_filter :find_enumeration, :only => [:edit, :update, :destroy]
accept_api_auth :index
helper :custom_fields
def index
respond_to do |format|
format.html
format.api {
@klass = Enumeration.get_subclass(params[:type])
if @klass
@enumerations = @klass.shared.sorted.all
else
render_404
end
}
end
end
def new
@ -33,7 +46,7 @@ class EnumerationsController < ApplicationController
def create
if request.post? && @enumeration.save
flash[:notice] = l(:notice_successful_create)
redirect_to :action => 'index', :type => @enumeration.type
redirect_to enumerations_path
else
render :action => 'new'
end
@ -45,7 +58,7 @@ class EnumerationsController < ApplicationController
def update
if request.put? && @enumeration.update_attributes(params[:enumeration])
flash[:notice] = l(:notice_successful_update)
redirect_to :action => 'index', :type => @enumeration.type
redirect_to enumerations_path
else
render :action => 'edit'
end
@ -55,16 +68,14 @@ class EnumerationsController < ApplicationController
if !@enumeration.in_use?
# No associated objects
@enumeration.destroy
redirect_to :action => 'index'
redirect_to enumerations_path
return
elsif params[:reassign_to_id].present? && (reassign_to = @enumeration.class.find_by_id(params[:reassign_to_id].to_i))
@enumeration.destroy(reassign_to)
redirect_to enumerations_path
return
elsif params[:reassign_to_id]
if reassign_to = @enumeration.class.find_by_id(params[:reassign_to_id])
@enumeration.destroy(reassign_to)
redirect_to :action => 'index'
return
end
end
@enumerations = @enumeration.class.all - [@enumeration]
@enumerations = @enumeration.class.system.all - [@enumeration]
end
private

View File

@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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
@ -31,8 +31,8 @@ class FilesController < ApplicationController
'size' => "#{Attachment.table_name}.filesize",
'downloads' => "#{Attachment.table_name}.downloads"
@containers = [ Project.find(@project.id, :include => :attachments, :order => sort_clause)]
@containers += @project.versions.find(:all, :include => :attachments, :order => sort_clause).sort.reverse
@containers = [ Project.includes(:attachments).reorder(sort_clause).find(@project.id)]
@containers += @project.versions.includes(:attachments).reorder(sort_clause).all.sort.reverse
render :layout => !request.xhr?
end

View File

@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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
@ -84,16 +84,16 @@ class GroupsController < ApplicationController
@group.destroy
respond_to do |format|
format.html { redirect_to(groups_url) }
format.html { redirect_to(groups_path) }
format.api { render_api_ok }
end
end
def add_users
@users = User.find_all_by_id(params[:user_id] || params[:user_ids])
@users = User.where(:id => (params[:user_id] || params[:user_ids])).all
@group.users << @users if request.post?
respond_to do |format|
format.html { redirect_to :controller => 'groups', :action => 'edit', :id => @group, :tab => 'users' }
format.html { redirect_to edit_group_path(@group, :tab => 'users') }
format.js
format.api { render_api_ok }
end
@ -102,22 +102,23 @@ class GroupsController < ApplicationController
def remove_user
@group.users.delete(User.find(params[:user_id])) if request.delete?
respond_to do |format|
format.html { redirect_to :controller => 'groups', :action => 'edit', :id => @group, :tab => 'users' }
format.html { redirect_to edit_group_path(@group, :tab => 'users') }
format.js
format.api { render_api_ok }
end
end
def autocomplete_for_user
@users = User.active.not_in_group(@group).like(params[:q]).all(:limit => 100)
render :layout => false
respond_to do |format|
format.js
end
end
def edit_membership
@membership = Member.edit_membership(params[:membership_id], params[:membership], @group)
@membership.save if request.post?
respond_to do |format|
format.html { redirect_to :controller => 'groups', :action => 'edit', :id => @group, :tab => 'memberships' }
format.html { redirect_to edit_group_path(@group, :tab => 'memberships') }
format.js
end
end
@ -125,7 +126,7 @@ class GroupsController < ApplicationController
def destroy_membership
Member.find(params[:membership_id]).destroy if request.post?
respond_to do |format|
format.html { redirect_to :controller => 'groups', :action => 'edit', :id => @group, :tab => 'memberships' }
format.html { redirect_to edit_group_path(@group, :tab => 'memberships') }
format.js
end
end

View File

@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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
@ -23,17 +23,17 @@ class IssueCategoriesController < ApplicationController
before_filter :find_project_by_project_id, :only => [:index, :new, :create]
before_filter :authorize
accept_api_auth :index, :show, :create, :update, :destroy
def index
respond_to do |format|
format.html { redirect_to :controller => 'projects', :action => 'settings', :tab => 'categories', :id => @project }
format.html { redirect_to_settings_in_projects }
format.api { @categories = @project.issue_categories.all }
end
end
def show
respond_to do |format|
format.html { redirect_to :controller => 'projects', :action => 'settings', :tab => 'categories', :id => @project }
format.html { redirect_to_settings_in_projects }
format.api
end
end
@ -55,7 +55,7 @@ class IssueCategoriesController < ApplicationController
respond_to do |format|
format.html do
flash[:notice] = l(:notice_successful_create)
redirect_to :controller => 'projects', :action => 'settings', :tab => 'categories', :id => @project
redirect_to_settings_in_projects
end
format.js
format.api { render :action => 'show', :status => :created, :location => issue_category_path(@category) }
@ -78,7 +78,7 @@ class IssueCategoriesController < ApplicationController
respond_to do |format|
format.html {
flash[:notice] = l(:notice_successful_update)
redirect_to :controller => 'projects', :action => 'settings', :tab => 'categories', :id => @project
redirect_to_settings_in_projects
}
format.api { render_api_ok }
end
@ -92,14 +92,14 @@ class IssueCategoriesController < ApplicationController
def destroy
@issue_count = @category.issues.size
if @issue_count == 0 || params[:todo] || api_request?
if @issue_count == 0 || params[:todo] || api_request?
reassign_to = nil
if params[:reassign_to_id] && (params[:todo] == 'reassign' || params[:todo].blank?)
reassign_to = @project.issue_categories.find_by_id(params[:reassign_to_id])
end
@category.destroy(reassign_to)
respond_to do |format|
format.html { redirect_to :controller => 'projects', :action => 'settings', :id => @project, :tab => 'categories' }
format.html { redirect_to_settings_in_projects }
format.api { render_api_ok }
end
return
@ -107,7 +107,12 @@ class IssueCategoriesController < ApplicationController
@categories = @project.issue_categories - [@category]
end
private
private
def redirect_to_settings_in_projects
redirect_to settings_project_path(@project, :tab => 'categories')
end
# Wrap ApplicationController's find_model_object method to set
# @category instead of just @issue_category
def find_model_object

View File

@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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
@ -48,9 +48,9 @@ class IssueRelationsController < ApplicationController
saved = @relation.save
respond_to do |format|
format.html { redirect_to :controller => 'issues', :action => 'show', :id => @issue }
format.html { redirect_to issue_path(@issue) }
format.js {
@relations = @issue.relations.select {|r| r.other_issue(@issue) && r.other_issue(@issue).visible? }
@relations = @issue.reload.relations.select {|r| r.other_issue(@issue) && r.other_issue(@issue).visible? }
}
format.api {
if saved
@ -67,7 +67,7 @@ class IssueRelationsController < ApplicationController
@relation.destroy
respond_to do |format|
format.html { redirect_to issue_path } # TODO : does this really work since @issue is always nil? What is it useful to?
format.html { redirect_to issue_path(@relation.issue_from) }
format.js
format.api { render_api_ok }
end

View File

@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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
@ -25,11 +25,11 @@ class IssueStatusesController < ApplicationController
def index
respond_to do |format|
format.html {
@issue_status_pages, @issue_statuses = paginate :issue_statuses, :per_page => 25, :order => "position"
@issue_status_pages, @issue_statuses = paginate IssueStatus.sorted, :per_page => 25
render :action => "index", :layout => false if request.xhr?
}
format.api {
@issue_statuses = IssueStatus.all(:order => 'position')
@issue_statuses = IssueStatus.order('position').all
}
end
end
@ -40,9 +40,9 @@ class IssueStatusesController < ApplicationController
def create
@issue_status = IssueStatus.new(params[:issue_status])
if request.post? && @issue_status.save
if @issue_status.save
flash[:notice] = l(:notice_successful_create)
redirect_to :action => 'index'
redirect_to issue_statuses_path
else
render :action => 'new'
end
@ -54,9 +54,9 @@ class IssueStatusesController < ApplicationController
def update
@issue_status = IssueStatus.find(params[:id])
if request.put? && @issue_status.update_attributes(params[:issue_status])
if @issue_status.update_attributes(params[:issue_status])
flash[:notice] = l(:notice_successful_update)
redirect_to :action => 'index'
redirect_to issue_statuses_path
else
render :action => 'edit'
end
@ -64,11 +64,11 @@ class IssueStatusesController < ApplicationController
def destroy
IssueStatus.find(params[:id]).destroy
redirect_to :action => 'index'
redirect_to issue_statuses_path
rescue
flash[:error] = l(:error_unable_delete_issue_status)
redirect_to :action => 'index'
end
redirect_to issue_statuses_path
end
def update_issue_done_ratio
if request.post? && IssueStatus.update_issue_done_ratios
@ -76,6 +76,6 @@ class IssueStatusesController < ApplicationController
else
flash[:error] = l(:error_issue_done_ratios_not_updated)
end
redirect_to :action => 'index'
redirect_to issue_statuses_path
end
end

View File

@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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,11 +21,11 @@ class IssuesController < ApplicationController
before_filter :find_issue, :only => [:show, :edit, :update]
before_filter :find_issues, :only => [:bulk_edit, :bulk_update, :destroy]
before_filter :find_project, :only => [:new, :create]
before_filter :find_project, :only => [:new, :create, :update_form]
before_filter :authorize, :except => [:index]
before_filter :find_optional_project, :only => [:index]
before_filter :check_for_default_issue_status, :only => [:new, :create]
before_filter :build_new_issue_from_params, :only => [:new, :create]
before_filter :build_new_issue_from_params, :only => [:new, :create, :update_form]
accept_rss_auth :index, :show
accept_api_auth :index, :show, :create, :update, :destroy
@ -56,22 +56,27 @@ class IssuesController < ApplicationController
retrieve_query
sort_init(@query.sort_criteria.empty? ? [['id', 'desc']] : @query.sort_criteria)
sort_update(@query.sortable_columns)
@query.sort_criteria = sort_criteria.to_a
if @query.valid?
case params[:format]
when 'csv', 'pdf'
@limit = Setting.issues_export_limit.to_i
if params[:columns] == 'all'
@query.column_names = @query.available_inline_columns.map(&:name)
end
when 'atom'
@limit = Setting.feeds_limit.to_i
when 'xml', 'json'
@offset, @limit = api_offset_and_limit
@query.column_names = %w(author)
else
@limit = per_page_option
end
@issue_count = @query.issue_count
@issue_pages = Paginator.new self, @issue_count, @limit, params['page']
@offset ||= @issue_pages.current.offset
@issue_pages = Paginator.new @issue_count, @limit, params['page']
@offset ||= @issue_pages.offset
@issues = @query.issues(:include => [:assigned_to, :tracker, :priority, :category, :fixed_version],
:order => sort_clause,
:offset => @offset,
@ -81,11 +86,11 @@ class IssuesController < ApplicationController
respond_to do |format|
format.html { render :template => 'issues/index', :layout => !request.xhr? }
format.api {
Issue.load_relations(@issues) if include_in_api_response?('relations')
Issue.load_visible_relations(@issues) if include_in_api_response?('relations')
}
format.atom { render_feed(@issues, :title => "#{@project || Setting.app_title}: #{l(:label_issue_plural)}") }
format.csv { send_data(issues_to_csv(@issues, @project, @query, params), :type => 'text/csv; header=present', :filename => 'export.csv') }
format.pdf { send_data(issues_to_pdf(@issues, @project, @query), :type => 'application/pdf', :filename => 'export.pdf') }
format.csv { send_data(query_to_csv(@issues, @query, params), :type => 'text/csv; header=present', :filename => 'issues.csv') }
format.pdf { send_data(issues_to_pdf(@issues, @project, @query), :type => 'application/pdf', :filename => 'issues.pdf') }
end
else
respond_to do |format|
@ -99,8 +104,12 @@ class IssuesController < ApplicationController
end
def show
@journals = @issue.journals.find(:all, :include => [:user, :details], :order => "#{Journal.table_name}.created_on ASC")
@journals = @issue.journals.includes(:user, :details).reorder("#{Journal.table_name}.id ASC").all
@journals.each_with_index {|j,i| j.indice = i+1}
@journals.reject!(&:private_notes?) unless User.current.allowed_to?(:view_private_notes, @issue.project)
Journal.preload_journals_details_custom_fields(@journals)
# TODO: use #select! when ruby1.8 support is dropped
@journals.reject! {|journal| !journal.notes? && journal.visible_details.empty?}
@journals.reverse! if User.current.wants_comments_in_reverse_order?
@changesets = @issue.changesets.visible.all
@ -111,6 +120,8 @@ class IssuesController < ApplicationController
@edit_allowed = User.current.allowed_to?(:edit_issues, @project)
@priorities = IssuePriority.active
@time_entry = TimeEntry.new(:issue => @issue, :project => @issue.project)
@relation = IssueRelation.new
respond_to do |format|
format.html {
retrieve_previous_and_next_issue_ids
@ -118,7 +129,10 @@ class IssuesController < ApplicationController
}
format.api
format.atom { render :template => 'journals/index', :layout => false, :content_type => 'application/atom+xml' }
format.pdf { send_data(issue_to_pdf(@issue), :type => 'application/pdf', :filename => "#{@project.identifier}-#{@issue.id}.pdf") }
format.pdf {
pdf = issue_to_pdf(@issue, :journals => @journals)
send_data(pdf, :type => 'application/pdf', :filename => "#{@project.identifier}-#{@issue.id}.pdf")
}
end
end
@ -127,7 +141,6 @@ class IssuesController < ApplicationController
def new
respond_to do |format|
format.html { render :action => 'new', :layout => !request.xhr? }
format.js { render :partial => 'update_form' }
end
end
@ -140,8 +153,12 @@ class IssuesController < ApplicationController
format.html {
render_attachment_warning_if_needed(@issue)
flash[:notice] = l(:notice_issue_successful_create, :id => view_context.link_to("##{@issue.id}", issue_path(@issue), :title => @issue.subject))
redirect_to(params[:continue] ? { :action => 'new', :project_id => @issue.project, :issue => {:tracker_id => @issue.tracker, :parent_issue_id => @issue.parent_issue_id}.reject {|k,v| v.nil?} } :
{ :action => 'show', :id => @issue })
if params[:continue]
attrs = {:tracker_id => @issue.tracker, :parent_issue_id => @issue.parent_issue_id}.reject {|k,v| v.nil?}
redirect_to new_project_issue_path(@issue.project, :issue => attrs)
else
redirect_to issue_path(@issue)
end
}
format.api { render :action => 'show', :status => :created, :location => issue_url(@issue) }
end
@ -168,11 +185,12 @@ class IssuesController < ApplicationController
@issue.save_attachments(params[:attachments] || (params[:issue] && params[:issue][:uploads]))
saved = false
begin
saved = @issue.save_issue_with_child_records(params, @time_entry)
saved = save_issue_with_child_records
rescue ActiveRecord::StaleObjectError
@conflict = true
if params[:last_journal_id]
@conflict_journals = @issue.journals_after(params[:last_journal_id]).all
@conflict_journals.reject!(&:private_notes?) unless User.current.allowed_to?(:view_private_notes, @issue.project)
end
end
@ -181,7 +199,7 @@ class IssuesController < ApplicationController
flash[:notice] = l(:notice_successful_update) unless @issue.current_journal.new_record?
respond_to do |format|
format.html { redirect_back_or_default({:action => 'show', :id => @issue}) }
format.html { redirect_back_or_default issue_path(@issue) }
format.api { render_api_ok }
end
else
@ -192,6 +210,11 @@ class IssuesController < ApplicationController
end
end
# Updates the issue form when changing the project, status or tracker
# on issue creation/update
def update_form
end
# Bulk edit/copy a set of issues
def bulk_edit
@issues.sort!
@ -214,7 +237,7 @@ class IssuesController < ApplicationController
else
@available_statuses = @issues.map(&:new_statuses_allowed_to).reduce(:&)
end
@custom_fields = target_projects.map{|p|p.all_issue_custom_fields}.reduce(:&)
@custom_fields = target_projects.map{|p|p.all_issue_custom_fields.visible}.reduce(:&)
@assignables = target_projects.map(&:assignable_users).reduce(:&)
@trackers = target_projects.map(&:trackers).reduce(:&)
@versions = target_projects.map {|p| p.shared_versions.open}.reduce(:&)
@ -225,7 +248,9 @@ class IssuesController < ApplicationController
end
@safe_attributes = @issues.map(&:safe_attribute_names).reduce(:&)
render :layout => false if request.xhr?
@issue_params = params[:issue] || {}
@issue_params[:custom_field_values] ||= {}
end
def bulk_update
@ -233,8 +258,8 @@ class IssuesController < ApplicationController
@copy = params[:copy].present?
attributes = parse_params_for_bulk_issue_attributes(params)
unsaved_issue_ids = []
moved_issues = []
unsaved_issues = []
saved_issues = []
if @copy && params[:copy_subtasks].present?
# Descendant issues will be copied with the parent task
@ -242,52 +267,62 @@ class IssuesController < ApplicationController
@issues.reject! {|issue| @issues.detect {|other| issue.is_descendant_of?(other)}}
end
@issues.each do |issue|
issue.reload
@issues.each do |orig_issue|
orig_issue.reload
if @copy
issue = issue.copy({},
issue = orig_issue.copy({},
:attachments => params[:copy_attachments].present?,
:subtasks => params[:copy_subtasks].present?
)
else
issue = orig_issue
end
journal = issue.init_journal(User.current, params[:notes])
issue.safe_attributes = attributes
call_hook(:controller_issues_bulk_edit_before_save, { :params => params, :issue => issue })
if issue.save
moved_issues << issue
saved_issues << issue
else
# Keep unsaved issue ids to display them in flash error
unsaved_issue_ids << issue.id
unsaved_issues << orig_issue
end
end
set_flash_from_bulk_issue_save(@issues, unsaved_issue_ids)
if params[:follow]
if @issues.size == 1 && moved_issues.size == 1
redirect_to :controller => 'issues', :action => 'show', :id => moved_issues.first
elsif moved_issues.map(&:project).uniq.size == 1
redirect_to :controller => 'issues', :action => 'index', :project_id => moved_issues.map(&:project).first
if unsaved_issues.empty?
flash[:notice] = l(:notice_successful_update) unless saved_issues.empty?
if params[:follow]
if @issues.size == 1 && saved_issues.size == 1
redirect_to issue_path(saved_issues.first)
elsif saved_issues.map(&:project).uniq.size == 1
redirect_to project_issues_path(saved_issues.map(&:project).first)
end
else
redirect_back_or_default _project_issues_path(@project)
end
else
redirect_back_or_default({:controller => 'issues', :action => 'index', :project_id => @project})
@saved_issues = @issues
@unsaved_issues = unsaved_issues
@issues = Issue.visible.where(:id => @unsaved_issues.map(&:id)).all
bulk_edit
render :action => 'bulk_edit'
end
end
def destroy
@hours = TimeEntry.sum(:hours, :conditions => ['issue_id IN (?)', @issues]).to_f
@hours = TimeEntry.where(:issue_id => @issues.map(&:id)).sum(:hours).to_f
if @hours > 0
case params[:todo]
when 'destroy'
# nothing to do
when 'nullify'
TimeEntry.update_all('issue_id = NULL', ['issue_id IN (?)', @issues])
TimeEntry.where(['issue_id IN (?)', @issues]).update_all('issue_id = NULL')
when 'reassign'
reassign_to = @project.issues.find_by_id(params[:reassign_to_id])
if reassign_to.nil?
flash.now[:error] = l(:error_issue_not_found_in_project)
return
else
TimeEntry.update_all("issue_id = #{reassign_to.id}", ['issue_id IN (?)', @issues])
TimeEntry.where(['issue_id IN (?)', @issues]).
update_all("issue_id = #{reassign_to.id}")
end
else
# display the destroy form if it's a user request
@ -302,24 +337,12 @@ class IssuesController < ApplicationController
end
end
respond_to do |format|
format.html { redirect_back_or_default(:action => 'index', :project_id => @project) }
format.html { redirect_back_or_default _project_issues_path(@project) }
format.api { render_api_ok }
end
end
private
def find_issue
# Issue.visible.find(...) can not be used to redirect user to the login form
# if the issue actually exists but requires authentication
@issue = Issue.find(params[:id], :include => [:project, :tracker, :status, :author, :priority, :category])
unless @issue.visible?
deny_access
return
end
@project = @issue.project
rescue ActiveRecord::RecordNotFound
render_404
end
private
def find_project
project_id = params[:project_id] || (params[:issue] && params[:issue][:project_id])
@ -354,8 +377,7 @@ private
@time_entry = TimeEntry.new(:issue => @issue, :project => @issue.project)
@time_entry.attributes = params[:time_entry]
@notes = params[:notes] || (params[:issue].present? ? params[:issue][:notes] : nil)
@issue.init_journal(User.current, @notes)
@issue.init_journal(User.current)
issue_attributes = params[:issue]
if issue_attributes && params[:conflict_resolution]
@ -364,7 +386,7 @@ private
issue_attributes = issue_attributes.dup
issue_attributes.delete(:lock_version)
when 'add_notes'
issue_attributes = {}
issue_attributes = issue_attributes.slice(:notes)
when 'cancel'
redirect_to issue_path(@issue)
return false
@ -398,7 +420,7 @@ private
end
@issue.project = @project
@issue.author = User.current
@issue.author ||= User.current
# Tracker must be set before custom field values
@issue.tracker ||= @project.trackers.find((params[:issue] && params[:issue][:tracker_id]) || params[:tracker_id] || :first)
if @issue.tracker.nil?
@ -409,8 +431,11 @@ private
@issue.safe_attributes = params[:issue]
@priorities = IssuePriority.active
@allowed_statuses = @issue.new_statuses_allowed_to(User.current, true)
@available_watchers = (@issue.project.users.sort + @issue.watcher_users).uniq
@allowed_statuses = @issue.new_statuses_allowed_to(User.current, @issue.new_record?)
@available_watchers = @issue.watcher_users
if @issue.project.users.count <= 20
@available_watchers = (@available_watchers + @issue.project.users.sort).uniq
end
end
def check_for_default_issue_status
@ -435,4 +460,26 @@ private
end
attributes
end
# Saves @issue and a time_entry from the parameters
def save_issue_with_child_records
Issue.transaction do
if params[:time_entry] && (params[:time_entry][:hours].present? || params[:time_entry][:comments].present?) && User.current.allowed_to?(:log_time, @issue.project)
time_entry = @time_entry || TimeEntry.new
time_entry.project = @issue.project
time_entry.issue = @issue
time_entry.user = User.current
time_entry.spent_on = User.current.today
time_entry.attributes = params[:time_entry]
@issue.time_entries << time_entry
end
call_hook(:controller_issues_edit_before_save, { :params => params, :issue => @issue, :time_entry => time_entry, :journal => @issue.current_journal})
if @issue.save
call_hook(:controller_issues_edit_after_save, { :params => params, :issue => @issue, :time_entry => time_entry, :journal => @issue.current_journal})
else
raise ActiveRecord::Rollback
end
end
end
end

View File

@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@ -57,18 +57,20 @@ class JournalsController < ApplicationController
end
def new
journal = Journal.find(params[:journal_id]) if params[:journal_id]
if journal
user = journal.user
text = journal.notes
@journal = Journal.visible.find(params[:journal_id]) if params[:journal_id]
if @journal
user = @journal.user
text = @journal.notes
else
user = @issue.author
text = @issue.description
end
# Replaces pre blocks with [...]
text = text.to_s.strip.gsub(%r{<pre>((.|\s)*?)</pre>}m, '[...]')
text = text.to_s.strip.gsub(%r{<pre>(.*?)</pre>}m, '[...]')
@content = "#{ll(Setting.default_language, :text_user_wrote, user)}\n> "
@content << text.gsub(/(\r?\n|\r\n?)/, "\n> ") + "\n\n"
rescue ActiveRecord::RecordNotFound
render_404
end
def edit
@ -78,7 +80,7 @@ class JournalsController < ApplicationController
@journal.destroy if @journal.details.empty? && @journal.notes.blank?
call_hook(:controller_journals_edit_post, { :journal => @journal, :params => params})
respond_to do |format|
format.html { redirect_to :controller => 'issues', :action => 'show', :id => @journal.journalized_id }
format.html { redirect_to issue_path(@journal.journalized) }
format.js { render :action => 'update' }
end
else
@ -95,17 +97,9 @@ class JournalsController < ApplicationController
private
def find_journal
@journal = Journal.find(params[:id])
@journal = Journal.visible.find(params[:id])
@project = @journal.journalized.project
rescue ActiveRecord::RecordNotFound
render_404
end
# TODO: duplicated in IssuesController
def find_issue
@issue = Issue.find(params[:id], :include => [:project, :tracker, :status, :author, :priority, :category])
@project = @issue.project
rescue ActiveRecord::RecordNotFound
render_404
end
end

View File

@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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
@ -26,14 +26,13 @@ class MembersController < ApplicationController
def index
@offset, @limit = api_offset_and_limit
@member_count = @project.member_principals.count
@member_pages = Paginator.new self, @member_count, @limit, params['page']
@offset ||= @member_pages.current.offset
@members = @project.member_principals.all(
:order => "#{Member.table_name}.id",
:limit => @limit,
:offset => @offset
)
@member_pages = Paginator.new @member_count, @limit, params['page']
@offset ||= @member_pages.offset
@members = @project.member_principals.
order("#{Member.table_name}.id").
limit(@limit).
offset(@offset).
all
respond_to do |format|
format.html { head 406 }
format.api
@ -63,7 +62,7 @@ class MembersController < ApplicationController
end
respond_to do |format|
format.html { redirect_to :controller => 'projects', :action => 'settings', :tab => 'members', :id => @project }
format.html { redirect_to_settings_in_projects }
format.js { @members = members }
format.api {
@member = members.first
@ -82,7 +81,7 @@ class MembersController < ApplicationController
end
saved = @member.save
respond_to do |format|
format.html { redirect_to :controller => 'projects', :action => 'settings', :tab => 'members', :id => @project }
format.html { redirect_to_settings_in_projects }
format.js
format.api {
if saved
@ -99,7 +98,7 @@ class MembersController < ApplicationController
@member.destroy
end
respond_to do |format|
format.html { redirect_to :controller => 'projects', :action => 'settings', :tab => 'members', :id => @project }
format.html { redirect_to_settings_in_projects }
format.js
format.api {
if @member.destroyed?
@ -112,7 +111,14 @@ class MembersController < ApplicationController
end
def autocomplete
@principals = Principal.active.not_member_of(@project).like(params[:q]).all(:limit => 100)
render :layout => false
respond_to do |format|
format.js
end
end
private
def redirect_to_settings_in_projects
redirect_to settings_project_path(@project, :tab => 'members')
end
end

View File

@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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
@ -19,6 +19,7 @@ class MessagesController < ApplicationController
menu_item :boards
default_search_scope :messages
before_filter :find_board, :only => [:new, :preview]
before_filter :find_attachments, :only => [:preview]
before_filter :find_message, :except => [:new, :preview]
before_filter :authorize, :except => [:preview, :edit, :destroy]
@ -34,16 +35,18 @@ class MessagesController < ApplicationController
page = params[:page]
# Find the page of the requested reply
if params[:r] && page.nil?
offset = @topic.children.count(:conditions => ["#{Message.table_name}.id < ?", params[:r].to_i])
offset = @topic.children.where("#{Message.table_name}.id < ?", params[:r].to_i).count
page = 1 + offset / REPLIES_PER_PAGE
end
@reply_count = @topic.children.count
@reply_pages = Paginator.new self, @reply_count, REPLIES_PER_PAGE, page
@replies = @topic.children.find(:all, :include => [:author, :attachments, {:board => :project}],
:order => "#{Message.table_name}.created_on ASC",
:limit => @reply_pages.items_per_page,
:offset => @reply_pages.current.offset)
@reply_pages = Paginator.new @reply_count, REPLIES_PER_PAGE, page
@replies = @topic.children.
includes(:author, :attachments, {:board => :project}).
reorder("#{Message.table_name}.created_on ASC").
limit(@reply_pages.per_page).
offset(@reply_pages.offset).
all
@reply = Message.new(:subject => "RE: #{@message.subject}")
render :action => "show", :layout => false if request.xhr?
@ -110,12 +113,11 @@ class MessagesController < ApplicationController
@subject = "RE: #{@subject}" unless @subject.starts_with?('RE:')
@content = "#{ll(Setting.default_language, :text_user_wrote, @message.author)}\n> "
@content << @message.content.to_s.strip.gsub(%r{<pre>((.|\s)*?)</pre>}m, '[...]').gsub(/(\r?\n|\r\n?)/, "\n> ") + "\n\n"
@content << @message.content.to_s.strip.gsub(%r{<pre>(.*?)</pre>}m, '[...]').gsub(/(\r?\n|\r\n?)/, "\n> ") + "\n\n"
end
def preview
message = @board.messages.find_by_id(params[:id])
@attachements = message.attachments if message
@text = (params[:message] || params[:reply])[:content]
@previewed = message
render :partial => 'common/preview'
@ -123,17 +125,18 @@ class MessagesController < ApplicationController
private
def find_message
find_board
@message = @board.messages.find(params[:id], :include => :parent)
return unless find_board
@message = @board.messages.includes(:parent).find(params[:id])
@topic = @message.root
rescue ActiveRecord::RecordNotFound
render_404
end
def find_board
@board = Board.find(params[:board_id], :include => :project)
@board = Board.includes(:project).find(params[:board_id])
@project = @board.project
rescue ActiveRecord::RecordNotFound
render_404
nil
end
end

View File

@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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,8 @@
class MyController < ApplicationController
before_filter :require_login
# let user change user's password when user has to
skip_before_filter :check_password_change, :only => :password
helper :issues
helper :users
@ -53,13 +55,11 @@ class MyController < ApplicationController
if request.post?
@user.safe_attributes = params[:user]
@user.pref.attributes = params[:pref]
@user.pref[:no_self_notified] = (params[:no_self_notified] == '1')
if @user.save
@user.pref.save
@user.notified_project_ids = (@user.mail_notification == 'selected' ? params[:notified_project_ids] : [])
set_language_if_valid @user.language
flash[:notice] = l(:notice_account_updated)
redirect_to :action => 'account'
redirect_to my_account_path
return
end
end
@ -69,7 +69,7 @@ class MyController < ApplicationController
def destroy
@user = User.current
unless @user.own_account_deletable?
redirect_to :action => 'account'
redirect_to my_account_path
return
end
@ -88,18 +88,21 @@ class MyController < ApplicationController
@user = User.current
unless @user.change_password_allowed?
flash[:error] = l(:notice_can_t_change_password)
redirect_to :action => 'account'
redirect_to my_account_path
return
end
if request.post?
if @user.check_password?(params[:password])
if !@user.check_password?(params[:password])
flash.now[:error] = l(:notice_account_wrong_password)
elsif params[:password] == params[:new_password]
flash.now[:error] = l(:notice_new_password_must_be_different)
else
@user.password, @user.password_confirmation = params[:new_password], params[:new_password_confirmation]
@user.must_change_passwd = false
if @user.save
flash[:notice] = l(:notice_account_password_updated)
redirect_to :action => 'account'
redirect_to my_account_path
end
else
flash[:error] = l(:notice_account_wrong_password)
end
end
end
@ -114,7 +117,7 @@ class MyController < ApplicationController
User.current.rss_key
flash[:notice] = l(:notice_feeds_access_key_reseted)
end
redirect_to :action => 'account'
redirect_to my_account_path
end
# Create a new API key
@ -127,7 +130,7 @@ class MyController < ApplicationController
User.current.api_key
flash[:notice] = l(:notice_api_access_key_reseted)
end
redirect_to :action => 'account'
redirect_to my_account_path
end
# User's page layout configuration
@ -136,7 +139,7 @@ class MyController < ApplicationController
@blocks = @user.pref[:my_page_layout] || DEFAULT_LAYOUT.dup
@block_options = []
BLOCKS.each do |k, v|
unless %w(top left right).detect {|f| (@blocks[f] ||= []).include?(k)}
unless @blocks.values.flatten.include?(k)
@block_options << [l("my.blocks.#{v}", :default => [v, v.to_s.humanize]), k.dasherize]
end
end
@ -147,16 +150,17 @@ class MyController < ApplicationController
# params[:block] : id of the block to add
def add_block
block = params[:block].to_s.underscore
(render :nothing => true; return) unless block && (BLOCKS.keys.include? block)
@user = User.current
layout = @user.pref[:my_page_layout] || {}
# remove if already present in a group
%w(top left right).each {|f| (layout[f] ||= []).delete block }
# add it on top
layout['top'].unshift block
@user.pref[:my_page_layout] = layout
@user.pref.save
redirect_to :action => 'page_layout'
if block.present? && BLOCKS.key?(block)
@user = User.current
layout = @user.pref[:my_page_layout] || {}
# remove if already present in a group
%w(top left right).each {|f| (layout[f] ||= []).delete block }
# add it on top
layout['top'].unshift block
@user.pref[:my_page_layout] = layout
@user.pref.save
end
redirect_to my_page_layout_path
end
# Remove a block to user's page
@ -169,7 +173,7 @@ class MyController < ApplicationController
%w(top left right).each {|f| (layout[f] ||= []).delete block }
@user.pref[:my_page_layout] = layout
@user.pref.save
redirect_to :action => 'page_layout'
redirect_to my_page_layout_path
end
# Change blocks order on user's page

View File

@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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
@ -40,13 +40,13 @@ class NewsController < ApplicationController
scope = @project ? @project.news.visible : News.visible
@news_count = scope.count
@news_pages = Paginator.new self, @news_count, @limit, params['page']
@offset ||= @news_pages.current.offset
@newss = scope.all(:include => [:author, :project],
:order => "#{News.table_name}.created_on DESC",
:offset => @offset,
:limit => @limit)
@news_pages = Paginator.new @news_count, @limit, params['page']
@offset ||= @news_pages.offset
@newss = scope.includes([:author, :project]).
order("#{News.table_name}.created_on DESC").
limit(@limit).
offset(@offset).
all
respond_to do |format|
format.html {
@news = News.new # for adding news inline
@ -73,7 +73,7 @@ class NewsController < ApplicationController
if @news.save
render_attachment_warning_if_needed(@news)
flash[:notice] = l(:notice_successful_create)
redirect_to :controller => 'news', :action => 'index', :project_id => @project
redirect_to project_news_index_path(@project)
else
render :action => 'new'
end
@ -88,7 +88,7 @@ class NewsController < ApplicationController
if @news.save
render_attachment_warning_if_needed(@news)
flash[:notice] = l(:notice_successful_update)
redirect_to :action => 'show', :id => @news
redirect_to news_path(@news)
else
render :action => 'edit'
end
@ -96,7 +96,7 @@ class NewsController < ApplicationController
def destroy
@news.destroy
redirect_to :action => 'index', :project_id => @project
redirect_to project_news_index_path(@project)
end
private

View File

@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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
@ -16,17 +16,17 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class PreviewsController < ApplicationController
before_filter :find_project
before_filter :find_project, :find_attachments
def issue
@issue = @project.issues.find_by_id(params[:id]) unless params[:id].blank?
if @issue
@attachements = @issue.attachments
@description = params[:issue] && params[:issue][:description]
if @description && @description.gsub(/(\r?\n|\n\r?)/, "\n") == @issue.description.to_s.gsub(/(\r?\n|\n\r?)/, "\n")
@description = nil
end
@notes = params[:notes]
# params[:notes] is useful for preview of notes in issue history
@notes = params[:notes] || (params[:issue] ? params[:issue][:notes] : nil)
else
@description = (params[:issue] ? params[:issue][:description] : nil)
end
@ -34,6 +34,9 @@ class PreviewsController < ApplicationController
end
def news
if params[:id].present? && news = News.visible.find_by_id(params[:id])
@previewed = news
end
@text = (params[:news] ? params[:news][:description] : nil)
render :partial => 'common/preview'
end

View File

@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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
@ -29,7 +29,7 @@ class ProjectEnumerationsController < ApplicationController
flash[:notice] = l(:notice_successful_update)
end
redirect_to :controller => 'projects', :action => 'settings', :tab => 'activities', :id => @project
redirect_to settings_project_path(@project, :tab => 'activities')
end
def destroy
@ -37,7 +37,6 @@ class ProjectEnumerationsController < ApplicationController
time_entry_activity.destroy(time_entry_activity.parent)
end
flash[:notice] = l(:notice_successful_update)
redirect_to :controller => 'projects', :action => 'settings', :tab => 'activities', :id => @project
redirect_to settings_project_path(@project, :tab => 'activities')
end
end

View File

@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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,6 +43,7 @@ class ProjectsController < ApplicationController
helper :repositories
include RepositoriesHelper
include ProjectsHelper
helper :members
# Lists visible projects
def index
@ -57,32 +58,31 @@ class ProjectsController < ApplicationController
format.api {
@offset, @limit = api_offset_and_limit
@project_count = Project.visible.count
@projects = Project.visible.all(:offset => @offset, :limit => @limit, :order => 'lft')
@projects = Project.visible.offset(@offset).limit(@limit).order('lft').all
}
format.atom {
projects = Project.visible.find(:all, :order => 'created_on DESC',
:limit => Setting.feeds_limit.to_i)
projects = Project.visible.order('created_on DESC').limit(Setting.feeds_limit.to_i).all
render_feed(projects, :title => "#{Setting.app_title}: #{l(:label_project_latest)}")
}
end
end
def new
@issue_custom_fields = IssueCustomField.find(:all, :order => "#{CustomField.table_name}.position")
@issue_custom_fields = IssueCustomField.sorted.all
@trackers = Tracker.sorted.all
@project = Project.new
@project.safe_attributes = params[:project]
end
def create
@issue_custom_fields = IssueCustomField.find(:all, :order => "#{CustomField.table_name}.position")
@issue_custom_fields = IssueCustomField.sorted.all
@trackers = Tracker.sorted.all
@project = Project.new
@project.safe_attributes = params[:project]
if validate_parent_id && @project.save
@project.set_allowed_parent!(params[:project]['parent_id']) if params[:project].has_key?('parent_id')
# Add current user as a project member if he is not admin
# Add current user as a project member if current user is not admin
unless User.current.admin?
r = Role.givable.find_by_id(Setting.new_project_user_role_id.to_i) || Role.givable.first
m = Member.new(:user => User.current, :roles => [r])
@ -91,10 +91,12 @@ class ProjectsController < ApplicationController
respond_to do |format|
format.html {
flash[:notice] = l(:notice_successful_create)
redirect_to(params[:continue] ?
{:controller => 'projects', :action => 'new', :project => {:parent_id => @project.parent_id}.reject {|k,v| v.nil?}} :
{:controller => 'projects', :action => 'settings', :id => @project}
)
if params[:continue]
attrs = {:parent_id => @project.parent_id}.reject {|k,v| v.nil?}
redirect_to new_project_path(attrs)
else
redirect_to settings_project_path(@project)
end
}
format.api { render :action => 'show', :status => :created, :location => url_for(:controller => 'projects', :action => 'show', :id => @project.id) }
end
@ -104,23 +106,15 @@ class ProjectsController < ApplicationController
format.api { render_validation_errors(@project) }
end
end
end
def copy
@issue_custom_fields = IssueCustomField.find(:all, :order => "#{CustomField.table_name}.position")
@issue_custom_fields = IssueCustomField.sorted.all
@trackers = Tracker.sorted.all
@root_projects = Project.find(:all,
:conditions => "parent_id IS NULL AND status = #{Project::STATUS_ACTIVE}",
:order => 'name')
@source_project = Project.find(params[:id])
if request.get?
@project = Project.copy_from(@source_project)
if @project
@project.identifier = Project.next_identifier if Setting.sequential_project_identifiers?
else
redirect_to :controller => 'admin', :action => 'projects'
end
@project.identifier = Project.next_identifier if Setting.sequential_project_identifiers?
else
Mailer.with_deliveries(params[:notifications] == '1') do
@project = Project.new
@ -128,39 +122,40 @@ class ProjectsController < ApplicationController
if validate_parent_id && @project.copy(@source_project, :only => params[:only])
@project.set_allowed_parent!(params[:project]['parent_id']) if params[:project].has_key?('parent_id')
flash[:notice] = l(:notice_successful_create)
redirect_to :controller => 'projects', :action => 'settings', :id => @project
redirect_to settings_project_path(@project)
elsif !@project.new_record?
# Project was created
# But some objects were not copied due to validation failures
# (eg. issues from disabled trackers)
# TODO: inform about that
redirect_to :controller => 'projects', :action => 'settings', :id => @project
redirect_to settings_project_path(@project)
end
end
end
rescue ActiveRecord::RecordNotFound
redirect_to :controller => 'admin', :action => 'projects'
# source_project not found
render_404
end
# Show @project
def show
if params[:jump]
# try to redirect to the requested menu item
redirect_to_project_menu_item(@project, params[:jump]) && return
# try to redirect to the requested menu item
if params[:jump] && redirect_to_project_menu_item(@project, params[:jump])
return
end
@users_by_role = @project.users_by_role
@subprojects = @project.children.visible.all
@news = @project.news.find(:all, :limit => 5, :include => [ :author, :project ], :order => "#{News.table_name}.created_on DESC")
@news = @project.news.limit(5).includes(:author, :project).reorder("#{News.table_name}.created_on DESC").all
@trackers = @project.rolled_up_trackers
cond = @project.project_condition(Setting.display_subprojects_issues?)
@open_issues_by_tracker = Issue.visible.open.where(cond).count(:group => :tracker)
@total_issues_by_tracker = Issue.visible.where(cond).count(:group => :tracker)
@open_issues_by_tracker = Issue.visible.open.where(cond).group(:tracker).count
@total_issues_by_tracker = Issue.visible.where(cond).group(:tracker).count
if User.current.allowed_to?(:view_time_entries, @project)
@total_hours = TimeEntry.visible.sum(:hours, :include => :project, :conditions => cond).to_f
@total_hours = TimeEntry.visible.where(cond).sum(:hours).to_f
end
@key = User.current.rss_key
@ -172,7 +167,7 @@ class ProjectsController < ApplicationController
end
def settings
@issue_custom_fields = IssueCustomField.find(:all, :order => "#{CustomField.table_name}.position")
@issue_custom_fields = IssueCustomField.sorted.all
@issue_category ||= IssueCategory.new
@member ||= @project.members.new
@trackers = Tracker.sorted.all
@ -189,7 +184,7 @@ class ProjectsController < ApplicationController
respond_to do |format|
format.html {
flash[:notice] = l(:notice_successful_update)
redirect_to :action => 'settings', :id => @project
redirect_to settings_project_path(@project)
}
format.api { render_api_ok }
end
@ -207,7 +202,7 @@ class ProjectsController < ApplicationController
def modules
@project.enabled_module_names = params[:enabled_module_names]
flash[:notice] = l(:notice_successful_update)
redirect_to :action => 'settings', :id => @project, :tab => 'modules'
redirect_to settings_project_path(@project, :tab => 'modules')
end
def archive
@ -216,12 +211,12 @@ class ProjectsController < ApplicationController
flash[:error] = l(:error_can_not_archive_project)
end
end
redirect_to(url_for(:controller => 'admin', :action => 'projects', :status => params[:status]))
redirect_to admin_projects_path(:status => params[:status])
end
def unarchive
@project.unarchive if request.post? && !@project.active?
redirect_to(url_for(:controller => 'admin', :action => 'projects', :status => params[:status]))
redirect_to admin_projects_path(:status => params[:status])
end
def close
@ -240,7 +235,7 @@ class ProjectsController < ApplicationController
if api_request? || params[:confirm]
@project_to_destroy.destroy
respond_to do |format|
format.html { redirect_to :controller => 'admin', :action => 'projects' }
format.html { redirect_to admin_projects_path }
format.api { render_api_ok }
end
end

View File

@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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
@ -31,36 +31,37 @@ class QueriesController < ApplicationController
else
@limit = per_page_option
end
@query_count = Query.visible.count
@query_pages = Paginator.new self, @query_count, @limit, params['page']
@queries = Query.visible.all(:limit => @limit, :offset => @offset, :order => "#{Query.table_name}.name")
@query_count = IssueQuery.visible.count
@query_pages = Paginator.new @query_count, @limit, params['page']
@queries = IssueQuery.visible.
order("#{Query.table_name}.name").
limit(@limit).
offset(@offset).
all
respond_to do |format|
format.html { render :nothing => true }
format.api
end
end
def new
@query = Query.new
@query = IssueQuery.new
@query.user = User.current
@query.project = @project
@query.is_public = false unless User.current.allowed_to?(:manage_public_queries, @project) || User.current.admin?
build_query_from_params
@query.visibility = IssueQuery::VISIBILITY_PRIVATE unless User.current.allowed_to?(:manage_public_queries, @project) || User.current.admin?
@query.build_from_params(params)
end
def create
@query = Query.new(params[:query])
@query = IssueQuery.new(params[:query])
@query.user = User.current
@query.project = params[:query_is_for_all] ? nil : @project
@query.is_public = false unless User.current.allowed_to?(:manage_public_queries, @project) || User.current.admin?
build_query_from_params
@query.visibility = IssueQuery::VISIBILITY_PRIVATE unless User.current.allowed_to?(:manage_public_queries, @project) || User.current.admin?
@query.build_from_params(params)
@query.column_names = nil if params[:default_columns]
if @query.save
flash[:notice] = l(:notice_successful_create)
redirect_to :controller => 'issues', :action => 'index', :project_id => @project, :query_id => @query
redirect_to_issues(:query_id => @query)
else
render :action => 'new', :layout => !request.xhr?
end
@ -72,13 +73,13 @@ class QueriesController < ApplicationController
def update
@query.attributes = params[:query]
@query.project = nil if params[:query_is_for_all]
@query.is_public = false unless User.current.allowed_to?(:manage_public_queries, @project) || User.current.admin?
build_query_from_params
@query.visibility = IssueQuery::VISIBILITY_PRIVATE unless User.current.allowed_to?(:manage_public_queries, @project) || User.current.admin?
@query.build_from_params(params)
@query.column_names = nil if params[:default_columns]
if @query.save
flash[:notice] = l(:notice_successful_update)
redirect_to :controller => 'issues', :action => 'index', :project_id => @project, :query_id => @query
redirect_to_issues(:query_id => @query)
else
render :action => 'edit'
end
@ -86,12 +87,12 @@ class QueriesController < ApplicationController
def destroy
@query.destroy
redirect_to :controller => 'issues', :action => 'index', :project_id => @project, :set_filter => 1
redirect_to_issues(:set_filter => 1)
end
private
def find_query
@query = Query.find(params[:id])
@query = IssueQuery.find(params[:id])
@project = @query.project
render_403 unless @query.editable_by?(User.current)
rescue ActiveRecord::RecordNotFound
@ -104,4 +105,16 @@ private
rescue ActiveRecord::RecordNotFound
render_404
end
def redirect_to_issues(options)
if params[:gantt]
if @project
redirect_to project_gantt_path(@project, options)
else
redirect_to issues_gantt_path(options)
end
else
redirect_to _project_issues_path(@project, options)
end
end
end

View File

@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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
@ -90,6 +90,6 @@ class ReportsController < ApplicationController
private
def find_issue_statuses
@statuses = IssueStatus.find(:all, :order => 'position')
@statuses = IssueStatus.sorted.all
end
end

View File

@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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 @@
require 'SVG/Graph/Bar'
require 'SVG/Graph/BarHorizontal'
require 'digest/sha1'
require 'redmine/scm/adapters/abstract_adapter'
require 'redmine/scm/adapters'
class ChangesetNotFound < Exception; end
class InvalidRevisionParam < Exception; end
@ -94,7 +94,7 @@ class RepositoriesController < ApplicationController
@committers = @repository.committers
@users = @project.users
additional_user_ids = @committers.collect(&:last).collect(&:to_i) - @users.collect(&:id)
@users += User.find_all_by_id(additional_user_ids) unless additional_user_ids.empty?
@users += User.where(:id => additional_user_ids).all unless additional_user_ids.empty?
@users.compact!
@users.sort!
if request.post? && params[:committers].is_a?(Hash)
@ -111,7 +111,7 @@ class RepositoriesController < ApplicationController
end
def show
@repository.fetch_changesets if Setting.autofetch_changesets? && @path.empty?
@repository.fetch_changesets if @project.active? && Setting.autofetch_changesets? && @path.empty?
@entries = @repository.entries(@path, @rev)
@changeset = @repository.find_changeset_by_name(@rev)
@ -138,13 +138,14 @@ class RepositoriesController < ApplicationController
def revisions
@changeset_count = @repository.changesets.count
@changeset_pages = Paginator.new self, @changeset_count,
@changeset_pages = Paginator.new @changeset_count,
per_page_option,
params['page']
@changesets = @repository.changesets.find(:all,
:limit => @changeset_pages.items_per_page,
:offset => @changeset_pages.current.offset,
:include => [:user, :repository, :parents])
@changesets = @repository.changesets.
limit(@changeset_pages.per_page).
offset(@changeset_pages.offset).
includes(:user, :repository, :parents).
all
respond_to do |format|
format.html { render :layout => false if request.xhr? }
@ -228,7 +229,8 @@ class RepositoriesController < ApplicationController
# Adds a related issue to a changeset
# POST /projects/:project_id/repository/(:repository_id/)revisions/:rev/issues
def add_related_issue
@issue = @changeset.find_referenced_issue_by_id(params[:issue_id])
issue_id = params[:issue_id].to_s.sub(/^#/,'')
@issue = @changeset.find_referenced_issue_by_id(issue_id)
if @issue && (!@issue.visible? || @changeset.issues.include?(@issue))
@issue = nil
end
@ -242,7 +244,7 @@ class RepositoriesController < ApplicationController
# DELETE /projects/:project_id/repository/(:repository_id/)revisions/:rev/issues/:issue_id
def remove_related_issue
@issue = Issue.visible.find_by_id(params[:issue_id])
if @issue
if @issue
@changeset.issues.delete(@issue)
end
end
@ -351,15 +353,18 @@ 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 = Changeset.count(
:all, :group => :commit_date,
:conditions => ["repository_id = ? AND commit_date BETWEEN ? AND ?", repository.id, @date_from, @date_to])
commits_by_day = Changeset.
where("repository_id = ? AND commit_date BETWEEN ? AND ?", repository.id, @date_from, @date_to).
group(:commit_date).
count
commits_by_month = [0] * 12
commits_by_day.each {|c| commits_by_month[(@date_to.month - c.first.to_date.month) % 12] += c.last }
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_day = Change.
joins(:changeset).
where("#{Changeset.table_name}.repository_id = ? AND #{Changeset.table_name}.commit_date BETWEEN ? AND ?", repository.id, @date_from, @date_to).
group(:commit_date).
count
changes_by_month = [0] * 12
changes_by_day.each {|c| changes_by_month[(@date_to.month - c.first.to_date.month) % 12] += c.last }
@ -392,10 +397,10 @@ class RepositoriesController < ApplicationController
end
def graph_commits_per_author(repository)
commits_by_author = Changeset.count(:all, :group => :committer, :conditions => ["repository_id = ?", repository.id])
commits_by_author = Changeset.where("repository_id = ?", repository.id).group(:committer).count
commits_by_author.to_a.sort! {|x, y| x.last <=> y.last}
changes_by_author = Change.count(:all, :group => :committer, :include => :changeset, :conditions => ["#{Changeset.table_name}.repository_id = ?", repository.id])
changes_by_author = Change.joins(:changeset).where("#{Changeset.table_name}.repository_id = ?", repository.id).group(:committer).count
h = changes_by_author.inject({}) {|o, i| o[i.first] = i.last; o}
fields = commits_by_author.collect {|r| r.first}
@ -406,11 +411,11 @@ class RepositoriesController < ApplicationController
commits_data = commits_data + [0]*(10 - commits_data.length) if commits_data.length<10
changes_data = changes_data + [0]*(10 - changes_data.length) if changes_data.length<10
# Remove email adress in usernames
# Remove email address in usernames
fields = fields.collect {|c| c.gsub(%r{<.+@.+>}, '') }
graph = SVG::Graph::BarHorizontal.new(
:height => 400,
:height => 30 * commits_data.length,
:width => 800,
:fields => fields,
:stack => :side,

View File

@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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,15 +18,15 @@
class RolesController < ApplicationController
layout 'admin'
before_filter :require_admin, :except => :index
before_filter :require_admin_or_api_request, :only => :index
before_filter :find_role, :only => [:edit, :update, :destroy]
accept_api_auth :index
before_filter :require_admin, :except => [:index, :show]
before_filter :require_admin_or_api_request, :only => [:index, :show]
before_filter :find_role, :only => [:show, :edit, :update, :destroy]
accept_api_auth :index, :show
def index
respond_to do |format|
format.html {
@role_pages, @roles = paginate :roles, :per_page => 25, :order => 'builtin, position'
@role_pages, @roles = paginate Role.sorted, :per_page => 25
render :action => "index", :layout => false if request.xhr?
}
format.api {
@ -35,6 +35,12 @@ class RolesController < ApplicationController
end
end
def show
respond_to do |format|
format.api
end
end
def new
# Prefills the form with 'Non member' role permissions by default
@role = Role.new(params[:role] || {:permissions => Role.non_member.permissions})
@ -52,7 +58,7 @@ class RolesController < ApplicationController
@role.workflow_rules.copy(copy_from)
end
flash[:notice] = l(:notice_successful_create)
redirect_to :action => 'index'
redirect_to roles_path
else
@roles = Role.sorted.all
render :action => 'new'
@ -65,7 +71,7 @@ class RolesController < ApplicationController
def update
if request.put? and @role.update_attributes(params[:role])
flash[:notice] = l(:notice_successful_update)
redirect_to :action => 'index'
redirect_to roles_path
else
render :action => 'edit'
end
@ -73,10 +79,10 @@ class RolesController < ApplicationController
def destroy
@role.destroy
redirect_to :action => 'index'
redirect_to roles_path
rescue
flash[:error] = l(:error_can_not_remove_role)
redirect_to :action => 'index'
redirect_to roles_path
end
def permissions
@ -88,7 +94,7 @@ class RolesController < ApplicationController
role.save
end
flash[:notice] = l(:notice_successful_update)
redirect_to :action => 'index'
redirect_to roles_path
end
end

View File

@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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,9 +18,6 @@
class SearchController < ApplicationController
before_filter :find_optional_project
helper :messages
include MessagesHelper
def index
@question = params[:q] || ""
@question.strip!
@ -43,8 +40,8 @@ class SearchController < ApplicationController
begin; offset = params[:offset].to_time if params[:offset]; rescue; end
# quick jump to an issue
if @question.match(/^#?(\d+)$/) && Issue.visible.find_by_id($1.to_i)
redirect_to :controller => "issues", :action => "show", :id => $1
if (m = @question.match(/^#?(\d+)$/)) && (issue = Issue.visible.find_by_id(m[1].to_i))
redirect_to issue_path(issue)
return
end

View File

@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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
@ -19,6 +19,8 @@ class SettingsController < ApplicationController
layout 'admin'
menu_item :plugins, :only => :plugin
helper :queries
before_filter :require_admin
def index
@ -31,30 +33,37 @@ class SettingsController < ApplicationController
if request.post? && params[:settings] && params[:settings].is_a?(Hash)
settings = (params[:settings] || {}).dup.symbolize_keys
settings.each do |name, value|
# remove blank values in array settings
value.delete_if {|v| v.blank? } if value.is_a?(Array)
Setting[name] = value
Setting.set_from_params name, value
end
flash[:notice] = l(:notice_successful_update)
redirect_to :action => 'edit', :tab => params[:tab]
redirect_to settings_path(:tab => params[:tab])
else
@options = {}
@options[:user_format] = User::USER_FORMATS.keys.collect {|f| [User.current.name(f), f.to_s] }
user_format = User::USER_FORMATS.collect{|key, value| [key, value[:setting_order]]}.sort{|a, b| a[1] <=> b[1]}
@options[:user_format] = user_format.collect{|f| [User.current.name(f[0]), f[0].to_s]}
@deliveries = ActionMailer::Base.perform_deliveries
@guessed_host_and_path = request.host_with_port.dup
@guessed_host_and_path << ('/'+ Redmine::Utils.relative_url_root.gsub(%r{^\/}, '')) unless Redmine::Utils.relative_url_root.blank?
@commit_update_keywords = Setting.commit_update_keywords.dup
@commit_update_keywords = [{}] unless @commit_update_keywords.is_a?(Array) && @commit_update_keywords.any?
Redmine::Themes.rescan
end
end
def plugin
@plugin = Redmine::Plugin.find(params[:id])
unless @plugin.configurable?
render_404
return
end
if request.post?
Setting.send "plugin_#{@plugin.id}=", params[:settings]
flash[:notice] = l(:notice_successful_update)
redirect_to :action => 'plugin', :id => @plugin.id
redirect_to plugin_settings_path(@plugin)
else
@partial = @plugin.settings[:partial]
@settings = Setting.send "plugin_#{@plugin.id}"

View File

@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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
@ -19,11 +19,7 @@ class SysController < ActionController::Base
before_filter :check_enabled
def projects
p = Project.active.has_module(:repository).find(
:all,
:include => :repository,
:order => "#{Project.table_name}.identifier"
)
p = Project.active.has_module(:repository).order("#{Project.table_name}.identifier").preload(:repository).all
# extra_info attribute from repository breaks activeresource client
render :xml => p.to_xml(
:only => [:id, :identifier, :name, :is_public, :status],

View File

@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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,42 +30,31 @@ class TimelogController < ApplicationController
accept_rss_auth :index
accept_api_auth :index, :show, :create, :update, :destroy
rescue_from Query::StatementInvalid, :with => :query_statement_invalid
helper :sort
include SortHelper
helper :issues
include TimelogHelper
helper :custom_fields
include CustomFieldsHelper
helper :queries
include QueriesHelper
def index
sort_init 'spent_on', 'desc'
sort_update 'spent_on' => ['spent_on', "#{TimeEntry.table_name}.created_on"],
'user' => 'user_id',
'activity' => 'activity_id',
'project' => "#{Project.table_name}.name",
'issue' => 'issue_id',
'hours' => 'hours'
@query = TimeEntryQuery.build_from_params(params, :project => @project, :name => '_')
retrieve_date_range
scope = TimeEntry.visible.spent_between(@from, @to)
if @issue
scope = scope.on_issue(@issue)
elsif @project
scope = scope.on_project(@project, Setting.display_subprojects_issues?)
end
sort_init(@query.sort_criteria.empty? ? [['spent_on', 'desc']] : @query.sort_criteria)
sort_update(@query.sortable_columns)
scope = time_entry_scope(:order => sort_clause).
includes(:project, :user, :issue).
preload(:issue => [:project, :tracker, :status, :assigned_to, :priority])
respond_to do |format|
format.html {
# Paginate results
@entry_count = scope.count
@entry_pages = Paginator.new self, @entry_count, per_page_option, params['page']
@entries = scope.all(
:include => [:project, :activity, :user, {:issue => :tracker}],
:order => sort_clause,
:limit => @entry_pages.items_per_page,
:offset => @entry_pages.current.offset
)
@entry_pages = Paginator.new @entry_count, per_page_option, params['page']
@entries = scope.offset(@entry_pages.offset).limit(@entry_pages.per_page).all
@total_hours = scope.sum(:hours).to_f
render :layout => !request.xhr?
@ -73,35 +62,25 @@ class TimelogController < ApplicationController
format.api {
@entry_count = scope.count
@offset, @limit = api_offset_and_limit
@entries = scope.all(
:include => [:project, :activity, :user, {:issue => :tracker}],
:order => sort_clause,
:limit => @limit,
:offset => @offset
)
@entries = scope.offset(@offset).limit(@limit).preload(:custom_values => :custom_field).all
}
format.atom {
entries = scope.all(
:include => [:project, :activity, :user, {:issue => :tracker}],
:order => "#{TimeEntry.table_name}.created_on DESC",
:limit => Setting.feeds_limit.to_i
)
entries = scope.limit(Setting.feeds_limit.to_i).reorder("#{TimeEntry.table_name}.created_on DESC").all
render_feed(entries, :title => l(:label_spent_time))
}
format.csv {
# Export all entries
@entries = scope.all(
:include => [:project, :activity, :user, {:issue => [:tracker, :assigned_to, :priority]}],
:order => sort_clause
)
send_data(entries_to_csv(@entries), :type => 'text/csv; header=present', :filename => 'timelog.csv')
@entries = scope.all
send_data(query_to_csv(@entries, @query, params), :type => 'text/csv; header=present', :filename => 'timelog.csv')
}
end
end
def report
retrieve_date_range
@report = Redmine::Helpers::TimeReport.new(@project, @issue, params[:criteria], params[:columns], @from, @to)
@query = TimeEntryQuery.build_from_params(params, :project => @project, :name => '_')
scope = time_entry_scope
@report = Redmine::Helpers::TimeReport.new(@project, @issue, params[:criteria], params[:columns], scope)
respond_to do |format|
format.html { render :layout => !request.xhr? }
@ -134,16 +113,24 @@ 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,
options = {
:time_entry => {:issue_id => @time_entry.issue_id, :activity_id => @time_entry.activity_id},
:back_url => params[:back_url]
}
if @time_entry.issue
redirect_to new_project_issue_time_entry_path(@time_entry.project, @time_entry.issue, options)
else
redirect_to new_project_time_entry_path(@time_entry.project, options)
end
else
redirect_to :action => 'new',
options = {
: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]
}
redirect_to new_time_entry_path(options)
end
else
redirect_back_or_default :action => 'index', :project_id => @time_entry.project
redirect_back_or_default project_time_entries_path(@time_entry.project)
end
}
format.api { render :action => 'show', :status => :created, :location => time_entry_url(@time_entry) }
@ -169,7 +156,7 @@ class TimelogController < ApplicationController
respond_to do |format|
format.html {
flash[:notice] = l(:notice_successful_update)
redirect_back_or_default :action => 'index', :project_id => @time_entry.project
redirect_back_or_default project_time_entries_path(@time_entry.project)
}
format.api { render_api_ok }
end
@ -195,12 +182,13 @@ class TimelogController < ApplicationController
time_entry.safe_attributes = attributes
call_hook(:controller_time_entries_bulk_edit_before_save, { :params => params, :time_entry => time_entry })
unless time_entry.save
logger.info "time entry could not be updated: #{time_entry.errors.full_messages}" if logger && logger.info
# Keep unsaved time_entry ids to display them in flash error
unsaved_time_entry_ids << time_entry.id
end
end
set_flash_from_bulk_time_entry_save(@time_entries, unsaved_time_entry_ids)
redirect_back_or_default({:controller => 'timelog', :action => 'index', :project_id => @projects.first})
redirect_back_or_default project_time_entries_path(@projects.first)
end
def destroy
@ -219,7 +207,7 @@ class TimelogController < ApplicationController
else
flash[:error] = l(:notice_unable_delete_time_entry)
end
redirect_back_or_default(:action => 'index', :project_id => @projects.first)
redirect_back_or_default project_time_entries_path(@projects.first)
}
format.api {
if destroyed
@ -244,7 +232,7 @@ private
end
def find_time_entries
@time_entries = TimeEntry.find_all_by_id(params[:id] || params[:ids])
@time_entries = TimeEntry.where(:id => params[:id] || params[:ids]).all
raise ActiveRecord::RecordNotFound if @time_entries.empty?
@projects = @time_entries.collect(&:project).compact.uniq
@project = @projects.first if @projects.size == 1
@ -291,48 +279,13 @@ private
end
end
# Retrieves the date range based on predefined ranges or specific from/to param dates
def retrieve_date_range
@free_period = false
@from, @to = nil, nil
if params[:period_type] == '1' || (params[:period_type].nil? && !params[:period].nil?)
case params[:period].to_s
when 'today'
@from = @to = Date.today
when 'yesterday'
@from = @to = Date.today - 1
when 'current_week'
@from = Date.today - (Date.today.cwday - 1)%7
@to = @from + 6
when 'last_week'
@from = Date.today - 7 - (Date.today.cwday - 1)%7
@to = @from + 6
when '7_days'
@from = Date.today - 7
@to = Date.today
when 'current_month'
@from = Date.civil(Date.today.year, Date.today.month, 1)
@to = (@from >> 1) - 1
when 'last_month'
@from = Date.civil(Date.today.year, Date.today.month, 1) << 1
@to = (@from >> 1) - 1
when '30_days'
@from = Date.today - 30
@to = Date.today
when 'current_year'
@from = Date.civil(Date.today.year, 1, 1)
@to = Date.civil(Date.today.year, 12, 31)
end
elsif params[:period_type] == '2' || (params[:period_type].nil? && (!params[:from].nil? || !params[:to].nil?))
begin; @from = params[:from].to_s.to_date unless params[:from].blank?; rescue; end
begin; @to = params[:to].to_s.to_date unless params[:to].blank?; rescue; end
@free_period = true
else
# default
# Returns the TimeEntry scope for index and report actions
def time_entry_scope(options={})
scope = @query.results_scope(options)
if @issue
scope = scope.on_issue(@issue)
end
@from, @to = @to, @from if @from && @to && @from > @to
scope
end
def parse_params_for_bulk_time_entry_attributes(params)

View File

@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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
@ -25,7 +25,7 @@ class TrackersController < ApplicationController
def index
respond_to do |format|
format.html {
@tracker_pages, @trackers = paginate :trackers, :per_page => 10, :order => 'position'
@tracker_pages, @trackers = paginate Tracker.sorted, :per_page => 25
render :action => "index", :layout => false if request.xhr?
}
format.api {
@ -36,19 +36,19 @@ class TrackersController < ApplicationController
def new
@tracker ||= Tracker.new(params[:tracker])
@trackers = Tracker.find :all, :order => 'position'
@projects = Project.find(:all)
@trackers = Tracker.sorted.all
@projects = Project.all
end
def create
@tracker = Tracker.new(params[:tracker])
if request.post? and @tracker.save
if @tracker.save
# workflow copy
if !params[:copy_workflow_from].blank? && (copy_from = Tracker.find_by_id(params[:copy_workflow_from]))
@tracker.workflow_rules.copy(copy_from)
end
flash[:notice] = l(:notice_successful_create)
redirect_to :action => 'index'
redirect_to trackers_path
return
end
new
@ -57,14 +57,14 @@ class TrackersController < ApplicationController
def edit
@tracker ||= Tracker.find(params[:id])
@projects = Project.find(:all)
@projects = Project.all
end
def update
@tracker = Tracker.find(params[:id])
if request.put? and @tracker.update_attributes(params[:tracker])
if @tracker.update_attributes(params[:tracker])
flash[:notice] = l(:notice_successful_update)
redirect_to :action => 'index'
redirect_to trackers_path
return
end
edit
@ -78,7 +78,7 @@ class TrackersController < ApplicationController
else
@tracker.destroy
end
redirect_to :action => 'index'
redirect_to trackers_path
end
def fields
@ -92,7 +92,7 @@ class TrackersController < ApplicationController
end
end
flash[:notice] = l(:notice_successful_update)
redirect_to :action => 'fields'
redirect_to fields_trackers_path
return
end
@trackers = Tracker.sorted.all

View File

@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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,12 +45,9 @@ class UsersController < ApplicationController
scope = scope.in_group(params[:group_id]) if params[:group_id].present?
@user_count = scope.count
@user_pages = Paginator.new self, @user_count, @limit, params['page']
@offset ||= @user_pages.current.offset
@users = scope.find :all,
:order => sort_clause,
:limit => @limit,
:offset => @offset
@user_pages = Paginator.new @user_count, @limit, params['page']
@offset ||= @user_pages.offset
@users = scope.order(sort_clause).limit(@limit).offset(@offset).all
respond_to do |format|
format.html {
@ -58,12 +55,12 @@ class UsersController < ApplicationController
render :layout => !request.xhr?
}
format.api
end
end
end
def show
# show projects based on current user visibility
@memberships = @user.memberships.all(:conditions => Project.visible_condition(User.current))
@memberships = @user.memberships.where(Project.visible_condition(User.current)).all
events = Redmine::Activity::Fetcher.new(User.current, :author => @user).events(nil, nil, :limit => 10)
@events_by_day = events.group_by(&:event_date)
@ -83,7 +80,8 @@ class UsersController < ApplicationController
def new
@user = User.new(:language => Setting.default_language, :mail_notification => Setting.default_notification_option)
@auth_sources = AuthSource.find(:all)
@user.safe_attributes = params[:user]
@auth_sources = AuthSource.all
end
def create
@ -92,27 +90,25 @@ class UsersController < ApplicationController
@user.admin = params[:user][:admin] || false
@user.login = params[:user][:login]
@user.password, @user.password_confirmation = params[:user][:password], params[:user][:password_confirmation] unless @user.auth_source_id
@user.pref.attributes = params[:pref]
if @user.save
@user.pref.attributes = params[:pref]
@user.pref[:no_self_notified] = (params[:no_self_notified] == '1')
@user.pref.save
@user.notified_project_ids = (@user.mail_notification == 'selected' ? params[:notified_project_ids] : [])
Mailer.account_information(@user, params[:user][:password]).deliver if params[:send_information]
Mailer.account_information(@user, @user.password).deliver if params[:send_information]
respond_to do |format|
format.html {
flash[:notice] = l(:notice_user_successful_create, :id => view_context.link_to(@user.login, user_path(@user)))
redirect_to(params[:continue] ?
{:controller => 'users', :action => 'new'} :
{:controller => 'users', :action => 'edit', :id => @user}
)
if params[:continue]
attrs = params[:user].slice(:generate_password)
redirect_to new_user_path(:user => attrs)
else
redirect_to edit_user_path(@user)
end
}
format.api { render :action => 'show', :status => :created, :location => user_url(@user) }
end
else
@auth_sources = AuthSource.find(:all)
@auth_sources = AuthSource.all
# Clear password input
@user.password = @user.password_confirmation = nil
@ -124,7 +120,7 @@ class UsersController < ApplicationController
end
def edit
@auth_sources = AuthSource.find(:all)
@auth_sources = AuthSource.all
@membership ||= Member.new
end
@ -139,16 +135,14 @@ class UsersController < ApplicationController
was_activated = (@user.status_change == [User::STATUS_REGISTERED, User::STATUS_ACTIVE])
# TODO: Similar to My#account
@user.pref.attributes = params[:pref]
@user.pref[:no_self_notified] = (params[:no_self_notified] == '1')
if @user.save
@user.pref.save
@user.notified_project_ids = (@user.mail_notification == 'selected' ? params[:notified_project_ids] : [])
if was_activated
Mailer.account_activated(@user).deliver
elsif @user.active? && params[:send_information] && !params[:user][:password].blank? && @user.auth_source_id.nil?
Mailer.account_information(@user, params[:user][:password]).deliver
elsif @user.active? && params[:send_information] && @user.password.present? && @user.auth_source_id.nil?
Mailer.account_information(@user, @user.password).deliver
end
respond_to do |format|
@ -159,7 +153,7 @@ class UsersController < ApplicationController
format.api { render_api_ok }
end
else
@auth_sources = AuthSource.find(:all)
@auth_sources = AuthSource.all
@membership ||= Member.new
# Clear password input
@user.password = @user.password_confirmation = nil
@ -174,7 +168,7 @@ class UsersController < ApplicationController
def destroy
@user.destroy
respond_to do |format|
format.html { redirect_back_or_default(users_url) }
format.html { redirect_back_or_default(users_path) }
format.api { render_api_ok }
end
end
@ -183,7 +177,7 @@ class UsersController < ApplicationController
@membership = Member.edit_membership(params[:membership_id], params[:membership], @user)
@membership.save
respond_to do |format|
format.html { redirect_to :controller => 'users', :action => 'edit', :id => @user, :tab => 'memberships' }
format.html { redirect_to edit_user_path(@user, :tab => 'memberships') }
format.js
end
end
@ -194,7 +188,7 @@ class UsersController < ApplicationController
@membership.destroy
end
respond_to do |format|
format.html { redirect_to :controller => 'users', :action => 'edit', :id => @user, :tab => 'memberships' }
format.html { redirect_to edit_user_path(@user, :tab => 'memberships') }
format.js
end
end

View File

@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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 @@ class VersionsController < ApplicationController
model_object Version
before_filter :find_model_object, :except => [:index, :new, :create, :close_completed]
before_filter :find_project_from_association, :except => [:index, :new, :create, :close_completed]
before_filter :find_project, :only => [:index, :new, :create, :close_completed]
before_filter :find_project_by_project_id, :only => [:index, :new, :create, :close_completed]
before_filter :authorize
accept_api_auth :index, :show, :create, :update, :destroy
@ -31,7 +31,7 @@ class VersionsController < ApplicationController
def index
respond_to do |format|
format.html {
@trackers = @project.trackers.find(:all, :order => 'position')
@trackers = @project.trackers.sorted.all
retrieve_selected_tracker_ids(@trackers, @trackers.select {|t| t.is_in_roadmap?})
@with_subprojects = params[:with_subprojects].nil? ? Setting.display_subprojects_issues? : (params[:with_subprojects] == '1')
project_ids = @with_subprojects ? @project.self_and_descendants.collect(&:id) : [@project.id]
@ -46,11 +46,11 @@ class VersionsController < ApplicationController
@issues_by_version = {}
if @selected_tracker_ids.any? && @versions.any?
issues = Issue.visible.all(
:include => [:project, :status, :tracker, :priority, :fixed_version],
:conditions => {:tracker_id => @selected_tracker_ids, :project_id => project_ids, :fixed_version_id => @versions.map(&:id)},
:order => "#{Project.table_name}.lft, #{Tracker.table_name}.position, #{Issue.table_name}.id"
)
issues = Issue.visible.
includes(:project, :tracker).
preload(:status, :priority, :fixed_version).
where(:tracker_id => @selected_tracker_ids, :project_id => project_ids, :fixed_version_id => @versions.map(&:id)).
order("#{Project.table_name}.lft, #{Tracker.table_name}.position, #{Issue.table_name}.id")
@issues_by_version = issues.group_by(&:fixed_version)
end
@versions.reject! {|version| !project_ids.include?(version.project_id) && @issues_by_version[version].blank?}
@ -64,9 +64,10 @@ class VersionsController < ApplicationController
def show
respond_to do |format|
format.html {
@issues = @version.fixed_issues.visible.find(:all,
:include => [:status, :tracker, :priority],
:order => "#{Tracker.table_name}.position, #{Issue.table_name}.id")
@issues = @version.fixed_issues.visible.
includes(:status, :tracker, :priority).
reorder("#{Tracker.table_name}.position, #{Issue.table_name}.id").
all
}
format.api
end
@ -95,7 +96,7 @@ class VersionsController < ApplicationController
respond_to do |format|
format.html do
flash[:notice] = l(:notice_successful_create)
redirect_back_or_default :controller => 'projects', :action => 'settings', :tab => 'versions', :id => @project
redirect_back_or_default settings_project_path(@project, :tab => 'versions')
end
format.js
format.api do
@ -124,7 +125,7 @@ class VersionsController < ApplicationController
respond_to do |format|
format.html {
flash[:notice] = l(:notice_successful_update)
redirect_back_or_default :controller => 'projects', :action => 'settings', :tab => 'versions', :id => @project
redirect_back_or_default settings_project_path(@project, :tab => 'versions')
}
format.api { render_api_ok }
end
@ -141,21 +142,21 @@ class VersionsController < ApplicationController
if request.put?
@project.close_completed_versions
end
redirect_to :controller => 'projects', :action => 'settings', :tab => 'versions', :id => @project
redirect_to settings_project_path(@project, :tab => 'versions')
end
def destroy
if @version.fixed_issues.empty?
@version.destroy
respond_to do |format|
format.html { redirect_back_or_default :controller => 'projects', :action => 'settings', :tab => 'versions', :id => @project }
format.html { redirect_back_or_default settings_project_path(@project, :tab => 'versions') }
format.api { render_api_ok }
end
else
respond_to do |format|
format.html {
flash[:error] = l(:notice_unable_delete_version)
redirect_to :controller => 'projects', :action => 'settings', :tab => 'versions', :id => @project
redirect_to settings_project_path(@project, :tab => 'versions')
}
format.api { head :unprocessable_entity }
end
@ -169,12 +170,7 @@ class VersionsController < ApplicationController
end
end
private
def find_project
@project = Project.find(params[:project_id])
rescue ActiveRecord::RecordNotFound
render_404
end
private
def retrieve_selected_tracker_ids(selectable_trackers, default_trackers=nil)
if ids = params[:tracker_ids]
@ -183,5 +179,4 @@ private
@selected_tracker_ids = (default_trackers || selectable_trackers).collect {|t| t.id.to_s }
end
end
end

View File

@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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
@ -16,62 +16,66 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class WatchersController < ApplicationController
before_filter :find_project
before_filter :require_login, :check_project_privacy, :only => [:watch, :unwatch]
before_filter :authorize, :only => [:new, :destroy]
before_filter :require_login, :find_watchables, :only => [:watch, :unwatch]
def watch
if @watched.respond_to?(:visible?) && !@watched.visible?(User.current)
render_403
else
set_watcher(User.current, true)
end
set_watcher(@watchables, User.current, true)
end
def unwatch
set_watcher(User.current, false)
set_watcher(@watchables, User.current, false)
end
before_filter :find_project, :authorize, :only => [:new, :create, :append, :destroy, :autocomplete_for_user]
accept_api_auth :create, :destroy
def new
@users = users_for_new_watcher
end
def create
if params[:watcher].is_a?(Hash) && request.post?
user_ids = params[:watcher][:user_ids] || [params[:watcher][:user_id]]
user_ids.each do |user_id|
Watcher.create(:watchable => @watched, :user_id => user_id)
end
user_ids = []
if params[:watcher].is_a?(Hash)
user_ids << (params[:watcher][:user_ids] || params[:watcher][:user_id])
else
user_ids << params[:user_id]
end
user_ids.flatten.compact.uniq.each do |user_id|
Watcher.create(:watchable => @watched, :user_id => user_id)
end
respond_to do |format|
format.html { redirect_to_referer_or {render :text => 'Watcher added.', :layout => true}}
format.js
format.js { @users = users_for_new_watcher }
format.api { render_api_ok }
end
end
def append
if params[:watcher].is_a?(Hash)
user_ids = params[:watcher][:user_ids] || [params[:watcher][:user_id]]
@users = User.active.find_all_by_id(user_ids)
@users = User.active.where(:id => user_ids).all
end
if @users.blank?
render :nothing => true
end
end
def destroy
@watched.set_watcher(User.find(params[:user_id]), false) if request.post?
@watched.set_watcher(User.find(params[:user_id]), false)
respond_to do |format|
format.html { redirect_to :back }
format.js
format.api { render_api_ok }
end
end
def autocomplete_for_user
@users = User.active.like(params[:q]).find(:all, :limit => 100)
if @watched
@users -= @watched.watcher_users
end
@users = users_for_new_watcher
render :layout => false
end
private
private
def find_project
if params[:object_type] && params[:object_id]
klass = Object.const_get(params[:object_type].camelcase)
@ -85,11 +89,41 @@ private
render_404
end
def set_watcher(user, watching)
@watched.set_watcher(user, watching)
def find_watchables
klass = Object.const_get(params[:object_type].camelcase) rescue nil
if klass && klass.respond_to?('watched_by')
@watchables = klass.where(:id => Array.wrap(params[:object_id])).all
raise Unauthorized if @watchables.any? {|w|
if w.respond_to?(:visible?)
!w.visible?
elsif w.respond_to?(:project) && w.project
!w.project.visible?
end
}
end
render_404 unless @watchables.present?
end
def set_watcher(watchables, user, watching)
watchables.each do |watchable|
watchable.set_watcher(user, watching)
end
respond_to do |format|
format.html { redirect_to_referer_or {render :text => (watching ? 'Watcher added.' : 'Watcher removed.'), :layout => true}}
format.js { render :partial => 'set_watcher', :locals => {:user => user, :watched => @watched} }
format.js { render :partial => 'set_watcher', :locals => {:user => user, :watched => watchables} }
end
end
def users_for_new_watcher
users = []
if params[:q].blank? && @project.present?
users = @project.users.sorted
else
users = User.active.sorted.like(params[:q]).limit(100)
end
if @watched
users -= @watched.watcher_users
end
users
end
end

View File

@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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
@ -15,8 +15,6 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
require 'diff'
# The WikiController follows the Rails REST controller pattern but with
# a few differences
#
@ -35,7 +33,9 @@ class WikiController < ApplicationController
default_search_scope :wiki_pages
before_filter :find_wiki, :authorize
before_filter :find_existing_or_new_page, :only => [:show, :edit, :update]
before_filter :find_existing_page, :only => [:rename, :protect, :history, :diff, :annotate, :add_attachment, :destroy]
before_filter :find_existing_page, :only => [:rename, :protect, :history, :diff, :annotate, :add_attachment, :destroy, :destroy_version]
accept_api_auth :index, :show, :update, :destroy
before_filter :find_attachments, :only => [:preview]
helper :attachments
include AttachmentsHelper
@ -45,7 +45,13 @@ class WikiController < ApplicationController
# List of pages, sorted alphabetically and by parent (hierarchy)
def index
load_pages_for_index
@pages_by_parent_id = @pages.group_by(&:parent_id)
respond_to do |format|
format.html {
@pages_by_parent_id = @pages.group_by(&:parent_id)
}
format.api
end
end
# List of page, by last update
@ -56,8 +62,13 @@ class WikiController < ApplicationController
# display a page (in editing mode if it doesn't exist)
def show
if @page.new_record?
if User.current.allowed_to?(:edit_wiki_pages, @project) && editable?
if params[:version] && !User.current.allowed_to?(:view_wiki_edits, @project)
deny_access
return
end
@content = @page.content_for_version(params[:version])
if @content.nil?
if User.current.allowed_to?(:edit_wiki_pages, @project) && editable? && !api_request?
edit
render :action => 'edit'
else
@ -65,12 +76,6 @@ class WikiController < ApplicationController
end
return
end
if params[:version] && !User.current.allowed_to?(:view_wiki_edits, @project)
# Redirects user to the current version if he's not allowed to view previous versions
redirect_to :version => nil
return
end
@content = @page.content_for_version(params[:version])
if User.current.allowed_to?(:export_wiki_pages, @project)
if params[:format] == 'pdf'
send_data(wiki_page_to_pdf(@page, @project), :type => 'application/pdf', :filename => "#{@page.title}.pdf")
@ -89,26 +94,29 @@ class WikiController < ApplicationController
@content.current_version? &&
Redmine::WikiFormatting.supports_section_edit?
render :action => 'show'
respond_to do |format|
format.html
format.api
end
end
# edit an existing page or a new one
def edit
return render_403 unless editable?
if @page.new_record?
@page.content = WikiContent.new(:page => @page)
if params[:parent].present?
@page.parent = @page.wiki.find_page(params[:parent].to_s)
end
end
@content = @page.content_for_version(params[:version])
@content ||= WikiContent.new(:page => @page)
@content.text = initial_page_content(@page) if @content.text.blank?
# don't keep previous comment
@content.comments = nil
# To prevent StaleObjectError exception when reverting to a previous version
@content.version = @page.content.version
@content.version = @page.content.version if @page.content
@text = @content.text
if params[:section].present? && Redmine::WikiFormatting.supports_section_edit?
@ -121,50 +129,67 @@ class WikiController < ApplicationController
# Creates a new page or updates an existing one
def update
return render_403 unless editable?
@page.content = WikiContent.new(:page => @page) if @page.new_record?
was_new_page = @page.new_record?
@page.safe_attributes = params[:wiki_page]
@content = @page.content_for_version(params[:version])
@content.text = initial_page_content(@page) if @content.text.blank?
# don't keep previous comment
@content.comments = nil
if !@page.new_record? && params[:content].present? && @content.text == params[:content][:text]
attachments = Attachment.attach_files(@page, params[:attachments])
render_attachment_warning_if_needed(@page)
# don't save content if text wasn't changed
@page.save
redirect_to :action => 'show', :project_id => @project, :id => @page.title
return
@content = @page.content || WikiContent.new(:page => @page)
content_params = params[:content]
if content_params.nil? && params[:wiki_page].is_a?(Hash)
content_params = params[:wiki_page].slice(:text, :comments, :version)
end
content_params ||= {}
@content.comments = params[:content][:comments]
@text = params[:content][:text]
@content.comments = content_params[:comments]
@text = content_params[:text]
if params[:section].present? && Redmine::WikiFormatting.supports_section_edit?
@section = params[:section].to_i
@section_hash = params[:section_hash]
@content.text = Redmine::WikiFormatting.formatter.new(@content.text).update_section(params[:section].to_i, @text, @section_hash)
@content.text = Redmine::WikiFormatting.formatter.new(@content.text).update_section(@section, @text, @section_hash)
else
@content.version = params[:content][:version]
@content.version = content_params[:version] if content_params[:version]
@content.text = @text
end
@content.author = User.current
@page.content = @content
if @page.save
if @page.save_with_content(@content)
attachments = Attachment.attach_files(@page, params[:attachments])
render_attachment_warning_if_needed(@page)
call_hook(:controller_wiki_edit_after_save, { :params => params, :page => @page})
redirect_to :action => 'show', :project_id => @project, :id => @page.title
respond_to do |format|
format.html {
anchor = @section ? "section-#{@section}" : nil
redirect_to project_wiki_page_path(@project, @page.title, :anchor => anchor)
}
format.api {
if was_new_page
render :action => 'show', :status => :created, :location => project_wiki_page_path(@project, @page.title)
else
render_api_ok
end
}
end
else
render :action => 'edit'
respond_to do |format|
format.html { render :action => 'edit' }
format.api { render_validation_errors(@content) }
end
end
rescue ActiveRecord::StaleObjectError, Redmine::WikiFormatting::StaleSectionError
# Optimistic locking exception
flash.now[:error] = l(:notice_locking_conflict)
render :action => 'edit'
respond_to do |format|
format.html {
flash.now[:error] = l(:notice_locking_conflict)
render :action => 'edit'
}
format.api { render_api_head :conflict }
end
rescue ActiveRecord::RecordNotSaved
render :action => 'edit'
respond_to do |format|
format.html { render :action => 'edit' }
format.api { render_validation_errors(@content) }
end
end
# rename a page
@ -175,25 +200,26 @@ class WikiController < ApplicationController
@original_title = @page.pretty_title
if request.post? && @page.update_attributes(params[:wiki_page])
flash[:notice] = l(:notice_successful_update)
redirect_to :action => 'show', :project_id => @project, :id => @page.title
redirect_to project_wiki_page_path(@project, @page.title)
end
end
def protect
@page.update_attribute :protected, params[:protected]
redirect_to :action => 'show', :project_id => @project, :id => @page.title
redirect_to project_wiki_page_path(@project, @page.title)
end
# show page history
def history
@version_count = @page.content.versions.count
@version_pages = Paginator.new self, @version_count, per_page_option, params['p']
@version_pages = Paginator.new @version_count, per_page_option, params['page']
# don't load text
@versions = @page.content.versions.find :all,
:select => "id, author_id, comments, updated_on, version",
:order => 'version DESC',
:limit => @version_pages.items_per_page + 1,
:offset => @version_pages.current.offset
@versions = @page.content.versions.
select("id, author_id, comments, updated_on, version").
reorder('version DESC').
limit(@version_pages.per_page + 1).
offset(@version_pages.offset).
all
render :layout => false if request.xhr?
end
@ -230,23 +256,40 @@ class WikiController < ApplicationController
end
else
@reassignable_to = @wiki.pages - @page.self_and_descendants
return
# display the destroy form if it's a user request
return unless api_request?
end
end
@page.destroy
redirect_to :action => 'index', :project_id => @project
respond_to do |format|
format.html { redirect_to project_wiki_index_path(@project) }
format.api { render_api_ok }
end
end
def destroy_version
return render_403 unless editable?
@content = @page.content_for_version(params[:version])
@content.destroy
redirect_to_referer_or history_project_wiki_page_path(@project, @page.title)
end
# Export wiki to a single pdf or html file
def export
@pages = @wiki.pages.all(:order => 'title', :include => [:content, :attachments], :limit => 75)
@pages = @wiki.pages.
order('title').
includes([:content, {:attachments => :author}]).
all
respond_to do |format|
format.html {
export = render_to_string :action => 'export_multiple', :layout => false
send_data(export, :type => 'text/html', :filename => "wiki.html")
}
format.pdf {
send_data(wiki_pages_to_pdf(@pages, @project), :type => 'application/pdf', :filename => "#{@project.identifier}.pdf")
send_data(wiki_pages_to_pdf(@pages, @project),
:type => 'application/pdf',
:filename => "#{@project.identifier}.pdf")
}
end
end
@ -256,7 +299,7 @@ class WikiController < ApplicationController
# page is nil when previewing a new page
return render_403 unless page.nil? || editable?(page)
if page
@attachements = page.attachments
@attachments += page.attachments
@previewed = page.content
end
@text = params[:content][:text]
@ -313,6 +356,10 @@ private
end
def load_pages_for_index
@pages = @wiki.pages.with_updated_on.all(:order => 'title', :include => {:wiki => :project})
@pages = @wiki.pages.with_updated_on.
reorder("#{WikiPage.table_name}.title").
includes(:wiki => :project).
includes(:parent).
all
end
end

View File

@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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 WikisController < ApplicationController
def destroy
if request.post? && params[:confirm] && @project.wiki
@project.wiki.destroy
redirect_to :controller => 'projects', :action => 'settings', :id => @project, :tab => 'wiki'
redirect_to settings_project_path(@project, :tab => 'wiki')
end
end
end

View File

@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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,39 +18,30 @@
class WorkflowsController < ApplicationController
layout 'admin'
before_filter :require_admin, :find_roles, :find_trackers
before_filter :require_admin
def index
@workflow_counts = WorkflowTransition.count_by_tracker_and_role
end
def edit
@role = Role.find_by_id(params[:role_id]) if params[:role_id]
@tracker = Tracker.find_by_id(params[:tracker_id]) if params[:tracker_id]
find_trackers_roles_and_statuses_for_edit
if request.post?
WorkflowTransition.destroy_all( ["role_id=? and tracker_id=?", @role.id, @tracker.id])
(params[:issue_status] || []).each { |status_id, transitions|
transitions.each { |new_status_id, options|
author = options.is_a?(Array) && options.include?('author') && !options.include?('always')
assignee = options.is_a?(Array) && options.include?('assignee') && !options.include?('always')
WorkflowTransition.create(:role_id => @role.id, :tracker_id => @tracker.id, :old_status_id => status_id, :new_status_id => new_status_id, :author => author, :assignee => assignee)
}
}
if @role.save
redirect_to :action => 'edit', :role_id => @role, :tracker_id => @tracker, :used_statuses_only => params[:used_statuses_only]
return
if request.post? && @roles && @trackers && params[:transitions]
transitions = params[:transitions].deep_dup
transitions.each do |old_status_id, transitions_by_new_status|
transitions_by_new_status.each do |new_status_id, transition_by_rule|
transition_by_rule.reject! {|rule, transition| transition == 'no_change'}
end
end
WorkflowTransition.replace_transitions(@trackers, @roles, transitions)
flash[:notice] = l(:notice_successful_update)
redirect_to_referer_or workflows_edit_path
return
end
@used_statuses_only = (params[:used_statuses_only] == '0' ? false : true)
if @tracker && @used_statuses_only && @tracker.issue_statuses.any?
@statuses = @tracker.issue_statuses
end
@statuses ||= IssueStatus.sorted.all
if @tracker && @role && @statuses.any?
workflows = WorkflowTransition.where(:role_id => @role.id, :tracker_id => @tracker.id).all
if @trackers && @roles && @statuses.any?
workflows = WorkflowTransition.where(:role_id => @roles.map(&:id), :tracker_id => @trackers.map(&:id))
@workflows = {}
@workflows['always'] = workflows.select {|w| !w.author && !w.assignee}
@workflows['author'] = workflows.select {|w| w.author}
@ -59,35 +50,30 @@ class WorkflowsController < ApplicationController
end
def permissions
@role = Role.find_by_id(params[:role_id]) if params[:role_id]
@tracker = Tracker.find_by_id(params[:tracker_id]) if params[:tracker_id]
find_trackers_roles_and_statuses_for_edit
if request.post? && @role && @tracker
WorkflowPermission.replace_permissions(@tracker, @role, params[:permissions] || {})
redirect_to :action => 'permissions', :role_id => @role, :tracker_id => @tracker, :used_statuses_only => params[:used_statuses_only]
if request.post? && @roles && @trackers && params[:permissions]
permissions = params[:permissions].deep_dup
permissions.each { |field, rule_by_status_id|
rule_by_status_id.reject! {|status_id, rule| rule == 'no_change'}
}
WorkflowPermission.replace_permissions(@trackers, @roles, permissions)
flash[:notice] = l(:notice_successful_update)
redirect_to_referer_or workflows_permissions_path
return
end
@used_statuses_only = (params[:used_statuses_only] == '0' ? false : true)
if @tracker && @used_statuses_only && @tracker.issue_statuses.any?
@statuses = @tracker.issue_statuses
end
@statuses ||= IssueStatus.sorted.all
if @role && @tracker
@fields = (Tracker::CORE_FIELDS_ALL - @tracker.disabled_core_fields).map {|field| [field, l("field_"+field.sub(/_id$/, ''))]}
@custom_fields = @tracker.custom_fields
@permissions = WorkflowPermission.where(:tracker_id => @tracker.id, :role_id => @role.id).all.inject({}) do |h, w|
h[w.old_status_id] ||= {}
h[w.old_status_id][w.field_name] = w.rule
h
end
if @roles && @trackers
@fields = (Tracker::CORE_FIELDS_ALL - @trackers.map(&:disabled_core_fields).reduce(:&)).map {|field| [field, l("field_"+field.sub(/_id$/, ''))]}
@custom_fields = @trackers.map(&:custom_fields).flatten.uniq.sort
@permissions = WorkflowPermission.rules_by_status_id(@trackers, @roles)
@statuses.each {|status| @permissions[status.id] ||= {}}
end
end
def copy
@roles = Role.sorted
@trackers = Tracker.sorted
if params[:source_tracker_id].blank? || params[:source_tracker_id] == 'any'
@source_tracker = nil
@ -99,30 +85,56 @@ class WorkflowsController < ApplicationController
else
@source_role = Role.find_by_id(params[:source_role_id].to_i)
end
@target_trackers = params[:target_tracker_ids].blank? ? nil : Tracker.find_all_by_id(params[:target_tracker_ids])
@target_roles = params[:target_role_ids].blank? ? nil : Role.find_all_by_id(params[:target_role_ids])
@target_trackers = params[:target_tracker_ids].blank? ?
nil : Tracker.where(:id => params[:target_tracker_ids]).all
@target_roles = params[:target_role_ids].blank? ?
nil : Role.where(:id => params[:target_role_ids]).all
if request.post?
if params[:source_tracker_id].blank? || params[:source_role_id].blank? || (@source_tracker.nil? && @source_role.nil?)
flash.now[:error] = l(:error_workflow_copy_source)
elsif @target_trackers.nil? || @target_roles.nil?
elsif @target_trackers.blank? || @target_roles.blank?
flash.now[:error] = l(:error_workflow_copy_target)
else
WorkflowRule.copy(@source_tracker, @source_role, @target_trackers, @target_roles)
flash[:notice] = l(:notice_successful_update)
redirect_to :action => 'copy', :source_tracker_id => @source_tracker, :source_role_id => @source_role
redirect_to workflows_copy_path(:source_tracker_id => @source_tracker, :source_role_id => @source_role)
end
end
end
private
def find_trackers_roles_and_statuses_for_edit
find_roles
find_trackers
find_statuses
end
def find_roles
@roles = Role.sorted.all
ids = Array.wrap(params[:role_id])
if ids == ['all']
@roles = Role.sorted.all
elsif ids.present?
@roles = Role.where(:id => ids).all
end
@roles = nil if @roles.blank?
end
def find_trackers
@trackers = Tracker.sorted.all
ids = Array.wrap(params[:tracker_id])
if ids == ['all']
@trackers = Tracker.sorted.all
elsif ids.present?
@trackers = Tracker.where(:id => ids).all
end
@trackers = nil if @trackers.blank?
end
def find_statuses
@used_statuses_only = (params[:used_statuses_only] == '0' ? false : true)
if @trackers && @used_statuses_only
@statuses = @trackers.map(&:issue_statuses).flatten.uniq.sort.presence
end
@statuses ||= IssueStatus.sorted.all
end
end

View File

@ -1,7 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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
@ -15,10 +17,17 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class CommentObserver < ActiveRecord::Observer
def after_create(comment)
if comment.commented.is_a?(News) && Setting.notified_events.include?('news_comment_added')
Mailer.news_comment_added(comment).deliver
module ActivitiesHelper
def sort_activity_events(events)
events_by_group = events.group_by(&:event_group)
sorted_events = []
events.sort {|x, y| y.event_datetime <=> x.event_datetime}.each do |event|
if group_events = events_by_group.delete(event.event_group)
group_events.sort {|x, y| y.event_datetime <=> x.event_datetime}.each_with_index do |e, i|
sorted_events << [e, i > 0]
end
end
end
sorted_events
end
end

View File

@ -1,7 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@ -24,4 +24,12 @@ module AdminHelper
[l(:project_status_closed), '5'],
[l(:project_status_archived), '9']], selected.to_s)
end
def plugin_data_for_updates(plugins)
data = {"v" => Redmine::VERSION.to_s, "p" => {}}
plugins.each do |plugin|
data["p"].merge! plugin.id => {"v" => plugin.version, "n" => plugin.name, "a" => plugin.author}
end
data
end
end

View File

@ -1,7 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@ -24,6 +24,7 @@ module ApplicationHelper
include Redmine::WikiFormatting::Macros::Definitions
include Redmine::I18n
include GravatarHelper::PublicMethods
include Redmine::Pagination::Helper
extend Forwardable
def_delegators :wiki_helper, :wikitoolbar_for, :heads_for_wiki_formatter
@ -47,8 +48,8 @@ module ApplicationHelper
def link_to_user(user, options={})
if user.is_a?(User)
name = h(user.name(options[:format]))
if user.active?
link_to name, :controller => 'users', :action => 'show', :id => user
if user.active? || (User.current.admin? && user.logged?)
link_to name, user_path(user), :class => user.css_classes
else
name
end
@ -64,21 +65,23 @@ module ApplicationHelper
# link_to_issue(issue, :truncate => 6) # => Defect #6: This i...
# link_to_issue(issue, :subject => false) # => Defect #6
# link_to_issue(issue, :project => true) # => Foo - Defect #6
# link_to_issue(issue, :subject => false, :tracker => false) # => #6
#
def link_to_issue(issue, options={})
title = nil
subject = nil
text = options[:tracker] == false ? "##{issue.id}" : "#{issue.tracker} ##{issue.id}"
if options[:subject] == false
title = truncate(issue.subject, :length => 60)
title = issue.subject.truncate(60)
else
subject = issue.subject
if options[:truncate]
subject = truncate(subject, :length => options[:truncate])
if truncate_length = options[:truncate]
subject = subject.truncate(truncate_length)
end
end
s = link_to "#{h(issue.tracker)} ##{issue.id}", {:controller => "issues", :action => "show", :id => issue},
:class => issue.css_classes,
:title => title
only_path = options[:only_path].nil? ? true : options[:only_path]
s = link_to(text, issue_path(issue, :only_path => only_path),
:class => issue.css_classes, :title => title)
s << h(": #{subject}") if subject
s = h("#{issue.project} - ") + s if options[:project]
s
@ -90,14 +93,10 @@ module ApplicationHelper
# * :download - Force download (default: false)
def link_to_attachment(attachment, options={})
text = options.delete(:text) || attachment.filename
action = options.delete(:download) ? 'download' : 'show'
opt_only_path = {}
opt_only_path[:only_path] = (options[:only_path] == false ? false : true)
options.delete(:only_path)
link_to(h(text),
{:controller => 'attachments', :action => action,
:id => attachment, :filename => attachment.filename}.merge(opt_only_path),
options)
route_method = options.delete(:download) ? :download_named_attachment_path : :named_attachment_path
html_options = options.slice!(:only_path)
url = send(route_method, attachment, attachment.filename, options)
link_to text, url, html_options
end
# Generates a link to a SCM revision
@ -119,13 +118,11 @@ module ApplicationHelper
# Generates a link to a message
def link_to_message(message, options={}, html_options = nil)
link_to(
h(truncate(message.subject, :length => 60)),
{ :controller => 'messages', :action => 'show',
:board_id => message.board_id,
:id => (message.parent_id || message.id),
message.subject.truncate(60),
board_message_path(message.board_id, message.parent_id || message.id, {
:r => (message.parent_id && message.id),
:anchor => (message.parent_id ? "message-#{message.id}" : nil)
}.merge(options),
}.merge(options)),
html_options
)
end
@ -134,22 +131,83 @@ module ApplicationHelper
# Examples:
#
# link_to_project(project) # => link to the specified project overview
# link_to_project(project, :action=>'settings') # => link to project settings
# link_to_project(project, {:only_path => false}, :class => "project") # => 3rd arg adds html options
# link_to_project(project, {}, :class => "project") # => html options with default url (project overview)
#
def link_to_project(project, options={}, html_options = nil)
if project.archived?
h(project)
else
h(project.name)
elsif options.key?(:action)
ActiveSupport::Deprecation.warn "#link_to_project with :action option is deprecated and will be removed in Redmine 3.0."
url = {:controller => 'projects', :action => 'show', :id => project}.merge(options)
link_to(h(project), url, html_options)
link_to project.name, url, html_options
else
link_to project.name, project_path(project, options), html_options
end
end
# Generates a link to a project settings if active
def link_to_project_settings(project, options={}, html_options=nil)
if project.active?
link_to project.name, settings_project_path(project, options), html_options
elsif project.archived?
h(project.name)
else
link_to project.name, project_path(project, options), html_options
end
end
# Helper that formats object for html or text rendering
def format_object(object, html=true, &block)
if block_given?
object = yield object
end
case object.class.name
when 'Array'
object.map {|o| format_object(o, html)}.join(', ').html_safe
when 'Time'
format_time(object)
when 'Date'
format_date(object)
when 'Fixnum'
object.to_s
when 'Float'
sprintf "%.2f", object
when 'User'
html ? link_to_user(object) : object.to_s
when 'Project'
html ? link_to_project(object) : object.to_s
when 'Version'
html ? link_to(object.name, version_path(object)) : object.to_s
when 'TrueClass'
l(:general_text_Yes)
when 'FalseClass'
l(:general_text_No)
when 'Issue'
object.visible? && html ? link_to_issue(object) : "##{object.id}"
when 'CustomValue', 'CustomFieldValue'
if object.custom_field
f = object.custom_field.format.formatted_custom_value(self, object, html)
if f.nil? || f.is_a?(String)
f
else
format_object(f, html, &block)
end
else
object.value.to_s
end
else
html ? h(object) : object.to_s
end
end
def wiki_page_path(page, options={})
url_for({:controller => 'wiki', :action => 'show', :project_id => page.project, :id => page.title}.merge(options))
end
def thumbnail_tag(attachment)
link_to image_tag(url_for(:controller => 'attachments', :action => 'thumbnail', :id => attachment)),
{:controller => 'attachments', :action => 'show', :id => attachment, :filename => attachment.filename},
link_to image_tag(thumbnail_path(attachment)),
named_attachment_path(attachment, attachment.filename),
:title => attachment.filename
end
@ -169,7 +227,7 @@ module ApplicationHelper
end
def format_activity_title(text)
h(truncate_single_line(text, :length => 100))
h(truncate_single_line_raw(text, 100))
end
def format_activity_day(date)
@ -177,13 +235,13 @@ module ApplicationHelper
end
def format_activity_description(text)
h(truncate(text.to_s, :length => 120).gsub(%r{[\r\n]*<(pre|code)>.*$}m, '...')
h(text.to_s.truncate(120).gsub(%r{[\r\n]*<(pre|code)>.*$}m, '...')
).gsub(/[\r\n]+/, "<br />").html_safe
end
def format_version_name(version)
if version.project == @project
h(version)
h(version)
else
h("#{version.project} - #{version}")
end
@ -234,7 +292,7 @@ module ApplicationHelper
content << "<ul class=\"pages-hierarchy\">\n"
pages[node].each do |page|
content << "<li>"
content << link_to(h(page.pretty_title), {:controller => 'wiki', :action => 'show', :project_id => page.project, :id => page.title},
content << link_to(h(page.pretty_title), {:controller => 'wiki', :action => 'show', :project_id => page.project, :id => page.title, :version => nil},
:title => (options[:timestamp] && page.updated_on ? l(:label_updated_time, distance_of_time_in_words(Time.now, page.updated_on)) : nil))
content << "\n" + render_page_hierarchy(pages, page.id, options) if pages[page.id]
content << "</li>\n"
@ -254,9 +312,13 @@ module ApplicationHelper
end
# Renders tabs and their content
def render_tabs(tabs)
def render_tabs(tabs, selected=params[:tab])
if tabs.any?
render :partial => 'common/tabs', :locals => {:tabs => tabs}
unless tabs.detect {|tab| tab[:name] == selected}
selected = nil
end
selected ||= tabs.first[:name]
render :partial => 'common/tabs', :locals => {:tabs => tabs, :selected_tab => selected}
else
content_tag 'p', l(:label_no_data), :class => "nodata"
end
@ -304,8 +366,8 @@ module ApplicationHelper
def principals_check_box_tags(name, principals)
s = ''
principals.sort.each do |principal|
s << "<label>#{ check_box_tag name, principal.id, false } #{h principal}</label>\n"
principals.each do |principal|
s << "<label>#{ check_box_tag name, principal.id, false, :id => nil } #{h principal}</label>\n"
end
s.html_safe
end
@ -318,7 +380,7 @@ module ApplicationHelper
end
groups = ''
collection.sort.each do |element|
selected_attribute = ' selected="selected"' if option_value_selected?(element, selected)
selected_attribute = ' selected="selected"' if option_value_selected?(element, selected) || element.id.to_s == selected
(element.is_a?(Group) ? groups : s) << %(<option value="#{element.id}"#{selected_attribute}>#{h element.name}</option>)
end
unless groups.empty?
@ -327,11 +389,32 @@ module ApplicationHelper
s.html_safe
end
# Options for the new membership projects combo-box
def options_for_membership_project_select(principal, projects)
options = content_tag('option', "--- #{l(:actionview_instancetag_blank_option)} ---")
options << project_tree_options_for_select(projects) do |p|
{:disabled => principal.projects.to_a.include?(p)}
end
options
end
def option_tag(name, text, value, selected=nil, options={})
content_tag 'option', value, options.merge(:value => value, :selected => (value == selected))
end
# Truncates and returns the string as a single line
def truncate_single_line(string, *args)
ActiveSupport::Deprecation.warn(
"ApplicationHelper#truncate_single_line is deprecated and will be removed in Rails 4 poring")
# Rails 4 ActionView::Helpers::TextHelper#truncate escapes.
# So, result is broken.
truncate(string.to_s, *args).gsub(%r{[\r\n]+}m, ' ')
end
def truncate_single_line_raw(string, length)
string.truncate(length).gsub(%r{[\r\n]+}m, ' ')
end
# Truncates at line break after 250 characters or options[:length]
def truncate_lines(string, options={})
length = options[:length] || 250
@ -359,7 +442,7 @@ module ApplicationHelper
if @project
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))
content_tag('abbr', text, :title => format_time(time))
end
end
@ -378,59 +461,6 @@ module ApplicationHelper
str.blank? ? nil : str
end
def pagination_links_full(paginator, count=nil, options={})
page_param = options.delete(:page_param) || :page
per_page_links = options.delete(:per_page_links)
url_param = params.dup
html = ''
if paginator.current.previous
# \xc2\xab(utf-8) = &#171;
html << link_to_content_update(
"\xc2\xab " + l(:label_previous),
url_param.merge(page_param => paginator.current.previous)) + ' '
end
html << (pagination_links_each(paginator, options) do |n|
link_to_content_update(n.to_s, url_param.merge(page_param => n))
end || '')
if paginator.current.next
# \xc2\xbb(utf-8) = &#187;
html << ' ' + link_to_content_update(
(l(:label_next) + " \xc2\xbb"),
url_param.merge(page_param => paginator.current.next))
end
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, count)
html << " | #{links}"
end
end
html.html_safe
end
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
l(:label_display_per_page, links.join(', '))
end
def reorder_links(name, url, method = :post)
link_to(image_tag('2uparrow.png', :alt => l(:label_sort_highest)),
url.merge({"#{name}[move_to]" => 'highest'}),
@ -477,12 +507,31 @@ module ApplicationHelper
end
end
# Returns a h2 tag and sets the html title with the given arguments
def title(*args)
strings = args.map do |arg|
if arg.is_a?(Array) && arg.size >= 2
link_to(*arg)
else
h(arg.to_s)
end
end
html_title args.reverse.map {|s| (s.is_a?(Array) ? s.first : s).to_s}
content_tag('h2', strings.join(' &#187; ').html_safe)
end
# Sets the html title
# Returns the html title when called without arguments
# Current project name and app_title and automatically appended
# Exemples:
# html_title 'Foo', 'Bar'
# html_title # => 'Foo - Bar - My Project - Redmine'
def html_title(*args)
if args.empty?
title = @html_title || []
title << @project.name if @project
title << Setting.app_title unless Setting.app_title == title.last
title.select {|t| !t.blank? }.join(' - ')
title.reject(&:blank?).join(' - ')
else
@html_title ||= []
@html_title += args
@ -497,13 +546,18 @@ module ApplicationHelper
css << 'theme-' + theme.name
end
css << 'project-' + @project.identifier if @project && @project.identifier.present?
css << 'controller-' + controller_name
css << 'action-' + action_name
css.join(' ')
end
def accesskey(s)
Redmine::AccessKeys.key_for s
@used_accesskeys ||= []
key = Redmine::AccessKeys.key_for(s)
return nil if @used_accesskeys.include?(key)
@used_accesskeys << key
key
end
# Formats text according to system settings.
@ -584,14 +638,14 @@ module ApplicationHelper
def parse_inline_attachments(text, project, obj, attr, only_path, options)
# when using an image link, try to use an attachment, if possible
if options[:attachments] || (obj && obj.respond_to?(:attachments))
attachments = options[:attachments] || obj.attachments
attachments = options[:attachments] || []
attachments += obj.attachments if obj.respond_to?(:attachments)
if attachments.present?
text.gsub!(/src="([^\/"]+\.(bmp|gif|jpg|jpe|jpeg|png))"(\s+alt="([^"]*)")?/i) do |m|
filename, ext, alt, alttext = $1.downcase, $2, $3, $4
# search for the picture in attachments
if found = Attachment.latest_attach(attachments, filename)
image_url = url_for :only_path => only_path, :controller => 'attachments',
:action => 'download', :id => found
image_url = download_named_attachment_path(found, found.filename, :only_path => only_path)
desc = found.description.to_s.gsub('"', '')
if !desc.blank? && alttext.blank?
alt = " title=\"#{desc}\" alt=\"#{desc}\""
@ -620,9 +674,9 @@ module ApplicationHelper
esc, all, page, title = $1, $2, $3, $5
if esc.nil?
if page =~ /^([^\:]+)\:(.*)$/
link_project = Project.find_by_identifier($1) || Project.find_by_name($1)
page = $2
title ||= $1 if page.blank?
identifier, page = $1, $2
link_project = Project.find_by_identifier(identifier) || Project.find_by_name(identifier)
title ||= identifier if page.blank?
end
if link_project && link_project.wiki
@ -643,8 +697,8 @@ module ApplicationHelper
else
wiki_page_id = page.present? ? Wiki.titleize(page) : nil
parent = wiki_page.nil? && obj.is_a?(WikiContent) && obj.page && project == link_project ? obj.page.title : nil
url_for(:only_path => only_path, :controller => 'wiki', :action => 'show', :project_id => link_project,
:id => wiki_page_id, :anchor => anchor, :parent => parent)
url_for(:only_path => only_path, :controller => 'wiki', :action => 'show', :project_id => link_project,
:id => wiki_page_id, :version => nil, :anchor => anchor, :parent => parent)
end
end
link_to(title.present? ? title.html_safe : h(page), url, :class => ('wiki-page' + (wiki_page ? '' : ' new')))
@ -684,16 +738,20 @@ module ApplicationHelper
# export:some/file -> Force the download of the file
# Forum messages:
# message#1218 -> Link to message with id 1218
# Projects:
# project:someproject -> Link to project named "someproject"
# project#3 -> Link to project with id 3
#
# Links can refer other objects from other projects, using project identifier:
# identifier:r52
# identifier:document:"Some document"
# identifier:version:1.0.0
# identifier:source:some/file
def parse_redmine_links(text, project, obj, attr, only_path, options)
text.gsub!(%r{([\s\(,\-\[\>]|^)(!)?(([a-z0-9\-_]+):)?(attachment|document|version|forum|news|message|project|commit|source|export)?(((#)|((([a-z0-9\-]+)\|)?(r)))((\d+)((#note)?-(\d+))?)|(:)([^"\s<>][^\s<>]*?|"[^"]+?"))(?=(?=[[:punct:]][^A-Za-z0-9_/])|,|\s|\]|<|$)}) do |m|
def parse_redmine_links(text, default_project, obj, attr, only_path, options)
text.gsub!(%r{([\s\(,\-\[\>]|^)(!)?(([a-z0-9\-_]+):)?(attachment|document|version|forum|news|message|project|commit|source|export)?(((#)|((([a-z0-9\-_]+)\|)?(r)))((\d+)((#note)?-(\d+))?)|(:)([^"\s<>][^\s<>]*?|"[^"]+?"))(?=(?=[[:punct:]][^A-Za-z0-9_/])|,|\s|\]|<|$)}) do |m|
leading, esc, project_prefix, project_identifier, prefix, repo_prefix, repo_identifier, sep, identifier, comment_suffix, comment_id = $1, $2, $3, $4, $5, $10, $11, $8 || $12 || $18, $14 || $19, $15, $17
link = nil
project = default_project
if project_identifier
project = Project.visible.find_by_identifier(project_identifier)
end
@ -707,21 +765,30 @@ module ApplicationHelper
repository = project.repository
end
# project.changesets.visible raises an SQL error because of a double join on repositories
if repository && (changeset = Changeset.visible.find_by_repository_id_and_revision(repository.id, identifier))
link = link_to(h("#{project_prefix}#{repo_prefix}r#{identifier}"), {:only_path => only_path, :controller => 'repositories', :action => 'revision', :id => project, :repository_id => repository.identifier_param, :rev => changeset.revision},
:class => 'changeset',
:title => truncate_single_line(changeset.comments, :length => 100))
if repository &&
(changeset = Changeset.visible.
find_by_repository_id_and_revision(repository.id, identifier))
link = link_to(h("#{project_prefix}#{repo_prefix}r#{identifier}"),
{:only_path => only_path, :controller => 'repositories',
:action => 'revision', :id => project,
:repository_id => repository.identifier_param,
:rev => changeset.revision},
:class => 'changeset',
:title => truncate_single_line_raw(changeset.comments, 100))
end
end
elsif sep == '#'
oid = identifier.to_i
case prefix
when nil
if oid.to_s == identifier && issue = Issue.visible.find_by_id(oid, :include => :status)
if oid.to_s == identifier &&
issue = Issue.visible.includes(:status).find_by_id(oid)
anchor = comment_id ? "note-#{comment_id}" : nil
link = link_to("##{oid}", {:only_path => only_path, :controller => 'issues', :action => 'show', :id => oid, :anchor => anchor},
:class => issue.css_classes,
:title => "#{truncate(issue.subject, :length => 100)} (#{issue.status.name})")
link = link_to(h("##{oid}#{comment_suffix}"),
{:only_path => only_path, :controller => 'issues',
:action => 'show', :id => oid, :anchor => anchor},
:class => issue.css_classes,
:title => "#{issue.subject.truncate(100)} (#{issue.status.name})")
end
when 'document'
if document = Document.visible.find_by_id(oid)
@ -734,7 +801,7 @@ module ApplicationHelper
:class => 'version'
end
when 'message'
if message = Message.visible.find_by_id(oid, :include => :parent)
if message = Message.visible.includes(:parent).find_by_id(oid)
link = link_to_message(message, {:only_path => only_path}, :class => 'message')
end
when 'forum'
@ -755,6 +822,7 @@ module ApplicationHelper
elsif sep == ':'
# removes the double quotes if any
name = identifier.gsub(%r{^"(.*)"$}, "\\1")
name = CGI.unescapeHTML(name)
case prefix
when 'document'
if project && document = project.documents.visible.find_by_title(name)
@ -779,40 +847,39 @@ module ApplicationHelper
when 'commit', 'source', 'export'
if project
repository = nil
if name =~ %r{^(([a-z0-9\-]+)\|)(.+)$}
if name =~ %r{^(([a-z0-9\-_]+)\|)(.+)$}
repo_prefix, repo_identifier, name = $1, $2, $3
repository = project.repositories.detect {|repo| repo.identifier == repo_identifier}
else
repository = project.repository
end
if prefix == 'commit'
if repository && (changeset = Changeset.visible.find(:first, :conditions => ["repository_id = ? AND scmid LIKE ?", repository.id, "#{name}%"]))
if repository && (changeset = Changeset.visible.where("repository_id = ? AND scmid LIKE ?", repository.id, "#{name}%").first)
link = link_to h("#{project_prefix}#{repo_prefix}#{name}"), {:only_path => only_path, :controller => 'repositories', :action => 'revision', :id => project, :repository_id => repository.identifier_param, :rev => changeset.identifier},
:class => 'changeset',
:title => truncate_single_line(h(changeset.comments), :length => 100)
:title => truncate_single_line_raw(changeset.comments, 100)
end
else
if repository && User.current.allowed_to?(:browse_repository, project)
name =~ %r{^[/\\]*(.*?)(@([0-9a-f]+))?(#(L\d+))?$}
name =~ %r{^[/\\]*(.*?)(@([^/\\@]+?))?(#(L\d+))?$}
path, rev, anchor = $1, $3, $5
link = link_to h("#{project_prefix}#{prefix}:#{repo_prefix}#{name}"), {:controller => 'repositories', :action => 'entry', :id => project, :repository_id => repository.identifier_param,
link = link_to h("#{project_prefix}#{prefix}:#{repo_prefix}#{name}"), {:controller => 'repositories', :action => (prefix == 'export' ? 'raw' : 'entry'), :id => project, :repository_id => repository.identifier_param,
:path => to_path_param(path),
:rev => rev,
:anchor => anchor,
:format => (prefix == 'export' ? 'raw' : nil)},
:anchor => anchor},
:class => (prefix == 'export' ? 'source download' : 'source')
end
end
repo_prefix = nil
end
when 'attachment'
attachments = options[:attachments] || (obj && obj.respond_to?(:attachments) ? obj.attachments : nil)
if attachments && attachment = attachments.detect {|a| a.filename == name }
link = link_to h(attachment.filename), {:only_path => only_path, :controller => 'attachments', :action => 'download', :id => attachment},
:class => 'attachment'
attachments = options[:attachments] || []
attachments += obj.attachments if obj.respond_to?(:attachments)
if attachments && attachment = Attachment.latest_attach(attachments, name)
link = link_to_attachment(attachment, :only_path => only_path, :download => true, :class => 'attachment')
end
when 'project'
if p = Project.visible.find(:first, :conditions => ["identifier = :s OR LOWER(name) = :s", {:s => name.downcase}])
if p = Project.visible.where("identifier = :s OR LOWER(name) = :s", :s => name.downcase).first
link = link_to_project(p, {:only_path => only_path}, :class => 'project')
end
end
@ -833,7 +900,8 @@ module ApplicationHelper
content_tag('div',
link_to(image_tag('edit.png'), options[:edit_section_links].merge(:section => @current_section)),
:class => 'contextual',
:title => l(:button_edit_section)) + heading.html_safe
:title => l(:button_edit_section),
:id => "section-#{@current_section}") + heading.html_safe
else
heading
end
@ -914,19 +982,20 @@ module ApplicationHelper
end
end
TOC_RE = /<p>\{\{([<>]?)toc\}\}<\/p>/i unless const_defined?(:TOC_RE)
TOC_RE = /<p>\{\{((<|&lt;)|(>|&gt;))?toc\}\}<\/p>/i unless const_defined?(:TOC_RE)
# Renders the TOC with given headings
def replace_toc(text, headings)
text.gsub!(TOC_RE) do
left_align, right_align = $2, $3
# Keep only the 4 first levels
headings = headings.select{|level, anchor, item| level <= 4}
if headings.empty?
''
else
div_class = 'toc'
div_class << ' right' if $1 == '>'
div_class << ' left' if $1 == '<'
div_class << ' right' if right_align
div_class << ' left' if left_align
out = "<ul class=\"#{div_class}\"><li>"
root = headings.map(&:first).min
current = root
@ -959,8 +1028,7 @@ module ApplicationHelper
end
def lang_options_for_select(blank=true)
(blank ? [["(auto)", ""]] : []) +
valid_languages.collect{|lang| [ ll(lang.to_s, :general_lang_name), lang.to_s]}.sort{|x,y| x.last <=> y.last }
(blank ? [["(auto)", ""]] : []) + languages_options
end
def label_tag_for(name, option_tags = nil, options = {})
@ -1005,7 +1073,7 @@ module ApplicationHelper
html << "</ul></div>\n"
end
html.html_safe
end
end
def delete_link(url, options={})
options = {
@ -1019,8 +1087,8 @@ module ApplicationHelper
def preview_link(url, form, target='preview', options={})
content_tag 'a', l(:label_preview), {
:href => "#",
:onclick => %|submitPreview("#{escape_javascript url_for(url)}", "#{escape_javascript form}", "#{escape_javascript target}"); return false;|,
:href => "#",
:onclick => %|submitPreview("#{escape_javascript url_for(url)}", "#{escape_javascript form}", "#{escape_javascript target}"); return false;|,
:accesskey => accesskey(:preview)
}.merge(options)
end
@ -1029,6 +1097,11 @@ module ApplicationHelper
content_tag(:a, name, {:href => '#', :onclick => "#{function}; return false;"}.merge(html_options))
end
# Helper to render JSON in views
def raw_json(arg)
arg.to_json.to_s.gsub('/', '\/').html_safe
end
def back_url
url = params[:back_url]
if url.nil? && referer = request.env['HTTP_REFERER']
@ -1060,8 +1133,8 @@ module ApplicationHelper
(pcts[0] > 0 ? content_tag('td', '', :style => "width: #{pcts[0]}%;", :class => 'closed') : ''.html_safe) +
(pcts[1] > 0 ? content_tag('td', '', :style => "width: #{pcts[1]}%;", :class => 'done') : ''.html_safe) +
(pcts[2] > 0 ? content_tag('td', '', :style => "width: #{pcts[2]}%;", :class => 'todo') : ''.html_safe)
), :class => 'progress', :style => "width: #{width};").html_safe +
content_tag('p', legend, :class => 'pourcent').html_safe
), :class => "progress progress-#{pcts[0]}", :style => "width: #{width};").html_safe +
content_tag('p', legend, :class => 'percent').html_safe
end
def checked_image(checked=true)
@ -1093,16 +1166,24 @@ module ApplicationHelper
def include_calendar_headers_tags
unless @calendar_headers_tags_included
tags = javascript_include_tag("datepicker")
@calendar_headers_tags_included = true
content_for :header_tags do
tags = javascript_tag(
"var datepickerOptions={dateFormat: 'yy-mm-dd', " +
"showOn: 'button', buttonImageOnly: true, buttonImage: '" +
start_of_week = Setting.start_of_week
start_of_week = l(:general_first_day_of_week, :default => '1') if start_of_week.blank?
# Redmine uses 1..7 (monday..sunday) in settings and locales
# JQuery uses 0..6 (sunday..saturday), 7 needs to be changed to 0
start_of_week = start_of_week.to_i % 7
tags << javascript_tag(
"var datepickerOptions={dateFormat: 'yy-mm-dd', firstDay: #{start_of_week}, " +
"showOn: 'button', buttonImageOnly: true, buttonImage: '" +
path_to_image('/images/calendar.png') +
"', showButtonPanel: true};")
"', showButtonPanel: true, showWeek: true, showOtherMonths: true, " +
"selectOtherMonths: true, changeMonth: true, changeYear: true, " +
"beforeShow: beforeShowDatePicker};")
jquery_locale = l('jquery.locale', :default => current_language.to_s)
unless jquery_locale == 'en'
tags << javascript_include_tag("i18n/jquery.ui.datepicker-#{jquery_locale}.js")
tags << javascript_include_tag("i18n/jquery.ui.datepicker-#{jquery_locale}.js")
end
tags
end
@ -1162,18 +1243,13 @@ module ApplicationHelper
super sources, options
end
def content_for(name, content = nil, &block)
@has_content ||= {}
@has_content[name] = true
super(name, content, &block)
end
# TODO: remove this in 2.5.0
def has_content?(name)
(@has_content && @has_content[name]) || false
content_for?(name)
end
def sidebar_content?
has_content?(:sidebar) || view_layouts_base_sidebar_hook_response.present?
content_for?(:sidebar) || view_layouts_base_sidebar_hook_response.present?
end
def view_layouts_base_sidebar_hook_response
@ -1203,7 +1279,7 @@ module ApplicationHelper
def sanitize_anchor_name(anchor)
if ''.respond_to?(:encoding) || RUBY_PLATFORM == 'java'
anchor.gsub(%r{[^\p{Word}\s\-]}, '').gsub(%r{\s+(\-+\s*)?}, '-')
anchor.gsub(%r{[^\s\-\p{Word}]}, '').gsub(%r{\s+(\-+\s*)?}, '-')
else
# TODO: remove when ruby1.8 is no longer supported
anchor.gsub(%r{[^\w\s\-]}, '').gsub(%r{\s+(\-+\s*)?}, '-')
@ -1212,7 +1288,7 @@ module ApplicationHelper
# Returns the javascript tags that are included in the html layout head
def javascript_heads
tags = javascript_include_tag('jquery-1.7.2-ui-1.8.21-ujs-2.0.3', 'application')
tags = javascript_include_tag('jquery-1.8.3-ui-1.9.2-ujs-2.0.3', 'application')
unless User.current.pref.warn_on_leaving_unsaved == '0'
tags << "\n".html_safe + javascript_tag("$(window).load(function(){ warnLeavingUnsaved('#{escape_javascript l(:text_warn_on_leaving_unsaved)}'); });")
end
@ -1220,7 +1296,21 @@ module ApplicationHelper
end
def favicon
"<link rel='shortcut icon' href='#{image_path('/favicon.ico')}' />".html_safe
"<link rel='shortcut icon' href='#{favicon_path}' />".html_safe
end
# Returns the path to the favicon
def favicon_path
icon = (current_theme && current_theme.favicon?) ? current_theme.favicon_path : '/favicon.ico'
image_path(icon)
end
# Returns the full URL to the favicon
def favicon_url
# TODO: use #image_url introduced in Rails4
path = favicon_path
base = url_for(:controller => 'welcome', :action => 'index', :only_path => false)
base.sub(%r{/+$},'') + '/' + path.sub(%r{^/+},'')
end
def robot_exclusion_tag
@ -1242,7 +1332,7 @@ module ApplicationHelper
def api_meta(options)
if params[:nometa].present? || request.headers['X-Redmine-Nometa']
# compatibility mode for activeresource clients that raise
# an error when unserializing an array with attributes
# an error when deserializing an array with attributes
nil
else
options

View File

@ -1,7 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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
@ -26,8 +26,8 @@ module ContextMenusHelper
end
if options.delete(:disabled)
options.delete(:method)
options.delete(:confirm)
options.delete(:onclick)
options.delete(:data)
options[:onclick] = 'return false;'
options[:class] << ' disabled'
url = '#'
end
@ -36,7 +36,7 @@ module ContextMenusHelper
def bulk_update_custom_field_context_menu_link(field, text, value)
context_menu_link h(text),
{:controller => 'issues', :action => 'bulk_update', :ids => @issue_ids, :issue => {'custom_field_values' => {field.id => value}}, :back_url => @back},
bulk_update_issues_path(:ids => @issue_ids, :issue => {'custom_field_values' => {field.id => value}}, :back_url => @back),
:method => :post,
:selected => (@issue && @issue.custom_field_value(field) == value)
end

View File

@ -1,7 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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
@ -19,64 +19,69 @@
module CustomFieldsHelper
def custom_fields_tabs
tabs = [{:name => 'IssueCustomField', :partial => 'custom_fields/index', :label => :label_issue_plural},
{:name => 'TimeEntryCustomField', :partial => 'custom_fields/index', :label => :label_spent_time},
{:name => 'ProjectCustomField', :partial => 'custom_fields/index', :label => :label_project_plural},
{:name => 'VersionCustomField', :partial => 'custom_fields/index', :label => :label_version_plural},
{:name => 'UserCustomField', :partial => 'custom_fields/index', :label => :label_user_plural},
{:name => 'GroupCustomField', :partial => 'custom_fields/index', :label => :label_group_plural},
{:name => 'TimeEntryActivityCustomField', :partial => 'custom_fields/index', :label => TimeEntryActivity::OptionName},
{:name => 'IssuePriorityCustomField', :partial => 'custom_fields/index', :label => IssuePriority::OptionName},
{:name => 'DocumentCategoryCustomField', :partial => 'custom_fields/index', :label => DocumentCategory::OptionName}
]
CUSTOM_FIELDS_TABS = [
{:name => 'IssueCustomField', :partial => 'custom_fields/index',
:label => :label_issue_plural},
{:name => 'TimeEntryCustomField', :partial => 'custom_fields/index',
:label => :label_spent_time},
{:name => 'ProjectCustomField', :partial => 'custom_fields/index',
:label => :label_project_plural},
{:name => 'VersionCustomField', :partial => 'custom_fields/index',
:label => :label_version_plural},
{:name => 'UserCustomField', :partial => 'custom_fields/index',
:label => :label_user_plural},
{:name => 'GroupCustomField', :partial => 'custom_fields/index',
:label => :label_group_plural},
{:name => 'TimeEntryActivityCustomField', :partial => 'custom_fields/index',
:label => TimeEntryActivity::OptionName},
{:name => 'IssuePriorityCustomField', :partial => 'custom_fields/index',
:label => IssuePriority::OptionName},
{:name => 'DocumentCategoryCustomField', :partial => 'custom_fields/index',
:label => DocumentCategory::OptionName}
]
def render_custom_fields_tabs(types)
tabs = CUSTOM_FIELDS_TABS.select {|h| types.include?(h[:name]) }
render_tabs tabs
end
def custom_field_type_options
CUSTOM_FIELDS_TABS.map {|h| [l(h[:label]), h[:name]]}
end
def render_custom_field_format_partial(form, custom_field)
partial = custom_field.format.form_partial
if partial
render :partial => custom_field.format.form_partial, :locals => {:f => form, :custom_field => custom_field}
end
end
def custom_field_tag_name(prefix, custom_field)
name = "#{prefix}[custom_field_values][#{custom_field.id}]"
name << "[]" if custom_field.multiple?
name
end
def custom_field_tag_id(prefix, custom_field)
"#{prefix}_custom_field_values_#{custom_field.id}"
end
# Return custom field html tag corresponding to its format
def custom_field_tag(name, custom_value)
custom_field = custom_value.custom_field
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, custom_value.value, tag_options.merge(:size => 10)) +
calendar_for(field_id)
when "text"
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?, tag_options)
when "list"
blank_option = ''.html_safe
unless custom_field.multiple?
if custom_field.is_required?
unless custom_field.default_value.present?
blank_option = content_tag('option', "--- #{l(:actionview_instancetag_blank_option)} ---", :value => '')
end
else
blank_option = content_tag('option')
end
end
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, tag_options)
end
def custom_field_tag(prefix, custom_value)
custom_value.custom_field.format.edit_tag self,
custom_field_tag_id(prefix, custom_value.custom_field),
custom_field_tag_name(prefix, custom_value.custom_field),
custom_value,
:class => "#{custom_value.custom_field.field_format}_cf"
end
# Return custom field label tag
def custom_field_label_tag(name, custom_value, options={})
required = options[:required] || custom_value.custom_field.is_required?
title = custom_value.custom_field.description.presence
content = content_tag 'span', custom_value.custom_field.name, :title => title
content_tag "label", h(custom_value.custom_field.name) +
content_tag "label", content +
(required ? " <span class=\"required\">*</span>".html_safe : ""),
:for => "#{name}_custom_field_values_#{custom_value.custom_field.id}"
end
@ -86,53 +91,30 @@ module CustomFieldsHelper
custom_field_label_tag(name, custom_value, options) + custom_field_tag(name, custom_value)
end
def custom_field_tag_for_bulk_edit(name, custom_field, projects=nil)
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, '', tag_options.merge(:size => 10)) +
calendar_for(field_id)
when "text"
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']]), 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), tag_options.merge(:multiple => custom_field.multiple?))
else
text_field_tag(field_name, '', tag_options)
end
# Returns the custom field tag for when bulk editing objects
def custom_field_tag_for_bulk_edit(prefix, custom_field, objects=nil, value='')
custom_field.format.bulk_edit_tag self,
custom_field_tag_id(prefix, custom_field),
custom_field_tag_name(prefix, custom_field),
custom_field,
objects,
value,
:class => "#{custom_field.field_format}_cf"
end
# Return a string used to display a custom value
def show_value(custom_value)
return "" unless custom_value
format_value(custom_value.value, custom_value.custom_field.field_format)
def show_value(custom_value, html=true)
format_object(custom_value, html)
end
# Return a string used to display a custom value
def format_value(value, field_format)
if value.is_a?(Array)
value.collect {|v| format_value(v, field_format)}.compact.sort.join(', ')
else
Redmine::CustomFieldFormat.format_value(value, field_format)
end
def format_value(value, custom_field)
format_object(custom_field.format.formatted_value(self, custom_field, value, false), false)
end
# Return an array of custom field formats which can be used in select_tag
def custom_field_formats_for_select(custom_field)
Redmine::CustomFieldFormat.as_select(custom_field.class.customized_class.name)
Redmine::FieldFormat.as_select(custom_field.class.customized_class.name)
end
# Renders the custom_values in api views
@ -155,4 +137,8 @@ module CustomFieldsHelper
end
end unless custom_values.empty?
end
def edit_tag_style_tag(form)
form.select :edit_tag_style, [[l(:label_drop_down_list), ''], [l(:label_checkboxes), 'check_box']], :label => :label_display
end
end

View File

@ -1,7 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@ -24,19 +24,19 @@ module GanttHelper
when :in
if gantt.zoom < 4
link_to_content_update l(:text_zoom_in),
params.merge(gantt.params.merge(:zoom => (gantt.zoom+1))),
params.merge(gantt.params.merge(:zoom => (gantt.zoom + 1))),
:class => 'icon icon-zoom-in'
else
content_tag('span', l(:text_zoom_in), :class => 'icon icon-zoom-in').html_safe
content_tag(:span, l(:text_zoom_in), :class => 'icon icon-zoom-in').html_safe
end
when :out
if gantt.zoom > 1
link_to_content_update l(:text_zoom_out),
params.merge(gantt.params.merge(:zoom => (gantt.zoom-1))),
params.merge(gantt.params.merge(:zoom => (gantt.zoom - 1))),
:class => 'icon icon-zoom-out'
else
content_tag('span', l(:text_zoom_out), :class => 'icon icon-zoom-out').html_safe
content_tag(:span, l(:text_zoom_out), :class => 'icon icon-zoom-out').html_safe
end
end
end

View File

@ -1,7 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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,19 +18,25 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
module GroupsHelper
# Options for the new membership projects combo-box
def options_for_membership_project_select(user, projects)
options = content_tag('option', "--- #{l(:actionview_instancetag_blank_option)} ---")
options << project_tree_options_for_select(projects) do |p|
{:disabled => (user.projects.include?(p))}
end
options
end
def group_settings_tabs
tabs = [{:name => 'general', :partial => 'groups/general', :label => :label_general},
{:name => 'users', :partial => 'groups/users', :label => :label_user_plural},
{:name => 'memberships', :partial => 'groups/memberships', :label => :label_project_plural}
]
end
def render_principals_for_new_group_users(group)
scope = User.active.sorted.not_in_group(group).like(params[:q])
principal_count = scope.count
principal_pages = Redmine::Pagination::Paginator.new principal_count, 100, params['page']
principals = scope.offset(principal_pages.offset).limit(principal_pages.per_page).all
s = content_tag('div', principals_check_box_tags('user_ids[]', principals), :id => 'principals')
links = pagination_links_full(principal_pages, principal_count, :per_page_links => false) {|text, parameters, options|
link_to text, autocomplete_for_user_group_path(group, parameters.merge(:q => params[:q], :format => 'js')), :remote => true
}
s + content_tag('p', links, :class => 'pagination')
end
end

View File

@ -1,7 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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,7 +65,7 @@ module IssuesHelper
s = ''
ancestors = issue.root? ? [] : issue.ancestors.visible.all
ancestors.each do |ancestor|
s << '<div>' + content_tag('p', link_to_issue(ancestor))
s << '<div>' + content_tag('p', link_to_issue(ancestor, :project => (issue.project_id != ancestor.project_id)))
end
s << '<div>'
subject = h(issue.subject)
@ -80,18 +80,43 @@ module IssuesHelper
def render_descendants_tree(issue)
s = '<form><table class="list issues">'
issue_list(issue.descendants.visible.sort_by(&:lft)) do |child, level|
css = "issue issue-#{child.id} hascontextmenu"
css << " idnt idnt-#{level}" if level > 0
s << content_tag('tr',
content_tag('td', check_box_tag("ids[]", child.id, false, :id => nil), :class => 'checkbox') +
content_tag('td', link_to_issue(child, :truncate => 60), :class => 'subject') +
content_tag('td', link_to_issue(child, :truncate => 60, :project => (issue.project_id != child.project_id)), :class => 'subject') +
content_tag('td', h(child.status)) +
content_tag('td', link_to_user(child.assigned_to)) +
content_tag('td', progress_bar(child.done_ratio, :width => '80px')),
:class => "issue issue-#{child.id} hascontextmenu #{level > 0 ? "idnt idnt-#{level}" : nil}")
:class => css)
end
s << '</table></form>'
s.html_safe
end
# Returns an array of error messages for bulk edited issues
def bulk_edit_error_messages(issues)
messages = {}
issues.each do |issue|
issue.errors.full_messages.each do |message|
messages[message] ||= []
messages[message] << issue
end
end
messages.map { |message, issues|
"#{message}: " + issues.map {|i| "##{i.id}"}.join(', ')
}
end
# Returns a link for adding a new subtask to the given issue
def link_to_new_subtask(issue)
attrs = {
:tracker_id => issue.tracker,
:parent_issue_id => issue
}
link_to(l(:button_add), new_project_issue_path(issue.project, :issue => attrs))
end
class IssueFieldsRows
include ActionView::Helpers::TagHelper
@ -135,18 +160,20 @@ module IssuesHelper
end
def render_custom_fields_rows(issue)
return if issue.custom_field_values.empty?
values = issue.visible_custom_field_values
return if values.empty?
ordered_values = []
half = (issue.custom_field_values.size / 2.0).ceil
half = (values.size / 2.0).ceil
half.times do |i|
ordered_values << issue.custom_field_values[i]
ordered_values << issue.custom_field_values[i + half]
ordered_values << values[i]
ordered_values << values[i + half]
end
s = "<tr>\n"
n = 0
ordered_values.compact.each do |value|
css = "cf_#{value.custom_field.id}"
s << "</tr>\n<tr>\n" if n > 0 && (n % 2) == 0
s << "\t<th>#{ h(value.custom_field.name) }:</th><td>#{ simple_format_without_paragraph(h(show_value(value))) }</td>\n"
s << "\t<th class=\"#{css}\">#{ h(value.custom_field.name) }:</th><td class=\"#{css}\">#{ h(show_value(value)) }</td>\n"
n += 1
end
s << "</tr>\n"
@ -173,36 +200,60 @@ module IssuesHelper
def sidebar_queries
unless @sidebar_queries
@sidebar_queries = Query.visible.all(
:order => "#{Query.table_name}.name ASC",
@sidebar_queries = IssueQuery.visible.
order("#{Query.table_name}.name ASC").
# Project specific queries and global queries
:conditions => (@project.nil? ? ["project_id IS NULL"] : ["project_id IS NULL OR project_id = ?", @project.id])
)
where(@project.nil? ? ["project_id IS NULL"] : ["project_id IS NULL OR project_id = ?", @project.id]).
all
end
@sidebar_queries
end
def query_links(title, queries)
return '' if queries.empty?
# links to #index on issues/show
url_params = controller_name == 'issues' ? {:controller => 'issues', :action => 'index', :project_id => @project} : params
content_tag('h3', h(title)) +
queries.collect {|query|
css = 'query'
css << ' selected' if query == @query
link_to(h(query.name), url_params.merge(:query_id => query), :class => css)
}.join('<br />').html_safe
content_tag('h3', title) + "\n" +
content_tag('ul',
queries.collect {|query|
css = 'query'
css << ' selected' if query == @query
content_tag('li', link_to(query.name, url_params.merge(:query_id => query), :class => css))
}.join("\n").html_safe,
:class => 'queries'
) + "\n"
end
def render_sidebar_queries
out = ''.html_safe
queries = sidebar_queries.select {|q| !q.is_public?}
out << query_links(l(:label_my_queries), queries) if queries.any?
queries = sidebar_queries.select {|q| q.is_public?}
out << query_links(l(:label_query_plural), queries) if queries.any?
out << query_links(l(:label_my_queries), sidebar_queries.select(&:is_private?))
out << query_links(l(:label_query_plural), sidebar_queries.reject(&:is_private?))
out
end
def email_issue_attributes(issue, user)
items = []
%w(author status priority assigned_to category fixed_version).each do |attribute|
unless issue.disabled_core_fields.include?(attribute+"_id")
items << "#{l("field_#{attribute}")}: #{issue.send attribute}"
end
end
issue.visible_custom_field_values(user).each do |value|
items << "#{value.custom_field.name}: #{show_value(value, false)}"
end
items
end
def render_email_issue_attributes(issue, user, html=false)
items = email_issue_attributes(issue, user)
if html
content_tag('ul', items.map{|s| content_tag('li', s)}.join("\n").html_safe)
else
items.map{|s| "* #{s}"}.join("\n")
end
end
# Returns the textual representation of a journal details
# as an array of strings
def details_to_strings(details, no_html=false, options={})
@ -211,23 +262,23 @@ module IssuesHelper
values_by_field = {}
details.each do |detail|
if detail.property == 'cf'
field_id = detail.prop_key
field = CustomField.find_by_id(field_id)
field = detail.custom_field
if field && field.multiple?
values_by_field[field_id] ||= {:added => [], :deleted => []}
values_by_field[field] ||= {:added => [], :deleted => []}
if detail.old_value
values_by_field[field_id][:deleted] << detail.old_value
values_by_field[field][:deleted] << detail.old_value
end
if detail.value
values_by_field[field_id][:added] << detail.value
values_by_field[field][:added] << detail.value
end
next
end
end
strings << show_detail(detail, no_html, options)
end
values_by_field.each do |field_id, changes|
detail = JournalDetail.new(:property => 'cf', :prop_key => field_id)
values_by_field.each do |field, changes|
detail = JournalDetail.new(:property => 'cf', :prop_key => field.id.to_s)
detail.instance_variable_set "@custom_field", field
if changes[:added].any?
detail.value = changes[:added]
strings << show_detail(detail, no_html, options)
@ -270,15 +321,27 @@ module IssuesHelper
old_value = l(detail.old_value == "0" ? :general_text_No : :general_text_Yes) unless detail.old_value.blank?
end
when 'cf'
custom_field = CustomField.find_by_id(detail.prop_key)
custom_field = detail.custom_field
if custom_field
multiple = custom_field.multiple?
label = custom_field.name
value = format_value(detail.value, custom_field.field_format) if detail.value
old_value = format_value(detail.old_value, custom_field.field_format) if detail.old_value
value = format_value(detail.value, custom_field) if detail.value
old_value = format_value(detail.old_value, custom_field) if detail.old_value
end
when 'attachment'
label = l(:label_attachment)
when 'relation'
if detail.value && !detail.old_value
rel_issue = Issue.visible.find_by_id(detail.value)
value = rel_issue.nil? ? "#{l(:label_issue)} ##{detail.value}" :
(no_html ? rel_issue : link_to_issue(rel_issue, :only_path => options[:only_path]))
elsif detail.old_value && !detail.value
rel_issue = Issue.visible.find_by_id(detail.old_value)
old_value = rel_issue.nil? ? "#{l(:label_issue)} ##{detail.old_value}" :
(no_html ? rel_issue : link_to_issue(rel_issue, :only_path => options[:only_path]))
end
relation_type = IssueRelation::TYPES[detail.prop_key]
label = l(relation_type[:name]) if relation_type
end
call_hook(:helper_issues_show_detail_after_setting,
{:detail => detail, :label => label, :value => value, :old_value => old_value })
@ -290,7 +353,9 @@ module IssuesHelper
unless no_html
label = content_tag('strong', label)
old_value = content_tag("i", h(old_value)) if detail.old_value
old_value = content_tag("del", old_value) if detail.old_value and detail.value.blank?
if detail.old_value && detail.value.blank? && detail.property != 'relation'
old_value = content_tag("del", old_value)
end
if detail.property == 'attachment' && !value.blank? && atta = Attachment.find_by_id(detail.prop_key)
# Link to the attachment if it has not been removed
value = link_to_attachment(atta, :download => true, :only_path => options[:only_path])
@ -326,7 +391,7 @@ module IssuesHelper
else
l(:text_journal_set_to, :label => label, :value => value).html_safe
end
when 'attachment'
when 'attachment', 'relation'
l(:text_journal_added, :label => label, :value => value).html_safe
end
else
@ -336,10 +401,16 @@ module IssuesHelper
# Find the name of an associated record stored in the field attribute
def find_name_by_reflection(field, id)
unless id.present?
return nil
end
association = Issue.reflect_on_association(field.to_sym)
if association
record = association.class_name.constantize.find_by_id(id)
return record.name if record
if record
record.name.force_encoding('UTF-8') if record.name.respond_to?(:force_encoding)
return record.name
end
end
end
@ -356,41 +427,4 @@ module IssuesHelper
end
end
end
def issues_to_csv(issues, project, query, options={})
decimal_separator = l(:general_csv_decimal_separator)
encoding = l(:general_csv_encoding)
columns = (options[:columns] == 'all' ? query.available_columns : query.columns)
export = FCSV.generate(:col_sep => l(:general_csv_separator)) do |csv|
# csv header fields
csv << [ "#" ] + columns.collect {|c| Redmine::CodesetUtil.from_utf8(c.caption.to_s, encoding) } +
(options[:description] ? [Redmine::CodesetUtil.from_utf8(l(:field_description), encoding)] : [])
# csv lines
issues.each do |issue|
col_values = columns.collect do |column|
s = if column.is_a?(QueryCustomFieldColumn)
cv = issue.custom_field_values.detect {|v| v.custom_field_id == column.custom_field.id}
show_value(cv)
else
value = column.value(issue)
if value.is_a?(Date)
format_date(value)
elsif value.is_a?(Time)
format_time(value)
elsif value.is_a?(Float)
("%.2f" % value).gsub('.', decimal_separator)
else
value
end
end
s.to_s
end
csv << [ issue.id.to_s ] + col_values.collect {|c| Redmine::CodesetUtil.from_utf8(c.to_s, encoding) } +
(options[:description] ? [Redmine::CodesetUtil.from_utf8(issue.description, encoding)] : [])
end
end
export
end
end

View File

@ -1,7 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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,4 +18,18 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
module MembersHelper
def render_principals_for_new_members(project)
scope = Principal.active.sorted.not_member_of(project).like(params[:q])
principal_count = scope.count
principal_pages = Redmine::Pagination::Paginator.new principal_count, 100, params['page']
principals = scope.offset(principal_pages.offset).limit(principal_pages.per_page).all
s = content_tag('div', principals_check_box_tags('membership[user_ids][]', principals), :id => 'principals')
links = pagination_links_full(principal_pages, principal_count, :per_page_links => false) {|text, parameters, options|
link_to text, autocomplete_project_memberships_path(project, parameters.merge(:q => params[:q], :format => 'js')), :remote => true
}
s + content_tag('p', links, :class => 'pagination')
end
end

View File

@ -1,7 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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,4 +18,54 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
module MyHelper
def calendar_items(startdt, enddt)
Issue.visible.
where(:project_id => User.current.projects.map(&:id)).
where("(start_date>=? and start_date<=?) or (due_date>=? and due_date<=?)", startdt, enddt, startdt, enddt).
includes(:project, :tracker, :priority, :assigned_to).
all
end
def documents_items
Document.visible.order("#{Document.table_name}.created_on DESC").limit(10).all
end
def issuesassignedtome_items
Issue.visible.open.
where(:assigned_to_id => ([User.current.id] + User.current.group_ids)).
limit(10).
includes(:status, :project, :tracker, :priority).
order("#{IssuePriority.table_name}.position DESC, #{Issue.table_name}.updated_on DESC").
all
end
def issuesreportedbyme_items
Issue.visible.
where(:author_id => User.current.id).
limit(10).
includes(:status, :project, :tracker).
order("#{Issue.table_name}.updated_on DESC").
all
end
def issueswatched_items
Issue.visible.on_active_project.watched_by(User.current.id).recently_updated.limit(10).all
end
def news_items
News.visible.
where(:project_id => User.current.projects.map(&:id)).
limit(10).
includes(:project, :author).
order("#{News.table_name}.created_on DESC").
all
end
def timelog_items
TimeEntry.
where("#{TimeEntry.table_name}.user_id = ? AND #{TimeEntry.table_name}.spent_on BETWEEN ? AND ?", User.current.id, Date.today - 6, Date.today).
includes(:activity, :project, {:issue => [:tracker, :status]}).
order("#{TimeEntry.table_name}.spent_on DESC, #{Project.table_name}.name ASC, #{Tracker.table_name}.position ASC, #{Issue.table_name}.id ASC").
all
end
end

View File

@ -1,7 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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 @@
module ProjectsHelper
def link_to_version(version, options = {})
return '' unless version && version.is_a?(Version)
link_to_if version.visible?, format_version_name(version), { :controller => 'versions', :action => 'show', :id => version }, options
link_to_if version.visible?, format_version_name(version), version_path(version), options
end
def project_settings_tabs
@ -46,11 +46,26 @@ module ProjectsHelper
end
options = ''
options << "<option value=''></option>" if project.allowed_parents.include?(nil)
options << "<option value=''>&nbsp;</option>" if project.allowed_parents.include?(nil)
options << project_tree_options_for_select(project.allowed_parents.compact, :selected => selected)
content_tag('select', options.html_safe, :name => 'project[parent_id]', :id => 'project_parent_id')
end
def render_project_action_links
links = []
if User.current.allowed_to?(:add_project, nil, :global => true)
links << link_to(l(:label_project_new), new_project_path, :class => 'icon icon-add')
end
if User.current.allowed_to?(:view_issues, nil, :global => true)
links << link_to(l(:label_issue_view_all), issues_path)
end
if User.current.allowed_to?(:view_time_entries, nil, :global => true)
links << link_to(l(:label_overall_spent_time), time_entries_path)
end
links << link_to(l(:label_overall_activity), activity_path)
links.join(" | ").html_safe
end
# Renders the projects index
def render_project_hierarchy(projects)
render_project_nested_lists(projects) do |project|
@ -69,10 +84,11 @@ module ProjectsHelper
grouped[version.project.name] << [version.name, version.id]
end
selected = selected.is_a?(Version) ? selected.id : selected
if grouped.keys.size > 1
grouped_options_for_select(grouped, selected && selected.id)
grouped_options_for_select(grouped, selected)
else
options_for_select((grouped.values.first || []), selected && selected.id)
options_for_select((grouped.values.first || []), selected)
end
end

View File

@ -1,7 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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,62 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
module QueriesHelper
include ApplicationHelper
def filters_options_for_select(query)
options_for_select(filters_options(query))
end
def filters_options(query)
options = [[]]
options += query.available_filters.sort {|a,b| a[1][:order] <=> b[1][:order]}.map do |field, field_options|
options += query.available_filters.map do |field, field_options|
[field_options[:name], field]
end
options_for_select(options)
end
def query_filters_hidden_tags(query)
tags = ''.html_safe
query.filters.each do |field, options|
tags << hidden_field_tag("f[]", field, :id => nil)
tags << hidden_field_tag("op[#{field}]", options[:operator], :id => nil)
options[:values].each do |value|
tags << hidden_field_tag("v[#{field}][]", value, :id => nil)
end
end
tags
end
def query_columns_hidden_tags(query)
tags = ''.html_safe
query.columns.each do |column|
tags << hidden_field_tag("c[]", column.name, :id => nil)
end
tags
end
def query_hidden_tags(query)
query_filters_hidden_tags(query) + query_columns_hidden_tags(query)
end
def available_block_columns_tags(query)
tags = ''.html_safe
query.available_block_columns.each do |column|
tags << content_tag('label', check_box_tag('c[]', column.name.to_s, query.has_column?(column), :id => nil) + " #{column.caption}", :class => 'inline')
end
tags
end
def query_available_inline_columns_options(query)
(query.available_inline_columns - query.columns).reject(&:frozen?).collect {|column| [column.caption, column.name]}
end
def query_selected_inline_columns_options(query)
(query.inline_columns & query.available_inline_columns).reject(&:frozen?).collect {|column| [column.caption, column.name]}
end
def render_query_columns_selection(query, options={})
tag_name = (options[:name] || 'c') + '[]'
render :partial => 'queries/columns', :locals => {:query => query, :tag_name => tag_name}
end
def column_header(column)
@ -33,71 +83,98 @@ module QueriesHelper
end
def column_content(column, issue)
value = column.value(issue)
value = column.value_object(issue)
if value.is_a?(Array)
value.collect {|v| column_value(column, issue, v)}.compact.sort.join(', ').html_safe
value.collect {|v| column_value(column, issue, v)}.compact.join(', ').html_safe
else
column_value(column, issue, value)
end
end
def column_value(column, issue, value)
case value.class.name
when 'String'
if column.name == :subject
link_to(h(value), :controller => 'issues', :action => 'show', :id => issue)
else
h(value)
end
when 'Time'
format_time(value)
when 'Date'
format_date(value)
when 'Fixnum', 'Float'
if column.name == :done_ratio
progress_bar(value, :width => '80px')
elsif column.name == :spent_hours
sprintf "%.2f", value
else
h(value.to_s)
end
when 'User'
link_to_user value
when 'Project'
link_to_project value
when 'Version'
link_to(h(value), :controller => 'versions', :action => 'show', :id => value)
when 'TrueClass'
l(:general_text_Yes)
when 'FalseClass'
l(:general_text_No)
when 'Issue'
link_to_issue(value, :subject => false)
case column.name
when :id
link_to value, issue_path(issue)
when :subject
link_to value, issue_path(issue)
when :description
issue.description? ? content_tag('div', textilizable(issue, :description), :class => "wiki") : ''
when :done_ratio
progress_bar(value, :width => '80px')
when :relations
other = value.other_issue(issue)
content_tag('span',
(l(value.label_for(issue)) + " " + link_to_issue(other, :subject => false, :tracker => false)).html_safe,
:class => value.css_classes_for(issue))
else
h(value)
format_object(value)
end
end
def csv_content(column, issue)
value = column.value_object(issue)
if value.is_a?(Array)
value.collect {|v| csv_value(column, issue, v)}.compact.join(', ')
else
csv_value(column, issue, value)
end
end
def csv_value(column, issue, value)
format_object(value, false) do |value|
case value.class.name
when 'Float'
sprintf("%.2f", value).gsub('.', l(:general_csv_decimal_separator))
when 'IssueRelation'
other = value.other_issue(issue)
l(value.label_for(issue)) + " ##{other.id}"
else
value
end
end
end
def query_to_csv(items, query, options={})
encoding = l(:general_csv_encoding)
columns = (options[:columns] == 'all' ? query.available_inline_columns : query.inline_columns)
query.available_block_columns.each do |column|
if options[column.name].present?
columns << column
end
end
export = FCSV.generate(:col_sep => l(:general_csv_separator)) do |csv|
# csv header fields
csv << columns.collect {|c| Redmine::CodesetUtil.from_utf8(c.caption.to_s, encoding) }
# csv lines
items.each do |item|
csv << columns.collect {|c| Redmine::CodesetUtil.from_utf8(csv_content(c, item), encoding) }
end
end
export
end
# Retrieve query from session or build a new query
def retrieve_query
if !params[:query_id].blank?
cond = "project_id IS NULL"
cond << " OR project_id = #{@project.id}" if @project
@query = Query.find(params[:query_id], :conditions => cond)
@query = IssueQuery.where(cond).find(params[:query_id])
raise ::Unauthorized unless @query.visible?
@query.project = @project
session[:query] = {:id => @query.id, :project_id => @query.project_id}
sort_clear
elsif api_request? || params[:set_filter] || session[:query].nil? || session[:query][:project_id] != (@project ? @project.id : nil)
# Give it a name, required to be valid
@query = Query.new(:name => "_")
@query = IssueQuery.new(:name => "_")
@query.project = @project
build_query_from_params
@query.build_from_params(params)
session[:query] = {:project_id => @query.project_id, :filters => @query.filters, :group_by => @query.group_by, :column_names => @query.column_names}
else
# retrieve from session
@query = Query.find_by_id(session[:query][:id]) if session[:query][:id]
@query ||= Query.new(:name => "_", :filters => session[:query][:filters], :group_by => session[:query][:group_by], :column_names => session[:query][:column_names])
@query = nil
@query = IssueQuery.find_by_id(session[:query][:id]) if session[:query][:id]
@query ||= IssueQuery.new(:name => "_", :filters => session[:query][:filters], :group_by => session[:query][:group_by], :column_names => session[:query][:column_names])
@query.project = @project
end
end
@ -105,10 +182,10 @@ module QueriesHelper
def retrieve_query_from_session
if session[:query]
if session[:query][:id]
@query = Query.find_by_id(session[:query][:id])
@query = IssueQuery.find_by_id(session[:query][:id])
return unless @query
else
@query = Query.new(:name => "_", :filters => session[:query][:filters], :group_by => session[:query][:group_by], :column_names => session[:query][:column_names])
@query = IssueQuery.new(:name => "_", :filters => session[:query][:filters], :group_by => session[:query][:group_by], :column_names => session[:query][:column_names])
end
if session[:query].has_key?(:project_id)
@query.project_id = session[:query][:project_id]
@ -118,17 +195,4 @@ module QueriesHelper
@query
end
end
def build_query_from_params
if params[:fields] || params[:f]
@query.filters = {}
@query.add_filters(params[:fields] || params[:f], params[:operators] || params[:op], params[:values] || params[:v])
else
@query.available_filters.keys.each do |field|
@query.add_short_filter(field, params[field]) if params[field]
end
end
@query.group_by = params[:group_by] || (params[:query] && params[:query][:group_by])
@query.column_names = params[:c] || (params[:query] && params[:query][:column_names])
end
end

View File

@ -1,7 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@ -24,7 +24,7 @@ module ReportsHelper
data.each { |row|
match = 1
criteria.each { |k, v|
match = 0 unless (row[k].to_s == v.to_s) || (k == 'closed' && row[k] == (v == 0 ? "f" : "t"))
match = 0 unless (row[k].to_s == v.to_s) || (k == 'closed' && (v == 0 ? ['f', false] : ['t', true]).include?(row[k]))
} unless criteria.nil?
a = a + row["total"].to_i if match == 1
} unless data.nil?
@ -35,4 +35,9 @@ module ReportsHelper
a = aggregate data, criteria
a > 0 ? link_to(h(a), *args) : '-'
end
def aggregate_path(project, field, row, options={})
parameters = {:set_filter => 1, :subproject_id => '!*', field => row.id}.merge(options)
project_issues_path(row.is_a?(Project) ? row : project, parameters)
end
end

View File

@ -1,7 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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,9 +17,6 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
require 'iconv'
require 'redmine/codeset_util'
module RepositoriesHelper
def format_revision(revision)
if revision.respond_to? :format_identifier
@ -46,7 +43,7 @@ module RepositoriesHelper
end
def render_changeset_changes
changes = @changeset.filechanges.find(:all, :limit => 1000, :order => 'path').collect do |change|
changes = @changeset.filechanges.limit(1000).reorder('path').collect do |change|
case change.action
when 'A'
# Detects moved/copied files
@ -253,16 +250,13 @@ module RepositoriesHelper
def index_commits(commits, heads)
return nil if commits.nil? or commits.first.parents.nil?
refs_map = {}
heads.each do |head|
refs_map[head.scmid] ||= []
refs_map[head.scmid] << head
end
commits_by_scmid = {}
commits.reverse.each_with_index do |commit, commit_index|
commits_by_scmid[commit.scmid] = {
:parent_scmids => commit.parents.collect { |parent| parent.scmid },
:rdmid => commit_index,
@ -271,38 +265,28 @@ module RepositoriesHelper
:href => block_given? ? yield(commit.scmid) : commit.scmid
}
end
heads.sort! { |head1, head2| head1.to_s <=> head2.to_s }
space = nil
heads.each do |head|
if commits_by_scmid.include? head.scmid
space = index_head((space || -1) + 1, head, commits_by_scmid)
end
end
# when no head matched anything use first commit
space ||= index_head(0, commits.first, commits_by_scmid)
return commits_by_scmid, space
end
def index_head(space, commit, commits_by_scmid)
stack = [[space, commits_by_scmid[commit.scmid]]]
max_space = space
until stack.empty?
space, commit = stack.pop
commit[:space] = space if commit[:space].nil?
space -= 1
commit[:parent_scmids].each_with_index do |parent_scmid, parent_index|
parent_commit = commits_by_scmid[parent_scmid]
if parent_commit and parent_commit[:space].nil?
stack.unshift [space += 1, parent_commit]
end
end

View File

@ -1,7 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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
@ -15,15 +17,23 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class JournalObserver < ActiveRecord::Observer
def after_create(journal)
if journal.notify? &&
(Setting.notified_events.include?('issue_updated') ||
(Setting.notified_events.include?('issue_note_added') && journal.notes.present?) ||
(Setting.notified_events.include?('issue_status_updated') && journal.new_status.present?) ||
(Setting.notified_events.include?('issue_priority_updated') && journal.new_value_for('priority_id').present?)
)
Mailer.issue_edit(journal).deliver
module RoutesHelper
# Returns the path to project issues or to the cross-project
# issue list if project is nil
def _project_issues_path(project, *args)
if project
project_issues_path(project, *args)
else
issues_path(*args)
end
end
def _project_calendar_path(project, *args)
project ? project_calendar_path(project, *args) : issues_calendar_path(*args)
end
def _project_gantt_path(project, *args)
project ? project_gantt_path(project, *args) : issues_gantt_path(*args)
end
end

View File

@ -1,7 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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
@ -53,10 +53,10 @@ module SettingsHelper
check_box_tag(
"settings[#{setting}][]",
value,
Setting.send(setting).include?(value),
setting_values.include?(value),
:id => nil
) + text.to_s,
:class => 'block'
:class => (options[:inline] ? 'inline' : 'block')
)
end.join.html_safe
end
@ -79,16 +79,40 @@ module SettingsHelper
def setting_label(setting, options={})
label = options.delete(:label)
label != false ? label_tag("settings_#{setting}", l(label || "setting_#{setting}")).html_safe : ''
label != false ? label_tag("settings_#{setting}", l(label || "setting_#{setting}"), options[:label_options]).html_safe : ''
end
# Renders a notification field for a Redmine::Notifiable option
def notification_field(notifiable)
return content_tag(:label,
check_box_tag('settings[notified_events][]',
notifiable.name,
Setting.notified_events.include?(notifiable.name), :id => nil).html_safe +
l_or_humanize(notifiable.name, :prefix => 'label_').html_safe,
:class => notifiable.parent.present? ? "parent" : '').html_safe
tag_data = notifiable.parent.present? ?
{:parent_notifiable => notifiable.parent} :
{:disables => "input[data-parent-notifiable=#{notifiable.name}]"}
tag = check_box_tag('settings[notified_events][]',
notifiable.name,
Setting.notified_events.include?(notifiable.name),
:id => nil,
:data => tag_data)
text = l_or_humanize(notifiable.name, :prefix => 'label_')
options = {}
if notifiable.parent.present?
options[:class] = "parent"
end
content_tag(:label, tag + text, options)
end
def cross_project_subtasks_options
options = [
[:label_disabled, ''],
[:label_cross_project_system, 'system'],
[:label_cross_project_tree, 'tree'],
[:label_cross_project_hierarchy, 'hierarchy'],
[:label_cross_project_descendants, 'descendants']
]
options.map {|label, value| [l(label), value.to_s]}
end
end

View File

@ -80,15 +80,20 @@ module SortHelper
@criteria.collect {|k,o| k + (o ? '' : ':desc')}.join(',')
end
# Returns an array of SQL fragments used to sort the list
def to_sql
sql = @criteria.collect do |k,o|
if s = @available_criteria[k]
(o ? s.to_a : s.to_a.collect {|c| append_desc(c)}).join(', ')
(o ? s.to_a : s.to_a.collect {|c| append_desc(c)})
end
end.compact.join(', ')
end.flatten.compact
sql.blank? ? nil : sql
end
def to_a
@criteria.dup
end
def add!(key, asc)
@criteria.delete_if {|k,o| k == key}
@criteria = [[key, asc]] + @criteria
@ -182,6 +187,10 @@ module SortHelper
@sort_criteria.to_sql
end
def sort_criteria
@sort_criteria
end
# Returns a link which sorts by the named column.
#
# - column is the name of an attribute in the sorted record collection.

View File

@ -1,7 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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
@ -56,10 +56,10 @@ module TimelogHelper
end
def select_hours(data, criteria, value)
if value.to_s.empty?
data.select {|row| row[criteria].blank? }
if value.to_s.empty?
data.select {|row| row[criteria].blank? }
else
data.select {|row| row[criteria].to_s == value.to_s}
data.select {|row| row[criteria].to_s == value.to_s}
end
end
@ -77,6 +77,7 @@ module TimelogHelper
[l(:label_yesterday), 'yesterday'],
[l(:label_this_week), 'current_week'],
[l(:label_last_week), 'last_week'],
[l(:label_last_n_weeks, 2), 'last_2_weeks'],
[l(:label_last_n_days, 7), '7_days'],
[l(:label_this_month), 'current_month'],
[l(:label_last_month), 'last_month'],
@ -85,49 +86,6 @@ module TimelogHelper
value)
end
def entries_to_csv(entries)
decimal_separator = l(:general_csv_decimal_separator)
custom_fields = TimeEntryCustomField.find(:all)
export = FCSV.generate(:col_sep => l(:general_csv_separator)) do |csv|
# csv header fields
headers = [l(:field_spent_on),
l(:field_user),
l(:field_activity),
l(:field_project),
l(:field_issue),
l(:field_tracker),
l(:field_subject),
l(:field_hours),
l(:field_comments)
]
# Export custom fields
headers += custom_fields.collect(&:name)
csv << headers.collect {|c| Redmine::CodesetUtil.from_utf8(
c.to_s,
l(:general_csv_encoding) ) }
# csv lines
entries.each do |entry|
fields = [format_date(entry.spent_on),
entry.user,
entry.activity,
entry.project,
(entry.issue ? entry.issue.id : nil),
(entry.issue ? entry.issue.tracker : nil),
(entry.issue ? entry.issue.subject : nil),
entry.hours.to_s.gsub('.', decimal_separator),
entry.comments
]
fields += custom_fields.collect {|f| show_value(entry.custom_field_values.detect {|v| v.custom_field_id == f.id}) }
csv << fields.collect {|c| Redmine::CodesetUtil.from_utf8(
c.to_s,
l(:general_csv_encoding) ) }
end
end
export
end
def format_criteria_value(criteria_options, value)
if value.blank?
"[#{l(:label_none)}]"
@ -138,8 +96,10 @@ module TimelogHelper
else
obj
end
elsif cf = criteria_options[:custom_field]
format_value(value, cf)
else
format_value(value, criteria_options[:format])
value.to_s
end
end
@ -149,14 +109,14 @@ module TimelogHelper
# Column headers
headers = report.criteria.collect {|criteria| l(report.available_criteria[criteria][:label]) }
headers += report.periods
headers << l(:label_total)
headers << l(:label_total_time)
csv << headers.collect {|c| Redmine::CodesetUtil.from_utf8(
c.to_s,
l(:general_csv_encoding) ) }
# Content
report_criteria_to_csv(csv, report.available_criteria, report.columns, report.criteria, report.periods, report.hours)
# Total row
str_total = Redmine::CodesetUtil.from_utf8(l(:label_total), l(:general_csv_encoding))
str_total = Redmine::CodesetUtil.from_utf8(l(:label_total_time), l(:general_csv_encoding))
row = [ str_total ] + [''] * (report.criteria.size - 1)
total = 0
report.periods.each do |period|

View File

@ -1,7 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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
@ -19,22 +19,13 @@
module UsersHelper
def users_status_options_for_select(selected)
user_count_by_status = User.count(:group => 'status').to_hash
user_count_by_status = User.group('status').count.to_hash
options_for_select([[l(:label_all), ''],
["#{l(:status_active)} (#{user_count_by_status[1].to_i})", '1'],
["#{l(:status_registered)} (#{user_count_by_status[2].to_i})", '2'],
["#{l(:status_locked)} (#{user_count_by_status[3].to_i})", '3']], selected.to_s)
end
# Options for the new membership projects combo-box
def options_for_membership_project_select(user, projects)
options = content_tag('option', "--- #{l(:actionview_instancetag_blank_option)} ---")
options << project_tree_options_for_select(projects) do |p|
{:disabled => (user.projects.include?(p))}
end
options
end
def user_mail_notification_options(user)
user.valid_notification_options.collect {|o| [l(o.last), o.first]}
end

View File

@ -1,7 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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
@ -35,16 +35,14 @@ module VersionsHelper
h = Hash.new {|k,v| k[v] = [0, 0]}
begin
# Total issue count
Issue.count(:group => criteria,
:conditions => ["#{Issue.table_name}.fixed_version_id = ?", version.id]).each {|c,s| h[c][0] = s}
Issue.where(:fixed_version_id => version.id).group(criteria).count.each {|c,s| h[c][0] = s}
# Open issues count
Issue.count(:group => criteria,
:include => :status,
:conditions => ["#{Issue.table_name}.fixed_version_id = ? AND #{IssueStatus.table_name}.is_closed = ?", version.id, false]).each {|c,s| h[c][1] = s}
Issue.open.where(:fixed_version_id => version.id).group(criteria).count.each {|c,s| h[c][1] = s}
rescue ActiveRecord::RecordNotFound
# When grouping by an association, Rails throws this exception if there's no result (bug)
end
counts = h.keys.compact.sort.collect {|k| {:group => k, :total => h[k][0], :open => h[k][1], :closed => (h[k][0] - h[k][1])}}
# Sort with nil keys in last position
counts = h.keys.sort {|a,b| a.nil? ? 1 : (b.nil? ? -1 : a <=> b)}.collect {|k| {:group => k, :total => h[k][0], :open => h[k][1], :closed => (h[k][0] - h[k][1])}}
max = counts.collect {|c| c[:total]}.max
render :partial => 'issue_counts', :locals => {:version => version, :criteria => criteria, :counts => counts, :max => max}

View File

@ -1,7 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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,24 +20,32 @@
module WatchersHelper
def watcher_tag(object, user, options={})
content_tag("span", watcher_link(object, user), :class => watcher_css(object))
ActiveSupport::Deprecation.warn "#watcher_tag is deprecated and will be removed in Redmine 3.0. Use #watcher_link instead."
watcher_link(object, user)
end
def watcher_link(object, user)
return '' unless user && user.logged? && object.respond_to?('watched_by?')
watched = object.watched_by?(user)
url = {:controller => 'watchers',
:action => (watched ? 'unwatch' : 'watch'),
:object_type => object.class.to_s.underscore,
:object_id => object.id}
link_to((watched ? l(:button_unwatch) : l(:button_watch)), url,
:remote => true, :method => 'post', :class => (watched ? 'icon icon-fav' : 'icon icon-fav-off'))
def watcher_link(objects, user)
return '' unless user && user.logged?
objects = Array.wrap(objects)
return '' unless objects.any?
watched = Watcher.any_watched?(objects, user)
css = [watcher_css(objects), watched ? 'icon icon-fav' : 'icon icon-fav-off'].join(' ')
text = watched ? l(:button_unwatch) : l(:button_watch)
url = watch_path(
:object_type => objects.first.class.to_s.underscore,
:object_id => (objects.size == 1 ? objects.first.id : objects.map(&:id).sort)
)
method = watched ? 'delete' : 'post'
link_to text, url, :remote => true, :method => method, :class => css
end
# Returns the css class used to identify watch links for a given +object+
def watcher_css(object)
"#{object.class.to_s.underscore}-#{object.id}-watcher"
def watcher_css(objects)
objects = Array.wrap(objects)
id = (objects.size == 1 ? objects.first.id : 'bulk')
"#{objects.first.class.to_s.underscore}-#{id}-watcher"
end
# Returns a comma separated list of users watching the given object
@ -56,11 +64,11 @@ module WatchersHelper
:user_id => user}
s << ' '
s << link_to(image_tag('delete.png'), url,
:remote => true, :method => 'post', :style => "vertical-align: middle", :class => "delete")
:remote => true, :method => 'delete', :class => "delete")
end
content << content_tag('li', s)
content << content_tag('li', s, :class => "user-#{user.id}")
end
content.present? ? content_tag('ul', content) : content
content.present? ? content_tag('ul', content, :class => 'watchers') : content
end
def watchers_checkboxes(object, users, checked=nil)

View File

@ -1,7 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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
@ -37,7 +37,7 @@ module WikiHelper
def wiki_page_breadcrumb(page)
breadcrumb(page.ancestors.reverse.collect {|parent|
link_to(h(parent.pretty_title), {:controller => 'wiki', :action => 'show', :id => parent.title, :project_id => parent.project})
link_to(h(parent.pretty_title), {:controller => 'wiki', :action => 'show', :id => parent.title, :project_id => parent.project, :version => nil})
})
end
end

View File

@ -1,7 +1,7 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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,15 +18,78 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
module WorkflowsHelper
def options_for_workflow_select(name, objects, selected, options={})
option_tags = ''.html_safe
multiple = false
if selected
if selected.size == objects.size
selected = 'all'
else
selected = selected.map(&:id)
if selected.size > 1
multiple = true
end
end
else
selected = objects.first.try(:id)
end
all_tag_options = {:value => 'all', :selected => (selected == 'all')}
if multiple
all_tag_options.merge!(:style => "display:none;")
end
option_tags << content_tag('option', l(:label_all), all_tag_options)
option_tags << options_from_collection_for_select(objects, "id", "name", selected)
select_tag name, option_tags, {:multiple => multiple}.merge(options)
end
def field_required?(field)
field.is_a?(CustomField) ? field.is_required? : %w(project_id tracker_id subject priority_id is_private).include?(field)
end
def field_permission_tag(permissions, status, field)
def field_permission_tag(permissions, status, field, roles)
name = field.is_a?(CustomField) ? field.id.to_s : field
options = [["", ""], [l(:label_readonly), "readonly"]]
options << [l(:label_required), "required"] unless field_required?(field)
html_options = {}
if perm = permissions[status.id][name]
if perm.uniq.size > 1 || perm.size < @roles.size * @trackers.size
options << [l(:label_no_change_option), "no_change"]
selected = 'no_change'
else
selected = perm.first
end
end
select_tag("permissions[#{name}][#{status.id}]", options_for_select(options, permissions[status.id][name]))
hidden = field.is_a?(CustomField) &&
!field.visible? &&
!roles.detect {|role| role.custom_fields.to_a.include?(field)}
if hidden
options[0][0] = l(:label_hidden)
selected = ''
html_options[:disabled] = true
end
select_tag("permissions[#{status.id}][#{name}]", options_for_select(options, selected), html_options)
end
def transition_tag(workflows, old_status, new_status, name)
w = workflows.select {|w| w.old_status_id == old_status.id && w.new_status_id == new_status.id}.size
tag_name = "transitions[#{ old_status.id }][#{new_status.id}][#{name}]"
if w == 0 || w == @roles.size * @trackers.size
hidden_field_tag(tag_name, "0") +
check_box_tag(tag_name, "1", w != 0,
:class => "old-status-#{old_status.id} new-status-#{new_status.id}")
else
select_tag tag_name,
options_for_select([
[l(:general_text_Yes), "1"],
[l(:general_text_No), "0"],
[l(:label_no_change_option), "no_change"]
], "no_change")
end
end
end

View File

@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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
@ -16,6 +16,7 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
require "digest/md5"
require "fileutils"
class Attachment < ActiveRecord::Base
belongs_to :container, :polymorphic => true
@ -92,9 +93,6 @@ class Attachment < ActiveRecord::Base
def filename=(arg)
write_attribute :filename, sanitize_filename(arg.to_s)
if new_record? && disk_filename.blank?
self.disk_filename = Attachment.disk_filename(filename)
end
filename
end
@ -102,7 +100,13 @@ class Attachment < ActiveRecord::Base
# and computes its MD5 hash
def files_to_final_location
if @temp_file && (@temp_file.size > 0)
logger.info("Saving attachment '#{self.diskfile}' (#{@temp_file.size} bytes)")
self.disk_directory = target_directory
self.disk_filename = Attachment.disk_filename(filename, disk_directory)
logger.info("Saving attachment '#{self.diskfile}' (#{@temp_file.size} bytes)") if logger
path = File.dirname(diskfile)
unless File.directory?(path)
FileUtils.mkdir_p(path)
end
md5 = Digest::MD5.new
File.open(diskfile, "wb") do |f|
if @temp_file.respond_to?(:read)
@ -134,7 +138,7 @@ class Attachment < ActiveRecord::Base
# Returns file's location on disk
def diskfile
File.join(self.class.storage_path, disk_filename.to_s)
File.join(self.class.storage_path, disk_directory.to_s, disk_filename.to_s)
end
def title
@ -154,11 +158,19 @@ class Attachment < ActiveRecord::Base
end
def visible?(user=User.current)
container && container.attachments_visible?(user)
if container_id
container && container.attachments_visible?(user)
else
author == user
end
end
def deletable?(user=User.current)
container && container.attachments_deletable?(user)
if container_id
container && container.attachments_deletable?(user)
else
author == user
end
end
def image?
@ -251,6 +263,37 @@ class Attachment < ActiveRecord::Base
Attachment.where("created_on < ? AND (container_type IS NULL OR container_type = '')", Time.now - age).destroy_all
end
# Moves an existing attachment to its target directory
def move_to_target_directory!
return unless !new_record? & readable?
src = diskfile
self.disk_directory = target_directory
dest = diskfile
return if src == dest
if !FileUtils.mkdir_p(File.dirname(dest))
logger.error "Could not create directory #{File.dirname(dest)}" if logger
return
end
if !FileUtils.mv(src, dest)
logger.error "Could not move attachment from #{src} to #{dest}" if logger
return
end
update_column :disk_directory, disk_directory
end
# Moves existing attachments that are stored at the root of the files
# directory (ie. created before Redmine 2.3) to their target subdirectories
def self.move_from_root_to_target_directory
Attachment.where("disk_directory IS NULL OR disk_directory = ''").find_each do |attachment|
attachment.move_to_target_directory!
end
end
private
# Physically deletes the file from the file system
@ -262,14 +305,21 @@ class Attachment < ActiveRecord::Base
def sanitize_filename(value)
# get only the filename, not the whole path
just_filename = value.gsub(/^.*(\\|\/)/, '')
just_filename = value.gsub(/\A.*(\\|\/)/m, '')
# Finally, replace invalid characters with underscore
@filename = just_filename.gsub(/[\/\?\%\*\:\|\"\'<>]+/, '_')
@filename = just_filename.gsub(/[\/\?\%\*\:\|\"\'<>\n\r]+/, '_')
end
# Returns an ASCII or hashed filename
def self.disk_filename(filename)
# Returns the subdirectory in which the attachment will be saved
def target_directory
time = created_on || DateTime.now
time.strftime("%Y/%m")
end
# Returns an ASCII or hashed filename that do not
# exists yet in the given subdirectory
def self.disk_filename(filename, directory=nil)
timestamp = DateTime.now.strftime("%y%m%d%H%M%S")
ascii = ''
if filename =~ %r{^[a-zA-Z0-9_\.\-]*$}
@ -279,7 +329,7 @@ class Attachment < ActiveRecord::Base
# keep the extension if any
ascii << $1 if filename =~ %r{(\.[a-zA-Z0-9]+)$}
end
while File.exist?(File.join(@@storage_path, "#{timestamp}_#{ascii}"))
while File.exist?(File.join(storage_path, directory.to_s, "#{timestamp}_#{ascii}"))
timestamp.succ!
end
"#{timestamp}_#{ascii}"

View File

@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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
@ -48,6 +48,24 @@ class AuthSource < ActiveRecord::Base
write_ciphered_attribute(:account_password, arg)
end
def searchable?
false
end
def self.search(q)
results = []
AuthSource.all.each do |source|
begin
if source.searchable?
results += source.search(q)
end
rescue AuthSourceException => e
logger.error "Error while searching users in #{source.name}: #{e.message}"
end
end
results
end
def allow_password_changes?
self.class.allow_password_changes?
end
@ -59,7 +77,7 @@ class AuthSource < ActiveRecord::Base
# Try to authenticate a user not yet registered against available sources
def self.authenticate(login, password)
AuthSource.where(:onthefly_register => true).all.each do |source|
AuthSource.where(:onthefly_register => true).each do |source|
begin
logger.debug "Authenticating '#{login}' against '#{source.name}'" if logger && logger.debug?
attrs = source.authenticate(login, password)

View File

@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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
@ -15,7 +15,6 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
require 'iconv'
require 'net/ldap'
require 'net/ldap/dn'
require 'timeout'
@ -64,6 +63,32 @@ class AuthSourceLdap < AuthSource
"LDAP"
end
# Returns true if this source can be searched for users
def searchable?
!account.to_s.include?("$login") && %w(login firstname lastname mail).all? {|a| send("attr_#{a}?")}
end
# Searches the source for users and returns an array of results
def search(q)
q = q.to_s.strip
return [] unless searchable? && q.present?
results = []
search_filter = base_filter & Net::LDAP::Filter.begins(self.attr_login, q)
ldap_con = initialize_ldap_con(self.account, self.account_password)
ldap_con.search(:base => self.base_dn,
:filter => search_filter,
:attributes => ['dn', self.attr_login, self.attr_firstname, self.attr_lastname, self.attr_mail],
:size => 10) do |entry|
attrs = get_user_attributes_from_ldap_entry(entry)
attrs[:login] = AuthSourceLdap.get_attr(entry, self.attr_login)
results << attrs
end
results
rescue Net::LDAP::LdapError => e
raise AuthSourceException.new(e.message)
end
private
def with_timeout(&block)
@ -84,6 +109,14 @@ class AuthSourceLdap < AuthSource
nil
end
def base_filter
filter = Net::LDAP::Filter.eq("objectClass", "*")
if f = ldap_filter
filter = filter & f
end
filter
end
def validate_filter
if filter.present? && ldap_filter.nil?
errors.add(:filter, :invalid)
@ -140,14 +173,8 @@ class AuthSourceLdap < AuthSource
else
ldap_con = initialize_ldap_con(self.account, self.account_password)
end
login_filter = Net::LDAP::Filter.eq( self.attr_login, login )
object_filter = Net::LDAP::Filter.eq( "objectClass", "*" )
attrs = {}
search_filter = object_filter & login_filter
if f = ldap_filter
search_filter = search_filter & f
end
search_filter = base_filter & Net::LDAP::Filter.eq(self.attr_login, login)
ldap_con.search( :base => self.base_dn,
:filter => search_filter,

View File

@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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,8 +30,9 @@ class Board < ActiveRecord::Base
validates_length_of :description, :maximum => 255
validate :validate_board
scope :visible, lambda {|*args| { :include => :project,
:conditions => Project.allowed_to_condition(args.shift || User.current, :view_messages, *args) } }
scope :visible, lambda {|*args|
includes(:project).where(Project.allowed_to_condition(args.shift || User.current, :view_messages, *args))
}
safe_attributes 'name', 'description', 'parent_id', 'move_to'
@ -59,10 +60,10 @@ class Board < ActiveRecord::Base
# Updates topics_count, messages_count and last_message_id attributes for +board_id+
def self.reset_counters!(board_id)
board_id = board_id.to_i
update_all("topics_count = (SELECT COUNT(*) FROM #{Message.table_name} WHERE board_id=#{board_id} AND parent_id IS NULL)," +
where(["id = ?", board_id]).
update_all("topics_count = (SELECT COUNT(*) FROM #{Message.table_name} WHERE board_id=#{board_id} AND parent_id IS NULL)," +
" messages_count = (SELECT COUNT(*) FROM #{Message.table_name} WHERE board_id=#{board_id})," +
" last_message_id = (SELECT MAX(id) FROM #{Message.table_name} WHERE board_id=#{board_id})",
["id = ?", board_id])
" last_message_id = (SELECT MAX(id) FROM #{Message.table_name} WHERE board_id=#{board_id})")
end
def self.board_tree(boards, parent_id=nil, level=0)

View File

@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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
@ -15,8 +15,6 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
require 'iconv'
class Changeset < ActiveRecord::Base
belongs_to :repository
belongs_to :user
@ -49,9 +47,9 @@ class Changeset < ActiveRecord::Base
validates_uniqueness_of :revision, :scope => :repository_id
validates_uniqueness_of :scmid, :scope => :repository_id, :allow_nil => true
scope :visible,
lambda {|*args| { :include => {:repository => :project},
:conditions => Project.allowed_to_condition(args.shift || User.current, :view_changesets, *args) } }
scope :visible, lambda {|*args|
includes(:repository => :project).where(Project.allowed_to_condition(args.shift || User.current, :view_changesets, *args))
}
after_create :scan_for_issues
before_create :before_create_cs
@ -120,22 +118,25 @@ class Changeset < ActiveRecord::Base
ref_keywords = Setting.commit_ref_keywords.downcase.split(",").collect(&:strip)
ref_keywords_any = ref_keywords.delete('*')
# keywords used to fix issues
fix_keywords = Setting.commit_fix_keywords.downcase.split(",").collect(&:strip)
fix_keywords = Setting.commit_update_keywords_array.map {|r| r['keywords']}.flatten.compact
kw_regexp = (ref_keywords + fix_keywords).collect{|kw| Regexp.escape(kw)}.join("|")
referenced_issues = []
comments.scan(/([\s\(\[,-]|^)((#{kw_regexp})[\s:]+)?(#\d+(\s+@#{TIMELOG_RE})?([\s,;&]+#\d+(\s+@#{TIMELOG_RE})?)*)(?=[[:punct:]]|\s|<|$)/i) do |match|
action, refs = match[2], match[3]
action, refs = match[2].to_s.downcase, match[3]
next unless action.present? || ref_keywords_any
refs.scan(/#(\d+)(\s+@#{TIMELOG_RE})?/).each do |m|
issue, hours = find_referenced_issue_by_id(m[0].to_i), m[2]
if issue
referenced_issues << issue
fix_issue(issue) if fix_keywords.include?(action.to_s.downcase)
log_time(issue, hours) if hours && Setting.commit_logtime_enabled?
# Don't update issues or log time when importing old commits
unless repository.created_on && committed_on && committed_on < repository.created_on
fix_issue(issue, action) if fix_keywords.include?(action)
log_time(issue, hours) if hours && Setting.commit_logtime_enabled?
end
end
end
end
@ -153,13 +154,14 @@ class Changeset < ActiveRecord::Base
end
def text_tag(ref_project=nil)
tag = if scmid?
"commit:#{scmid}"
else
"r#{revision}"
end
repo = ""
if repository && repository.identifier.present?
tag = "#{repository.identifier}|#{tag}"
repo = "#{repository.identifier}|"
end
tag = if scmid?
"commit:#{repo}#{scmid}"
else
"#{repo}r#{revision}"
end
if ref_project && project && ref_project != project
tag = "#{project.identifier}:#{tag}"
@ -196,7 +198,7 @@ class Changeset < ActiveRecord::Base
# Finds an issue that can be referenced by the commit message
def find_referenced_issue_by_id(id)
return nil if id.blank?
issue = Issue.find_by_id(id.to_i, :include => :project)
issue = Issue.includes(:project).where(:id => id.to_i).first
if Setting.commit_cross_project_ref?
# all issues can be referenced/fixed
elsif issue
@ -212,25 +214,26 @@ class Changeset < ActiveRecord::Base
private
def fix_issue(issue)
status = IssueStatus.find_by_id(Setting.commit_fix_status_id.to_i)
if status.nil?
logger.warn("No status matches commit_fix_status_id setting (#{Setting.commit_fix_status_id})") if logger
return issue
end
# Updates the +issue+ according to +action+
def fix_issue(issue, action)
# the issue may have been updated by the closure of another one (eg. duplicate)
issue.reload
# don't change the status is the issue is closed
return if issue.status && issue.status.is_closed?
journal = issue.init_journal(user || User.anonymous, ll(Setting.default_language, :text_status_changed_by_changeset, text_tag(issue.project)))
issue.status = status
unless Setting.commit_fix_done_ratio.blank?
issue.done_ratio = Setting.commit_fix_done_ratio.to_i
journal = issue.init_journal(user || User.anonymous,
ll(Setting.default_language,
:text_status_changed_by_changeset,
text_tag(issue.project)))
rule = Setting.commit_update_keywords_array.detect do |rule|
rule['keywords'].include?(action) &&
(rule['if_tracker_id'].blank? || rule['if_tracker_id'] == issue.tracker_id.to_s)
end
if rule
issue.assign_attributes rule.slice(*Issue.attribute_names)
end
Redmine::Hook.call_hook(:model_changeset_scan_commit_for_issue_ids_pre_issue_update,
{ :changeset => self, :issue => issue })
{ :changeset => self, :issue => issue, :action => action })
unless issue.save
logger.warn("Issue ##{issue.id} could not be saved by changeset #{id}: #{issue.errors.full_messages}") if logger
end

View File

@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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,5 +22,16 @@ class Comment < ActiveRecord::Base
validates_presence_of :commented, :author, :comments
after_create :send_notification
safe_attributes 'comments'
private
def send_notification
mailer_method = "#{commented.class.name.underscore}_comment_added"
if Setting.notified_events.include?(mailer_method)
Mailer.send(mailer_method, self).deliver
end
end
end

View File

@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2012 Jean-Philippe Lang
# Copyright (C) 2006-2014 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
@ -19,29 +19,71 @@ class CustomField < ActiveRecord::Base
include Redmine::SubclassFactory
has_many :custom_values, :dependent => :delete_all
has_and_belongs_to_many :roles, :join_table => "#{table_name_prefix}custom_fields_roles#{table_name_suffix}", :foreign_key => "custom_field_id"
acts_as_list :scope => 'type = \'#{self.class}\''
serialize :possible_values
store :format_store
validates_presence_of :name, :field_format
validates_uniqueness_of :name, :scope => :type
validates_length_of :name, :maximum => 30
validates_inclusion_of :field_format, :in => Redmine::CustomFieldFormat.available_formats
validates_inclusion_of :field_format, :in => Proc.new { Redmine::FieldFormat.available_formats }
validate :validate_custom_field
before_validation :set_searchable
before_save do |field|
field.format.before_custom_field_save(field)
end
after_save :handle_multiplicity_change
after_save do |field|
if field.visible_changed? && field.visible
field.roles.clear
end
end
scope :sorted, lambda { order("#{table_name}.position ASC") }
scope :visible, lambda {|*args|
user = args.shift || User.current
if user.admin?
# nop
elsif user.memberships.any?
where("#{table_name}.visible = ? OR #{table_name}.id IN (SELECT DISTINCT cfr.custom_field_id FROM #{Member.table_name} m" +
" INNER JOIN #{MemberRole.table_name} mr ON mr.member_id = m.id" +
" INNER JOIN #{table_name_prefix}custom_fields_roles#{table_name_suffix} cfr ON cfr.role_id = mr.role_id" +
" WHERE m.user_id = ?)",
true, user.id)
else
where(:visible => true)
end
}
def visible_by?(project, user=User.current)
visible? || user.admin?
end
def format
@format ||= Redmine::FieldFormat.find(field_format)
end
def field_format=(arg)
# cannot change format of a saved custom field
if new_record?
@format = nil
super
end
end
def set_searchable
# make sure these fields are not searchable
self.searchable = false if %w(int float date bool).include?(field_format)
self.searchable = false unless format.class.searchable_supported
# make sure only these fields can have multiple values
self.multiple = false unless %w(list user version).include?(field_format)
self.multiple = false unless format.class.multiple_supported
true
end
def validate_custom_field
if self.field_format == "list"
errors.add(:possible_values, :blank) if self.possible_values.nil? || self.possible_values.empty?
errors.add(:possible_values, :invalid) unless self.possible_values.is_a? Array
format.validate_custom_field(self).each do |attribute, message|
errors.add attribute, message
end
if regexp.present?
@ -52,159 +94,112 @@ class CustomField < ActiveRecord::Base
end
end
if default_value.present? && !valid_field_value?(default_value)
errors.add(:default_value, :invalid)
if default_value.present?
validate_field_value(default_value).each do |message|
errors.add :default_value, message
end
end
end
def possible_values_options(obj=nil)
case field_format
when 'user', 'version'
if obj.respond_to?(:project) && obj.project
case field_format
when 'user'
obj.project.users.sort.collect {|u| [u.to_s, u.id.to_s]}
when 'version'
obj.project.shared_versions.sort.collect {|u| [u.to_s, u.id.to_s]}
end
elsif obj.is_a?(Array)
obj.collect {|o| possible_values_options(o)}.reduce(:&)
else
[]
end
when 'bool'
[[l(:general_text_Yes), '1'], [l(:general_text_No), '0']]
def possible_custom_value_options(custom_value)
format.possible_custom_value_options(custom_value)
end
def possible_values_options(object=nil)
if object.is_a?(Array)
object.map {|o| format.possible_values_options(self, o)}.reduce(:&) || []
else
possible_values || []
format.possible_values_options(self, object) || []
end
end
def possible_values(obj=nil)
case field_format
when 'user', 'version'
possible_values_options(obj).collect(&:last)
when 'bool'
['1', '0']
else
values = super()
if values.is_a?(Array)
values.each do |value|
value.force_encoding('UTF-8') if value.respond_to?(:force_encoding)
end
def possible_values
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
values || []
values
else
[]
end
end
# Makes possible_values accept a multiline string
def possible_values=(arg)
if arg.is_a?(Array)
super(arg.compact.collect(&:strip).select {|v| !v.blank?})
values = arg.compact.collect(&:strip).select {|v| !v.blank?}
write_attribute(:possible_values, values)
else
self.possible_values = arg.to_s.split(/[\n\r]+/)
end
end
def cast_value(value)
casted = nil
unless value.blank?
case field_format
when 'string', 'text', 'list'
casted = value
when 'date'
casted = begin; value.to_date; rescue; nil end
when 'bool'
casted = (value == '1' ? true : false)
when 'int'
casted = value.to_i
when 'float'
casted = value.to_f
when 'user', 'version'
casted = (value.blank? ? nil : field_format.classify.constantize.find_by_id(value.to_i))
end
end
casted
format.cast_value(self, value)
end
def value_from_keyword(keyword, customized)
possible_values_options = possible_values_options(customized)
if possible_values_options.present?
keyword = keyword.to_s.downcase
possible_values_options.detect {|text, id| text.downcase == keyword}.try(:last)
if v = possible_values_options.detect {|text, id| text.downcase == keyword}
if v.is_a?(Array)
v.last
else
v
end
end
else
keyword
end
end
# Returns a ORDER BY clause that can used to sort customized
# objects by their value of the custom field.
# Returns nil if the custom field can not be used for sorting.
def order_statement
return nil if multiple?
case field_format
when 'string', 'text', 'list', 'date', 'bool'
# COALESCE is here to make sure that blank and NULL values are sorted equally
"COALESCE((SELECT cv_sort.value FROM #{CustomValue.table_name} cv_sort" +
" WHERE cv_sort.customized_type='#{self.class.customized_class.base_class.name}'" +
" AND cv_sort.customized_id=#{self.class.customized_class.table_name}.id" +
" AND cv_sort.custom_field_id=#{id} LIMIT 1), '')"
when 'int', 'float'
# Make the database cast values into numeric
# Postgresql will raise an error if a value can not be casted!
# CustomValue validations should ensure that it doesn't occur
"(SELECT CAST(cv_sort.value AS decimal(60,3)) FROM #{CustomValue.table_name} cv_sort" +
" WHERE cv_sort.customized_type='#{self.class.customized_class.base_class.name}'" +
" AND cv_sort.customized_id=#{self.class.customized_class.table_name}.id" +
" AND cv_sort.custom_field_id=#{id} AND cv_sort.value <> '' AND cv_sort.value IS NOT NULL LIMIT 1)"
when 'user', 'version'
value_class.fields_for_order_statement(value_join_alias)
else
nil
end
format.order_statement(self)
end
# Returns a GROUP BY clause that can used to group by custom value
# Returns nil if the custom field can not be used for grouping.
def group_statement
def group_statement
return nil if multiple?
case field_format
when 'list', 'date', 'bool', 'int'
order_statement
when 'user', 'version'
"COALESCE((SELECT cv_sort.value FROM #{CustomValue.table_name} cv_sort" +
" WHERE cv_sort.customized_type='#{self.class.customized_class.base_class.name}'" +
" AND cv_sort.customized_id=#{self.class.customized_class.table_name}.id" +
" AND cv_sort.custom_field_id=#{id} LIMIT 1), '')"
else
nil
end
format.group_statement(self)
end
def join_for_order_statement
case field_format
when 'user', 'version'
"LEFT OUTER JOIN #{CustomValue.table_name} #{join_alias}" +
" ON #{join_alias}.customized_type = '#{self.class.customized_class.base_class.name}'" +
" AND #{join_alias}.customized_id = #{self.class.customized_class.table_name}.id" +
" AND #{join_alias}.custom_field_id = #{id}" +
" AND #{join_alias}.value <> ''" +
" AND #{join_alias}.id = (SELECT max(#{join_alias}_2.id) FROM #{CustomValue.table_name} #{join_alias}_2" +
" WHERE #{join_alias}_2.customized_type = #{join_alias}.customized_type" +
" AND #{join_alias}_2.customized_id = #{join_alias}.customized_id" +
" AND #{join_alias}_2.custom_field_id = #{join_alias}.custom_field_id)" +
" LEFT OUTER JOIN #{value_class.table_name} #{value_join_alias}" +
" ON CAST(#{join_alias}.value as decimal(60,0)) = #{value_join_alias}.id"
else
nil
format.join_for_order_statement(self)
end
def visibility_by_project_condition(project_key=nil, user=User.current, id_column=nil)
if visible? || user.admin?
"1=1"
elsif user.anonymous?
"1=0"
else
project_key ||= "#{self.class.customized_class.table_name}.project_id"
id_column ||= id
"#{project_key} IN (SELECT DISTINCT m.project_id FROM #{Member.table_name} m" +
" INNER JOIN #{MemberRole.table_name} mr ON mr.member_id = m.id" +
" INNER JOIN #{table_name_prefix}custom_fields_roles#{table_name_suffix} cfr ON cfr.role_id = mr.role_id" +
" WHERE m.user_id = #{user.id} AND cfr.custom_field_id = #{id_column})"
end
end
def join_alias
"cf_#{id}"
end
def value_join_alias
join_alias + "_" + field_format
def self.visibility_condition
if user.admin?
"1=1"
elsif user.anonymous?
"#{table_name}.visible"
else
"#{project_key} IN (SELECT DISTINCT m.project_id FROM #{Member.table_name} m" +
" INNER JOIN #{MemberRole.table_name} mr ON mr.member_id = m.id" +
" INNER JOIN #{table_name_prefix}custom_fields_roles#{table_name_suffix} cfr ON cfr.role_id = mr.role_id" +
" WHERE m.user_id = #{user.id} AND cfr.custom_field_id = #{id})"
end
end
def <=>(field)
@ -213,22 +208,17 @@ class CustomField < ActiveRecord::Base
# Returns the class that values represent
def value_class
case field_format
when 'user', 'version'
field_format.classify.constantize
else
nil
end
format.target_class if format.respond_to?(:target_class)
end
def self.customized_class
self.name =~ /^(.+)CustomField$/
begin; $1.constantize; rescue nil; end
$1.constantize rescue nil
end
# to move in project_custom_field
def self.for_all
find(:all, :conditions => ["is_for_all=?", true], :order => 'position')
where(:is_for_all => true).order('position').all
end
def type_name
@ -237,7 +227,8 @@ class CustomField < ActiveRecord::Base
# Returns the error messages for the given value
# or an empty array if value is a valid value for the custom field
def validate_field_value(value)
def validate_custom_value(custom_value)
value = custom_value.value
errs = []
if value.is_a?(Array)
if !multiple?
@ -246,16 +237,20 @@ class CustomField < ActiveRecord::Base
if is_required? && value.detect(&:present?).nil?
errs << ::I18n.t('activerecord.errors.messages.blank')
end
value.each {|v| errs += validate_field_value_format(v)}
else
if is_required? && value.blank?
errs << ::I18n.t('activerecord.errors.messages.blank')
end
errs += validate_field_value_format(value)
end
errs += format.validate_custom_value(custom_value)
errs
end
# Returns the error messages for the default custom field value
def validate_field_value(value)
validate_custom_value(CustomValue.new(:custom_field => self, :value => value))
end
# Returns true if value is a valid value for the custom field
def valid_field_value?(value)
validate_field_value(value).empty?
@ -267,26 +262,21 @@ class CustomField < ActiveRecord::Base
protected
# Returns the error message for the given value regarding its format
def validate_field_value_format(value)
errs = []
if value.present?
errs << ::I18n.t('activerecord.errors.messages.invalid') unless regexp.blank? or value =~ Regexp.new(regexp)
errs << ::I18n.t('activerecord.errors.messages.too_short', :count => min_length) if min_length > 0 and value.length < min_length
errs << ::I18n.t('activerecord.errors.messages.too_long', :count => max_length) if max_length > 0 and value.length > max_length
# Removes multiple values for the custom field after setting the multiple attribute to false
# We kepp the value with the highest id for each customized object
def handle_multiplicity_change
if !new_record? && multiple_was && !multiple
ids = custom_values.
where("EXISTS(SELECT 1 FROM #{CustomValue.table_name} cve WHERE cve.custom_field_id = #{CustomValue.table_name}.custom_field_id" +
" AND cve.customized_type = #{CustomValue.table_name}.customized_type AND cve.customized_id = #{CustomValue.table_name}.customized_id" +
" AND cve.id > #{CustomValue.table_name}.id)").
pluck(:id)
# Format specific validations
case field_format
when 'int'
errs << ::I18n.t('activerecord.errors.messages.not_a_number') unless value =~ /^[+-]?\d+$/
when 'float'
begin; Kernel.Float(value); rescue; errs << ::I18n.t('activerecord.errors.messages.invalid') end
when 'date'
errs << ::I18n.t('activerecord.errors.messages.not_a_date') unless value =~ /^\d{4}-\d{2}-\d{2}$/ && begin; value.to_date; rescue; false end
when 'list'
errs << ::I18n.t('activerecord.errors.messages.inclusion') unless possible_values.include?(value)
if ids.any?
custom_values.where(:id => ids).delete_all
end
end
errs
end
end
require_dependency 'redmine/field_format'

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