dcs-eventable 0.0.0 → 0.0.8

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 (100) hide show
  1. data/CHANGELOG.textile +3 -0
  2. data/LICENSE +1 -1
  3. data/README.textile +23 -0
  4. data/Rakefile +69 -19
  5. data/TODO.textile +5 -0
  6. data/VERSION.yml +1 -1
  7. data/app/controllers/eventable/categories_controller.rb +58 -0
  8. data/app/controllers/eventable/categorylists_controller.rb +29 -0
  9. data/app/controllers/eventable/eventable_controller.rb +45 -0
  10. data/app/controllers/eventable/events_controller.rb +54 -0
  11. data/app/controllers/eventable/opening_periodlists_controller.rb +40 -0
  12. data/app/controllers/eventable/opening_periods_controller.rb +78 -0
  13. data/app/controllers/eventable/opening_timelists_controller.rb +45 -0
  14. data/app/controllers/eventable/opening_times_controller.rb +81 -0
  15. data/app/controllers/eventable/pricelists_controller.rb +40 -0
  16. data/app/controllers/eventable/prices_controller.rb +76 -0
  17. data/app/models/eventable/categorization.rb +9 -0
  18. data/app/models/eventable/category.rb +10 -0
  19. data/app/models/eventable/categorylist.rb +49 -0
  20. data/app/models/eventable/opening_period.rb +21 -0
  21. data/app/models/eventable/opening_periodlist.rb +30 -0
  22. data/app/models/eventable/opening_time.rb +42 -0
  23. data/app/models/eventable/opening_timelist.rb +30 -0
  24. data/app/models/eventable/price.rb +15 -0
  25. data/app/models/eventable/pricelist.rb +30 -0
  26. data/app/models/eventable/program_item.rb +11 -0
  27. data/app/models/eventable/review.rb +7 -0
  28. data/app/views/eventable/categories/_form.html.erb +14 -0
  29. data/app/views/eventable/categories/edit.html.erb +13 -0
  30. data/app/views/eventable/categories/index.html.erb +22 -0
  31. data/app/views/eventable/categories/new.html.erb +12 -0
  32. data/app/views/eventable/categories/show.html.erb +17 -0
  33. data/app/views/eventable/categorylists/edit.html.erb +20 -0
  34. data/app/views/eventable/categorylists/show.html.erb +18 -0
  35. data/app/views/eventable/events/edit.html.erb +12 -0
  36. data/app/views/eventable/events/index.html.erb +20 -0
  37. data/app/views/eventable/events/new.html.erb +11 -0
  38. data/app/views/eventable/events/show.html.erb +12 -0
  39. data/app/views/eventable/opening_periodlists/edit.html.erb +16 -0
  40. data/app/views/eventable/opening_periodlists/show.html.erb +28 -0
  41. data/app/views/eventable/opening_periods/_form.html.erb +9 -0
  42. data/app/views/eventable/opening_periods/edit.html.erb +13 -0
  43. data/app/views/eventable/opening_periods/index.html.erb +22 -0
  44. data/app/views/eventable/opening_periods/new.html.erb +12 -0
  45. data/app/views/eventable/opening_periods/show.html.erb +13 -0
  46. data/app/views/eventable/opening_timelists/edit.html.erb +16 -0
  47. data/app/views/eventable/opening_timelists/show.html.erb +30 -0
  48. data/app/views/eventable/opening_times/_form.html.erb +14 -0
  49. data/app/views/eventable/opening_times/edit.html.erb +13 -0
  50. data/app/views/eventable/opening_times/index.html.erb +24 -0
  51. data/app/views/eventable/opening_times/new.html.erb +12 -0
  52. data/app/views/eventable/opening_times/show.html.erb +18 -0
  53. data/app/views/eventable/pricelists/edit.html.erb +16 -0
  54. data/app/views/eventable/pricelists/show.html.erb +28 -0
  55. data/app/views/eventable/prices/_form.html.erb +9 -0
  56. data/app/views/eventable/prices/edit.html.erb +13 -0
  57. data/app/views/eventable/prices/index.html.erb +22 -0
  58. data/app/views/eventable/prices/new.html.erb +12 -0
  59. data/app/views/eventable/prices/show.html.erb +13 -0
  60. data/config/routes.rb +25 -0
  61. data/generators/eventable/USAGE +1 -0
  62. data/generators/eventable/eventable_generator.rb +26 -0
  63. data/generators/eventable/templates/README +1 -0
  64. data/generators/eventable/templates/factories.rb +12 -0
  65. data/generators/eventable/templates/migrations/eventable.rb +134 -0
  66. data/lib/eventable.rb +27 -0
  67. data/lib/eventable/acts_as_event.rb +10 -0
  68. data/lib/eventable/model.rb +58 -0
  69. data/rails/init.rb +1 -0
  70. data/shoulda_macros/eventable.rb +16 -0
  71. data/test/rails_root/app/controllers/application_controller.rb +10 -0
  72. data/test/rails_root/app/controllers/events_controller.rb +85 -0
  73. data/test/rails_root/app/helpers/application_helper.rb +3 -0
  74. data/test/rails_root/app/helpers/events_helper.rb +2 -0
  75. data/test/rails_root/app/models/event.rb +3 -0
  76. data/test/rails_root/app/models/user.rb +2 -0
  77. data/test/rails_root/config/boot.rb +110 -0
  78. data/test/rails_root/config/environment.rb +41 -0
  79. data/test/rails_root/config/environments/development.rb +17 -0
  80. data/test/rails_root/config/environments/production.rb +28 -0
  81. data/test/rails_root/config/environments/test.rb +28 -0
  82. data/test/rails_root/config/initializers/backtrace_silencers.rb +7 -0
  83. data/test/rails_root/config/initializers/inflections.rb +10 -0
  84. data/test/rails_root/config/initializers/mime_types.rb +5 -0
  85. data/test/rails_root/config/initializers/new_rails_defaults.rb +19 -0
  86. data/test/rails_root/config/initializers/session_store.rb +15 -0
  87. data/test/rails_root/config/locales/en.rb +19 -0
  88. data/test/rails_root/config/locales/nl.rb +30 -0
  89. data/test/rails_root/config/routes.rb +3 -0
  90. data/test/rails_root/db/migrate/20090504165857_create_events.rb +13 -0
  91. data/test/rails_root/db/migrate/20090512075657_setup_eventable_0_0_0.rb +60 -0
  92. data/test/rails_root/db/schema.rb +71 -0
  93. data/test/rails_root/test/factories/eventable.rb +12 -0
  94. data/test/rails_root/test/functional/events_controller_test.rb +4 -0
  95. data/test/rails_root/test/unit/event_test.rb +8 -0
  96. data/test/rails_root/test/unit/helpers/events_helper_test.rb +4 -0
  97. data/test/test_helper.rb +23 -6
  98. metadata +134 -10
  99. data/README.rdoc +0 -7
  100. data/test/eventable_test.rb +0 -7
@@ -0,0 +1,15 @@
1
+ class Eventable::Price < ActiveRecord::Base
2
+
3
+ unloadable
4
+
5
+ set_table_name 'eventable_prices'
6
+
7
+ attr_accessible :text, :price
8
+ validates_presence_of :text, :price
9
+
10
+ belongs_to :event, :class_name => 'Event', :foreign_key => :event_id
11
+
12
+ def price=(p)
13
+ write_attribute(:price, p.gsub(',', '.'))
14
+ end
15
+ end
@@ -0,0 +1,30 @@
1
+ class Eventable::Pricelist
2
+
3
+ attr_reader :event, :items
4
+ delegate :id, :save, :to => :event
5
+
6
+ def initialize(event)
7
+ @event = event
8
+ @items = event.prices.all
9
+ end
10
+
11
+ def errors
12
+ ActiveRecord::Errors.new(self)
13
+ end
14
+
15
+ def add_blank
16
+ @items << @event.prices.build
17
+ end
18
+
19
+ def items_attributes=(attr)
20
+ @event.prices_attributes=(attr)
21
+ end
22
+
23
+ def update_attributes(attrs)
24
+ attrs.each do |k,v|
25
+ send "#{k}=", v
26
+ end
27
+ save
28
+ end
29
+
30
+ end
@@ -0,0 +1,11 @@
1
+ class Eventable::ProgramItem < ActiveRecord::Base
2
+
3
+ unloadable
4
+
5
+ set_table_name 'eventable_program_items'
6
+ attr_accessible :start_at, :end_at
7
+
8
+ belongs_to :event, :class_name => 'Event', :foreign_key => :event_id
9
+ belongs_to :user, :class_name => 'User', :foreign_key => :user_id
10
+ has_one :review, :class_name => 'Eventable::Review', :dependent => :destroy
11
+ end
@@ -0,0 +1,7 @@
1
+ class Eventable::Review < ActiveRecord::Base
2
+
3
+ set_table_name 'eventable_reviews'
4
+ attr_accessible :review, :text
5
+
6
+ belongs_to :program_item, :class_name => 'Eventable::ProgramItem'
7
+ end
@@ -0,0 +1,14 @@
1
+ <p>
2
+ <%= form.label :name %>
3
+ <%= form.text_field :name %>
4
+ </p>
5
+
6
+ <p>
7
+ <%= form.label :description %>
8
+ <%= form.text_area :description %>
9
+ </p>
10
+
11
+ <p>
12
+ <%= form.label :group %>
13
+ <%= form.text_field :group %>
14
+ </p>
@@ -0,0 +1,13 @@
1
+ <h1>Editing category</h1>
2
+
3
+ <% form_for(@category, :url => eventable_category_path(@category)) do |f| %>
4
+ <%= f.error_messages %>
5
+
6
+ <%= render :partial => 'eventable/categories/form', :object => f %>
7
+ <p>
8
+ <%= f.submit 'Update' %>
9
+ </p>
10
+ <% end %>
11
+
12
+ <%= link_to 'Show', eventable_category_path(@category) %> |
13
+ <%= link_to 'Back', eventable_categories_path %>
@@ -0,0 +1,22 @@
1
+ <h1>Listing categories</h1>
2
+
3
+ <% @categories.group_by(&:group).each do |group, categories| %>
4
+ <h3><%=h group -%></h3>
5
+ <table>
6
+ <tr>
7
+ <th>Name</th>
8
+ </tr>
9
+ <% categories.each do |category| %>
10
+ <tr>
11
+ <td title="<%= h(category.description) -%>"><%=h category.name %></td>
12
+ <td><%= link_to 'Show', eventable_category_path(category) %></td>
13
+ <td><%= link_to 'Edit', edit_eventable_category_path(category) %></td>
14
+ <td><%= button_to 'Destroy', eventable_category_path(category), :confirm => 'Are you sure?', :method => :delete %></td>
15
+ </tr>
16
+ <% end %>
17
+ </table>
18
+ <% end %>
19
+
20
+ <br />
21
+
22
+ <%= link_to 'New category', new_eventable_category_path %>
@@ -0,0 +1,12 @@
1
+ <h1>New category</h1>
2
+
3
+ <% form_for(@category, :url => eventable_categories_path) do |f| %>
4
+ <%= f.error_messages %>
5
+
6
+ <%= render :partial => 'eventable/categories/form', :object => f %>
7
+ <p>
8
+ <%= f.submit 'Create' %>
9
+ </p>
10
+ <% end %>
11
+
12
+ <%= link_to 'Back', eventable_categories_path %>
@@ -0,0 +1,17 @@
1
+ <p>
2
+ <b>Name:</b>
3
+ <%=h @category.name %>
4
+ </p>
5
+
6
+ <p>
7
+ <b>Description:</b>
8
+ <%=simple_format(h(@category.description)) %>
9
+ </p>
10
+
11
+ <p>
12
+ <b>Group:</b>
13
+ <%=h @category.group %>
14
+ </p>
15
+
16
+ <%= link_to 'Edit', edit_eventable_category_path(@category) %> |
17
+ <%= link_to 'Back', eventable_categories_path %>
@@ -0,0 +1,20 @@
1
+ <h1>Edit list of categories</h1>
2
+
3
+ <% form_for(@categorylist, :url => eventable_event_categorylist_path(@event)) do |f| %>
4
+ <%= f.error_messages %>
5
+ <% @categorylist.items.group_by(&:group).each do |group, items| %>
6
+ <h3><%=h group -%></h3>
7
+ <% f.fields_for :items do |cif| %>
8
+ <% if cif.object.group == group %>
9
+ <%= cif.hidden_field :id -%>
10
+ <%= cif.check_box :active -%>
11
+ <%=h cif.object.name -%>
12
+ <br/>
13
+ <% end %>
14
+ <% end %>
15
+ <% end %>
16
+ <p>
17
+ <%= f.submit 'Update' %>
18
+ </p>
19
+ <% end %>
20
+ <%= link_to 'Back', eventable_event_categorylist_path(@event) %>
@@ -0,0 +1,18 @@
1
+ <h1>List of categories</h1>
2
+ <h3><%= link_to 'Edit', edit_eventable_event_categorylist_path(@event) %></h3>
3
+
4
+ <% @categorylist.items.group_by(&:group).each do |group, items| %>
5
+ <h3><%=h group -%></h3>
6
+ <table>
7
+ <tr>
8
+ <th>Active</th>
9
+ <th>Name</th>
10
+ </tr>
11
+ <% items.each do |category_item| %>
12
+ <tr>
13
+ <td><%= '*' if category_item.active %></td>
14
+ <td><%=h category_item.name %></td>
15
+ </tr>
16
+ <% end %>
17
+ </table>
18
+ <% end %>
@@ -0,0 +1,12 @@
1
+ <h1>Editing event</h1>
2
+
3
+ <% form_for(@event, :url => eventable_event_path(@event)) do |f| %>
4
+ <%= f.error_messages %>
5
+
6
+ <p>
7
+ <%= f.submit 'Update' %>
8
+ </p>
9
+ <% end %>
10
+
11
+ <%= link_to 'Show', eventable_event_path(@event) %> |
12
+ <%= link_to 'Back', eventable_events_path %>
@@ -0,0 +1,20 @@
1
+ <h1>Listing events</h1>
2
+
3
+ <table>
4
+ <tr>
5
+ <th>Id</th>
6
+ </tr>
7
+
8
+ <% @events.each do |event| %>
9
+ <tr>
10
+ <td><%= event.id %></td>
11
+ <td><%= link_to 'Show', eventable_event_path(event) %></td>
12
+ <td><%= link_to 'Edit', edit_eventable_event_path(event) %></td>
13
+ <td><%= button_to 'Destroy', eventable_event_path(event), :confirm => 'Are you sure?', :method => :delete %></td>
14
+ </tr>
15
+ <% end %>
16
+ </table>
17
+
18
+ <br />
19
+
20
+ <%= link_to 'New event', new_eventable_event_path %>
@@ -0,0 +1,11 @@
1
+ <h1>New event</h1>
2
+
3
+ <% form_for(@event, :url => eventable_events_path) do |f| %>
4
+ <%= f.error_messages %>
5
+
6
+ <p>
7
+ <%= f.submit 'Create' %>
8
+ </p>
9
+ <% end %>
10
+
11
+ <%= link_to 'Back', eventable_events_path %>
@@ -0,0 +1,12 @@
1
+ <p>
2
+ <b>Id:</b>
3
+ <%= @event.id %>
4
+ </p>
5
+
6
+ <p>
7
+ <%= link_to 'Prices', eventable_event_prices_path(@event) %> |
8
+ <%= link_to 'Pricelist', eventable_event_pricelist_path(@event) %>
9
+ </p>
10
+
11
+ <%= link_to 'Edit', edit_eventable_event_path(@event) %> |
12
+ <%= link_to 'Back', eventable_events_path %>
@@ -0,0 +1,16 @@
1
+ <h1>Edit list of opening periods</h1>
2
+
3
+ <% form_for(@opening_periodlist, :url => eventable_event_opening_periodlist_path(@event)) do |f| %>
4
+ <%= f.error_messages %>
5
+ <% f.fields_for :items do |opf| %>
6
+ <%= render :partial => 'eventable/opening_periods/form', :object => opf %>
7
+ <% unless opf.object.new_record? %>
8
+ <%= opf.label :_delete, 'remove' %>
9
+ <%= opf.check_box :_delete %>
10
+ <% end %>
11
+ <% end %>
12
+ <p>
13
+ <%= f.submit 'Update' %>
14
+ </p>
15
+ <% end %>
16
+ <%= link_to 'Back', eventable_event_opening_periodlist_path(@event) %>
@@ -0,0 +1,28 @@
1
+ <h1>List of opening periods</h1>
2
+ <h3><%= link_to 'Edit', edit_eventable_event_opening_periodlist_path(@event) %></h3>
3
+
4
+ <table>
5
+ <tr>
6
+ <th>Start</th>
7
+ <th>End</th>
8
+ </tr>
9
+
10
+ <% @opening_periodlist.items.each do |opening_period| %>
11
+ <tr>
12
+ <td><%=l opening_period.start_at %></td>
13
+ <td><%=l opening_period.end_at %></td>
14
+ <td><%= button_to 'Remove', eventable_event_opening_period_path(@event, opening_period, :list => true), :confirm => 'Are you sure?', :method => :delete %></td>
15
+ </tr>
16
+ <% end %>
17
+ </table>
18
+
19
+ <br/>
20
+ <strong>Add a new opening period:</strong>
21
+ <% form_for(@new_opening_period, :url => eventable_event_opening_periods_path(@event, :list => true)) do |f| %>
22
+ <%= f.error_messages %>
23
+
24
+ <%= render :partial => 'eventable/opening_periods/form', :object => f %>
25
+ <p>
26
+ <%= f.submit 'Create' %>
27
+ </p>
28
+ <% end %>
@@ -0,0 +1,9 @@
1
+ <p>
2
+ <%= form.label :start_at %>
3
+ <%= form.datetime_select :start_at, :start_year => [Time.now, form.object.start_at].compact.min.year %>
4
+ </p>
5
+
6
+ <p>
7
+ <%= form.label :end_at %>
8
+ <%= form.datetime_select :end_at, :start_year => [Time.now, form.object.start_at].compact.min.year %>
9
+ </p>
@@ -0,0 +1,13 @@
1
+ <h1>Editing opening period</h1>
2
+
3
+ <% form_for(@opening_period, :url => eventable_event_opening_period_path(@event, @opening_period)) do |f| %>
4
+ <%= f.error_messages %>
5
+
6
+ <%= render :partial => 'eventable/opening_periods/form', :object => f %>
7
+ <p>
8
+ <%= f.submit 'Update' %>
9
+ </p>
10
+ <% end %>
11
+
12
+ <%= link_to 'Show', eventable_event_opening_period_path(@event, @opening_period) %>
13
+ <%= link_to 'Back', eventable_event_opening_periods_path(@event) %>
@@ -0,0 +1,22 @@
1
+ <h1>Listing opening periods</h1>
2
+
3
+ <table>
4
+ <tr>
5
+ <th>Start</th>
6
+ <th>End</th>
7
+ </tr>
8
+
9
+ <% @opening_periods.each do |opening_period| %>
10
+ <tr>
11
+ <td><%= l opening_period.start_at %></td>
12
+ <td><%= l opening_period.end_at %></td>
13
+ <td><%= link_to 'Show', eventable_event_opening_period_path(@event, opening_period) %></td>
14
+ <td><%= link_to 'Edit', edit_eventable_event_opening_period_path(@event, opening_period) %></td>
15
+ <td><%= button_to 'Destroy', eventable_event_opening_period_path(@event, opening_period), :confirm => 'Are you sure?', :method => :delete %></td>
16
+ </tr>
17
+ <% end %>
18
+ </table>
19
+
20
+ <br />
21
+
22
+ <%= link_to 'New opening period', new_eventable_event_opening_period_path(@event) %>
@@ -0,0 +1,12 @@
1
+ <h1>New opening period</h1>
2
+
3
+ <% form_for(@opening_period, :url => eventable_event_opening_periods_path(@event)) do |f| %>
4
+ <%= f.error_messages %>
5
+
6
+ <%= render :partial => 'eventable/opening_periods/form', :object => f %>
7
+ <p>
8
+ <%= f.submit 'Create' %>
9
+ </p>
10
+ <% end %>
11
+
12
+ <%= link_to 'Back', eventable_event_opening_periods_path(@event) %>
@@ -0,0 +1,13 @@
1
+ <p>
2
+ <b>Start:</b>
3
+ <%= l @opening_period.start_at %>
4
+ </p>
5
+
6
+ <p>
7
+ <b>End:</b>
8
+ <%= l @opening_period.end_at %>
9
+ </p>
10
+
11
+ <%= link_to 'Edit', edit_eventable_event_opening_period_path(@event, @opening_period) %> |
12
+ <%= link_to 'Back', eventable_event_opening_periods_path(@event) %>
13
+
@@ -0,0 +1,16 @@
1
+ <h1>Edit list of opening times</h1>
2
+
3
+ <% form_for(@opening_timelist, :url => eventable_opening_period_opening_timelist_path(@opening_period)) do |f| %>
4
+ <%= f.error_messages %>
5
+ <% f.fields_for :items do |otf| %>
6
+ <%= render :partial => 'eventable/opening_times/form', :object => otf %>
7
+ <% unless otf.object.new_record? %>
8
+ <%= otf.label :_delete, 'remove' %>
9
+ <%= otf.check_box :_delete %>
10
+ <% end %>
11
+ <% end %>
12
+ <p>
13
+ <%= f.submit 'Update' %>
14
+ </p>
15
+ <% end %>
16
+ <%= link_to 'Back', eventable_opening_period_opening_timelist_path(@opening_period) %>
@@ -0,0 +1,30 @@
1
+ <h1>List of opening times</h1>
2
+ <h3><%= link_to 'Edit', edit_eventable_opening_period_opening_timelist_path(@opening_period) %></h3>
3
+
4
+ <table>
5
+ <tr>
6
+ <th>Day of week</th>
7
+ <th>Open</th>
8
+ <th>Closed</th>
9
+ </tr>
10
+
11
+ <% @opening_timelist.items.each do |opening_time| %>
12
+ <tr>
13
+ <td><%= t('date.day_names')[opening_time.day_of_week] %></td>
14
+ <td><%= opening_time.open_at %></td>
15
+ <td><%= opening_time.closed_at %></td>
16
+ <td><%= button_to 'Remove', eventable_opening_period_opening_time_path(@opening_period, opening_time, :list => true), :confirm => 'Are you sure?', :method => :delete %></td>
17
+ </tr>
18
+ <% end %>
19
+ </table>
20
+
21
+ <br/>
22
+ <strong>Add a new opening time:</strong>
23
+ <% form_for(@new_opening_time, :url => eventable_opening_period_opening_times_path(@opening_period, :list => true)) do |f| %>
24
+ <%= f.error_messages %>
25
+
26
+ <%= render :partial => 'eventable/opening_times/form', :object => f %>
27
+ <p>
28
+ <%= f.submit 'Create' %>
29
+ </p>
30
+ <% end %>
@@ -0,0 +1,14 @@
1
+ <p>
2
+ <%= form.label :day_of_week %>
3
+ <%= form.select :day_of_week, Eventable::OpeningTime.day_selector %>
4
+ </p>
5
+
6
+ <p>
7
+ <%= form.label :minutes_start, 'Open' %>
8
+ <%= form.select :minutes_start, Eventable::OpeningTime.time_selector %>
9
+ </p>
10
+
11
+ <p>
12
+ <%= form.label :minutes_end, 'Closed' %>
13
+ <%= form.select :minutes_end, Eventable::OpeningTime.time_selector %>
14
+ </p>