calagator 0.0.1.pre1 → 1.0.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/{LICENSE.txt → MIT-LICENSE.txt} +0 -0
- data/README.md +4 -18
- data/Rakefile +6 -0
- data/app/assets/javascripts/calagator.js +1 -0
- data/app/assets/stylesheets/calagator/changes.scss +45 -0
- data/app/assets/stylesheets/calagator/errors.css +8 -0
- data/app/assets/stylesheets/calagator/forms.scss +148 -2
- data/app/assets/stylesheets/calagator/index.scss +21 -0
- data/app/assets/stylesheets/calagator/layout.scss +731 -0
- data/app/assets/stylesheets/calagator/mobile.scss +196 -0
- data/app/assets/stylesheets/calagator/{reset.css → reset.scss} +0 -0
- data/app/assets/stylesheets/calagator/typography.scss +225 -0
- data/app/assets/stylesheets/calagator/{common.scss → utils.scss} +0 -0
- data/app/assets/stylesheets/calagator/variables.scss +21 -0
- data/app/controllers/calagator/admin_controller.rb +1 -1
- data/app/controllers/calagator/application_controller.rb +3 -3
- data/app/controllers/calagator/events_controller.rb +3 -3
- data/app/controllers/calagator/site_controller.rb +1 -1
- data/app/controllers/calagator/sources_controller.rb +3 -3
- data/app/controllers/calagator/venues_controller.rb +4 -4
- data/app/controllers/calagator/versions_controller.rb +2 -2
- data/app/helpers/calagator/application_helper.rb +0 -3
- data/app/helpers/calagator/mapping_helper.rb +9 -8
- data/app/models/calagator/event.rb +2 -3
- data/app/models/calagator/event/ical_renderer.rb +4 -2
- data/app/models/calagator/event/saver.rb +2 -2
- data/app/models/calagator/event/search_engine/sql.rb +2 -1
- data/app/models/calagator/source.rb +0 -26
- data/app/models/calagator/source/importer.rb +1 -1
- data/app/models/calagator/source/parser/meetup.rb +2 -2
- data/app/models/calagator/venue.rb +0 -2
- data/app/models/calagator/venue/geocoder.rb +1 -1
- data/app/models/calagator/venue/search_engine/sql.rb +1 -1
- data/app/views/calagator/events/_subnav.html.erb +2 -2
- data/app/views/calagator/events/show.html.erb +2 -2
- data/app/views/calagator/site/_description.html.erb +6 -3
- data/app/views/calagator/site/_sidebar_menu.html.erb +13 -0
- data/app/views/calagator/site/index.html.erb +1 -0
- data/app/views/calagator/sources/index.html.erb +1 -1
- data/app/views/calagator/sources/show.html.erb +1 -1
- data/app/views/calagator/venues/_subnav.html.erb +1 -1
- data/app/views/calagator/venues/show.html.erb +1 -1
- data/app/views/layouts/calagator/_after_footer.html.erb +2 -0
- data/app/views/layouts/calagator/_content.html.erb +6 -0
- data/app/views/layouts/calagator/_footer.html.erb +8 -0
- data/app/views/layouts/calagator/_global_search.html.erb +11 -0
- data/app/views/layouts/calagator/_header.html.erb +20 -0
- data/app/views/layouts/calagator/application.html.erb +9 -64
- data/config/routes.rb +16 -16
- data/config/spring.rb +1 -0
- data/db/development +0 -0
- data/db/development.sqlite3 +0 -0
- data/db/migrate/20150407014752_add_taggings_counter_cache_to_tags.acts_as_taggable_on_engine.rb +14 -0
- data/db/migrate/20150407014754_change_collation_for_tag_names.acts_as_taggable_on_engine.rb +9 -0
- data/db/schema.rb +2 -8
- data/db/seeds.rb +64 -8
- data/lib/calagator.rb +42 -2
- data/lib/calagator/duplicate_checking/duplicate_finder.rb +1 -1
- data/lib/calagator/duplicate_checking/duplicate_squasher.rb +1 -1
- data/lib/calagator/engine.rb +12 -22
- data/lib/calagator/tag_model_extensions.rb +1 -1
- data/lib/calagator/version.rb +1 -1
- data/lib/generators/calagator/install_generator.rb +17 -12
- data/lib/generators/calagator/templates/config/initializers/01_calagator.rb +89 -0
- data/lib/generators/calagator/templates/config/initializers/02_geokit.rb +106 -0
- data/lib/tasks/sunspot_reindex_calagator.rake +16 -3
- data/lib/tasks/update_counter_caches.rake +3 -3
- data/spec/controllers/calagator/events_controller_spec.rb +3 -3
- data/spec/controllers/calagator/sources_controller_spec.rb +3 -3
- data/spec/controllers/calagator/venues_controller_spec.rb +5 -5
- data/spec/dummy/Gemfile +35 -27
- data/spec/dummy/README.rdoc +15 -248
- data/spec/dummy/Rakefile +1 -2
- data/spec/dummy/app/assets/javascripts/application.js +5 -4
- data/spec/dummy/app/assets/stylesheets/application.css +6 -4
- data/spec/dummy/app/controllers/application_controller.rb +3 -1
- data/spec/dummy/app/views/layouts/application.html.erb +2 -2
- data/spec/dummy/bin/bundle +3 -0
- data/spec/dummy/bin/rails +4 -0
- data/spec/dummy/bin/rake +4 -0
- data/spec/dummy/bin/setup +29 -0
- data/spec/dummy/config.ru +2 -2
- data/spec/dummy/config/application.rb +5 -41
- data/spec/dummy/config/boot.rb +1 -4
- data/spec/dummy/config/database.yml +8 -8
- data/spec/dummy/config/environment.rb +3 -3
- data/spec/dummy/config/environments/development.rb +22 -18
- data/spec/dummy/config/environments/production.rb +46 -34
- data/spec/dummy/config/environments/test.rb +19 -14
- data/spec/dummy/config/initializers/01_calagator.rb +89 -0
- data/spec/dummy/config/initializers/02_geokit.rb +106 -0
- data/spec/dummy/config/initializers/assets.rb +11 -0
- data/spec/dummy/config/initializers/cookies_serializer.rb +3 -0
- data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/spec/dummy/config/initializers/inflections.rb +6 -5
- data/spec/dummy/config/initializers/mime_types.rb +0 -1
- data/spec/dummy/config/initializers/session_store.rb +1 -6
- data/spec/dummy/config/initializers/wrap_parameters.rb +6 -6
- data/spec/dummy/config/locales/en.yml +20 -2
- data/spec/dummy/config/routes.rb +23 -25
- data/spec/dummy/config/secrets.yml +16 -77
- data/spec/dummy/config/sunspot.yml +23 -0
- data/spec/dummy/db/development.sqlite3 +0 -0
- data/spec/dummy/db/schema.rb +31 -30
- data/spec/dummy/db/seeds.rb +1 -0
- data/spec/dummy/log/development.log +257 -235
- data/spec/dummy/public/404.html +54 -13
- data/spec/dummy/public/422.html +54 -13
- data/spec/dummy/public/500.html +53 -12
- data/spec/dummy/public/robots.txt +2 -2
- data/spec/dummy/test/test_helper.rb +2 -5
- data/spec/factories.rb +0 -54
- data/spec/features/admin_auth_spec.rb +2 -2
- data/spec/features/admin_lock_event_spec.rb +1 -1
- data/spec/features/import_events_from_feed_spec.rb +1 -1
- data/spec/helpers/calagator/google_event_export_helper_spec.rb +8 -11
- data/spec/helpers/calagator/sources_helper_spec.rb +1 -2
- data/spec/helpers/calagator/tags_helper_spec.rb +1 -2
- data/spec/models/calagator/event_spec.rb +7 -7
- data/spec/models/calagator/source/parser_meetup_spec.rb +3 -3
- data/spec/models/calagator/source_spec.rb +0 -29
- data/spec/models/calagator/venue_spec.rb +8 -11
- data/spec/spec_helper.rb +3 -1
- data/spec/support/admin_authentication.rb +2 -0
- data/spec/support/assert_dom_equal.rb +26 -0
- data/spec/support/paper_trail.rb +7 -0
- data/spec/support/rspec-activemodel-mocks_patch.rb +9 -0
- metadata +200 -280
- data/app/assets/stylesheets/calagator.scss +0 -8
- data/app/assets/stylesheets/calagator/datepicker.scss +0 -177
- data/app/assets/stylesheets/calagator/theme.css +0 -0
- data/app/models/event/search_engine/base.rb +0 -0
- data/config/deploy/local.rb +0 -37
- data/config/deploy/lucca.rb +0 -33
- data/config/initializers/geokit.rb +0 -74
- data/config/initializers/search_engine.rb +0 -4
- data/config/initializers/set_default_url_host.rb +0 -5
- data/db/test.sqlite3 +0 -0
- data/lib/generators/calagator/templates/config/calagator.rb +0 -26
- data/lib/generators/calagator/templates/config/secrets.yml.sample +0 -83
- data/lib/secrets_reader.rb +0 -76
- data/spec/dummy/Gemfile.lock +0 -195
- data/spec/dummy/app/assets/images/rails.png +0 -0
- data/spec/dummy/config/initializers/calagator.rb +0 -26
- data/spec/dummy/config/initializers/secret_token.rb +0 -7
- data/spec/dummy/db/migrate/20150309023304_create_events.calagator.rb +0 -18
- data/spec/dummy/db/migrate/20150309023305_create_venues.calagator.rb +0 -18
- data/spec/dummy/db/migrate/20150309023306_create_sources.calagator.rb +0 -17
- data/spec/dummy/db/migrate/20150309023307_add_detailed_fields_to_venue.calagator.rb +0 -20
- data/spec/dummy/db/migrate/20150309023308_add_end_time_to_events.calagator.rb +0 -10
- data/spec/dummy/db/migrate/20150309023309_add_source_id_to_events.calagator.rb +0 -10
- data/spec/dummy/db/migrate/20150309023310_add_source_id_to_venues.calagator.rb +0 -11
- data/spec/dummy/db/migrate/20150309023311_add_duplicate_of_column_to_venues.calagator.rb +0 -10
- data/spec/dummy/db/migrate/20150309023312_add_duplicate_of_column_to_events.calagator.rb +0 -10
- data/spec/dummy/db/migrate/20150309023313_change_lat_long_type.calagator.rb +0 -13
- data/spec/dummy/db/migrate/20150309023314_add_source_reimport.calagator.rb +0 -10
- data/spec/dummy/db/migrate/20150309023315_change_end_time_to_duration.calagator.rb +0 -12
- data/spec/dummy/db/migrate/20150309023316_remove_format_type_from_source.calagator.rb +0 -10
- data/spec/dummy/db/migrate/20150309023317_create_updates.calagator.rb +0 -16
- data/spec/dummy/db/migrate/20150309023318_remove_next_update_from_source.calagator.rb +0 -10
- data/spec/dummy/db/migrate/20150309023319_change_duration_to_end_time.calagator.rb +0 -12
- data/spec/dummy/db/migrate/20150309023320_create_tags_and_taggings.calagator.rb +0 -29
- data/spec/dummy/db/migrate/20150309023321_create_versioned_events.calagator.rb +0 -26
- data/spec/dummy/db/migrate/20150309023322_create_versioned_venues.calagator.rb +0 -33
- data/spec/dummy/db/migrate/20150309023323_add_rrule_to_events.calagator.rb +0 -16
- data/spec/dummy/db/migrate/20150309023324_create_versions.calagator.rb +0 -19
- data/spec/dummy/db/migrate/20150309023325_add_closed_flag_to_venues.calagator.rb +0 -10
- data/spec/dummy/db/migrate/20150309023326_add_wifi_flag_to_venues.calagator.rb +0 -10
- data/spec/dummy/db/migrate/20150309023327_add_access_notes_to_venues.calagator.rb +0 -10
- data/spec/dummy/db/migrate/20150309023328_add_events_count_to_venues.calagator.rb +0 -9
- data/spec/dummy/db/migrate/20150309023329_add_venue_details_to_events.calagator.rb +0 -10
- data/spec/dummy/db/migrate/20150309023330_acts_as_taggable_on_migration.calagator.rb +0 -51
- data/spec/dummy/db/migrate/20150309023331_cleanup.calagator.rb +0 -15
- data/spec/dummy/db/migrate/20150309023332_specify_venues_latitude_and_longitude_precision.calagator.rb +0 -12
- data/spec/dummy/db/migrate/20150309023333_remove_updates.calagator.rb +0 -14
- data/spec/dummy/db/migrate/20150309023334_add_locked_status_to_events.calagator.rb +0 -6
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/doc/README_FOR_APP +0 -2
- data/spec/dummy/script/rails +0 -6
- data/spec/dummy/test/performance/browsing_test.rb +0 -12
- data/spec/lib/secrets_reader_spec.rb +0 -65
@@ -12,7 +12,7 @@
|
|
12
12
|
<div id='edit_link'>
|
13
13
|
<p>
|
14
14
|
You can <%= link_to "edit", edit_venue_url(@venue) %>
|
15
|
-
or <%= link_to "delete", venue_url(@venue), :
|
15
|
+
or <%= link_to "delete", venue_url(@venue), method: :delete, data: { confirm: "Are you sure?" } %>
|
16
16
|
this venue.
|
17
17
|
</p>
|
18
18
|
</div>
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<%= form_tag search_events_path, :method => :get do %>
|
2
|
+
<div id='search_form'>
|
3
|
+
<label for="search_field">Search Events</label>
|
4
|
+
<% if request.env["HTTP_USER_AGENT"] && request.env["HTTP_USER_AGENT"].include?("Safari") %>
|
5
|
+
<input type="search" name="query" value="<%= @query %>" results="5" id="search_field">
|
6
|
+
<% else %>
|
7
|
+
<%= text_field_tag 'query', @query, :id => 'search_field' %>
|
8
|
+
<% end %>
|
9
|
+
</div>
|
10
|
+
<% end -%>
|
11
|
+
|
@@ -0,0 +1,20 @@
|
|
1
|
+
<div id="global_header">
|
2
|
+
<%= link_to Calagator.title, root_path, id: "project_title" %>
|
3
|
+
|
4
|
+
<div id="top_menu">
|
5
|
+
<div id='app_menu'>
|
6
|
+
<ul>
|
7
|
+
<li class='<%=link_class[:events]%>'><%= link_to "Events", events_path %></li>
|
8
|
+
<li class='<%=link_class[:venues]%>'><%= link_to "Venues", venues_path %></li>
|
9
|
+
</ul>
|
10
|
+
</div>
|
11
|
+
<%= render partial: 'layouts/calagator/global_search' %>
|
12
|
+
</div>
|
13
|
+
</div>
|
14
|
+
|
15
|
+
<% # Pick a subnav %>
|
16
|
+
|
17
|
+
<%= render(:partial => 'calagator/events/subnav') if link_class[:events] == 'active' %>
|
18
|
+
<%= render(:partial => 'calagator/venues/subnav') if link_class[:venues] == 'active' %>
|
19
|
+
<%= render(:partial => 'calagator/sources/subnav') if link_class[:import] == 'active' %>
|
20
|
+
|
@@ -6,7 +6,7 @@
|
|
6
6
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
7
7
|
<%= yield :open_graph_tags %>
|
8
8
|
<title>
|
9
|
-
<%= "#{yield(:title)} » " if content_for?(:title) -%>
|
9
|
+
<%= "#{yield(:title)} » ".html_safe if content_for?(:title) -%>
|
10
10
|
<%= Calagator.title -%>: <%= Calagator.tagline -%>
|
11
11
|
</title>
|
12
12
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
|
@@ -17,9 +17,9 @@
|
|
17
17
|
<!-- Stylesheets, static -->
|
18
18
|
<%= stylesheet_link_tag 'application', :media => :all %>
|
19
19
|
|
20
|
-
<link rel="stylesheet" href="
|
20
|
+
<link rel="stylesheet" href="http://cdnjs.cloudflare.com/ajax/libs/leaflet/0.7.3/leaflet.css" />
|
21
21
|
<!--[if lte IE 8]>
|
22
|
-
<link rel="stylesheet" href="
|
22
|
+
<link rel="stylesheet" href="http://cdnjs.cloudflare.com/ajax/libs/leaflet/0.7.3/leaflet.ie.css" />
|
23
23
|
<![endif]-->
|
24
24
|
|
25
25
|
<!-- Stylesheets, inserted -->
|
@@ -43,68 +43,13 @@
|
|
43
43
|
</head>
|
44
44
|
<body class="<%= "#{controller.controller_name}_#{action_name}" %> <%= "#{controller.controller_name}_controller" %> <%= %w[new create edit update].include?(action_name) ? "#{controller.controller_name}_change" : "" %>">
|
45
45
|
|
46
|
-
|
47
|
-
|
48
|
-
<%=
|
49
|
-
|
50
|
-
<div id="top_menu">
|
51
|
-
<div id='app_menu'>
|
52
|
-
<ul>
|
53
|
-
<li class='<%=link_class[:events]%>'><%= link_to "Events", events_path %></li>
|
54
|
-
<li class='<%=link_class[:venues]%>'><%= link_to "Venues", venues_path %></li>
|
55
|
-
</ul>
|
56
|
-
</div>
|
57
|
-
<div id='project_menu'>
|
58
|
-
<strong>Get Involved:</strong> <%= link_to "Blog", "http://calagator.wordpress.com/", {:class => 'first'} %> | <%= link_to "Forum", "http://groups.google.com/group/pdx-tech-calendar/" %> | <%= link_to "Code", "https://github.com/calagator/calagator" %>
|
59
|
-
<br />
|
60
|
-
<strong>Something not right?</strong> <%= link_to "File an issue", "https://github.com/calagator/calagator/issues" %>
|
61
|
-
</div>
|
62
|
-
<%= form_tag search_events_path, :method => :get do %>
|
63
|
-
<div id='search_form'>
|
64
|
-
<label for="search_field">Search Events</label>
|
65
|
-
<% if request.env["HTTP_USER_AGENT"] && request.env["HTTP_USER_AGENT"].include?("Safari") %>
|
66
|
-
<input type="search" name="query" value="<%= @query %>" results="5" id="search_field">
|
67
|
-
<% else %>
|
68
|
-
<%= text_field_tag 'query', @query, :id => 'search_field' %>
|
69
|
-
<% end %>
|
70
|
-
</div>
|
71
|
-
<% end -%>
|
72
|
-
</div>
|
73
|
-
</div>
|
74
|
-
|
75
|
-
<% # Pick a subnav %>
|
76
|
-
|
77
|
-
<%= render(:partial => 'calagator/events/subnav') if link_class[:events] == 'active' %>
|
78
|
-
<%= render(:partial => 'calagator/venues/subnav') if link_class[:venues] == 'active' %>
|
79
|
-
<%= render(:partial => 'calagator/sources/subnav') if link_class[:import] == 'active' %>
|
80
|
-
|
81
|
-
<div id="content">
|
82
|
-
<%# flash[:success] = "yay"; flash[:failure] = "meh" %>
|
83
|
-
<%= render_flash %>
|
84
|
-
<%= yield %>
|
46
|
+
<div id="outer">
|
47
|
+
<%= render partial: 'layouts/calagator/header' %>
|
48
|
+
<%= render partial: 'layouts/calagator/content' %>
|
49
|
+
<%= render partial: 'layouts/calagator/footer' %>
|
85
50
|
</div>
|
86
51
|
|
87
|
-
|
88
|
-
<%= URI.parse(Calagator.url).host %>
|
89
|
-
<%= source_code_version %>
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
</div>
|
94
|
-
|
95
|
-
</div>
|
96
|
-
|
97
|
-
<% if Rails.env == 'production' %>
|
98
|
-
<script type="text/javascript">
|
99
|
-
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
|
100
|
-
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
|
101
|
-
</script>
|
102
|
-
<script type="text/javascript">
|
103
|
-
var pageTracker = _gat._getTracker("UA-168427-7");
|
104
|
-
pageTracker._initData();
|
105
|
-
pageTracker._trackPageview();
|
106
|
-
</script>
|
107
|
-
<% end %>
|
108
|
-
|
52
|
+
<%= render partial: 'layouts/calagator/after_footer' %>
|
109
53
|
</body>
|
110
54
|
</html>
|
55
|
+
|
data/config/routes.rb
CHANGED
@@ -1,23 +1,23 @@
|
|
1
1
|
Calagator::Engine.routes.draw do
|
2
|
-
|
3
|
-
|
2
|
+
get 'omfg' => 'site#omfg'
|
3
|
+
get 'hello' => 'site#hello'
|
4
4
|
|
5
|
-
|
5
|
+
get 'about' => 'site#about'
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
get 'opensearch.:format' => 'site#opensearch'
|
8
|
+
get 'defunct' => 'site#defunct'
|
9
9
|
|
10
|
-
|
10
|
+
get 'admin' => 'admin#index'
|
11
11
|
get "admin/index"
|
12
12
|
get "admin/events"
|
13
|
-
|
13
|
+
post "lock_event" => "admin#lock_event"
|
14
14
|
|
15
15
|
resources :events do
|
16
16
|
collection do
|
17
17
|
post :squash_many_duplicates
|
18
18
|
get :search
|
19
19
|
get :duplicates
|
20
|
-
|
20
|
+
get 'tag/:tag', to: :search, as: :tag
|
21
21
|
end
|
22
22
|
|
23
23
|
member do
|
@@ -37,19 +37,19 @@ Calagator::Engine.routes.draw do
|
|
37
37
|
get :map
|
38
38
|
get :duplicates
|
39
39
|
get :autocomplete
|
40
|
-
|
40
|
+
get 'tag/:tag', to: :search, as: :tag
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
44
44
|
resources :versions, :only => [:edit]
|
45
45
|
resources :changes, :controller => 'paper_trail_manager/changes'
|
46
|
-
|
47
|
-
|
46
|
+
get 'recent_changes' => redirect("/changes")
|
47
|
+
get 'recent_changes.:format' => redirect("/changes.%{format}")
|
48
48
|
|
49
|
-
|
50
|
-
|
49
|
+
get 'css/:name' => 'site#style'
|
50
|
+
get 'css/:name.:format' => 'site#style'
|
51
51
|
|
52
|
-
|
53
|
-
|
54
|
-
|
52
|
+
get '/' => 'site#index', :as => :root
|
53
|
+
get '/index' => 'site#index'
|
54
|
+
get '/index.:format' => 'site#index'
|
55
55
|
end
|
data/config/spring.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
Spring.application_root = './spec/dummy'
|
data/db/development
ADDED
Binary file
|
data/db/development.sqlite3
CHANGED
Binary file
|
data/db/migrate/20150407014752_add_taggings_counter_cache_to_tags.acts_as_taggable_on_engine.rb
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
class AddTaggingsCounterCacheToTags < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
add_column :tags, :taggings_count, :integer, default: 0
|
4
|
+
|
5
|
+
ActsAsTaggableOn::Tag.reset_column_information
|
6
|
+
ActsAsTaggableOn::Tag.find_each do |tag|
|
7
|
+
ActsAsTaggableOn::Tag.reset_counters(tag.id, :taggings)
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.down
|
12
|
+
remove_column :tags, :taggings_count
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
# This migration is added to circumvent issue #623 and have special characters
|
2
|
+
# work properly
|
3
|
+
class ChangeCollationForTagNames < ActiveRecord::Migration
|
4
|
+
def up
|
5
|
+
if ActsAsTaggableOn::Utils.using_mysql?
|
6
|
+
execute("ALTER TABLE tags MODIFY name varchar(255) CHARACTER SET utf8 COLLATE utf8_bin;")
|
7
|
+
end
|
8
|
+
end
|
9
|
+
end
|
data/db/schema.rb
CHANGED
@@ -11,7 +11,7 @@
|
|
11
11
|
#
|
12
12
|
# It's strongly recommended to check this file into your version control system.
|
13
13
|
|
14
|
-
ActiveRecord::Schema.define(:version =>
|
14
|
+
ActiveRecord::Schema.define(:version => 20150207231355) do
|
15
15
|
|
16
16
|
create_table "events", :force => true do |t|
|
17
17
|
t.string "title"
|
@@ -27,6 +27,7 @@ ActiveRecord::Schema.define(:version => 20120831234448) do
|
|
27
27
|
t.integer "version"
|
28
28
|
t.string "rrule"
|
29
29
|
t.text "venue_details"
|
30
|
+
t.boolean "locked", :default => false
|
30
31
|
end
|
31
32
|
|
32
33
|
create_table "sources", :force => true do |t|
|
@@ -57,13 +58,6 @@ ActiveRecord::Schema.define(:version => 20120831234448) do
|
|
57
58
|
|
58
59
|
add_index "tags", ["name"], :name => "index_tags_on_name", :unique => true
|
59
60
|
|
60
|
-
create_table "updates", :force => true do |t|
|
61
|
-
t.integer "source_id"
|
62
|
-
t.text "status"
|
63
|
-
t.datetime "created_at"
|
64
|
-
t.datetime "updated_at"
|
65
|
-
end
|
66
|
-
|
67
61
|
create_table "venues", :force => true do |t|
|
68
62
|
t.string "title"
|
69
63
|
t.text "description"
|
data/db/seeds.rb
CHANGED
@@ -1,15 +1,71 @@
|
|
1
1
|
# ruby encoding: utf-8
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
3
|
+
begin
|
4
|
+
require 'faker'
|
5
|
+
require 'factory_girl'
|
6
|
+
rescue LoadError
|
7
|
+
puts "Calagator's seeds require faker and factory_girl."
|
8
|
+
puts "Add them to your gemfile and try again."
|
9
|
+
exit 1
|
10
|
+
end
|
10
11
|
|
11
|
-
|
12
|
+
FactoryGirl.define do
|
13
|
+
factory :seed_venue, class: Calagator::Venue do
|
14
|
+
title { Faker::Company.name }
|
15
|
+
description { Faker::Lorem.paragraph }
|
16
|
+
address { "#{Faker::Address.street_address},
|
17
|
+
#{Faker::Address.city},
|
18
|
+
#{Faker::Address.state}
|
19
|
+
#{Faker::Address.zip_code}" }
|
20
|
+
street_address { Faker::Address.street_address }
|
21
|
+
locality { Faker::Address.city }
|
22
|
+
region { Faker::Address.state }
|
23
|
+
postal_code { [Faker::Address.zip_code, Faker::Address.postcode].sample }
|
24
|
+
country { Faker::Address.country }
|
25
|
+
latitude { Faker::Address.latitude }
|
26
|
+
longitude { Faker::Address.longitude }
|
27
|
+
email { Faker::Internet.email }
|
28
|
+
telephone { Faker::PhoneNumber.phone_number }
|
29
|
+
url { Faker::Internet.url }
|
30
|
+
closed { [false, true].sample }
|
31
|
+
wifi { [true, false].sample }
|
32
|
+
access_notes Faker::Lorem.paragraph
|
12
33
|
|
34
|
+
trait :with_events do
|
35
|
+
after(:create) do | seed_venue |
|
36
|
+
create_list(:seed_event, 3, venue_id: seed_venue.id)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
|
42
|
+
factory :seed_event, class: Calagator::Event do
|
43
|
+
from = 2.years.ago
|
44
|
+
to = 2.years.from_now
|
45
|
+
|
46
|
+
title { Faker::Lorem.sentence }
|
47
|
+
description { Faker::Lorem.paragraph }
|
48
|
+
start_time {
|
49
|
+
[
|
50
|
+
Faker::Time.between(2.years.ago, 2.years.from_now),
|
51
|
+
Faker::Time.backward(1, :all),
|
52
|
+
Faker::Time.forward(1, :all),
|
53
|
+
Faker::Time.forward(7, :all)
|
54
|
+
].sample
|
55
|
+
}
|
56
|
+
created_at { start_time - 1.days }
|
57
|
+
end_time { start_time + 3.hours }
|
58
|
+
|
59
|
+
trait :with_venue do
|
60
|
+
before(:create) do |seed_event|
|
61
|
+
venue = create(:seed_venue)
|
62
|
+
seed_event.venue_id = venue.id
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
puts "Seeding database with sample data..."
|
13
69
|
FactoryGirl.create_list(:seed_venue, 25, :with_events)
|
14
70
|
FactoryGirl.create_list(:seed_venue, 25)
|
15
71
|
FactoryGirl.create_list(:seed_event, 25, :with_venue)
|
data/lib/calagator.rb
CHANGED
@@ -2,8 +2,8 @@ require "calagator/engine"
|
|
2
2
|
|
3
3
|
require "formtastic"
|
4
4
|
require "rails_autolink"
|
5
|
+
require "rails-observers"
|
5
6
|
require "nokogiri"
|
6
|
-
require "columnize"
|
7
7
|
require "geokit"
|
8
8
|
require "htmlentities"
|
9
9
|
require "paper_trail"
|
@@ -18,7 +18,6 @@ require "formtastic"
|
|
18
18
|
require "acts-as-taggable-on"
|
19
19
|
require "jquery-rails"
|
20
20
|
require "jquery-ui-rails"
|
21
|
-
require "progress_bar"
|
22
21
|
require "font-awesome-rails"
|
23
22
|
require "paper_trail_manager"
|
24
23
|
require "utf8-cleaner"
|
@@ -27,4 +26,45 @@ require "sunspot_solr"
|
|
27
26
|
require "lucene_query"
|
28
27
|
|
29
28
|
module Calagator
|
29
|
+
mattr_accessor :title,
|
30
|
+
:tagline,
|
31
|
+
:url,
|
32
|
+
:administrator_email,
|
33
|
+
:admin_username,
|
34
|
+
:admin_password,
|
35
|
+
:meetup_api_key,
|
36
|
+
:search_engine,
|
37
|
+
:icalendar_sequence_offset,
|
38
|
+
:mapping_marker_color,
|
39
|
+
:mapping_google_maps_api_key,
|
40
|
+
:mapping_provider,
|
41
|
+
:mapping_tiles,
|
42
|
+
:venues_map_options,
|
43
|
+
:blacklist_patterns
|
44
|
+
|
45
|
+
self.title = 'Calagator'
|
46
|
+
self.tagline = 'A Tech Calendar'
|
47
|
+
self.url = 'http://my-calagator.org/'
|
48
|
+
self.administrator_email = 'your@email.addr'
|
49
|
+
self.search_engine = :sql
|
50
|
+
self.icalendar_sequence_offset = 0
|
51
|
+
self.mapping_marker_color = 'green'
|
52
|
+
self.mapping_provider = 'stamen'
|
53
|
+
self.mapping_tiles = 'terrain'
|
54
|
+
self.venues_map_options = {}
|
55
|
+
self.blacklist_patterns = [
|
56
|
+
/\b(online|overseas).+(drugstore|pharmacy)\b/,
|
57
|
+
/\bcialis\b/,
|
58
|
+
]
|
59
|
+
|
60
|
+
def self.configure_search_engine
|
61
|
+
kind = search_engine.try(:to_sym)
|
62
|
+
|
63
|
+
Calagator::Event::SearchEngine.use(kind)
|
64
|
+
Calagator::Venue::SearchEngine.use(kind)
|
65
|
+
end
|
66
|
+
|
67
|
+
def self.setup(&block)
|
68
|
+
yield self
|
69
|
+
end
|
30
70
|
end
|
@@ -20,7 +20,7 @@ module DuplicateChecking
|
|
20
20
|
SingleSquasher.new(master, duplicate, model_name).squash
|
21
21
|
end
|
22
22
|
name = model_name.split("::").last
|
23
|
-
self.success = "Squashed duplicate #{name.pluralize} #{duplicates.map(&:title)} into master #{master.id}."
|
23
|
+
self.success = "Squashed duplicate #{name.pluralize} #{duplicates.map(&:title).sort} into master #{master.id}."
|
24
24
|
end
|
25
25
|
self
|
26
26
|
end
|