open_conference_ware 1.0.0.pre2 → 1.0.0.pre3

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 (60) hide show
  1. data.tar.gz.sig +0 -0
  2. data/.travis.yml +3 -0
  3. data/README.md +6 -4
  4. data/app/assets/javascripts/open_conference_ware/{persona.js → persona.js.erb} +1 -1
  5. data/app/assets/stylesheets/open_conference_ware/custom.css.scss +14 -18
  6. data/app/controllers/open_conference_ware/application_controller.rb +2 -2
  7. data/app/controllers/open_conference_ware/authentications_controller.rb +8 -0
  8. data/app/controllers/open_conference_ware/manage/events_controller.rb +2 -2
  9. data/app/controllers/open_conference_ware/proposals_controller.rb +1 -1
  10. data/app/helpers/open_conference_ware/snippets_helper.rb +1 -1
  11. data/app/helpers/open_conference_ware/user_favorites_helper.rb +8 -4
  12. data/app/mixins/open_conference_ware/settings_checkers_mixin.rb +1 -0
  13. data/app/models/open_conference_ware/event.rb +1 -8
  14. data/app/models/open_conference_ware/proposal.rb +54 -61
  15. data/app/models/open_conference_ware/snippet.rb +1 -6
  16. data/app/observers/open_conference_ware/cache_watcher.rb +3 -3
  17. data/app/views/layouts/open_conference_ware/_header.html.erb +3 -1
  18. data/app/views/open_conference_ware/422.html.erb +1 -1
  19. data/app/views/open_conference_ware/500.html.erb +1 -1
  20. data/app/views/open_conference_ware/proposals/_form.html.erb +5 -5
  21. data/app/views/open_conference_ware/proposals/_list.html.erb +4 -4
  22. data/app/views/open_conference_ware/proposals/_list_concise.html.erb +3 -3
  23. data/app/views/open_conference_ware/proposals/_sub_list.html.erb +2 -2
  24. data/app/views/open_conference_ware/proposals/_transition_control.html.erb +2 -2
  25. data/app/views/open_conference_ware/proposals/show.html.erb +33 -54
  26. data/db/migrate/20131203235216_create_open_conference_ware_comments.rb +1 -1
  27. data/db/migrate/20131203235418_create_open_conference_ware_events.rb +1 -2
  28. data/db/migrate/20131203235524_create_open_conference_ware_proposals.rb +5 -5
  29. data/db/migrate/20131203235723_create_open_conference_ware_rooms.rb +1 -1
  30. data/db/migrate/20131203235831_create_open_conference_ware_schedule_items.rb +2 -2
  31. data/db/migrate/20131203235934_create_open_conference_ware_session_types.rb +1 -1
  32. data/db/migrate/20131204000008_create_open_conference_ware_snippets.rb +1 -1
  33. data/db/migrate/20131204000048_create_open_conference_ware_taggings.rb +2 -2
  34. data/db/migrate/20131204000147_create_open_conference_ware_tracks.rb +1 -1
  35. data/db/migrate/20131204000355_create_proposals_users_join_table.rb +3 -0
  36. data/lib/generators/open_conference_ware/install/install_generator.rb +10 -0
  37. data/lib/generators/open_conference_ware/install/templates/config_initializer.rb +24 -2
  38. data/lib/generators/open_conference_ware/install/templates/secret_token.rb.erb +13 -0
  39. data/lib/generators/open_conference_ware/install/templates/secrets.yml.erb +18 -0
  40. data/lib/open_conference_ware.rb +10 -4
  41. data/lib/open_conference_ware/dependencies.rb +0 -1
  42. data/lib/open_conference_ware/version.rb +1 -1
  43. data/lib/tasks/open_conference_ware_tasks.rake +3 -2
  44. data/open_conference_ware.gemspec +0 -1
  45. data/spec/controllers/open_conference_ware/proposals_controller_spec.rb +5 -5
  46. data/spec/dummy/config/initializers/01_open_conference_ware.rb +24 -2
  47. data/spec/dummy/config/initializers/02_omniauth.rb +1 -1
  48. data/spec/dummy/config/initializers/secret_token.rb +2 -1
  49. data/spec/dummy/config/secrets.yml +18 -0
  50. data/spec/spec_helper_customizations.rb +2 -1
  51. data/spec/views/open_conference_ware/proposals/_transition_control.html.erb_spec.rb +2 -1
  52. data/spec/views/open_conference_ware/rooms/show.html.erb_spec.rb +1 -0
  53. data/spec/views/open_conference_ware/session_types/show.html.erb_spec.rb +1 -0
  54. data/spec/views/open_conference_ware/tracks/show.html.erb_spec.rb +1 -0
  55. data/util/transfer_schedule_items.rb +1 -1
  56. data/util/user_favorites_contention_report.rb +1 -1
  57. metadata +7 -22
  58. metadata.gz.sig +0 -0
  59. data/app/mixins/open_conference_ware/cache_lookups_mixin.rb +0 -128
  60. data/spec/integration/open_conference_ware/cache_lookups_mixin_spec.rb +0 -122
@@ -15,11 +15,6 @@ module OpenConferenceWare
15
15
  #
16
16
 
17
17
  class Snippet < OpenConferenceWare::Base
18
-
19
- # Provide cached Snippet.lookup(slug) method.
20
- include CacheLookupsMixin
21
- cache_lookups_for :slug, order: :slug
22
-
23
18
  # Load the Snippets as defined in the "spec/fixtures/snippets.yml" file and
24
19
  # load them into the current database, overwriting any existing records.
25
20
  def self.load_from_fixtures(overwrite = false)
@@ -43,7 +38,7 @@ module OpenConferenceWare
43
38
 
44
39
  # Returns the content for a Snippet match +slug+, else raise an ActiveRecord::RecordNotFound.
45
40
  def self.content_for(slug)
46
- if record = self.lookup(slug.to_s)
41
+ if record = self.find_by_slug(slug.to_s)
47
42
  return record.content
48
43
  else
49
44
  raise ActiveRecord::RecordNotFound, "Couldn't find snippet: #{slug}"
@@ -20,10 +20,10 @@ module OpenConferenceWare
20
20
  # Expire the cache
21
21
  def self.expire(*args)
22
22
  Rails.logger.info("CacheWatcher: expiring cache")
23
- case Rails.cache
24
- when ActiveSupport::Cache::MemCacheStore
23
+ case Rails.cache.class.name
24
+ when "ActiveSupport::Cache::MemCacheStore"
25
25
  Rails.cache.instance_variable_get(:@data).flush_all
26
- when ActiveSupport::Cache::FileStore, ActiveSupport::Cache::MemoryStore
26
+ when "ActiveSupport::Cache::FileStore", "ActiveSupport::Cache::MemoryStore"
27
27
  Rails.cache.delete_matched(//) rescue nil
28
28
  else
29
29
  raise NotImplementedError, "Don't know how to expire cache: #{Rails.cache.class.name}"
@@ -91,7 +91,9 @@
91
91
  <% if user_profiles? %>
92
92
  <li><%= link_to "Edit profile", edit_user_path(current_user) %></li>
93
93
  <% end -%>
94
- <li><%= link_to( "My favorites", user_favorites_path(current_user) ) %>
94
+ <% if user_favorites? %>
95
+ <li><%= link_to( "My favorites", user_favorites_path(current_user) ) %>
96
+ <% end -%>
95
97
  <li><%= link_to( "My proposals", proposals_user_path(current_user) ) %>
96
98
  <li class="divider"></li>
97
99
  <li><%= link_to "Sign Out", sign_out_path %></li>
@@ -7,5 +7,5 @@
7
7
  <li>Our server's security token was just updated: please reload the form and try again.</li>
8
8
  </ol>
9
9
  <p>
10
- If the instructions above didn't help, please <%= mail_to(SECRETS.administrator_email, "contact the developers", :subject => "422 Unprocessable Entity on #{Socket.gethostname}:#{File.basename(Rails.root)}", :body => "What did you do that caused the error?\n\nWhat did you expect the system to do?\n\n") %>.
10
+ If the instructions above didn't help, please <%= mail_to(OpenConferenceWare.administrator_email, "contact the developers", :subject => "422 Unprocessable Entity on #{Socket.gethostname}:#{File.basename(Rails.root)}", :body => "What did you do that caused the error?\n\nWhat did you expect the system to do?\n\n") %>.
11
11
  </p>
@@ -7,5 +7,5 @@
7
7
  </p>
8
8
 
9
9
  <p>
10
- If you'd like to email additional information or get notified when the problem is resolved, <%= mail_to(SECRETS.administrator_email, "contact the developers", :subject => "500 Server Error on #{Socket.gethostname}:#{File.basename(Rails.root)}", :body => "What did you do that caused the error?\n\nWhat did you expect the system to do?\n\n") %>.
10
+ If you'd like to email additional information or get notified when the problem is resolved, <%= mail_to(OpenConferenceWare.administrator_email, "contact the developers", :subject => "500 Server Error on #{Socket.gethostname}:#{File.basename(Rails.root)}", :body => "What did you do that caused the error?\n\nWhat did you expect the system to do?\n\n") %>.
11
11
  </p>
@@ -118,7 +118,7 @@
118
118
  <% if admin? %>
119
119
  <br /><span class='admin-only'><strong>WARNING:</strong> Titles are locked because other systems are currently depending on them. (MediaWiki, printed programs, etc.)</span>
120
120
  <% else -%>
121
- If you need to change this information, please <%= mail_to SECRETS.administrator_email, 'contact the administrator' %>.
121
+ If you need to change this information, please <%= mail_to OpenConferenceWare.administrator_email, 'contact the administrator' %>.
122
122
  <% end -%>
123
123
  </p>
124
124
  <% end -%>
@@ -168,14 +168,14 @@
168
168
  </td>
169
169
  </tr>
170
170
  <% end %>
171
- <% if Proposal.audience_levels %>
171
+ <% if OpenConferenceWare::Proposal.audience_levels %>
172
172
  <tr>
173
173
  <td class="label-cell">
174
174
  <%= required_field %><%= f.label :session_type_id, "Audience level" %>
175
175
  </td>
176
176
  <td>
177
177
  <ul class='radio-set'>
178
- <% for audience_level in Proposal.audience_levels %>
178
+ <% for audience_level in OpenConferenceWare::Proposal.audience_levels %>
179
179
  <li>
180
180
  <%= f.radio_button :audience_level, audience_level['slug'], :class => :radio %>
181
181
  <label for="proposal_audience_level_<%= audience_level['slug'] %>">
@@ -184,7 +184,7 @@
184
184
  </li>
185
185
  <% end %>
186
186
  </ul>
187
- <p class='help'><%= Proposal.audience_level_hint %></p>
187
+ <p class='help'><%= OpenConferenceWare::Proposal.audience_level_hint %></p>
188
188
  </td>
189
189
  </tr>
190
190
 
@@ -216,7 +216,7 @@
216
216
  </tr>
217
217
  <% end %>
218
218
  <tr>
219
- <td class="label-cell"><%= f.label :note_to_organizers, "Note to organizers<br/ >(Optional, kept private)" %></td>
219
+ <td class="label-cell"><%= f.label :note_to_organizers, "Note to organizers<br/ >(Optional, kept private)".html_safe %></td>
220
220
  <td>
221
221
  <%= f.text_area :note_to_organizers, :rows => 3 %>
222
222
  <p class='help'>(Is there anything else we should know about the room requirements or plans for your talk? E.g. you will be tapdancing, throwing broccoli into the audience, and need to rehearse beforehand.)</p>
@@ -6,7 +6,7 @@
6
6
  # * kind => Treat these records as :sessions or :proposals. REQUIRED.
7
7
  # * sorter => Display the sort toolbar? Defaults to false.
8
8
 
9
- records = Proposal.sort(records, params[:sort] || "title", params[:dir] != "desc")
9
+ records = OpenConferenceWare::Proposal.sort(records, params[:sort] || "title", params[:dir] != "desc")
10
10
  %>
11
11
 
12
12
  <% if proposal_excerpts? %>
@@ -121,9 +121,9 @@ records = Proposal.sort(records, params[:sort] || "title", params[:dir] != "desc
121
121
  <p class="proposal">
122
122
  <% styling = proposal_excerpts? ? 'display: inline-block' : 'inline' %>
123
123
  <% if multiple_presenters? %>
124
- <%= link_to(h(record.title), record, :class => "title", :style => styling) %>
124
+ <%= link_to(record.title, record, :class => "title", :style => styling) %>
125
125
  <% else %>
126
- <%= link_to(h(record.presenter)+" &mdash; "+h(record.title), record, :class => "title", :style => styling) %>
126
+ <%= link_to("#{record.presenter} &mdash; #{record.title}".html_safe, record, :class => "title", :style => styling) %>
127
127
  <% end %>
128
128
 
129
129
  <span class="excerpt">
@@ -146,7 +146,7 @@ records = Proposal.sort(records, params[:sort] || "title", params[:dir] != "desc
146
146
  <% end %>
147
147
  <td width="0" class="unbreakable">
148
148
  <p>
149
- <% date = record.submitted_at.localtime.to_s if record.submitted_at.present? %>
149
+ <% date = record.submitted_at.localtime.strftime("%m/%d/%Y") if record.submitted_at.present? %>
150
150
  <% if date_cache[date] %>
151
151
  <!--
152
152
  <span class="date-seen"><%= date %></span>
@@ -16,11 +16,11 @@ hide_rooms ||= false
16
16
  # Establish classs
17
17
  item_class = 'vevent'
18
18
  item_class << ' light ' << track_css_class(track) if track
19
- item_class << ' generic_item' if item.is_a?(ScheduleItem)
19
+ item_class << ' generic_item' if item.is_a?(OpenConferenceWare::ScheduleItem)
20
20
  %>
21
21
  <li class='<%= item_class %>' id='<%= item.class.name.underscore %>-<%= item.id %>'>
22
22
  <div class='concise'>
23
- <% if item.is_a?(ScheduleItem) %>
23
+ <% if item.is_a?(OpenConferenceWare::ScheduleItem) %>
24
24
  <span class='summary'><%= h item.title %></span>
25
25
  <% else %>
26
26
  <%= user_favorite_control_for item %>
@@ -33,7 +33,7 @@ hide_rooms ||= false
33
33
  <ul class='session_info'>
34
34
  <li>
35
35
  <strong>Title:</strong>
36
- <% if item.is_a?(ScheduleItem) %>
36
+ <% if item.is_a?(OpenConferenceWare::ScheduleItem) %>
37
37
  <%= h item.title %>
38
38
  <% else %>
39
39
  <%= link_to h(item.title), session_path(item) %>
@@ -36,7 +36,7 @@ include_user_favorites_javascript
36
36
  }
37
37
 
38
38
  ## Get records from variable or through an association.
39
- records = local_assigns[:records] || Proposal.populated_proposals_for(container)
39
+ records = local_assigns[:records] || OpenConferenceWare::Proposal.populated_proposals_for(container)
40
40
 
41
41
  ## Get events to organize records.
42
42
  events_to_records = records.select(&:event).group_by(&:event)
@@ -53,7 +53,7 @@ include_user_favorites_javascript
53
53
  <% if event.proposal_status_published? %>
54
54
  <% event_records_by_confirmation = event_records.group_by(&:confirmed?) %>
55
55
  <%= displayer.call(:sessions, event_records_by_confirmation[true], false) %>
56
- <% unless container.kind_of?(Room) %>
56
+ <% unless container.kind_of?(OpenConferenceWare::Room) %>
57
57
  <%= displayer.call(:proposals, event_records_by_confirmation[false], true) %>
58
58
  <% end %>
59
59
  <% run_when_dom_is_ready "archive_proposals_sub_list(#{event.id})" %>
@@ -8,8 +8,8 @@ proposal ||= @proposal
8
8
  %>
9
9
 
10
10
  <div id="proposal_transition_control_container_<%= proposal.id %>" class="proposal_transition_control_container proposal_control_container">
11
- <% if proposal.aasm_events_for_current_state.empty? %>
12
- No valid transitions available from status <%= proposal.aasm_current_state %>
11
+ <% if proposal.aasm.events(proposal.aasm.current_state).empty? %>
12
+ No valid transitions available from status <%= proposal.aasm.current_state %>
13
13
  <% else %>
14
14
  <%= select('proposal', 'transition', proposal.titles_and_statuses[1 .. proposal.titles_and_statuses.length], {:include_blank => proposal.titles_and_statuses[0][0]}, {:class => 'proposal_transition_control proposal_control', :x_proposal_id => proposal.id}) %>
15
15
  <% end %>
@@ -101,51 +101,6 @@ show_private_note = (can_edit?(@proposal) || selector?) && ! @proposal.note_to_o
101
101
  <%= render :partial => "open_conference_ware/proposals/admin_controls" %>
102
102
 
103
103
  <%= cache "#{@kind}_#{@proposal.id},edit_#{can_edit?(@proposal)},private_note_#{show_private_note}" do %>
104
- <% unless multiple_presenters? %>
105
- <div class="standard-form">
106
- <table>
107
- <tr>
108
- <td colspan="2">
109
- <h4>Speaker</h4>
110
- </td>
111
- </tr>
112
- <tr>
113
- <td class="label-cell"><label>Speaker</label ></td>
114
- <td class="data-cell"><p>
115
- <% if user_profiles? %>
116
- <%= link_to(h(@proposal.user.fullname), user_path(@proposal.user)) %>
117
- <% else %>
118
- <%=h @proposal.presenter %>
119
- <% end %>
120
- </p></td>
121
- </tr>
122
- <% unless @profile.affiliation.blank? %>
123
- <tr>
124
- <td class="label-cell"><label>Affiliation</label ></td>
125
- <td class="data-cell"><p><%=h @profile.affiliation %></p></td>
126
- </tr>
127
- <% end %>
128
- <% if can_edit?(@proposal) %>
129
- <tr>
130
- <td class="label-cell"><label>Email (private)</label ></td>
131
- <% email = @profile.email %>
132
- <td class="data-cell"><p><%=link_to h(email), "mailto:"+h(email) %></p></td>
133
- </tr>
134
- <% end %>
135
- <% unless @profile.website.blank? %>
136
- <tr>
137
- <td class="label-cell"><label>URL</label ></td>
138
- <td class="data-cell"><p><%= display_link_to @profile.website %></p></td>
139
- </tr>
140
- <% end %>
141
- <tr>
142
- <td class="label-cell"><label>Biography</label ></td>
143
- <td class="data-cell"><%= preserve_formatting_of @profile.biography %></td>
144
- </tr>
145
- </table>
146
- </div>
147
- <% end %>
148
-
149
104
  <div class='show-proposal'>
150
105
 
151
106
  <% if current_user_is_proposal_speaker? %>
@@ -198,9 +153,6 @@ show_private_note = (can_edit?(@proposal) || selector?) && ! @proposal.note_to_o
198
153
  <%= @proposal.audience_level_label %>
199
154
  </div>
200
155
  <% end %>
201
- <div class='proposal-slug'>
202
- <%= @proposal.slug %>
203
- </div>
204
156
  <% if schedule_visible? && @proposal.start_time %>
205
157
  <div class='proposal-scheduling'>
206
158
  <b>Scheduled:</b>
@@ -243,6 +195,39 @@ show_private_note = (can_edit?(@proposal) || selector?) && ! @proposal.note_to_o
243
195
  <%= preserve_formatting_of @proposal.note_to_organizers %>
244
196
  <% end %>
245
197
 
198
+ <% if user_profiles? %>
199
+ <h3><%= @proposal.users.size <= 1 ? "Speaker" : "Speakers" %></h3>
200
+ <%= render :partial => 'open_conference_ware/users/list', :locals => { :users => @proposal.users.by_name, :hide_rooms => true, :only_for_event => @event } %>
201
+ <% else %>
202
+ <h3><%= @proposal.presenter %></h3>
203
+ <table>
204
+ <% if @proposal.affiliation.present? -%>
205
+ <tr>
206
+ <th>Affiliation</th>
207
+ <td><%= @proposal.affiliation %></td>
208
+ </tr>
209
+ <% end -%>
210
+ <% if @proposal.website.present? -%>
211
+ <tr>
212
+ <th>Website</th>
213
+ <td><%= display_link_to(@proposal.website, :nofollow => true, :class => 'url') %></td>
214
+ </tr>
215
+ <% end -%>
216
+ <% if admin? || can_edit?(@proposal) %>
217
+ <tr>
218
+ <th>Email (private)</th>
219
+ <td><%= display_link_to(@proposal.email, :mailto => true) %></td>
220
+ </tr>
221
+ <% end -%>
222
+ <% if @proposal.biography.present? %>
223
+ <tr>
224
+ <th>Biography</th>
225
+ <td><%= display_textile_for @proposal.biography %></td>
226
+ </tr>
227
+ </table>
228
+ <% end %>
229
+ <% end %>
230
+
246
231
  <div class="record-controls">
247
232
  <% if can_edit?(@proposal) %>
248
233
  <%= link_to 'Edit proposal', edit_proposal_path(@proposal), :class => "editable" %>
@@ -251,12 +236,6 @@ show_private_note = (can_edit?(@proposal) || selector?) && ! @proposal.note_to_o
251
236
  <%= link_to "Back to list of #{@kind.to_s.pluralize}", records_path, :class => "cancelable" %>
252
237
  </div>
253
238
 
254
- <% if multiple_presenters? %>
255
- <h3><%= @proposal.users.size == 1 ? "Speaker" : "Speakers" %></h3>
256
-
257
- <%= render :partial => 'open_conference_ware/users/list', :locals => { :users => @proposal.users.by_name, :hide_rooms => true, :only_for_event => @event } %>
258
-
259
- <% end %>
260
239
 
261
240
  <% end %>
262
241
 
@@ -9,6 +9,6 @@ class CreateOpenConferenceWareComments < ActiveRecord::Migration
9
9
  t.datetime "updated_at"
10
10
  end
11
11
 
12
- add_index "open_conference_ware_comments", ["proposal_id"], name: "index_comments_on_proposal_id", using: :btree
12
+ add_index "open_conference_ware_comments", ["proposal_id"]
13
13
  end
14
14
  end
@@ -21,7 +21,6 @@ class CreateOpenConferenceWareEvents < ActiveRecord::Migration
21
21
  t.boolean "show_proposal_confirmation_controls", default: false
22
22
  end
23
23
 
24
- add_index "open_conference_ware_events", ["id"], name: "index_events_on_id", unique: true, using: :btree
25
- add_index "open_conference_ware_events", ["slug"], name: "index_events_on_slug", using: :btree
24
+ add_index "open_conference_ware_events", ["slug"]
26
25
  end
27
26
  end
@@ -27,10 +27,10 @@ class CreateOpenConferenceWareProposals < ActiveRecord::Migration
27
27
  t.datetime "notified_at"
28
28
  end
29
29
 
30
- add_index "open_conference_ware_proposals", ["event_id"], name: "index_proposals_on_event_id", using: :btree
31
- add_index "open_conference_ware_proposals", ["room_id"], name: "index_proposals_on_room_id", using: :btree
32
- add_index "open_conference_ware_proposals", ["submitted_at"], name: "index_proposals_on_submitted_at", using: :btree
33
- add_index "open_conference_ware_proposals", ["track_id"], name: "index_proposals_on_track_id", using: :btree
34
- add_index "open_conference_ware_proposals", ["user_id"], name: "index_proposals_on_user_id", using: :btree
30
+ add_index "open_conference_ware_proposals", ["event_id"]
31
+ add_index "open_conference_ware_proposals", ["room_id"]
32
+ add_index "open_conference_ware_proposals", ["submitted_at"]
33
+ add_index "open_conference_ware_proposals", ["track_id"]
34
+ add_index "open_conference_ware_proposals", ["user_id"]
35
35
  end
36
36
  end
@@ -15,6 +15,6 @@ class CreateOpenConferenceWareRooms < ActiveRecord::Migration
15
15
  t.datetime "image_updated_at"
16
16
  end
17
17
 
18
- add_index "open_conference_ware_rooms", ["event_id"], name: "index_rooms_on_event_id", using: :btree
18
+ add_index "open_conference_ware_rooms", ["event_id"]
19
19
  end
20
20
  end
@@ -12,7 +12,7 @@ class CreateOpenConferenceWareScheduleItems < ActiveRecord::Migration
12
12
  t.datetime "updated_at"
13
13
  end
14
14
 
15
- add_index "open_conference_ware_schedule_items", ["event_id"], name: "index_schedule_items_on_event_id", using: :btree
16
- add_index "open_conference_ware_schedule_items", ["room_id"], name: "index_schedule_items_on_room_id", using: :btree
15
+ add_index "open_conference_ware_schedule_items", ["event_id"]
16
+ add_index "open_conference_ware_schedule_items", ["room_id"]
17
17
  end
18
18
  end
@@ -9,6 +9,6 @@ class CreateOpenConferenceWareSessionTypes < ActiveRecord::Migration
9
9
  t.datetime "updated_at"
10
10
  end
11
11
 
12
- add_index "open_conference_ware_session_types", ["event_id"], name: "index_session_types_on_event_id", using: :btree
12
+ add_index "open_conference_ware_session_types", ["event_id"]
13
13
  end
14
14
  end
@@ -10,6 +10,6 @@ class CreateOpenConferenceWareSnippets < ActiveRecord::Migration
10
10
  t.datetime "updated_at"
11
11
  end
12
12
 
13
- add_index "open_conference_ware_snippets", ["slug"], name: "index_snippets_on_slug", unique: true, using: :btree
13
+ add_index "open_conference_ware_snippets", ["slug"], unique: true
14
14
  end
15
15
  end
@@ -10,7 +10,7 @@ class CreateOpenConferenceWareTaggings < ActiveRecord::Migration
10
10
  t.datetime "created_at"
11
11
  end
12
12
 
13
- add_index "open_conference_ware_taggings", ["tag_id"], name: "index_taggings_on_tag_id", using: :btree
14
- add_index "open_conference_ware_taggings", ["taggable_id", "taggable_type", "context"], name: "index_taggings_on_taggable_id_and_taggable_type_and_context", using: :btree
13
+ add_index "open_conference_ware_taggings", ["tag_id"]
14
+ add_index "open_conference_ware_taggings", ["taggable_id", "taggable_type", "context"], name: "index_ocw_taggings_on_id_type_and_context"
15
15
  end
16
16
  end
@@ -10,6 +10,6 @@ class CreateOpenConferenceWareTracks < ActiveRecord::Migration
10
10
  t.text "excerpt"
11
11
  end
12
12
 
13
- add_index "open_conference_ware_tracks", ["event_id"], name: "index_tracks_on_event_id", using: :btree
13
+ add_index "open_conference_ware_tracks", ["event_id"]
14
14
  end
15
15
  end
@@ -4,5 +4,8 @@ class CreateProposalsUsersJoinTable < ActiveRecord::Migration
4
4
  t.integer :proposal_id
5
5
  t.integer :user_id
6
6
  end
7
+
8
+ add_index "open_conference_ware_proposals_users", ["proposal_id"]
9
+ add_index "open_conference_ware_proposals_users", ["user_id"]
7
10
  end
8
11
  end
@@ -1,3 +1,5 @@
1
+ require 'securerandom'
2
+
1
3
  class OpenConferenceWare::InstallGenerator < Rails::Generators::Base
2
4
  source_root File.expand_path('../templates', __FILE__)
3
5
 
@@ -15,10 +17,18 @@ class OpenConferenceWare::InstallGenerator < Rails::Generators::Base
15
17
  copy_file "omniauth_initializer.rb", "config/initializers/02_omniauth.rb"
16
18
  end
17
19
 
20
+ def generate_secrets_yml
21
+ template "secrets.yml.erb", "config/secrets.yml"
22
+ end
23
+
18
24
  def mount_engine
19
25
  route %Q{mount OpenConferenceWare::Engine => "#{mount_point}"}
20
26
  end
21
27
 
28
+ def replace_secret_token_initializer
29
+ template "secret_token.rb.erb", "config/initializers/secret_token.rb"
30
+ end
31
+
22
32
  def include_engine_seeds
23
33
  append_to_file "db/seeds.rb" do
24
34
  <<-SEED
@@ -6,6 +6,11 @@ OpenConferenceWare.configure do |config|
6
6
  # in some cases with a string like "/open_conference_ware"
7
7
  config.mount_point = '<%= mount_point %>'
8
8
 
9
+ # Mailer host
10
+ # The hostname to use when generating links in emails.
11
+ # This shoud be the domain where OCW is hosted.
12
+ config.mailer_host = 'ocw.local'
13
+
9
14
  # Event name, or organization running events:
10
15
  config.organization = 'Open Source Bridge'
11
16
 
@@ -22,6 +27,21 @@ OpenConferenceWare.configure do |config|
22
27
  # TODO: Setting the current event here is a short-term hack and will be replaced shortly with a Site record that tracks the current event in the database and provides a way to set it through an admin web UI.
23
28
  # config.current_event_slug = '2012'
24
29
 
30
+ ##[ Secrets ]##
31
+ # Some are sensitive and should not be checked in to version control.
32
+ # These are loaded from config/secrets.yml, which should be privately copied to your
33
+ # server and linked by your deployment process.
34
+
35
+ secrets_file = Rails.root.join('config', 'secrets.yml')
36
+ if File.exists?(secrets_file)
37
+ secrets = YAML.load_file(secrets_file)
38
+ config.administrator_email = secrets["administrator_email"]
39
+ config.comments_secret = secrets["comments_secret"]
40
+ config.secret_key_base = secrets["secret_key_base"]
41
+ else
42
+ raise "Oops, config/secrets.yml could not be found."
43
+ end
44
+
25
45
  ##[ OCW Features ]##
26
46
  # Many features of OpenConferenceWare can be toggled via these settings
27
47
 
@@ -64,13 +84,16 @@ OpenConferenceWare.configure do |config|
64
84
  # Can users add comments until a toggle is flipped on the event?
65
85
  config.have_event_proposal_comments_after_deadline = true
66
86
 
87
+ # Can users note their favorite sessions?
88
+ config.have_user_favorites = true
89
+
67
90
  # What audience experience levels can a proposal be classified as?
68
91
  # The list will be displayed on the form in the order defined below.
69
92
  # The "slug" is the unique key defining the particular audience level, while
70
93
  # the "label" is the human-readable value displayed.
71
94
  #
72
95
  # Set this to a blank array to disable audience levels
73
- config.proposal_audience_levels ||= [
96
+ config.proposal_audience_levels = [
74
97
  {slug: 'a', label: 'Beginner'},
75
98
  {slug: 'b', label: 'Intermediate'},
76
99
  {slug: 'c', label: 'Advanced'}
@@ -106,5 +129,4 @@ OpenConferenceWare.configure do |config|
106
129
  # NOTE: The current default theme never displays any breadcrumbs, but infrastructure exists to support them.
107
130
  #
108
131
  # config.breadcrumbs = [['Home', 'http://openconferenceware.org']]
109
-
110
132
  end