Rewrite the Gantt chart. #6276
This version of the Gantt chart supports nested charts. So Projects, Versions, and Issues will be nested underneath their parents correctly. Additional features: * Move all Gantt code to Redmine::Helpers::Gantt class instead of having it in the Gantt class, controller, and view * Recursive and nest sub-projects * Recursive and nest versions * Recursive and nest issues * Draw a line showing when a Project is active and it's progress * Draw a line showing when a Version is active and it's progress * Show a version's % complete * Change the color of Projects, Versions, and Issues if they are late or behind schedule * Added Project#start_date and #due_date * Added Project#completed_percent * Use a mini-gravatar on the Gantt chart * Added tests for the Gantt rendering git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4072 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Vendored
+1
-1
@@ -6,7 +6,7 @@ task :default => :spec
|
||||
|
||||
desc 'Run all application-specific specs'
|
||||
Spec::Rake::SpecTask.new(:spec) do |t|
|
||||
t.rcov = true
|
||||
# t.rcov = true
|
||||
end
|
||||
|
||||
desc "Report code statistics (KLOCs, etc) from the application"
|
||||
|
||||
+6
-3
@@ -26,6 +26,9 @@ module GravatarHelper
|
||||
# decorational picture, the alt text should be empty according to the
|
||||
# XHTML specs.
|
||||
:alt => '',
|
||||
|
||||
# The title text to use for the img tag for the gravatar.
|
||||
:title => '',
|
||||
|
||||
# The class to assign to the img tag for the gravatar.
|
||||
:class => 'gravatar',
|
||||
@@ -48,8 +51,8 @@ module GravatarHelper
|
||||
def gravatar(email, options={})
|
||||
src = h(gravatar_url(email, options))
|
||||
options = DEFAULT_OPTIONS.merge(options)
|
||||
[:class, :alt, :size].each { |opt| options[opt] = h(options[opt]) }
|
||||
"<img class=\"#{options[:class]}\" alt=\"#{options[:alt]}\" width=\"#{options[:size]}\" height=\"#{options[:size]}\" src=\"#{src}\" />"
|
||||
[:class, :alt, :size, :title].each { |opt| options[opt] = h(options[opt]) }
|
||||
"<img class=\"#{options[:class]}\" alt=\"#{options[:alt]}\" title=\"#{options[:title]}\" width=\"#{options[:size]}\" height=\"#{options[:size]}\" src=\"#{src}\" />"
|
||||
end
|
||||
|
||||
# Returns the base Gravatar URL for the given email hash. If ssl evaluates to true,
|
||||
@@ -82,4 +85,4 @@ module GravatarHelper
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
+15
-9
@@ -4,34 +4,40 @@ require 'active_support' # to get "returning"
|
||||
require File.dirname(__FILE__) + '/../lib/gravatar'
|
||||
include GravatarHelper, GravatarHelper::PublicMethods, ERB::Util
|
||||
|
||||
context "gravatar_url with a custom default URL" do
|
||||
setup do
|
||||
describe "gravatar_url with a custom default URL" do
|
||||
before(:each) do
|
||||
@original_options = DEFAULT_OPTIONS.dup
|
||||
DEFAULT_OPTIONS[:default] = "no_avatar.png"
|
||||
@url = gravatar_url("somewhere")
|
||||
end
|
||||
|
||||
specify "should include the \"default\" argument in the result" do
|
||||
it "should include the \"default\" argument in the result" do
|
||||
@url.should match(/&default=no_avatar.png/)
|
||||
end
|
||||
|
||||
teardown do
|
||||
after(:each) do
|
||||
DEFAULT_OPTIONS.merge!(@original_options)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
context "gravatar_url with default settings" do
|
||||
setup do
|
||||
describe "gravatar_url with default settings" do
|
||||
before(:each) do
|
||||
@url = gravatar_url("somewhere")
|
||||
end
|
||||
|
||||
specify "should have a nil default URL" do
|
||||
it "should have a nil default URL" do
|
||||
DEFAULT_OPTIONS[:default].should be_nil
|
||||
end
|
||||
|
||||
specify "should not include the \"default\" argument in the result" do
|
||||
it "should not include the \"default\" argument in the result" do
|
||||
@url.should_not match(/&default=/)
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
describe "gravatar with a custom title option" do
|
||||
it "should include the title in the result" do
|
||||
gravatar('example@example.com', :title => "This is a title attribute").should match(/This is a title attribute/)
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user