refinerycms-calendar 1.1.0 → 2.0.0.alpha
Sign up to get free protection for your applications and to get access to all the features.
- data/app/controllers/refinery/calendar/admin/events_controller.rb +43 -0
- data/app/controllers/refinery/calendar/events_controller.rb +34 -0
- data/app/models/refinery/calendar/core_calendar.rb +36 -0
- data/app/models/refinery/calendar/event.rb +51 -0
- data/app/views/refinery/calendar/admin/events/_actions.html.erb +25 -0
- data/app/views/refinery/calendar/admin/events/_event.html.erb +10 -0
- data/app/views/refinery/calendar/admin/events/_events.html.erb +2 -0
- data/app/views/refinery/calendar/admin/events/_form.html.erb +31 -0
- data/app/views/refinery/calendar/admin/events/_records.html.erb +18 -0
- data/app/views/refinery/calendar/admin/events/_sortable_list.html.erb +5 -0
- data/app/views/refinery/calendar/admin/events/edit.html.erb +1 -0
- data/app/views/refinery/calendar/admin/events/index.html.erb +8 -0
- data/app/views/refinery/calendar/admin/events/new.html.erb +1 -0
- data/app/views/refinery/calendar/events/index.html.erb +11 -0
- data/app/views/refinery/calendar/events/show.html.erb +27 -0
- data/config/locales/en.yml +25 -43
- data/config/locales/es.yml +28 -0
- data/config/locales/fr.yml +25 -43
- data/config/locales/nb.yml +25 -18
- data/config/locales/nl.yml +25 -18
- data/config/routes.rb +12 -10
- data/db/seeds.rb +23 -0
- data/lib/generators/refinery/calendar_generator.rb +29 -0
- data/lib/refinery/calendar.rb +28 -0
- data/lib/refinery/calendar/configuration.rb +7 -0
- data/lib/refinery/calendar/engine.rb +26 -0
- data/lib/refinery/calendar/version.rb +17 -0
- data/lib/refinery/engine/multi_parameter_assignment.rb +6 -0
- data/lib/refinerycms-calendar.rb +1 -24
- data/lib/tasks/{events.rake → refinery/calendar.rake} +6 -6
- data/readme.md +8 -40
- metadata +56 -96
- data/app/controllers/admin/event_categories_controller.rb +0 -9
- data/app/controllers/admin/events_controller.rb +0 -26
- data/app/controllers/event_categories_controller.rb +0 -15
- data/app/controllers/events_controller.rb +0 -65
- data/app/helpers/event_categories_helper.rb +0 -3
- data/app/helpers/events_helper.rb +0 -44
- data/app/models/event.rb +0 -86
- data/app/models/event_categorization.rb +0 -4
- data/app/models/event_category.rb +0 -10
- data/app/views/admin/event_categories/_event_categories.html.erb +0 -1
- data/app/views/admin/event_categories/_event_category.html.erb +0 -18
- data/app/views/admin/event_categories/_form.html.erb +0 -26
- data/app/views/admin/event_categories/_sortable_list.html.erb +0 -3
- data/app/views/admin/event_categories/edit.html.erb +0 -1
- data/app/views/admin/event_categories/index.html.erb +0 -40
- data/app/views/admin/event_categories/new.html.erb +0 -1
- data/app/views/admin/events/_event.html.erb +0 -18
- data/app/views/admin/events/_events.html.erb +0 -1
- data/app/views/admin/events/_form.html.erb +0 -126
- data/app/views/admin/events/_sortable_list.html.erb +0 -20
- data/app/views/admin/events/edit.html.erb +0 -1
- data/app/views/admin/events/index.html.erb +0 -41
- data/app/views/admin/events/new.html.erb +0 -1
- data/app/views/event_categories/show.html.erb +0 -15
- data/app/views/events/_event.html.erb +0 -111
- data/app/views/events/_sidebar.html.erb +0 -38
- data/app/views/events/archive.html.erb +0 -17
- data/app/views/events/index.html.erb +0 -17
- data/app/views/events/index.rss.builder +0 -24
- data/app/views/events/show.html.erb +0 -15
- data/app/views/events/show.ics.erb +0 -16
- data/changelog.md +0 -35
- data/config/locales/lolcat.yml +0 -24
- data/db/migrate/01_create_events.rb +0 -33
- data/db/migrate/02_create_event_categories.rb +0 -13
- data/db/migrate/03_create_event_categorizations.rb +0 -17
- data/db/migrate/04_add_cached_slugs.rb +0 -11
- data/db/seeds/events.rb +0 -17
- data/features/manage_events.feature +0 -54
- data/features/step_definitions/event_steps.rb +0 -14
- data/features/support/factories/event_categories.rb +0 -3
- data/features/support/factories/events.rb +0 -6
- data/features/support/paths.rb +0 -17
- data/lib/generators/refinerycms_calendar_generator.rb +0 -6
- data/public/stylesheets/refinerycms-events.css +0 -73
- data/refinerycms-calendar-1.0.4.gem +0 -0
- data/refinerycms-calendar.gemspec +0 -17
- data/spec/controllers/events_controller_spec.rb +0 -14
- data/spec/helpers/events_helper_spec.rb +0 -16
- data/spec/models/event_category_spec.rb +0 -29
- data/spec/models/event_spec.rb +0 -77
@@ -1,11 +0,0 @@
|
|
1
|
-
class AddCachedSlugs < ActiveRecord::Migration
|
2
|
-
def self.up
|
3
|
-
add_column :event_categories, :cached_slug, :string
|
4
|
-
add_column :events, :cached_slug, :string
|
5
|
-
end
|
6
|
-
|
7
|
-
def self.down
|
8
|
-
remove_column :event_categories, :cached_slug
|
9
|
-
remove_column :events, :cached_slug
|
10
|
-
end
|
11
|
-
end
|
data/db/seeds/events.rb
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
User.find(:all).each do |user|
|
2
|
-
if user.plugins.find_by_name('events').nil?
|
3
|
-
user.plugins.create(:name => 'events',
|
4
|
-
:position => (user.plugins.maximum(:position) || -1) +1)
|
5
|
-
end
|
6
|
-
end
|
7
|
-
|
8
|
-
page = Page.create(
|
9
|
-
:title => 'Events',
|
10
|
-
:link_url => '/events',
|
11
|
-
:deletable => false,
|
12
|
-
:position => ((Page.maximum(:position, :conditions => {:parent_id => nil}) || -1)+1),
|
13
|
-
:menu_match => '^/events(\/|\/.+?|)$'
|
14
|
-
)
|
15
|
-
Page.default_parts.each_with_index do |default_page_part, idx|
|
16
|
-
page.parts.create(:title => default_page_part, :body => nil, :position => idx)
|
17
|
-
end
|
@@ -1,54 +0,0 @@
|
|
1
|
-
@events
|
2
|
-
Feature: Events
|
3
|
-
In order to have events on my website
|
4
|
-
As an administrator
|
5
|
-
I want to manage events
|
6
|
-
|
7
|
-
Background:
|
8
|
-
Given I am a logged in refinery user
|
9
|
-
And I have no events
|
10
|
-
|
11
|
-
@events-list @list
|
12
|
-
Scenario: Events List
|
13
|
-
Given I have events titled UniqueTitleOne, UniqueTitleTwo
|
14
|
-
When I go to the list of events
|
15
|
-
# And show me the page
|
16
|
-
Then I should see "UniqueTitleOne"
|
17
|
-
And I should see "UniqueTitleTwo"
|
18
|
-
|
19
|
-
@events-valid @valid
|
20
|
-
Scenario: Create Valid Event
|
21
|
-
When I go to the list of events
|
22
|
-
And I follow "Add New Event"
|
23
|
-
And I fill in "Title" with "This is a test of the first string field"
|
24
|
-
And I press "Save"
|
25
|
-
Then I should see "'This is a test of the first string field' was successfully added."
|
26
|
-
And I should have 1 event
|
27
|
-
|
28
|
-
@events-invalid @invalid
|
29
|
-
Scenario: Create Invalid Event (without title)
|
30
|
-
When I go to the list of events
|
31
|
-
And I follow "Add New Event"
|
32
|
-
And I press "Save"
|
33
|
-
Then I should see "Title can't be blank"
|
34
|
-
And I should have 0 events
|
35
|
-
|
36
|
-
@events-edit @edit
|
37
|
-
Scenario: Edit Existing Event
|
38
|
-
Given I have events titled "A title"
|
39
|
-
When I go to the list of events
|
40
|
-
And I follow "Edit this event" within ".actions"
|
41
|
-
Then I fill in "Title" with "A different title"
|
42
|
-
And I press "Save"
|
43
|
-
Then I should see "'A different title' was successfully updated."
|
44
|
-
And I should be on the list of events
|
45
|
-
And I should not see "A title"
|
46
|
-
|
47
|
-
@events-delete @delete
|
48
|
-
Scenario: Delete Event
|
49
|
-
Given I only have events titled UniqueTitleOne
|
50
|
-
When I go to the list of events
|
51
|
-
And I follow "Remove this event forever"
|
52
|
-
Then I should see "'UniqueTitleOne' was successfully removed."
|
53
|
-
And I should have 0 events
|
54
|
-
|
@@ -1,14 +0,0 @@
|
|
1
|
-
Given /^I have no events$/ do
|
2
|
-
Event.delete_all
|
3
|
-
end
|
4
|
-
|
5
|
-
Given /^I (only )?have events titled "?([^\"]*)"?$/ do |only, titles|
|
6
|
-
Event.delete_all if only
|
7
|
-
titles.split(', ').each do |title|
|
8
|
-
Factory(:event, :title => title)
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
Then /^I should have ([0-9]+) events?$/ do |count|
|
13
|
-
Event.count.should == count.to_i
|
14
|
-
end
|
@@ -1,6 +0,0 @@
|
|
1
|
-
Factory.define :event do |f|
|
2
|
-
f.sequence(:title) { |n| "Top #{n} Shopping Centers in Chicago" }
|
3
|
-
f.description "These are the top ten shopping centers in Chicago. You're going to read a long blog post about them. Come to peace with it."
|
4
|
-
f.start_at Time.now
|
5
|
-
f.end_at Time.now.advance(:hours => 1)
|
6
|
-
end
|
data/features/support/paths.rb
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
module NavigationHelpers
|
2
|
-
module Refinery
|
3
|
-
module Events
|
4
|
-
def path_to(page_name)
|
5
|
-
case page_name
|
6
|
-
when /the list of events/
|
7
|
-
admin_events_path
|
8
|
-
|
9
|
-
when /the new event form/
|
10
|
-
new_admin_event_path
|
11
|
-
else
|
12
|
-
nil
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
@@ -1,73 +0,0 @@
|
|
1
|
-
.individual_event {
|
2
|
-
padding: 15px;
|
3
|
-
margin: 0 0 10px;
|
4
|
-
background-color: #f4f4f4;
|
5
|
-
}
|
6
|
-
.individual_event h1 {
|
7
|
-
margin: 0 0 10px;
|
8
|
-
padding: 0;
|
9
|
-
}
|
10
|
-
.individual_event .event_image {
|
11
|
-
float: left;
|
12
|
-
margin: 0 15px 10px 0;
|
13
|
-
}
|
14
|
-
#featured_events h2 {
|
15
|
-
margin: 15px 0 10px;
|
16
|
-
}
|
17
|
-
|
18
|
-
.sidebar_module {
|
19
|
-
padding: 15px;
|
20
|
-
}
|
21
|
-
.sidebar_module h2 {
|
22
|
-
margin: 0 0 10px;
|
23
|
-
}
|
24
|
-
.categories a {
|
25
|
-
display: block;
|
26
|
-
margin: 5px 0;
|
27
|
-
}
|
28
|
-
.sidebar_module ul {
|
29
|
-
list-style: square;
|
30
|
-
padding: 0 0 0 26px;
|
31
|
-
margin: 0;
|
32
|
-
}
|
33
|
-
.sidebar_module ul li {
|
34
|
-
margin: 2px 0;
|
35
|
-
padding: 2px 0;
|
36
|
-
}
|
37
|
-
|
38
|
-
#share_this_event {
|
39
|
-
border-top: 1px solid #ddd;
|
40
|
-
border-bottom: 1px solid #ddd;
|
41
|
-
padding: 20px 0;
|
42
|
-
margin: 20px 0;
|
43
|
-
}
|
44
|
-
#share_this_event ul {
|
45
|
-
list-style: none;
|
46
|
-
border: 0;
|
47
|
-
padding: 0;
|
48
|
-
margin: 0;
|
49
|
-
}
|
50
|
-
#share_this_event ul li {
|
51
|
-
float: left;
|
52
|
-
height: 70px;
|
53
|
-
margin: 0 15px 0 0;
|
54
|
-
}
|
55
|
-
|
56
|
-
#prevnext_nav {
|
57
|
-
clear: both;
|
58
|
-
display: block;
|
59
|
-
height: 100px;
|
60
|
-
}
|
61
|
-
#prevnext_nav .prev {
|
62
|
-
width: 33%;
|
63
|
-
float: left;
|
64
|
-
}
|
65
|
-
#prevnext_nav .home {
|
66
|
-
width: 33%;
|
67
|
-
float: left;
|
68
|
-
}
|
69
|
-
#prevnext_nav .next {
|
70
|
-
width: 33%;
|
71
|
-
float: left;
|
72
|
-
}
|
73
|
-
|
Binary file
|
@@ -1,17 +0,0 @@
|
|
1
|
-
Gem::Specification.new do |s|
|
2
|
-
s.platform = Gem::Platform::RUBY
|
3
|
-
s.name = 'refinerycms-calendar'
|
4
|
-
s.version = '1.1.0'
|
5
|
-
s.description = 'Ruby on Rails Events engine for Refinery CMS'
|
6
|
-
s.date = Time.now.strftime('%Y-%m-%d')
|
7
|
-
s.summary = 'Events engine for Refinery CMS'
|
8
|
-
s.require_paths = %w(lib)
|
9
|
-
s.files = Dir['**/*']
|
10
|
-
s.authors = ["Neoteric Design", "Joe Sak", "Philip Arndt"]
|
11
|
-
s.email = %q{joe@neotericdesign.com}
|
12
|
-
s.homepage = "https://github.com/resolve/refinerycms-calendar"
|
13
|
-
|
14
|
-
s.add_dependency 'refinerycms-core', '>= 0.9.9.1'
|
15
|
-
end
|
16
|
-
|
17
|
-
|
@@ -1,14 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
Dir[File.expand_path('../../../features/support/factories/*.rb', __FILE__)].each{|factory| require factory}
|
3
|
-
|
4
|
-
describe EventsController do
|
5
|
-
|
6
|
-
describe "GET 'index' RSS" do
|
7
|
-
it "should be successful" do
|
8
|
-
get 'index', :format => :rss
|
9
|
-
response.should be_success
|
10
|
-
end
|
11
|
-
|
12
|
-
end
|
13
|
-
|
14
|
-
end
|
@@ -1,16 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
# Specs in this file have access to a helper object that includes
|
4
|
-
# the EventsHelper. For example:
|
5
|
-
#
|
6
|
-
# describe EventsHelper do
|
7
|
-
# describe "string concat" do
|
8
|
-
# it "concats two strings with spaces" do
|
9
|
-
# helper.concat_strings("this","that").should == "this that"
|
10
|
-
# end
|
11
|
-
# end
|
12
|
-
# end
|
13
|
-
|
14
|
-
# describe EventsHelper do
|
15
|
-
# pending "add some examples to (or delete) #{__FILE__}"
|
16
|
-
# end
|
@@ -1,29 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
Dir[File.expand_path('../../../features/support/factories/*.rb', __FILE__)].each{|factory| require factory}
|
3
|
-
|
4
|
-
describe EventCategory do
|
5
|
-
before(:each) do
|
6
|
-
@attr = Factory(:event_category).attributes
|
7
|
-
end
|
8
|
-
|
9
|
-
context "validations" do
|
10
|
-
|
11
|
-
it "requires a name" do
|
12
|
-
EventCategory.new(@attr.merge(:name => nil)).should_not be_valid
|
13
|
-
end
|
14
|
-
|
15
|
-
end
|
16
|
-
|
17
|
-
context "events" do
|
18
|
-
it "can associate with many events" do
|
19
|
-
event1 = Factory(:event)
|
20
|
-
event2 = Factory(:event)
|
21
|
-
category = Factory(:event_category)
|
22
|
-
|
23
|
-
category.events << event1
|
24
|
-
category.events << event2
|
25
|
-
|
26
|
-
category.events.size.should be 2
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
data/spec/models/event_spec.rb
DELETED
@@ -1,77 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
Dir[File.expand_path('../../../features/support/factories/*.rb', __FILE__)].each{|factory| require factory}
|
3
|
-
|
4
|
-
describe Event do
|
5
|
-
|
6
|
-
def reset_event(options = {})
|
7
|
-
@valid_attributes = {
|
8
|
-
:id => 1,
|
9
|
-
:title => "RSpec is great for testing too"
|
10
|
-
}
|
11
|
-
|
12
|
-
@event.destroy! if @event
|
13
|
-
@event = Event.create!(@valid_attributes.update(options))
|
14
|
-
end
|
15
|
-
|
16
|
-
context "validations" do
|
17
|
-
|
18
|
-
before(:each) do
|
19
|
-
reset_event
|
20
|
-
end
|
21
|
-
|
22
|
-
it "rejects empty title" do
|
23
|
-
Event.new(@valid_attributes.merge(:title => "")).should_not be_valid
|
24
|
-
end
|
25
|
-
|
26
|
-
it "rejects a non-numerical ticket price" do
|
27
|
-
Event.new({
|
28
|
-
:title => "I have a bad ticket price",
|
29
|
-
:ticket_price => "$25"
|
30
|
-
}).should_not be_valid
|
31
|
-
|
32
|
-
Event.new({
|
33
|
-
:title => "I have a good ticket price",
|
34
|
-
:ticket_price => "25"
|
35
|
-
}).should be_valid
|
36
|
-
|
37
|
-
Event.new({
|
38
|
-
:title => "I have a decimal ticket price",
|
39
|
-
:ticket_price => "25.00"
|
40
|
-
}).should be_valid
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
context "instance methods" do
|
45
|
-
it "can find the next item" do
|
46
|
-
event1 = Factory(:event)
|
47
|
-
event2 = Factory(:event, :start_at => Time.now.advance(:days => 1), :end_at => Time.now.advance(:days => 1, :hours => 1))
|
48
|
-
event1.next.should == event2
|
49
|
-
end
|
50
|
-
|
51
|
-
it "can find the previous item" do
|
52
|
-
event1 = Factory(:event)
|
53
|
-
event2 = Factory(:event, :start_at => Time.now.advance(:days => 1), :end_at => Time.now.advance(:days => 1, :hours => 1))
|
54
|
-
event2.prev.should == event1
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
context "categories" do
|
59
|
-
it "has many categories" do
|
60
|
-
event = Factory(:event)
|
61
|
-
event.should respond_to :categories
|
62
|
-
end
|
63
|
-
|
64
|
-
it "can be assigned categories" do
|
65
|
-
event = Factory(:event)
|
66
|
-
cat1 = Factory(:event_category)
|
67
|
-
cat2 = Factory(:event_category)
|
68
|
-
|
69
|
-
event.categories << cat1
|
70
|
-
event.categories << cat2
|
71
|
-
|
72
|
-
event.categories.size.should be 2
|
73
|
-
end
|
74
|
-
|
75
|
-
end
|
76
|
-
|
77
|
-
end
|