Compare commits

...

482 Commits

Author SHA1 Message Date
Felix Schäfer dfb77852cf Split up Travis tests to avoid hitting the hard Travis timeout 2013-03-19 23:40:33 +01:00
Holger Just 93de0ba668 Bump version to 3.8.0 2013-03-19 22:36:48 +01:00
Holger Just fdc9c245ac Update changelog for 3.8.0 2013-03-19 22:36:06 +01:00
Holger Just d7b23acea0 Don't test Darcs on Travis. It breaks there :( 2013-03-19 22:24:22 +01:00
Holger Just f9babbbbc3 Use RubyGems 1.8.25 on Travis as 2.0.x fails with Rails 2.3 2013-03-19 22:23:56 +01:00
Toshi MARUYAMA 90a05668a0 fix db migrate #1164 2013-03-19 21:30:48 +01:00
Holger Just e4b814e167 Bump Rails to 2.3.18 #1252 2013-03-19 21:30:48 +01:00
Felix Schäfer 304155122d Use SSL communications to rubygems.org 2013-03-19 21:24:55 +01:00
Felix Schäfer 1e2a029099 Explicitely set js calendar until complete switch to jQuery #1121 2013-03-19 21:19:33 +01:00
Holger Just 68e6d171b1 Manually apply basic before_filters in case of routing error #1248 2013-03-15 15:15:10 +01:00
Gregor Schmidt d6e5c9e1fa Fixing HTML in groups index view 2013-03-12 16:57:59 +01:00
Holger Just 63976e6522 Bump the version to v3.7.0 2013-02-13 16:03:00 +01:00
Holger Just 31ad2ef6c3 Update changelog for 3.7.0 release 2013-02-13 16:02:54 +01:00
Holger Just 595e60fb9c Fix stupidity in last filter of liquid #1235 2013-02-13 15:46:08 +01:00
Holger Just 8b357a118d Remove monkey patch which is already included in Rails 2.3.17 #1233 2013-02-13 15:18:17 +01:00
Holger Just 6d3dc6e619 Bump json gem to a safe version for CVE-2013-0269, CVE-2013-0333 2013-02-13 15:18:17 +01:00
Holger Just 0b567641bc Don't set YAML on serialized fields #1233 2013-02-13 15:18:17 +01:00
Holger Just fd306095c6 Bump Rails to 2.3.17 #1233 2013-02-13 15:18:17 +01:00
Holger Just 430b6bb442 Improve on broken MySQL handling of login tokens #1234 2013-02-13 15:18:09 +01:00
Felix Schäfer 3f9007b909 Merge branch 'release-v3.6.0' into stable 2013-01-29 22:37:23 +01:00
Felix Schäfer 6bef9c26ab Bump version to v3.6.0 2013-01-29 22:33:42 +01:00
Felix Schäfer 6744e23ed2 Update Changelog for v3.6.0 2013-01-29 21:46:27 +01:00
Felix Schäfer 065542c7d1 Remove Rails patches which are already included in Rails 2.3.16 #1219 2013-01-29 21:44:15 +01:00
Felix Schäfer dc66e8f831 Bump Rails version to 2.3.16 #1219 2013-01-29 21:24:25 +01:00
Felix Schäfer 6e30b3d3fc Get notified about other watched things than issues #1216
When I select "only for things I watch or am involved in" as my Email
notifications setting, I want to get notified about everyhing I watch,
not just issues. The previous setting would only notify me about issues
I'm involved in, now I will additionally be notified about everything I watch.
2013-01-25 15:30:32 +01:00
Holger Just 2854524ba9 Merge branch 'release-v3.5.1' into stable 2013-01-16 23:26:41 +01:00
Holger Just eb41df17d2 Bump version to v3.5.1 2013-01-16 23:26:13 +01:00
Holger Just 7f7a06706f Update Changelog for v3.5.1 2013-01-16 23:25:47 +01:00
Holger Just db3087b318 Fix for CVE-2013-0155 in Rails 2013-01-16 23:24:15 +01:00
Holger Just d8536ced55 Merge branch 'release-v3.5.0' into stable 2013-01-09 14:06:00 +01:00
Holger Just 908391d54e Bump version to v3.5.0 2013-01-09 14:05:02 +01:00
Holger Just 93b2a1daf9 Update Changelog for v3.5.0 2013-01-09 14:04:56 +01:00
Holger Just c69a005353 Remove Rails patches which are already included in Rails 2.3.15 #1200 2013-01-09 13:56:52 +01:00
Holger Just bf4ed9b37b Bump Rails version to 2.3.15 #1200 2013-01-09 13:56:43 +01:00
Holger Just 90a94d75c3 Merge branch 'release-v3.4.0' into stable 2013-01-06 23:47:42 +01:00
Holger Just 2243c8dfd0 Bump version to v3.4.0 2013-01-06 23:43:44 +01:00
Holger Just cee98d306b Update Changelog for v3.4.0 2013-01-06 23:43:04 +01:00
Holger Just 0dac4ecb53 Ensure UTF-8 source encoding 2013-01-06 23:42:41 +01:00
Holger Just c65779bbc1 Update Copyright for 2013
We programmers have a nice new years tradition: We revisit all of
our projects and add 1 to a small number near a "(c)".

-- Volker Dusch
https://twitter.com/__edorian/status/153801913442373633
2013-01-06 23:42:27 +01:00
Holger Just 0261b16b3e Update locales 2013-01-06 23:20:08 +01:00
Holger Just c80591fe57 Adapt tests for escaping of ' introduced in 8e417fd 2013-01-06 21:17:19 +01:00
Felix Schäfer cdad6f752a Links to new/not existing wikipages are italic #1197 2013-01-06 21:13:34 +01:00
Felix Schäfer 335da86b55 Correctly save the subprojects setting when editing queries #1188 2013-01-06 20:32:53 +01:00
Holger Just 8e417fd5c4 Fix XSS vulnerabilities in Rails (CVE-2012-3464, CVE-2012-3465) #1113 #1114 2013-01-06 20:32:53 +01:00
Holger Just 07e54eda9e SQL Injection Vulnerability in Ruby on Rails (CVE-2012-5664) #1195 2013-01-06 20:32:53 +01:00
Holger Just a93a3af895 Consider HEAD a readonly method in Redmine.pm #1134 2013-01-06 20:32:53 +01:00
Holger Just 5156fbbfc4 Make the WikiContentJournal class available during migration #1194 2013-01-06 20:32:53 +01:00
Felix Schäfer 4d4efa482e Use capybara < 2 as capybara 2 drops ruby 1.8 support 2013-01-02 16:36:49 +01:00
Holger Just c734c6506d Install Darcs 2.3 on Travis CI #1142
Our tests break on Darcs >=2.5 as Darcs changed the repository
format and the command API.
2013-01-02 16:16:39 +01:00
Toshi MARUYAMA e7ef06a926 add travis build status to README.rdoc 2012-12-09 18:24:13 +01:00
Felix Schäfer 0dfa793abc Add a CONTRIBUTING guide. #1192 2012-12-09 18:10:11 +01:00
C-Moreira ce5524ba4d Add localized translation for Time entry menu. #1118 2012-11-22 11:54:11 +01:00
Holger Just 003fc93b15 Make the commented configuration.yml.example more approachable #1144 2012-09-14 22:27:49 +02:00
Holger Just da4641442f Update package list before installing packages on Travis 2012-09-12 21:39:09 +02:00
Web Siduction 0e1a622a6a wiki-text monospaced 11px 2012-08-20 20:18:17 +02:00
Holger Just d63d2d2e81 Display sidebar queries outside of a project #1090 2012-08-20 18:48:28 +02:00
Holger Just 7a4b664577 Set default category_id instead of the object #1087
Rails 2.3 still has issues with synchronizing the association_id
and association attributes of an object. That means, if you set the
association with an object first and then just set the id afterwards, the object wins and the setting of the id gets lost.

This is not an issue in Rails >= 3.1 anymore.
2012-08-20 18:26:32 +02:00
Felix Schäfer d24d4ce6b6 Stick with a working version of mocha
mocha 0.12.2 is known not to work with test/unit:
https://github.com/freerange/mocha/issues/94

Pinning the version of mocha until this is resolved
2012-08-06 10:34:41 +02:00
jplang a2f8557f23 Correctly copy advanced workflow settings #904
Original commit message:
Fixed: Workflow copy does not copy advanced workflow settings

git-svn-id: svn://rubyforge.org/var/svn/redmine/trunk@6148 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-08-06 08:20:58 +02:00
Holger Just 080c5b63ca Merge branch 'release-v3.3.0' into stable 2012-07-15 20:26:01 +02:00
Holger Just 22204d588d Merge branch 'master' into stable 2012-07-15 18:46:48 +02:00
Holger Just 19dd488298 Bump version to 3.3.0 2012-07-15 18:45:49 +02:00
Holger Just 12cedb1e91 Update Changelog for v3.3.0 2012-07-15 18:44:41 +02:00
Holger Just 27f24a78db Add copyright statement 2012-07-15 18:43:00 +02:00
Andrew Smith 4838c4ede8 Replace the progress bars with a copied jQuery version. Fixes #1056 2012-07-15 18:28:23 +02:00
Holger Just f2e4c71b27 Add gravatar no-op library.
This helps to not break on plugins having require "gravatar"
in their init.rb. This statement is not needed anymore in any
supported version of ChiliProject (or Redmine for that matter) and
should thus be removed from all plugins.
2012-07-15 17:48:43 +02:00
Andrew Smith ff94716791 Replace the JS calendar with a jQueryUI version. 2012-07-15 15:25:13 +02:00
Felix Schäfer cb9ac281d9 Add date_field and date_field_tag form helpers #817 2012-07-15 15:19:02 +02:00
Felix Schäfer a642a1fdc4 Bump net-ldap #1078 2012-07-14 21:16:16 +02:00
Holger Just f89c003847 Make list style for ul and ol elements more specific. #1075 2012-07-13 23:27:53 +02:00
Andrew Smith d6eb87508c Update jQuery/UI to 1.7.2/1.8.21. Fixes #1076 2012-07-11 14:41:56 +02:00
Romano Licker 1e96ac9e06 [#935] Setting improperly set up for default values
having a fixed call order resolves a problem where
'value=' was called before 'name=' resulting in no
serialization
2012-07-11 12:56:58 +02:00
Holger Just 9fde11f950 Load rake tasks from plugins in chiliproject_plugins #1074 2012-07-10 14:39:32 +02:00
Felix Schäfer d41c7f1e8c Fix migrating from Redmine 1.4 #1067
Contributed by Steffen Schüssler
2012-07-09 20:41:17 +02:00
Andrew Smith e3dc444b9c Losslessly recompress all the image files. Fixes #1070 2012-07-09 18:28:14 +02:00
Felix Schäfer 37385642fa Don't show the search field when it's not needed #979
Contributed by Harald Klimach
2012-07-09 18:11:04 +02:00
Felix Schäfer 12b2d3c182 Show the register link everywhere it's needed #979
Contributed by Harald Klimach
2012-07-09 18:06:32 +02:00
Andrew Smith 37c762b997 Force the hover colour so that even rows highlight. Fixes #1063 2012-07-06 20:06:03 +02:00
Holger Just 17793c87e3 Format date in user's prefered format by default 2012-07-02 21:10:55 +02:00
Holger Just eea550e639 Fix the Strainer patch to enforce a filter array
Up until now, the patch used to be a no-op. While the filters class
attribute was set correctly, the methods using it were not actually
overridden as they are only included above the existing methods in
the module chain.

This resulted in an arbitrary load order of filters on Ruby 1.8. As
such, our overridden standard filters might not have actually
overridden anything.

Still, the patch can be completely removed once we either require
Ruby 1.9 (as we have ordered ahshes by default then) or once
https://github.com/Shopify/liquid/pull/87 was merged and released
upstream.
2012-07-02 21:10:55 +02:00
Holger Just 760df0ae35 Define today variable for liquid #1055 2012-07-02 21:10:55 +02:00
Andrew Smith a4fbb15f6c Include a minimal Modernizr JS build. Fixes #1054 2012-07-02 20:28:00 +02:00
Andrew Smith 6fa46e5136 Set the users language on the HTML tag. Fixes #1051 2012-06-28 10:03:08 +02:00
Andrew Smith cf83e274d7 Change to an HTML5 doctype #1018 2012-06-26 22:19:37 +02:00
Jan Vlnas 29af3ec964 Correct engine tests to work on Ruby 1.9 #952 #944 2012-06-23 21:23:50 +02:00
Holger Just 6932070752 Require bundler 1.0.14 to use the rbx platform in Gemfile 2012-06-22 17:34:28 +02:00
Holger Just cd4efd2e0d Set $KCODE to UTF-8 on Ruby 1.8 to mimic Rails 3 behavior 2012-06-22 17:31:51 +02:00
Felix Schäfer 2f21522458 Enable project-specific css #1017 2012-06-21 10:28:44 +02:00
Holger Just d3d6a93a45 Fix failing tests for Ruby 1.9 #1046 2012-06-20 18:00:34 +02:00
Holger Just e4386f61da Add "me" to user custom fields filters #1046
Adapted from
28f9605fe2
by Jean-Philippe Lang
2012-06-20 16:07:09 +02:00
Holger Just 59e2a2fdde Merge branch 'release-v3.2.2' into stable 2012-06-13 11:04:48 +02:00
Holger Just 5c7a3a53c2 Bump version to 3.2.2 2012-06-13 10:26:48 +02:00
Holger Just 4d9060964f Update changelog for v3.2.2 2012-06-13 10:25:18 +02:00
Holger Just 16e266e7e5 Fix SQL injection via nested hashes in conditions. CVE-2012-2695 #1037 2012-06-13 10:12:10 +02:00
Holger Just d629209364 Fix SQL injection via nested hashes in conditions (CVE-2012-2694) #1036 2012-06-13 10:10:03 +02:00
Holger Just 221a2e73ce Merge branch 'release-v3.2.1' into stable 2012-06-10 20:38:18 +02:00
Holger Just c9d141061d Bump version to v3.2.1 2012-06-10 20:36:34 +02:00
Holger Just 8e41daf92a Update changelog for v3.2.1 2012-06-10 20:36:34 +02:00
Felix Schäfer caceb58947 Restore the default class for gravatars #1034 2012-06-10 20:34:23 +02:00
Felix Schäfer 5ef63ec4bb Fix option parsing for gravatars #1034
In addition to that:
* the default size was 50px in the old lib, this has been restored
* some tests to test the default and option parsing
2012-06-10 19:54:46 +02:00
Holger Just e6e057d10d Merge branch 'release-v3.2.0' into stable 2012-06-09 19:07:06 +02:00
Felix Schäfer f8ec89b999 Test stable- and release- branches on Travis too 2012-06-09 19:02:18 +02:00
Holger Just bd132c5607 Bump version to 3.2.0 2012-06-09 17:59:06 +02:00
Holger Just bcb02a4634 Update Changelog for v3.2.0 2012-06-09 17:56:21 +02:00
Holger Just d11e074748 Fix trailing whitespace 2012-06-09 17:52:37 +02:00
Felix Schäfer 1f91054244 Switch from vendored gravatar lib to gravatarify gem #1033 2012-06-09 17:39:22 +02:00
Felix Schäfer 32e1cc2dee Don't test transaction-based features on SQLite
SQLite doesn't support nested transactions, thus we can't test
transaction-based features inside a test wrapped in a transaction.
2012-06-09 17:35:49 +02:00
Felix Schäfer 3997220a45 Add IRC notifications to the Travis config 2012-06-09 12:02:54 +02:00
Felix Schäfer 69656422a1 Test ChiliProject on rubinius on Travis
rubinius 1.9-mode won't load liquid currently:
https://github.com/Shopify/liquid/pull/107
2012-06-07 14:30:45 +02:00
Felix Schäfer d6ad07ee97 Refine some apt-get commands in Travis
* Remove the update, the Travis VMs should be up-to-date enough for us
* Remove the quiets so we can see errors if needed
2012-06-05 16:00:09 +02:00
Justin Geibel 1722e96bb0 Change default branch behaviour for git repos #749
If git repository HEAD points to a branch, use that as the default branch.
Otherwise fall back to previous method.
2012-06-05 15:33:04 +02:00
Andrew Smith 4956e9ca93 Limit the size of the projects dropdown menu. #1016 2012-06-05 15:15:48 +02:00
Andrew Smith 7c1b17509f Clear the document selection when selecting multiple rows. 2012-06-05 15:05:35 +02:00
Andrew Smith c8be011a93 Correct major logic issues when selecting multiple rows.
The rows were being incorrectly selected (because the class name had a
missing '.').

jQuery items can't be directly compared to each other so we need to get
the HTML element to test if they are the same.
2012-06-05 15:05:35 +02:00
Holger Just 8ab42473d9 [#1025] Fix Rails vulnerability (CVE-2012-2660) 2012-06-01 20:56:09 +02:00
Felix Schäfer a43c06ff77 Don't depend on DB ordering in journal_test
And add all fixtures needed to run the test on its own.
2012-05-25 13:37:11 +02:00
Andrew Smith f983b451ad Reformat CSS to use the coding standard. #947
Formatting was done mostly by hand using the following as a guide
http://gnuvince.wordpress.com/2007/02/26/reformatting-a-css-file-with-vim/

" Replace all sequences of white spaces with one space
:%s/[ \t\n]\+/ /g

" Go to the end of the command, then forward one character and insert
" a newline
]/lr^M

" Make sure there is a semi-colon before each closing bracket
:%s/\([^; ]\) *}/\1;}/g

" Add a newline after every semi-colon
:%s/;/;^M/g

" Add a newline after every opening brace and make put one space
" between it and the preceeding text
:%s/\([^ ]*\) *{/\1 {^M/g

" Add two newlines after every closing brace
:%s/}/}^M^M/g

" Remove 'trailing' spaces in front of the semi-colons
:%s/ *;/;/g

" Make sure there is only one space after a colon
:%s/: */: /g

" Make the text before the colon lowercase
:%s/\(.\{-}\):/\L\1:/g

" Remove all trailing spaces at the beginning of lines
:%s/^ \+/g

" Indent the whole file
gg=G

" Split each rule onto its own line (This also matched some
" property/value combos so needed confirming
:%s/\([a-z0-9]\+\), \+/\1,^M/gc
2012-05-21 13:45:39 +02:00
Andrew Smith 61c00779d0 Set the X-CSRF-Token header for AJAX requests with jQuery. #950 2012-05-20 20:41:02 +02:00
Dereckson 375045a82b Improving French translation #967 2012-05-20 20:35:33 +02:00
Felix Schäfer 2e18840f12 Disable autocomplete on registragion form #844 2012-05-20 10:30:34 +02:00
Felix Schäfer 20448c7efb Load all required fixtures on issue unit test #863
Contributed by Toshi MARUYAMA
2012-05-20 10:18:00 +02:00
Andrew Smith 9cd14ca152 Fix a typo when calculating the menu X position. #1007 2012-05-19 11:52:51 +02:00
Felix Schäfer 87f68e58ad Recalculate last reply of thread on message deletion #968 2012-05-19 11:38:40 +02:00
Andrew Smith 43723385c6 Handle the '(Un)Check all' link. #994 2012-05-19 10:37:17 +02:00
Felix Schäfer 93abdcf487 Fix comments missing in wiki add/update mails #986 2012-05-19 00:00:16 +02:00
Felix Schäfer 1d3cdf1fa9 Correct email sending on attachment to document #1008 2012-05-18 22:45:52 +02:00
Felix Schäfer 3e84c4817b Updated czech localization by Radek Tříška 2012-05-18 22:02:40 +02:00
Felix Schäfer 7930e8fa66 Also test stable and unstable branches on TravisCI 2012-05-14 14:18:52 +02:00
Felix Schäfer d4f0542e74 Don't rely on ordering in news_test
The tests would fail because not all storage backends have a default
ordering
2012-05-14 12:39:17 +02:00
tmaruyama 6a26543887 scm: mercurial: fix unit adapter annotate test fails on Windows Mercurial 1.8.4+29-e597ef52a7c2.
git-svn-id: svn://rubyforge.org/var/svn/redmine/trunk@6042 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-05-14 10:54:17 +02:00
Felix Schäfer 03dfae0529 ChiliProject on Travis <3 <3 <3 2012-05-14 10:45:50 +02:00
Eric Davis 75bb38df08 Require WikiContent directly so WikiContentJournal is loaded before it's patched.
Error: uninitialized constant MergeWikiVersionsWithJournals::WikiContentJournal
2012-04-16 09:25:35 -07:00
Jean-Philippe Lang 16947dc016 [984] Allow to change locked and sticky status and the board of messages 2012-04-14 15:02:07 +02:00
unknown e7d96825b2 [#988] Improving Swedish translation 2012-04-13 16:07:42 +02:00
Holger Just 2bcd8787d3 Remove cookie cleaning method as it is not required anymore 2012-04-13 13:44:16 +02:00
jwalkerbg 6a4559e6af [#983] Translated several keys to Bulgarian language. 2012-04-13 09:45:08 +02:00
Gabriel Mazetto 859a9cb9d2 Some translation fixes and more missing translations for pt-BR 2012-04-12 08:20:02 +02:00
Holger Just 33260d885d Ensure array order for repeatable success of tests 2012-04-11 23:15:33 +02:00
Holger Just 277815ec96 Don't render cusom queries in the sidebar anymore
The queries are now part of the issues menu and are thus redundant in the
sidebar.
2012-04-11 20:50:42 +02:00
Holger Just 01c386b3c6 [#970] Cap too long menu entries with an ellipsis 2012-04-11 20:48:30 +02:00
Holger Just a6071c75ec [#975] Add test for editing version start date 2012-04-11 00:07:42 +02:00
Spenser Jones e6c79ddef4 [#975] Validate and enable editing of Version start date 2012-04-11 00:07:32 +02:00
Holger Just c3fc106355 [#974] Force the issue new link in the sidebar to the new action 2012-04-10 23:35:12 +02:00
Holger Just b169f02377 REMEMBER: ALWAYS RUN THE TESTS! 2012-04-09 15:46:06 +02:00
Holger Just 1f4baaa27b Take the password salt into account when checking for admin account change 2012-04-09 15:43:51 +02:00
Felix Schäfer 8f06b77ccb correct 'edit own issue notes' permission #966 2012-04-07 15:59:51 +02:00
Holger Just b8a29c288b Add the project_id to board URLs in the menu to generate valid URLs 2012-04-05 20:49:47 +02:00
Holger Just aca166271b Update German translation 2012-04-05 16:18:32 +02:00
Holger Just d61ad01308 Merge branch 'release-v3.1.0' into stable 2012-04-04 14:26:46 +02:00
Holger Just f681ed8c13 Bump version to 3.1.0 2012-04-04 14:21:43 +02:00
Holger Just eb62f4f7ec Update changelog for v3.1.0 2012-04-04 14:21:42 +02:00
Holger Just 4aed677908 Fix trailing whitespace 2012-04-04 14:21:42 +02:00
Holger Just 6f055664f1 Add copyright statement 2012-04-04 14:21:42 +02:00
Holger Just bb4340eb6d Update locales with new keys 2012-04-04 14:21:42 +02:00
Jean-Philippe Lang 3183aa55ed Set user_id as a protected attribute (#922). 2012-04-04 14:21:41 +02:00
Jean-Philippe Lang 275163ead2 Prevent mass-assignment vulnerability when adding/updating a wiki (#922). 2012-04-04 14:21:41 +02:00
Jean-Philippe Lang fc5dfd5813 Prevent mass-assignment vulnerability when adding/updating a version (#922). 2012-04-04 14:21:41 +02:00
Jean-Philippe Lang a3f6b30e99 Prevent mass-assignment vulnerability when adding/updating a time entry (#922). 2012-04-04 14:21:41 +02:00
Jean-Philippe Lang 5de377c5ee Use safe_attributes= just like in #create. (#922) 2012-04-04 14:21:41 +02:00
Jean-Philippe Lang 305df19ab7 Prevent mass-assignment vulnerability when adding/updating a news (#922). 2012-04-04 14:21:40 +02:00
Jean-Philippe Lang c3ca5813d5 Prevent mass-assignment vulnerability when adding/updating a forum message (#922). 2012-04-04 14:21:40 +02:00
Jean-Philippe Lang 384890c5ad Prevent mass-assignment vulnerability when adding a project member (#922). 2012-04-04 14:21:40 +02:00
Jean-Philippe Lang e77cb6133d Prevent mass-assignment vulnerability when adding/updating an issue category (#922). 2012-04-04 14:21:39 +02:00
Jean-Philippe Lang 7505cb2ff0 Prevent mass-assignment vulnerability when adding/updating a document (#922). 2012-04-04 14:21:39 +02:00
Jean-Philippe Lang 2eeb4b13a6 Prevent mass-assignment vulnerability when adding a news comment (#922). 2012-04-04 14:21:39 +02:00
Felix Schäfer 0a7c6e6774 Correct handling of @Rational#to_s@ on ruby 1.9 #887
Contributed by Martin S
2012-04-04 09:36:58 +02:00
Felix Schäfer 6f064d3856 Activity: use default filter only on first request #861 2012-03-28 20:31:20 +02:00
Robert Mitwicki c6af5c7982 Correct error message on group name #873 2012-03-28 08:56:06 +02:00
Jean-Philippe Lang 20a79124f7 Set format for activeresource client in reposman.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@7955 e93f8b46-1217-0410-a6f0-8f06a7374b81
2012-03-27 12:51:43 +02:00
Felix Schäfer e6ec8ab30c Remove length limits on some user fields #928 2012-03-25 09:40:56 +02:00
Felix Schäfer dafe09ee32 Adapt test to new jQuery context menu
jQuery context menu introduced in 1b7ddb3cd7
2012-03-23 12:34:53 +01:00
Andrew Smith 7b3280e5ad Replace tables that were using the 'width' attribute with inline styles (should be replaced with an ID/class). 2012-03-23 11:22:58 +01:00
Andrew Smith fd250726ce Remove some inline styling and some depreciated table cell attributes and replace them with proper class names. 2012-03-23 11:22:57 +01:00
Andrew Smith 1cfd20e7e7 Fix missing cells and incorrect close order 2012-03-23 11:22:57 +01:00
Andrew Smith b15e6d8305 Fix duplicated 'back_url' IDs
Various hidden input fields are used to hold a URL to send the user back
to the correct page after submitting a form, however, they all use the
same ID which isn't allowed in HTML. Passing in 'id' as nil stops the
'hidden_field_tag' from adding an ID attribute to the tag.
2012-03-23 11:22:57 +01:00
Andrew Smith 2a70e2704f HTML corrections 2012-03-23 11:22:57 +01:00
Andrew Smith 23a857bf75 Remove hard-coded div on issue page 2012-03-21 21:07:21 +01:00
Andrew Smith a510f0a85f Updates the plugin so that it can support multiple instances.
Multiple instances need to be applied to different elements in the DOM
otherwise multiple menus will be called for each click/right click.

e.g.

jQuery(document).ContextMenu(url);

would work for any form on a page. Using this would mean that multiple
instances couldn't be used though

jQuery('#content form').eq(0).ContextMenu(url);
jQuery('#content form').eq(3).ContextMenu(url);

Using the above 2 menus will be created for the first and 4th forms on
the page. Any of forms won't response to menu clicks.

jQuery(docuemnt).ContextMenu(url);
jQuery('#content form').eq(0).ContextMenu(url);

With the above any form on the page will respond to menu clicks but the
first form will send 2 requests for the context menu.
2012-03-21 21:07:21 +01:00
Andrew Smith 2b640f76ec Simple wrapper for backwards compatibility 2012-03-21 21:06:58 +01:00
Andrew Smith 1b7ddb3cd7 jQuery version of the issue context menu 2012-03-21 21:06:58 +01:00
Andrew Smith 27160b76f5 The jQuery ajaxStart/Stop functions are being called at the wrong time.
The ajaxStart/ajaxStop functions were being called before the document
was ready and the 'ajax-indicator' element existed. This meant that they
would never be called when an ajax event happened.
2012-03-20 22:54:20 +01:00
Gregor Schmidt c9a403a4b5 [#939] Update documentation for GMail setup
It now matches the current guide in ChiliProject Wiki at https://www.chiliproject.org/projects/chiliproject/wiki/Email_Delivery#SMTP-server-using-TLS-GMail
2012-03-20 22:49:37 +01:00
Felix Schäfer 565aeabc79 Issue hierarchy on issue show view #906 2012-03-20 09:25:54 +01:00
Holger Just 68efc3de32 [#903] Require updated tzinfo with fix for Ruby 1.9.3 2012-03-18 18:15:08 +01:00
Felix Schäfer efac256a6b Design fix
The lower would only show if you have the permission to see/add related issues
2012-03-17 15:31:26 +01:00
Felix Schäfer f01194856f Use the news description as event description #933 2012-03-17 13:55:36 +01:00
Felix Schäfer df66e9b915 aaj: default to don't force notes as event descriptions #933 2012-03-17 13:53:29 +01:00
Felix Schäfer 20eed68421 [#739] Convert relative links to full links in textile
Textile doesn't "understand" :only_path => false and thus doesn't convert links of the form

<pre>"foo":/bar</pre>

to full URLs, this is done in a subsequent method akin to the wiki_lins and so on
2012-03-16 00:47:18 +01:00
Felix Schäfer 26c847a4ca More specific CSS #911 2012-03-16 00:30:20 +01:00
Felix Schäfer 1bc182405e Correct truncated styles on journal entries #914 2012-03-09 18:44:04 +01:00
Michaël Rigart 23864d99b5 Fix progress bar css #868 2012-03-09 18:36:32 +01:00
Felix Schäfer ef5dddf4db Switch to GitAdapter for quoting #891
Fixes problems with paths containing quotes (sic)
2012-03-05 18:21:28 +01:00
Felix Schäfer 2c76240544 Fix edit issue notes permission #888 2012-03-05 18:13:59 +01:00
Holger Just 724bd48494 Remove unused code
Since Rails 2.3.11, protect_from_forgery exclusively calls
handle_unverified_request which defaults to resetting the session. The old
code to handle an invalid CSRF token is not used anymore and is thus
removed to un-confuse people.
2012-03-05 12:50:44 +01:00
Felix Schäfer 900eda7a23 Don't require a specific pg gem version #915
pg was locked to ~> 0.9.0 as it was the last version to support ruby 1.8.6, we don't support it officially anymore, thus we can remove the version requirement.

Contributed by Dies Koper.
2012-03-01 12:56:31 +01:00
Felix Schäfer 4b5271f487 Correct quotation #891
The Windows shell doesn't seem to support single quotes…

Contributed by Dies Koper, Luke Carrier
2012-03-01 00:40:23 +01:00
Felix Schäfer 4a3f10317f Correct (wrongly) assumed ordering in test #892
Contributed by Luke Carrier.
2012-02-29 22:28:47 +01:00
Eric Davis b9b2c8c0d7 [#559] Group menus and add some dynamic menus 2012-02-26 22:37:34 -08:00
Felix Schäfer fbc71a80f8 Fix issue option list orientation #869
Contributed by Alf Gaida.
2012-02-24 16:36:04 +01:00
Felix Schäfer f327298f88 Fix missing submenu hint on issue context menu #882
Contributed by Andrew Smith
2012-02-24 15:56:29 +01:00
Michaël Rigart e678612d75 gitignore intellij project files 2012-02-24 15:45:22 +01:00
Michaël Rigart cbcce70400 Fix requiring SCM classes in dev mode #828
Change require to require_dependency so SCM classes get loaded on each request in dev mode
2012-02-24 15:44:02 +01:00
Felix Schäfer fda1dfa96d Merge pull request #153 from dfeyer/master
Fixes for Activity list column alignment
2012-02-22 13:53:13 -08:00
Dominique Feyer f561c54356 Fixes activity list column alignment 2012-02-12 23:08:37 +01:00
Holger Just 11e93ff36a Merge branch 'release-v3.0.0' into stable 2012-02-07 00:09:59 +01:00
Holger Just 3ecace901b Bump version to 3.0.0 2012-02-06 23:58:16 +01:00
Holger Just 2e7050ef79 Update Changelog for 3.0.0 release 2012-02-06 23:58:16 +01:00
Holger Just e0eb21b48b [#826] Position the .button-large as any other title-bar element 2012-02-06 23:58:16 +01:00
Holger Just 1eefd4b40d Merge branch 'master' into unstable
Conflicts:
	app/models/journal_observer.rb
	lib/chili_project/version.rb
	test/unit/principal_drop_test.rb
2012-02-06 23:57:10 +01:00
Holger Just 0fd499afca Merge branch 'master' into unstable 2012-02-06 22:47:35 +01:00
Holger Just aa3ab990d0 [#593] Generate wiki content notifications in the JournalObserver
This will prevent the usage of the wrong wiki_content status.

The code is not overly pretty and deserves a thorough refactoring, but at
least it solves the problem at hand.
2012-02-06 22:44:44 +01:00
Holger Just 3f99ee63ff Always display our custom 404 page 2012-01-30 21:28:57 +01:00
Holger Just be4d679d54 [#849 #789] Remove config.ru as Rails 2.3 doesn work well as a rack-only app 2012-01-29 21:47:05 +01:00
Holger Just 3f126bdeaf [#843] Add config/setup_load_paths.rb to .gitignore 2012-01-29 19:55:32 +01:00
Holger Just 8e85cbdc11 [#839] Remove ruby-debug dependency.
It completely breaks on Ruby 1.9.3-p0. This is a stopper for people installing all groups. For the rest it is rarely used at all. Developers and testers requiring it can include it into their Gemfile.local
2012-01-29 19:55:32 +01:00
Holger Just 21f70fc86c Bump version to 3.0.0beta2 2012-01-18 19:48:06 +01:00
Holger Just f4c87b92e2 Update changelog for 3.0.0beta1 2012-01-18 19:31:11 +01:00
Holger Just b692d4a671 Fix source encoding 2012-01-18 19:26:56 +01:00
Holger Just 185edcd283 Fix trailing whitespace 2012-01-18 19:26:03 +01:00
Holger Just 19f2ccd496 Update copyright for 2012 2012-01-18 19:25:13 +01:00
Holger Just 91f6e79f4d Update locales with new strings 2012-01-18 19:23:56 +01:00
Holger Just e85947c7d4 Merge branch 'master' into unstable 2012-01-18 19:18:27 +01:00
Holger Just a0a2776f95 Make the strainer monkey patch more conservative and compatible 2012-01-18 10:19:04 +01:00
Holger Just 3c9e9764b0 [#807] Re-add details class to maintain backwarts-compatible lasses 2012-01-17 23:43:28 +01:00
Holger Just 3f325243ce Merge branch 'pulls/783/remove-new-issue-link-if-unauthorized' of https://github.com/finnlabs/chiliproject into unstable 2012-01-17 20:14:25 +01:00
Holger Just c313ed2d25 Remove unloadable from the monkey patches for Liquid.
It turns out in this case or core patches, unloadable actually breaks in
development mode. Did I already mention that I hate the Rails reloader?
2012-01-17 19:38:28 +01:00
Holger Just e1ecae83b3 [#774 #815 #807] Fix styles used for gravatars in issues
Gravatars now generally have a border and are displayed equally.
The Issue history formatting is cleaned up with much of the positioning
magic removed in favor or a simple float.
2012-01-17 19:34:33 +01:00
Holger Just 323b5bebc8 [#774] Move gravatar of issue author into the author tag 2012-01-17 19:31:02 +01:00
Holger Just 91c04f335d [#807] Move gravatar into the journal div 2012-01-17 19:25:53 +01:00
Holger Just 31620d0c0a Override first and last filters to allow simple array slicing 2012-01-17 13:47:13 +01:00
Holger Just 9967b5cdf2 Patch Liquid to include filters in a predictable order
This brings us a reliable filter override until
https://github.com/Shopify/liquid/pull/87 is accepted and
released upstream.
2012-01-16 20:49:39 +01:00
Holger Just e91a1e010f [#778] Properly cache Liquid markup
This commit moves the markup caching into Liquid rendering. As
Liquid allows to return different results depending on the environment
(variables, logged user, ...) we only cache the page if it contains
no active content.

Unfortunetely, active content currently also includes the TOC
in wiki pages.
2012-01-16 17:08:52 +01:00
Holger Just 637ca24aed Completely disable the Rails cache for tests
Settings extension to handle cache behaviour by Gregor Schmidt.
2012-01-16 15:54:05 +01:00
Holger Just a938d582b1 [#780] Clarify deprecation of Setting.clear_cache 2012-01-16 14:53:51 +01:00
Holger Just 33a8baf347 Merge branch 'pulls/780/setting-cache' of https://github.com/finnlabs/chiliproject into unstable 2012-01-16 14:50:34 +01:00
Holger Just d7ebffb7ad [#795] Generate error flash on Liquid syntax error 2012-01-16 14:10:45 +01:00
Holger Just 61a65d4624 [#827] Add status group in time entries report.
Patch provided by Jérôme BATAILLE.
Test from Jean-Philippe Lang.
2012-01-16 13:48:06 +01:00
Holger Just d9a0ac37eb Move Redmine::Info to ChiliProject::Info 2012-01-16 13:28:43 +01:00
Holger Just dbbc0b4919 [#558] Reduce version info in help link 2012-01-16 13:08:25 +01:00
Eric Davis 0407abbd56 Hide the More menu if there are no items to show 2012-01-12 15:00:23 -08:00
Eric Davis 4ce3b88473 Add a menu to view all projects since the main click event is blocked 2012-01-12 14:58:15 -08:00
Holger Just b080ad14ef [#790] Test the lazy variables 2012-01-05 23:36:30 +01:00
Holger Just f1324e6af4 [#790] Replace TagList and VariableList tags with variables 2012-01-05 23:36:30 +01:00
Holger Just 446f943968 [#790] Add filter to output an array into an unordered list 2012-01-05 23:36:30 +01:00
Holger Just 3c3eb2f7e7 [#790] Register variables with an API 2012-01-05 23:36:29 +01:00
Holger Just dc5fd8bc10 Actually focus username in login dropdown 2012-01-04 18:31:05 +01:00
Holger Just 0c87f611e9 Merge branch 'master' into unstable
Conflicts:
	config/locales/bg.yml
	config/locales/bs.yml
	config/locales/ca.yml
	config/locales/cs.yml
	config/locales/da.yml
	config/locales/de.yml
	config/locales/el.yml
	config/locales/en-GB.yml
	config/locales/es.yml
	config/locales/eu.yml
	config/locales/fa.yml
	config/locales/fi.yml
	config/locales/fr.yml
	config/locales/gl.yml
	config/locales/he.yml
	config/locales/hr.yml
	config/locales/hu.yml
	config/locales/id.yml
	config/locales/it.yml
	config/locales/ja.yml
	config/locales/ko.yml
	config/locales/lt.yml
	config/locales/lv.yml
	config/locales/mk.yml
	config/locales/mn.yml
	config/locales/nl.yml
	config/locales/no.yml
	config/locales/pl.yml
	config/locales/pt-BR.yml
	config/locales/pt.yml
	config/locales/ro.yml
	config/locales/ru.yml
	config/locales/sk.yml
	config/locales/sl.yml
	config/locales/sr-YU.yml
	config/locales/sr.yml
	config/locales/sv.yml
	config/locales/th.yml
	config/locales/tr.yml
	config/locales/uk.yml
	config/locales/vi.yml
	config/locales/zh-TW.yml
	config/locales/zh.yml
	db/migrate/20100217010520_add_custom_filter_to_auth_sources.rb
	lib/chili_project/version.rb
2012-01-04 16:41:10 +01:00
Eric Davis b8a7f2923a Remove arbitrary limit on the Time Entry Report columns
Appears it was put in place to prevent wide reports but was actually
limiting the data, especially when putting a day in each column.
2011-12-29 15:24:03 -08:00
Eric Davis e4554a6d7b [#792] Fix tests from merge 2011-12-29 11:50:48 -08:00
Eric Davis 00df832126 Merge branch 'ticket/unstable/792-confirmation-emails' into unstable 2011-12-29 10:28:47 -08:00
Eric Davis 66fe8287ce [#809] Fixed a nil object error in params. 2011-12-29 10:08:03 -08:00
Eric Davis a3b1127ef8 Merge branch 'ticket/unstable/809-add-multiple-projects' into unstable 2011-12-29 09:58:34 -08:00
Eric Davis c51d339512 [#809] Multiple projects can now be assigned to a group or user.
* Added a Javascript autocomplete for searching Projects
* Updated the Users and Groups controllers' #edit_membership method to
  create/update multiple Member records
2011-12-29 09:30:32 -08:00
Eric Davis af00598e5e [#809] Refactored a duplicate form to a partial. 2011-12-29 09:30:32 -08:00
Eric Davis f835420383 Merge branch 'ticket/unstable/808-issue-description-diff' into unstable 2011-12-29 08:36:46 -08:00
Eric Davis 38d0d530b0 [#808] Show issue description diffs in the lightbox popup 2011-12-29 08:35:51 -08:00
Eric Davis 4acee9e989 Add a reusable dialog-window for lightbox style popups 2011-12-29 08:35:51 -08:00
Eric Davis aafec2c50f Add some nice defaults for jQuery ajax 2011-12-29 08:35:51 -08:00
Eric Davis 08454ab7fa [#808] Truncate and show a link to the full journal diff in the issue history 2011-12-29 08:35:51 -08:00
Eric Davis 5ad97a4ea3 [#808] Add JournalsController#diff to diff a single field 2011-12-29 08:35:45 -08:00
Eric Davis e045306a5c [#808] Add routing for journal diffs 2011-12-29 08:35:37 -08:00
Eric Davis 8100ce0ce5 Optimize: Remove per-language assertions for Mailer tests
I can't find any real reason they are needed at all and were taking
a lot of time to run. Results for the test class

Before: 56 seconds
After: 23 seconds
2011-12-28 12:20:45 -08:00
Eric Davis 84cc8ab215 Guard against nil author or author emails in the Mailer. 2011-12-28 11:31:05 -08:00
Eric Davis ef00061568 [#798] Fixed the sidebar design by moving #sidebar out of #main-menu
The #main-menu was used as the entire left column but was having styles
applied to it for the menu which were leaking onto the #sidebar. By
wrapping the column in a unique div the menu styles were isolated from
the sidebar styles.
2011-12-28 11:14:38 -08:00
Eric Davis 15428fc092 [#806] Add Board and Message watcher management 2011-12-28 11:03:24 -08:00
Eric Davis a8d28e4593 Merge branch 'ticket/unstable/805-wiki-watching' into unstable 2011-12-28 10:23:26 -08:00
Eric Davis ce0c32ea02 Refactor: create the permission name dynamically to support other classes 2011-12-28 10:22:06 -08:00
Eric Davis 97fe88f8d9 [#805] Add the Watchers sidebar to Wiki Pages 2011-12-28 10:22:06 -08:00
Eric Davis 3df729e47d Replace puts and !!! messages with pending tests when the test SCMs are missing 2011-12-27 18:23:14 -08:00
Eric Davis 7bce7f7b07 Merge branch 'ticket/unstable/802-group-watchers' into unstable 2011-12-27 18:09:25 -08:00
Eric Davis 04db42f537 Fix another broken test that can't run by itself due to missing fixtures 2011-12-27 17:38:38 -08:00
Eric Davis 16943d04f7 [#802] Use the group.png icon as a Group avatar 2011-12-27 17:38:34 -08:00
Eric Davis 8e3d4da376 [#802] Show groups in the watchers partial and users autocomplete 2011-12-27 17:38:30 -08:00
Eric Davis 65e7995682 [#802] Change WatchersController to allow groups 2011-12-27 17:38:25 -08:00
Eric Davis e6e6a06fff [#802] Allow Groups to be added as a Watcher 2011-12-27 17:38:20 -08:00
Eric Davis 10054cfd8f [#802] Move methods from User so other Principals can use them 2011-12-27 17:38:14 -08:00
Eric Davis 8b3207a893 Fix test that doesn't run alone due to missing fixtures 2011-12-27 17:16:16 -08:00
Eric Davis 037d915d7b Merge branch 'ticket/unstable/800-non-member-watch' into unstable 2011-12-27 17:14:57 -08:00
Eric Davis c3555b1728 [#800 #801] Exclude users already watching the issue 2011-12-27 17:09:29 -08:00
Eric Davis 8160cd02bd [#800 #801] Add Javascript search to bulk add watchers to issues. 2011-12-27 17:09:24 -08:00
Eric Davis 5deae7ebe3 [#800 #801] Refactor AutoCompletesController#users to not be coupled to Groups 2011-12-27 17:09:19 -08:00
Eric Davis a110f1041d [#800 #801] Refactor the user auto complete method to the AutoCompletesController 2011-12-27 17:09:18 -08:00
Eric Davis 111c7f47f7 [#800 #801] Test that non-member watchers aren't removed if they still have access 2011-12-27 17:08:48 -08:00
Eric Davis df5b2198e9 Merge branch 'ticket/unstable/799-document-watching' into unstable 2011-12-27 13:50:47 -08:00
Eric Davis 3af5544dbc [LSS#4190] Add watching to documents 2011-12-27 13:16:52 -08:00
Eric Davis 61a21f4990 [#797] Fix wiki page hierarchy 2011-12-27 13:05:21 -08:00
Eric Davis 72eadcc6ea [#796] Adds date range filter.
Based on r6226 from Redmine by Jean-Philippe Lang
2011-12-27 13:02:46 -08:00
Eric Davis dc541597ec [#792] Send email from mail_handler for emails which are missing required information 2011-12-26 17:39:29 -08:00
Eric Davis 1dd07471ca [#792] Send email from mail_handler for emails missing a project 2011-12-26 17:38:26 -08:00
Eric Davis 4ff670f5fa [#792] Send email from mail_handler for unauthorized actions 2011-12-26 17:38:25 -08:00
Eric Davis 9f4683d71b [#792] Send email when mail_handler gets an email from an unknown user 2011-12-26 17:38:25 -08:00
Eric Davis 331ecb4c4f [#792] Add confirmation emails for successful forum replies 2011-12-26 17:38:25 -08:00
Eric Davis 7c7aca4f0c [#792] Add confirmation emails for successful issue replies 2011-12-26 17:38:25 -08:00
Eric Davis d53c4e9aae [#792] Add confirmation emails for successful issue creation 2011-12-26 17:38:24 -08:00
Eric Davis 9d8fc86b8e [#792] Add settings for confirmation emails are sent for incoming mail 2011-12-26 17:38:19 -08:00
Eric Davis 260e8b84f8 [#674] Convert outbound mail to be sent per-recipient
Instead of a single email that is sent out with all the recipients as CC/BCC,
each recipient will be delivered their own email. This will let emails to be
customized per user based on their permissions, without exposing private data.
2011-12-26 16:58:43 -08:00
Eric Davis 21685caf5f [#791] Add support for pop3s (SSL) to redmine📧receive_pop3 2011-12-26 12:45:30 -08:00
Gregor Schmidt 69ccbafaf4 [#783] Removing link to new issue when missing permissions 2011-12-20 10:13:01 +01:00
Gregor Schmidt 10e16e9a56 [#780] Clearing (Settings) cache to make the tests pass again 2011-12-19 17:30:19 +01:00
Gregor Schmidt 6273891ae7 [#780] Remove non-functional call to Setting.check_cache 2011-12-19 17:30:13 +01:00
Gregor Schmidt 92b6d43150 [#780] using a changing cache key to avoid the need for explicit cache invalidation
This should work on all cache stores, since only the basic cache operations fetch and delete are used. The methods clear_cache and check_cache can no longer be supported. To sweep the whole cache Rails.cache.clear may be used. To invalidate the Settings only, you may use Setting.first.try(:touch).
2011-12-19 17:30:08 +01:00
Holger Just 6f17ec6fd0 Bump version to 3.0.0beta1 2011-12-18 21:51:43 +01:00
Holger Just d5f4bec112 Update changelog for 3.0.0-beta1 2011-12-18 21:40:21 +01:00
Holger Just 745f889e92 Enforce UTF-8 source encoding 2011-12-18 21:40:14 +01:00
Holger Just ceac1bb419 Update missing keys in i18n locales 2011-12-18 21:40:14 +01:00
Holger Just e1ac469cfb Fix trailing whitespace 2011-12-18 21:40:01 +01:00
Holger Just d24e8186b4 Merge remote-tracking branch 'chiliproject/master' into unstable 2011-12-18 21:33:05 +01:00
Holger Just 81f6635878 Remove debug code. Sorry for that... 2011-12-18 15:58:42 +01:00
Holger Just ba6fcfeca9 Override some filters of Liquid core.
These filters change the implemntation of sub and gsub to use the block method.
This prevents the evaluation of backreferences in the replacement text. See
https://gist.github.com/1491437 for examples.

Also, it allows split to be called without arguments to split strings on
whitespace.
2011-12-18 15:54:09 +01:00
Holger Just 2733e5173f Fix trailing whitespace 2011-12-18 15:49:18 +01:00
Holger Just 6b725c32e6 Add wiki formatting for h4 2011-12-18 15:49:00 +01:00
Holger Just 0049f82182 Redirect back to where I came from when loggin in via the menu form 2011-12-18 12:28:32 +01:00
Holger Just 58a7182e2d Use the correct subject id for quoting 2011-12-18 12:04:13 +01:00
Eric Davis 2f0d13149d Copyright header update 2011-12-17 15:50:52 -08:00
Eric Davis d583c94b5f Update locales 2011-12-17 15:49:28 -08:00
Eric Davis 3a16f3f5b1 Merge remote-tracking branch 'upstream/master' into unstable 2011-12-17 15:20:58 -08:00
Holger Just 04eb115da7 Add identity tag which just returns whatever was entered as input 2011-12-17 23:49:25 +01:00
Holger Just 34fef9d8fc Fix display of floatable TOCs in wikis 2011-12-17 22:14:19 +01:00
Holger Just e2c57fd12d Make floated TOCs in wikis compatible with the Liquid engine
The floated tags (>toc and <toc) are invalid syntax because of the < and >
characters. We transform them to toc_left and toc_right instead.
2011-12-17 22:14:19 +01:00
Holger Just 7458bca34b Don't create arguments for legacy tags if there aren't any 2011-12-17 22:14:19 +01:00
Holger Just 60deeb5306 Move definiton of liquid legacy tags into the Legacy module.
This is required to retaiun the definition in development mode as the module
is stragely reloaded.
2011-12-17 22:01:20 +01:00
Holger Just 4656cf1c57 Escape raw input if there is a Liquid syntax error 2011-12-17 21:57:01 +01:00
Eric Davis d2ccdc88fa [#760] Extract quick search to a partial.
Contributed by Peer Allan
2011-12-10 12:28:53 -08:00
Eric Davis d32480753b [#692] Update the style of the issue show page to be cleaner 2011-12-10 12:22:38 -08:00
Eric Davis 9f0bd25523 [#692] i18n English string in view 2011-12-10 12:21:34 -08:00
Eric Davis 100faf94f7 [#692] Add some style to issue action menus 2011-12-10 12:16:54 -08:00
Eric Davis f6d0932bff [#692] Use i18n label for the More menu 2011-12-10 11:35:12 -08:00
Eric Davis 2a74699196 [#692] Make breadcrumbs larger and not completely underlined 2011-12-10 11:30:38 -08:00
Eric Davis ee48a8da4f Merge branch 'ticket/unstable/692-final-design' into unstable 2011-12-10 10:40:09 -08:00
Eric Davis 52ab42b5b0 [#692] Add missing closing tag 2011-12-09 19:26:21 -08:00
Eric Davis e8b8841717 [#692] Fix image names 2011-12-09 19:04:20 -08:00
Eric Davis f9a2e30b9f [#692] Fix issue history styles 2011-12-09 19:04:20 -08:00
Eric Davis f76c922dd8 [#692] Fix the context menu styles
It was conflicting with S&P theme styles due to the CSS load order,
reset them back to the pre-S&P theme style.
2011-12-09 19:04:20 -08:00
Eric Davis 8e6ccceb28 [#692] Remove selected gradient from context menu tables 2011-12-09 19:04:19 -08:00
Eric Davis a73c23ae9b [#692] Use text based logo 2011-12-09 19:04:19 -08:00
Eric Davis 0385979d5e [#692] Add register link back into the top menu 2011-12-09 19:04:19 -08:00
Eric Davis 612f2f98e4 [#692] Fix and simplify the top menu open/closing
* Remove bunch of extra code from choosen
* Fix awkward indention
* Add admin menu items to the Modules menu
* Turn off bold on menu item hover, was causing jumping in width
* Fix color on opened top menus
* Fix a bunch of edge cases in the menu clicks.
* Remove gross 'html' binding in favor of a one time only one
2011-12-09 19:04:08 -08:00
Eric Davis b312bf387a [#692] Cleanup layout structure from rebase 2011-12-09 18:06:19 -08:00
Eric Davis 971277b507 [#692] Fix failing test due to design changes 2011-12-09 18:06:19 -08:00
Eric Davis c33227ffe3 [#692] Update CSS by reviewing pre and post-merge diff 2011-12-09 18:06:18 -08:00
Eric Davis 32fa8cb522 [#692] Fix syntax errors and undefined methods in layout from merge 2011-12-09 18:06:18 -08:00
Romano Licker 83f8f63640 [#692] implemented widget design for mypage
- background gradient image missing
- made icon grey in order to keep it visible
- raised icon margin to position it directly inside the
  widget when in personalize mode
- added a background image to display the gradient
2011-12-09 18:06:18 -08:00
jwollert a1500a49b5 [#692] remove duplicate header from the bottom of the ticket show view 2011-12-09 18:06:18 -08:00
Romano Licker d22afea284 [#692] header-menu subentries closer together
2 columns instead of 3 for issue detail
2011-12-09 18:06:17 -08:00
Romano Licker e371bcad24 [#692] fixes admin-menu
new design on ticket view
filter / options / attachments fieldset redesign
2011-12-09 18:06:12 -08:00
Romano Licker 0eeeb04c31 [#692] removes div#admin-menu - now content of main menu 2011-12-09 14:04:02 -08:00
Romano Licker 729e801c9f [#692] renamed div#account to div#header cleanup 2011-12-09 14:03:59 -08:00
jwollert 7e287d6e5a [#692] fixes IE7 overflow bug in project search results 2011-12-09 13:57:24 -08:00
Eric Davis 7d1c0374e4 Merge branch 'ticket/unstable/747-capybara' into unstable 2011-12-09 13:28:33 -08:00
Felix Schäfer fbde6859d1 Merge branch 'rubychan-coderay-1.0' into unstable 2011-12-09 16:58:24 +01:00
Felix Schäfer 1c84fc0f4d Text corrections. 2011-12-09 16:57:48 +01:00
Felix Schäfer 8671006b70 [#649] Prevent the extra wiki styles from interfering with code highlighting. 2011-12-09 16:57:16 +01:00
Felix Schäfer aa88fe8e39 Merge branch 'coderay-1.0' of https://github.com/rubychan/chiliproject into rubychan-coderay-1.0 2011-12-09 16:50:20 +01:00
Eric Davis b32fc97314 [#747] Add some capybara helper methods 2011-12-01 18:13:27 -08:00
Eric Davis a2feb14c83 [#747] Include capybara for integration tests 2011-12-01 16:46:50 -08:00
Eric Davis 4b5d4307d2 Merge branch 'ticket/unstable/720-tagging' into unstable 2011-12-01 15:58:29 -08:00
Eric Davis f179fea7bf [#720] Use = to show the explicit dependency 2011-12-01 15:58:05 -08:00
Felix Schäfer 1d21cab2e4 Merge branch 'master' into unstable
Conflicts:
	app/views/projects/index.rhtml
	lib/chili_project/compatibility.rb
2011-12-01 17:46:05 +01:00
Holger Just 5bf27de92a [604] Add compatibility check for Liquid 2011-11-26 22:24:51 +01:00
Holger Just 0b952a1edd [#263] Fix test error on Ruby 1.9
TreeNode#to_s (from the rubytree gem) is broken. It is implicitly called by
Shoulda on 1.9 only. As we don't actually need it, we just remove the method.

The bug is reported at http://rubyforge.org/tracker/index.php?func=detail&aid=29435&group_id=1215&atid=4793
2011-11-26 20:36:56 +01:00
Holger Just 9f4d12ffdf [#734] Don't modify text inline.
This is not only a wee bit faster (yay!) but also allows use to deal with
frozen strings and doesn't change content which might inadvertently be saved
later on. And it fixes some broken tests on Ruby 1.9 :)
2011-11-26 16:10:24 +01:00
Holger Just 28ce07b1dd [#734] Force instance_variables to string for Ruby 1.9 compatibility 2011-11-26 16:09:08 +01:00
Eric Davis 01e43f2e6b Merge pull request #134 from schmidt/pulls/725/unstable
[#725] Compatibility check for jQuery availability (unstable)
2011-11-25 12:50:25 -08:00
Gregor Schmidt 3577550cfa [#725] Chili-core now loads jQuery by default
This was added to unstable with ab2856b53 and will be released with Chili 3.0
2011-11-25 20:24:06 +01:00
Eric Davis 8fc2b72740 [#720] Add acts-as-taggable-on gem and migration for tag support
As per the gem docs, 2.1.0 is the last Rails 2.x compatable version
2011-11-25 11:23:34 -08:00
Gregor Schmidt 13da5e0445 [#725] Add compatibility check for jQuery availability
In the current master a.k.a. ChiliProject 2.x, there is
no jQuery loaded by core.
2011-11-25 20:19:58 +01:00
Eric Davis e6fe1fc776 Merge remote-tracking branch 'meineerde/issues/unstable/604-liquid-rebased' into unstable 2011-11-25 01:44:19 -08:00
Eric Davis b1d9667335 Fix test so it runs in isolation 2011-11-20 02:49:22 +01:00
Holger Just a31a4a8852 [#604] Adapt fixtures for new liquid syntax 2011-11-20 02:49:22 +01:00
Eric Davis dedf696666 [#604] Add missing test for Liquid 2011-11-20 02:49:22 +01:00
Holger Just 464dafc1e7 [#604] We don't support the old escape style anymore 2011-11-20 02:49:22 +01:00
Holger Just f6805303fb [#604] Remove the leading newline from Liquid blocks for easier formatting 2011-11-20 02:49:21 +01:00
Holger Just 994132a51a [#604] Add nicer error formatting, similar to the old style 2011-11-20 02:49:21 +01:00
Holger Just fe6a79ac17 [#604] Add some handy filters 2011-11-20 02:49:21 +01:00
Holger Just cc0526cb27 [#604] Introduce compatibility layer for third party macros.
This be removed with complete macro removal.
2011-11-20 02:49:21 +01:00
Holger Just 862c9e0fde [#604] Adapt the upstream include mechanism to work with Wiki pages 2011-11-20 02:49:20 +01:00
Eric Davis 71ecdb57ed [#604] Port the child_pages to Liquid tag 2011-11-20 02:49:20 +01:00
Eric Davis 1e7dfe545e [#604] Port the macro_list to Liquid: variable_list and tag_list 2011-11-20 02:49:20 +01:00
Eric Davis 7778ff2f83 [#604] Port hello_world macro to liquid 2011-11-20 02:49:20 +01:00
Holger Just 29fe856916 [#604] Add base tag 2011-11-20 02:49:19 +01:00
Eric Davis 81ca15c52c [#604] Add ability to support legacy macros 2011-11-20 02:49:19 +01:00
Holger Just 82432f3f99 [#604] Evaluate Liquid before Textile-to-HTML transformation.
This changes how the liquid integration works. It now integrates the Textile
conversion step. This was necessary because if you first convert the snippets
inside of loops and conditionals from Textile to HTML, you loose some
important context information which is required to e.g. build proper lists in
textile.

We expect the standard case that Liquid tags return Textile markup instead
of HTML. Thus, we can convert the final textile markup to HTML as a very last
step.

To allow existing and new macros (or tags) to return HTML for advanced usage,
we save their respective output into the context and put a placeholder string
into the generated markup. After the transformation to HTML, we insert the
previously generated HTML into the string using search+replace in
lib/chili_project/liquid/template.rb. Tags have to be registered using
:html => true for this special treatment.
2011-11-20 02:49:19 +01:00
Eric Davis 72fa3ff920 [#604] Run the output of the WikiFormatted text into Liquid
The current view's instance variables are sent to liquid dynamically
2011-11-20 02:49:19 +01:00
Eric Davis 981143f78f [#604] Disable classic ChiliProject wiki macros 2011-11-20 02:49:18 +01:00
Eric Davis 7906afe6b9 [#604] Add an IssueDrop with custom field support 2011-11-20 02:49:12 +01:00
Eric Davis 6f8d8c4105 [#604] Add basic WikiPageDrop 2011-11-19 23:34:52 +01:00
Eric Davis 91914cb877 [#604] Add simple Liquid drops for Projects and Principals 2011-11-19 23:33:36 +01:00
Holger Just 7261622196 [#604] Add base drop 2011-11-19 23:31:58 +01:00
Eric Davis 4289559b5f [#604] Require the liquid gem 2011-11-19 23:31:05 +01:00
Eric Davis 1e41ec912b Guard against a LocalJumpError in Project#project_tree 2011-11-14 19:23:49 -08:00
Eric Davis af9572d985 Confirm before deleting issue categories 2011-11-14 19:10:13 -08:00
Eric Davis 5f3c6b87e4 Show email notification options in a project tree 2011-11-14 18:55:39 -08:00
Felix Schäfer b1671e46f0 Merge pull request #111 from edavis10/ticket/unstable/672-query-subprojects
#672 Allow queries to include subproject issues
2011-11-13 12:11:52 -08:00
jwollert edce16c89a [#692] enable jump to project box to take options (projects and html) 2011-11-12 16:22:31 -08:00
Romano Licker 977f74e11a [#692] Main design changes for new theme 2011-11-12 16:22:25 -08:00
Romano Licker c16cfd8ff1 [#692] images for new design 2011-11-12 16:22:24 -08:00
Romano Licker 734da91b4b [#692] login slidedown implemented with tabindex and focus fix 2011-11-12 16:22:24 -08:00
jwollert fecfbaf908 [#692] change project navigation arrow on hover
- fix project navigation arrows
2011-11-12 16:22:24 -08:00
Eric Davis 1897459b76 [#263] Refactor: move top menu logic to ApplicationHelper 2011-11-06 19:49:23 -08:00
Eric Davis 3e87af38d4 [#263] Make issue description the full width 2011-11-06 19:38:44 -08:00
Eric Davis 3409f5b620 [#658] Include jQuery v1.7, jquery ui 1.8.16, and smoothness theme 2011-11-06 19:21:56 -08:00
Eric Davis ab2856b53f [#263] Add new layout and theme
Merge branch 'ticket/unstable/263-new-layout-ready' into unstable
2011-11-06 18:18:35 -08:00
Eric Davis 7bc11f8de0 [#263] Tests require one theme being present 2011-11-06 17:46:55 -08:00
Eric Davis f10412ef71 [#263] Update tests for views in the new layout 2011-11-06 17:46:31 -08:00
Eric Davis a911d83889 [#263] Fix theme tests that changed singleton data 2011-11-06 16:39:28 -08:00
Eric Davis 5620488727 [#263] Removed and tweaks the design based on feedback 2011-11-06 16:39:15 -08:00
Eric Davis b160217299 Use full paths to test_helper.rb for metric_fu/rcov to pick up 2011-11-03 19:43:20 -07:00
Holger Just 9c8380667c Merge branch 'master' into unstable 2011-10-31 18:18:44 +01:00
Kornelius Kalnbach aa8237c546 fix application_helper_test 2011-10-29 13:44:47 +02:00
Kornelius Kalnbach 260a6bb1da fixed wiki syntaxhl issue 2011-10-29 12:20:11 +02:00
Kornelius Kalnbach 7b1a263d1d trying to fix wiki syntaxhl issue 2011-10-29 12:10:18 +02:00
Kornelius Kalnbach 65af1e4436 #649 update to CodeRay 1.0 according to Etienne's r7618 in Redmine 2011-10-29 11:35:16 +02:00
Eric Davis a2514ecc54 [#263] Remove Shane and Peter theme 2011-10-28 15:22:20 -07:00
Eric Davis f31f44f4af [#263] Remove dead context menu code 2011-10-28 15:21:37 -07:00
Eric Davis cce496b011 [#263] Remove placeholder thumbnail images 2011-10-28 15:20:09 -07:00
Eric Davis e51f067f12 Merge branch 'ticket/unstable/263-new-layout' into unstable 2011-10-28 15:12:59 -07:00
Eric Davis 8d10daa68f [#263] Add additional wiki styles 2011-10-28 14:58:50 -07:00
Eric Davis b968d260fd [#263] Remove DOM hacks to reposition elements 2011-10-28 14:54:09 -07:00
Eric Davis 34ffbc8e46 [#263] Remove dead code, was unbound in later JS 2011-10-28 14:53:49 -07:00
Eric Davis cbb99f81a1 Merge multiple jquery ready blocks 2011-10-28 14:48:38 -07:00
Eric Davis 923cdf3ff3 Refactor duplicated and abbreviated animationRate variable 2011-10-28 14:45:30 -07:00
Eric Davis a592f024cb [#263] Remove new issue lightbox (dead code) 2011-10-28 14:43:47 -07:00
Eric Davis dc682eaddc [#263] Remove issue tooltip javascript 2011-10-28 14:41:20 -07:00
Eric Davis aed2b4f661 [#263] Update jquery load order and embed noConflict in the HTML head directly 2011-10-28 14:36:10 -07:00
Eric Davis d99bc8a066 [#263] Replace image background with a theme-able css3 background 2011-10-28 14:35:36 -07:00
Eric Davis 5e2d633ebb [#263] Merge common.js into application.js 2011-10-28 14:26:14 -07:00
Eric Davis ca3eeedfff [#263] Remove profile popups, never finished 2011-10-28 14:21:41 -07:00
Eric Davis 155e1ba2a7 [#263] Remove thickbox 2011-10-28 14:18:53 -07:00
Eric Davis 2b7a221dee [#672] Allow each Query to control if subprojects are included or not 2011-10-25 18:13:32 -07:00
Eric Davis 061beb4967 Merge remote-tracking branch 'finnlabs/pulls/653/move-query-models-into-separate-files' into unstable 2011-10-14 16:40:08 -07:00
Gregor Schmidt c1ecadbff7 Moving query related models into separate files
This should enable easier overwriting/reloading in plugins, since now the autoloader is able to find the models.
2011-10-12 11:35:26 +02:00
Holger Just c87738daf2 Merge branch 'stable' into unstable 2011-10-04 17:37:14 +02:00
Holger Just 2a3e12927f Merge branch 'stable' into unstable 2011-08-27 18:56:51 +02:00
Eric Davis 27fd103132 [#263] Override some defaults in the sap theme 2011-08-05 12:12:39 -07:00
Eric Davis a9d6518a5d [#263] Set up default styles 2011-08-05 12:09:16 -07:00
Eric Davis d8023e6949 [#263] Remove duplicated favicon 2011-08-05 11:36:55 -07:00
Eric Davis 667f85f9a5 [#263] Extract custom S&P images 2011-08-05 11:35:05 -07:00
Eric Davis 7f06e7394c [#263] Update SAP theme 2011-08-05 11:32:21 -07:00
Eric Davis d94f7f7f9b [#263] Remove old themes 2011-08-05 11:29:13 -07:00
Eric Davis 949d229629 [#263] Extract custom colors to color.css 2011-08-05 11:21:29 -07:00
Eric Davis ccad72ba85 [#263] Move the fugue images into the main images/ directory 2011-08-05 10:50:08 -07:00
Eric Davis 4b8f4c3b83 [#263] Allow setting the page header title 2011-08-05 10:45:48 -07:00
Eric Davis d63cb35e82 [#263] Add icons to the main menu 2011-08-05 10:41:29 -07:00
Eric Davis cfed74579d [#263] Cleaning up admin menus 2011-08-05 10:22:54 -07:00
Eric Davis 9bb8f80d7e [#263] Merging css
* Append main.css to the bottom of application.css
* Remove main.css
* Move print styles out to print.css
* Move the CSS reset to be loaded first
* Port some colors to color.css
2011-08-05 09:56:13 -07:00
Eric Davis b4804f4ce4 [#263] Merged redmine-reset.css into application.css 2011-08-05 09:28:52 -07:00
Eric Davis adffd044d7 [#263] Fix the missing line on the top menu 2011-08-05 09:05:52 -07:00
Eric Davis ffa2d5f319 [#263] Remove the tree of parent issues from the issue title 2011-08-05 09:01:03 -07:00
Eric Davis 156cdf316e [#263] Remove duplicated updated label 2011-08-05 08:56:28 -07:00
Eric Davis aed0a6d5c3 Merge branch 'stable' into unstable 2011-08-01 16:57:22 -07:00
Eric Davis 635923f90d [#263] Fix admin menu sidebar styling 2011-07-29 15:33:59 -07:00
Eric Davis 8f45e780ce [#263] Fix issue subject style 2011-07-29 15:33:43 -07:00
Eric Davis 124c98d4ba [#263] Fix for changes to the admin_menu 2011-07-29 15:06:09 -07:00
Eric Davis 8c183dda2e [#263] Fix XSS regression from merge 2011-07-29 15:04:22 -07:00
Eric Davis e7e4557009 [#263] Fix journal formatting 2011-07-29 15:04:03 -07:00
Eric Davis 5cedd5cdcb [#263] Don't output heads_for_wiki_formatter 2011-07-29 14:46:39 -07:00
Eric Davis cf40447356 Fix the thickbox loading image path 2011-07-29 14:43:33 -07:00
Eric Davis 61847d831a CSS cleanup for the sidebar 2011-07-29 14:43:33 -07:00
Eric Davis 6c9c85134a Fix the issue action bar CSS 2011-07-29 14:43:33 -07:00
Eric Davis 6435905132 Port issue show view 2011-07-29 14:43:33 -07:00
Eric Davis ce973429fe Move the Add link next to the Related issues label 2011-07-29 14:37:24 -07:00
Eric Davis cff91d8cf0 Port id selectors to the main issues list 2011-07-29 14:37:24 -07:00
Eric Davis 13f57032c1 Add the new issue button partial 2011-07-29 14:37:24 -07:00
Eric Davis 7485858da2 Cleanup styles in the issue filter section 2011-07-29 14:37:24 -07:00
Eric Davis 2dc0e100c3 Port the issue filter section on the issues list 2011-07-29 14:37:24 -07:00
Eric Davis 5949f8de91 Port issue history changes 2011-07-29 14:37:24 -07:00
Eric Davis ec21b4c075 Merge issue context menu changes 2011-07-29 14:32:53 -07:00
Eric Davis 84ef979c47 Add welcome text to the project list 2011-07-29 14:31:27 -07:00
Eric Davis 6d522a9acd Remove the list of versions from sidebar, will be moved to menu 2011-07-29 14:31:26 -07:00
Eric Davis 48675d63a5 Clean up footer 2011-07-29 14:31:26 -07:00
Eric Davis bfa57e5e6c Fix hardcoded image path 2011-07-29 14:31:26 -07:00
Eric Davis ac48b91864 Add images 2011-07-29 14:31:26 -07:00
Eric Davis d3392c6d0d Add JavaScript 2011-07-29 14:31:26 -07:00
Eric Davis a0c777ee79 Add the CSS, including resets 2011-07-29 14:31:26 -07:00
Eric Davis c23f73e9fe Port ApplicationHelper patches 2011-07-29 14:31:26 -07:00
Eric Davis 484ed29fa2 Port main layout 2011-07-29 14:29:23 -07:00
Eric Davis 1f57eb01b1 Merge HTML head section 2011-07-29 14:25:35 -07:00
Eric Davis 74cfd7b5ca Merge branch 'stable' into unstable 2011-07-29 13:54:27 -07:00
Eric Davis ddeb1a2a0f Merge branch 'stable' into unstable 2011-07-01 22:16:58 -07:00
Eric Davis 0f35c7d1c2 Fix test on 1.9.2 postgres.
Multiple records were found and postgres was returning them in a different
order than what the test assumed.
2011-06-03 14:30:48 -07:00
Eric Davis 3a0a7d93b1 Merge branch 'release-v2.0.0' into unstable
Merging during the release to make sure everything is passing in CI,
which isn't set up to test release branches.
2011-06-03 11:09:06 -07:00
Eric Davis f0987c8238 [#437] Move the encoding to the top of pdf.rb for Ruby 1.9 2011-05-30 15:11:08 -07:00
1404 changed files with 15814 additions and 13127 deletions

4
.gitignore vendored
View File

@ -4,6 +4,7 @@
/config/configuration.yml
/config/database.yml
/config/email.yml
/config/setup_load_paths.rb
/config/initializers/session_store.rb
/coverage
/db/*.db
@ -28,3 +29,6 @@ doc/app
/Gemfile.lock
/Gemfile.local
/.rvmrc*
/*.iml
/.idea
.rbx

59
.travis.yml Normal file
View File

@ -0,0 +1,59 @@
language: ruby
rvm:
- 1.8.7
- 1.9.2
- 1.9.3
- rbx-18mode
env:
- "TEST_SUITE=units RAILS_ENV=test DB=mysql BUNDLE_WITHOUT=rmagick:mysql2:postgres:sqlite"
- "TEST_SUITE=units RAILS_ENV=test DB=mysql2 BUNDLE_WITHOUT=rmagick:mysql:postgres:sqlite"
- "TEST_SUITE=units RAILS_ENV=test DB=postgres BUNDLE_WITHOUT=rmagick:mysql:mysql2:sqlite"
- "TEST_SUITE=units RAILS_ENV=test DB=sqlite BUNDLE_WITHOUT=rmagick:mysql:mysql2:postgres"
- "TEST_SUITE=functionals RAILS_ENV=test DB=mysql BUNDLE_WITHOUT=rmagick:mysql2:postgres:sqlite"
- "TEST_SUITE=functionals RAILS_ENV=test DB=mysql2 BUNDLE_WITHOUT=rmagick:mysql:postgres:sqlite"
- "TEST_SUITE=functionals RAILS_ENV=test DB=postgres BUNDLE_WITHOUT=rmagick:mysql:mysql2:sqlite"
- "TEST_SUITE=functionals RAILS_ENV=test DB=sqlite BUNDLE_WITHOUT=rmagick:mysql:mysql2:postgres"
- "TEST_SUITE=integration RAILS_ENV=test DB=mysql BUNDLE_WITHOUT=rmagick:mysql2:postgres:sqlite"
- "TEST_SUITE=integration RAILS_ENV=test DB=mysql2 BUNDLE_WITHOUT=rmagick:mysql:postgres:sqlite"
- "TEST_SUITE=integration RAILS_ENV=test DB=postgres BUNDLE_WITHOUT=rmagick:mysql:mysql2:sqlite"
- "TEST_SUITE=integration RAILS_ENV=test DB=sqlite BUNDLE_WITHOUT=rmagick:mysql:mysql2:postgres"
matrix:
exclude:
- rvm: 1.9.2
env: "TEST_SUITE=units RAILS_ENV=test DB=mysql BUNDLE_WITHOUT=rmagick:mysql2:postgres:sqlite"
- rvm: 1.9.2
env: "TEST_SUITE=functionals RAILS_ENV=test DB=mysql BUNDLE_WITHOUT=rmagick:mysql2:postgres:sqlite"
- rvm: 1.9.2
env: "TEST_SUITE=integration RAILS_ENV=test DB=mysql BUNDLE_WITHOUT=rmagick:mysql2:postgres:sqlite"
- rvm: 1.9.3
env: "TEST_SUITE=units RAILS_ENV=test DB=mysql BUNDLE_WITHOUT=rmagick:mysql2:postgres:sqlite"
- rvm: 1.9.3
env: "TEST_SUITE=functionals RAILS_ENV=test DB=mysql BUNDLE_WITHOUT=rmagick:mysql2:postgres:sqlite"
- rvm: 1.9.3
env: "TEST_SUITE=integration RAILS_ENV=test DB=mysql BUNDLE_WITHOUT=rmagick:mysql2:postgres:sqlite"
- rvm: rbx-18mode
env: "TEST_SUITE=units RAILS_ENV=test DB=mysql BUNDLE_WITHOUT=rmagick:mysql2:postgres:sqlite"
- rvm: rbx-18mode
env: "TEST_SUITE=functionals RAILS_ENV=test DB=mysql BUNDLE_WITHOUT=rmagick:mysql2:postgres:sqlite"
- rvm: rbx-18mode
env: "TEST_SUITE=integration RAILS_ENV=test DB=mysql BUNDLE_WITHOUT=rmagick:mysql2:postgres:sqlite"
allow_failures:
- rvm: rbx-18mode
before_install:
- "sudo apt-get update -qq"
- "sudo apt-get --no-install-recommends install bzr cvs git mercurial subversion"
before_script:
- "rvm rubygems 1.8.25" # Rubygems 2.0.x fails with Rails 2.3
- "rake ci:travis:prepare"
- "rm -rf tmp/test/darcs_repository" # Don't test Darcs on Travis. It breaks there :(
script: "bundle exec rake test:$TEST_SUITE"
branches:
only:
- unstable
- master
- stable
- /^stable-.*$/
- /^release-.*$/
notifications:
email: false
irc: "irc.freenode.org#chiliproject"

33
CONTRIBUTING.md Normal file
View File

@ -0,0 +1,33 @@
For the impatient: [report][cpo_new-issue], confirm, claim,
[fork][gh_chiliproject], [branch][cpo_contribute-code-branch],
[write][cpo_code-standards], [test][cpo_code-review], push.
The short version:
* Make sure the issue you are working on is reported and confirmed, add a note
to the issue to claim your intention to work on it.
* Fork [ChiliProject on GitHub][gh_chiliproject]
* Create a new branch from `master` with a descriptive name prefixed by the
issue ID (Example: `123-change_background_from_black_to_blue`).
* Make changes according to our [Code Standards][cpo_code-standards].
1. Be sure to include tests as necessary.
1. Make sure to not break existing tests.
1. Please try to make sure your code is going to pass a [Code
Review][cpo_code-review] prior to submitting the patch. If in doubt, just ask.
* Either upload your branch to GitHub and send a pull request to the
ChiliProject repository, or attach a patch to the issue on ChiliProject. If
you send a pull request on GitHub, remember to link to the pull request in the
issue you create on ChiliProject and to link to the issue on ChiliProject in
the pull request on GitHub.
* Make sure you watch the corresponding issue in case any discussion arises or
improvements are needed.
The long version is on the [Contribute Code][cpo_contribute-code] page.
[cpo_new-issue]: https://www.chiliproject.org/projects/chiliproject/issues/new
[cpo_contribute-code-branch]: https://www.chiliproject.org/projects/chiliproject/wiki/Contribute_Code#Branch
[cpo_contribute-code]: https://www.chiliproject.org/projects/chiliproject/wiki/Contribute_Code
[cpo_code-standards]: https://www.chiliproject.org/projects/chiliproject/wiki/Code_Standards
[cpo_code-review]: https://www.chiliproject.org/projects/chiliproject/wiki/Code_Review
[gh_chiliproject]: https://github.com/chiliproject/chiliproject

27
Gemfile
View File

@ -1,23 +1,32 @@
source :rubygems
# -*- coding: utf-8 -*-
source "https://rubygems.org"
gem "rails", "2.3.14"
gem "rails", "2.3.18"
gem "coderay", "~> 0.9.7"
gem "json", "~> 1.7.7"
gem "coderay", "~> 1.0.0"
gem "i18n", "~> 0.4.2"
gem "rubytree", "~> 0.5.2", :require => 'tree'
gem "rdoc", ">= 2.4.2"
gem "liquid", "~> 2.3.0"
gem "acts-as-taggable-on", "= 2.1.0"
gem 'gravatarify', '~> 3.0.0'
# Needed only on RUBY_VERSION = 1.8, ruby 1.9+ compatible interpreters should bring their csv
gem "fastercsv", "~> 1.5.0", :platforms => [:ruby_18, :jruby, :mingw_18]
gem "tzinfo", "~> 0.3.31" # Fixes #903. Not required for Rails >= 3.2
group :test do
gem 'shoulda', '~> 2.10.3'
# Shoulda doesn't work nice on 1.9.3 and seems to need test-unit explicitely…
gem 'test-unit', :platforms => [:mri_19]
gem 'edavis10-object_daddy', :require => 'object_daddy'
gem 'mocha'
gem 'capybara'
gem 'mocha', '0.12.1'
# capybara 2 drops ruby 1.8.7 compatibility
gem 'capybara', '< 2.0.0'
end
group :ldap do
gem "net-ldap", '~> 0.2.2'
gem "net-ldap", '~> 0.3.1'
end
group :openid do
@ -48,13 +57,13 @@ end
# orders of magnitude compared to their native counterparts. You have been
# warned.
platforms :mri, :mingw do
platforms :mri, :mingw, :rbx do
group :mysql2 do
gem "mysql2", "~> 0.2.7"
end
group :postgres do
gem "pg", "~> 0.9.0"
gem "pg"
# gem "postgres-pr"
end
end
@ -70,7 +79,7 @@ platforms :mri_18, :mingw_18 do
end
end
platforms :mri_19, :mingw_19 do
platforms :mri_19, :mingw_19, :rbx do
group :sqlite do
gem "sqlite3"
end

View File

@ -1,4 +1,4 @@
= ChiliProject
= ChiliProject {<img src="https://travis-ci.org/chiliproject/chiliproject.png?branch=master" />}[http://travis-ci.org/chiliproject/chiliproject]
ChiliProject is a web based project management system. It supports your team throughout the complete project life cycle, from setting up and discussing a project plan, over tracking issues and reporting work progress to collaboratively sharing knowledge.

View File

@ -8,3 +8,5 @@ require 'rake/testtask'
require 'rdoc/task'
require 'tasks/rails'
# Load rake tasks from plugins in chiliproject_plugins
Dir["#{RAILS_ROOT}/vendor/chiliproject_plugins/*/lib/tasks/**/*.rake"].sort.each { |ext| load ext }

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# 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 @@ class AccountController < ApplicationController
def lost_password
redirect_to(home_url) && return unless Setting.lost_password?
if params[:token]
@token = Token.find_by_action_and_value("recovery", params[:token])
@token = Token.find_by_action_and_value("recovery", params[:token].to_s)
redirect_to(home_url) && return unless @token and !@token.expired?
@user = @token.user
if request.post?
@ -53,7 +53,7 @@ class AccountController < ApplicationController
return
else
if request.post?
user = User.find_by_mail(params[:mail])
user = User.find_by_mail(params[:mail].to_s)
# user not found in db
(flash.now[:error] = l(:notice_account_unknown_email); return) unless user
# user uses an external authentification
@ -109,7 +109,7 @@ 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])
token = Token.find_by_action_and_value('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?

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@ -33,7 +33,7 @@ class ActivitiesController < ApplicationController
:with_subprojects => @with_subprojects,
:author => @author)
@activity.scope_select {|t| !params["show_#{t}"].nil?}
@activity.scope = (@author.nil? ? :default : :all) if @activity.scope.empty?
@activity.scope = (@author.nil? ? :default : :all) if @activity.scope.empty? unless params[:set_filter]
events = @activity.events(@date_from, @date_to)

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# 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,10 @@ class AdminController < ApplicationController
include SortHelper
menu_item :projects, :only => [:projects]
menu_item :plugins, :only => [:plugins]
menu_item :info, :only => [:info]
def index
@no_configuration_data = Redmine::DefaultData::Loader::no_data?
end
@ -73,7 +77,7 @@ class AdminController < ApplicationController
def info
@db_adapter_name = ActiveRecord::Base.connection.adapter_name
@checklist = [
[:text_default_administrator_account_changed, User.find(:first, :conditions => ["login=? and hashed_password=?", 'admin', User.hash_password('admin')]).nil?],
[:text_default_administrator_account_changed, !User.find_by_login("admin").try(:check_password?, "admin")],
[:text_file_repository_writable, File.writable?(Attachment.storage_path)],
[:text_plugin_assets_writable, File.writable?(Engines.public_directory)],
[:text_rmagick_available, Object.const_defined?(:Magick)]

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@ -31,18 +31,6 @@ class ApplicationController < ActionController::Base
cookies.delete(:autologin)
end
# Remove broken cookie after upgrade from 0.8.x (#4292)
# See https://rails.lighthouseapp.com/projects/8994/tickets/3360
# TODO: remove it when Rails is fixed
before_filter :delete_broken_cookies
def delete_broken_cookies
if cookies['_chiliproject_session'] && cookies['_chiliproject_session'] !~ /--/
cookies.delete '_chiliproject_session'
redirect_to home_path
return false
end
end
# FIXME: Remove this when all of Rack and Rails have learned how to
# properly use encodings
before_filter :params_filter
@ -64,7 +52,16 @@ class ApplicationController < ActionController::Base
before_filter :user_setup, :check_if_login_required, :set_localization
filter_parameter_logging :password
rescue_from ActionController::InvalidAuthenticityToken, :with => :invalid_authenticity_token
# FIXME: This doesn't work with Rails >= 3.0 anymore
# Possible workaround: https://github.com/rails/rails/issues/671#issuecomment-1780159
rescue_from ActionController::RoutingError, :with => proc{
# manually apply basic before_filters which aren't applied by default here
user_setup
check_if_login_required
set_localization
render_404
}
include Redmine::Search::Controller
include Redmine::MenuManager::MenuController
@ -75,8 +72,6 @@ class ApplicationController < ActionController::Base
end
def user_setup
# Check the settings cache for each request
Setting.check_cache
# Find the current user
User.current = find_current_user
end
@ -94,11 +89,11 @@ class ApplicationController < ActionController::Base
user
elsif params[:format] == 'atom' && params[:key] && accept_key_auth_actions.include?(params[:action])
# RSS key authentication does not start a session
User.find_by_rss_key(params[:key])
User.find_by_rss_key(params[:key].to_s)
elsif Setting.rest_api_enabled? && api_request?
if (key = api_key_from_request) && accept_key_auth_actions.include?(params[:action])
# Use API key
User.find_by_api_key(key)
User.find_by_api_key(key.to_s)
else
# HTTP Basic, either username/password or API key/random
authenticate_with_http_basic do |username, password|
@ -335,13 +330,6 @@ 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 }

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@ -13,7 +13,8 @@
#++
class AutoCompletesController < ApplicationController
before_filter :find_project
before_filter :find_project, :only => :issues
before_filter :require_admin, :only => :projects
def issues
@issues = []
@ -33,6 +34,38 @@ class AutoCompletesController < ApplicationController
render :layout => false
end
def users
if params[:remove_group_members].present?
@group = Group.find(params[:remove_group_members])
@removed_users = @group.users
end
if params[:remove_watchers].present? && params[:klass].present?
watcher_class = params[:klass].constantize
if watcher_class.included_modules.include?(Redmine::Acts::Watchable) # check class is a watching class
@object = watcher_class.find(params[:remove_watchers])
@removed_users = @object.watcher_users
end
end
@removed_users ||= []
if params[:include_groups]
user_finder = Principal
else
user_finder = User
end
@users = user_finder.active.like(params[:q]).find(:all, :limit => 100) - @removed_users
render :layout => false
end
def projects
@principal = Principal.find(params[:id])
@projects = Project.active.like(params[:q]).find(:all, :limit => 100) - @principal.projects
render :layout => false
end
private
def find_project

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@ -21,7 +21,10 @@ class CommentsController < ApplicationController
verify :method => :post, :only => :create, :render => {:nothing => true, :status => :method_not_allowed }
def create
@comment = Comment.new(params[:comment])
raise Unauthorized unless @news.commentable?
@comment = Comment.new
@comment.safe_attributes = params[:comment]
@comment.author = User.current
if @news.comments << @comment
flash[:notice] = l(:label_comment_added)

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@ -43,20 +43,34 @@ class DocumentsController < ApplicationController
end
def new
@document = @project.documents.build(params[:document])
if request.post? and @document.save
attachments = Attachment.attach_files(@document, params[:attachments])
render_attachment_warning_if_needed(@document)
flash[:notice] = l(:notice_successful_create)
redirect_to :action => 'index', :project_id => @project
@document = @project.documents.build
@document.safe_attributes = params[:document]
if request.post?
if User.current.allowed_to?(:add_document_watchers, @project) && params[:document]['watcher_user_ids'].present?
@document.watcher_user_ids = params[:document]['watcher_user_ids']
end
if @document.save
attachments = Attachment.attach_files(@document, params[:attachments])
render_attachment_warning_if_needed(@document)
flash[:notice] = l(:notice_successful_create)
redirect_to :action => 'index', :project_id => @project
end
end
end
def edit
@categories = DocumentCategory.all
if request.post? and @document.update_attributes(params[:document])
flash[:notice] = l(:notice_successful_update)
redirect_to :action => 'show', :id => @document
if request.post?
if User.current.allowed_to?(:add_document_watchers, @project) && params[:document]['watcher_user_ids'].present?
@document.watcher_user_ids = params[:document]['watcher_user_ids']
end
if @document.update_attributes(params[:document])
flash[:notice] = l(:notice_successful_update)
redirect_to :action => 'show', :id => @document
end
end
end
@ -69,7 +83,12 @@ class DocumentsController < ApplicationController
attachments = Attachment.attach_files(@document, params[:attachments])
render_attachment_warning_if_needed(@document)
Mailer.deliver_attachments_added(attachments[:files]) if attachments.present? && attachments[:files].present? && Setting.notified_events.include?('document_added')
if attachments.present? && attachments[:files].present? && Setting.notified_events.include?('document_added')
# TODO: refactor
@document.recipients.each do |recipient|
Mailer.deliver_attachments_added(attachments[:files], recipient)
end
end
redirect_to :action => 'show', :id => @document
end

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@ -42,7 +42,11 @@ class FilesController < ApplicationController
render_attachment_warning_if_needed(container)
if !attachments.empty? && !attachments[:files].blank? && Setting.notified_events.include?('file_added')
Mailer.deliver_attachments_added(attachments[:files])
# TODO: refactor
recipients = attachments[:files].first.container.project.notified_users.select {|user| user.allowed_to?(:view_files, container.project)}.collect {|u| u.mail}
recipients.each do |recipient|
Mailer.deliver_attachments_added(attachments[:files], recipient)
end
end
redirect_to project_files_path(@project)
end

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@ -126,16 +126,19 @@ class GroupsController < ApplicationController
end
end
def autocomplete_for_user
@group = Group.find(params[:id])
@users = User.active.not_in_group(@group).like(params[:q]).all(:limit => 100)
render :layout => false
end
def edit_membership
@group = Group.find(params[:id])
@membership = Member.edit_membership(params[:membership_id], params[:membership], @group)
@membership.save if request.post?
if params[:project_ids] # Multiple memberships, one per project
params[:project_ids].each do |project_id|
@membership = Member.edit_membership(params[:membership_id], (params[:membership]|| {}).merge(:project_id => project_id), @group)
@membership.save if request.post?
end
else # Single membership
@membership = Member.edit_membership(params[:membership_id], params[:membership], @group)
@membership.save if request.post?
end
respond_to do |format|
if @membership.valid?
format.html { redirect_to :controller => 'groups', :action => 'edit', :id => @group, :tab => 'memberships' }

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@ -23,7 +23,8 @@ class IssueCategoriesController < ApplicationController
verify :method => :post, :only => :destroy
def new
@category = @project.issue_categories.build(params[:category])
@category = @project.issue_categories.build
@category.safe_attributes = params[:category]
if request.post?
if @category.save
respond_to do |format|
@ -50,7 +51,8 @@ class IssueCategoriesController < ApplicationController
end
def edit
if request.post? and @category.update_attributes(params[:category])
@category.safe_attributes = params[:category]
if request.post? and @category.save
flash[:notice] = l(:notice_successful_update)
redirect_to :controller => 'projects', :action => 'settings', :tab => 'categories', :id => @project
end

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@ -12,6 +12,8 @@
# See doc/COPYRIGHT.rdoc for more details.
#++
require 'diff'
class JournalsController < ApplicationController
before_filter :find_journal, :only => [:edit, :diff]
before_filter :find_issue, :only => [:new]
@ -84,6 +86,22 @@ class JournalsController < ApplicationController
end
end
def diff
if valid_field?(params[:field])
from = @journal.changes[params[:field]][0]
to = @journal.changes[params[:field]][1]
@diff = Redmine::Helpers::Diff.new(to, from)
@issue = @journal.journaled
respond_to do |format|
format.html { }
format.js { render :layout => false }
end
else
render_404
end
end
private
def find_journal
@ -100,4 +118,9 @@ class JournalsController < ApplicationController
rescue ActiveRecord::RecordNotFound
render_404
end
# Is this a valid field for diff'ing?
def valid_field?(field)
field.to_s.strip == "description"
end
end

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@ -14,6 +14,7 @@
class LdapAuthSourcesController < AuthSourcesController
menu_item :ldap_authentication, :only => [:index]
protected
def auth_source_class

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@ -21,17 +21,19 @@ class MembersController < ApplicationController
def new
members = []
if params[:member] && request.post?
attrs = params[:member].dup
if (user_ids = attrs.delete(:user_ids))
if params[:member]
if params[:member][:user_ids]
attrs = params[:member].dup
user_ids = attrs.delete(:user_ids)
user_ids.each do |user_id|
members << Member.new(attrs.merge(:user_id => user_id))
members << Member.new(:role_ids => params[:member][:role_ids], :user_id => user_id)
end
else
members << Member.new(attrs)
members << Member.new(:role_ids => params[:member][:role_ids], :user_id => params[:member][:user_id])
end
@project.members << members
end
respond_to do |format|
if members.present? && members.all? {|m| m.valid? }

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@ -48,26 +48,26 @@ class MessagesController < ApplicationController
# Create a new topic
def new
@message = Message.new(params[:message])
@message = Message.new
@message.author = User.current
@message.board = @board
if params[:message] && User.current.allowed_to?(:edit_messages, @project)
@message.locked = params[:message]['locked']
@message.sticky = params[:message]['sticky']
end
if request.post? && @message.save
call_hook(:controller_messages_new_after_save, { :params => params, :message => @message})
attachments = Attachment.attach_files(@message, params[:attachments])
render_attachment_warning_if_needed(@message)
redirect_to :action => 'show', :id => @message
@message.safe_attributes = params[:message]
if request.post?
if @message.save
call_hook(:controller_messages_new_after_save, { :params => params, :message => @message})
attachments = Attachment.attach_files(@message, params[:attachments])
render_attachment_warning_if_needed(@message)
redirect_to :action => 'show', :id => @message
end
end
end
# Reply to a topic
def reply
@reply = Message.new(params[:reply])
@reply = Message.new
@reply.author = User.current
@reply.board = @board
@reply.safe_attributes = params[:reply]
@topic.children << @reply
if !@reply.new_record?
call_hook(:controller_messages_reply_after_save, { :params => params, :message => @reply})
@ -80,11 +80,8 @@ class MessagesController < ApplicationController
# Edit a message
def edit
(render_403; return false) unless @message.editable_by?(User.current)
if params[:message]
@message.locked = params[:message]['locked']
@message.sticky = params[:message]['sticky']
end
if request.post? && @message.update_attributes(params[:message])
@message.safe_attributes = params[:message]
if request.post? && @message.save
attachments = Attachment.attach_files(@message, params[:attachments])
render_attachment_warning_if_needed(@message)
flash[:notice] = l(:notice_successful_update)
@ -110,7 +107,7 @@ class MessagesController < ApplicationController
content = "#{ll(Setting.default_language, :text_user_wrote, user)}\\n> "
content << text.to_s.strip.gsub(%r{<pre>((.|\s)*?)</pre>}m, '[...]').gsub('"', '\"').gsub(/(\r?\n|\r\n?)/, "\\n> ") + "\\n\\n"
render(:update) { |page|
page << "$('reply_subject').value = \"#{subject}\";"
page << "$('message_subject').value = \"#{subject}\";"
page.<< "$('message_content').value = \"#{content}\";"
page.show 'reply'
page << "Form.Element.focus('message_content');"

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@ -59,14 +59,12 @@ class NewsController < ApplicationController
def create
@news = News.new(:project => @project, :author => User.current)
if request.post?
@news.attributes = params[:news]
if @news.save
flash[:notice] = l(:notice_successful_create)
redirect_to :controller => 'news', :action => 'index', :project_id => @project
else
render :action => 'new'
end
@news.safe_attributes = params[:news]
if @news.save
flash[:notice] = l(:notice_successful_create)
redirect_to :controller => 'news', :action => 'index', :project_id => @project
else
render :action => 'new'
end
end
@ -74,7 +72,8 @@ class NewsController < ApplicationController
end
def update
if request.put? and @news.update_attributes(params[:news])
@news.safe_attributes = params[:news]
if @news.save
flash[:notice] = l(:notice_successful_update)
redirect_to :action => 'show', :id => @news
else

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@ -59,7 +59,8 @@ class ProjectsController < ApplicationController
def new
@issue_custom_fields = IssueCustomField.find(:all, :order => "#{CustomField.table_name}.position")
@trackers = Tracker.all
@project = Project.new(params[:project])
@project = Project.new
@project.safe_attributes = params[:project]
end
verify :method => :post, :only => :create, :render => {:nothing => true, :status => :method_not_allowed }

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@ -20,6 +20,7 @@ class QueriesController < ApplicationController
def new
@query = Query.new(params[:query])
@query.project = params[:query_is_for_all] ? nil : @project
@query.display_subprojects = params[:display_subprojects] if params[:display_subprojects].present?
@query.user = User.current
@query.is_public = false unless User.current.allowed_to?(:manage_public_queries, @project) || User.current.admin?
@ -42,6 +43,7 @@ class QueriesController < ApplicationController
@query.add_filters(params[:fields] || params[:f], params[:operators] || params[:op], params[:values] || params[:v]) if params[:fields] || params[:f]
@query.attributes = params[:query]
@query.project = nil if params[:query_is_for_all]
@query.display_subprojects = params[:display_subprojects] if params[:display_subprojects].present?
@query.is_public = false unless User.current.allowed_to?(:manage_public_queries, @project) || User.current.admin?
@query.group_by ||= params[:group_by]
@query.column_names = params[:c] if params[:c]

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@ -72,8 +72,7 @@ class TimeEntryReportsController < ApplicationController
@periods = []
# Date#at_beginning_of_ not supported in Rails 1.2.x
date_from = @from.to_time
# 100 columns max
while date_from <= @to.to_time && @periods.length < 100
while date_from <= @to.to_time
case @columns
when 'year'
@periods << "#{date_from.year}"
@ -161,6 +160,9 @@ class TimeEntryReportsController < ApplicationController
@available_criterias = { 'project' => {:sql => "#{TimeEntry.table_name}.project_id",
:klass => Project,
:label => :label_project},
'status' => {:sql => "#{Issue.table_name}.status_id",
:klass => IssueStatus,
:label => :field_status},
'version' => {:sql => "#{Issue.table_name}.fixed_version_id",
:klass => Version,
:label => :label_version},

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@ -97,7 +97,7 @@ class TimelogController < ApplicationController
def new
@time_entry ||= TimeEntry.new(:project => @project, :issue => @issue, :user => User.current, :spent_on => User.current.today)
@time_entry.attributes = params[:time_entry]
@time_entry.safe_attributes = params[:time_entry]
call_hook(:controller_timelog_edit_before_save, { :params => params, :time_entry => @time_entry })
render :action => 'edit'
@ -106,7 +106,7 @@ class TimelogController < ApplicationController
verify :method => :post, :only => :create, :render => {:nothing => true, :status => :method_not_allowed }
def create
@time_entry ||= TimeEntry.new(:project => @project, :issue => @issue, :user => User.current, :spent_on => User.current.today)
@time_entry.attributes = params[:time_entry]
@time_entry.safe_attributes = params[:time_entry]
call_hook(:controller_timelog_edit_before_save, { :params => params, :time_entry => @time_entry })
@ -127,14 +127,14 @@ class TimelogController < ApplicationController
end
def edit
@time_entry.attributes = params[:time_entry]
@time_entry.safe_attributes = params[:time_entry]
call_hook(:controller_timelog_edit_before_save, { :params => params, :time_entry => @time_entry })
end
verify :method => :put, :only => :update, :render => {:nothing => true, :status => :method_not_allowed }
def update
@time_entry.attributes = params[:time_entry]
@time_entry.safe_attributes = params[:time_entry]
call_hook(:controller_timelog_edit_before_save, { :params => params, :time_entry => @time_entry })

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@ -197,8 +197,16 @@ class UsersController < ApplicationController
def edit_membership
@membership = Member.edit_membership(params[:membership_id], params[:membership], @user)
@membership.save if request.post?
if params[:project_ids] # Multiple memberships, one per project
params[:project_ids].each do |project_id|
@membership = Member.edit_membership(params[:membership_id], (params[:membership] || {}).merge(:project_id => project_id), @user)
@membership.save if request.post?
end
else # Single membership
@membership = Member.edit_membership(params[:membership_id], params[:membership], @user)
@membership.save if request.post?
end
respond_to do |format|
if @membership.valid?
format.html { redirect_to :controller => 'users', :action => 'edit', :id => @user, :tab => 'memberships' }

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@ -56,7 +56,7 @@ class VersionsController < ApplicationController
if params[:version]
attributes = params[:version].dup
attributes.delete('sharing') unless attributes.nil? || @version.allowed_sharings.include?(attributes['sharing'])
@version.attributes = attributes
@version.safe_attributes = attributes
end
end
@ -66,7 +66,7 @@ class VersionsController < ApplicationController
if params[:version]
attributes = params[:version].dup
attributes.delete('sharing') unless attributes.nil? || @version.allowed_sharings.include?(attributes['sharing'])
@version.attributes = attributes
@version.safe_attributes = attributes
end
if request.post?
@ -101,7 +101,8 @@ class VersionsController < ApplicationController
if request.put? && params[:version]
attributes = params[:version].dup
attributes.delete('sharing') unless @version.allowed_sharings.include?(attributes['sharing'])
if @version.update_attributes(attributes)
@version.safe_attributes = attributes
if @version.save
flash[:notice] = l(:notice_successful_update)
redirect_to :controller => 'projects', :action => 'settings', :tab => 'versions', :id => @project
else

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# 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 @@ 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 :authorize_access_to_object, :only => [:new, :destroy]
verify :method => :post,
:only => [ :watch, :unwatch ],
@ -34,9 +35,12 @@ class WatchersController < ApplicationController
end
def new
@watcher = Watcher.new(params[:watcher])
@watcher.watchable = @watched
@watcher.save if request.post?
params[:user_ids].each do |user_id|
@watcher = Watcher.new((params[:watcher] || {}).merge({:user_id => user_id}))
@watcher.watchable = @watched
@watcher.save if request.post?
end if params[:user_ids].present?
respond_to do |format|
format.html { redirect_to :back }
format.js do
@ -50,7 +54,7 @@ class WatchersController < ApplicationController
end
def destroy
@watched.set_watcher(User.find(params[:user_id]), false) if request.post?
@watched.set_watcher(Principal.find(params[:user_id]), false) if request.post?
respond_to do |format|
format.html { redirect_to :back }
format.js do
@ -94,4 +98,24 @@ private
rescue ::ActionController::RedirectBackError
render :text => (watching ? 'Watcher added.' : 'Watcher removed.'), :layout => true
end
def authorize_access_to_object
permission = ''
case params[:action]
when 'new'
permission << 'add_'
when 'destroy'
permission << 'delete_'
end
# Ends up like: :delete_wiki_page_watchers
permission << "#{@watched.class.name.underscore}_watchers"
if User.current.allowed_to?(permission.to_sym, @project)
return true
else
deny_access
end
end
end

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@ -19,7 +19,7 @@ class WikisController < ApplicationController
# Create or update a project's wiki
def edit
@wiki = @project.wiki || Wiki.new(:project => @project)
@wiki.attributes = params[:wiki]
@wiki.safe_attributes = params[:wiki]
@wiki.save if request.post?
render(:update) {|page| page.replace_html "tab-content-wiki", :partial => 'projects/settings/wiki'}
end

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

37
app/drops/base_drop.rb Normal file
View File

@ -0,0 +1,37 @@
#-- encoding: UTF-8
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class BaseDrop < Liquid::Drop
def initialize(object)
@object = object unless object.respond_to?(:visible?) && !object.visible?
end
# Defines a Liquid method on the drop that is allowed to call the
# Ruby method directly. Best used for attributes.
#
# Based on Module#liquid_methods
def self.allowed_methods(*allowed_methods)
class_eval do
allowed_methods.each do |sym|
define_method sym do
if @object.respond_to?(:public_send)
@object.public_send(sym) rescue nil
else
@object.send(sym) rescue nil
end
end
end
end
end
end

79
app/drops/issue_drop.rb Normal file
View File

@ -0,0 +1,79 @@
#-- encoding: UTF-8
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class IssueDrop < BaseDrop
allowed_methods :id
allowed_methods :subject
allowed_methods :description
allowed_methods :project
allowed_methods :tracker
allowed_methods :status
allowed_methods :due_date
allowed_methods :category
allowed_methods :assigned_to
allowed_methods :priority
allowed_methods :fixed_version
allowed_methods :author
allowed_methods :created_on
allowed_methods :updated_on
allowed_methods :start_date
allowed_methods :done_ratio
allowed_methods :estimated_hours
allowed_methods :parent
def custom_field(name)
return '' unless name.present?
custom_field = IssueCustomField.find_by_name(name.strip)
return '' unless custom_field.present?
custom_value = @object.custom_value_for(custom_field)
if custom_value.present?
return custom_value.value
else
return ''
end
end
# TODO: both required, method_missing for Ruby and before_method for Liquid
# Allows accessing custom fields by their name:
#
# - issue.the_name_of_player => CustomField(:name => "The name Of Player")
#
def before_method(method_sym)
if custom_field_with_matching_name = has_custom_field_with_matching_name?(method_sym)
custom_field(custom_field_with_matching_name.name)
else
super
end
end
# Allows accessing custom fields by their name:
#
# - issue.the_name_of_player => CustomField(:name => "The name Of Player")
#
def method_missing(method_sym, *arguments, &block)
if custom_field_with_matching_name = has_custom_field_with_matching_name?(method_sym)
custom_field(custom_field_with_matching_name.name)
else
super
end
end
private
def has_custom_field_with_matching_name?(method_sym)
custom_field_with_matching_name = @object.available_custom_fields.detect {|custom_field|
custom_field.name.downcase.underscore.gsub(' ','_') == method_sym.to_s
}
end
end

View File

@ -0,0 +1,17 @@
#-- encoding: UTF-8
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class IssueStatusDrop < BaseDrop
allowed_methods :name
end

View File

@ -0,0 +1,17 @@
#-- encoding: UTF-8
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class PrincipalDrop < BaseDrop
allowed_methods :name
end

17
app/drops/project_drop.rb Normal file
View File

@ -0,0 +1,17 @@
#-- encoding: UTF-8
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class ProjectDrop < BaseDrop
allowed_methods :name, :identifier
end

17
app/drops/tracker_drop.rb Normal file
View File

@ -0,0 +1,17 @@
#-- encoding: UTF-8
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class TrackerDrop < BaseDrop
allowed_methods :name
end

View File

@ -0,0 +1,17 @@
#-- encoding: UTF-8
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class WikiPageDrop < BaseDrop
allowed_methods :title
end

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@ -16,9 +16,8 @@ require 'forwardable'
require 'cgi'
module ApplicationHelper
include Redmine::WikiFormatting::Macros::Definitions
include Redmine::I18n
include GravatarHelper::PublicMethods
include Gravatarify::Helper
extend Forwardable
def_delegators :wiki_helper, :wikitoolbar_for, :heads_for_wiki_formatter
@ -224,17 +223,15 @@ module ApplicationHelper
end
# Renders the project quick-jump box
def render_project_jump_box
projects = User.current.memberships.collect(&:project).compact.uniq
def render_project_jump_box(projects = [], html_options = {})
projects ||= User.current.memberships.collect(&:project).compact.uniq
if projects.any?
s = '<select onchange="if (this.value != \'\') { window.location = this.value; }">' +
"<option value=''>#{ l(:label_jump_to_a_project) }</option>" +
'<option value="" disabled="disabled">---</option>'
s << project_tree_options_for_select(projects, :selected => @project) do |p|
{ :value => url_for(:controller => 'projects', :action => 'show', :id => p, :jump => current_menu_item) }
end
s << '</select>'
s
# option_tags = content_tag :option, l(:label_jump_to_a_project), :value => ""
option_tags = (content_tag :option, "", :value => "" )
option_tags << project_tree_options_for_select(projects, :selected => @project) do |p|
{ :value => url_for(:controller => 'projects', :action => 'show', :id => p, :jump => current_menu_item) }
end
select_tag "", option_tags, html_options.merge({ :onchange => "if (this.value != \'\') { window.location = this.value; }" })
end
end
@ -288,7 +285,15 @@ 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"
s << "<label style='display:block;'>#{ check_box_tag name, principal.id, false } #{h principal}</label>\n"
end
s
end
def projects_check_box_tags(name, projects)
s = ''
projects.each do |project|
s << "<label>#{ check_box_tag name, project.id, false } #{h project}</label>\n"
end
s
end
@ -389,7 +394,9 @@ module ApplicationHelper
end
def page_header_title
if @project.nil? || @project.new_record?
if @page_header_title.present?
h(@page_header_title)
elsif @project.nil? || @project.new_record?
h(Setting.app_title)
else
b = []
@ -429,8 +436,9 @@ module ApplicationHelper
css << 'theme-' + theme.name
end
css << 'controller-' + params[:controller]
css << 'action-' + params[:action]
css << 'project-' + @project.id.to_s if @project.present?
css << 'controller-' + params[:controller] if params[:controller]
css << 'action-' + params[:action] if params[:action]
css.join(' ')
end
@ -447,23 +455,55 @@ module ApplicationHelper
case args.size
when 1
obj = options[:object]
text = args.shift
input_text = args.shift
when 2
obj = args.shift
attr = args.shift
text = obj.send(attr).to_s
input_text = obj.send(attr).to_s
else
raise ArgumentError, 'invalid arguments to textilizable'
end
return '' if text.blank?
return '' if input_text.blank?
project = options[:project] || @project || (obj && obj.respond_to?(:project) ? obj.project : nil)
only_path = options.delete(:only_path) == false ? false : true
text = Redmine::WikiFormatting.to_html(Setting.text_formatting, text, :object => obj, :attribute => attr) { |macro, args| exec_macro(macro, obj, args) }
begin
text = ChiliProject::Liquid::Legacy.run_macros(input_text)
liquid_template = ChiliProject::Liquid::Template.parse(text)
liquid_variables = get_view_instance_variables_for_liquid
liquid_variables.merge!({'current_user' => User.current})
liquid_variables.merge!({'toc' => '{{toc}}'}) # Pass toc through to replace later
liquid_variables.merge!(ChiliProject::Liquid::Variables.all)
# Pass :view in a register so this view (with helpers) can be used inside of a tag
text = liquid_template.render(liquid_variables, :registers => {:view => self, :object => obj, :attribute => attr})
# Add Liquid errors to the log
if Rails.logger && Rails.logger.debug?
msg = ""
liquid_template.errors.each do |exception|
msg << "[Liquid Error] #{exception.message}\n:\n#{exception.backtrace.join("\n")}"
msg << "\n\n"
end
Rails.logger.debug msg
end
rescue Liquid::SyntaxError => exception
msg = "[Liquid Syntax Error] #{exception.message}"
if Rails.logger && Rails.logger.debug?
log_msg = "#{msg}\n"
log_msg << exception.backtrace.collect{ |str| " #{str}" }.join("\n")
log_msg << "\n\n"
Rails.logger.debug log_msg
end
# Skip Liquid if there is a syntax error
text = content_tag(:div, msg, :class => "flash error")
text << h(input_text)
end
@parsed_headings = []
text = parse_non_pre_blocks(text) do |text|
[:parse_inline_attachments, :parse_wiki_links, :parse_redmine_links, :parse_headings].each do |method_name|
[:parse_inline_attachments, :parse_wiki_links, :parse_redmine_links, :parse_headings, :parse_relative_urls].each do |method_name|
send method_name, text, project, obj, attr, only_path, options
end
end
@ -504,6 +544,41 @@ module ApplicationHelper
parsed
end
RELATIVE_LINK_RE = %r{
<a
(?:
(\shref=
(?: # the href and link
(?:'(\/[^>]+?)')|
(?:"(\/[^>]+?)")
)
)|
[^>]
)*
>
[^<]*?<\/a> # content and closing link tag.
}x unless const_defined?(:RELATIVE_LINK_RE)
def parse_relative_urls(text, project, obj, attr, only_path, options)
return if only_path
text.gsub!(RELATIVE_LINK_RE) do |m|
href, relative_url = $1, $2 || $3
next m unless href.present?
if defined?(request) && request.present?
# we have a request!
protocol, host_with_port = request.protocol, request.host_with_port
elsif @controller
# use the same methods as url_for in the Mailer
url_opts = @controller.class.default_url_options
next m unless url_opts && url_opts[:protocol] && url_opts[:host]
protocol, host_with_port = "#{url_opts[:protocol]}://", url_opts[:host]
else
next m
end
m.sub href, " href=\"#{protocol}#{host_with_port}#{relative_url}\""
end
end
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))
@ -712,7 +787,7 @@ module ApplicationHelper
end
end
TOC_RE = /<p>\{\{([<>]?)toc\}\}<\/p>/i unless const_defined?(:TOC_RE)
TOC_RE = /<p>\{%\s*toc(_right|_left)?\s*%\}<\/p>/i unless const_defined?(:TOC_RE)
# Renders the TOC with given headings
def replace_toc(text, headings)
@ -720,10 +795,14 @@ module ApplicationHelper
if headings.empty?
''
else
div_class = 'toc'
div_class << ' right' if $1 == '>'
div_class << ' left' if $1 == '<'
out = "<ul class=\"#{div_class}\"><li>"
toc_class = 'toc'
toc_class << ' right' if $1 == '_right'
toc_class << ' left' if $1 == '_left'
out = "<fieldset class=\"header_collapsible collapsible #{toc_class}\">"
out << "<legend onclick=\"toggleFieldset(this);\"><span>#{l(:label_toc)}</span></legend>"
out << "<div>"
out << "<ul class=\"toc\"><li>"
root = headings.map(&:first).min
current = root
started = false
@ -741,6 +820,7 @@ module ApplicationHelper
end
out << '</li></ul>' * (current - root)
out << '</li></ul>'
out << '</div></fieldset>'
end
end
end
@ -772,7 +852,7 @@ module ApplicationHelper
def back_url_hidden_field_tag
back_url = params[:back_url] || request.env['HTTP_REFERER']
back_url = CGI.unescape(back_url.to_s)
hidden_field_tag('back_url', CGI.escape(back_url)) unless back_url.blank?
hidden_field_tag('back_url', CGI.escape(back_url), :id => nil) unless back_url.blank?
end
def check_all_links(form_name)
@ -788,12 +868,10 @@ module ApplicationHelper
pcts << (100 - pcts[1] - pcts[0])
width = options[:width] || '100px;'
legend = options[:legend] || ''
content_tag('table',
content_tag('tr',
(pcts[0] > 0 ? content_tag('td', '', :style => "width: #{pcts[0]}%;", :class => 'closed') : '') +
(pcts[1] > 0 ? content_tag('td', '', :style => "width: #{pcts[1]}%;", :class => 'done') : '') +
(pcts[2] > 0 ? content_tag('td', '', :style => "width: #{pcts[2]}%;", :class => 'todo') : '')
), :class => 'progress', :style => "width: #{width};") +
content_tag('div',
content_tag('div', '', :style => "width: #{pcts[0]}%;", :class => 'closed ui-progressbar-value ui-widget-header ui-corner-left') +
content_tag('div', '', :style => "width: #{pcts[1]}%;", :class => 'done ui-progressbar-value ui-widget-header'),
:class => 'progress ui-progressbar ui-widget ui-widget-content ui-corner-all', :style => "width: #{width};") +
content_tag('p', legend, :class => 'pourcent')
end
@ -806,7 +884,7 @@ module ApplicationHelper
def context_menu(url)
unless @context_menu_included
content_for :header_tags do
javascript_include_tag('context_menu') +
javascript_include_tag('context_menu.jquery') +
stylesheet_link_tag('context_menu')
end
if l(:direction) == 'rtl'
@ -816,7 +894,7 @@ module ApplicationHelper
end
@context_menu_included = true
end
javascript_tag "new ContextMenu('#{ url_for(url) }')"
javascript_tag "jQuery(document).ContextMenu('#{ url_for(url) }')"
end
def context_menu_link(name, url, options={})
@ -836,33 +914,25 @@ module ApplicationHelper
end
def calendar_for(field_id)
include_calendar_headers_tags
image_tag("calendar.png", {:id => "#{field_id}_trigger",:class => "calendar-trigger"}) +
javascript_tag("Calendar.setup({inputField : '#{field_id}', ifFormat : '%Y-%m-%d', button : '#{field_id}_trigger' });")
javascript_tag("jQuery('##{field_id}').datepicker(datepickerSettings)")
end
def include_calendar_headers_tags
unless @calendar_headers_tags_included
@calendar_headers_tags_included = true
content_for :header_tags do
start_of_week = case Setting.start_of_week.to_i
when 1
'Calendar._FD = 1;' # Monday
when 7
'Calendar._FD = 0;' # Sunday
when 6
'Calendar._FD = 6;' # Saturday
else
'' # use language
end
javascript_include_tag('calendar/calendar') +
javascript_include_tag("calendar/lang/calendar-#{current_language.to_s.downcase}.js") +
javascript_tag(start_of_week) +
javascript_include_tag('calendar/calendar-setup') +
stylesheet_link_tag('calendar')
end
def jquery_datepicker_settings
start_of_week = Setting.start_of_week.to_s
start_of_week_string = start_of_week.present? ? "firstDay: '#{start_of_week}', " : ''
script = javascript_tag("var datepickerSettings = {" +
start_of_week_string +
"showOn: 'both', " +
"buttonImage: '" + path_to_image('/images/calendar.png') + "', " +
"buttonImageOnly: true, " +
"showButtonPanel: true, " +
"dateFormat: 'yy-mm-dd' " +
"}")
unless current_language == :en
jquery_locale = l("jquery.ui", :default => current_language.to_s)
script << javascript_include_tag("libs/ui/i18n/jquery.ui.datepicker-#{jquery_locale}.js")
end
script
end
def content_for(name, content = nil, &block)
@ -875,10 +945,29 @@ module ApplicationHelper
(@has_content && @has_content[name]) || false
end
# Returns the gravatar image tag for the given email
# +email+ is a string with an email address
def gravatar(email, options={})
gravatarify_options = {}
gravatarify_options[:secure] = options.delete :ssl
[:default, :size, :rating, :filetype].each {|key| gravatarify_options[key] = options.delete key}
# Default size is 50x50 px
gravatarify_options[:size] ||= 50
options[:class] ||= 'gravatar'
gravatarify_options[:html] = options
gravatar_tag email, gravatarify_options
end
# Returns the avatar image tag for the given +user+ if avatars are enabled
# +user+ can be a User or a string that will be scanned for an email address (eg. 'joe <joe@foo.bar>')
def avatar(user, options = { })
if Setting.gravatar_enabled?
if user.is_a?(Group)
size = options[:size] || 50
size = "#{size}x#{size}" # image_tag uses WxH
options[:class] ||= 'gravatar'
return image_tag("group.png", options.merge(:size => size))
end
options.merge!({:ssl => (defined?(request) && request.ssl?), :default => Setting.gravatar_default})
email = nil
if user.respond_to?(:mail)
@ -898,6 +987,7 @@ module ApplicationHelper
unless User.current.pref.warn_on_leaving_unsaved == '0'
tags << "\n" + javascript_tag("Event.observe(window, 'load', function(){ new WarnLeavingUnsaved('#{escape_javascript( l(:text_warn_on_leaving_unsaved) )}'); });")
end
tags << jquery_datepicker_settings
tags
end
@ -935,6 +1025,72 @@ module ApplicationHelper
end
end
# Expands the current menu item using JavaScript based on the params
def expand_current_menu
current_menu_class =
case
when params[:controller] == "timelog"
"reports"
when params[:controller] == 'projects' && params[:action] == 'changelog'
"reports"
when params[:controller] == 'issues' && ['calendar','gantt'].include?(params[:action])
"reports"
when params[:controller] == 'projects' && params[:action] == 'roadmap'
'roadmap'
when params[:controller] == 'versions' && params[:action] == 'show'
'roadmap'
when params[:controller] == 'projects' && params[:action] == 'settings'
'settings'
when params[:controller] == 'contracts' || params[:controller] == 'deliverables'
'contracts'
else
params[:controller]
end
javascript_tag("jQuery.menu_expand({ menuItem: '.#{current_menu_class}' });")
end
# Menu items for the main top menu
def main_top_menu_items
split_top_menu_into_main_or_more_menus[:main]
end
# Menu items for the more top menu
def more_top_menu_items
split_top_menu_into_main_or_more_menus[:more]
end
def help_menu_item
split_top_menu_into_main_or_more_menus[:help]
end
# Split the :top_menu into separate :main and :more items
def split_top_menu_into_main_or_more_menus
unless @top_menu_split
items_for_main_level = []
items_for_more_level = []
help_menu = nil
menu_items_for(:top_menu) do |item|
if item.name == :home || item.name == :my_page
items_for_main_level << item
elsif item.name == :help
help_menu = item
elsif item.name == :projects
# Remove, present in layout
else
items_for_more_level << item
end
end
@top_menu_split = {
:main => items_for_main_level,
:more => items_for_more_level,
:help => help_menu
}
end
@top_menu_split
end
private
def wiki_helper
@ -946,4 +1102,20 @@ module ApplicationHelper
def link_to_content_update(text, url_params = {}, html_options = {})
link_to(text, url_params, html_options)
end
def get_view_instance_variables_for_liquid
internal_variables = %w{
@output_buffer @cookies @helpers @real_format @assigns_added @assigns
@view_paths @controller
}
self.instance_variables.collect(&:to_s).reject do |ivar|
ivar.match(/^@_/) || # Rails "internal" variables: @_foo
ivar.match(/^@template/) ||
internal_variables.include?(ivar)
end.inject({}) do |acc,ivar|
acc[ivar.sub('@','')] = instance_variable_get(ivar)
acc
end
end
end

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@ -36,8 +36,7 @@ module CustomFieldsHelper
field_format = Redmine::CustomFieldFormat.find_by_name(custom_field.field_format)
case field_format.try(:edit_as)
when "date"
text_field_tag(field_name, custom_value.value, :id => field_id, :size => 10) +
calendar_for(field_id)
date_field_tag(field_name, custom_value.value, :id => field_id, :size => 10)
when "text"
text_area_tag(field_name, custom_value.value, :id => field_id, :rows => 3, :style => 'width:90%')
when "bool"
@ -71,8 +70,7 @@ module CustomFieldsHelper
field_format = Redmine::CustomFieldFormat.find_by_name(custom_field.field_format)
case field_format.try(:edit_as)
when "date"
text_field_tag(field_name, '', :id => field_id, :size => 10) +
calendar_for(field_id)
date_field_tag(field_name, '', :id => field_id, :size => 10)
when "text"
text_area_tag(field_name, '', :id => field_id, :rows => 3, :style => 'width:90%')
when "bool"

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@ -52,13 +52,14 @@ module IssuesHelper
"<strong>#{@cached_label_priority}</strong>: #{h(issue.priority.name)}"
end
# TODO: deprecate and/or remove
def render_issue_subject_with_tree(issue)
s = ''
ancestors = issue.root? ? [] : issue.ancestors.all
ancestors.each do |ancestor|
s << '<div>' + content_tag('p', link_to_issue(ancestor))
s << '<div>' + content_tag('h2', link_to_issue(ancestor))
end
s << '<div>' + content_tag('h3', h(issue.subject))
s << '<div class="subject">' + content_tag('h2', h(issue.subject))
s << '</div>' * (ancestors.size + 1)
s
end
@ -78,6 +79,22 @@ module IssuesHelper
s
end
def render_parents_and_subtree(issue)
return if issue.leaf? && !issue.parent
s = '<form><table id="issue_tree" class="list">'
issue_list(issue.self_and_ancestors.sort_by(&:lft) + issue.descendants.sort_by(&:lft)) do |el, level|
s << content_tag('tr',
content_tag('td', check_box_tag("ids[]", el.id, false, :id => nil), :class => 'checkbox') +
content_tag('td', link_to_issue(el, :truncate => 60), :class => 'subject') +
content_tag('td', h(el.status)) +
content_tag('td', link_to_user(el.assigned_to)) +
content_tag('td', progress_bar(el.done_ratio, :width => '80px')),
:class => "issue issue-#{el.id} #{"self" if el == issue} hascontextmenu #{level > 0 ? "idnt idnt-#{level}" : nil}")
end
s << '</table></form>'
s
end
def render_custom_fields_rows(issue)
return if issue.custom_field_values.empty?
ordered_values = []

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@ -27,24 +27,34 @@ module JournalsHelper
def render_journal(model, journal, options = {})
return "" if journal.initial?
journal_content = render_journal_details(journal, :label_updated_time_by)
journal_content += render_notes(model, journal, options) unless journal.notes.blank?
content_tag "div", journal_content, { :id => "change-#{journal.id}", :class => journal.css_classes }
journal_classes = journal.css_classes
journal_content = render_journal_details(journal, :label_updated_time_by, model, options)
avatar = avatar(journal.user, :size => "40")
unless avatar.blank?
profile_wrap = content_tag("div", avatar, {:class => "profile-wrap"}, false)
journal_content = profile_wrap + journal_content
journal_classes << " has-avatar"
end
content_tag("div", journal_content, :id => "change-#{journal.id}", :class => journal_classes)
end
# This renders a journal entry wiht a header and details
def render_journal_details(journal, header_label = :label_updated_time_by)
# This renders a journal entry with a header and details
def render_journal_details(journal, header_label = :label_updated_time_by, model=nil, options={})
header = <<-HTML
<h4>
<div style="float:right;">#{link_to "##{journal.anchor}", :anchor => "note-#{journal.anchor}"}</div>
#{avatar(journal.user, :size => "24")}
#{content_tag('a', '', :name => "note-#{journal.anchor}")}
<div class="journal-link" style="float:right;">#{link_to "##{journal.anchor}", :anchor => "note-#{journal.anchor}"}</div>
#{authoring journal.created_at, journal.user, :label => header_label}
#{content_tag('a', '', :name => "note-#{journal.anchor}")}
</h4>
HTML
header << render_notes(model, journal, options) unless journal.notes.blank?
if journal.details.any?
details = content_tag "ul", :class => "details" do
details = content_tag "ul", :class => "journal-attributes details" do
journal.details.collect do |detail|
if d = journal.render_detail(detail)
content_tag("li", d)
@ -53,7 +63,7 @@ module JournalsHelper
end
end
content_tag("div", "#{header}#{details}", :id => "change-#{journal.id}", :class => "journal")
content_tag "div", "#{header}#{details}", :class => "journal-details"
end
def render_notes(model, journal, options={})

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@ -84,11 +84,12 @@ module QueriesHelper
end
end
@query.group_by = params[:group_by]
@query.display_subprojects = params[:display_subprojects] if params[:display_subprojects]
@query.column_names = params[:c] || (params[:query] && params[:query][:column_names])
session[:query] = {:project_id => @query.project_id, :filters => @query.filters, :group_by => @query.group_by, :column_names => @query.column_names}
session[:query] = {:project_id => @query.project_id, :filters => @query.filters, :group_by => @query.group_by, :column_names => @query.column_names, :display_subprojects => @query.display_subprojects}
else
@query = Query.find_by_id(session[:query][:id]) if session[:query][:id]
@query ||= Query.new(:name => "_", :project => @project, :filters => session[:query][:filters], :group_by => session[:query][:group_by], :column_names => session[:query][:column_names])
@query ||= Query.new(:name => "_", :project => @project, :filters => session[:query][:filters], :group_by => session[:query][:group_by], :column_names => session[:query][:column_names], :display_subprojects => session[:query][:display_subprojects])
@query.project = @project
end
end

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

View File

@ -2,7 +2,7 @@
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2012 the ChiliProject Team
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License

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