refinerycms-calendar 1.0.4 → 1.1.0

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.
@@ -5,6 +5,11 @@ class EventCategoriesController < ApplicationController
5
5
  @event_category = EventCategory.find(params[:id])
6
6
  @event_categories = EventCategory.all
7
7
  @other_events = Event.live.limit(5)
8
+ # @events = @event_category.events.paginate({
9
+ # :page => params[:page],
10
+ # :per_page => RefinerySetting.find_or_set(:events_per_page, 10)
11
+ # })
12
+ # render :template => 'events/index'
8
13
  end
9
14
 
10
15
  end
@@ -37,6 +37,7 @@ class EventsController < ApplicationController
37
37
  :per_page => RefinerySetting.find_or_set(:events_per_page, 10)
38
38
  })
39
39
  end
40
+ #render :template => 'events/index'
40
41
  end
41
42
 
42
43
  protected
@@ -1,4 +1,10 @@
1
1
  module EventsHelper
2
+
3
+ def custom_url_for(event, format = nil)
4
+ port = request.port == 80 ? nil : ":#{request.port}"
5
+ "#{request.protocol}#{request.host}#{port}/events/#{event.friendly_id}#{format}"
6
+ end
7
+
2
8
  def events_archive_list
3
9
  events = Event.select('start_at').for_archive_list
4
10
  return nil if events.blank?
data/app/models/event.rb CHANGED
@@ -16,7 +16,7 @@ class Event < ActiveRecord::Base
16
16
 
17
17
  acts_as_indexed :fields => [:title, :venue_name, :venue_address, :ticket_link, :description]
18
18
 
19
- validates :title, :presence => true, :uniqueness => true
19
+ validates :title, :presence => true
20
20
  validates :ticket_price, :numericality => true, :allow_blank => true
21
21
  validates :ticket_link, :format => /^(http|https):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(([0-9]{1,5})?\/.*)?$/ix, :allow_blank => true
22
22
  validate :ends_after_start
@@ -48,11 +48,19 @@ class Event < ActiveRecord::Base
48
48
  end
49
49
 
50
50
  def next
51
- Event.where(['end_at >= ? AND start_at > ?', Time.now, self.start_at]).first
51
+ Event.where(['start_at > ?', start_at]).first
52
52
  end
53
53
 
54
54
  def prev
55
- Event.where(['end_at >= ? AND start_at < ?', Time.now, self.start_at]).reverse.first
55
+ Event.where(['start_at < ?', start_at]).reverse.first
56
+ end
57
+
58
+ def single_day?
59
+ end_at.blank? || start_at.blank? || (end_at - start_at) < 24*60*60
60
+ end
61
+
62
+ def multi_day?
63
+ !single_day?
56
64
  end
57
65
 
58
66
  def self.archive
@@ -1,6 +1,6 @@
1
1
  <li class='clearfix record <%= cycle("on", "on-hover") %>' id="<%= dom_id(event) -%>">
2
2
  <span class='title'>
3
- <%= event.title %>
3
+ <%= truncate strip_tags(event.title), :length => 60 %>
4
4
  <span class="preview">(<%= event.start_at.strftime('%b %d, %Y') %>) <%= '***Featured***' if event.featured? %></span>
5
5
  </span>
6
6
  <span class='actions'>
@@ -79,7 +79,7 @@
79
79
 
80
80
  <div class='field'>
81
81
  <%= f.label :ticket_price -%>
82
- $<%= f.text_field :ticket_price, :size => 3 -%>
82
+ $<%= f.text_field :ticket_price -%>
83
83
  </div>
84
84
 
85
85
  <div class='field'>
@@ -27,11 +27,19 @@
27
27
  <%= event.venue_name %></p>
28
28
  </section>
29
29
 
30
- <section class="address">
31
- <p>Address:<br/>
32
- <%= event.venue_address %>
33
- </p>
34
- </section>
30
+
31
+
32
+ <% if event.venue_address.present? -%>
33
+ <section class="address">
34
+ <p>Address:<br/>
35
+ <%= event.venue_address %>
36
+ </p>
37
+ </section>
38
+
39
+ <section id="event_map">
40
+ <iframe width="400" height="200" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.com/maps?q=<%= CGI::escape(event.venue_address) %>&amp;z=14&amp;output=embed"></iframe>
41
+ </section><!-- #event_map -->
42
+ <% end -%>
35
43
 
36
44
  <% unless archive -%>
37
45
  <% unless event.ticket_price.blank? -%>
@@ -0,0 +1,16 @@
1
+ BEGIN:VCALENDAR
2
+ VERSION:2.0
3
+ PRODID:-//iCalendar export//EN
4
+ BEGIN:VEVENT
5
+ UID:<%= @event.id %>@<%= request.host %>
6
+ SUMMARY:<%= @event.title %>
7
+ DESCRIPTION:<%= truncate(strip_tags(@event.description.gsub(/\n/," ").gsub(/\r/," ")), :length => 200) %>
8
+ LOCATION:<%= @event.venue_address %>
9
+ URL:<%= custom_url_for @event %>
10
+ STATUS:CONFIRMED
11
+ CLASS:PUBLIC
12
+ DTSTART:<%= @event.start_at.strftime('%Y%m%dT%H%M%S') %>
13
+ DTEND:<%= @event.end_at.strftime('%Y%m%dT%H%M%S') %>
14
+ DTSTAMP:<%= @event.start_at.strftime('%Y%m%dT%H%M%S') %>
15
+ END:VEVENT
16
+ END:VCALENDAR
data/changelog.md CHANGED
@@ -1,3 +1,12 @@
1
+ ## 1.2 [UNRELEASED]
2
+
3
+ ## 1.1 [07 July 2011]
4
+ * No more unique titles [joemsak](https://github.com/joemsak)
5
+ * Cached slugs for performance boost [joemsak](https://github.com/joemsak)
6
+ * Controller & view template refactoring [joemsak](https://github.com/joemsak)
7
+ * Easy multi-day or single-day detection for date formatting [mdoel](https://github.com/mdoel)
8
+ * iCal (ics) export [joemsak](https://github.com/joemsak)
9
+ * Google map of venue address [joemsak](https://github.com/joemsak)
1
10
 
2
11
  ## 1.0.4 [02 June 2011]
3
12
  * Archive listing should be reversed
data/config/routes.rb CHANGED
@@ -1,7 +1,9 @@
1
1
  Refinery::Application.routes.draw do
2
2
  resources :events do
3
- get 'archive/:year(/:month)' => 'events#archive', :as => 'archive', :on => :collection
4
- get 'category/:id' => 'event_categories#show', :as => 'category', :on => :collection
3
+ collection do
4
+ get 'archive/:year(/:month)' => 'events#archive', :as => 'archive'
5
+ get 'category/:id' => 'event_categories#show', :as => 'category'
6
+ end
5
7
  end
6
8
 
7
9
  scope(:path => 'refinery', :as => 'admin', :module => 'admin') do
@@ -0,0 +1,11 @@
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
@@ -44,16 +44,6 @@ Feature: Events
44
44
  And I should be on the list of events
45
45
  And I should not see "A title"
46
46
 
47
- @events-duplicate @duplicate
48
- Scenario: Create Duplicate Event
49
- Given I only have events titled UniqueTitleOne, UniqueTitleTwo
50
- When I go to the list of events
51
- And I follow "Add New Event"
52
- And I fill in "Title" with "UniqueTitleTwo"
53
- And I press "Save"
54
- Then I should see "There were problems"
55
- And I should have 2 events
56
-
57
47
  @events-delete @delete
58
48
  Scenario: Delete Event
59
49
  Given I only have events titled UniqueTitleOne
data/readme.md CHANGED
@@ -15,7 +15,7 @@
15
15
 
16
16
  Using Rails 3 / Bundler Gemfile:
17
17
 
18
- gem 'refinerycms-calendar', '~>1.0'
18
+ gem 'refinerycms-calendar', '~>1.1.0'
19
19
 
20
20
  bash:
21
21
 
@@ -29,16 +29,11 @@ bash:
29
29
 
30
30
  Maintained by [joemsak](http://github.com/joemsak)
31
31
 
32
- ## TODO for 1.1 Release:
32
+ ## TODO for 1.2 Release:
33
33
 
34
34
  * Import events from Facebook fan page?
35
35
  * JS datepicker in admin backend
36
36
  * Calendar grid view? (can be kinda gross, honestly)
37
- * iCal export
38
-
39
- ## TODO for 1.2
40
-
41
- * Google map of address
42
37
  * Address finder?
43
38
 
44
39
  ## Acknowledgements
Binary file
@@ -1,7 +1,7 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.platform = Gem::Platform::RUBY
3
3
  s.name = 'refinerycms-calendar'
4
- s.version = '1.0.4'
4
+ s.version = '1.1.0'
5
5
  s.description = 'Ruby on Rails Events engine for Refinery CMS'
6
6
  s.date = Time.now.strftime('%Y-%m-%d')
7
7
  s.summary = 'Events engine for Refinery CMS'
@@ -22,11 +22,6 @@ describe Event do
22
22
  it "rejects empty title" do
23
23
  Event.new(@valid_attributes.merge(:title => "")).should_not be_valid
24
24
  end
25
-
26
- it "rejects non unique title" do
27
- # as one gets created before each spec by reset_event
28
- Event.new(@valid_attributes).should_not be_valid
29
- end
30
25
 
31
26
  it "rejects a non-numerical ticket price" do
32
27
  Event.new({
@@ -79,4 +74,4 @@ describe Event do
79
74
 
80
75
  end
81
76
 
82
- end
77
+ end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: refinerycms-calendar
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 1.0.4
5
+ version: 1.1.0
6
6
  platform: ruby
7
7
  authors:
8
8
  - Neoteric Design
@@ -12,7 +12,7 @@ autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
14
 
15
- date: 2011-06-02 00:00:00 -05:00
15
+ date: 2011-07-07 00:00:00 -05:00
16
16
  default_executable:
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
@@ -65,6 +65,7 @@ files:
65
65
  - app/views/events/index.html.erb
66
66
  - app/views/events/index.rss.builder
67
67
  - app/views/events/show.html.erb
68
+ - app/views/events/show.ics.erb
68
69
  - changelog.md
69
70
  - config/locales/en.yml
70
71
  - config/locales/fr.yml
@@ -75,6 +76,7 @@ files:
75
76
  - db/migrate/01_create_events.rb
76
77
  - db/migrate/02_create_event_categories.rb
77
78
  - db/migrate/03_create_event_categorizations.rb
79
+ - db/migrate/04_add_cached_slugs.rb
78
80
  - db/seeds/events.rb
79
81
  - features/manage_events.feature
80
82
  - features/step_definitions/event_steps.rb
@@ -86,6 +88,7 @@ files:
86
88
  - lib/tasks/events.rake
87
89
  - public/stylesheets/refinerycms-events.css
88
90
  - readme.md
91
+ - refinerycms-calendar-1.0.4.gem
89
92
  - refinerycms-calendar.gemspec
90
93
  - spec/controllers/events_controller_spec.rb
91
94
  - spec/helpers/events_helper_spec.rb