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.
Files changed (182) hide show
  1. checksums.yaml +4 -4
  2. data/{LICENSE.txt → MIT-LICENSE.txt} +0 -0
  3. data/README.md +4 -18
  4. data/Rakefile +6 -0
  5. data/app/assets/javascripts/calagator.js +1 -0
  6. data/app/assets/stylesheets/calagator/changes.scss +45 -0
  7. data/app/assets/stylesheets/calagator/errors.css +8 -0
  8. data/app/assets/stylesheets/calagator/forms.scss +148 -2
  9. data/app/assets/stylesheets/calagator/index.scss +21 -0
  10. data/app/assets/stylesheets/calagator/layout.scss +731 -0
  11. data/app/assets/stylesheets/calagator/mobile.scss +196 -0
  12. data/app/assets/stylesheets/calagator/{reset.css → reset.scss} +0 -0
  13. data/app/assets/stylesheets/calagator/typography.scss +225 -0
  14. data/app/assets/stylesheets/calagator/{common.scss → utils.scss} +0 -0
  15. data/app/assets/stylesheets/calagator/variables.scss +21 -0
  16. data/app/controllers/calagator/admin_controller.rb +1 -1
  17. data/app/controllers/calagator/application_controller.rb +3 -3
  18. data/app/controllers/calagator/events_controller.rb +3 -3
  19. data/app/controllers/calagator/site_controller.rb +1 -1
  20. data/app/controllers/calagator/sources_controller.rb +3 -3
  21. data/app/controllers/calagator/venues_controller.rb +4 -4
  22. data/app/controllers/calagator/versions_controller.rb +2 -2
  23. data/app/helpers/calagator/application_helper.rb +0 -3
  24. data/app/helpers/calagator/mapping_helper.rb +9 -8
  25. data/app/models/calagator/event.rb +2 -3
  26. data/app/models/calagator/event/ical_renderer.rb +4 -2
  27. data/app/models/calagator/event/saver.rb +2 -2
  28. data/app/models/calagator/event/search_engine/sql.rb +2 -1
  29. data/app/models/calagator/source.rb +0 -26
  30. data/app/models/calagator/source/importer.rb +1 -1
  31. data/app/models/calagator/source/parser/meetup.rb +2 -2
  32. data/app/models/calagator/venue.rb +0 -2
  33. data/app/models/calagator/venue/geocoder.rb +1 -1
  34. data/app/models/calagator/venue/search_engine/sql.rb +1 -1
  35. data/app/views/calagator/events/_subnav.html.erb +2 -2
  36. data/app/views/calagator/events/show.html.erb +2 -2
  37. data/app/views/calagator/site/_description.html.erb +6 -3
  38. data/app/views/calagator/site/_sidebar_menu.html.erb +13 -0
  39. data/app/views/calagator/site/index.html.erb +1 -0
  40. data/app/views/calagator/sources/index.html.erb +1 -1
  41. data/app/views/calagator/sources/show.html.erb +1 -1
  42. data/app/views/calagator/venues/_subnav.html.erb +1 -1
  43. data/app/views/calagator/venues/show.html.erb +1 -1
  44. data/app/views/layouts/calagator/_after_footer.html.erb +2 -0
  45. data/app/views/layouts/calagator/_content.html.erb +6 -0
  46. data/app/views/layouts/calagator/_footer.html.erb +8 -0
  47. data/app/views/layouts/calagator/_global_search.html.erb +11 -0
  48. data/app/views/layouts/calagator/_header.html.erb +20 -0
  49. data/app/views/layouts/calagator/application.html.erb +9 -64
  50. data/config/routes.rb +16 -16
  51. data/config/spring.rb +1 -0
  52. data/db/development +0 -0
  53. data/db/development.sqlite3 +0 -0
  54. data/db/migrate/20150407014752_add_taggings_counter_cache_to_tags.acts_as_taggable_on_engine.rb +14 -0
  55. data/db/migrate/20150407014754_change_collation_for_tag_names.acts_as_taggable_on_engine.rb +9 -0
  56. data/db/schema.rb +2 -8
  57. data/db/seeds.rb +64 -8
  58. data/lib/calagator.rb +42 -2
  59. data/lib/calagator/duplicate_checking/duplicate_finder.rb +1 -1
  60. data/lib/calagator/duplicate_checking/duplicate_squasher.rb +1 -1
  61. data/lib/calagator/engine.rb +12 -22
  62. data/lib/calagator/tag_model_extensions.rb +1 -1
  63. data/lib/calagator/version.rb +1 -1
  64. data/lib/generators/calagator/install_generator.rb +17 -12
  65. data/lib/generators/calagator/templates/config/initializers/01_calagator.rb +89 -0
  66. data/lib/generators/calagator/templates/config/initializers/02_geokit.rb +106 -0
  67. data/lib/tasks/sunspot_reindex_calagator.rake +16 -3
  68. data/lib/tasks/update_counter_caches.rake +3 -3
  69. data/spec/controllers/calagator/events_controller_spec.rb +3 -3
  70. data/spec/controllers/calagator/sources_controller_spec.rb +3 -3
  71. data/spec/controllers/calagator/venues_controller_spec.rb +5 -5
  72. data/spec/dummy/Gemfile +35 -27
  73. data/spec/dummy/README.rdoc +15 -248
  74. data/spec/dummy/Rakefile +1 -2
  75. data/spec/dummy/app/assets/javascripts/application.js +5 -4
  76. data/spec/dummy/app/assets/stylesheets/application.css +6 -4
  77. data/spec/dummy/app/controllers/application_controller.rb +3 -1
  78. data/spec/dummy/app/views/layouts/application.html.erb +2 -2
  79. data/spec/dummy/bin/bundle +3 -0
  80. data/spec/dummy/bin/rails +4 -0
  81. data/spec/dummy/bin/rake +4 -0
  82. data/spec/dummy/bin/setup +29 -0
  83. data/spec/dummy/config.ru +2 -2
  84. data/spec/dummy/config/application.rb +5 -41
  85. data/spec/dummy/config/boot.rb +1 -4
  86. data/spec/dummy/config/database.yml +8 -8
  87. data/spec/dummy/config/environment.rb +3 -3
  88. data/spec/dummy/config/environments/development.rb +22 -18
  89. data/spec/dummy/config/environments/production.rb +46 -34
  90. data/spec/dummy/config/environments/test.rb +19 -14
  91. data/spec/dummy/config/initializers/01_calagator.rb +89 -0
  92. data/spec/dummy/config/initializers/02_geokit.rb +106 -0
  93. data/spec/dummy/config/initializers/assets.rb +11 -0
  94. data/spec/dummy/config/initializers/cookies_serializer.rb +3 -0
  95. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  96. data/spec/dummy/config/initializers/inflections.rb +6 -5
  97. data/spec/dummy/config/initializers/mime_types.rb +0 -1
  98. data/spec/dummy/config/initializers/session_store.rb +1 -6
  99. data/spec/dummy/config/initializers/wrap_parameters.rb +6 -6
  100. data/spec/dummy/config/locales/en.yml +20 -2
  101. data/spec/dummy/config/routes.rb +23 -25
  102. data/spec/dummy/config/secrets.yml +16 -77
  103. data/spec/dummy/config/sunspot.yml +23 -0
  104. data/spec/dummy/db/development.sqlite3 +0 -0
  105. data/spec/dummy/db/schema.rb +31 -30
  106. data/spec/dummy/db/seeds.rb +1 -0
  107. data/spec/dummy/log/development.log +257 -235
  108. data/spec/dummy/public/404.html +54 -13
  109. data/spec/dummy/public/422.html +54 -13
  110. data/spec/dummy/public/500.html +53 -12
  111. data/spec/dummy/public/robots.txt +2 -2
  112. data/spec/dummy/test/test_helper.rb +2 -5
  113. data/spec/factories.rb +0 -54
  114. data/spec/features/admin_auth_spec.rb +2 -2
  115. data/spec/features/admin_lock_event_spec.rb +1 -1
  116. data/spec/features/import_events_from_feed_spec.rb +1 -1
  117. data/spec/helpers/calagator/google_event_export_helper_spec.rb +8 -11
  118. data/spec/helpers/calagator/sources_helper_spec.rb +1 -2
  119. data/spec/helpers/calagator/tags_helper_spec.rb +1 -2
  120. data/spec/models/calagator/event_spec.rb +7 -7
  121. data/spec/models/calagator/source/parser_meetup_spec.rb +3 -3
  122. data/spec/models/calagator/source_spec.rb +0 -29
  123. data/spec/models/calagator/venue_spec.rb +8 -11
  124. data/spec/spec_helper.rb +3 -1
  125. data/spec/support/admin_authentication.rb +2 -0
  126. data/spec/support/assert_dom_equal.rb +26 -0
  127. data/spec/support/paper_trail.rb +7 -0
  128. data/spec/support/rspec-activemodel-mocks_patch.rb +9 -0
  129. metadata +200 -280
  130. data/app/assets/stylesheets/calagator.scss +0 -8
  131. data/app/assets/stylesheets/calagator/datepicker.scss +0 -177
  132. data/app/assets/stylesheets/calagator/theme.css +0 -0
  133. data/app/models/event/search_engine/base.rb +0 -0
  134. data/config/deploy/local.rb +0 -37
  135. data/config/deploy/lucca.rb +0 -33
  136. data/config/initializers/geokit.rb +0 -74
  137. data/config/initializers/search_engine.rb +0 -4
  138. data/config/initializers/set_default_url_host.rb +0 -5
  139. data/db/test.sqlite3 +0 -0
  140. data/lib/generators/calagator/templates/config/calagator.rb +0 -26
  141. data/lib/generators/calagator/templates/config/secrets.yml.sample +0 -83
  142. data/lib/secrets_reader.rb +0 -76
  143. data/spec/dummy/Gemfile.lock +0 -195
  144. data/spec/dummy/app/assets/images/rails.png +0 -0
  145. data/spec/dummy/config/initializers/calagator.rb +0 -26
  146. data/spec/dummy/config/initializers/secret_token.rb +0 -7
  147. data/spec/dummy/db/migrate/20150309023304_create_events.calagator.rb +0 -18
  148. data/spec/dummy/db/migrate/20150309023305_create_venues.calagator.rb +0 -18
  149. data/spec/dummy/db/migrate/20150309023306_create_sources.calagator.rb +0 -17
  150. data/spec/dummy/db/migrate/20150309023307_add_detailed_fields_to_venue.calagator.rb +0 -20
  151. data/spec/dummy/db/migrate/20150309023308_add_end_time_to_events.calagator.rb +0 -10
  152. data/spec/dummy/db/migrate/20150309023309_add_source_id_to_events.calagator.rb +0 -10
  153. data/spec/dummy/db/migrate/20150309023310_add_source_id_to_venues.calagator.rb +0 -11
  154. data/spec/dummy/db/migrate/20150309023311_add_duplicate_of_column_to_venues.calagator.rb +0 -10
  155. data/spec/dummy/db/migrate/20150309023312_add_duplicate_of_column_to_events.calagator.rb +0 -10
  156. data/spec/dummy/db/migrate/20150309023313_change_lat_long_type.calagator.rb +0 -13
  157. data/spec/dummy/db/migrate/20150309023314_add_source_reimport.calagator.rb +0 -10
  158. data/spec/dummy/db/migrate/20150309023315_change_end_time_to_duration.calagator.rb +0 -12
  159. data/spec/dummy/db/migrate/20150309023316_remove_format_type_from_source.calagator.rb +0 -10
  160. data/spec/dummy/db/migrate/20150309023317_create_updates.calagator.rb +0 -16
  161. data/spec/dummy/db/migrate/20150309023318_remove_next_update_from_source.calagator.rb +0 -10
  162. data/spec/dummy/db/migrate/20150309023319_change_duration_to_end_time.calagator.rb +0 -12
  163. data/spec/dummy/db/migrate/20150309023320_create_tags_and_taggings.calagator.rb +0 -29
  164. data/spec/dummy/db/migrate/20150309023321_create_versioned_events.calagator.rb +0 -26
  165. data/spec/dummy/db/migrate/20150309023322_create_versioned_venues.calagator.rb +0 -33
  166. data/spec/dummy/db/migrate/20150309023323_add_rrule_to_events.calagator.rb +0 -16
  167. data/spec/dummy/db/migrate/20150309023324_create_versions.calagator.rb +0 -19
  168. data/spec/dummy/db/migrate/20150309023325_add_closed_flag_to_venues.calagator.rb +0 -10
  169. data/spec/dummy/db/migrate/20150309023326_add_wifi_flag_to_venues.calagator.rb +0 -10
  170. data/spec/dummy/db/migrate/20150309023327_add_access_notes_to_venues.calagator.rb +0 -10
  171. data/spec/dummy/db/migrate/20150309023328_add_events_count_to_venues.calagator.rb +0 -9
  172. data/spec/dummy/db/migrate/20150309023329_add_venue_details_to_events.calagator.rb +0 -10
  173. data/spec/dummy/db/migrate/20150309023330_acts_as_taggable_on_migration.calagator.rb +0 -51
  174. data/spec/dummy/db/migrate/20150309023331_cleanup.calagator.rb +0 -15
  175. data/spec/dummy/db/migrate/20150309023332_specify_venues_latitude_and_longitude_precision.calagator.rb +0 -12
  176. data/spec/dummy/db/migrate/20150309023333_remove_updates.calagator.rb +0 -14
  177. data/spec/dummy/db/migrate/20150309023334_add_locked_status_to_events.calagator.rb +0 -6
  178. data/spec/dummy/db/test.sqlite3 +0 -0
  179. data/spec/dummy/doc/README_FOR_APP +0 -2
  180. data/spec/dummy/script/rails +0 -6
  181. data/spec/dummy/test/performance/browsing_test.rb +0 -12
  182. 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), :method => :delete, :confirm => "Are you sure?" %>
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,2 @@
1
+ <%# Override this file to include Javascript in the layout's footer %>
2
+
@@ -0,0 +1,6 @@
1
+ <div id="content">
2
+ <%# flash[:success] = "yay"; flash[:failure] = "meh" %>
3
+ <%= render_flash %>
4
+ <%= yield %>
5
+ </div>
6
+
@@ -0,0 +1,8 @@
1
+ <div id="top_footer">
2
+ <%= URI.parse(Calagator.url).host %>
3
+ <%= source_code_version %>
4
+ &nbsp;
5
+ &nbsp;
6
+ &nbsp;
7
+ </div>
8
+
@@ -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="https://d591zijq8zntj.cloudfront.net/leaflet-0.6.4/leaflet.css" />
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="https://d591zijq8zntj.cloudfront.net/leaflet-0.6.4/leaflet.ie.css" />
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
- <div id="outer">
47
- <div id="global_header">
48
- <%= link_to Calagator.title, root_path, id: "project_title" %>
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
- <div id="top_footer">
88
- <%= URI.parse(Calagator.url).host %>
89
- <%= source_code_version %>
90
- &nbsp;
91
- &nbsp;
92
- &nbsp;
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
+
@@ -1,23 +1,23 @@
1
1
  Calagator::Engine.routes.draw do
2
- match 'omfg' => 'site#omfg'
3
- match 'hello' => 'site#hello'
2
+ get 'omfg' => 'site#omfg'
3
+ get 'hello' => 'site#hello'
4
4
 
5
- match 'about' => 'site#about'
5
+ get 'about' => 'site#about'
6
6
 
7
- match 'opensearch.:format' => 'site#opensearch'
8
- match 'defunct' => 'site#defunct'
7
+ get 'opensearch.:format' => 'site#opensearch'
8
+ get 'defunct' => 'site#defunct'
9
9
 
10
- match 'admin' => 'admin#index'
10
+ get 'admin' => 'admin#index'
11
11
  get "admin/index"
12
12
  get "admin/events"
13
- match "lock_event" => "admin#lock_event", :only => :post
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
- match 'tag/:tag', via: :get, to: :search, as: :tag
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
- match 'tag/:tag', via: :get, to: :search, as: :tag
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
- match 'recent_changes' => redirect("/changes")
47
- match 'recent_changes.:format' => redirect("/changes.%{format}")
46
+ get 'recent_changes' => redirect("/changes")
47
+ get 'recent_changes.:format' => redirect("/changes.%{format}")
48
48
 
49
- match 'css/:name' => 'site#style'
50
- match 'css/:name.:format' => 'site#style'
49
+ get 'css/:name' => 'site#style'
50
+ get 'css/:name.:format' => 'site#style'
51
51
 
52
- match '/' => 'site#index', :as => :root
53
- match '/index' => 'site#index'
54
- match '/index.:format' => 'site#index'
52
+ get '/' => 'site#index', :as => :root
53
+ get '/index' => 'site#index'
54
+ get '/index.:format' => 'site#index'
55
55
  end
@@ -0,0 +1 @@
1
+ Spring.application_root = './spec/dummy'
Binary file
Binary file
@@ -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
@@ -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 => 20120831234448) do
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"
@@ -1,15 +1,71 @@
1
1
  # ruby encoding: utf-8
2
2
 
3
- # This file should contain all the record creation needed to seed the database with its default values.
4
- # The data can then be loaded with the rake db:seed (or created alongside the db with db:setup).
5
- #
6
- # Examples:
7
- #
8
- # cities = City.create([{ :name => 'Chicago' }, { :name => 'Copenhagen' }])
9
- # Mayor.create(:name => 'Daley', :city => cities.first)
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
- require 'faker'
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)
@@ -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
@@ -11,7 +11,7 @@ module DuplicateChecking
11
11
  scope = scope.where(query)
12
12
  scope.distinct
13
13
 
14
- records = scope.all
14
+ records = scope.to_a
15
15
  records = group_by_fields(records) if grouped
16
16
  records
17
17
  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