diff --git a/app/controllers/auto_completes_controller.rb b/app/controllers/auto_completes_controller.rb
index 021d5367..17d86f34 100644
--- a/app/controllers/auto_completes_controller.rb
+++ b/app/controllers/auto_completes_controller.rb
@@ -4,17 +4,18 @@ class AutoCompletesController < ApplicationController
def issues
@issues = []
q = params[:q].to_s
- query = (params[:scope] == "all" && Setting.cross_project_issue_relations?) ? Issue : @project.issues
- if q.match(/^\d+$/)
- @issues << query.visible.find_by_id(q.to_i)
- end
- unless q.blank?
- @issues += query.visible.find(:all,
+
+ if q.present?
+ query = (params[:scope] == "all" && Setting.cross_project_issue_relations?) ? Issue : @project.issues
+
+ @issues |= query.visible.find_all_by_id(q.to_i) if q =~ /^\d+$/
+
+ @issues |= query.visible.find(:all,
:limit => 10,
:order => "#{Issue.table_name}.id ASC",
:conditions => ["LOWER(#{Issue.table_name}.subject) LIKE :q OR CAST(#{Issue.table_name}.id AS CHAR(13)) LIKE :q", {:q => "%#{q.downcase}%" }])
end
- @issues.compact!
+
render :layout => false
end
diff --git a/app/controllers/help_controller.rb b/app/controllers/help_controller.rb
new file mode 100644
index 00000000..c0e92159
--- /dev/null
+++ b/app/controllers/help_controller.rb
@@ -0,0 +1,7 @@
+class HelpController < ApplicationController
+ def wiki_syntax
+ end
+
+ def wiki_syntax_detailed
+ end
+end
diff --git a/app/controllers/watchers_controller.rb b/app/controllers/watchers_controller.rb
index ad8d8be2..11699c35 100644
--- a/app/controllers/watchers_controller.rb
+++ b/app/controllers/watchers_controller.rb
@@ -90,7 +90,12 @@ private
format.js do
render(:update) do |page|
replace_ids.each do |replace_id|
- page.replace_html replace_id, watcher_link(@watched, user, :replace => replace_ids)
+ case replace_id
+ when 'watchers'
+ page.replace_html 'watchers', :partial => 'watchers/watchers', :locals => {:watched => @watched}
+ else
+ page.replace_html replace_id, watcher_link(@watched, user, :replace => replace_ids)
+ end
end
end
end
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index 67509b22..fc4ef6ef 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -60,6 +60,11 @@ module ApplicationHelper
h(user.to_s)
end
end
+
+ # Show a sorted linkified (if active) comma-joined list of users
+ def list_users(users, options={})
+ users.sort.collect{|u| link_to_user(u, options)}.join(", ")
+ end
# Displays a link to +issue+ with its subject.
# Examples:
diff --git a/public/help/wiki_syntax.html b/app/views/help/wiki_syntax.html.erb
similarity index 74%
rename from public/help/wiki_syntax.html
rename to app/views/help/wiki_syntax.html.erb
index 6886f340..9d41a717 100644
--- a/public/help/wiki_syntax.html
+++ b/app/views/help/wiki_syntax.html.erb
@@ -1,23 +1,15 @@
-
-
-
-
-
-Wiki formatting
-
-
-
+<% content_for :styles do %>
+ h1 { font-family: Verdana, sans-serif; font-size: 14px; text-align: center; color: #444; }
+ body { font-family: Verdana, sans-serif; font-size: 12px; color: #444; }
+ table th { padding-top: 1em; }
+ table td { vertical-align: top; background-color: #f5f5f5; height: 2em; vertical-align: middle;}
+ table td code { font-size: 1.2em; }
+ table td h1 { font-size: 1.8em; text-align: left; }
+ table td h2 { font-size: 1.4em; text-align: left; }
+ table td h3 { font-size: 1.2em; text-align: left; }
+<% end %>
+<% html_title "Wiki Syntax Quick Reference" %>
Wiki Syntax Quick Reference
@@ -48,8 +40,9 @@ table td h3 { font-size: 1.2em; text-align: left; }
| http://foo.bar | http://foo.bar |
| "Foo":http://foo.bar | Foo |
-Redmine links |
+ChiliProject links |
 | [[Wiki page]] | Wiki page |
+ | [[Sandbox:Wiki page]] | Wiki page (On the Sandbox project) |
| Issue #12 | Issue #12 |
| Revision r43 | Revision r43 |
| commit:f30e13e43 | f30e13e4 |
@@ -60,7 +53,4 @@ table td h3 { font-size: 1.2em; text-align: left; }
| !attached_image! | |
-More Information
-
-
-
+More Information
diff --git a/public/help/wiki_syntax_detailed.html b/app/views/help/wiki_syntax_detailed.html.erb
similarity index 83%
rename from public/help/wiki_syntax_detailed.html
rename to app/views/help/wiki_syntax_detailed.html.erb
index 0c9cea34..0127efd7 100644
--- a/public/help/wiki_syntax_detailed.html
+++ b/app/views/help/wiki_syntax_detailed.html.erb
@@ -1,9 +1,4 @@
-
-
-
-RedmineWikiFormatting
-
-
-
+<% end %>
-
-Wiki formatting
+<% html_title "Wiki Formatting" %>
+Wiki Formatting
Links
- Redmine links
+ ChiliProject links
- Redmine allows hyperlinking between issues, changesets and wiki pages from anywhere wiki formatting is used.
+ ChiliProject allows hyperlinking between issues, changesets and wiki pages from anywhere wiki formatting is used.
- Link to an issue: #124 (displays
#124, link is striked-through if the issue is closed)
- Link to a changeset: r758 (displays r758)
- Link to a changeset with a non-numeric hash: commit:c6f4d0fd (displays c6f4d0fd).
- - Link to a changeset of another project: sandbox:r758 (displays sanbox:r758)
+ - Link to a changeset of another project: sandbox:r758 (displays sandbox:r758)
- Link to a changeset with a non-numeric hash: sandbox:c6f4d0fd (displays sandbox:c6f4d0fd).
@@ -130,8 +124,8 @@
Escaping:
-
-http://www.redmine.org, someone@foo.bar
+https://www.chiliproject.org, someone@foo.bar
- displays: http://www.redmine.org, someone@foo.bar
+ displays: https://www.chiliproject.org, someone@foo.bar
If you want to display a specific text instead of the URL, you can use the standard textile syntax:
-"Redmine web site":http://www.redmine.org
+"ChiliProject web site":https://www.chiliproject.org
- displays: Redmine web site
+ displays: ChiliProject web site
Text formatting
- For things such as headlines, bold, tables, lists, Redmine supports Textile syntax. See http://www.textism.com/tools/textile/ for information on using any of these features. A few samples are included below, but the engine is capable of much more of that.
+ For things such as headlines, bold, tables, lists, ChiliProject supports Textile syntax. See http://www.textism.com/tools/textile/ for information on using any of these features. A few samples are included below, but the engine is capable of much more of that.
Font style
@@ -195,7 +189,7 @@ h2. Subheading
h3. Subsubheading
- Redmine assigns an anchor to each of those headings thus you can link to them with "#Heading", "#Subheading" and so forth.
+ ChiliProject assigns an anchor to each of those headings thus you can link to them with "#Heading", "#Subheading" and so forth.
Paragraphs
@@ -205,7 +199,7 @@ p>. right aligned
p=. centered
- This is centered paragraph.
+ This is a centered paragraph.
Blockquotes
@@ -233,7 +227,7 @@ To go live, all you need to add is a database and a web server.
Macros
- Redmine has the following builtin macros:
+ ChiliProject has the following builtin macros:
hello_world
Sample macro.
include
Include a wiki page. Example:
@@ -266,5 +260,3 @@ To go live, all you need to add is a database and a web server.
10 end
-
-
diff --git a/app/views/issue_relations/_form.rhtml b/app/views/issue_relations/_form.rhtml
index fdf0582f..4f955ac4 100644
--- a/app/views/issue_relations/_form.rhtml
+++ b/app/views/issue_relations/_form.rhtml
@@ -3,7 +3,7 @@
<%= f.select :relation_type, collection_for_relation_type_select, {}, :onchange => "setPredecessorFieldsVisibility();" %>
<%= l(:label_issue) %> #<%= f.text_field :issue_to_id, :size => 10 %>
-<%= javascript_tag "observeRelatedIssueField('#{auto_complete_issues_path(:id => @issue, :project_id => @project) }')" %>
+<%= javascript_tag "observeRelatedIssueField('#{auto_complete_issues_path(:id => @issue, :project_id => @project, :escape => false) }')" %>
<%= l(:field_delay) %>: <%= f.text_field :delay, :size => 3 %> <%= l(:label_day_plural) %>
diff --git a/app/views/issues/_action_menu.rhtml b/app/views/issues/_action_menu.rhtml
index 3f4d89e2..0ec82ecd 100644
--- a/app/views/issues/_action_menu.rhtml
+++ b/app/views/issues/_action_menu.rhtml
@@ -2,7 +2,7 @@
<%= link_to_if_authorized(l(:button_update), {:controller => 'issues', :action => 'edit', :id => @issue }, :onclick => 'showAndScrollTo("update", "notes"); return false;', :class => 'icon icon-edit', :accesskey => accesskey(:edit)) %>
<%= link_to_if_authorized l(:button_log_time), {:controller => 'timelog', :action => 'new', :issue_id => @issue}, :class => 'icon icon-time-add' %>
<% replace_watcher ||= 'watcher' %>
-<%= watcher_tag(@issue, User.current, {:id => replace_watcher, :replace => ['watcher','watcher2']}) %>
+<%= watcher_tag(@issue, User.current, {:id => replace_watcher, :replace => ['watchers','watcher','watcher2']}) %>
<%= link_to_if_authorized l(:button_duplicate), {:controller => 'issues', :action => 'new', :project_id => @project, :copy_from => @issue }, :class => 'icon icon-duplicate' %>
<%= link_to_if_authorized l(:button_copy), {:controller => 'issue_moves', :action => 'new', :id => @issue, :copy_options => {:copy => 't'}}, :class => 'icon icon-copy' %>
<%= link_to_if_authorized l(:button_move), {:controller => 'issue_moves', :action => 'new', :id => @issue}, :class => 'icon icon-move' %>
diff --git a/app/views/issues/_form.rhtml b/app/views/issues/_form.rhtml
index 2f4996a9..2c78cc46 100644
--- a/app/views/issues/_form.rhtml
+++ b/app/views/issues/_form.rhtml
@@ -11,7 +11,7 @@
<% if User.current.allowed_to?(:manage_subtasks, @project) %>
<%= f.text_field :parent_issue_id, :size => 10 %>
-<%= javascript_tag "observeParentIssueField('#{auto_complete_issues_path(:id => @issue, :project_id => @project) }')" %>
+<%= javascript_tag "observeParentIssueField('#{auto_complete_issues_path(:id => @issue, :project_id => @project, :escape => false) }')" %>
<% end %>
<%= f.text_area :description,
diff --git a/app/views/layouts/help.html.erb b/app/views/layouts/help.html.erb
new file mode 100644
index 00000000..1a64c478
--- /dev/null
+++ b/app/views/layouts/help.html.erb
@@ -0,0 +1,13 @@
+
+
+
+ <%= h html_title %>
+
+
+
+
+ <%= yield %>
+
+
diff --git a/app/views/layouts/mailer.text.html.erb b/app/views/layouts/mailer.text.html.erb
index 53ccca0d..3e0c74d1 100644
--- a/app/views/layouts/mailer.text.html.erb
+++ b/app/views/layouts/mailer.text.html.erb
@@ -18,6 +18,12 @@ hr {
background: #ccc;
border: 0;
}
+blockquote {
+ border-left: 3px solid #E0E0E0;
+ font-style: italic;
+ margin-left: 2.4em;
+ padding-left: 0.6em;
+}
.footer {
font-size: 0.8em;
font-style: italic;
diff --git a/app/views/users/_form.rhtml b/app/views/users/_form.rhtml
index 4e788f6c..0dc19542 100644
--- a/app/views/users/_form.rhtml
+++ b/app/views/users/_form.rhtml
@@ -25,9 +25,9 @@
<%= f.select :auth_source_id, ([[l(:label_internal), ""]] + @auth_sources.collect { |a| [a.name, a.id] }), {}, :onchange => "if (this.value=='') {Element.show('password_fields');} else {Element.hide('password_fields');}" %>
<% end %>
-
<%= f.password_field :password, :required => true, :size => 25 %>
+
<%= f.password_field :password, :required => true, :size => 25, :autocomplete => :off %>
<%= l(:text_caracters_minimum, :count => Setting.password_min_length) %>
-
<%= f.password_field :password_confirmation, :required => true, :size => 25 %>
+
<%= f.password_field :password_confirmation, :required => true, :size => 25, :autocomplete => :off %>
diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml
index 5258667d..7a879f5b 100644
--- a/config/locales/pt-BR.yml
+++ b/config/locales/pt-BR.yml
@@ -945,24 +945,24 @@ pt-BR:
setting_default_notification_option: Opção padrão de notificação
label_user_mail_option_only_my_events: Somente para as coisas que eu esteja observando ou esteja envolvido
label_user_mail_option_only_assigned: Somente para as coisas que estejam atribuÃdas a mim
- label_user_mail_option_none: No events
- field_member_of_group: Assignee's group
- field_assigned_to_role: Assignee's role
- notice_not_authorized_archived_project: The project you're trying to access has been archived.
- label_principal_search: "Search for user or group:"
- label_user_search: "Search for user:"
- field_visible: Visible
- setting_emails_header: Emails header
- setting_commit_logtime_activity_id: Activity for logged time
- text_time_logged_by_changeset: Applied in changeset %{value}.
- setting_commit_logtime_enabled: Enable time logging
- notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
- setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
+ label_user_mail_option_none: Sem eventos
+ field_member_of_group: Grupo do responsável
+ field_assigned_to_role: Papel do responsável
+ notice_not_authorized_archived_project: O projeto que você está tentando acessar foi arquivado.
+ label_principal_search: "Pesquisar por usuários ou grupos:"
+ label_user_search: "Pesquisar por usuário:"
+ field_visible: VisÃvel
+ setting_emails_header: Cabeçalho do e-mail
+ setting_commit_logtime_activity_id: Atividade para registrar horas
+ text_time_logged_by_changeset: Aplicado no changeset %{value}.
+ setting_commit_logtime_enabled: Habilitar registro de horas
+ notice_gantt_chart_truncated: O gráfico foi cortado por exceder o tamanho máximo de linhas que podem ser exibidas (%{max})
+ setting_gantt_items_limit: Número máximo de itens exibidos no gráfico gatt
text_powered_by: Powered by %{link}
- label_cvs_module: Module
- label_filesystem_path: Root directory
- label_darcs_path: Root directory
- label_bazaar_path: Root directory
+ label_cvs_module: Módulo
+ label_filesystem_path: Diretório raiz
+ label_darcs_path: Diretório raiz
+ label_bazaar_path: Diretório raiz
label_cvs_path: CVSROOT
- label_git_path: Path to .git directory
- label_mercurial_path: Root directory
+ label_git_path: Caminho para o diretório .git
+ label_mercurial_path: Diretório raiz
diff --git a/doc/CHANGELOG.rdoc b/doc/CHANGELOG.rdoc
index e2348d25..972caf13 100644
--- a/doc/CHANGELOG.rdoc
+++ b/doc/CHANGELOG.rdoc
@@ -1,5 +1,24 @@
= ChiliProject changelog
+== 2011-05-27 v1.4.0
+
+* Bug #81: Replace favicon
+* Bug #311: Update the watcher list on "watch"-link click
+* Bug #322: reposman.rb doesn't work with Rubygems >= 1.6.0
+* Bug #340: Properly format blockquotes in HTML mails
+* Bug #357: Wrap long text fields properly in PDF exports
+* Bug #360: Set autocomplete=off for some fields in user form
+* Bug #373: Issue auto completion returns duplicates
+* Bug #374: HTML-escaped URLs in JavaScript
+* Bug #379: Help controller headings rendered differently in Ruby 1.9
+* Bug #380: Wiki-Help Page
+* Bug #424: Loading issue context menu causes two identical AJAX requests
+* Bug #425: Deprecation warning when using ChiliProject with Rake 0.9
+* Feature #202: Adding the theme used on chiliproject.org to the repository
+* Feature #304: Add a helper to format user lists
+* Feature #361: [Cleanup] Removing code comment, by answering the implied question in wikitoolbar_for helper
+* Feature #362: Introduce Help controller to dynamically generate wiki help pages
+
== 2011-05-01 v1.3.0
* Bug #309: The login screen after lost_password redirects back to lost_password after you login
diff --git a/extra/svn/Redmine.pm b/extra/svn/Redmine.pm
index e1e1e171..ec3200a1 100644
--- a/extra/svn/Redmine.pm
+++ b/extra/svn/Redmine.pm
@@ -481,6 +481,7 @@ sub get_project_identifier {
my $location = $r->location;
my ($identifier) = $r->uri =~ m{$location/*([^/]+)};
+ $identifier =~ s/\.git$// if (defined $cfg->{RedmineGitSmartHttp} and $cfg->{RedmineGitSmartHttp});
$identifier;
}
diff --git a/extra/svn/reposman.rb b/extra/svn/reposman.rb
index c9b9b0f5..4bfd10bd 100755
--- a/extra/svn/reposman.rb
+++ b/extra/svn/reposman.rb
@@ -66,6 +66,10 @@ require 'rdoc/usage'
require 'find'
require 'etc'
+# working around deprecation in RubyGems 1.6
+# needed for rails <2.3.9 only, don't merge to unstable!
+require 'thread'
+
Version = "1.3"
SUPPORTED_SCM = %w( Subversion Darcs Mercurial Bazaar Git Filesystem )
diff --git a/lib/generators/chiliproject_plugin/USAGE b/lib/generators/chiliproject_plugin/USAGE
new file mode 100644
index 00000000..12a57630
--- /dev/null
+++ b/lib/generators/chiliproject_plugin/USAGE
@@ -0,0 +1,20 @@
+Description:
+ The plugin generator creates stubs for a new ChiliProject plugin.
+
+Example:
+ ./script/generate chliproject_plugin meetings
+ create vendor/plugins/chiliproject_meetings/app/controllers
+ create vendor/plugins/chiliproject_meetings/app/helpers
+ create vendor/plugins/chiliproject_meetings/app/models
+ create vendor/plugins/chiliproject_meetings/app/views
+ create vendor/plugins/chiliproject_meetings/db/migrate
+ create vendor/plugins/chiliproject_meetings/lib/tasks
+ create vendor/plugins/chiliproject_meetings/assets/images
+ create vendor/plugins/chiliproject_meetings/assets/javascripts
+ create vendor/plugins/chiliproject_meetings/assets/stylesheets
+ create vendor/plugins/chiliproject_meetings/lang
+ create vendor/plugins/chiliproject_meetings/README
+ create vendor/plugins/chiliproject_meetings/init.rb
+ create vendor/plugins/chiliproject_meetings/lang/en.yml
+ create vendor/plugins/chiliproject_meetings/config/locales/en.yml
+ create vendor/plugins/chiliproject_meetings/test/test_helper.rb
diff --git a/lib/generators/redmine_plugin/redmine_plugin_generator.rb b/lib/generators/chiliproject_plugin/chiliproject_plugin_generator.rb
similarity index 90%
rename from lib/generators/redmine_plugin/redmine_plugin_generator.rb
rename to lib/generators/chiliproject_plugin/chiliproject_plugin_generator.rb
index 9b0db225..02619c50 100644
--- a/lib/generators/redmine_plugin/redmine_plugin_generator.rb
+++ b/lib/generators/chiliproject_plugin/chiliproject_plugin_generator.rb
@@ -1,9 +1,9 @@
-class RedminePluginGenerator < Rails::Generator::NamedBase
+class ChiliprojectPluginGenerator < Rails::Generator::NamedBase
attr_reader :plugin_path, :plugin_name, :plugin_pretty_name
def initialize(runtime_args, runtime_options = {})
super
- @plugin_name = "redmine_#{file_name.underscore}"
+ @plugin_name = "chiliproject_#{file_name.underscore}"
@plugin_pretty_name = plugin_name.titleize
@plugin_path = "vendor/plugins/#{plugin_name}"
end
diff --git a/lib/generators/redmine_plugin/templates/README.rdoc b/lib/generators/chiliproject_plugin/templates/README.rdoc
similarity index 100%
rename from lib/generators/redmine_plugin/templates/README.rdoc
rename to lib/generators/chiliproject_plugin/templates/README.rdoc
diff --git a/lib/generators/redmine_plugin/templates/en.yml b/lib/generators/chiliproject_plugin/templates/en.yml
similarity index 100%
rename from lib/generators/redmine_plugin/templates/en.yml
rename to lib/generators/chiliproject_plugin/templates/en.yml
diff --git a/lib/generators/redmine_plugin/templates/en_rails_i18n.yml b/lib/generators/chiliproject_plugin/templates/en_rails_i18n.yml
similarity index 100%
rename from lib/generators/redmine_plugin/templates/en_rails_i18n.yml
rename to lib/generators/chiliproject_plugin/templates/en_rails_i18n.yml
diff --git a/lib/generators/redmine_plugin/templates/init.rb.erb b/lib/generators/chiliproject_plugin/templates/init.rb.erb
similarity index 82%
rename from lib/generators/redmine_plugin/templates/init.rb.erb
rename to lib/generators/chiliproject_plugin/templates/init.rb.erb
index e6feded2..d1862f3a 100644
--- a/lib/generators/redmine_plugin/templates/init.rb.erb
+++ b/lib/generators/chiliproject_plugin/templates/init.rb.erb
@@ -3,7 +3,7 @@ require 'redmine'
Redmine::Plugin.register :<%= plugin_name %> do
name '<%= plugin_pretty_name %> plugin'
author 'Author name'
- description 'This is a plugin for Redmine'
+ description 'This is a plugin for ChiliProject'
version '0.0.1'
url 'http://example.com/path/to/plugin'
author_url 'http://example.com/about'
diff --git a/lib/generators/redmine_plugin/templates/test_helper.rb.erb b/lib/generators/chiliproject_plugin/templates/test_helper.rb.erb
similarity index 100%
rename from lib/generators/redmine_plugin/templates/test_helper.rb.erb
rename to lib/generators/chiliproject_plugin/templates/test_helper.rb.erb
diff --git a/lib/generators/chiliproject_plugin_controller/USAGE b/lib/generators/chiliproject_plugin_controller/USAGE
new file mode 100644
index 00000000..7b1afe3d
--- /dev/null
+++ b/lib/generators/chiliproject_plugin_controller/USAGE
@@ -0,0 +1,5 @@
+Description:
+ Generates a plugin controller.
+
+Example:
+ ./script/generate chiliproject_plugin_controller MyPlugin Pools index show vote
diff --git a/lib/generators/redmine_plugin_controller/redmine_plugin_controller_generator.rb b/lib/generators/chiliproject_plugin_controller/chiliproject_plugin_controller_generator.rb
similarity index 93%
rename from lib/generators/redmine_plugin_controller/redmine_plugin_controller_generator.rb
rename to lib/generators/chiliproject_plugin_controller/chiliproject_plugin_controller_generator.rb
index 7f3f3f68..2cdbd2ca 100644
--- a/lib/generators/redmine_plugin_controller/redmine_plugin_controller_generator.rb
+++ b/lib/generators/chiliproject_plugin_controller/chiliproject_plugin_controller_generator.rb
@@ -1,13 +1,13 @@
require 'rails_generator/base'
require 'rails_generator/generators/components/controller/controller_generator'
-class RedminePluginControllerGenerator < ControllerGenerator
+class ChiliprojectPluginControllerGenerator < ControllerGenerator
attr_reader :plugin_path, :plugin_name, :plugin_pretty_name
def initialize(runtime_args, runtime_options = {})
runtime_args = runtime_args.dup
usage if runtime_args.empty?
- @plugin_name = "redmine_" + runtime_args.shift.underscore
+ @plugin_name = "chiliproject_" + runtime_args.shift.underscore
@plugin_pretty_name = plugin_name.titleize
@plugin_path = "vendor/plugins/#{plugin_name}"
super(runtime_args, runtime_options)
diff --git a/lib/generators/redmine_plugin_controller/templates/controller.rb.erb b/lib/generators/chiliproject_plugin_controller/templates/controller.rb.erb
similarity index 100%
rename from lib/generators/redmine_plugin_controller/templates/controller.rb.erb
rename to lib/generators/chiliproject_plugin_controller/templates/controller.rb.erb
diff --git a/lib/generators/redmine_plugin_controller/templates/functional_test.rb.erb b/lib/generators/chiliproject_plugin_controller/templates/functional_test.rb.erb
similarity index 100%
rename from lib/generators/redmine_plugin_controller/templates/functional_test.rb.erb
rename to lib/generators/chiliproject_plugin_controller/templates/functional_test.rb.erb
diff --git a/lib/generators/redmine_plugin_controller/templates/helper.rb.erb b/lib/generators/chiliproject_plugin_controller/templates/helper.rb.erb
similarity index 100%
rename from lib/generators/redmine_plugin_controller/templates/helper.rb.erb
rename to lib/generators/chiliproject_plugin_controller/templates/helper.rb.erb
diff --git a/lib/generators/redmine_plugin_controller/templates/view.html.erb b/lib/generators/chiliproject_plugin_controller/templates/view.html.erb
similarity index 100%
rename from lib/generators/redmine_plugin_controller/templates/view.html.erb
rename to lib/generators/chiliproject_plugin_controller/templates/view.html.erb
diff --git a/lib/generators/chiliproject_plugin_model/USAGE b/lib/generators/chiliproject_plugin_model/USAGE
new file mode 100644
index 00000000..40ce2c33
--- /dev/null
+++ b/lib/generators/chiliproject_plugin_model/USAGE
@@ -0,0 +1,5 @@
+Description:
+ Generates a plugin model.
+
+Examples:
+ ./script/generate chiliproject_plugin_model MyPlugin pool title:string question:text
diff --git a/lib/generators/redmine_plugin_model/redmine_plugin_model_generator.rb b/lib/generators/chiliproject_plugin_model/chiliproject_plugin_model_generator.rb
similarity index 92%
rename from lib/generators/redmine_plugin_model/redmine_plugin_model_generator.rb
rename to lib/generators/chiliproject_plugin_model/chiliproject_plugin_model_generator.rb
index 1c34439a..54f26b5b 100644
--- a/lib/generators/redmine_plugin_model/redmine_plugin_model_generator.rb
+++ b/lib/generators/chiliproject_plugin_model/chiliproject_plugin_model_generator.rb
@@ -1,13 +1,13 @@
require 'rails_generator/base'
require 'rails_generator/generators/components/model/model_generator'
-class RedminePluginModelGenerator < ModelGenerator
+class ChiliprojectPluginModelGenerator < ModelGenerator
attr_accessor :plugin_path, :plugin_name, :plugin_pretty_name
def initialize(runtime_args, runtime_options = {})
runtime_args = runtime_args.dup
usage if runtime_args.empty?
- @plugin_name = "redmine_" + runtime_args.shift.underscore
+ @plugin_name = "chiliproject_" + runtime_args.shift.underscore
@plugin_pretty_name = plugin_name.titleize
@plugin_path = "vendor/plugins/#{plugin_name}"
super(runtime_args, runtime_options)
diff --git a/lib/generators/redmine_plugin_model/templates/fixtures.yml b/lib/generators/chiliproject_plugin_model/templates/fixtures.yml
similarity index 100%
rename from lib/generators/redmine_plugin_model/templates/fixtures.yml
rename to lib/generators/chiliproject_plugin_model/templates/fixtures.yml
diff --git a/lib/generators/redmine_plugin_model/templates/migration.rb.erb b/lib/generators/chiliproject_plugin_model/templates/migration.rb.erb
similarity index 100%
rename from lib/generators/redmine_plugin_model/templates/migration.rb.erb
rename to lib/generators/chiliproject_plugin_model/templates/migration.rb.erb
diff --git a/lib/generators/redmine_plugin_model/templates/model.rb.erb b/lib/generators/chiliproject_plugin_model/templates/model.rb.erb
similarity index 100%
rename from lib/generators/redmine_plugin_model/templates/model.rb.erb
rename to lib/generators/chiliproject_plugin_model/templates/model.rb.erb
diff --git a/lib/generators/redmine_plugin_model/templates/unit_test.rb.erb b/lib/generators/chiliproject_plugin_model/templates/unit_test.rb.erb
similarity index 100%
rename from lib/generators/redmine_plugin_model/templates/unit_test.rb.erb
rename to lib/generators/chiliproject_plugin_model/templates/unit_test.rb.erb
diff --git a/lib/generators/redmine_plugin/USAGE b/lib/generators/redmine_plugin/USAGE
deleted file mode 100644
index 2037ae14..00000000
--- a/lib/generators/redmine_plugin/USAGE
+++ /dev/null
@@ -1,20 +0,0 @@
-Description:
- The plugin generator creates stubs for a new Redmine plugin.
-
-Example:
- ./script/generate redmine_plugin meetings
- create vendor/plugins/redmine_meetings/app/controllers
- create vendor/plugins/redmine_meetings/app/helpers
- create vendor/plugins/redmine_meetings/app/models
- create vendor/plugins/redmine_meetings/app/views
- create vendor/plugins/redmine_meetings/db/migrate
- create vendor/plugins/redmine_meetings/lib/tasks
- create vendor/plugins/redmine_meetings/assets/images
- create vendor/plugins/redmine_meetings/assets/javascripts
- create vendor/plugins/redmine_meetings/assets/stylesheets
- create vendor/plugins/redmine_meetings/lang
- create vendor/plugins/redmine_meetings/README
- create vendor/plugins/redmine_meetings/init.rb
- create vendor/plugins/redmine_meetings/lang/en.yml
- create vendor/plugins/redmine_meetings/config/locales/en.yml
- create vendor/plugins/redmine_meetings/test/test_helper.rb
diff --git a/lib/generators/redmine_plugin_controller/USAGE b/lib/generators/redmine_plugin_controller/USAGE
deleted file mode 100644
index 8336e711..00000000
--- a/lib/generators/redmine_plugin_controller/USAGE
+++ /dev/null
@@ -1,5 +0,0 @@
-Description:
- Generates a plugin controller.
-
-Example:
- ./script/generate redmine_plugin_controller MyPlugin Pools index show vote
diff --git a/lib/generators/redmine_plugin_model/USAGE b/lib/generators/redmine_plugin_model/USAGE
deleted file mode 100644
index 0cb55a18..00000000
--- a/lib/generators/redmine_plugin_model/USAGE
+++ /dev/null
@@ -1,5 +0,0 @@
-Description:
- Generates a plugin model.
-
-Examples:
- ./script/generate redmine_plugin_model MyPlugin pool title:string question:text
diff --git a/lib/redmine/export/pdf.rb b/lib/redmine/export/pdf.rb
index c98b25ff..85b51cd0 100644
--- a/lib/redmine/export/pdf.rb
+++ b/lib/redmine/export/pdf.rb
@@ -88,7 +88,7 @@ module Redmine
end
end
- def Cell(w,h=0,txt='',border=0,ln=0,align='',fill=0,link='')
+ def fix_text_encoding(txt)
@ic ||= Iconv.new(l(:general_pdf_encoding), 'UTF-8')
# these quotation marks are not correctly rendered in the pdf
txt = txt.gsub(/[“�]/, '"') if txt
@@ -100,7 +100,15 @@ module Redmine
rescue
txt
end || ''
- super w,h,txt,border,ln,align,fill,link
+ return txt
+ end
+
+ def Cell(w,h=0,txt='',border=0,ln=0,align='',fill=0,link='')
+ super w,h,fix_text_encoding(txt),border,ln,align,fill,link
+ end
+
+ def MultiCell(w,h=0,txt='',border=0,align='',fill=0)
+ super w,h,fix_text_encoding(txt),border,align,fill
end
def Footer
@@ -122,13 +130,25 @@ module Redmine
pdf.SetTitle(title)
pdf.AliasNbPages
pdf.footer_date = format_date(Date.today)
+ pdf.SetAutoPageBreak(false)
pdf.AddPage("L")
- row_height = 6
+ # Landscape A4 = 210 x 297 mm
+ page_height = 210
+ page_width = 297
+ right_margin = 10
+ bottom_margin = 20
+ col_id_width = 10
+ row_height = 5
+
+ # column widths
+ table_width = page_width - right_margin - 10 # fixed left margin
col_width = []
unless query.columns.empty?
- col_width = query.columns.collect {|column| column.name == :subject ? 4.0 : 1.0 }
- ratio = 262.0 / col_width.inject(0) {|s,w| s += w}
+ col_width = query.columns.collect do |c|
+ (c.name == :subject || (c.is_a?(QueryCustomFieldColumn) && ['string', 'text'].include?(c.custom_field.field_format)))? 4.0 : 1.0
+ end
+ ratio = (table_width - col_id_width) / col_width.inject(0) {|s,w| s += w}
col_width = col_width.collect {|w| w * ratio}
end
@@ -140,7 +160,7 @@ module Redmine
# headers
pdf.SetFontStyle('B',8)
pdf.SetFillColor(230, 230, 230)
- pdf.Cell(15, row_height, "#", 1, 0, 'L', 1)
+ pdf.Cell(col_id_width, row_height, "#", 1, 0, 'C', 1)
query.columns.each_with_index do |column, i|
pdf.Cell(col_width[i], row_height, column.caption, 1, 0, 'L', 1)
end
@@ -159,8 +179,9 @@ module Redmine
pdf.SetFontStyle('',8)
previous_group = group
end
- pdf.Cell(15, row_height, issue.id.to_s, 1, 0, 'L', 1)
- query.columns.each_with_index do |column, i|
+
+ # fetch all the row values
+ col_values = query.columns.collect do |column|
s = if column.is_a?(QueryCustomFieldColumn)
cv = issue.custom_values.detect {|v| v.custom_field_id == column.custom_field.id}
show_value(cv)
@@ -174,17 +195,63 @@ module Redmine
value
end
end
- pdf.Cell(col_width[i], row_height, s.to_s, 1, 0, 'L', 1)
+ s.to_s
end
- pdf.Ln
+
+ # render it off-page to find the max height used
+ base_x = pdf.GetX
+ base_y = pdf.GetY
+ pdf.SetY(2 * page_height)
+ max_height = issues_to_pdf_write_cells(pdf, col_values, col_width, row_height)
+ pdf.SetXY(base_x, base_y)
+
+ # make new page if it doesn't fit on the current one
+ space_left = page_height - base_y - bottom_margin
+ if max_height > space_left
+ pdf.AddPage("L")
+ base_x = pdf.GetX
+ base_y = pdf.GetY
+ end
+
+ # write the cells on page
+ pdf.Cell(col_id_width, row_height, issue.id.to_s, "T", 0, 'C', 1)
+ issues_to_pdf_write_cells(pdf, col_values, col_width, row_height)
+ issues_to_pdf_draw_borders(pdf, base_x, base_y, base_y + max_height, col_id_width, col_width)
+ pdf.SetY(base_y + max_height);
end
+
if issues.size == Setting.issues_export_limit.to_i
pdf.SetFontStyle('B',10)
pdf.Cell(0, row_height, '...')
end
pdf.Output
end
-
+
+ # Renders MultiCells and returns the maximum height used
+ def issues_to_pdf_write_cells(pdf, col_values, col_widths, row_height)
+ base_y = pdf.GetY
+ max_height = row_height
+ col_values.each_with_index do |column, i|
+ col_x = pdf.GetX
+ pdf.MultiCell(col_widths[i], row_height, col_values[i], "T", 'L', 1)
+ max_height = (pdf.GetY - base_y) if (pdf.GetY - base_y) > max_height
+ pdf.SetXY(col_x + col_widths[i], base_y);
+ end
+ return max_height
+ end
+
+ # Draw lines to close the row (MultiCell border drawing in not uniform)
+ def issues_to_pdf_draw_borders(pdf, top_x, top_y, lower_y, id_width, col_widths)
+ col_x = top_x + id_width
+ pdf.Line(col_x, top_y, col_x, lower_y) # id right border
+ col_widths.each do |width|
+ col_x += width
+ pdf.Line(col_x, top_y, col_x, lower_y) # columns right border
+ end
+ pdf.Line(top_x, top_y, top_x, lower_y) # left border
+ pdf.Line(top_x, lower_y, col_x, lower_y) # bottom border
+ end
+
# Returns a PDF string of a single issue
def issue_to_pdf(issue)
pdf = IFPDF.new(current_language)
@@ -194,7 +261,7 @@ module Redmine
pdf.AddPage
pdf.SetFontStyle('B',11)
- pdf.Cell(190,10, "#{issue.project} - #{issue.tracker} # #{issue.id}: #{issue.subject}")
+ pdf.MultiCell(190,5, "#{issue.project} - #{issue.tracker} # #{issue.id}: #{issue.subject}")
pdf.Ln
y0 = pdf.GetY
@@ -247,18 +314,17 @@ module Redmine
end
pdf.SetFontStyle('B',9)
- pdf.Cell(35,5, l(:field_subject) + ":","LTB")
+ pdf.Cell(35,5, l(:field_subject) + ":","LT")
pdf.SetFontStyle('',9)
- pdf.Cell(155,5, issue.subject,"RTB")
- pdf.Ln
+ pdf.MultiCell(155,5, issue.subject,"RT")
pdf.SetFontStyle('B',9)
- pdf.Cell(35,5, l(:field_description) + ":")
+ pdf.Cell(35,5, l(:field_description) + ":","LT")
pdf.SetFontStyle('',9)
- pdf.MultiCell(155,5, issue.description.to_s,"BR")
+ pdf.MultiCell(155,5, issue.description.to_s,"RT")
pdf.Line(pdf.GetX, y0, pdf.GetX, pdf.GetY)
- pdf.Line(pdf.GetX, pdf.GetY, 170, pdf.GetY)
+ pdf.Line(pdf.GetX, pdf.GetY, pdf.GetX + 190, pdf.GetY)
pdf.Ln
if issue.changesets.any? && User.current.allowed_to?(:view_changesets, issue.project)
@@ -286,10 +352,10 @@ module Redmine
pdf.Ln
pdf.SetFontStyle('I',8)
for detail in journal.details
- pdf.Cell(190,5, "- " + show_detail(detail, true))
- pdf.Ln
+ pdf.MultiCell(190,5, "- " + show_detail(detail, true))
end
if journal.notes?
+ pdf.Ln unless journal.details.empty?
pdf.SetFontStyle('',8)
pdf.MultiCell(190,5, journal.notes.to_s)
end
diff --git a/lib/redmine/version.rb b/lib/redmine/version.rb
index b44b76ca..fb27b691 100644
--- a/lib/redmine/version.rb
+++ b/lib/redmine/version.rb
@@ -3,7 +3,7 @@ require 'rexml/document'
module Redmine
module VERSION #:nodoc:
MAJOR = 1
- MINOR = 3
+ MINOR = 4
PATCH = 0
TINY = PATCH # Redmine compat
diff --git a/lib/redmine/wiki_formatting/textile/helper.rb b/lib/redmine/wiki_formatting/textile/helper.rb
index 71996138..18efc1aa 100644
--- a/lib/redmine/wiki_formatting/textile/helper.rb
+++ b/lib/redmine/wiki_formatting/textile/helper.rb
@@ -20,9 +20,8 @@ module Redmine
module Textile
module Helper
def wikitoolbar_for(field_id)
- # Is there a simple way to link to a public resource?
- url = "#{Redmine::Utils.relative_url_root}/help/wiki_syntax.html"
-
+ url = url_for(:controller => 'help', :action => 'wiki_syntax')
+
help_link = l(:setting_text_formatting) + ': ' +
link_to(l(:label_help), url,
:onclick => "window.open(\"#{ url }\", \"\", \"resizable=yes, location=no, width=300, height=640, menubar=no, status=no, scrollbars=yes\"); return false;",
diff --git a/lib/tasks/email.rake b/lib/tasks/email.rake
index 957d9d44..a4036f90 100644
--- a/lib/tasks/email.rake
+++ b/lib/tasks/email.rake
@@ -167,12 +167,12 @@ END_DESC
end
desc "Send a test email to the user with the provided login name"
- task :test, :login, :needs => :environment do |task, args|
+ task :test, [:login] => :environment do |task, args|
include Redmine::I18n
- abort l(:notice_email_error, "Please include the user login to test with. Example: login=examle-login") if args[:login].blank?
+ abort l(:notice_email_error, "Please include the user login to test with. Example: login=example-login") if args[:login].blank?
user = User.find_by_login(args[:login])
- abort l(:notice_email_error, "User #{args[:login]} not found") unless user.logged?
+ abort l(:notice_email_error, "User #{args[:login]} not found") unless user && user.logged?
ActionMailer::Base.raise_delivery_errors = true
begin
diff --git a/public/favicon.ico b/public/favicon.ico
index 51c1aeb0..1f05ad03 100644
Binary files a/public/favicon.ico and b/public/favicon.ico differ
diff --git a/public/javascripts/context_menu.js b/public/javascripts/context_menu.js
index 2e582d96..4110c3d4 100644
--- a/public/javascripts/context_menu.js
+++ b/public/javascripts/context_menu.js
@@ -88,9 +88,6 @@ ContextMenu.prototype = {
}
}
}
- else{
- this.RightClick(e);
- }
},
createMenu: function() {
diff --git a/public/themes/chiliproject/CHANGELOG b/public/themes/chiliproject/CHANGELOG
new file mode 100644
index 00000000..8ae9a965
--- /dev/null
+++ b/public/themes/chiliproject/CHANGELOG
@@ -0,0 +1,52 @@
+0.2.0 (22-05-2009)
+ * Defect #236: Icons (ticket__*.png) aren't referenced correctly
+ * Feature #243: Add support for Redmine Graphs plugin
+ * Feature #261: Add support for Redmine Bugcloud plugin
+ * Feature #262: Add support for Redmine Scrumdashboard plugin
+ * Feature #263: Add support for Redmine Code Review plugin
+ * Enhancement #230: Other font-family for header
+ * Enhancement #233: Change used Fugue-icon for Roadmap project-menu item
+ * Enhancement #255: Make image-references relative for sub-URI compatibility
+ * Enhancement #256: Fix upcoming change in supported Budget-plugin
+ * Enhancement #258: Fix upcoming change in supported Invoices-plugin
+ * Enhancement #259: Fix upcoming change in supported Scores-plugin
+ * Enhancement #260: Fix upcoming change in supported Simple-CI plugin
+ * Enhancement #267: Fix upcoming change in supported Todos plugin
+ * Task-HITDM #235: Update vendor source of the fugue icon-set to current release
+ * Task-HITDM #257: Clean-up and Fix project-menu declarations of supported plugins
+ * Task-HITDM #266: Remove unused images while creating the 0.2-release branch
+
+0.1.0 (21-03-2009)
+ * Defect #186: Project-menu icons aren't rendered after Redmine core rev2022
+ * Defect #187: Right-aligned columns on version-page have a white background instead of transparent
+ * Defect #193: There exists some cross-browser compatibility-errors on Presto-engine
+ * Defect #195: Some faulty references to non-existing images exists due to typos
+ * Defect #196: Fix overflow of the content
+ * Defect #199: Issue-journals should be displayed *behind* the related-revisions block, not below it
+ * Defect #207: Several PNG-images are rendered with a white background, disrupting the nice gray-gradient
+ * Defect #208: Fix the rendering of the note-icon when inline-editing an issue-journal
+ * Defect #211: After r40 unordered lists inside the issue-journal comment are smaller-sized too
+ * Defect #212: Issue-journal comment note-icons rendered for all paragraphs instead of the first only
+ * Defect #213: After r37 the context-menu item-links are rendered as bold; should be normal
+ * Defect #228: After r6 selected project-menu tabs aren't highlighted anymore
+ * Feature #210: Add specific declarations for third-party plugins
+ * Feature #229: Add KHTML-support for rounded-borders on the first & last project-menu items
+ * Enhancement #190: Improve link-visibility globally
+ * Enhancement #191: Refactor the styling of the issue-journals
+ * Enhancement #192: Modify (overall) font-sizes to make the UI more consistent
+ * Enhancement #194: Sidebar should have a bit more width
+ * Enhancement #198: Overrule bordered-table styles imported from the Alternate-theme
+ * Enhancement #214: Project-menu overflows the right border when lots of modules are enabled on a project
+ * Enhancement #223: Improve icon-declarations
+ * Task-HITDM #188: Remove project-body headers introduced by Squeejee based on a core-hack
+ * Task-HITDM #189: Undue the theme from dependency on (import of) the Alternate-theme
+ * Task-HITDM #200: Remove unused images from release
+ * Task-HITDM #201: Clean CSS-styles coding
+ * Task-HITDM #205: 0.1.0 Release QA
+ * Task-HITDM #209: CSS-Code Cleanup (round 2)
+ * Task-HITDM #215: Update vendor source of the fugue icon-set to 1.4.6
+ * Task-HITDM #224: Update vendor source of the fugue icon-set to 1.4.7
+ * Task-HITDM #226: Fix issues found in 0.1.0 Release QA-Sprint/2 (#205)
+
+0.0.0
+ Initial source by Wynn Netherland as of 20-11-2008
diff --git a/public/themes/chiliproject/GPL.txt b/public/themes/chiliproject/GPL.txt
new file mode 100644
index 00000000..82fa1daa
--- /dev/null
+++ b/public/themes/chiliproject/GPL.txt
@@ -0,0 +1,339 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+
+ Copyright (C)
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ , 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
diff --git a/public/themes/chiliproject/README.rdoc b/public/themes/chiliproject/README.rdoc
new file mode 100644
index 00000000..bfb8a710
--- /dev/null
+++ b/public/themes/chiliproject/README.rdoc
@@ -0,0 +1,8 @@
+= ChiliProject.org theme
+
+This theme is based on the Redmine Squeejee theme. It is available bundled with ChiliProject as well as on Github.
+
+* ChiliProject - https://www.chiliproject.org
+* Github - https://github.com/edavis10/squeejee_theme/tree/chiliproject.org
+
+See README.redmine for the official Squeejee theme readme.
diff --git a/public/themes/chiliproject/README.redmine b/public/themes/chiliproject/README.redmine
new file mode 100644
index 00000000..6b2dbb4c
--- /dev/null
+++ b/public/themes/chiliproject/README.redmine
@@ -0,0 +1,100 @@
+h1. Squeejee theme
+
+A theme for Redmine which is based on a dark but "shiny" color-scheme and which includes a subtle (re)styled project-menu.
+
+h2. Packager, contributor and maintainer
+
+* Mischa The Evil
+
+h2. Initial author
+
+* "Wynn Netherland":http://www.squeejee.com/team.html#wynn_netherland
+
+h2. History
+
+For the complete history of the theme's creation you could see "this forum-thread":http://www.redmine.org/boards/1/topics/2736.
+
+h2. Features
+
+The Squeejee© theme is an updated, packaged release of Wynn Netherland's work for "Squeejee's":http://www.squeejee.com internal Redmine instance. It initially was a heavily modified derivation of the [[ThemeAlternate|alternate theme]] which required Redmine core hacks but is made stand-alone and working without core hacks (by using the core's support for project-menu item styling (r2059)) for this release.
+
+It's looks can be best described as a dark theme with gradient backgrounds, dark-gray and bold links, but all with a "shiny" and "friendly" touch. It reintroduces the project-menu item-icons with the extension that styling of third-party plugins (including selected icons) is supported too.
+Also the overflow to a second line of the project-menu, when using a lot of plugins with menu-items, is handled without disturbing the surrounding layout and elements.
+
+The colour-scheme basically consists of three basic colours: black, grey and white.
+
+It includes:
+* issue-colouring in the issuelist, based on default priority-enumerations for issues
+* more sophistically styled "tabs", "tables", etc.
+* (project-menu item styling) support for (lots of) third-party plugins
+
+h2. Screenshots
+
+[ ... see online version of this page ... ]
+
+h2. Compatibility
+
+h3. Redmine compatibility
+
+The theme is compatible with the Redmine 0.8-stable branch (thus including releases: 0.8.0, 0.8.1, 0.8.2 and 0.8.3) and the trunk.
+
+h3. Browser compatibility
+
+* This theme is fully compatible with the current, big-four of browser-engines:
+ * Gecko (Mozilla)
+ * Trident (Internet Explorer 8)
+ * Presto (Opera)
+ * WebKit (Safari/Chrome)
+
+* This theme is for about 95% compatible with the following browser-engine:
+ * Trident (Internet Explorer 7)
+
+Though, tiny differences can occur across different browsers.
+
+h2. Obtaining the theme
+
+The theme can be downloaded as a packaged release from:
+* this page; the archive is attached
+* this MediaFire-mirror: http://www.mediafire.com/evildev
+* the upcoming website http://www.evil-dev.net
+
+h2. Installation
+
+Follow the Redmine theme installation steps at: http://www.redmine.org/wiki/redmine/Themes#Installing-a-theme.
+
+h2. Upgrade
+
+1. Download the latest archive file from the available sources (see "Obtaining the theme")
+2. Backup the currently deployed squeejee theme (in _"../public/themes"_: @mv squeejee squeejee-backup@)
+3. Unzip the downloaded file to your Redmine into the theme-directory _"../public/themes"_
+4. Restart your Redmine
+
+h2. Uninstall
+
+1. Remove the directory "squeejee" from the theme-directory _"../public/themes"_
+2. Restart Redmine
+
+h2. Changelog
+
+For the complete changelog see the @CHANGELOG@-file in the Squeejee theme directory.
+
+h2. Credits
+
+Thanks goes out to the following people:
+
+* Wynn Netherland, Squeejee (http://www.squeejee.com)
+** Initial author (designer and coder) of the draft of this theme which can be found here: http://github.com/squeejee/redmine/tree/master/public/themes/squeejee
+* Jean-Philippe Lang, Project-leader of Redmine (http://www.redmine.org)
+** For creating and maintaining the Redmine system...
+
+h2. Licensing
+
+This theme is open-source and licensed under the "GNU General Public License v2":http://www.gnu.org/licenses/old-licenses/gpl-2.0.html (GPL). Certain icons are part of the Fugue icon-set (http://www.pinvoke.com) which is released under the "Creative Commons Attribution 3.0 Unported":http://creativecommons.org/licenses/by/3.0 license.
+
+* (C)2009, Mischa The Evil (http://www.evil-dev.net)
+* (C)2008, Wynn Netherland (http://www.squeejee.com)
+
+h2. Support
+
+If you need help, would like to report a bug or request a new feature you can contact the
+maintainer via mail (mischa_the_evil [AT] hotmail [DOT] com) or at his (upcoming) website: http://www.evil-dev.net.
diff --git a/public/themes/chiliproject/VERSION b/public/themes/chiliproject/VERSION
new file mode 100644
index 00000000..f8677859
--- /dev/null
+++ b/public/themes/chiliproject/VERSION
@@ -0,0 +1 @@
+0.2.0 ~ 22-05-2009
diff --git a/public/themes/chiliproject/images/bottom_shine.png b/public/themes/chiliproject/images/bottom_shine.png
new file mode 100644
index 00000000..f6cf4ac0
Binary files /dev/null and b/public/themes/chiliproject/images/bottom_shine.png differ
diff --git a/public/themes/chiliproject/images/fugue/arrow.png b/public/themes/chiliproject/images/fugue/arrow.png
new file mode 100644
index 00000000..977b9e50
Binary files /dev/null and b/public/themes/chiliproject/images/fugue/arrow.png differ
diff --git a/public/themes/chiliproject/images/fugue/balloons.png b/public/themes/chiliproject/images/fugue/balloons.png
new file mode 100644
index 00000000..89efe42f
Binary files /dev/null and b/public/themes/chiliproject/images/fugue/balloons.png differ
diff --git a/public/themes/chiliproject/images/fugue/books-stack.png b/public/themes/chiliproject/images/fugue/books-stack.png
new file mode 100644
index 00000000..407d39fc
Binary files /dev/null and b/public/themes/chiliproject/images/fugue/books-stack.png differ
diff --git a/public/themes/chiliproject/images/fugue/burn.png b/public/themes/chiliproject/images/fugue/burn.png
new file mode 100644
index 00000000..21229c83
Binary files /dev/null and b/public/themes/chiliproject/images/fugue/burn.png differ
diff --git a/public/themes/chiliproject/images/fugue/calendar-month.png b/public/themes/chiliproject/images/fugue/calendar-month.png
new file mode 100644
index 00000000..4e37d50c
Binary files /dev/null and b/public/themes/chiliproject/images/fugue/calendar-month.png differ
diff --git a/public/themes/chiliproject/images/fugue/clock--plus.png b/public/themes/chiliproject/images/fugue/clock--plus.png
new file mode 100644
index 00000000..9e641183
Binary files /dev/null and b/public/themes/chiliproject/images/fugue/clock--plus.png differ
diff --git a/public/themes/chiliproject/images/fugue/clock.png b/public/themes/chiliproject/images/fugue/clock.png
new file mode 100644
index 00000000..092cc0a1
Binary files /dev/null and b/public/themes/chiliproject/images/fugue/clock.png differ
diff --git a/public/themes/chiliproject/images/fugue/dashboard--pencil.png b/public/themes/chiliproject/images/fugue/dashboard--pencil.png
new file mode 100644
index 00000000..f0a82a44
Binary files /dev/null and b/public/themes/chiliproject/images/fugue/dashboard--pencil.png differ
diff --git a/public/themes/chiliproject/images/fugue/disk-black.png b/public/themes/chiliproject/images/fugue/disk-black.png
new file mode 100644
index 00000000..61784784
Binary files /dev/null and b/public/themes/chiliproject/images/fugue/disk-black.png differ
diff --git a/public/themes/chiliproject/images/fugue/document-horizontal-text.png b/public/themes/chiliproject/images/fugue/document-horizontal-text.png
new file mode 100644
index 00000000..f1a100aa
Binary files /dev/null and b/public/themes/chiliproject/images/fugue/document-horizontal-text.png differ
diff --git a/public/themes/chiliproject/images/fugue/document-text-image.png b/public/themes/chiliproject/images/fugue/document-text-image.png
new file mode 100644
index 00000000..56c4f0bf
Binary files /dev/null and b/public/themes/chiliproject/images/fugue/document-text-image.png differ
diff --git a/public/themes/chiliproject/images/fugue/document-zipper.png b/public/themes/chiliproject/images/fugue/document-zipper.png
new file mode 100644
index 00000000..6d6333af
Binary files /dev/null and b/public/themes/chiliproject/images/fugue/document-zipper.png differ
diff --git a/public/themes/chiliproject/images/fugue/documents-text.png b/public/themes/chiliproject/images/fugue/documents-text.png
new file mode 100644
index 00000000..7537994d
Binary files /dev/null and b/public/themes/chiliproject/images/fugue/documents-text.png differ
diff --git a/public/themes/chiliproject/images/fugue/documents.png b/public/themes/chiliproject/images/fugue/documents.png
new file mode 100644
index 00000000..ccfa6bb8
Binary files /dev/null and b/public/themes/chiliproject/images/fugue/documents.png differ
diff --git a/public/themes/chiliproject/images/fugue/equalizer.png b/public/themes/chiliproject/images/fugue/equalizer.png
new file mode 100644
index 00000000..b4e2aeac
Binary files /dev/null and b/public/themes/chiliproject/images/fugue/equalizer.png differ
diff --git a/public/themes/chiliproject/images/fugue/hammer--arrow.png b/public/themes/chiliproject/images/fugue/hammer--arrow.png
new file mode 100644
index 00000000..900c4d6a
Binary files /dev/null and b/public/themes/chiliproject/images/fugue/hammer--arrow.png differ
diff --git a/public/themes/chiliproject/images/fugue/history.txt b/public/themes/chiliproject/images/fugue/history.txt
new file mode 100644
index 00000000..62ca186c
--- /dev/null
+++ b/public/themes/chiliproject/images/fugue/history.txt
@@ -0,0 +1,124 @@
+Version 2.0 (May 13, 2009)
+- Add .
+- Add .
+- Add .
+- Add .
+- Add .
+- Add .
+- Add .
+- Add and .
+--------------------------------------------------------------------------------
+Version 1.9.3 (May 12, 2009)
+- Add and .
+- Add .
+- Add .
+- Add .
+- Add and .
+- Add and .
+- Add .
+- Add .
+- Add .
+- Add .
+- Add and .
+- Add .
+- Add .
+- Add .
+- Add .
+- Add .
+- Add and .
+- Add .
+- Add .
+- Add and .
+--------------------------------------------------------------------------------
+Version 1.9.2 (May 10, 2009)
+* Increase contrast.
+- Add .
+- Add .
+- Add .
+- Add .
+- Add .
+- Add .
+- Add .
+- Add .
+- Add .
+- Add .
+- Add .
+- Add .
+--------------------------------------------------------------------------------
+Version 1.9.1 (May 9, 2009)
+- Add .
+- Add .
+- Add and .
+- Add .
+- Add .
+- Add .
+- Add .
+- Add .
+- Add , and .
+- Add .
+- Add .
+- Add .
+- Add and .
+- Add .
+--------------------------------------------------------------------------------
+Version 1.9 (May 4, 2009)
+- Add and .
+- Add .
+- Add .
+- Add .
+- Add .
+- Add .
+- Add .
+- Add .
+- Add .
+--------------------------------------------------------------------------------
+Version 1.8.1 (May 1, 2009)
+- Add .
+- Add .
+- Add and .
+- Add .
+- Add , , , and .
+--------------------------------------------------------------------------------
+Version 1.8 (April 29, 2009)
+- Add .
+- Add .
+- Add , and .
+- Add .
+- Add .
+- Add .
+--------------------------------------------------------------------------------
+Version 1.7 (April 15, 2009)
+--------------------------------------------------------------------------------
+Version 1.6 (April 6, 2009)
+--------------------------------------------------------------------------------
+Version 1.5 (March 17, 2009)
+--------------------------------------------------------------------------------
+Version 1.4 (January 28, 2009)
+--------------------------------------------------------------------------------
+Version 1.3 (January 22, 2009)
+--------------------------------------------------------------------------------
+Version 1.2 (January 11, 2009)
+--------------------------------------------------------------------------------
+Version 1.1 (January 2, 2009)
+--------------------------------------------------------------------------------
+Version 1.0 (October 12, 2008)
+* Initial non-beta release.
+--------------------------------------------------------------------------------
+Version 0.9 (August 4, 2008)
+--------------------------------------------------------------------------------
+Version 0.8 (July 28, 2008)
+--------------------------------------------------------------------------------
+Version 0.7 (July 22, 2008)
+--------------------------------------------------------------------------------
+Version 0.6 (July 14, 2008)
+--------------------------------------------------------------------------------
+Version 0.5 (July 13, 2008)
+--------------------------------------------------------------------------------
+Version 0.4 (July 9, 2008)
+--------------------------------------------------------------------------------
+Version 0.3 (June 29, 2008)
+--------------------------------------------------------------------------------
+Version 0.2 (June 27, 2008)
+--------------------------------------------------------------------------------
+Version 0.1 (June 17, 2008)
+* Initial beta release.
\ No newline at end of file
diff --git a/public/themes/chiliproject/images/fugue/layout-2.png b/public/themes/chiliproject/images/fugue/layout-2.png
new file mode 100644
index 00000000..16a45c71
Binary files /dev/null and b/public/themes/chiliproject/images/fugue/layout-2.png differ
diff --git a/public/themes/chiliproject/images/fugue/layout-select-content.png b/public/themes/chiliproject/images/fugue/layout-select-content.png
new file mode 100644
index 00000000..c31707fa
Binary files /dev/null and b/public/themes/chiliproject/images/fugue/layout-select-content.png differ
diff --git a/public/themes/chiliproject/images/fugue/lightning.png b/public/themes/chiliproject/images/fugue/lightning.png
new file mode 100644
index 00000000..1800099b
Binary files /dev/null and b/public/themes/chiliproject/images/fugue/lightning.png differ
diff --git a/public/themes/chiliproject/images/fugue/magnifier-left.png b/public/themes/chiliproject/images/fugue/magnifier-left.png
new file mode 100644
index 00000000..b4b23129
Binary files /dev/null and b/public/themes/chiliproject/images/fugue/magnifier-left.png differ
diff --git a/public/themes/chiliproject/images/fugue/map-pin.png b/public/themes/chiliproject/images/fugue/map-pin.png
new file mode 100644
index 00000000..7c4d2551
Binary files /dev/null and b/public/themes/chiliproject/images/fugue/map-pin.png differ
diff --git a/public/themes/chiliproject/images/fugue/money--pencil.png b/public/themes/chiliproject/images/fugue/money--pencil.png
new file mode 100644
index 00000000..614fe389
Binary files /dev/null and b/public/themes/chiliproject/images/fugue/money--pencil.png differ
diff --git a/public/themes/chiliproject/images/fugue/monitor.png b/public/themes/chiliproject/images/fugue/monitor.png
new file mode 100644
index 00000000..855f390e
Binary files /dev/null and b/public/themes/chiliproject/images/fugue/monitor.png differ
diff --git a/public/themes/chiliproject/images/fugue/newspaper.png b/public/themes/chiliproject/images/fugue/newspaper.png
new file mode 100644
index 00000000..70e7e5a0
Binary files /dev/null and b/public/themes/chiliproject/images/fugue/newspaper.png differ
diff --git a/public/themes/chiliproject/images/fugue/notebooks--pencil.png b/public/themes/chiliproject/images/fugue/notebooks--pencil.png
new file mode 100644
index 00000000..983ec9ca
Binary files /dev/null and b/public/themes/chiliproject/images/fugue/notebooks--pencil.png differ
diff --git a/public/themes/chiliproject/images/fugue/pencil-small.png b/public/themes/chiliproject/images/fugue/pencil-small.png
new file mode 100644
index 00000000..3d81c2fb
Binary files /dev/null and b/public/themes/chiliproject/images/fugue/pencil-small.png differ
diff --git a/public/themes/chiliproject/images/fugue/pill--exclamation.png b/public/themes/chiliproject/images/fugue/pill--exclamation.png
new file mode 100644
index 00000000..01521caf
Binary files /dev/null and b/public/themes/chiliproject/images/fugue/pill--exclamation.png differ
diff --git a/public/themes/chiliproject/images/fugue/plus-small.png b/public/themes/chiliproject/images/fugue/plus-small.png
new file mode 100644
index 00000000..6bbba514
Binary files /dev/null and b/public/themes/chiliproject/images/fugue/plus-small.png differ
diff --git a/public/themes/chiliproject/images/fugue/projection-screen--pencil.png b/public/themes/chiliproject/images/fugue/projection-screen--pencil.png
new file mode 100644
index 00000000..a542bc74
Binary files /dev/null and b/public/themes/chiliproject/images/fugue/projection-screen--pencil.png differ
diff --git a/public/themes/chiliproject/images/fugue/question-balloon.png b/public/themes/chiliproject/images/fugue/question-balloon.png
new file mode 100644
index 00000000..05a1e62e
Binary files /dev/null and b/public/themes/chiliproject/images/fugue/question-balloon.png differ
diff --git a/public/themes/chiliproject/images/fugue/readme.txt b/public/themes/chiliproject/images/fugue/readme.txt
new file mode 100644
index 00000000..11eb6f19
--- /dev/null
+++ b/public/themes/chiliproject/images/fugue/readme.txt
@@ -0,0 +1,11 @@
+Fugue Icons
+================================================================================
+Copyright (C) 2009 Yusuke Kamiyamane. All rights reserved.
+The icons are licensed under a Creative Commons Attribution 3.0 license.
+
+--------------------------------------------------------------------------------
+If you can't or don't want to place link back, please purchase a royalty-free license.
+
+--------------------------------------------------------------------------------
+I'm unavailable for custom icon design work. But your suggestions are always welcome!
+
\ No newline at end of file
diff --git a/public/themes/chiliproject/images/fugue/report--exclamation.png b/public/themes/chiliproject/images/fugue/report--exclamation.png
new file mode 100644
index 00000000..70248841
Binary files /dev/null and b/public/themes/chiliproject/images/fugue/report--exclamation.png differ
diff --git a/public/themes/chiliproject/images/fugue/ruler--pencil.png b/public/themes/chiliproject/images/fugue/ruler--pencil.png
new file mode 100644
index 00000000..941af0e3
Binary files /dev/null and b/public/themes/chiliproject/images/fugue/ruler--pencil.png differ
diff --git a/public/themes/chiliproject/images/fugue/safe.png b/public/themes/chiliproject/images/fugue/safe.png
new file mode 100644
index 00000000..e3d7da9d
Binary files /dev/null and b/public/themes/chiliproject/images/fugue/safe.png differ
diff --git a/public/themes/chiliproject/images/fugue/star-empty.png b/public/themes/chiliproject/images/fugue/star-empty.png
new file mode 100644
index 00000000..461f6da4
Binary files /dev/null and b/public/themes/chiliproject/images/fugue/star-empty.png differ
diff --git a/public/themes/chiliproject/images/fugue/star.png b/public/themes/chiliproject/images/fugue/star.png
new file mode 100644
index 00000000..52d161ea
Binary files /dev/null and b/public/themes/chiliproject/images/fugue/star.png differ
diff --git a/public/themes/chiliproject/images/fugue/sticky-note.png b/public/themes/chiliproject/images/fugue/sticky-note.png
new file mode 100644
index 00000000..2a8ff1e8
Binary files /dev/null and b/public/themes/chiliproject/images/fugue/sticky-note.png differ
diff --git a/public/themes/chiliproject/images/fugue/tags-label.png b/public/themes/chiliproject/images/fugue/tags-label.png
new file mode 100644
index 00000000..90ddfabb
Binary files /dev/null and b/public/themes/chiliproject/images/fugue/tags-label.png differ
diff --git a/public/themes/chiliproject/images/fugue/tick-shield.png b/public/themes/chiliproject/images/fugue/tick-shield.png
new file mode 100644
index 00000000..eb476950
Binary files /dev/null and b/public/themes/chiliproject/images/fugue/tick-shield.png differ
diff --git a/public/themes/chiliproject/images/fugue/ticket--arrow.png b/public/themes/chiliproject/images/fugue/ticket--arrow.png
new file mode 100644
index 00000000..00d1eccc
Binary files /dev/null and b/public/themes/chiliproject/images/fugue/ticket--arrow.png differ
diff --git a/public/themes/chiliproject/images/fugue/ticket--minus.png b/public/themes/chiliproject/images/fugue/ticket--minus.png
new file mode 100644
index 00000000..f35e42c7
Binary files /dev/null and b/public/themes/chiliproject/images/fugue/ticket--minus.png differ
diff --git a/public/themes/chiliproject/images/fugue/ticket--plus.png b/public/themes/chiliproject/images/fugue/ticket--plus.png
new file mode 100644
index 00000000..c88505bd
Binary files /dev/null and b/public/themes/chiliproject/images/fugue/ticket--plus.png differ
diff --git a/public/themes/chiliproject/images/fugue/ticket.png b/public/themes/chiliproject/images/fugue/ticket.png
new file mode 100644
index 00000000..00999ae5
Binary files /dev/null and b/public/themes/chiliproject/images/fugue/ticket.png differ
diff --git a/public/themes/chiliproject/images/fugue/trophy.png b/public/themes/chiliproject/images/fugue/trophy.png
new file mode 100644
index 00000000..9a7f4010
Binary files /dev/null and b/public/themes/chiliproject/images/fugue/trophy.png differ
diff --git a/public/themes/chiliproject/images/fugue/ui-progress-bar.png b/public/themes/chiliproject/images/fugue/ui-progress-bar.png
new file mode 100644
index 00000000..c7db00ae
Binary files /dev/null and b/public/themes/chiliproject/images/fugue/ui-progress-bar.png differ
diff --git a/public/themes/chiliproject/images/fugue/user-business.png b/public/themes/chiliproject/images/fugue/user-business.png
new file mode 100644
index 00000000..e030b5e9
Binary files /dev/null and b/public/themes/chiliproject/images/fugue/user-business.png differ
diff --git a/public/themes/chiliproject/images/map.png b/public/themes/chiliproject/images/map.png
new file mode 100644
index 00000000..df0f725f
Binary files /dev/null and b/public/themes/chiliproject/images/map.png differ
diff --git a/public/themes/chiliproject/images/middle_shine.png b/public/themes/chiliproject/images/middle_shine.png
new file mode 100644
index 00000000..f9096314
Binary files /dev/null and b/public/themes/chiliproject/images/middle_shine.png differ
diff --git a/public/themes/chiliproject/images/shadow_top.png b/public/themes/chiliproject/images/shadow_top.png
new file mode 100644
index 00000000..53fc5f5b
Binary files /dev/null and b/public/themes/chiliproject/images/shadow_top.png differ
diff --git a/public/themes/chiliproject/images/wiki_styles/caution.png b/public/themes/chiliproject/images/wiki_styles/caution.png
new file mode 100644
index 00000000..4c02ea4c
Binary files /dev/null and b/public/themes/chiliproject/images/wiki_styles/caution.png differ
diff --git a/public/themes/chiliproject/images/wiki_styles/caution_small.png b/public/themes/chiliproject/images/wiki_styles/caution_small.png
new file mode 100644
index 00000000..cc240aa5
Binary files /dev/null and b/public/themes/chiliproject/images/wiki_styles/caution_small.png differ
diff --git a/public/themes/chiliproject/images/wiki_styles/important.png b/public/themes/chiliproject/images/wiki_styles/important.png
new file mode 100644
index 00000000..0a30addb
Binary files /dev/null and b/public/themes/chiliproject/images/wiki_styles/important.png differ
diff --git a/public/themes/chiliproject/images/wiki_styles/important_small.png b/public/themes/chiliproject/images/wiki_styles/important_small.png
new file mode 100644
index 00000000..950ac19e
Binary files /dev/null and b/public/themes/chiliproject/images/wiki_styles/important_small.png differ
diff --git a/public/themes/chiliproject/images/wiki_styles/info.png b/public/themes/chiliproject/images/wiki_styles/info.png
new file mode 100644
index 00000000..5732c4f3
Binary files /dev/null and b/public/themes/chiliproject/images/wiki_styles/info.png differ
diff --git a/public/themes/chiliproject/images/wiki_styles/info_small.png b/public/themes/chiliproject/images/wiki_styles/info_small.png
new file mode 100644
index 00000000..eb37d9a0
Binary files /dev/null and b/public/themes/chiliproject/images/wiki_styles/info_small.png differ
diff --git a/public/themes/chiliproject/images/wiki_styles/note.png b/public/themes/chiliproject/images/wiki_styles/note.png
new file mode 100644
index 00000000..401e128d
Binary files /dev/null and b/public/themes/chiliproject/images/wiki_styles/note.png differ
diff --git a/public/themes/chiliproject/images/wiki_styles/note_small.png b/public/themes/chiliproject/images/wiki_styles/note_small.png
new file mode 100644
index 00000000..8bb798ec
Binary files /dev/null and b/public/themes/chiliproject/images/wiki_styles/note_small.png differ
diff --git a/public/themes/chiliproject/images/wiki_styles/see-also.png b/public/themes/chiliproject/images/wiki_styles/see-also.png
new file mode 100644
index 00000000..3a25abf0
Binary files /dev/null and b/public/themes/chiliproject/images/wiki_styles/see-also.png differ
diff --git a/public/themes/chiliproject/images/wiki_styles/see-also_small.png b/public/themes/chiliproject/images/wiki_styles/see-also_small.png
new file mode 100644
index 00000000..db9fb835
Binary files /dev/null and b/public/themes/chiliproject/images/wiki_styles/see-also_small.png differ
diff --git a/public/themes/chiliproject/images/wiki_styles/tip.png b/public/themes/chiliproject/images/wiki_styles/tip.png
new file mode 100644
index 00000000..e8a2eaea
Binary files /dev/null and b/public/themes/chiliproject/images/wiki_styles/tip.png differ
diff --git a/public/themes/chiliproject/images/wiki_styles/tip_small.png b/public/themes/chiliproject/images/wiki_styles/tip_small.png
new file mode 100644
index 00000000..d5eac1c5
Binary files /dev/null and b/public/themes/chiliproject/images/wiki_styles/tip_small.png differ
diff --git a/public/themes/chiliproject/stylesheets/application.css b/public/themes/chiliproject/stylesheets/application.css
new file mode 100644
index 00000000..6651b1c0
--- /dev/null
+++ b/public/themes/chiliproject/stylesheets/application.css
@@ -0,0 +1,959 @@
+/* Load the default Redmine stylesheet */
+@import url(../../../stylesheets/application.css);
+
+body {
+ font-size: 81%;
+ font-family: "Helvetica Neue", Helvetica, Arial, Verdana, sans-serif;
+ background: #333 url(../images/bottom_shine.png) bottom left repeat-x;
+}
+
+/*
+* Links
+*/
+a, a:link, a:visited {
+ color: #8c8c8c;
+ text-decoration: none;
+ font-weight: bold;
+}
+
+a:hover {
+ color: #b3b3b3;
+ text-decoration: underline;
+}
+
+/*
+* Layout
+*/
+#wrapper,
+#main,
+#footer {
+ background: none;
+}
+
+#main {
+ margin: 0;
+}
+
+#content {
+ margin: 1em 1.4em 1em 1em;
+ width: 77%;
+ overflow: auto;
+ background: #fff url(../images/shadow_top.png) top left repeat-x;
+ border-top: solid 1px #fff;
+ border-right: solid 1px #fff;
+ -webkit-box-shadow: 5px 5px 10px rgba(0,0,0,.8);
+}
+
+/*
+* Top-menu
+*/
+#top-menu {
+ background: #000 url(../images/bottom_shine.png) bottom left repeat-x;
+}
+
+#top-menu {
+ padding: 1em 1em 0em 1em;
+ color: #999;
+ font-family: Verdana, sans-serif;
+}
+
+#top-menu #loggedas {
+ color: #ccc;
+}
+
+#top-menu a {
+ font-weight: bold;
+ color: #999;
+}
+
+#top-menu a:hover {
+ text-decoration: none;
+ color: #fff;
+}
+
+/*
+* Header
+*/
+#header {
+ background: #000 url(../images/bottom_shine.png) bottom left repeat-x;
+ padding: 0.5em 1em 2.3em 1em;
+}
+
+#header > h1 {
+ font-family: Verdana, sans-serif;
+}
+
+/*
+* Project-menu
+*/
+/* Prevent the project-menu to overflow into right, instead continue on a new line */
+#main-menu {
+ right: 6px;
+ margin-right: 0;
+}
+
+/* Project-menu link containers (ul > li == tab) */
+#main-menu li {
+ background: #111 url(../images/bottom_shine.png) 0px -40px repeat-x;
+ border: solid 1px #333;
+ border-width: 1px 1px 0px 0px;
+ font-size: 1.00em;
+ font-family: "Myriad Pro", "Helvetica Neue", Helvetica, Arial, Verdana, sans-serif;
+ margin: 0;
+}
+
+/* Project-menu links (ul > li > a == textlink) */
+#main-menu li a,
+#main-menu li a.selected,
+#main-menu li a:hover {
+ text-decoration: none;
+ line-height: 20px;
+ text-shadow: 1px 1px 1px rgba(0,0,0,.8);
+}
+
+
+#main-menu li a,
+#main-menu li a:hover {
+ background: none;
+ color: #aaa;
+ padding: 5px 10px 5px 10px;
+ font-weight: normal;
+}
+
+#main-menu li a.selected,
+#main-menu li a.selected:hover {
+ background: #222 url(../images/bottom_shine.png) 0px -36px repeat-x;
+ border-color: #444;
+ color: #d5d5d5;
+ font-weight: bold;
+}
+
+#main-menu li:hover {
+ background: #333 url(../images/bottom_shine.png) 0px -40px repeat-x;
+ border-color: #555;
+}
+
+#main-menu li:hover a {
+ color: #fff;
+}
+
+/* Project-menu first/last tab roundings (for KHTML [Konqueror], Gecko [Mozilla] and WebKit [Safari/Chrome]) */
+#main-menu li:first-child {
+ -khtml-border-radius-topleft: 5px;
+ -moz-border-radius-topleft: 5px;
+ -webkit-border-top-left-radius: 5px;
+}
+
+#main-menu li:last-child {
+ -khtml-border-radius-topright: 5px;
+ -moz-border-radius-topright: 5px;
+ -webkit-border-top-right-radius: 5px;
+}
+
+/* Redmine core project-menu links */
+#main-menu li a.overview,
+#main-menu li a.overview:hover {
+ background: url(../images/fugue/document-text-image.png) 6px center no-repeat;
+ padding-left: 26px;
+}
+
+#main-menu li a.activity,
+#main-menu li a.activity:hover {
+ background: url(../images/fugue/lightning.png) 6px center no-repeat;
+ padding-left: 26px;
+}
+
+#main-menu li a.roadmap,
+#main-menu li a.roadmap:hover {
+ background: url(../images/fugue/map-pin.png) 6px center no-repeat;
+ padding-left: 26px;
+}
+
+#main-menu li a.issues,
+#main-menu li a.issues:hover {
+ background: url(../images/fugue/ticket.png) 6px center no-repeat;
+ padding-left: 26px;
+}
+
+#main-menu li a.new-issue,
+#main-menu li a.new-issue:hover {
+ background: url(../images/fugue/ticket--plus.png) 6px center no-repeat;
+ padding-left: 26px;
+}
+
+#main-menu li a.news,
+#main-menu li a.news:hover {
+ background: url(../images/fugue/newspaper.png) 6px center no-repeat;
+ padding-left: 26px;
+}
+
+#main-menu li a.documents,
+#main-menu li a.documents:hover {
+ background: url(../images/fugue/documents-text.png) 6px center no-repeat;
+ padding-left: 26px;
+}
+
+#main-menu li a.wiki,
+#main-menu li a.wiki:hover {
+ background: url(../images/fugue/document-horizontal-text.png) 6px center no-repeat;
+ padding-left: 26px;
+}
+
+#main-menu li a.boards,
+#main-menu li a.boards:hover {
+ background: url(../images/fugue/balloons.png) 6px center no-repeat;
+ padding-left: 26px;
+}
+
+#main-menu li a.files,
+#main-menu li a.files:hover {
+ background: url(../images/fugue/document-zipper.png) 6px center no-repeat;
+ padding-left: 26px;
+}
+
+#main-menu li a.repository,
+#main-menu li a.repository:hover {
+ background: url(../images/fugue/safe.png) 6px center no-repeat;
+ padding-left: 26px;
+}
+
+#main-menu li a.settings,
+#main-menu li a.settings:hover {
+ background: url(../images/fugue/equalizer.png) 6px center no-repeat;
+ padding-left: 26px;
+}
+
+/* Third-party project-menu links */
+
+/*************************************************************************
+THIRD-PARTY DECLARATIONS FOR PROJECT-MENU LINKS - START
+*************************************************************************/
+/* Budget plugin */
+ /* > 0.2.0 */
+#main-menu li a.deliverables,
+#main-menu li a.deliverables:hover,
+ /* <= 0.2.0 */
+#main-menu li a.budget,
+#main-menu li a.budget:hover {
+ background: url(../images/fugue/money--pencil.png) 6px center no-repeat;
+ padding-left: 26px;
+}
+
+/* Bugcloud plugin */
+#main-menu li a.bugcloud,
+#main-menu li a.bugcloud:hover {
+ background: url(../images/fugue/tags-label.png) 6px center no-repeat;
+ padding-left: 26px;
+}
+
+/* Burndowns plugin */
+#main-menu li a.burndown,
+#main-menu li a.burndown:hover {
+ background: url(../images/fugue/burn.png) 6px center no-repeat;
+ padding-left: 26px;
+}
+
+/* Charts plugin */
+#main-menu li a.charts,
+#main-menu li a.charts:hover {
+ background: url(../images/fugue/monitor.png) 6px center no-repeat;
+ padding-left: 26px;
+}
+
+/* Code Review plugin */
+#main-menu li a.code-review,
+#main-menu li a.code-review:hover {
+ background: url(../images/fugue/ruler--pencil.png) 6px center no-repeat;
+ padding-left: 26px;
+}
+
+/* Customer plugin */
+#main-menu li a.customers,
+#main-menu li a.customers:hover {
+ background: url(../images/fugue/user-business.png) 6px center no-repeat;
+ padding-left: 26px;
+}
+
+/* Embedded plugin */
+#main-menu li a.embedded,
+#main-menu li a.embedded:hover {
+ background: url(../images/fugue/layout-select-content.png) 6px center no-repeat;
+ padding-left: 26px;
+}
+
+/* EzFAQ plugin */
+#main-menu li a.ezfaq,
+#main-menu li a.ezfaq:hover {
+ background: url(../images/fugue/question-balloon.png) 6px center no-repeat;
+ padding-left: 26px;
+}
+
+/* EzLibrarian plugin */
+ /* > 0.0.2 (AKA EzLibrarian) */
+#main-menu li a.treasures,
+#main-menu li a.treasures:hover {
+ background: url(../images/fugue/trophy.png) 6px center no-repeat;
+ padding-left: 26px;
+}
+ /* <= 0.0.2 (AKA EzBookshelf) */
+#main-menu li a.books,
+#main-menu li a.books:hover {
+ background: url(../images/fugue/books-stack.png) 6px center no-repeat;
+ padding-left: 26px;
+}
+
+/* Google Calendar plugin */
+#main-menu li a.google-calendar,
+#main-menu li a.google-calendar:hover {
+ background: url(../images/fugue/calendar-month.png) 6px center no-repeat;
+ padding-left: 26px;
+}
+
+/* Invoice plugin */
+ /* > 0.1.0 */
+#main-menu li a.invoice,
+#main-menu li a.invoice:hover,
+ /* <= 0.1.0 */
+#main-menu li a.Invoices,
+#main-menu li a.Invoices:hover {
+ background: url(../images/fugue/notebooks--pencil.png) 6px center no-repeat;
+ padding-left: 26px;
+}
+
+/* Schedules plugin */
+#main-menu li a.schedules,
+#main-menu li a.schedules:hover {
+ background: url(../images/fugue/report--exclamation.png) 6px center no-repeat;
+ padding-left: 26px;
+}
+
+/* Scores plugin */
+ /* > 0.0.1 */
+#main-menu li a.scores,
+#main-menu li a.scores:hover,
+ /* <= 0.0.1 */
+#main-menu li a.Scores,
+#main-menu li a.Scores:hover {
+ background: url(../images/fugue/ui-progress-bar.png) 6px center no-repeat;
+ padding-left: 26px;
+}
+
+/* Scrum plugin */
+#main-menu li a.scrum,
+#main-menu li a.scrum:hover {
+ background: url(../images/fugue/projection-screen--pencil.png) 6px center no-repeat;
+ padding-left: 26px;
+}
+
+/* Scrumdashboard plugin */
+#main-menu li a.dashboard,
+#main-menu li a.dashboard:hover {
+ background: url(../images/fugue/dashboard--pencil.png) 6px center no-repeat;
+ padding-left: 26px;
+}
+
+/* Simple CI plugin */
+ /* > 1.0 */
+#main-menu li a.simple-ci,
+#main-menu li a.simple-ci:hover,
+ /* <= 1.0 */
+#main-menu li a.Integration,
+#main-menu li a.Integration:hover {
+ background: url(../images/fugue/pill--exclamation.png) 6px center no-repeat;
+ padding-left: 26px;
+}
+
+/* Status Updates plugin */
+ /* Initial release by Brian Terlson and fork by Eric Davis*/
+#main-menu li a.Status.Updates,
+#main-menu li a.Status.Updates:hover,
+ /* Fork by Joe Naha */
+#main-menu li a.statuses,
+#main-menu li a.statuses:hover {
+ background: url(../images/fugue/tick-shield.png) 6px center no-repeat;
+ padding-left: 26px;
+}
+
+/* Tab plugin */
+#main-menu li a.tab,
+#main-menu li a.tab:hover {
+ background: url(../images/fugue/layout-2.png) 6px center no-repeat;
+ padding-left: 26px;
+}
+
+/* Taskboard plugin */
+#main-menu li a.task-board,
+#main-menu li a.task-board:hover {
+ background: url(../images/fugue/dashboard--pencil.png) 6px center no-repeat;
+ padding-left: 26px;
+}
+
+/* Todo-lists plugin */
+ /* > 0.0.3.4 */
+#main-menu li a.todos,
+#main-menu li a.todos:hover,
+ /* <= 0.0.3.4 */
+#main-menu li a.todo-lists,
+#main-menu li a.todo-lists:hover {
+ background: url(../images/fugue/hammer--arrow.png) 6px center no-repeat;
+ padding-left: 26px;
+}
+/*************************************************************************
+THIRD-PARTY DECLARATIONS FOR PROJECT-MENU LINKS - END
+*************************************************************************/
+
+/* Project-menu tab highlight when link == the selected page (has the class .selected) */
+#main-menu li a.selected {
+ background-color: #333;
+}
+
+/*
+* Headings
+*/
+h1, h2, h3, h4, h5 {
+ font-family: "Myriad Pro", "Lucida Grande", "Helvetica Neue", Helvetica, Arial, Verdana, sans-serif;
+}
+
+h2, h3, h4, .wiki h1, .wiki h2, .wiki h3 {
+ border-bottom: none;
+}
+
+/*
+* Footer
+*/
+#footer {
+ border: none;
+}
+
+#footer a {
+ color: #ccc;
+ font-weight: normal;
+}
+
+#footer a:hover {
+ color: #fff;
+ text-decoration: none;
+}
+
+/*
+* Sidebar
+*/
+#sidebar h1, #sidebar h2, #sidebar h3, #sidebar h4, #sidebar h5 {
+ color: #efefef;
+ text-shadow: 1px 1px 1px rgba(0,0,0,.8);
+}
+
+#sidebar {
+ color: #ccc;
+ width: 19%;
+ text-shadow: 1px 1px 1px rgba(0,0,0,.6);
+}
+
+#sidebar a {
+ color: #aaa;
+ font-weight: normal;
+}
+
+/*
+* Generic Tables
+*/
+/* Table headers */
+table.list thead th {
+ background: #ccc url(../images/shadow_top.png) left center repeat-x;
+ font-size: 0.94em;
+ border-color: #999;
+ border-color: #d5d5d5 #d5d5d5 #aaa;
+ border-style: solid;
+ border-width: 1px;
+}
+
+/* Table header links */
+table.list thead th a,
+table.list thead th a:hover {
+ color: #444;
+ text-shadow: 1px 1px 1px rgba(0,0,0,.3);
+ border: none;
+}
+
+table.list thead th a:hover {
+ color: #ddd;
+}
+
+/* Table data (cells) */
+table.list td {
+ background-image: url(../images/shadow_top.png);
+ background-repeat: repeat-x;
+ background-position: 0px -65px;
+ vertical-align: middle;
+ font-size: 0.94em;
+}
+
+/*
+* Issue-List Tables
+*/
+/* Table-row links */
+table.list tr.issue a {
+ color: #666;
+}
+
+table.list tr.issue a:hover {
+ color: #999;
+ border-bottom: dotted 1px #999;
+ text-decoration: none;
+}
+
+/* Table-row colouring by priority (styles provided by Wynn Netherland) */
+tr.odd.priority-5, table.list tbody tr.odd.priority-5:hover { color: #900; font-weight: bold; }
+tr.odd.priority-5 { background: #ffc4c4; }
+tr.even.priority-5, table.list tbody tr.even.priority-5:hover { color: #900; font-weight: bold; }
+tr.even.priority-5 { background: #ffd4d4; }
+tr.priority-5 a, tr.priority-5:hover a { color: #900; }
+tr.odd.priority-5 td, tr.even.priority-5 td { border-color: #ffb4b4; }
+
+tr.odd.priority-4, table.list tbody tr.odd.priority-4:hover { color: #900; }
+tr.odd.priority-4 { background: #ffc4c4; }
+tr.even.priority-4, table.list tbody tr.even.priority-4:hover { color: #900; }
+tr.even.priority-4 { background: #ffd4d4; }
+tr.priority-4 a { color: #900; }
+tr.odd.priority-4 td, tr.even.priority-4 td { border-color: #ffb4b4; }
+
+tr.odd.priority-3, table.list tbody tr.odd.priority-3:hover { color: #900; }
+tr.odd.priority-3 { background: #fee; }
+tr.even.priority-3, table.list tbody tr.even.priority-3:hover { color: #900; }
+tr.even.priority-3 { background: #fff2f2; }
+tr.priority-3 a { color: #900; }
+tr.odd.priority-3 td, tr.even.priority-3 td { border-color: #fcc; }
+
+tr.odd.priority-1, table.list tbody tr.odd.priority-1:hover { color: #559; }
+tr.odd.priority-1 { background: #eaf7ff; }
+tr.even.priority-1, table.list tbody tr.even.priority-1:hover { color: #559; }
+tr.even.priority-1 { background: #f2faff; }
+tr.priority-1 a { color: #559; }
+tr.odd.priority-1 td, tr.even.priority-1 td { border-color: #add7f3; }
+
+/* Table-row link-colouring by priority (respecting the table-row colouring styles above) */
+table.list tr.priority-5 a,
+table.list tr.priority-4 a,
+table.list tr.priority-3 a { color: #900; }
+
+table.list tr.priority-1 a { color: #559; }
+
+/*
+* Progressbars
+*/
+/* Generic progressbars */
+table.progress td.todo,
+table.progress td.done,
+table.progress td.closed {
+ background: #666 url(../images/middle_shine.png) left center repeat-x;
+ height: 25px;
+ border: none;
+}
+
+table.progress td.todo {
+ background: #fff;
+}
+
+table.progress td.done {
+ background-color: #37b3ff;
+}
+
+table.progress td.closed {
+ background-color: #2187C6;
+}
+
+/* Issuelist progressbars */
+table.list table.progress td {
+ height: 15px;
+}
+
+p.pourcent {
+ font-size: 1.25em;
+}
+
+/*
+* Icons
+*/
+.icon {
+ background-position: left top;
+ background-repeat: no-repeat;
+ padding-left: 20px;
+ padding-top: 2px;
+ padding-bottom: 3px;
+ line-height: 16px;
+ margin-left: 5px;
+}
+
+.icon22 {
+ background-position: 0% 40%;
+ background-repeat: no-repeat;
+ padding-left: 26px;
+ line-height: 22px;
+ vertical-align: middle;
+}
+
+/* Icons replaced by Fugue icons */
+.icon-add { background-image: url(../images/fugue/plus-small.png); }
+.icon-edit { background-image: url(../images/fugue/pencil-small.png); }
+.icon-copy { background-image: url(../images/fugue/documents.png); }
+.icon-del { background-image: url(../images/fugue/ticket--minus.png); }
+.icon-move { background-image: url(../images/fugue/ticket--arrow.png); }
+.icon-save { background-image: url(../images/fugue/disk-black.png); }
+.icon-cancel { background-image: url(../images/fugue/arrow.png); }
+
+.icon-time { background-image: url(../images/fugue/clock.png); }
+.icon-time-add { background-image: url(../images/fugue/clock--plus.png); }
+
+.icon-fav { background-image: url(../images/fugue/star.png); }
+.icon-fav-off { background-image: url(../images/fugue/star-empty.png); }
+
+/* Icons not replaced by Fugue icons
+.icon-file { background-image: url(/images/file.png); }
+.icon-folder { background-image: url(/images/folder.png); }
+.open .icon-folder { background-image: url(/images/folder_open.png); }
+.icon-package { background-image: url(/images/package.png); }
+.icon-home { background-image: url(/images/home.png); }
+.icon-user { background-image: url(/images/user.png); }
+.icon-mypage { background-image: url(/images/user_page.png); }
+.icon-admin { background-image: url(/images/admin.png); }
+.icon-projects { background-image: url(/images/projects.png); }
+.icon-help { background-image: url(/images/help.png); }
+.icon-attachment { background-image: url(/images/attachment.png); }
+.icon-index { background-image: url(/images/index.png); }
+.icon-history { background-image: url(/images/history.png); }
+.icon-stats { background-image: url(/images/stats.png); }
+.icon-warning { background-image: url(/images/warning.png); }
+.icon-reload { background-image: url(/images/reload.png); }
+.icon-lock { background-image: url(/images/locked.png); }
+.icon-unlock { background-image: url(/images/unlock.png); }
+.icon-checked { background-image: url(/images/true.png); }
+.icon-details { background-image: url(/images/zoom_in.png); }
+.icon-report { background-image: url(/images/report.png); }
+.icon-comment { background-image: url(/images/comment.png); }
+
+.icon22-projects { background-image: url(/images/22x22/projects.png); }
+.icon22-users { background-image: url(/images/22x22/users.png); }
+.icon22-tracker { background-image: url(/images/22x22/tracker.png); }
+.icon22-role { background-image: url(/images/22x22/role.png); }
+.icon22-workflow { background-image: url(/images/22x22/workflow.png); }
+.icon22-options { background-image: url(/images/22x22/options.png); }
+.icon22-notifications { background-image: url(/images/22x22/notifications.png); }
+.icon22-authent { background-image: url(/images/22x22/authent.png); }
+.icon22-info { background-image: url(/images/22x22/info.png); }
+.icon22-comment { background-image: url(/images/22x22/comment.png); }
+.icon22-package { background-image: url(/images/22x22/package.png); }
+.icon22-settings { background-image: url(/images/22x22/settings.png); }
+.icon22-plugin { background-image: url(/images/22x22/plugin.png); }
+*/
+
+/*
+* Buttons
+*/
+input[type="button"], input[type="submit"], input[type="reset"] {
+ background-color: #f2f2f2;
+ color: #222222;
+ border: 1px outset #cccccc;
+}
+input[type="button"]:hover, input[type="submit"]:hover, input[type="reset"]:hover {
+ background-color: #ccccbb;
+}
+
+/*
+* Fields
+*/
+input[type="text"], textarea, select {
+ padding: 2px;
+ border: 1px solid #d7d7d7;
+}
+input[type="text"] {
+ padding: 3px;
+}
+input[type="text"]:focus, textarea:focus, select:focus {
+ border: 1px solid #888866;
+}
+
+/*
+* Boxes
+*/
+div.box {
+ border: none;
+ background: none;
+}
+
+/*
+* Quicksearch
+*/
+div#quick-search a {
+ padding-left: 20px;
+ background: url(../images/fugue/magnifier-left.png) left center no-repeat;
+ font-weight: normal;
+}
+
+/*
+* Issue Journals
+*/
+/* Issue-history (journal) UL for issue-field changes*/
+#history ul {
+ list-style: disc;
+ margin-top: 8px;
+ margin-left: 14px;
+ padding-left: 20px;
+ font-size: 94%;
+}
+
+/* Issue-history comment UL font-size reset*/
+#history .wiki > ul {
+ font-size: inherit; /* back to 81% to workaround the 94% of #history ul */
+}
+
+/* Generic Issue-journals */
+#history .journal {
+ border-bottom: solid 1px #d5d5d5;
+ padding-bottom: 14px;
+}
+
+/* Issue-journal paragraphs */
+#history .journal p {
+ margin-bottom: 8px;
+}
+
+/* Issue-journals, first paragraph after .contextual, note-image insertion */
+#history .journal .contextual + p:before { /* Not on <= IE7 */
+ vertical-align: -12%;
+ padding-right: 5px;
+ content: url(../images/fugue/sticky-note.png);
+}
+
+/* Fixes for issue-journals when editing them inline */
+#history .journal > form > p {
+ padding-left: 0px;
+ background: none;
+}
+
+/*
+* Roadmap versions
+*/
+div#version-summary {
+ background: transparent;
+}
+
+/*
+* Issue-report zoom-images
+*/
+div.nosidebar#main > div#content > div.splitcontentleft > h3,
+div.nosidebar#main > div#content > div.splitcontentright > h3 {
+ margin-top: 15px;
+}
+
+/*
+* Repository-browser
+*/
+table#browser tr td.filename a {
+ color: #666;
+ font-weight: normal;
+}
+
+table#browser tr td.filename a:hover {
+ color: #b3b3b3;
+}
+
+/*
+* Repository-statistics images
+*/
+div.nosidebar#main > div#content embed {
+ display: block;
+ margin-top: 28px;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+/*
+* Context-menu
+*/
+/* Context-menu link font-weight ("a:hover {color:xxx;}" isn't settable...) */
+#context-menu a {
+ font-weight: normal;
+}
+
+/*************************************************************************
+THIRD-PARTY DECLARATIONS FOR NON PROJECT-MENU ITEMS - START
+*************************************************************************/
+/* Burndowns plugin */
+div#main > div#content > p > img {
+ display: block;
+ margin-top: 28px;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+/* Charts plugin */
+div#main > div#content > div.splitcontentright > object {
+ margin-top: 28px;
+}
+
+/* Google-Calendar & Tab plugin */
+div#main > div#content > iframe {
+ display: block;
+ margin-top: 28px;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+/* Graphs plugin */
+div#main > div#content > embed {
+ margin-top: 28px;
+ margin-bottom: 20px;
+}
+
+div.nosidebar#main > div#content > fieldset#target_version_graph > embed {
+ margin-top: 0px;
+}
+
+/* Taskboard plugin */
+#task_board tr > td {
+ height: 0.75em;
+}
+/*************************************************************************
+THIRD-PARTY DECLARATIONS FOR NON PROJECT-MENU ITEMS - END
+*************************************************************************/
+
+
+/*************************************************************************
+Custom tweaks based on other themes
+*************************************************************************/
+
+body {background: white; }
+#top-menu {background-color: white; color: black; }
+#top-menu a {color: black; }
+#top-menu a:hover {color: black; text-decoration: underline; text-shadow: 1px 1px 1px rgba(0,0,0,.5); }
+#header {background: none; color: black; }
+#header a {color: black; }
+#top-menu #loggedas { color: black; }
+
+#content { background-image: none; border: 1px solid #000; -webkit-box-shadow: 2px 2px 4px rgba(0,0,0,.8); }
+
+#content > h2 {font-size: 3em; text-shadow: 1px 1px 1px rgba(0,0,0,.5); background-color: #EDF3FE; margin: -6px -10px 10px -15px; padding: 10px 20px; } /* Title of the content section */
+#main { background: white; }
+#sidebar { padding-top: 20px; } /* lower the text below any content headers */
+#sidebar, #sidebar h1, #sidebar h2, #sidebar h3, #sidebar h4, #sidebar h5 { color: #666; text-shadow: none; }
+#sidebar a { color: #000000; }
+
+#footer, #footer a { color: #AAAAAA;}
+#footer a { color: #888888; }
+#footer a:hover { color: #888888; text-decoration: underline; }
+
+
+
+/**** Project menus ****/
+/* Link color */
+#main-menu li a {color: #222222;}
+#main-menu li a.selected {color: #111111;}
+#main-menu li a:hover, #main-menu li a.selected:hover {color: #000000;}
+
+/* Background */
+#main-menu li {background-color: #FFFFFF; border-color: #DDDDDD; border-width: 1px 1px 1px 1px; }
+#main-menu li:hover {background-color: #DDDDDD;}
+#main-menu li a, #main-menu li a:hover {}
+#main-menu li a.selected, #main-menu li a.selected:hover {background-color: #EEEEEE;}
+
+#main-menu li a, #main-menu li a.selected, #main-menu li a:hover {text-shadow: none;} /* Remove drop shadow */
+
+#top-menu { border-bottom: 2px solid #FF4719; }
+
+/* Project-menu first/last tab bottom roundings (for KHTML [Konqueror], Gecko [Mozilla] and WebKit [Safari/Chrome]) */
+#main-menu li:first-child {
+ -khtml-border-radius-bottomleft: 5px;
+ -moz-border-radius-bottomleft: 5px;
+ -webkit-border-bottom-left-radius: 5px;
+}
+
+#main-menu li:last-child {
+ -khtml-border-radius-bottomright: 5px;
+ -moz-border-radius-bottomright: 5px;
+ -webkit-border-bottom-right-radius: 5px;
+}
+
+/*************************************************************************
+Additional wiki styles
+*************************************************************************/
+
+.button {
+ padding-left: .25em;
+ padding-right: .25em;
+ background:#507aaa;
+ color: white;
+ font-weight: bold;
+}
+
+.wiki p.see-also, .wiki p.caution, .wiki p.important, .wiki p.info, .wiki p.tip, .wiki p.note,
+.wiki span.see-also, .wiki span.caution, .wiki span.important, .wiki span.info, .wiki span.tip, .wiki span.note {
+ display: block;
+ margin-top: .5em;
+ margin-bottom: .5em;
+
+ padding: 4px 4px 4px 48px;
+ min-height: 33px;
+}
+.wiki p.smallsee-also, .wiki p.smallcaution, .wiki p.smallimportant, .wiki p.smallinfo, .wiki p.smalltip, .wiki p.smallnote,
+.wiki span.smallsee-also, .wiki span.smallcaution, .wiki span.smallimportant, .wiki span.smallinfo, .wiki span.smalltip, .wiki span.smallnote {
+ display: block;
+ margin-top: .5em;
+ margin-bottom: .5em;
+
+ padding: 4px 4px 4px 34px;
+ min-height: 24px;
+}
+
+.wiki p.see-also, .wiki span.see-also {
+ background: url(../images/wiki_styles/see-also.png) 4px 4px no-repeat #f5fffa;
+ border: 1px solid #AAB1AD;
+}
+.wiki p.smallsee-also, .wiki span.smallsee-also {
+ background: url(../images/wiki_styles/see-also_small.png) 4px 4px no-repeat #f5fffa;
+ border: 1px solid #AAB1AD;
+}
+
+.wiki p.caution, .wiki span.caution {
+ background: url(../images/wiki_styles/caution.png) 4px 6px no-repeat #f5fffa;
+ border: 1px solid #AAB1AD;
+}
+.wiki p.smallcaution, .wiki span.smallcaution {
+ background: url(../images/wiki_styles/caution_small.png) 4px 4px no-repeat #f5fffa;
+ border: 1px solid #AAB1AD;
+}
+
+.wiki p.important, .wiki span.important {
+ background: url(../images/wiki_styles/important.png) 4px 7px no-repeat #F0F8FF;
+ border: 1px solid #C1C8CF;
+}
+.wiki p.smallimportant, .wiki span.smallimportant {
+ background: url(../images/wiki_styles/important_small.png) 4px 6px no-repeat #F0F8FF;
+ border: 1px solid #C1C8CF;
+}
+
+.wiki p.info, .wiki span.info {
+ background: url(../images/wiki_styles/info.png) 4px 4px no-repeat #FFFFE0;
+ border: 1px solid #FFFF00;
+}
+.wiki p.smallinfo, .wiki span.smallinfo {
+ background: url(../images/wiki_styles/info_small.png) 4px 4px no-repeat #FFFFE0;
+ border: 1px solid #FFFF00;
+}
+
+.wiki p.tip, .wiki span.tip {
+ background: url(../images/wiki_styles/tip.png) 4px 4px no-repeat #F5FFFA;
+ border: 1px solid #C7CFCA;
+}
+.wiki p.smalltip, .wiki span.smalltip {
+ background: url(../images/wiki_styles/tip_small.png) 4px 5px no-repeat #F5FFFA;
+ border: 1px solid #C7CFCA;
+}
+
+.wiki p.note, .wiki span.note {
+ background: url(../images/wiki_styles/note.png) 6px 4px no-repeat #F5FFFA;
+ border: 1px solid #C7CFCA;
+}
+.wiki p.smallnote, .wiki span.smallnote {
+ background: url(../images/wiki_styles/note_small.png) 5px 4px no-repeat #F5FFFA;
+ border: 1px solid #C7CFCA;
+}
\ No newline at end of file
diff --git a/test/functional/auto_completes_controller_test.rb b/test/functional/auto_completes_controller_test.rb
index db246c30..0cea1112 100644
--- a/test/functional/auto_completes_controller_test.rb
+++ b/test/functional/auto_completes_controller_test.rb
@@ -20,19 +20,19 @@ class AutoCompletesControllerTest < ActionController::TestCase
test 'should return issues matching a given id' do
@project = Project.find('subproject1')
@issue_21 = Issue.generate_for_project!(@project, :id => 21)
- @issue_101 = Issue.generate_for_project!(@project, :id => 101)
- @issue_102 = Issue.generate_for_project!(@project, :id => 102)
- @issue_with_subject = Issue.generate_for_project!(@project, :subject => 'This has 1 in the subject')
+ @issue_2101 = Issue.generate_for_project!(@project, :id => 2101)
+ @issue_2102 = Issue.generate_for_project!(@project, :id => 2102)
+ @issue_with_subject = Issue.generate_for_project!(@project, :subject => 'This has 21 in the subject')
- get :issues, :project_id => @project.id, :q => '1'
+ get :issues, :project_id => @project.id, :q => '21'
assert_response :success
assert_not_nil assigns(:issues)
- assert assigns(:issues).include?(Issue.find(13))
assert assigns(:issues).include?(@issue_21)
- assert assigns(:issues).include?(@issue_101)
- assert assigns(:issues).include?(@issue_102)
+ assert assigns(:issues).include?(@issue_2101)
+ assert assigns(:issues).include?(@issue_2102)
assert assigns(:issues).include?(@issue_with_subject)
+ assert_equal assigns(:issues).size, assigns(:issues).uniq.size, "Issues list includes duplicates"
end
def test_auto_complete_with_scope_all_and_cross_project_relations
diff --git a/test/functional/help_controller_test.rb b/test/functional/help_controller_test.rb
new file mode 100644
index 00000000..f37c7ab6
--- /dev/null
+++ b/test/functional/help_controller_test.rb
@@ -0,0 +1,15 @@
+require 'test_helper'
+
+class HelpControllerTest < ActionController::TestCase
+ test "renders wiki_syntax properly" do
+ get "wiki_syntax"
+
+ assert_select "h1", "Wiki Syntax Quick Reference"
+ end
+
+ test "renders wiki_syntax_detailed properly" do
+ get "wiki_syntax_detailed"
+
+ assert_select "h1", "Wiki Formatting"
+ end
+end