muck-friends 0.1.5 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. data/README.rdoc +9 -2
  2. data/Rakefile +3 -27
  3. data/VERSION +1 -1
  4. data/app/controllers/muck/friends_controller.rb +28 -11
  5. data/app/helpers/muck_friends_helper.rb +110 -48
  6. data/app/views/activity_templates/_follow.html.erb +3 -0
  7. data/app/views/activity_templates/_friends_with.html.erb +3 -0
  8. data/app/views/friends/_all_friends.html.erb +1 -1
  9. data/app/views/friends/_friend_icon.html.erb +1 -0
  10. data/config/muck_friends_routes.rb +3 -1
  11. data/lib/active_record/acts/muck_friend.rb +14 -22
  12. data/lib/active_record/acts/muck_friend_user.rb +7 -2
  13. data/locales/en.yml +14 -7
  14. data/muck-friends.gemspec +41 -5
  15. data/test/rails_root/Rakefile +15 -0
  16. data/test/rails_root/app/views/default/friend_link.html.erb +1 -0
  17. data/test/rails_root/config/database.yml +4 -1
  18. data/test/rails_root/config/environments/cucumber.rb +22 -0
  19. data/test/rails_root/config/global_config.yml +1 -1
  20. data/test/rails_root/db/migrate/20090402234137_create_languages.rb +18 -0
  21. data/test/rails_root/db/migrate/20090426041056_create_countries.rb +15 -0
  22. data/test/rails_root/db/migrate/20090426041103_create_states.rb +18 -0
  23. data/test/rails_root/db/migrate/20090730044139_add_comment_cache.rb +9 -0
  24. data/test/rails_root/features/step_definitions/webrat_steps.rb +57 -23
  25. data/test/rails_root/features/support/env.rb +14 -3
  26. data/test/rails_root/features/support/paths.rb +27 -0
  27. data/test/rails_root/lib/tasks/cucumber.rake +32 -0
  28. data/test/rails_root/public/images/fancybox/fancy_closebox.png +0 -0
  29. data/test/rails_root/public/images/fancybox/fancy_left.png +0 -0
  30. data/test/rails_root/public/images/fancybox/fancy_progress.png +0 -0
  31. data/test/rails_root/public/images/fancybox/fancy_right.png +0 -0
  32. data/test/rails_root/public/images/fancybox/fancy_shadow_e.png +0 -0
  33. data/test/rails_root/public/images/fancybox/fancy_shadow_n.png +0 -0
  34. data/test/rails_root/public/images/fancybox/fancy_shadow_ne.png +0 -0
  35. data/test/rails_root/public/images/fancybox/fancy_shadow_nw.png +0 -0
  36. data/test/rails_root/public/images/fancybox/fancy_shadow_s.png +0 -0
  37. data/test/rails_root/public/images/fancybox/fancy_shadow_se.png +0 -0
  38. data/test/rails_root/public/images/fancybox/fancy_shadow_sw.png +0 -0
  39. data/test/rails_root/public/images/fancybox/fancy_shadow_w.png +0 -0
  40. data/test/rails_root/public/images/fancybox/fancy_title_left.png +0 -0
  41. data/test/rails_root/public/images/fancybox/fancy_title_main.png +0 -0
  42. data/test/rails_root/public/images/fancybox/fancy_title_right.png +0 -0
  43. data/test/rails_root/public/images/nothing.png +0 -0
  44. data/test/rails_root/public/javascripts/jquery/jquery.easing.js +1 -0
  45. data/test/rails_root/public/javascripts/jquery/jquery.fancybox.js +9 -0
  46. data/test/rails_root/public/javascripts/muck.js +7 -3
  47. data/test/rails_root/public/javascripts/muck_activities.js +1 -1
  48. data/test/rails_root/public/stylesheets/jquery/jquery.fancybox.css +44 -0
  49. data/test/rails_root/public/stylesheets/styles.css +8 -3
  50. data/test/rails_root/script/cucumber +5 -3
  51. data/test/rails_root/test/functional/default_controller_test.rb +177 -4
  52. data/test/rails_root/test/functional/friends_controller_test.rb +8 -8
  53. data/test/rails_root/test/unit/user_test.rb +164 -127
  54. metadata +38 -5
  55. data/app/views/activity_templates/follow.html.erb +0 -1
  56. data/app/views/activity_templates/friends_with.html.erb +0 -1
  57. data/test/rails_root/db/schema.rb +0 -153
@@ -3,6 +3,21 @@
3
3
 
4
4
  require(File.join(File.dirname(__FILE__), 'config', 'boot'))
5
5
 
6
+ begin
7
+ require 'rcov/rcovtask'
8
+ Rcov::RcovTask.new do |t|
9
+ t.libs << 'lib'
10
+ t.pattern = 'test/**/*_test.rb'
11
+ t.verbose = true
12
+ t.output_dir = 'coverage'
13
+ t.rcov_opts << '--exclude "gems/*"'
14
+ end
15
+ rescue LoadError
16
+ task :rcov do
17
+ abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
18
+ end
19
+ end
20
+
6
21
  require 'rake'
7
22
  require 'rake/testtask'
8
23
  require 'rake/rdoctask'
@@ -0,0 +1 @@
1
+ <%= friend_link(current_user, @user) %>
@@ -3,7 +3,7 @@ development:
3
3
  database: db/development.sqlite3
4
4
  timeout: 5000
5
5
 
6
- test:
6
+ test: &TEST
7
7
  adapter: sqlite3
8
8
  database: db/test.sqlite3
9
9
  timeout: 5000
@@ -12,3 +12,6 @@ production:
12
12
  adapter: sqlite3
13
13
  database: db/production.sqlite3
14
14
  timeout: 5000
15
+
16
+ cucumber:
17
+ <<: *TEST
@@ -0,0 +1,22 @@
1
+ config.cache_classes = true # This must be true for Cucumber to operate correctly!
2
+
3
+ # Log error messages when you accidentally call methods on nil.
4
+ config.whiny_nils = true
5
+
6
+ # Show full error reports and disable caching
7
+ config.action_controller.consider_all_requests_local = true
8
+ config.action_controller.perform_caching = false
9
+
10
+ # Disable request forgery protection in test environment
11
+ config.action_controller.allow_forgery_protection = false
12
+
13
+ # Tell Action Mailer not to deliver emails to the real world.
14
+ # The :test delivery method accumulates sent emails in the
15
+ # ActionMailer::Base.deliveries array.
16
+ config.action_mailer.delivery_method = :test
17
+
18
+ config.gem 'cucumber', :lib => false, :version => '>=0.3.94' unless File.directory?(File.join(Rails.root, 'vendor/plugins/cucumber'))
19
+ config.gem 'webrat', :lib => false, :version => '>=0.4.4' unless File.directory?(File.join(Rails.root, 'vendor/plugins/webrat'))
20
+ config.gem 'rspec', :lib => false, :version => '>=1.2.6' unless File.directory?(File.join(Rails.root, 'vendor/plugins/rspec'))
21
+ config.gem 'rspec-rails', :lib => 'spec/rails', :version => '>=1.2.6' unless File.directory?(File.join(Rails.root, 'vendor/plugins/rspec-rails'))
22
+
@@ -43,7 +43,7 @@ default: &DEFAULT
43
43
  enable_activity_comments: true # Turn on comments in the activity feed
44
44
 
45
45
  # Friend configuration
46
- allow_following: true
46
+ enable_following: true
47
47
  enable_friend_activity: true
48
48
 
49
49
  # ssl
@@ -0,0 +1,18 @@
1
+ class CreateLanguages < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :languages, :force => true do |t|
4
+ t.string :name
5
+ t.string :english_name
6
+ t.string :locale
7
+ t.boolean :supported, :default => true
8
+ t.integer :is_default, :default => false
9
+ end
10
+ add_index :languages, :name
11
+ add_index :languages, :locale
12
+ end
13
+
14
+ def self.down
15
+ drop_table :languages
16
+ end
17
+
18
+ end
@@ -0,0 +1,15 @@
1
+ class CreateCountries < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :countries, :force => true do |t|
4
+ t.string "name", :limit => 128, :default => "", :null => false
5
+ t.string "abbreviation", :limit => 3, :default => "", :null => false
6
+ t.integer "sort", :default => 1000, :null => false
7
+ end
8
+ add_index :countries, :name
9
+ add_index :countries, :abbreviation
10
+ end
11
+
12
+ def self.down
13
+ drop_table :countries
14
+ end
15
+ end
@@ -0,0 +1,18 @@
1
+ class CreateStates < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :states, :force => true do |t|
4
+ t.string "name", :limit => 128, :default => "", :null => false
5
+ t.string "abbreviation", :limit => 3, :default => "", :null => false
6
+ t.integer "country_id", :limit => 8, :null => false
7
+ end
8
+
9
+ add_index :states, :country_id
10
+ add_index :states, :name
11
+ add_index :states, :abbreviation
12
+
13
+ end
14
+
15
+ def self.down
16
+ drop_table :states
17
+ end
18
+ end
@@ -0,0 +1,9 @@
1
+ class AddCommentCache < ActiveRecord::Migration
2
+ def self.up
3
+ add_column :activities, :comment_count, :integer, :default => 0
4
+ end
5
+
6
+ def self.down
7
+ remove_column :activities, :comment_count
8
+ end
9
+ end
@@ -3,29 +3,37 @@ require File.expand_path(File.join(File.dirname(__FILE__), "..", "support", "pat
3
3
  # Commonly used webrat steps
4
4
  # http://github.com/brynary/webrat
5
5
 
6
+ Given /^I am on (.+)$/ do |page_name|
7
+ visit path_to(page_name)
8
+ end
9
+
6
10
  When /^I go to (.+)$/ do |page_name|
7
11
  visit path_to(page_name)
8
12
  end
9
13
 
10
- When /^I press "(.*)"$/ do |button|
14
+ When /^I press "([^\"]*)"$/ do |button|
11
15
  click_button(button)
12
16
  end
13
17
 
14
- When /^I follow "(.*)"$/ do |link|
18
+ When /^I follow "([^\"]*)"$/ do |link|
15
19
  click_link(link)
16
20
  end
17
21
 
18
- When /^I fill in "(.*)" with "(.*)"$/ do |field, value|
22
+ When /^I follow "([^\"]*)" within "([^\"]*)"$/ do |link, parent|
23
+ click_link_within(parent, link)
24
+ end
25
+
26
+ When /^I fill in "([^\"]*)" with "([^\"]*)"$/ do |field, value|
19
27
  fill_in(field, :with => value)
20
28
  end
21
29
 
22
- When /^I select "(.*)" from "(.*)"$/ do |value, field|
30
+ When /^I select "([^\"]*)" from "([^\"]*)"$/ do |value, field|
23
31
  select(value, :from => field)
24
32
  end
25
33
 
26
34
  # Use this step in conjunction with Rail's datetime_select helper. For example:
27
35
  # When I select "December 25, 2008 10:00" as the date and time
28
- When /^I select "(.*)" as the date and time$/ do |time|
36
+ When /^I select "([^\"]*)" as the date and time$/ do |time|
29
37
  select_datetime(time)
30
38
  end
31
39
 
@@ -36,64 +44,90 @@ end
36
44
  # <%= f.label :alternative %><br />
37
45
  # <%= f.datetime_select :alternative %>
38
46
  # The following steps would fill out the form:
39
- # When I select "November 23, 2004 11:20" as the "Preferred" data and time
40
- # And I select "November 25, 2004 10:30" as the "Alternative" data and time
41
- When /^I select "(.*)" as the "(.*)" date and time$/ do |datetime, datetime_label|
47
+ # When I select "November 23, 2004 11:20" as the "Preferred" date and time
48
+ # And I select "November 25, 2004 10:30" as the "Alternative" date and time
49
+ When /^I select "([^\"]*)" as the "([^\"]*)" date and time$/ do |datetime, datetime_label|
42
50
  select_datetime(datetime, :from => datetime_label)
43
51
  end
44
52
 
45
- # Use this step in conjuction with Rail's time_select helper. For example:
53
+ # Use this step in conjunction with Rail's time_select helper. For example:
46
54
  # When I select "2:20PM" as the time
47
55
  # Note: Rail's default time helper provides 24-hour time-- not 12 hour time. Webrat
48
56
  # will convert the 2:20PM to 14:20 and then select it.
49
- When /^I select "(.*)" as the time$/ do |time|
57
+ When /^I select "([^\"]*)" as the time$/ do |time|
50
58
  select_time(time)
51
59
  end
52
60
 
53
61
  # Use this step when using multiple time_select helpers on a page or you want to
54
62
  # specify the name of the time on the form. For example:
55
63
  # When I select "7:30AM" as the "Gym" time
56
- When /^I select "(.*)" as the "(.*)" time$/ do |time, time_label|
64
+ When /^I select "([^\"]*)" as the "([^\"]*)" time$/ do |time, time_label|
57
65
  select_time(time, :from => time_label)
58
66
  end
59
67
 
60
- # Use this step in conjuction with Rail's date_select helper. For example:
68
+ # Use this step in conjunction with Rail's date_select helper. For example:
61
69
  # When I select "February 20, 1981" as the date
62
- When /^I select "(.*)" as the date$/ do |date|
70
+ When /^I select "([^\"]*)" as the date$/ do |date|
63
71
  select_date(date)
64
72
  end
65
73
 
66
74
  # Use this step when using multiple date_select helpers on one page or
67
75
  # you want to specify the name of the date on the form. For example:
68
76
  # When I select "April 26, 1982" as the "Date of Birth" date
69
- When /^I select "(.*)" as the "(.*)" date$/ do |date, date_label|
77
+ When /^I select "([^\"]*)" as the "([^\"]*)" date$/ do |date, date_label|
70
78
  select_date(date, :from => date_label)
71
79
  end
72
80
 
73
- When /^I check "(.*)"$/ do |field|
81
+ When /^I check "([^\"]*)"$/ do |field|
74
82
  check(field)
75
83
  end
76
84
 
77
- When /^I uncheck "(.*)"$/ do |field|
85
+ When /^I uncheck "([^\"]*)"$/ do |field|
78
86
  uncheck(field)
79
87
  end
80
88
 
81
- When /^I choose "(.*)"$/ do |field|
89
+ When /^I choose "([^\"]*)"$/ do |field|
82
90
  choose(field)
83
91
  end
84
92
 
85
- When /^I attach the file at "(.*)" to "(.*)" $/ do |path, field|
93
+ When /^I attach the file at "([^\"]*)" to "([^\"]*)"$/ do |path, field|
86
94
  attach_file(field, path)
87
95
  end
88
96
 
89
- Then /^I should see "(.*)"$/ do |text|
90
- assert_match /#{text}/m, response.body
97
+ Then /^I should see "([^\"]*)"$/ do |text|
98
+ response.should contain(text)
99
+ end
100
+
101
+ Then /^I should see \/([^\/]*)\/$/ do |regexp|
102
+ regexp = Regexp.new(regexp)
103
+ response.should contain(regexp)
104
+ end
105
+
106
+ Then /^I should not see "([^\"]*)"$/ do |text|
107
+ response.should_not contain(text)
108
+ end
109
+
110
+ Then /^I should not see \/([^\/]*)\/$/ do |regexp|
111
+ regexp = Regexp.new(regexp)
112
+ response.should_not contain(regexp)
91
113
  end
92
114
 
93
- Then /^I should not see "(.*)"$/ do |text|
94
- assert_match /#{text}/m, response.body
115
+ Then /^the "([^\"]*)" field should contain "([^\"]*)"$/ do |field, value|
116
+ field_labeled(field).value.should =~ /#{value}/
95
117
  end
96
118
 
97
- Then /^the "(.*)" checkbox should be checked$/ do |label|
119
+ Then /^the "([^\"]*)" field should not contain "([^\"]*)"$/ do |field, value|
120
+ field_labeled(field).value.should_not =~ /#{value}/
121
+ end
122
+
123
+ Then /^the "([^\"]*)" checkbox should be checked$/ do |label|
98
124
  field_labeled(label).should be_checked
99
125
  end
126
+
127
+ Then /^the "([^\"]*)" checkbox should not be checked$/ do |label|
128
+ field_labeled(label).should_not be_checked
129
+ end
130
+
131
+ Then /^I should be on (.+)$/ do |page_name|
132
+ URI.parse(current_url).path.should == path_to(page_name)
133
+ end
@@ -1,14 +1,25 @@
1
1
  # Sets up the Rails environment for Cucumber
2
- ENV["RAILS_ENV"] = "test"
2
+ ENV["RAILS_ENV"] ||= "cucumber"
3
3
  require File.expand_path(File.dirname(__FILE__) + '/../../config/environment')
4
- require 'factory_girl'
5
4
  require 'cucumber/rails/world'
6
- require 'cucumber/formatter/unicode' # Comment out this line if you don't want Cucumber Unicode support
5
+
6
+ # Comment out the next line if you don't want Cucumber Unicode support
7
+ require 'cucumber/formatter/unicode'
8
+
9
+ # Comment out the next line if you don't want transactions to
10
+ # open/roll back around each scenario
7
11
  Cucumber::Rails.use_transactional_fixtures
12
+
13
+ # Comment out the next line if you want Rails' own error handling
14
+ # (e.g. rescue_action_in_public / rescue_responses / rescue_from)
8
15
  Cucumber::Rails.bypass_rescue
9
16
 
10
17
  require 'webrat'
18
+ require 'cucumber/webrat/table_locator' # Lets you do table.diff!(table_at('#my_table').to_a)
11
19
 
12
20
  Webrat.configure do |config|
13
21
  config.mode = :rails
14
22
  end
23
+
24
+ require 'cucumber/rails/rspec'
25
+ require 'webrat/core/matchers'
@@ -0,0 +1,27 @@
1
+ module NavigationHelpers
2
+ # Maps a name to a path. Used by the
3
+ #
4
+ # When /^I go to (.+)$/ do |page_name|
5
+ #
6
+ # step definition in webrat_steps.rb
7
+ #
8
+ def path_to(page_name)
9
+ case page_name
10
+
11
+ when /the homepage/
12
+ '/'
13
+
14
+ # Add more mappings here.
15
+ # Here is a more fancy example:
16
+ #
17
+ # when /^(.*)'s profile page$/i
18
+ # user_profile_path(User.find_by_login($1))
19
+
20
+ else
21
+ raise "Can't find mapping from \"#{page_name}\" to a path.\n" +
22
+ "Now, go and add a mapping in #{__FILE__}"
23
+ end
24
+ end
25
+ end
26
+
27
+ World(NavigationHelpers)
@@ -0,0 +1,32 @@
1
+ $LOAD_PATH.unshift(RAILS_ROOT + '/vendor/plugins/cucumber/lib') if File.directory?(RAILS_ROOT + '/vendor/plugins/cucumber/lib')
2
+
3
+ unless ARGV.any? {|a| a =~ /^gems/}
4
+
5
+ begin
6
+ require 'cucumber/rake/task'
7
+ namespace :cucumber do
8
+ Cucumber::Rake::Task.new({:ok => 'db:test:prepare'}, 'Run features that should pass') do |t|
9
+ t.fork = true # You may get faster startup if you set this to false
10
+ t.cucumber_opts = "--tags ~@wip --strict --format #{ENV['CUCUMBER_FORMAT'] || 'pretty'}"
11
+ end
12
+
13
+ Cucumber::Rake::Task.new({:wip => 'db:test:prepare'}, 'Run features that are being worked on') do |t|
14
+ t.fork = true # You may get faster startup if you set this to false
15
+ t.cucumber_opts = "--tags @wip:2 --wip --format #{ENV['CUCUMBER_FORMAT'] || 'pretty'}"
16
+ end
17
+
18
+ desc 'Run all features'
19
+ task :all => [:ok, :wip]
20
+ end
21
+
22
+ task :features => 'cucumber:ok' do
23
+ STDERR.puts "*** The 'features' task is deprecated. See rake -T cucumber ***"
24
+ end
25
+ rescue LoadError
26
+ desc 'cucumber rake task not available (cucumber not installed)'
27
+ task :cucumber do
28
+ abort 'Cucumber rake task is not available. Be sure to install cucumber as a gem or plugin'
29
+ end
30
+ end
31
+
32
+ end
@@ -0,0 +1 @@
1
+ jQuery.easing['jswing']=jQuery.easing['swing'];jQuery.extend(jQuery.easing,{def:'easeOutQuad',swing:function(x,t,b,c,d){return jQuery.easing[jQuery.easing.def](x,t,b,c,d)},easeInQuad:function(x,t,b,c,d){return c*(t/=d)*t+b},easeOutQuad:function(x,t,b,c,d){return-c*(t/=d)*(t-2)+b},easeInOutQuad:function(x,t,b,c,d){if((t/=d/2)<1)return c/2*t*t+b;return-c/2*((--t)*(t-2)-1)+b},easeInCubic:function(x,t,b,c,d){return c*(t/=d)*t*t+b},easeOutCubic:function(x,t,b,c,d){return c*((t=t/d-1)*t*t+1)+b},easeInOutCubic:function(x,t,b,c,d){if((t/=d/2)<1)return c/2*t*t*t+b;return c/2*((t-=2)*t*t+2)+b},easeInQuart:function(x,t,b,c,d){return c*(t/=d)*t*t*t+b},easeOutQuart:function(x,t,b,c,d){return-c*((t=t/d-1)*t*t*t-1)+b},easeInOutQuart:function(x,t,b,c,d){if((t/=d/2)<1)return c/2*t*t*t*t+b;return-c/2*((t-=2)*t*t*t-2)+b},easeInQuint:function(x,t,b,c,d){return c*(t/=d)*t*t*t*t+b},easeOutQuint:function(x,t,b,c,d){return c*((t=t/d-1)*t*t*t*t+1)+b},easeInOutQuint:function(x,t,b,c,d){if((t/=d/2)<1)return c/2*t*t*t*t*t+b;return c/2*((t-=2)*t*t*t*t+2)+b},easeInSine:function(x,t,b,c,d){return-c*Math.cos(t/d*(Math.PI/2))+c+b},easeOutSine:function(x,t,b,c,d){return c*Math.sin(t/d*(Math.PI/2))+b},easeInOutSine:function(x,t,b,c,d){return-c/2*(Math.cos(Math.PI*t/d)-1)+b},easeInExpo:function(x,t,b,c,d){return(t==0)?b:c*Math.pow(2,10*(t/d-1))+b},easeOutExpo:function(x,t,b,c,d){return(t==d)?b+c:c*(-Math.pow(2,-10*t/d)+1)+b},easeInOutExpo:function(x,t,b,c,d){if(t==0)return b;if(t==d)return b+c;if((t/=d/2)<1)return c/2*Math.pow(2,10*(t-1))+b;return c/2*(-Math.pow(2,-10*--t)+2)+b},easeInCirc:function(x,t,b,c,d){return-c*(Math.sqrt(1-(t/=d)*t)-1)+b},easeOutCirc:function(x,t,b,c,d){return c*Math.sqrt(1-(t=t/d-1)*t)+b},easeInOutCirc:function(x,t,b,c,d){if((t/=d/2)<1)return-c/2*(Math.sqrt(1-t*t)-1)+b;return c/2*(Math.sqrt(1-(t-=2)*t)+1)+b},easeInElastic:function(x,t,b,c,d){var s=1.70158;var p=0;var a=c;if(t==0)return b;if((t/=d)==1)return b+c;if(!p)p=d*.3;if(a<Math.abs(c)){a=c;var s=p/4}else var s=p/(2*Math.PI)*Math.asin(c/a);return-(a*Math.pow(2,10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p))+b},easeOutElastic:function(x,t,b,c,d){var s=1.70158;var p=0;var a=c;if(t==0)return b;if((t/=d)==1)return b+c;if(!p)p=d*.3;if(a<Math.abs(c)){a=c;var s=p/4}else var s=p/(2*Math.PI)*Math.asin(c/a);return a*Math.pow(2,-10*t)*Math.sin((t*d-s)*(2*Math.PI)/p)+c+b},easeInOutElastic:function(x,t,b,c,d){var s=1.70158;var p=0;var a=c;if(t==0)return b;if((t/=d/2)==2)return b+c;if(!p)p=d*(.3*1.5);if(a<Math.abs(c)){a=c;var s=p/4}else var s=p/(2*Math.PI)*Math.asin(c/a);if(t<1)return-.5*(a*Math.pow(2,10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p))+b;return a*Math.pow(2,-10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p)*.5+c+b},easeInBack:function(x,t,b,c,d,s){if(s==undefined)s=1.70158;return c*(t/=d)*t*((s+1)*t-s)+b},easeOutBack:function(x,t,b,c,d,s){if(s==undefined)s=1.70158;return c*((t=t/d-1)*t*((s+1)*t+s)+1)+b},easeInOutBack:function(x,t,b,c,d,s){if(s==undefined)s=1.70158;if((t/=d/2)<1)return c/2*(t*t*(((s*=(1.525))+1)*t-s))+b;return c/2*((t-=2)*t*(((s*=(1.525))+1)*t+s)+2)+b},easeInBounce:function(x,t,b,c,d){return c-jQuery.easing.easeOutBounce(x,d-t,0,c,d)+b},easeOutBounce:function(x,t,b,c,d){if((t/=d)<(1/2.75)){return c*(7.5625*t*t)+b}else if(t<(2/2.75)){return c*(7.5625*(t-=(1.5/2.75))*t+.75)+b}else if(t<(2.5/2.75)){return c*(7.5625*(t-=(2.25/2.75))*t+.9375)+b}else{return c*(7.5625*(t-=(2.625/2.75))*t+.984375)+b}},easeInOutBounce:function(x,t,b,c,d){if(t<d/2)return jQuery.easing.easeInBounce(x,t*2,0,c,d)*.5+b;return jQuery.easing.easeOutBounce(x,t*2-d,0,c,d)*.5+c*.5+b}});
@@ -0,0 +1,9 @@
1
+ /*
2
+ * FancyBox - simple and fancy jQuery plugin
3
+ * Examples and documentation at: http://fancy.klade.lv/
4
+ * Version: 1.2.1 (13/03/2009)
5
+ * Copyright (c) 2009 Janis Skarnelis
6
+ * Licensed under the MIT License: http://en.wikipedia.org/wiki/MIT_License
7
+ * Requires: jQuery v1.3+
8
+ */
9
+ eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}(';(7($){$.b.2Q=7(){u B.2t(7(){9 1J=$(B).n(\'2Z\');5(1J.1c(/^3w\\(["\']?(.*\\.2p)["\']?\\)$/i)){1J=3t.$1;$(B).n({\'2Z\':\'45\',\'2o\':"3W:3R.4m.4d(3h=F, 3T="+($(B).n(\'41\')==\'2J-3Z\'?\'4c\':\'3N\')+", Q=\'"+1J+"\')"}).2t(7(){9 1b=$(B).n(\'1b\');5(1b!=\'2e\'&&1b!=\'2n\')$(B).n(\'1b\',\'2n\')})}})};9 A,4,16=D,s=1t 1o,1w,1v=1,1y=/\\.(3A|3Y|2p|3c|3d)(.*)?$/i;9 P=($.2q.3K&&2f($.2q.3z.2k(0,1))<8);$.b.c=7(Y){Y=$.3x({},$.b.c.2R,Y);9 2s=B;7 2h(){A=B;4=Y;2r();u D};7 2r(){5(16)u;5($.1O(4.2c)){4.2c()}4.j=[];4.h=0;5(Y.j.N>0){4.j=Y.j}t{9 O={};5(!A.1H||A.1H==\'\'){9 O={d:A.d,X:A.X};5($(A).1G("1m:1D").N){O.1a=$(A).1G("1m:1D")}4.j.2j(O)}t{9 Z=$(2s).2o("a[1H="+A.1H+"]");9 O={};3C(9 i=0;i<Z.N;i++){O={d:Z[i].d,X:Z[i].X};5($(Z[i]).1G("1m:1D").N){O.1a=$(Z[i]).1G("1m:1D")}4.j.2j(O)}3F(4.j[4.h].d!=A.d){4.h++}}}5(4.23){5(P){$(\'1U, 1Q, 1P\').n(\'1S\',\'3s\')}$("#1i").n(\'25\',4.2U).J()}1d()};7 1d(){$("#1f, #1e, #V, #G").S();9 d=4.j[4.h].d;5(d.1c(/#/)){9 U=11.3r.d.3f(\'#\')[0];U=d.3g(U,\'\');U=U.2k(U.2l(\'#\'));1k(\'<6 l="3e">\'+$(U).o()+\'</6>\',4.1I,4.1x)}t 5(d.1c(1y)){s=1t 1o;s.Q=d;5(s.3a){1K()}t{$.b.c.34();$(s).x().14(\'3b\',7(){$(".I").S();1K()})}}t 5(d.1c("17")||A.3j.2l("17")>=0){1k(\'<17 l="35" 3q="$.b.c.38()" 3o="3n\'+C.T(C.3l()*3m)+\'" 2K="0" 3E="0" Q="\'+d+\'"></17>\',4.1I,4.1x)}t{$.4p(d,7(2m){1k(\'<6 l="3L">\'+2m+\'</6>\',4.1I,4.1x)})}};7 1K(){5(4.30){9 w=$.b.c.1n();9 r=C.1M(C.1M(w[0]-36,s.g)/s.g,C.1M(w[1]-4b,s.f)/s.f);9 g=C.T(r*s.g);9 f=C.T(r*s.f)}t{9 g=s.g;9 f=s.f}1k(\'<1m 48="" l="49" Q="\'+s.Q+\'" />\',g,f)};7 2F(){5((4.j.N-1)>4.h){9 d=4.j[4.h+1].d;5(d.1c(1y)){1A=1t 1o();1A.Q=d}}5(4.h>0){9 d=4.j[4.h-1].d;5(d.1c(1y)){1A=1t 1o();1A.Q=d}}};7 1k(1j,g,f){16=F;9 L=4.2Y;5(P){$("#q")[0].1E.2u("f");$("#q")[0].1E.2u("g")}5(L>0){g+=L*2;f+=L*2;$("#q").n({\'v\':L+\'z\',\'2E\':L+\'z\',\'2i\':L+\'z\',\'y\':L+\'z\',\'g\':\'2B\',\'f\':\'2B\'});5(P){$("#q")[0].1E.2C(\'f\',\'(B.2D.4j - 20)\');$("#q")[0].1E.2C(\'g\',\'(B.2D.3S - 20)\')}}t{$("#q").n({\'v\':0,\'2E\':0,\'2i\':0,\'y\':0,\'g\':\'2z%\',\'f\':\'2z%\'})}5($("#k").1u(":19")&&g==$("#k").g()&&f==$("#k").f()){$("#q").1Z("2N",7(){$("#q").1C().1F($(1j)).21("1s",7(){1g()})});u}9 w=$.b.c.1n();9 2v=(g+36)>w[0]?w[2]:(w[2]+C.T((w[0]-g-36)/2));9 2w=(f+1z)>w[1]?w[3]:(w[3]+C.T((w[1]-f-1z)/2));9 K={\'y\':2v,\'v\':2w,\'g\':g+\'z\',\'f\':f+\'z\'};5($("#k").1u(":19")){$("#q").1Z("1s",7(){$("#q").1C();$("#k").24(K,4.2X,4.2T,7(){$("#q").1F($(1j)).21("1s",7(){1g()})})})}t{5(4.1W>0&&4.j[4.h].1a!==1L){$("#q").1C().1F($(1j));9 M=4.j[4.h].1a;9 15=$.b.c.1R(M);$("#k").n({\'y\':(15.y-18)+\'z\',\'v\':(15.v-18)+\'z\',\'g\':$(M).g(),\'f\':$(M).f()});5(4.1X){K.25=\'J\'}$("#k").24(K,4.1W,4.2W,7(){1g()})}t{$("#q").S().1C().1F($(1j)).J();$("#k").n(K).21("1s",7(){1g()})}}};7 2y(){5(4.h!=0){$("#1e, #2O").x().14("R",7(e){e.2x();4.h--;1d();u D});$("#1e").J()}5(4.h!=(4.j.N-1)){$("#1f, #2M").x().14("R",7(e){e.2x();4.h++;1d();u D});$("#1f").J()}};7 1g(){2y();2F();$(W).1B(7(e){5(e.29==27){$.b.c.1l();$(W).x("1B")}t 5(e.29==37&&4.h!=0){4.h--;1d();$(W).x("1B")}t 5(e.29==39&&4.h!=(4.j.N-1)){4.h++;1d();$(W).x("1B")}});5(4.1r){$(11).14("1N 1T",$.b.c.2g)}t{$("6#k").n("1b","2e")}5(4.2b){$("#22").R($.b.c.1l)}$("#1i, #V").14("R",$.b.c.1l);$("#V").J();5(4.j[4.h].X!==1L&&4.j[4.h].X.N>0){$(\'#G 6\').o(4.j[4.h].X);$(\'#G\').J()}5(4.23&&P){$(\'1U, 1Q, 1P\',$(\'#q\')).n(\'1S\',\'19\')}5($.1O(4.2a)){4.2a()}16=D};u B.x(\'R\').R(2h)};$.b.c.2g=7(){9 m=$.b.c.1n();$("#k").n(\'y\',(($("#k").g()+36)>m[0]?m[2]:m[2]+C.T((m[0]-$("#k").g()-36)/2)));$("#k").n(\'v\',(($("#k").f()+1z)>m[1]?m[3]:m[3]+C.T((m[1]-$("#k").f()-1z)/2)))};$.b.c.1h=7(H,2A){u 2f($.3I(H.3u?H[0]:H,2A,F))||0};$.b.c.1R=7(H){9 m=H.4g();m.v+=$.b.c.1h(H,\'3k\');m.v+=$.b.c.1h(H,\'3J\');m.y+=$.b.c.1h(H,\'3H\');m.y+=$.b.c.1h(H,\'3D\');u m};$.b.c.38=7(){$(".I").S();$("#35").J()};$.b.c.1n=7(){u[$(11).g(),$(11).f(),$(W).3i(),$(W).3p()]};$.b.c.2G=7(){5(!$("#I").1u(\':19\')){33(1w);u}$("#I > 6").n(\'v\',(1v*-40)+\'z\');1v=(1v+1)%12};$.b.c.34=7(){33(1w);9 m=$.b.c.1n();$("#I").n({\'y\':((m[0]-40)/2+m[2]),\'v\':((m[1]-40)/2+m[3])}).J();$("#I").14(\'R\',$.b.c.1l);1w=3Q($.b.c.2G,3X)};$.b.c.1l=7(){16=F;$(s).x();$("#1i, #V").x();5(4.2b){$("#22").x()}$("#V, .I, #1e, #1f, #G").S();5(4.1r){$(11).x("1N 1T")}1q=7(){$("#1i, #k").S();5(4.1r){$(11).x("1N 1T")}5(P){$(\'1U, 1Q, 1P\').n(\'1S\',\'19\')}5($.1O(4.1V)){4.1V()}16=D};5($("#k").1u(":19")!==D){5(4.26>0&&4.j[4.h].1a!==1L){9 M=4.j[4.h].1a;9 15=$.b.c.1R(M);9 K={\'y\':(15.y-18)+\'z\',\'v\':(15.v-18)+\'z\',\'g\':$(M).g(),\'f\':$(M).f()};5(4.1X){K.25=\'S\'}$("#k").31(D,F).24(K,4.26,4.2S,1q)}t{$("#k").31(D,F).1Z("2N",1q)}}t{1q()}u D};$.b.c.2V=7(){9 o=\'\';o+=\'<6 l="1i"></6>\';o+=\'<6 l="22">\';o+=\'<6 p="I" l="I"><6></6></6>\';o+=\'<6 l="k">\';o+=\'<6 l="2I">\';o+=\'<6 l="V"></6>\';o+=\'<6 l="E"><6 p="E 44"></6><6 p="E 43"></6><6 p="E 42"></6><6 p="E 3V"></6><6 p="E 3U"></6><6 p="E 3O"></6><6 p="E 3M"></6><6 p="E 3P"></6></6>\';o+=\'<a d="2P:;" l="1e"><1p p="1Y" l="2O"></1p></a><a d="2P:;" l="1f"><1p p="1Y" l="2M"></1p></a>\';o+=\'<6 l="q"></6>\';o+=\'<6 l="G"></6>\';o+=\'</6>\';o+=\'</6>\';o+=\'</6>\';$(o).2H("46");$(\'<32 4i="0" 4h="0" 4k="0"><2L><13 p="G" l="4l"></13><13 p="G" l="4o"><6></6></13><13 p="G" l="4n"></13></2L></32>\').2H(\'#G\');5(P){$("#2I").47(\'<17 p="4a" 4e="2J" 2K="0"></17>\');$("#V, .E, .G, .1Y").2Q()}};$.b.c.2R={2Y:10,30:F,1X:D,1W:0,26:0,2X:3G,2W:\'28\',2S:\'28\',2T:\'28\',1I:3B,1x:3v,23:F,2U:0.3,2b:F,1r:F,j:[],2c:2d,2a:2d,1V:2d};$(W).3y(7(){$.b.c.2V()})})(4f);',62,274,'||||opts|if|div|function||var||fn|fancybox|href||height|width|itemCurrent||itemArray|fancy_outer|id|pos|css|html|class|fancy_content||imagePreloader|else|return|top||unbind|left|px|elem|this|Math|false|fancy_bg|true|fancy_title|el|fancy_loading|show|itemOpts|pad|orig_item|length|item|isIE|src|click|hide|round|target|fancy_close|document|title|settings|subGroup||window||td|bind|orig_pos|busy|iframe||visible|orig|position|match|_change_item|fancy_left|fancy_right|_finish|getNumeric|fancy_overlay|value|_set_content|close|img|getViewport|Image|span|__cleanup|centerOnScroll|normal|new|is|loadingFrame|loadingTimer|frameHeight|imageRegExp|50|objNext|keydown|empty|first|style|append|children|rel|frameWidth|image|_proceed_image|undefined|min|resize|isFunction|select|object|getPosition|visibility|scroll|embed|callbackOnClose|zoomSpeedIn|zoomOpacity|fancy_ico|fadeOut||fadeIn|fancy_wrap|overlayShow|animate|opacity|zoomSpeedOut||swing|keyCode|callbackOnShow|hideOnContentClick|callbackOnStart|null|absolute|parseInt|scrollBox|_initialize|bottom|push|substr|indexOf|data|relative|filter|png|browser|_start|matchedGroup|each|removeExpression|itemLeft|itemTop|stopPropagation|_set_navigation|100|prop|auto|setExpression|parentNode|right|_preload_neighbor_images|animateLoading|appendTo|fancy_inner|no|frameborder|tr|fancy_right_ico|fast|fancy_left_ico|javascript|fixPNG|defaults|easingOut|easingChange|overlayOpacity|build|easingIn|zoomSpeedChange|padding|backgroundImage|imageScale|stop|table|clearInterval|showLoading|fancy_frame|||showIframe||complete|load|bmp|jpeg|fancy_div|split|replace|enabled|scrollLeft|className|paddingTop|random|1000|fancy_iframe|name|scrollTop|onload|location|hidden|RegExp|jquery|355|url|extend|ready|version|jpg|425|for|borderLeftWidth|hspace|while|300|paddingLeft|curCSS|borderTopWidth|msie|fancy_ajax|fancy_bg_w|scale|fancy_bg_sw|fancy_bg_nw|setInterval|DXImageTransform|clientWidth|sizingMethod|fancy_bg_s|fancy_bg_se|progid|66|gif|repeat||backgroundRepeat|fancy_bg_e|fancy_bg_ne|fancy_bg_n|none|body|prepend|alt|fancy_img|fancy_bigIframe|60|crop|AlphaImageLoader|scrolling|jQuery|offset|cellpadding|cellspacing|clientHeight|border|fancy_title_left|Microsoft|fancy_title_right|fancy_title_main|get'.split('|'),0,{}))
@@ -1,9 +1,13 @@
1
1
  //jQuery.noConflict();
2
-
3
2
  jQuery(document).ajaxSend(function(event, request, settings) {
4
- if (typeof(AUTH_TOKEN) == "undefined") return;
3
+ request.setRequestHeader("Accept", "text/javascript");
4
+ request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
5
+
6
+ if (settings.type.toUpperCase() == 'GET' || typeof(AUTH_TOKEN) == "undefined") return; // for details see: http://www.justinball.com/2009/07/08/jquery-ajax-get-in-firefox-post-in-internet-explorer/
7
+ // settings.data is a serialized string like "foo=bar&baz=boink" (or null)
5
8
  settings.data = settings.data || "";
6
- settings.data += (settings.data ? "&" : "") + "authenticity_token=" + encodeURIComponent(AUTH_TOKEN);
9
+ if (typeof(AUTH_TOKEN) != "undefined")
10
+ settings.data += (settings.data ? "&" : "") + "authenticity_token=" + encodeURIComponent(AUTH_TOKEN);
7
11
  });
8
12
 
9
13
  function setup_submit_delete(){
@@ -83,7 +83,7 @@ function show_comment_box(obj){
83
83
  }
84
84
 
85
85
  function get_latest_activity_id(){
86
- var activities = jQuery('#activity-feed-content').children('.activity-status-update');
86
+ var activities = jQuery('#activity-feed-content').children('.activity');
87
87
  if(activities.length > 0){
88
88
  return activities[0].id.replace('activity_', '');
89
89
  } else {
@@ -0,0 +1,44 @@
1
+ html,body{height:100%;}
2
+ div#fancy_overlay{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#666;display:none;z-index:30;}
3
+ * html div#fancy_overlay{position:absolute;height:expression(document.body.scrollHeight > document.body.offsetHeight ? document.body.scrollHeight :document.body.offsetHeight + 'px');}
4
+ div#fancy_wrap{text-align:left;}
5
+ div#fancy_loading{position:absolute;height:40px;width:40px;cursor:pointer;display:none;overflow:hidden;background:transparent;z-index:100;}
6
+ div#fancy_loading div{position:absolute;top:0;left:0;width:40px;height:480px;background:transparent url('/images/fancybox/fancy_progress.png') no-repeat;}
7
+ div#fancy_loading_overlay{position:absolute;background-color:#FFF;z-index:30;}
8
+ div#fancy_loading_icon{position:absolute;background:url('/images/fancybox/fancy_loading.gif') no-repeat;z-index:35;width:16px;height:16px;}
9
+ div#fancy_outer{position:absolute;top:0;left:0;z-index:90;padding:18px 18px 33px 18px;margin:0;overflow:hidden;background:transparent;display:none;}
10
+ div#fancy_inner{position:relative;width:100%;height:100%;border:1px solid #BBB;background:#FFF;}
11
+ div#fancy_content{margin:0;z-index:100;position:absolute;}
12
+ div#fancy_div{background:#000;color:#FFF;height:100%;width:100%;z-index:100;}
13
+ img#fancy_img{position:absolute;top:0;left:0;border:0;padding:0;margin:0;z-index:100;width:100%;height:100%;}
14
+ div#fancy_close{position:absolute;top:-12px;right:-15px;height:30px;width:30px;background:url('/images/fancybox/fancy_closebox.png') top left no-repeat;cursor:pointer;z-index:181;display:none;}
15
+ #fancy_frame{position:relative;width:100%;height:100%;display:none;}
16
+ #fancy_ajax{width:100%;height:100%;overflow:auto;}
17
+ a#fancy_left,a#fancy_right{position:absolute;bottom:0px;height:100%;width:35%;cursor:pointer;z-index:111;display:none;background-image:url(data:image/gif;base64,AAAA);outline:none;}
18
+ a#fancy_left{left:0px;}
19
+ a#fancy_right{right:0px;}
20
+ span.fancy_ico{position:absolute;top:50%;margin-top:-15px;width:30px;height:30px;z-index:112;cursor:pointer;display:block;}
21
+ span#fancy_left_ico{left:-9999px;background:transparent url('/images/fancybox/fancy_left.png') no-repeat;}
22
+ span#fancy_right_ico{right:-9999px;background:transparent url('/images/fancybox/fancy_right.png') no-repeat;}
23
+ a#fancy_left:hover{visibility:visible;}
24
+ a#fancy_right:hover{visibility:visible;}
25
+ a#fancy_left:hover span{left:20px;}
26
+ a#fancy_right:hover span{right:20px;}
27
+ .fancy_bigIframe{position:absolute;top:0;left:0;width:100%;height:100%;background:transparent;}
28
+ div#fancy_bg{position:absolute;top:0;left:0;width:100%;height:100%;z-index:70;border:0;padding:0;margin:0;}
29
+ div.fancy_bg{position:absolute;display:block;z-index:70;border:0;padding:0;margin:0;}
30
+ div.fancy_bg_n{top:-18px;width:100%;height:18px;background:transparent url('/images/fancybox/fancy_shadow_n.png') repeat-x;}
31
+ div.fancy_bg_ne{top:-18px;right:-13px;width:13px;height:18px;background:transparent url('/images/fancybox/fancy_shadow_ne.png') no-repeat;}
32
+ div.fancy_bg_e{right:-13px;height:100%;width:13px;background:transparent url('/images/fancybox/fancy_shadow_e.png') repeat-y;}
33
+ div.fancy_bg_se{bottom:-18px;right:-13px;width:13px;height:18px;background:transparent url('/images/fancybox/fancy_shadow_se.png') no-repeat;}
34
+ div.fancy_bg_s{bottom:-18px;width:100%;height:18px;background:transparent url('/images/fancybox/fancy_shadow_s.png') repeat-x;}
35
+ div.fancy_bg_sw{bottom:-18px;left:-13px;width:13px;height:18px;background:transparent url('/images/fancybox/fancy_shadow_sw.png') no-repeat;}
36
+ div.fancy_bg_w{left:-13px;height:100%;width:13px;background:transparent url('/images/fancybox/fancy_shadow_w.png') repeat-y;}
37
+ div.fancy_bg_nw{top:-18px;left:-13px;width:13px;height:18px;background:transparent url('/images/fancybox/fancy_shadow_nw.png') no-repeat;}
38
+ div#fancy_title{position:absolute;bottom:-33px;left:0;width:100%;z-index:100;display:none;}
39
+ div#fancy_title div{color:#FFF;font:bold 12px Arial;padding-bottom:3px;}
40
+ div#fancy_title table{margin:0 auto;}
41
+ div#fancy_title table td{padding:0;vertical-align:middle;}
42
+ td#fancy_title_left{height:32px;width:15px;background:transparent url(fancy_title_left.png) repeat-x;}
43
+ td#fancy_title_main{height:32px;background:transparent url(fancy_title_main.png) repeat-x;}
44
+ td#fancy_title_right{height:32px;width:15px;background:transparent url(fancy_title_right.png) repeat-x;}
@@ -1,3 +1,7 @@
1
+ /* general */
2
+ .center{text-align:center;}
3
+ #popup_wrapper{width:auto;}
4
+
1
5
  /* forms */
2
6
  input{margin:0 10px 5px 0;padding:4px;font-size:1.3em;}
3
7
  input[type="text"],input[type="password"]{border:1px solid #8f8685;}
@@ -12,7 +16,8 @@ fieldset{border:none;margin:0;padding:0;}
12
16
  form fieldset{margin:0 0 2px;padding:0px;}
13
17
  form fieldset input[type="text"],form fieldset input[type="password"]{width:500px;}
14
18
  .common-form{width:500px;margin:40px auto;}
15
- .common-form h1{font-size:1.8em;}
19
+ .wide-form h1, .common-form h1{font-size:1.8em;}
20
+ .wide-form{width:700px;margin:40px auto;}
16
21
  .form-item{float:left;}
17
22
  .common-content{width:500px;margin:40px auto;font-size:1.2em;color:#555;}
18
23
  .button-link {background-color:transparent;border-top-width: 0px;border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;}
@@ -23,7 +28,7 @@ form fieldset input[type="text"],form fieldset input[type="password"]{width:500p
23
28
  .medium{width:300px;height:300px;}
24
29
 
25
30
  /* tips */
26
- .availability{color:#b61e12;}
31
+ .availability{color:#b61e12;position:absolute;}
27
32
  .hidden-tips{display:none;}
28
33
  .required-tip{color:#555555;font-size:1.2em;margin:0pt;font-weight:bolder;height:0px;}
29
34
  .tip{position:absolute;z-index:100;border:2px solid #CCCCCC;background-color:#fff;width:400px;}
@@ -76,4 +81,4 @@ div.jGrowl div.jGrowl-notification h2{text-align:left;font-weight:bold;padding:5
76
81
  #errorExplanation{padding:7px;padding-bottom:12px;margin-bottom:20px;}
77
82
  #errorExplanation h2{text-align:left;font-weight:bold;padding:5px 5px 5px 15px;font-size:16px;background-color:#B61E12;color:#fff;}
78
83
  #errorExplanation p{color:#333;margin-bottom:0;padding:5px;}
79
- #errorExplanation ul li{list-style:square;}
84
+ #errorExplanation ul li{list-style:square;}
@@ -1,7 +1,9 @@
1
1
  #!/usr/bin/env ruby
2
2
  begin
3
3
  load File.expand_path(File.dirname(__FILE__) + "/../vendor/plugins/cucumber/bin/cucumber")
4
- rescue LoadError
5
- require "rubygems"
6
- load File.join(Gem.bindir, "cucumber")
4
+ rescue LoadError => e
5
+ raise unless e.to_s =~ /cucumber/
6
+ require 'rubygems'
7
+ require 'cucumber'
8
+ load Cucumber::BINARY
7
9
  end