open_conference_ware 1.0.0.pre1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (471) hide show
  1. data.tar.gz.sig +0 -0
  2. data/.autotest +14 -0
  3. data/.coveralls.yml +1 -0
  4. data/.gitignore +21 -0
  5. data/.rspec +1 -0
  6. data/.travis.yml +18 -0
  7. data/CHANGES.md +280 -0
  8. data/CONTRIBUTORS.markdown +17 -0
  9. data/Gemfile +21 -0
  10. data/Gemfile.lock +296 -0
  11. data/Guardfile +24 -0
  12. data/LICENSE.txt +23 -0
  13. data/README.markdown +173 -0
  14. data/Rakefile +27 -0
  15. data/TODO.txt +22 -0
  16. data/app/assets/images/open_conference_ware/accept.png +0 -0
  17. data/app/assets/images/open_conference_ware/arrow-left.png +0 -0
  18. data/app/assets/images/open_conference_ware/arrow-out.png +0 -0
  19. data/app/assets/images/open_conference_ware/arrow-right.png +0 -0
  20. data/app/assets/images/open_conference_ware/arrow-up.png +0 -0
  21. data/app/assets/images/open_conference_ware/arrow_refresh.png +0 -0
  22. data/app/assets/images/open_conference_ware/comment.png +0 -0
  23. data/app/assets/images/open_conference_ware/comment_edit.png +0 -0
  24. data/app/assets/images/open_conference_ware/delete.png +0 -0
  25. data/app/assets/images/open_conference_ware/disk.png +0 -0
  26. data/app/assets/images/open_conference_ware/document-blank.png +0 -0
  27. data/app/assets/images/open_conference_ware/document.png +0 -0
  28. data/app/assets/images/open_conference_ware/edit.png +0 -0
  29. data/app/assets/images/open_conference_ware/extras/001_01.png +0 -0
  30. data/app/assets/images/open_conference_ware/extras/001_05.png +0 -0
  31. data/app/assets/images/open_conference_ware/extras/001_05x16.png +0 -0
  32. data/app/assets/images/open_conference_ware/extras/001_21.png +0 -0
  33. data/app/assets/images/open_conference_ware/extras/001_23.png +0 -0
  34. data/app/assets/images/open_conference_ware/extras/001_24.png +0 -0
  35. data/app/assets/images/open_conference_ware/extras/001_29.png +0 -0
  36. data/app/assets/images/open_conference_ware/extras/01.png +0 -0
  37. data/app/assets/images/open_conference_ware/extras/05.png +0 -0
  38. data/app/assets/images/open_conference_ware/extras/06.png +0 -0
  39. data/app/assets/images/open_conference_ware/extras/1.png +0 -0
  40. data/app/assets/images/open_conference_ware/extras/14.png +0 -0
  41. data/app/assets/images/open_conference_ware/extras/16.png +0 -0
  42. data/app/assets/images/open_conference_ware/extras/2.png +0 -0
  43. data/app/assets/images/open_conference_ware/extras/21.png +0 -0
  44. data/app/assets/images/open_conference_ware/extras/28.png +0 -0
  45. data/app/assets/images/open_conference_ware/extras/3.png +0 -0
  46. data/app/assets/images/open_conference_ware/extras/31.png +0 -0
  47. data/app/assets/images/open_conference_ware/extras/32.png +0 -0
  48. data/app/assets/images/open_conference_ware/extras/35.png +0 -0
  49. data/app/assets/images/open_conference_ware/extras/36.png +0 -0
  50. data/app/assets/images/open_conference_ware/extras/4.png +0 -0
  51. data/app/assets/images/open_conference_ware/extras/44.png +0 -0
  52. data/app/assets/images/open_conference_ware/extras/45.png +0 -0
  53. data/app/assets/images/open_conference_ware/extras/46.png +0 -0
  54. data/app/assets/images/open_conference_ware/extras/cancel.png +0 -0
  55. data/app/assets/images/open_conference_ware/extras/cancelx16.png +0 -0
  56. data/app/assets/images/open_conference_ware/extras/icon.trashcan.gif +0 -0
  57. data/app/assets/images/open_conference_ware/favorite.png +0 -0
  58. data/app/assets/images/open_conference_ware/feed.png +0 -0
  59. data/app/assets/images/open_conference_ware/heart.png +0 -0
  60. data/app/assets/images/open_conference_ware/house.png +0 -0
  61. data/app/assets/images/open_conference_ware/ignite_portland_header3_clear.png +0 -0
  62. data/app/assets/images/open_conference_ware/ignite_portland_header3_clear_cropped.png +0 -0
  63. data/app/assets/images/open_conference_ware/jquery.wysiwyg.gif +0 -0
  64. data/app/assets/images/open_conference_ware/lock.png +0 -0
  65. data/app/assets/images/open_conference_ware/new_window.gif +0 -0
  66. data/app/assets/images/open_conference_ware/openid-icon.gif +0 -0
  67. data/app/assets/images/open_conference_ware/pencil.png +0 -0
  68. data/app/assets/images/open_conference_ware/plus.png +0 -0
  69. data/app/assets/images/open_conference_ware/quote.png +0 -0
  70. data/app/assets/images/open_conference_ware/rails.png +0 -0
  71. data/app/assets/images/open_conference_ware/redx.png +0 -0
  72. data/app/assets/images/open_conference_ware/reset-fff.png +0 -0
  73. data/app/assets/images/open_conference_ware/spinner-big.gif +0 -0
  74. data/app/assets/images/open_conference_ware/spinner.gif +0 -0
  75. data/app/assets/images/open_conference_ware/star.png +0 -0
  76. data/app/assets/images/open_conference_ware/tag_blue.png +0 -0
  77. data/app/assets/images/open_conference_ware/time.png +0 -0
  78. data/app/assets/javascripts/open_conference_ware/application.js +18 -0
  79. data/app/assets/javascripts/open_conference_ware/base.js +15 -0
  80. data/app/assets/javascripts/open_conference_ware/favorites.js +76 -0
  81. data/app/assets/javascripts/open_conference_ware/ie.js +2 -0
  82. data/app/assets/javascripts/open_conference_ware/menu.js +47 -0
  83. data/app/assets/javascripts/open_conference_ware/persona.js +10 -0
  84. data/app/assets/javascripts/open_conference_ware/proposals.js +208 -0
  85. data/app/assets/javascripts/open_conference_ware/schedule.js +20 -0
  86. data/app/assets/javascripts/open_conference_ware/spinner.js +11 -0
  87. data/app/assets/javascripts/open_conference_ware/util.js +23 -0
  88. data/app/assets/stylesheets/open_conference_ware/application.css +8 -0
  89. data/app/assets/stylesheets/open_conference_ware/common.css.scss +491 -0
  90. data/app/assets/stylesheets/open_conference_ware/custom.css.scss +1033 -0
  91. data/app/assets/stylesheets/open_conference_ware/scaffold.css +54 -0
  92. data/app/controllers/open_conference_ware/application_controller.rb +488 -0
  93. data/app/controllers/open_conference_ware/authentications_controller.rb +42 -0
  94. data/app/controllers/open_conference_ware/comments_controller.rb +86 -0
  95. data/app/controllers/open_conference_ware/events_controller.rb +36 -0
  96. data/app/controllers/open_conference_ware/manage/events_controller.rb +157 -0
  97. data/app/controllers/open_conference_ware/manage/snippets_controller.rb +110 -0
  98. data/app/controllers/open_conference_ware/proposals_controller.rb +521 -0
  99. data/app/controllers/open_conference_ware/rooms_controller.rb +130 -0
  100. data/app/controllers/open_conference_ware/schedule_items_controller.rb +128 -0
  101. data/app/controllers/open_conference_ware/selector_votes_controller.rb +71 -0
  102. data/app/controllers/open_conference_ware/session_types_controller.rb +123 -0
  103. data/app/controllers/open_conference_ware/tracks_controller.rb +118 -0
  104. data/app/controllers/open_conference_ware/user_favorites_controller.rb +68 -0
  105. data/app/controllers/open_conference_ware/users_controller.rb +120 -0
  106. data/app/helpers/open_conference_ware/application_helper.rb +167 -0
  107. data/app/helpers/open_conference_ware/authentications_helper.rb +25 -0
  108. data/app/helpers/open_conference_ware/cache_if_helper.rb +13 -0
  109. data/app/helpers/open_conference_ware/display_link_to_helper.rb +25 -0
  110. data/app/helpers/open_conference_ware/display_textile_for_helper.rb +11 -0
  111. data/app/helpers/open_conference_ware/field_annotation_helper.rb +11 -0
  112. data/app/helpers/open_conference_ware/focus_helper.rb +16 -0
  113. data/app/helpers/open_conference_ware/localcss_helper.rb +10 -0
  114. data/app/helpers/open_conference_ware/page_title_helper.rb +17 -0
  115. data/app/helpers/open_conference_ware/proposals_helper.rb +54 -0
  116. data/app/helpers/open_conference_ware/rooms_helper.rb +5 -0
  117. data/app/helpers/open_conference_ware/scroll_to_helper.rb +15 -0
  118. data/app/helpers/open_conference_ware/session_types_helper.rb +5 -0
  119. data/app/helpers/open_conference_ware/snippets_helper.rb +36 -0
  120. data/app/helpers/open_conference_ware/time_range_helper.rb +198 -0
  121. data/app/helpers/open_conference_ware/tracks_helper.rb +9 -0
  122. data/app/helpers/open_conference_ware/user_favorites_helper.rb +15 -0
  123. data/app/mailers/open_conference_ware/speaker_mailer.rb +51 -0
  124. data/app/mixins/open_conference_ware/breadcrumbs_mixin.rb +76 -0
  125. data/app/mixins/open_conference_ware/cache_lookups_mixin.rb +128 -0
  126. data/app/mixins/open_conference_ware/faux_routes_mixin.rb +83 -0
  127. data/app/mixins/open_conference_ware/normalize_url_mixin.rb +40 -0
  128. data/app/mixins/open_conference_ware/public_attributes_mixin.rb +62 -0
  129. data/app/mixins/open_conference_ware/schedule_overlaps_mixin.rb +12 -0
  130. data/app/mixins/open_conference_ware/settings_checkers_mixin.rb +50 -0
  131. data/app/mixins/open_conference_ware/simple_slug_mixin.rb +26 -0
  132. data/app/models/open_conference_ware/authentication.rb +47 -0
  133. data/app/models/open_conference_ware/base.rb +6 -0
  134. data/app/models/open_conference_ware/comment.rb +26 -0
  135. data/app/models/open_conference_ware/event.rb +227 -0
  136. data/app/models/open_conference_ware/proposal.rb +625 -0
  137. data/app/models/open_conference_ware/room.rb +42 -0
  138. data/app/models/open_conference_ware/schedule.rb +216 -0
  139. data/app/models/open_conference_ware/schedule_item.rb +55 -0
  140. data/app/models/open_conference_ware/selector_vote.rb +22 -0
  141. data/app/models/open_conference_ware/session_type.rb +33 -0
  142. data/app/models/open_conference_ware/snippet.rb +58 -0
  143. data/app/models/open_conference_ware/track.rb +51 -0
  144. data/app/models/open_conference_ware/user.rb +262 -0
  145. data/app/models/open_conference_ware/user_favorite.rb +42 -0
  146. data/app/observers/open_conference_ware/cache_watcher.rb +42 -0
  147. data/app/views/layouts/open_conference_ware/_header.html.erb +106 -0
  148. data/app/views/layouts/open_conference_ware/application.atom.erb +1 -0
  149. data/app/views/layouts/open_conference_ware/application.html.erb +126 -0
  150. data/app/views/layouts/open_conference_ware/scaffold.html.erb +21 -0
  151. data/app/views/open_conference_ware/404.html.erb +8 -0
  152. data/app/views/open_conference_ware/422.html.erb +11 -0
  153. data/app/views/open_conference_ware/500.html.erb +11 -0
  154. data/app/views/open_conference_ware/_email_link.html.erb +24 -0
  155. data/app/views/open_conference_ware/_google_analytics.html.erb +9 -0
  156. data/app/views/open_conference_ware/authentications/_developer.html.erb +7 -0
  157. data/app/views/open_conference_ware/authentications/_openid.html.erb +11 -0
  158. data/app/views/open_conference_ware/authentications/_persona.html.erb +17 -0
  159. data/app/views/open_conference_ware/authentications/sign_in.html.erb +12 -0
  160. data/app/views/open_conference_ware/comments/_list.html.erb +31 -0
  161. data/app/views/open_conference_ware/comments/index.atom.builder +25 -0
  162. data/app/views/open_conference_ware/comments/index.html.erb +3 -0
  163. data/app/views/open_conference_ware/events/index.html.erb +9 -0
  164. data/app/views/open_conference_ware/events/show.html.erb +0 -0
  165. data/app/views/open_conference_ware/events/speakers.html.erb +7 -0
  166. data/app/views/open_conference_ware/manage/events/_form.html.erb +107 -0
  167. data/app/views/open_conference_ware/manage/events/edit.html.erb +3 -0
  168. data/app/views/open_conference_ware/manage/events/index.html.erb +41 -0
  169. data/app/views/open_conference_ware/manage/events/new.html.erb +3 -0
  170. data/app/views/open_conference_ware/manage/events/proposals.html.erb +133 -0
  171. data/app/views/open_conference_ware/manage/events/show.html.erb +181 -0
  172. data/app/views/open_conference_ware/manage/snippets/_form.html.erb +30 -0
  173. data/app/views/open_conference_ware/manage/snippets/edit.html.erb +3 -0
  174. data/app/views/open_conference_ware/manage/snippets/index.html.erb +34 -0
  175. data/app/views/open_conference_ware/manage/snippets/new.html.erb +3 -0
  176. data/app/views/open_conference_ware/manage/snippets/show.html.erb +32 -0
  177. data/app/views/open_conference_ware/proposals/_admin_controls.html.erb +33 -0
  178. data/app/views/open_conference_ware/proposals/_form.html.erb +381 -0
  179. data/app/views/open_conference_ware/proposals/_list.html.erb +164 -0
  180. data/app/views/open_conference_ware/proposals/_list_concise.html.erb +93 -0
  181. data/app/views/open_conference_ware/proposals/_manage_speakers.html.erb +30 -0
  182. data/app/views/open_conference_ware/proposals/_room_control.html.erb +21 -0
  183. data/app/views/open_conference_ware/proposals/_schedule_block.html.erb +8 -0
  184. data/app/views/open_conference_ware/proposals/_schedule_control.html.erb +13 -0
  185. data/app/views/open_conference_ware/proposals/_search_speakers.html.erb +20 -0
  186. data/app/views/open_conference_ware/proposals/_sub_list.html.erb +65 -0
  187. data/app/views/open_conference_ware/proposals/_sub_list_for_kind.html.erb +31 -0
  188. data/app/views/open_conference_ware/proposals/_transition_control.html.erb +16 -0
  189. data/app/views/open_conference_ware/proposals/create.html.erb +29 -0
  190. data/app/views/open_conference_ware/proposals/edit.html.erb +7 -0
  191. data/app/views/open_conference_ware/proposals/index.atom.builder +63 -0
  192. data/app/views/open_conference_ware/proposals/index.html.erb +46 -0
  193. data/app/views/open_conference_ware/proposals/new.html.erb +3 -0
  194. data/app/views/open_conference_ware/proposals/schedule.html.erb +108 -0
  195. data/app/views/open_conference_ware/proposals/sessions_index_terse.html.erb +22 -0
  196. data/app/views/open_conference_ware/proposals/show.html.erb +316 -0
  197. data/app/views/open_conference_ware/proposals/stats.html.erb +72 -0
  198. data/app/views/open_conference_ware/rooms/_form.html.erb +36 -0
  199. data/app/views/open_conference_ware/rooms/edit.html.erb +3 -0
  200. data/app/views/open_conference_ware/rooms/index.html.erb +13 -0
  201. data/app/views/open_conference_ware/rooms/new.html.erb +3 -0
  202. data/app/views/open_conference_ware/rooms/show.html.erb +27 -0
  203. data/app/views/open_conference_ware/schedule_items/_form.html.erb +35 -0
  204. data/app/views/open_conference_ware/schedule_items/edit.html.erb +3 -0
  205. data/app/views/open_conference_ware/schedule_items/index.html.erb +31 -0
  206. data/app/views/open_conference_ware/schedule_items/new.html.erb +3 -0
  207. data/app/views/open_conference_ware/schedule_items/show.html.erb +30 -0
  208. data/app/views/open_conference_ware/selector_votes/index.html.erb +81 -0
  209. data/app/views/open_conference_ware/session_types/_form.html.erb +23 -0
  210. data/app/views/open_conference_ware/session_types/edit.html.erb +3 -0
  211. data/app/views/open_conference_ware/session_types/index.html.erb +18 -0
  212. data/app/views/open_conference_ware/session_types/new.html.erb +3 -0
  213. data/app/views/open_conference_ware/session_types/show.html.erb +14 -0
  214. data/app/views/open_conference_ware/speaker_mailer/speaker_email.text.erb +14 -0
  215. data/app/views/open_conference_ware/tracks/_colors.css.erb +7 -0
  216. data/app/views/open_conference_ware/tracks/_form.html.erb +36 -0
  217. data/app/views/open_conference_ware/tracks/edit.html.erb +3 -0
  218. data/app/views/open_conference_ware/tracks/index.html.erb +25 -0
  219. data/app/views/open_conference_ware/tracks/new.html.erb +3 -0
  220. data/app/views/open_conference_ware/tracks/show.html.erb +19 -0
  221. data/app/views/open_conference_ware/user_favorites/index.html.erb +12 -0
  222. data/app/views/open_conference_ware/users/_account_box.html.erb +10 -0
  223. data/app/views/open_conference_ware/users/_block.html.erb +80 -0
  224. data/app/views/open_conference_ware/users/_list.html.erb +17 -0
  225. data/app/views/open_conference_ware/users/edit.html.erb +73 -0
  226. data/app/views/open_conference_ware/users/index.html.erb +28 -0
  227. data/app/views/open_conference_ware/users/new.html.erb +7 -0
  228. data/app/views/open_conference_ware/users/proposals.html.erb +24 -0
  229. data/app/views/open_conference_ware/users/show.html.erb +5 -0
  230. data/app/views/open_conference_ware/welcome/test.html.haml +8 -0
  231. data/bin/rails +8 -0
  232. data/ci/Gemfile.ci +13 -0
  233. data/ci/copy_database_config.rb +6 -0
  234. data/ci/database.mysql.yml +5 -0
  235. data/ci/database.postgresql.yml +4 -0
  236. data/ci/database.sqlite.yml +5 -0
  237. data/config/initializers/acts_as_taggable_on.rb +2 -0
  238. data/config/initializers/date_time_formats.rb +9 -0
  239. data/config/routes.rb +74 -0
  240. data/db/migrate/20131203235128_create_open_conference_ware_authentications.rb +14 -0
  241. data/db/migrate/20131203235216_create_open_conference_ware_comments.rb +14 -0
  242. data/db/migrate/20131203235418_create_open_conference_ware_events.rb +27 -0
  243. data/db/migrate/20131203235524_create_open_conference_ware_proposals.rb +36 -0
  244. data/db/migrate/20131203235723_create_open_conference_ware_rooms.rb +20 -0
  245. data/db/migrate/20131203235831_create_open_conference_ware_schedule_items.rb +18 -0
  246. data/db/migrate/20131203235910_create_open_conference_ware_selector_votes.rb +10 -0
  247. data/db/migrate/20131203235934_create_open_conference_ware_session_types.rb +14 -0
  248. data/db/migrate/20131204000008_create_open_conference_ware_snippets.rb +15 -0
  249. data/db/migrate/20131204000048_create_open_conference_ware_taggings.rb +16 -0
  250. data/db/migrate/20131204000129_create_open_conference_ware_tags.rb +7 -0
  251. data/db/migrate/20131204000147_create_open_conference_ware_tracks.rb +15 -0
  252. data/db/migrate/20131204000230_create_open_conference_ware_user_favorites.rb +10 -0
  253. data/db/migrate/20131204000251_create_open_conference_ware_users.rb +24 -0
  254. data/db/migrate/20131204000355_create_proposals_users_join_table.rb +8 -0
  255. data/db/seeds.rb +31 -0
  256. data/features/comment_create.feature +9 -0
  257. data/features/comment_destroy.feature +22 -0
  258. data/features/comment_new.feature +22 -0
  259. data/features/step_definitions/authentication_steps.rb +22 -0
  260. data/features/step_definitions/comment_create_steps.rb +5 -0
  261. data/features/step_definitions/comment_destroy_steps.rb +13 -0
  262. data/features/step_definitions/comment_new_steps.rb +41 -0
  263. data/features/step_definitions/notification_steps.rb +3 -0
  264. data/features/step_definitions/web_steps.rb +263 -0
  265. data/features/support/env.rb +58 -0
  266. data/features/support/helpers.rb +17 -0
  267. data/features/support/paths.rb +35 -0
  268. data/gem-public_cert.pem +22 -0
  269. data/lib/defer_proxy.rb +127 -0
  270. data/lib/ext/color_rgb_serializer_fix.rb +18 -0
  271. data/lib/ext/string_possessiveize.rb +7 -0
  272. data/lib/ext/vpim_icalendar_extra_properties.rb +25 -0
  273. data/lib/generators/open_conference_ware/install/USAGE +12 -0
  274. data/lib/generators/open_conference_ware/install/install_generator.rb +35 -0
  275. data/lib/generators/open_conference_ware/install/templates/config_initializer.rb +110 -0
  276. data/lib/generators/open_conference_ware/install/templates/omniauth_initializer.rb +33 -0
  277. data/lib/open_conference_ware.rb +156 -0
  278. data/lib/open_conference_ware/dependencies.rb +38 -0
  279. data/lib/open_conference_ware/engine.rb +38 -0
  280. data/lib/open_conference_ware/omni_auth_builder.rb +8 -0
  281. data/lib/open_conference_ware/version.rb +3 -0
  282. data/lib/rwikibot_page_drone.rb +70 -0
  283. data/lib/tasks/.gitkeep +0 -0
  284. data/lib/tasks/audio.rake +53 -0
  285. data/lib/tasks/cucumber.rake +65 -0
  286. data/lib/tasks/export.rake +170 -0
  287. data/lib/tasks/mediawiki.rake +96 -0
  288. data/lib/tasks/open_conference_ware_tasks.rake +16 -0
  289. data/lib/tasks/schedule.rake +103 -0
  290. data/lib/tasks/snippets.rake +23 -0
  291. data/open_conference_ware.gemspec +67 -0
  292. data/original_graphics/favorite.psd +0 -0
  293. data/spec/controllers/open_conference_ware/application_controller_spec.rb +309 -0
  294. data/spec/controllers/open_conference_ware/authentications_controller_spec.rb +87 -0
  295. data/spec/controllers/open_conference_ware/comments_controller_spec.rb +146 -0
  296. data/spec/controllers/open_conference_ware/events_controller_spec.rb +102 -0
  297. data/spec/controllers/open_conference_ware/manage_events_controller_spec.rb +103 -0
  298. data/spec/controllers/open_conference_ware/proposals_controller_spec.rb +1273 -0
  299. data/spec/controllers/open_conference_ware/rooms_controller_spec.rb +190 -0
  300. data/spec/controllers/open_conference_ware/selector_votes_controller_spec.rb +263 -0
  301. data/spec/controllers/open_conference_ware/session_types_controller_spec.rb +190 -0
  302. data/spec/controllers/open_conference_ware/sessions_routing_spec.rb +13 -0
  303. data/spec/controllers/open_conference_ware/tracks_controller_spec.rb +190 -0
  304. data/spec/controllers/open_conference_ware/user_favorites_controller_spec.rb +127 -0
  305. data/spec/controllers/open_conference_ware/users_controller_spec.rb +166 -0
  306. data/spec/dummy/README.rdoc +28 -0
  307. data/spec/dummy/Rakefile +6 -0
  308. data/spec/dummy/app/assets/images/.keep +0 -0
  309. data/spec/dummy/app/assets/javascripts/application.js +13 -0
  310. data/spec/dummy/app/assets/stylesheets/application.css +13 -0
  311. data/spec/dummy/app/controllers/application_controller.rb +5 -0
  312. data/spec/dummy/app/controllers/concerns/.keep +0 -0
  313. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  314. data/spec/dummy/app/mailers/.keep +0 -0
  315. data/spec/dummy/app/models/.keep +0 -0
  316. data/spec/dummy/app/models/concerns/.keep +0 -0
  317. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  318. data/spec/dummy/bin/bundle +3 -0
  319. data/spec/dummy/bin/rails +4 -0
  320. data/spec/dummy/bin/rake +4 -0
  321. data/spec/dummy/config.ru +4 -0
  322. data/spec/dummy/config/application.rb +30 -0
  323. data/spec/dummy/config/boot.rb +5 -0
  324. data/spec/dummy/config/database.yml +25 -0
  325. data/spec/dummy/config/environment.rb +5 -0
  326. data/spec/dummy/config/environments/development.rb +29 -0
  327. data/spec/dummy/config/environments/production.rb +80 -0
  328. data/spec/dummy/config/environments/test.rb +36 -0
  329. data/spec/dummy/config/initializers/01_open_conference_ware.rb +110 -0
  330. data/spec/dummy/config/initializers/02_omniauth.rb +17 -0
  331. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  332. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  333. data/spec/dummy/config/initializers/inflections.rb +16 -0
  334. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  335. data/spec/dummy/config/initializers/secret_token.rb +12 -0
  336. data/spec/dummy/config/initializers/session_store.rb +3 -0
  337. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  338. data/spec/dummy/config/locales/en.yml +23 -0
  339. data/spec/dummy/config/routes.rb +3 -0
  340. data/spec/dummy/db/schema.rb +219 -0
  341. data/spec/dummy/db/seeds.rb +10 -0
  342. data/spec/dummy/lib/assets/.keep +0 -0
  343. data/spec/dummy/log/.keep +0 -0
  344. data/spec/dummy/public/404.html +58 -0
  345. data/spec/dummy/public/422.html +58 -0
  346. data/spec/dummy/public/500.html +57 -0
  347. data/spec/dummy/public/favicon.ico +0 -0
  348. data/spec/factories/authentication_factory.rb +16 -0
  349. data/spec/factories/common_factory.rb +4 -0
  350. data/spec/factories/event_factory.rb +26 -0
  351. data/spec/factories/proposal_factory.rb +57 -0
  352. data/spec/factories/proposal_user_factory.rb +7 -0
  353. data/spec/factories/room_factory.rb +11 -0
  354. data/spec/factories/schedule_item_factory.rb +13 -0
  355. data/spec/factories/session_types_factory.rb +10 -0
  356. data/spec/factories/snippet_factory.rb +7 -0
  357. data/spec/factories/track_factory.rb +12 -0
  358. data/spec/factories/user_factory.rb +22 -0
  359. data/spec/factories/user_favorite_factory.rb +7 -0
  360. data/spec/features/sign_in_spec.rb +11 -0
  361. data/spec/features/snippets_spec.rb +38 -0
  362. data/spec/fixtures/open_conference_ware_comments.yml +27 -0
  363. data/spec/fixtures/open_conference_ware_events.yml +56 -0
  364. data/spec/fixtures/open_conference_ware_proposals.yml +256 -0
  365. data/spec/fixtures/open_conference_ware_rooms.yml +13 -0
  366. data/spec/fixtures/open_conference_ware_schedule_items.yml +23 -0
  367. data/spec/fixtures/open_conference_ware_session_types.yml +19 -0
  368. data/spec/fixtures/open_conference_ware_snippets.yml +62 -0
  369. data/spec/fixtures/open_conference_ware_tracks.yml +65 -0
  370. data/spec/fixtures/open_conference_ware_user_favorites.yml +7 -0
  371. data/spec/fixtures/open_conference_ware_users.yml +87 -0
  372. data/spec/helpers/open_conference_ware/application_helper_spec.rb +58 -0
  373. data/spec/helpers/open_conference_ware/authentications_helper_spec.rb +15 -0
  374. data/spec/helpers/open_conference_ware/display_link_to_helper_spec.rb +52 -0
  375. data/spec/helpers/open_conference_ware/proposals_helper_spec.rb +32 -0
  376. data/spec/helpers/open_conference_ware/rooms_helper_spec.rb +11 -0
  377. data/spec/helpers/open_conference_ware/session_types_helper_spec.rb +15 -0
  378. data/spec/helpers/open_conference_ware/time_range_helper_spec.rb +56 -0
  379. data/spec/helpers/open_conference_ware/tracks_helper_spec.rb +11 -0
  380. data/spec/helpers/open_conference_ware/user_favorites_helper_spec.rb +11 -0
  381. data/spec/integration/open_conference_ware/cache_lookups_mixin_spec.rb +122 -0
  382. data/spec/mixins/open_conference_ware/normalize_url_mixin_spec.rb +65 -0
  383. data/spec/models/open_conference_ware/authentication_spec.rb +67 -0
  384. data/spec/models/open_conference_ware/event_spec.rb +211 -0
  385. data/spec/models/open_conference_ware/proposal_spec.rb +606 -0
  386. data/spec/models/open_conference_ware/room_spec.rb +14 -0
  387. data/spec/models/open_conference_ware/schedule_item_spec.rb +12 -0
  388. data/spec/models/open_conference_ware/schedule_spec.rb +358 -0
  389. data/spec/models/open_conference_ware/selector_vote_spec.rb +12 -0
  390. data/spec/models/open_conference_ware/session_type_spec.rb +15 -0
  391. data/spec/models/open_conference_ware/snippet_spec.rb +13 -0
  392. data/spec/models/open_conference_ware/speaker_mailer_spec.rb +91 -0
  393. data/spec/models/open_conference_ware/track_spec.rb +36 -0
  394. data/spec/models/open_conference_ware/user_favorite_spec.rb +41 -0
  395. data/spec/models/open_conference_ware/user_spec.rb +77 -0
  396. data/spec/ocw_config.rb +76 -0
  397. data/spec/rcov.opts +2 -0
  398. data/spec/spec.opts +3 -0
  399. data/spec/spec_helper.rb +55 -0
  400. data/spec/spec_helper_customizations.rb +125 -0
  401. data/spec/support/add_all_helpers_to_view.rb +24 -0
  402. data/spec/support/authenticated_test_helper.rb +27 -0
  403. data/spec/support/fixture_shortcuts.rb +18 -0
  404. data/spec/support/omniauth.rb +34 -0
  405. data/spec/support/valid_params_extraction.rb +15 -0
  406. data/spec/views/open_conference_ware/proposals/_room_control.html.erb_spec.rb +23 -0
  407. data/spec/views/open_conference_ware/proposals/_transition_control.html.erb_spec.rb +14 -0
  408. data/spec/views/open_conference_ware/proposals/show.html.erb_spec.rb +128 -0
  409. data/spec/views/open_conference_ware/rooms/index.html.erb_spec.rb +19 -0
  410. data/spec/views/open_conference_ware/rooms/show.html.erb_spec.rb +15 -0
  411. data/spec/views/open_conference_ware/selector_votes/index.html.erb_spec.rb +41 -0
  412. data/spec/views/open_conference_ware/session_types/edit.html.erb_spec.rb +25 -0
  413. data/spec/views/open_conference_ware/session_types/index.html.erb_spec.rb +19 -0
  414. data/spec/views/open_conference_ware/session_types/new.html.erb_spec.rb +24 -0
  415. data/spec/views/open_conference_ware/session_types/show.html.erb_spec.rb +18 -0
  416. data/spec/views/open_conference_ware/tracks/edit.html.erb_spec.rb +25 -0
  417. data/spec/views/open_conference_ware/tracks/index.html.erb_spec.rb +56 -0
  418. data/spec/views/open_conference_ware/tracks/new.html.erb_spec.rb +26 -0
  419. data/spec/views/open_conference_ware/tracks/show.html.erb_spec.rb +23 -0
  420. data/spec/views/open_conference_ware/user_favorites/index.html.erb_spec.rb +29 -0
  421. data/spec/views/open_conference_ware/users/index_spec.rb +24 -0
  422. data/util/add_id3_tags_to_mp3.rb +57 -0
  423. data/util/schedule_demo.rb +36 -0
  424. data/util/seed_schedule.rb +61 -0
  425. data/util/sessions_to_lanyrd.rb +166 -0
  426. data/util/transfer_schedule_items.rb +25 -0
  427. data/util/update_proposal_status_from_voting_spreadsheet.rb +26 -0
  428. data/util/user_favorites_contention_report.rb +42 -0
  429. data/util/user_favorites_contention_report.sh +9 -0
  430. data/vendor/assets/fonts/glyphicons-halflings-regular.eot +0 -0
  431. data/vendor/assets/fonts/glyphicons-halflings-regular.svg +228 -0
  432. data/vendor/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
  433. data/vendor/assets/fonts/glyphicons-halflings-regular.woff +0 -0
  434. data/vendor/assets/images/farbtastic/marker.png +0 -0
  435. data/vendor/assets/images/farbtastic/mask.png +0 -0
  436. data/vendor/assets/images/farbtastic/wheel.png +0 -0
  437. data/vendor/assets/images/idselector/aol.ico +0 -0
  438. data/vendor/assets/images/idselector/arrow.gif +0 -0
  439. data/vendor/assets/images/idselector/arrow_white_back.png +0 -0
  440. data/vendor/assets/images/idselector/arrow_white_forward.png +0 -0
  441. data/vendor/assets/images/idselector/blogger.ico +0 -0
  442. data/vendor/assets/images/idselector/claimid.ico +0 -0
  443. data/vendor/assets/images/idselector/flickr.ico +0 -0
  444. data/vendor/assets/images/idselector/google.ico +0 -0
  445. data/vendor/assets/images/idselector/lj.ico +0 -0
  446. data/vendor/assets/images/idselector/myopenid.ico +0 -0
  447. data/vendor/assets/images/idselector/openid.ico +0 -0
  448. data/vendor/assets/images/idselector/technorati.ico +0 -0
  449. data/vendor/assets/images/idselector/verisign.ico +0 -0
  450. data/vendor/assets/images/idselector/vidoop2.ico +0 -0
  451. data/vendor/assets/images/idselector/vox.ico +0 -0
  452. data/vendor/assets/images/idselector/yahoo.ico +0 -0
  453. data/vendor/assets/javascripts/audiojs/audio.min.js +23 -0
  454. data/vendor/assets/javascripts/audiojs/audiojs.swf +0 -0
  455. data/vendor/assets/javascripts/audiojs/player-graphics.gif +0 -0
  456. data/vendor/assets/javascripts/bootstrap.js +1999 -0
  457. data/vendor/assets/javascripts/farbtastic.js +329 -0
  458. data/vendor/assets/javascripts/html5shiv.js +8 -0
  459. data/vendor/assets/javascripts/idselector.js +538 -0
  460. data/vendor/assets/javascripts/idselector~original.js +532 -0
  461. data/vendor/assets/javascripts/jquery-migrate-1.2.1.js +521 -0
  462. data/vendor/assets/javascripts/jquery.localScroll.js +106 -0
  463. data/vendor/assets/javascripts/jquery.scrollTo.js +174 -0
  464. data/vendor/assets/javascripts/respond.min.js +6 -0
  465. data/vendor/assets/stylesheets/bootstrap-theme.css +384 -0
  466. data/vendor/assets/stylesheets/bootstrap.css +6805 -0
  467. data/vendor/assets/stylesheets/farbtastic.css.scss +38 -0
  468. data/vendor/assets/stylesheets/persona-buttons.css +229 -0
  469. data/vendor/assets/stylesheets/reset-fonts-grids.css +7 -0
  470. metadata +1174 -0
  471. metadata.gz.sig +0 -0
@@ -0,0 +1,22 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIDkjCCAnqgAwIBAgIBATANBgkqhkiG9w0BAQUFADBHMQwwCgYDVQQDDANnZW0x
3
+ IjAgBgoJkiaJk/IsZAEZFhJvcGVuY29uZmVyZW5jZXdhcmUxEzARBgoJkiaJk/Is
4
+ ZAEZFgNvcmcwHhcNMTMxMjEyMDIyNjM5WhcNMTQxMjEyMDIyNjM5WjBHMQwwCgYD
5
+ VQQDDANnZW0xIjAgBgoJkiaJk/IsZAEZFhJvcGVuY29uZmVyZW5jZXdhcmUxEzAR
6
+ BgoJkiaJk/IsZAEZFgNvcmcwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
7
+ AQCrKCjMparnINUvpDuhwIUffdTrCmiqSbstrUKz58mshYWqhJNbq8LLJvfxW+Np
8
+ DWNMj6UgQTHIIv9r3qSb+FptleTwhFCHkymdeie6fARiB3t7eyKUXOqkKACrFPC1
9
+ yTsBIhNjnVIWceuwskdH6kq9d0je9MUy3GH27U4x4UwvZ+zhWFyEbax7sIwYmTkG
10
+ iF0vj1NF4FZcGJMJ8QaQz2Y0eDNcEI9ISmuddNU6YKaXOFcBraIh1IW6XNXgPeAh
11
+ 59NrSYUfZGMtpXnTsGpDbBNF+QDz8WNJKLB+EpYmbuMZxrQSBKGw7DCf4KbZlKBF
12
+ hDMrAJbHMcCqB98z4LbsGb9NAgMBAAGjgYgwgYUwCQYDVR0TBAIwADALBgNVHQ8E
13
+ BAMCBLAwHQYDVR0OBBYEFOJQecIZy19aGG/NCAzUKmUvEDzhMCUGA1UdEQQeMByB
14
+ GmdlbUBvcGVuY29uZmVyZW5jZXdhcmUub3JnMCUGA1UdEgQeMByBGmdlbUBvcGVu
15
+ Y29uZmVyZW5jZXdhcmUub3JnMA0GCSqGSIb3DQEBBQUAA4IBAQBiKvbxnIBzzbsV
16
+ ryx8JpM1pDK9DOw80GD4Kq/LoKeJYq5VtVomHHcEX0Rh7xAXHvMQ/8CSkukIrL/T
17
+ sbYUZsokm5OtEgL2vX7fov41UtjFeKbrJKmcX14PiDFT8CHDUoEhCU8ExNPNcysa
18
+ jMcibSoXrceNHSW4ricYcgaGlAGfZM4mt6/T5OESUngpqMJhBf1v20yg/jdm0aAm
19
+ mT62ObTTt1RZISVE9N2Pl+IFFrUHbHo2nfwZOb1o9Zf/3+oudJ8X3B7mh0S4paOk
20
+ TRyJkJYSUkgdnAFMIkY6+/N+TH5gA0PxvBsQ2XxTonoWJrQtFkkgdEuYrMQSWXyf
21
+ 1C3tWJJ9
22
+ -----END CERTIFICATE-----
@@ -0,0 +1,127 @@
1
+ # = DeferProxy
2
+ #
3
+ # Create a proxy for lazy-loading objects.
4
+ #
5
+ # == Example for Ruby
6
+ #
7
+ # In the example below, we create an @array variable that behaves just like an
8
+ # Array instance, but is actually a proxy that will return array content. The
9
+ # proxy materialies this content the first time that an instance method is
10
+ # called on it:
11
+ #
12
+ # # Create a proxy using either the DeferProxy class or Defer method:
13
+ # @array = DeferProxy.new { p "zzz"; sleep 1; p "yawn"; [1,2,3] }
14
+ # @array = Defer { p "zzz"; sleep 1; p "yawn"; [1,2,3] }
15
+ #
16
+ # # Access proxy to materialize results, it will execute slowly:
17
+ # @array.size
18
+ # # "zzz"
19
+ # # "yawn"
20
+ # # => 3
21
+ #
22
+ # # Access proxy again, it will return materialized results immediately:
23
+ # @array.size
24
+ # # => 3
25
+ #
26
+ # == Example for Rails
27
+ #
28
+ # Deferred-instantiation proxies are useful in Rails applications because they
29
+ # help avoid slow operations while preserving MVC encapsulation.
30
+ #
31
+ # In the example below, the +Record+ class has a ::slow_operation method that
32
+ # we wish to avoid calling if possible. We create a proxy called @records in
33
+ # the #index controller action to describe how to fetch data. The view then
34
+ # uses the @records object within a #cache block that captures HTML emitted
35
+ # within that scope. If the view finds the fragment cache for this block, then
36
+ # the @records proxy object will never be used and the ::slow_operation never
37
+ # called, thus making the action much faster.
38
+ #
39
+ # # Model
40
+ # class Record < ActiveRecord::Base
41
+ # def self.slow_operation
42
+ # puts "Performing slow operation...."
43
+ # sleep 3
44
+ # puts "Completed slow operation!"
45
+ # return [1,2,3]
46
+ # end
47
+ # end
48
+ #
49
+ # # Action
50
+ # def index
51
+ # @records = Defer { Record.slow_operation }
52
+ # end
53
+ #
54
+ # # View
55
+ # <% cache "record_index" do %>
56
+ # <%= @records.size %>
57
+ # <% end %>
58
+ class DeferProxy
59
+ # In order to proxy the most methods, remove this object's instance methods
60
+ # so that calls will be sent to #method_missing for forwarding.
61
+ instance_methods.each { |m| undef_method(m) unless m =~ /^__/ || m == :object_id }
62
+
63
+ # Create proxy that, when called, will return a value by callling the block.
64
+ def initialize(&block)
65
+ @__defer_proxy_callback = block
66
+ end
67
+
68
+ # Return true if asked if this is a kind of DeferProxy else fallback to
69
+ # +kind_of?+ behavior of proxied object.
70
+ def kind_of?(klass)
71
+ return(klass == DeferProxy || method_missing(:kind_of?, klass))
72
+ end
73
+
74
+ # Materialize the proxied object and call it.
75
+ def method_missing(name, *args, &block)
76
+ return(__materialize.send(name, *args, &block))
77
+ end
78
+
79
+ # Return the proxied object, materializing it if needed.
80
+ def __materialize(*args, &block)
81
+ return(@__defer_proxy_value ||= @__defer_proxy_callback.call(*args, &block))
82
+ end
83
+ end
84
+
85
+ # Return a DeferProxy instance for the given +block+.
86
+ def Defer(&block)
87
+ return DeferProxy.new(&block)
88
+ end
89
+
90
+ # Return the content of a value, be it a Defer or not.
91
+ def Undefer(value)
92
+ return value.kind_of?(DeferProxy) ? value.__materialize : value
93
+ end
94
+
95
+ # Self-test
96
+ if __FILE__ == $0
97
+ require 'test/unit'
98
+ class DeferProxyTest < Test::Unit::TestCase
99
+ def test_should_proxy_an_integer
100
+ assert_equal(1, Defer{1})
101
+ end
102
+
103
+ def test_should_proxy_an_array
104
+ assert_equal([1,2,3], Defer{[1,2,3]}.map{|t| t})
105
+ end
106
+
107
+ def test_should_proxy_an_array_for_use_with_map
108
+ assert_equal([1,2,3], Defer{[1,2,3]}.map{|t| t})
109
+ end
110
+
111
+ def test_should_be_able_to_use_kind_of_on_proxied_object
112
+ assert(Defer{[1,2,3]}.kind_of?(Array))
113
+ end
114
+
115
+ def test_should_be_able_to_use_kind_of_on_self
116
+ assert(Defer{[1,2,3]}.kind_of?(DeferProxy))
117
+ end
118
+
119
+ def test_should_provide_access_to_proxied_object
120
+ assert_equal([1,2,3], Undefer(Defer{[1,2,3]}))
121
+ end
122
+
123
+ def test_should_provide_access_to_proxied_object_thats_not_a_defer
124
+ assert(Undefer(Defer{[1,2,3]}).respond_to?(:__materialize) == false)
125
+ end
126
+ end
127
+ end
@@ -0,0 +1,18 @@
1
+ require 'color'
2
+
3
+ # Make colors serializable.
4
+ module Color
5
+ class RGB
6
+ def to_s
7
+ self.html.to_s
8
+ end
9
+
10
+ def to_json(*args)
11
+ self.to_s
12
+ end
13
+
14
+ def to_xml(*args)
15
+ self.to_s
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,7 @@
1
+ class String
2
+
3
+ # Returns the posessive form of a string.
4
+ def possessiveize
5
+ self + "'" + ([115,83].include?(self[-1]) ? '' : 's')
6
+ end
7
+ end
@@ -0,0 +1,25 @@
1
+ module Vpim
2
+ class Icalendar
3
+
4
+ # The title of the calendar.
5
+ def title
6
+ @properties['X-WR-CALNAME']
7
+ end
8
+
9
+ # Sets the title of the calendar, displayed by some clients.
10
+ def title=(value)
11
+ @properties.push_unique DirectoryInfo::Field.create('X-WR-CALNAME', value)
12
+ end
13
+
14
+ # The time zone of the calendar
15
+ def time_zone
16
+ @properties['X-WR-TIMEZONE']
17
+ end
18
+
19
+ # Sets the time zone for entries of this calendar. (e.g. America/Los Angeles)
20
+ def time_zone=(value)
21
+ @properties.push_unique DirectoryInfo::Field.create('X-WR-TIMEZONE', value)
22
+ end
23
+ end
24
+ end
25
+
@@ -0,0 +1,12 @@
1
+ Description:
2
+ Installs initializers to configure OpenConferenceWare
3
+
4
+ Example:
5
+ rails generate open_conference_ware:install /ocw
6
+
7
+ This will:
8
+ - create config/initializers/01_open_conference_ware.rb
9
+ - create config/initializers/02_omniauth.rb
10
+ - mount OpenConferenceWare at the given mount point (/ocw)
11
+ - set up OpenConferenceWare's seed data
12
+
@@ -0,0 +1,35 @@
1
+ class OpenConferenceWare::InstallGenerator < Rails::Generators::Base
2
+ source_root File.expand_path('../templates', __FILE__)
3
+
4
+ argument :mount_point,
5
+ type: :string,
6
+ default: "/",
7
+ desc: "The path where OpenConferenceWare should be mounted",
8
+ banner: "MOUNT_POINT (Default: /)"
9
+
10
+ def copy_config_initializer
11
+ template "config_initializer.rb", "config/initializers/01_open_conference_ware.rb"
12
+ end
13
+
14
+ def copy_omniauth_initializer
15
+ copy_file "omniauth_initializer.rb", "config/initializers/02_omniauth.rb"
16
+ end
17
+
18
+ def mount_engine
19
+ route %Q{mount OpenConferenceWare::Engine => "#{mount_point}"}
20
+ end
21
+
22
+ def include_engine_seeds
23
+ append_to_file "db/seeds.rb" do
24
+ <<-SEED
25
+
26
+ # Include OpenConferenceWare's seed data
27
+ OpenConferenceWare::Engine.load_seed
28
+ SEED
29
+ end
30
+ end
31
+
32
+ def run_setup_rake_task
33
+ rake "open_conference_ware:setup"
34
+ end
35
+ end
@@ -0,0 +1,110 @@
1
+ # Edit this file to configure OpenConferenceWare's settings
2
+
3
+ OpenConferenceWare.configure do |config|
4
+ # The path where the OpenConferenceWare engine is mounted in your Rails app
5
+ # This default should work in most situations, but may need to be overridden
6
+ # in some cases with a string like "/open_conference_ware"
7
+ config.mount_point = '<%= mount_point %>'
8
+
9
+ # Event name, or organization running events:
10
+ config.organization = 'Open Source Bridge'
11
+
12
+ # Abbreviated name for use in URLs and proposal slugs.
13
+ config.organization_slug = 'osb'
14
+
15
+ # Top-level tagline or description.
16
+ config.tagline = 'The conference for open source citizens'
17
+
18
+ # What is the slug for the current event? E.g., if this is '2014' and the user
19
+ # visits the '/proposals' URI, then the system will try to lookup an Event with
20
+ # the '2012' slug and redirect to '/events/2012/proposals' if it's available.
21
+ #
22
+ # 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
+ # config.current_event_slug = '2012'
24
+
25
+ ##[ OCW Features ]##
26
+ # Many features of OpenConferenceWare can be toggled via these settings
27
+
28
+ # Can people create proposals without logging in?
29
+ config.have_anonymous_proposals = false
30
+
31
+ # Do proposals have excerpts?
32
+ config.have_proposal_excerpts = true
33
+
34
+ # Do events have tracks?
35
+ config.have_event_tracks = true
36
+
37
+ # Do events have session types?
38
+ config.have_event_session_types = true
39
+
40
+ # Display events picker so user can pick between multiple events?
41
+ config.have_events_picker = false
42
+
43
+ # Are proposals associated with multiple presenters?
44
+ config.have_multiple_presenters = true
45
+
46
+ # Can people upload pictures of themselves?
47
+ config.have_user_pictures = true
48
+
49
+ # Is profile information, like biography, stored in the User record? Else stored in Proposal.
50
+ config.have_user_profiles = true
51
+
52
+ # Do events have rooms?
53
+ config.have_event_rooms = true
54
+
55
+ # Should a proposal ask for the submitter's speaking experience?
56
+ config.have_proposal_speaking_experience = true
57
+
58
+ # Can proposals have start times?
59
+ config.have_proposal_start_times = true
60
+
61
+ # Can proposals have statuses?
62
+ config.have_proposal_statuses = true
63
+
64
+ # Can users add comments until a toggle is flipped on the event?
65
+ config.have_event_proposal_comments_after_deadline = true
66
+
67
+ # What audience experience levels can a proposal be classified as?
68
+ # The list will be displayed on the form in the order defined below.
69
+ # The "slug" is the unique key defining the particular audience level, while
70
+ # the "label" is the human-readable value displayed.
71
+ #
72
+ # Set this to a blank array to disable audience levels
73
+ config.proposal_audience_levels ||= [
74
+ {slug: 'a', label: 'Beginner'},
75
+ {slug: 'b', label: 'Intermediate'},
76
+ {slug: 'c', label: 'Advanced'}
77
+ ]
78
+
79
+ # What message is displayed as a hint to explain the audience level?
80
+ config.proposal_audience_level_hint = "(Tell us the intended audience experience level for this talk)"
81
+
82
+ ##[ Session Notes ]##
83
+ #
84
+ # OCW can generate links to an external system, such as a wiki or an Etherpad
85
+ # instance, that provides a place for attendees to take notes.
86
+
87
+ # URL where OCW is installed
88
+ config.app_root_url = 'http://opensourcebridge.org/'
89
+
90
+ # URL of wiki with session notes (optional). This 'printf' format contains
91
+ # positional variables that filled by Proposal#session_notes_url:
92
+ # * %1 => site's public URL
93
+ # * %2 => parent OR event slug
94
+ # * %3 => event slug
95
+ # E.g., '%1$s%2$s/wiki/' may translate to 'http://my_site.com/my_parent_slug/wiki'
96
+ config.session_notes_url_format = '%1$swiki/%2$s/'
97
+
98
+ ##[ Optional Settings ]##
99
+
100
+ # Policy agreement to show on the proposal form
101
+ # If an agreement is set, presenters will be required to agree in order to submit a proposal.
102
+ #
103
+ # config.agreement = 'I have reviewed and agree to the recording policy and code of conduct.'
104
+
105
+ # Breadcrumbs that are always visible, each breadcrumb is a name and URI:
106
+ # NOTE: The current default theme never displays any breadcrumbs, but infrastructure exists to support them.
107
+ #
108
+ # config.breadcrumbs = [['Home', 'http://openconferenceware.org']]
109
+
110
+ end
@@ -0,0 +1,33 @@
1
+ OmniAuth.config.path_prefix = OpenConferenceWare.mounted_path("auth")
2
+
3
+ Rails.application.config.middleware.use OpenConferenceWare::OmniAuthBuilder do
4
+ # Configure authentication providers for OpenConferenceWare
5
+
6
+ # The providers below are supported with built-in sign in forms.
7
+ #
8
+ # Additional providers can be found at:
9
+ # https://github.com/intridea/omniauth/wiki/List-of-Strategies
10
+ #
11
+ # When adding a new provider, it will be linked to from the sign in page.
12
+ #
13
+ # If you want to display a nicer form, just add a partial at
14
+ # /app/views/open_conference_ware/authentications/_<provider>.html.erb
15
+ #
16
+ # Providers will be shown on the sign in page in the order they are added.
17
+
18
+ # OpenID
19
+ # add 'omniauth-openid' to Gemfile and uncomment to enable OpenID
20
+ #
21
+ #require 'openid/store/filesystem'
22
+ #provider :openid, store: OpenID::Store::Filesystem.new(Rails.root.join('tmp'))
23
+
24
+ # Persona
25
+ # add 'omniauth-persona' to Gemfile and uncomment to enable Persona
26
+ #
27
+ #provider :persona
28
+
29
+ # Developer
30
+ # Used to provide easy authentication during development
31
+ provider :developer if %w[development preview].include?(Rails.env)
32
+ end
33
+
@@ -0,0 +1,156 @@
1
+ require 'open_conference_ware/dependencies'
2
+ require "open_conference_ware/engine"
3
+
4
+ module OpenConferenceWare
5
+ def self.configure(&block)
6
+ yield(self)
7
+ end
8
+
9
+ # Engine Configuration
10
+
11
+ # Path where the OCW engine is mounted
12
+ mattr_accessor :mount_point
13
+ self.mount_point ||= "/"
14
+
15
+ def self.mounted_path(path)
16
+ "#{self.mount_point}/#{path}".gsub("//","/")
17
+ end
18
+
19
+ # Secrets
20
+ mattr_accessor :email
21
+
22
+ # Email address of administrator that will get exception notifications
23
+ # and requests for assistance from users:
24
+ mattr_accessor :administrator_email
25
+ self.administrator_email ||= 'your@email.addr'
26
+
27
+ # Secret key for getting an ATOM feed of private comments:
28
+ mattr_accessor :comments_secret
29
+ self.comments_secret ||= '1234'
30
+
31
+ # Email
32
+
33
+ mattr_accessor :default_from_address
34
+ self.default_from_address ||= 'ocw@ocw.local'
35
+
36
+ mattr_accessor :default_bcc_address
37
+
38
+ # Settings
39
+
40
+ # Public URL of website:
41
+ mattr_accessor :public_url
42
+ self.public_url ||= 'http://ocw.local/'
43
+
44
+ # URL where OCW is installed
45
+ mattr_accessor :app_root_url
46
+ self.app_root_url ||= 'http://ocw.local/'
47
+
48
+ # Mailer host
49
+ mattr_accessor :mailer_host
50
+ self.mailer_host ||= 'ocw.local'
51
+
52
+ # URL of wiki with session notes (optional). This 'printf' format contains
53
+ # positional variables that filled by Proposal#session_notes_url:
54
+ # * %1 => site's public URL
55
+ # * %2 => parent OR event slug
56
+ # * %3 => event slug
57
+ # E.g., '%1$s%2$s/wiki/' may translate to 'http://my_site.com/my_parent_slug/wiki'
58
+ mattr_accessor :session_notes_url_format
59
+
60
+ # Organization running event:
61
+ mattr_accessor :organization
62
+ self.organization ||= 'Open Conference Ware'
63
+
64
+ # Abbreviated name for use in URLs and proposal slugs.
65
+ mattr_accessor :organization_slug
66
+ self.organization_slug ||= 'osb'
67
+
68
+ # Twitter account for the event (optional)
69
+ mattr_accessor :twitter
70
+ # self.twitter ||= 'openconferenceware'
71
+
72
+ # Top-level tagline or description.
73
+ mattr_accessor :tagline
74
+ self.tagline ||= 'A truly great event.'
75
+
76
+ # Aggreement to show on proposal pages. (optional)
77
+ mattr_accessor :agreement
78
+ #self.agreement ||= 'I have reviewed and agree to the recording policy and code of conduct.'
79
+
80
+ # Breadcrumbs that are always visible, each breadcrumb is a name and URI:
81
+ mattr_accessor :breadcrumbs
82
+ self.breadcrumbs ||= []
83
+
84
+ # What is the slug for the current event? E.g., if this is '2009' and the user visits the '/proposals' URI, then the system will try to lookup an Event with the '2009' slug and redirect to '/events/2009 proposals' if it's available.
85
+ mattr_accessor :current_event_slug
86
+ self.current_event_slug ||= '2013'
87
+
88
+ # Can people create proposals without logging in?
89
+ mattr_accessor :have_anonymous_proposals
90
+ self.have_anonymous_proposals ||= false
91
+
92
+ # Do proposals have excerpts?
93
+ mattr_accessor :have_proposal_excerpts
94
+ self.have_proposal_excerpts ||= true
95
+
96
+ # Do events have tracks?
97
+ mattr_accessor :have_event_tracks
98
+ self.have_event_tracks ||= true
99
+
100
+ # Do events have session types?
101
+ mattr_accessor :have_event_session_types
102
+ self.have_event_session_types ||= true
103
+
104
+ # Display events picker so user can pick between multiple events?
105
+ mattr_accessor :have_events_picker
106
+ self.have_events_picker ||= false
107
+
108
+ # Are proposals associated with multiple presenters?
109
+ mattr_accessor :have_multiple_presenters
110
+ self.have_multiple_presenters ||= true
111
+
112
+ # Can people upload pictures of themselves?
113
+ mattr_accessor :have_user_pictures
114
+ self.have_user_pictures ||= true
115
+
116
+ # Is profile information, like biography, stored in the User record? Else stored in Proposal.
117
+ mattr_accessor :have_user_profiles
118
+ self.have_user_profiles ||= true
119
+
120
+ # Do events have rooms?
121
+ mattr_accessor :have_event_rooms
122
+ self.have_event_rooms ||= true
123
+
124
+ # Should a proposal ask for the submitter's speaking experience?
125
+ mattr_accessor :have_proposal_speaking_experience
126
+ self.have_proposal_speaking_experience ||= true
127
+
128
+ # Can proposals have start times?
129
+ mattr_accessor :have_proposal_start_times
130
+ self.have_proposal_start_times ||= true
131
+
132
+ # Can proposals have statuses?
133
+ mattr_accessor :have_proposal_statuses
134
+ self.have_proposal_statuses ||= true
135
+
136
+ # Can users add comments until a toggle is flipped on the event?
137
+ mattr_accessor :have_event_proposal_comments_after_deadline
138
+ self.have_event_proposal_comments_after_deadline |= true
139
+
140
+ # What audience experience levels can a proposal be classified as? The list will be displayed on the form in the order defined below. The "slug" is the unique key defining the particular audience level, while the "label" is the human-readable value displayed.
141
+ mattr_accessor :proposal_audience_levels
142
+ self.proposal_audience_levels ||= [
143
+ {slug: 'a', label: 'Beginner'},
144
+ {slug: 'b', label: 'Intermediate'},
145
+ {slug: 'c', label: 'Advanced'}
146
+ ]
147
+
148
+ # What message is displayed as a hint to explain the audience level?
149
+ mattr_accessor :proposal_audience_level_hint
150
+ self.proposal_audience_level_hint ||= "(Tell us the intended audience experience level for this talk)"
151
+
152
+ # Loaded authentication providers
153
+ mattr_accessor :auth_providers
154
+ self.auth_providers ||= []
155
+ end
156
+