spree_events_list 0.50.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.
data/.gitignore ADDED
@@ -0,0 +1,9 @@
1
+ \#*
2
+ *~
3
+ .#*
4
+ .DS_Store
5
+ .idea
6
+ .project
7
+ tmp
8
+ nbproject
9
+ *.swp
data/LICENSE ADDED
@@ -0,0 +1,23 @@
1
+ Redistribution and use in source and binary forms, with or without modification,
2
+ are permitted provided that the following conditions are met:
3
+
4
+ * Redistributions of source code must retain the above copyright notice,
5
+ this list of conditions and the following disclaimer.
6
+ * Redistributions in binary form must reproduce the above copyright notice,
7
+ this list of conditions and the following disclaimer in the documentation
8
+ and/or other materials provided with the distribution.
9
+ * Neither the name of the Rails Dog LLC nor the names of its
10
+ contributors may be used to endorse or promote products derived from this
11
+ software without specific prior written permission.
12
+
13
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
14
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
15
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
16
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
17
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
21
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
22
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
23
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
data/README.md ADDED
@@ -0,0 +1,10 @@
1
+ SpreeEventsList
2
+ ===============
3
+
4
+ Manage and display events.
5
+
6
+ Example
7
+ =======
8
+
9
+
10
+ Copyright (c) 2011 Azimuth Internet Services, released under the New BSD License
data/Rakefile ADDED
@@ -0,0 +1,75 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+ require 'rake/testtask'
4
+ require 'rake/packagetask'
5
+ require 'rake/gempackagetask'
6
+
7
+ gemfile = File.expand_path('../spec/test_app/Gemfile', __FILE__)
8
+ if File.exists?(gemfile) && (%w(spec cucumber).include?(ARGV.first.to_s) || ARGV.size == 0)
9
+ require 'bundler'
10
+ ENV['BUNDLE_GEMFILE'] = gemfile
11
+ Bundler.setup
12
+
13
+ require 'rspec'
14
+ require 'rspec/core/rake_task'
15
+ RSpec::Core::RakeTask.new
16
+
17
+ require 'cucumber/rake/task'
18
+ Cucumber::Rake::Task.new do |t|
19
+ t.cucumber_opts = %w{--format progress}
20
+ end
21
+ end
22
+
23
+ desc "Default Task"
24
+ task :default => [:spec, :cucumber ]
25
+
26
+ spec = eval(File.read('spree_events_list.gemspec'))
27
+
28
+ Rake::GemPackageTask.new(spec) do |p|
29
+ p.gem_spec = spec
30
+ end
31
+
32
+ desc "Release to gemcutter"
33
+ task :release => :package do
34
+ require 'rake/gemcutter'
35
+ Rake::Gemcutter::Tasks.new(spec).define
36
+ Rake::Task['gem:push'].invoke
37
+ end
38
+
39
+ desc "Default Task"
40
+ task :default => [ :spec ]
41
+
42
+ desc "Regenerates a rails 3 app for testing"
43
+ task :test_app do
44
+ require '../spree/lib/generators/spree/test_app_generator'
45
+ class SpreeEventsListTestAppGenerator < Spree::Generators::TestAppGenerator
46
+
47
+ def install_gems
48
+ inside "test_app" do
49
+ run 'rake spree_core:install'
50
+ run 'rake spree_events_list:install'
51
+ end
52
+ end
53
+
54
+ def migrate_db
55
+ run_migrations
56
+ end
57
+
58
+ protected
59
+ def full_path_for_local_gems
60
+ <<-gems
61
+ gem 'spree_core', :path => \'#{File.join(File.dirname(__FILE__), "../spree/", "core")}\'
62
+ gem 'spree_events_list', :path => \'#{File.dirname(__FILE__)}\'
63
+ gems
64
+ end
65
+
66
+ end
67
+ SpreeEventsListTestAppGenerator.start
68
+ end
69
+
70
+ namespace :test_app do
71
+ desc 'Rebuild test and cucumber databases'
72
+ task :rebuild_dbs do
73
+ system("cd spec/test_app && rake db:drop db:migrate RAILS_ENV=test && rake db:drop db:migrate RAILS_ENV=cucumber")
74
+ end
75
+ end
@@ -0,0 +1,20 @@
1
+ class Admin::EventsController < Admin::BaseController
2
+ resource_controller
3
+
4
+ update.response do |wants|
5
+ wants.html { redirect_to edit_admin_event_url(Event.find(@event.id)) }
6
+ end
7
+
8
+ update.after do
9
+ Rails.cache.delete('events')
10
+ end
11
+
12
+ create.response do |wants|
13
+ wants.html { redirect_to collection_url }
14
+ end
15
+
16
+ create.after do
17
+ Rails.cache.delete('events')
18
+ end
19
+
20
+ end
@@ -0,0 +1,11 @@
1
+ class EventsController < Spree::BaseController
2
+ def index
3
+ @events = Event.find_visible_by_date(Spree::Config[:events_days_before], Spree::Config[:events_days_after])
4
+ end
5
+
6
+ def show
7
+ @event = Event.find(params[:id])
8
+ render :template => 'events/show', :layout => 'plain'
9
+ end
10
+
11
+ end
@@ -0,0 +1,12 @@
1
+ class Event < ActiveRecord::Base
2
+ has_attached_file :image,
3
+ :styles => { :large => "800x800>",
4
+ :medium => "400x400>",
5
+ :thumb => "100x100>" }
6
+ validates_presence_of :begin_event, :end_event
7
+
8
+ # visible events that start within 'to' days of today, or ended less than 'from' days ago.
9
+ def Event.find_visible_by_date(to, from)
10
+ Event.find_all_by_visible(true, :conditions => ["begin_event > ? or end_event > ?", DateTime.now + to.to_i.days, DateTime.now - from.to_i.days])
11
+ end
12
+ end
@@ -0,0 +1,81 @@
1
+ <% content_for :head do %>
2
+
3
+ <%= javascript_include_tag 'jquery/jquery.js' %>
4
+ <%= javascript_include_tag 'wymeditor/jquery.wymeditor.js' %>
5
+
6
+
7
+ <script type="text/javascript" charset="utf-8">
8
+
9
+ var $j = jQuery.noConflict();
10
+ $j(function() {
11
+ $j('.wymeditor').wymeditor({
12
+ xhtmlParser: 'xhtml_parser.js',
13
+ cssParser: 'wym_css_parser.js',
14
+ stylesheet: '/stylesheets/wymeditor.css?v='+Math.random(),
15
+ containersItems: [
16
+ {'name': 'P', 'title': 'Paragraph', 'css': 'wym_containers_p'},
17
+ {'name': 'H1', 'title': 'Heading_1', 'css': 'wym_containers_h1'},
18
+ {'name': 'H2', 'title': 'Heading_2', 'css': 'wym_containers_h2'},
19
+ {'name': 'H3', 'title': 'Heading_3', 'css': 'wym_containers_h3'},
20
+ {'name': 'PRE', 'title': 'Preformatted', 'css': 'wym_containers_pre'},
21
+ {'name': 'BLOCKQUOTE', 'title': 'Blockquote', 'css': 'wym_containers_blockquote'},
22
+ ],
23
+ lang: '<%= I18n.locale.to_s.split("-").first %>'
24
+ });
25
+ });
26
+
27
+ </script>
28
+ <% end %>
29
+
30
+ <table class="admin-report" width="545">
31
+ <tr>
32
+ <td valign="top"><%=t('title')%></td>
33
+ <td><%= f.text_field :title, {"style" => "width:500px;"} %></td>
34
+ </tr>
35
+ <tr>
36
+ <td valign="top"><%=t('venue')%></td>
37
+ <td><%= f.text_field :venue, {"style" => "width:500px;"} %></td>
38
+ </tr>
39
+ <tr>
40
+ <td valign="top"><%=t('sponsor')%></td>
41
+ <td><%= f.text_field :sponsor, {"style" => "width:500px;"} %></td>
42
+ </tr>
43
+ <tr>
44
+ <td valign="top"><%=t('begin')%></td>
45
+ <td><%= f.date_select :begin_event %></td>
46
+ </tr>
47
+ <tr>
48
+ <td valign="top"><%=t('end')%></td>
49
+ <td><%= f.date_select :end_event %></td>
50
+ </tr>
51
+ <tr>
52
+ <td valign="top"><%=t('start_time')%></td>
53
+ <td><%= f.text_field :start_time, {"style" => "width: 500px;"} %></td>
54
+ </tr>
55
+ <tr>
56
+ <td valign="top"><%=t('further_information')%><br />
57
+ <span class="small_help"><%=t('further_information_desc')%></span>
58
+ </td>
59
+ <td><%= f.text_field :further_information, {"style" => "width:500px;"} %><br/>
60
+ <span class="small_help">Example: <%=t('further_information_example')%></span>
61
+ </td>
62
+ </tr>
63
+ <tr>
64
+ <td valign="top"><%=t('summary')%></td>
65
+ <td><%= f.text_area :summary, {"style" => "width:500px; height:200px;", "class"=> "wymeditor"} %></td>
66
+ </tr>
67
+ <tr>
68
+ <td valign="top"><%=t("full_description")%>:</td>
69
+ <td><%= f.text_area :full_description, {"style" => "width:500px; height:500px;", "class"=> "wymeditor"} %></td>
70
+ </tr>
71
+ <tr>
72
+ <td valign="top"><%=t('visible')%><br />
73
+ <span class="small_help"><%=t('visible_desc')%></span>
74
+ </td>
75
+ <td><%= f.check_box :visible %></td>
76
+ </tr>
77
+ <tr>
78
+ <td valign="top"><%=t('image')%></td>
79
+ <td><%= image_tag(@event.image.url(:thumb)) + "<br/>" if not @event.image.size.nil? %><%= f.file_field :image, {"style" => "width:500px;"} %></td>
80
+ </tr>
81
+ </table>
@@ -0,0 +1,11 @@
1
+ <%= render :partial => 'admin/shared/configuration_menu' %>
2
+
3
+ <h1><%= t("editing_event") %></h1>
4
+ <%= error_messages_for :event %>
5
+
6
+ <%= form_for(:event, :url => object_url, :html => { :multipart => true, :method => :put }) do |f| -%>
7
+ <%= render :partial => "form", :locals => { :f => f } %>
8
+ <p>
9
+ <%=submit_tag t("update"), {"class" => "wymupdate"}%> or <%= link_to t("cancel"), admin_events_path%>
10
+ </p>
11
+ <% end %>
@@ -0,0 +1,31 @@
1
+ <%= render :partial => 'admin/shared/configuration_menu' %>
2
+
3
+ <h1><%=t("events") %></h1>
4
+
5
+ <h2><%=t("all_events") %></h2>
6
+ <table class="admin-report" width="545">
7
+ <thead>
8
+ <tr>
9
+ <th><%=t("begin")%> - <%=t("end")%></th>
10
+ <th><%=t("title")%></th>
11
+ <th><%=t("action")%></th>
12
+ </tr>
13
+ </thead>
14
+
15
+ <tbody>
16
+ <% @events.each do |event| %>
17
+ <tr class="<%= cycle('even', 'odd') %>">
18
+ <td>
19
+ <%= event.begin_event.strftime("%b %d, %Y %I:%M%p") %> - <%= event.end_event.strftime("%b %d, %Y %I:%M%p")%>
20
+ </td>
21
+ <td><%= event.title %></td>
22
+ <td>
23
+ <%=link_to t("edit"), edit_object_url(event), :id => "edit_#{event.id}" %> |
24
+ <%=link_to t("delete"), object_url(event), :method => :delete, :id => "delete_#{event.id}" %>
25
+ </td>
26
+ </tr>
27
+ <% end %>
28
+ </tbody>
29
+ </table>
30
+
31
+ <%= link_to t("new_event"), new_object_url, :id => "new_event" %>
@@ -0,0 +1,12 @@
1
+ <%= render :partial => 'admin/shared/configuration_menu' %>
2
+
3
+ <h1><%= t("new_event") %></h1>
4
+
5
+ <%= error_messages_for :event %>
6
+
7
+ <% form_for(:event, :url => collection_url, :html => { :multipart => true }) do |f| %>
8
+ <%= render :partial => "form", :locals => { :f => f } %>
9
+ <p>
10
+ <%= submit_tag t("create"), {"class" => "wymupdate"}%> or <%= link_to t("cancel"), admin_events_path%>
11
+ </p>
12
+ <% end %>
@@ -0,0 +1,26 @@
1
+ <h1><%= raw @event.title %></h1>
2
+ <div style="width: 50%;float: left;">
3
+ <div><strong>Start Date:</strong>&nbsp;&nbsp;<%= Date.parse(@event.begin_event.to_s).to_s %></div>
4
+ <div><strong>&nbsp;&nbsp;End Date:</strong>&nbsp;&nbsp;<%= Date.parse(@event.end_event.to_s).to_s %></div>
5
+ </div>
6
+ <div style="width: 50%;float: left;">
7
+ <%= if not @event.start_time.nil? -%>
8
+ <div><strong>Start Time:</strong> <%= @event.start_time %></div>
9
+ <% end -%>
10
+ <div><strong>Venue:</strong> <%= raw @event.venue %></div>
11
+ <div><strong>Sponsor:</strong> <%= raw @event.sponsor %></div>
12
+ </div>
13
+ <%= if (@event.respond_to?(:image)) and (@event.image.respond_to?(:url))-%>
14
+ <div style="text-align: center;">
15
+ <%= image_tag @event.image.url(:large) %>
16
+ </div>
17
+ <% end -%>
18
+ <div style="clear: both; width: 75%;" class="event_summary">
19
+ <%= raw(@event.summary) %>
20
+ </div>
21
+ <div class="event_description">
22
+ <%= raw(@event.full_description) %>
23
+ </div>
24
+ <%= if not @event.further_information == "" and not @event.further_information == nil -%>
25
+ <div><%= link_to "Further Information", @event.further_information %></div>
26
+ <% end -%>
@@ -0,0 +1,24 @@
1
+ ---
2
+ en:
3
+ events: "Events"
4
+ all_events: "All Events"
5
+ events_desc: "Manage events"
6
+ new_event: "New Event"
7
+ editing_event: "Editing Event"
8
+ visible: "Visible"
9
+ visible_desc: "Checking this box will make the event show up on the site."
10
+ title: "Title"
11
+ venue: "Venue"
12
+ sponsor: "Sponsor"
13
+ further_information: "Further Information"
14
+ further_information_desc: "Place a <acronym title=\"Uniform Resource Locator\">URL</acronym>here. (optional, best for linking to other sites)"
15
+ further_information_example: "http://www.example.com/cool-event"
16
+ summary: "Summary"
17
+ full_description: "Full Description"
18
+ image: "Image"
19
+ begin: "Begin"
20
+ end: "End"
21
+ days_before: "Days Before"
22
+ days_after: "Days After"
23
+ global_settings: "Global Settings"
24
+ start_time: "Start Time"
data/config/routes.rb ADDED
@@ -0,0 +1,9 @@
1
+ Rails.application.routes.draw do
2
+ namespace :admin do
3
+ resources :events
4
+ end
5
+
6
+ match "/events" => "events#index"
7
+ match '/events/show/:id' => "events#show"
8
+
9
+ end
@@ -0,0 +1,27 @@
1
+ class CreateEvents < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :events do |t|
4
+ t.date :start_date
5
+ t.date :end_date
6
+ t.time :start_time
7
+ t.time :end_time
8
+ t.string :title
9
+ t.text :venue
10
+ t.string :sponsor
11
+ t.string :further_information
12
+ t.text :summary
13
+ t.text :full_description
14
+ t.boolean :visible
15
+ t.string :image_file_name
16
+ t.string :image_content_type
17
+ t.integer :image_file_size
18
+ t.datetime :image_updated_at
19
+
20
+ t.timestamps
21
+ end
22
+ end
23
+
24
+ def self.down
25
+ drop_table :events
26
+ end
27
+ end
@@ -0,0 +1,22 @@
1
+ class CombineDateAndTimeFields < ActiveRecord::Migration
2
+ def self.up
3
+ add_column :events, :begin, :datetime
4
+ add_column :events, :end, :datetime
5
+
6
+
7
+ Event.find(:all).each do |c|
8
+ c.begin = DateTime.parse( c.start_date.to_s + ' ' + c.start_time.to_s)
9
+ c.end = DateTime.parse(c.end_date.to_s + ' ' + c.end_time.to_s)
10
+ c.save
11
+ end
12
+
13
+ remove_column :events, :start_date
14
+ remove_column :events, :end_date
15
+ remove_column :events, :start_time
16
+ remove_column :events, :end_time
17
+ end
18
+
19
+ def self.down
20
+ raise ActiveRecord::IrreversibleMigration
21
+ end
22
+ end
@@ -0,0 +1,9 @@
1
+ class ChangeDateNamesOnceAgain < ActiveRecord::Migration
2
+ def self.up
3
+ rename_column :events, :begin, :begin_event
4
+ rename_column :events, :end, :end_event
5
+ end
6
+
7
+ def self.down
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ class AddStartTimeToEvents < ActiveRecord::Migration
2
+ def self.up
3
+ add_column :events, :start_time, :string, :null => true
4
+ end
5
+
6
+ def self.down
7
+ remove_column :events, :start_time
8
+ end
9
+ end
@@ -0,0 +1,17 @@
1
+ require 'spree_core'
2
+ require 'spree_events_list_hooks'
3
+
4
+ module SpreeEventsList
5
+ class Engine < Rails::Engine
6
+
7
+ config.autoload_paths += %W(#{config.root}/lib)
8
+
9
+ def self.activate
10
+ Dir.glob(File.join(File.dirname(__FILE__), "../app/**/*_decorator*.rb")) do |c|
11
+ Rails.env.production? ? require(c) : load(c)
12
+ end
13
+ end
14
+
15
+ config.to_prepare &method(:activate).to_proc
16
+ end
17
+ end
@@ -0,0 +1,5 @@
1
+ class SpreeEventsListHooks < Spree::ThemeSupport::HookListener
2
+ insert_after :admin_tabs do
3
+ %(<%= tab(:events) %>)
4
+ end
5
+ end
@@ -0,0 +1,25 @@
1
+ namespace :spree_events_list do
2
+ desc "Copies all migrations and assets (NOTE: This will be obsolete with Rails 3.1)"
3
+ task :install do
4
+ Rake::Task['spree_events_list:install:migrations'].invoke
5
+ Rake::Task['spree_events_list:install:assets'].invoke
6
+ end
7
+
8
+ namespace :install do
9
+ desc "Copies all migrations (NOTE: This will be obsolete with Rails 3.1)"
10
+ task :migrations do
11
+ source = File.join(File.dirname(__FILE__), '..', '..', 'db')
12
+ destination = File.join(Rails.root, 'db')
13
+ Spree::FileUtilz.mirror_files(source, destination)
14
+ end
15
+
16
+ desc "Copies all assets (NOTE: This will be obsolete with Rails 3.1)"
17
+ task :assets do
18
+ source = File.join(File.dirname(__FILE__), '..', '..', 'public')
19
+ destination = File.join(Rails.root, 'public')
20
+ puts "INFO: Mirroring assets from #{source} to #{destination}"
21
+ Spree::FileUtilz.mirror_files(source, destination)
22
+ end
23
+ end
24
+
25
+ end
@@ -0,0 +1 @@
1
+ # add custom rake tasks here
@@ -0,0 +1,30 @@
1
+ # This file is copied to ~/spec when you run 'ruby script/generate rspec'
2
+ # from the project root directory.
3
+ ENV["RAILS_ENV"] ||= 'test'
4
+ require File.expand_path("../test_app/config/environment", __FILE__)
5
+ require 'rspec/rails'
6
+
7
+ # Requires supporting files with custom matchers and macros, etc,
8
+ # in ./support/ and its subdirectories.
9
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
10
+
11
+ RSpec.configure do |config|
12
+ # == Mock Framework
13
+ #
14
+ # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
15
+ #
16
+ # config.mock_with :mocha
17
+ # config.mock_with :flexmock
18
+ # config.mock_with :rr
19
+ config.mock_with :rspec
20
+
21
+ config.fixture_path = "#{::Rails.root}/spec/fixtures"
22
+
23
+ #config.include Devise::TestHelpers, :type => :controller
24
+ # If you're not using ActiveRecord, or you'd prefer not to run each of your
25
+ # examples within a transaction, comment the following line or assign false
26
+ # instead of true.
27
+ config.use_transactional_fixtures = true
28
+ end
29
+
30
+ @configuration ||= AppConfiguration.find_or_create_by_name("Default configuration")
@@ -0,0 +1,20 @@
1
+ Gem::Specification.new do |s|
2
+ s.platform = Gem::Platform::RUBY
3
+ s.name = 'spree_events_list'
4
+ s.version = '0.50.0'
5
+ s.summary = 'Administrable list of events'
6
+ s.description = ''
7
+
8
+ s.author = 'Christopher Maujean'
9
+ s.email = 'cmaujean@gmail.com'
10
+
11
+ # s.rubyforge_project = 'actionmailer'
12
+
13
+ s.files = `git ls-files`.split("\n")
14
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
15
+ s.require_path = 'lib'
16
+ s.requirements << 'none'
17
+
18
+ s.has_rdoc = true
19
+
20
+ end
metadata ADDED
@@ -0,0 +1,79 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: spree_events_list
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.50.0
6
+ platform: ruby
7
+ authors:
8
+ - Christopher Maujean
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2011-06-11 00:00:00 -07:00
14
+ default_executable:
15
+ dependencies: []
16
+
17
+ description: ""
18
+ email: cmaujean@gmail.com
19
+ executables: []
20
+
21
+ extensions: []
22
+
23
+ extra_rdoc_files: []
24
+
25
+ files:
26
+ - .gitignore
27
+ - LICENSE
28
+ - README.md
29
+ - Rakefile
30
+ - app/controllers/admin/events_controller.rb
31
+ - app/controllers/events_controller.rb
32
+ - app/models/event.rb
33
+ - app/views/admin/events/_form.html.erb
34
+ - app/views/admin/events/edit.html.erb
35
+ - app/views/admin/events/index.html.erb
36
+ - app/views/admin/events/new.html.erb
37
+ - app/views/events/show.html.erb
38
+ - config/locales/en-US.yml
39
+ - config/routes.rb
40
+ - db/migrate/20091226204316_create_events.rb
41
+ - db/migrate/20100103032841_combine_date_and_time_fields.rb
42
+ - db/migrate/20100103051313_change_date_names_once_again.rb
43
+ - db/migrate/20100106094811_add_start_time_to_events.rb
44
+ - lib/spree_events_list.rb
45
+ - lib/spree_events_list_hooks.rb
46
+ - lib/tasks/install.rake
47
+ - lib/tasks/spree_events_list.rake
48
+ - spec/spec_helper.rb
49
+ - spree_events_list.gemspec
50
+ has_rdoc: true
51
+ homepage:
52
+ licenses: []
53
+
54
+ post_install_message:
55
+ rdoc_options: []
56
+
57
+ require_paths:
58
+ - lib
59
+ required_ruby_version: !ruby/object:Gem::Requirement
60
+ none: false
61
+ requirements:
62
+ - - ">="
63
+ - !ruby/object:Gem::Version
64
+ version: "0"
65
+ required_rubygems_version: !ruby/object:Gem::Requirement
66
+ none: false
67
+ requirements:
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ version: "0"
71
+ requirements:
72
+ - none
73
+ rubyforge_project:
74
+ rubygems_version: 1.6.2
75
+ signing_key:
76
+ specification_version: 3
77
+ summary: Administrable list of events
78
+ test_files:
79
+ - spec/spec_helper.rb