atrium 0.0.1 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (382) hide show
  1. data/.gitignore +9 -1
  2. data/.rspec +2 -0
  3. data/.rvmrc +1 -1
  4. data/CONTRIBUTING.md +73 -0
  5. data/Gemfile +27 -2
  6. data/Gemfile.lock +122 -246
  7. data/Guardfile +40 -10
  8. data/LICENSE +14 -0
  9. data/README.mkd +23 -39
  10. data/ROADMAP.mkd +41 -9
  11. data/Rakefile +39 -4
  12. data/app/assets/images/atrium/remove.png +0 -0
  13. data/app/assets/images/atrium/white-arrow.png +0 -0
  14. data/app/assets/javascripts/{atrium/atrium.js → atrium.js} +8 -153
  15. data/app/assets/stylesheets/{atrium/atrium.css → atrium.css} +110 -37
  16. data/app/assets/stylesheets/atrium/collections.css +4 -0
  17. data/app/assets/stylesheets/atrium/descriptions.css +4 -0
  18. data/app/assets/stylesheets/atrium/exhibits.css +4 -0
  19. data/app/assets/stylesheets/atrium/reset.css +69 -0
  20. data/app/assets/stylesheets/atrium/showcases.css +4 -0
  21. data/app/assets/stylesheets/atrium/theme.css +248 -0
  22. data/app/controllers/atrium/application_controller.rb +12 -0
  23. data/app/controllers/atrium/browse_levels_controller.rb +22 -0
  24. data/app/controllers/atrium/collections_controller.rb +42 -138
  25. data/app/controllers/atrium/descriptions_controller.rb +27 -146
  26. data/app/controllers/atrium/exhibits_controller.rb +51 -77
  27. data/app/controllers/atrium/order_controller.rb +74 -0
  28. data/app/controllers/atrium/showcases_controller.rb +96 -117
  29. data/app/helpers/atrium/application_helper.rb +8 -0
  30. data/app/helpers/atrium/collections_helper.rb +44 -0
  31. data/app/helpers/atrium/descriptions_helper.rb +4 -0
  32. data/app/helpers/atrium/exhibits_helper.rb +4 -0
  33. data/app/helpers/atrium/showcases_helper.rb +34 -0
  34. data/app/models/atrium/browse_level.rb +21 -11
  35. data/app/models/atrium/collection.rb +70 -36
  36. data/app/models/atrium/configuration.rb +66 -0
  37. data/app/models/atrium/description.rb +39 -88
  38. data/app/models/atrium/essay.rb +4 -5
  39. data/app/models/atrium/exhibit.rb +28 -19
  40. data/app/models/atrium/is_showcased_mixin.rb +34 -0
  41. data/app/models/atrium/query_param_mixin.rb +105 -0
  42. data/app/models/atrium/search/facet.rb +14 -25
  43. data/app/models/atrium/search/facet_selection.rb +10 -12
  44. data/app/models/atrium/showcase.rb +105 -95
  45. data/app/models/atrium/showcase/facet_selection.rb +18 -18
  46. data/app/models/atrium/showcase/featured_selection.rb +15 -0
  47. data/app/services/browse_level_evaluation_service.rb +131 -0
  48. data/app/services/current_filter_query_params_extraction_service.rb +91 -0
  49. data/app/services/navigation_tree.rb +13 -0
  50. data/app/services/params_adaptor_for_filter.rb +18 -0
  51. data/app/views/atrium/collections/_form.html.erb +149 -72
  52. data/app/views/atrium/collections/_head.html.erb +3 -0
  53. data/app/views/atrium/collections/edit.html.erb +1 -4
  54. data/app/views/atrium/collections/index.html.erb +14 -0
  55. data/app/views/atrium/collections/new.html.erb +2 -5
  56. data/app/views/atrium/collections/show.html.erb +11 -29
  57. data/app/views/atrium/descriptions/_form.html.erb +47 -49
  58. data/app/views/atrium/descriptions/edit.html.erb +1 -2
  59. data/app/views/atrium/descriptions/index.html.erb +2 -8
  60. data/app/views/atrium/descriptions/new.html.erb +2 -1
  61. data/app/views/atrium/descriptions/show.html.erb +2 -20
  62. data/app/views/atrium/exhibits/_exhibit.html.erb +1 -0
  63. data/app/views/atrium/exhibits/_form.html.erb +143 -96
  64. data/app/views/atrium/exhibits/edit.html.erb +1 -8
  65. data/app/views/atrium/exhibits/index.html.erb +2 -0
  66. data/app/views/atrium/exhibits/new.html.erb +0 -5
  67. data/app/views/atrium/exhibits/show.html.erb +2 -34
  68. data/app/views/atrium/showcases/_configure_menu.html.erb +55 -0
  69. data/app/views/atrium/showcases/_form.html.erb +40 -0
  70. data/app/views/atrium/showcases/edit.html.erb +3 -0
  71. data/app/views/atrium/showcases/index.html.erb +32 -0
  72. data/app/views/atrium/showcases/new.html.erb +3 -0
  73. data/app/views/atrium/showcases/show.html.erb +2 -1
  74. data/app/views/layouts/atrium.html.erb +16 -24
  75. data/app/views/layouts/atrium/application.html.erb +49 -0
  76. data/app/views/layouts/atrium/themes/default.html.erb +15 -0
  77. data/app/views/shared/_list_searchs.html.erb +4 -0
  78. data/app/views/shared/_navigation.html.erb +19 -0
  79. data/atrium.gemspec +31 -64
  80. data/config/routes.rb +40 -10
  81. data/{lib/generators/atrium/templates/migrations/create_atrium_collections.rb → db/migrate/20120730170406_create_atrium_collections.rb} +2 -1
  82. data/{lib/generators/atrium/templates/migrations/create_atrium_showcases.rb → db/migrate/20120731134846_create_atrium_showcases.rb} +3 -4
  83. data/{lib/generators/atrium/templates/migrations/create_atrium_exhibits.rb → db/migrate/20120731134856_create_atrium_exhibits.rb} +2 -1
  84. data/{lib/generators/atrium/templates/migrations/create_atrium_descriptions.rb → db/migrate/20120731134904_create_atrium_descriptions.rb} +2 -1
  85. data/{lib/generators/atrium/templates/migrations/create_atrium_essays.rb → db/migrate/20120731135534_create_atrium_essays.rb} +3 -2
  86. data/{lib/generators/atrium/templates/migrations/create_atrium_search_facets.rb → db/migrate/20120731135721_create_atrium_search_facets.rb} +1 -1
  87. data/{lib/generators/atrium/templates/migrations/create_atrium_showcase_facet_selections.rb → db/migrate/20120731140621_create_atrium_showcase_facet_selections.rb} +6 -2
  88. data/{lib/generators/atrium/templates/migrations/create_atrium_browse_levels.rb → db/migrate/20120801145241_create_atrium_browse_levels.rb} +1 -1
  89. data/db/migrate/20120820183808_create_selected_items.rb +16 -0
  90. data/db/migrate/20120823135716_update_atrium_collection_indices.rb +13 -0
  91. data/db/migrate/20120823143315_add_lookup_indices_as_required.rb +11 -0
  92. data/lib/atrium.rb +40 -36
  93. data/lib/atrium/engine.rb +4 -8
  94. data/lib/atrium/exceptions.rb +10 -0
  95. data/lib/atrium/version.rb +2 -2
  96. data/lib/generators/atrium/install/USAGE +8 -0
  97. data/lib/generators/atrium/install/install_generator.rb +86 -0
  98. data/lib/generators/atrium/install/templates/atrium_initializer.rb +21 -0
  99. data/lib/generators/atrium/install/templates/controllers/atrium_base_controller.rb +18 -0
  100. data/lib/generators/atrium/install/templates/controllers/collections_controller.rb +40 -0
  101. data/lib/generators/atrium/install/templates/controllers/descriptions_controller.rb +36 -0
  102. data/lib/generators/atrium/install/templates/controllers/exhibits_controller.rb +47 -0
  103. data/lib/generators/atrium/install/templates/controllers/selected_items_controller.rb +26 -0
  104. data/lib/generators/atrium/install/templates/helpers/application_helper.rb +42 -0
  105. data/lib/generators/atrium/install/templates/helpers/collections_helper.rb +15 -0
  106. data/lib/generators/atrium/install/templates/helpers/navigation_helper.rb +62 -0
  107. data/lib/generators/atrium/install/templates/helpers/solr_helper.rb +138 -0
  108. data/lib/generators/atrium/install/templates/models/selected_item.rb +7 -0
  109. data/lib/generators/atrium/install/templates/views/collections/_document.html.erb +19 -0
  110. data/lib/generators/atrium/install/templates/views/collections/_exhibits.html.erb +3 -0
  111. data/lib/generators/atrium/install/templates/views/collections/_pagination.html.erb +6 -0
  112. data/lib/generators/atrium/install/templates/views/collections/browse.html.erb +16 -0
  113. data/lib/generators/atrium/install/templates/views/collections/show.html.erb +19 -0
  114. data/lib/generators/atrium/install/templates/views/descriptions/show.html.erb +8 -0
  115. data/lib/generators/atrium/install/templates/views/exhibits/_document.html.erb +19 -0
  116. data/lib/generators/atrium/install/templates/views/exhibits/_pagination.html.erb +6 -0
  117. data/lib/generators/atrium/install/templates/views/exhibits/show.html.erb +28 -0
  118. data/lib/generators/atrium/install/templates/views/folder/_selected_items_form.html.erb +8 -0
  119. data/lib/generators/atrium/install/templates/views/folder/index.html.erb +45 -0
  120. data/lib/generators/atrium/install/templates/views/shared/_document_list.html.erb +14 -0
  121. data/lib/generators/atrium/install/templates/views/shared/_featured_sources.html.erb +19 -0
  122. data/lib/generators/atrium/install/templates/views/shared/_list_descriptions.html.erb +25 -0
  123. data/lib/generators/atrium/install/templates/views/shared/_masthead.html.erb +19 -0
  124. data/lib/generators/atrium/install/templates/views/shared/_navigation_browse_level.html.erb +34 -0
  125. data/lib/generators/atrium/install/templates/views/shared/_showcases.html.erb +12 -0
  126. data/lib/generators/atrium/install/templates/views/shared/_side_bar_navigation.html.erb +20 -0
  127. data/lib/generators/atrium/service/USAGE +9 -0
  128. data/lib/generators/atrium/service/service_generator.rb +16 -0
  129. data/lib/generators/atrium/service/templates/service.rb.erb +2 -0
  130. data/lib/generators/atrium/service/templates/service_spec.rb.erb +4 -0
  131. data/lib/generators/atrium/theme/USAGE +8 -0
  132. data/lib/generators/atrium/theme/templates/theme.html.erb +14 -0
  133. data/lib/generators/atrium/theme/theme_generator.rb +11 -0
  134. data/lib/tasks/atrium_tasks.rake +4 -0
  135. data/script/rails +10 -0
  136. data/spec/atrium_spec.rb +10 -0
  137. data/spec/controllers/atrium/application_controller_spec.rb +7 -0
  138. data/spec/controllers/atrium/collections_controller_spec.rb +125 -0
  139. data/spec/controllers/atrium/descriptions_controller_spec.rb +142 -0
  140. data/spec/controllers/atrium/exhibits_controller_spec.rb +102 -0
  141. data/spec/controllers/atrium/order_controller_spec.rb +100 -0
  142. data/spec/controllers/atrium/showcases_controller_spec.rb +217 -0
  143. data/spec/dummy/README.rdoc +261 -0
  144. data/spec/dummy/Rakefile +7 -0
  145. data/spec/dummy/app/assets/javascripts/application.js +15 -0
  146. data/spec/dummy/app/assets/stylesheets/application.css +13 -0
  147. data/spec/dummy/app/controllers/application_controller.rb +3 -0
  148. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  149. data/spec/dummy/app/mailers/.gitkeep +0 -0
  150. data/spec/dummy/app/models/.gitkeep +0 -0
  151. data/spec/dummy/app/models/collection.rb +3 -0
  152. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  153. data/spec/dummy/config.ru +4 -0
  154. data/spec/dummy/config/application.rb +59 -0
  155. data/spec/dummy/config/boot.rb +10 -0
  156. data/spec/dummy/config/database.yml +25 -0
  157. data/spec/dummy/config/environment.rb +5 -0
  158. data/spec/dummy/config/environments/development.rb +37 -0
  159. data/spec/dummy/config/environments/production.rb +67 -0
  160. data/spec/dummy/config/environments/test.rb +37 -0
  161. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  162. data/spec/dummy/config/initializers/inflections.rb +15 -0
  163. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  164. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  165. data/spec/dummy/config/initializers/session_store.rb +8 -0
  166. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  167. data/spec/dummy/config/locales/en.yml +5 -0
  168. data/spec/dummy/config/routes.rb +4 -0
  169. data/spec/dummy/db/schema.rb +124 -0
  170. data/spec/dummy/lib/assets/.gitkeep +0 -0
  171. data/spec/dummy/log/.gitkeep +0 -0
  172. data/spec/dummy/public/404.html +26 -0
  173. data/spec/dummy/public/422.html +26 -0
  174. data/spec/dummy/public/500.html +25 -0
  175. data/spec/dummy/public/favicon.ico +0 -0
  176. data/spec/dummy/script/rails +6 -0
  177. data/spec/dummy/test/fixtures/collections.yml +11 -0
  178. data/spec/dummy/test/unit/collection_test.rb +7 -0
  179. data/spec/factories/atrium_collections.rb +8 -0
  180. data/spec/factories/atrium_exhibits.rb +9 -0
  181. data/spec/factories/atrium_search_facets.rb +8 -0
  182. data/spec/factories/atrium_showcases.rb +25 -0
  183. data/spec/helpers/atrium/collections_helper_spec.rb +57 -0
  184. data/spec/helpers/atrium/showcases_helper_spec.rb +56 -0
  185. data/spec/models/atrium/browse_level_spec.rb +56 -0
  186. data/spec/models/atrium/collection_spec.rb +76 -0
  187. data/spec/models/atrium/configuration_spec.rb +114 -0
  188. data/spec/models/atrium/description_spec.rb +56 -0
  189. data/spec/models/atrium/essay_spec.rb +16 -0
  190. data/spec/models/atrium/exhibit_spec.rb +90 -0
  191. data/spec/models/atrium/search/facet_selection_spec.rb +23 -0
  192. data/{test_support/spec → spec}/models/atrium/search/facet_spec.rb +2 -4
  193. data/{test_support/spec → spec}/models/atrium/showcase/facet_selection_spec.rb +5 -5
  194. data/spec/models/atrium/showcase/featured_selection_spec.rb +18 -0
  195. data/spec/models/atrium/showcase_spec.rb +97 -0
  196. data/spec/services/browse_level_evaluation_service_spec.rb +33 -0
  197. data/spec/services/current_filter_query_params_extraction_service_spec.rb +34 -0
  198. data/spec/services/navigation_tree_spec.rb +18 -0
  199. data/spec/services/params_adaptor_for_filter_spec.rb +8 -0
  200. data/spec/spec_helper.rb +39 -0
  201. data/spec/support/accept_nested_attributes_for.rb +39 -0
  202. data/{test_support/spec → spec}/support/be_accessible_matcher.rb +0 -0
  203. data/{test_support/spec → spec}/support/be_routed_mixin.rb +0 -0
  204. data/spec/support/controller_hacks.rb +35 -0
  205. data/spec/support/routes.rb +5 -0
  206. data/spec/support/shared_examples/is_showcased_mixin.rb +20 -0
  207. data/spec/support/shared_examples/query_param_mixin.rb +179 -0
  208. data/{app/assets/stylesheets/atrium → vendor/assets/images}/chosen-sprite.png +0 -0
  209. data/{app → vendor}/assets/javascripts/chosen.jquery.js +0 -0
  210. data/{app → vendor}/assets/javascripts/ckeditor.warning.js +0 -0
  211. data/{app → vendor}/assets/javascripts/ckeditor/config.js.coffee +0 -0
  212. data/{app → vendor}/assets/javascripts/ckeditor/jquery.generateId.js +0 -0
  213. data/{app → vendor}/assets/javascripts/ckeditor/jquery.jeditable.ckeditor.js +0 -0
  214. data/{app → vendor}/assets/javascripts/ckeditor/plugins/linkItem/application_link.png +0 -0
  215. data/{app → vendor}/assets/javascripts/ckeditor/plugins/linkItem/dialogs/linkItem.js +0 -0
  216. data/{app → vendor}/assets/javascripts/ckeditor/plugins/linkItem/plugin.js +0 -0
  217. data/{app → vendor}/assets/javascripts/ckeditor/plugins/linkItem/ui_toolbar_pencil.png +0 -0
  218. data/vendor/assets/javascripts/jquery-ui-1.8.23.custom.min.js +41 -0
  219. data/vendor/assets/javascripts/jquery-ui-build.txt +8 -0
  220. data/{app → vendor}/assets/javascripts/jquery.jeditable.js +0 -0
  221. data/{app/assets/stylesheets/atrium → vendor/assets/stylesheets}/chosen.css +4 -4
  222. data/vendor/assets/stylesheets/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
  223. data/vendor/assets/stylesheets/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
  224. data/vendor/assets/stylesheets/ui-lightness/images/ui-bg_flat_10_000000_40x100.png +0 -0
  225. data/vendor/assets/stylesheets/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
  226. data/vendor/assets/stylesheets/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
  227. data/vendor/assets/stylesheets/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  228. data/vendor/assets/stylesheets/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
  229. data/vendor/assets/stylesheets/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
  230. data/vendor/assets/stylesheets/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
  231. data/vendor/assets/stylesheets/ui-lightness/images/ui-icons_222222_256x240.png +0 -0
  232. data/vendor/assets/stylesheets/ui-lightness/images/ui-icons_228ef1_256x240.png +0 -0
  233. data/vendor/assets/stylesheets/ui-lightness/images/ui-icons_ef8c08_256x240.png +0 -0
  234. data/vendor/assets/stylesheets/ui-lightness/images/ui-icons_ffd27a_256x240.png +0 -0
  235. data/vendor/assets/stylesheets/ui-lightness/images/ui-icons_ffffff_256x240.png +0 -0
  236. data/vendor/assets/stylesheets/ui-lightness/jquery-ui-1.8.23.custom.css +334 -0
  237. metadata +431 -949
  238. data/GETTING_STARTED.textile +0 -102
  239. data/app/assets/images/atrium/ajax-loader.gif +0 -0
  240. data/app/assets/images/atrium/lightbox-ico-loading.gif +0 -0
  241. data/app/assets/images/atrium/logo.png +0 -0
  242. data/app/assets/javascripts/jquery.colorbox.js +0 -864
  243. data/app/assets/stylesheets/colorbox.css +0 -42
  244. data/app/assets/stylesheets/controls.png +0 -0
  245. data/app/assets/stylesheets/loading.gif +0 -0
  246. data/app/controllers/atrium/base_controller.rb +0 -25
  247. data/app/controllers/atrium/collection_exhibit_order_controller.rb +0 -21
  248. data/app/controllers/atrium/customization_controller.rb +0 -41
  249. data/app/controllers/atrium/exhibit_facet_order_controller.rb +0 -19
  250. data/app/helpers/atrium/base_helper.rb +0 -6
  251. data/app/models/ability.rb +0 -14
  252. data/app/models/atrium/showcase/item.rb +0 -19
  253. data/app/models/role_mapper.rb +0 -23
  254. data/app/views/_user_util_links.html.erb +0 -25
  255. data/app/views/atrium/collections/_bookmark_control.html.erb +0 -25
  256. data/app/views/atrium/collections/_browse_index.html.erb +0 -20
  257. data/app/views/atrium/collections/_collection_items_index.html.erb +0 -10
  258. data/app/views/atrium/collections/_document.html.erb +0 -24
  259. data/app/views/atrium/collections/_document_list.html.erb +0 -6
  260. data/app/views/atrium/collections/_edit_navigation.html.erb +0 -20
  261. data/app/views/atrium/collections/_folder_control.html.erb +0 -12
  262. data/app/views/atrium/collections/_listing.html.erb +0 -18
  263. data/app/views/atrium/collections/_navigation.html.erb +0 -50
  264. data/app/views/atrium/collections/_results_pagination.html.erb +0 -9
  265. data/app/views/atrium/collections/_sort_and_per_page.html.erb +0 -23
  266. data/app/views/atrium/exhibits/_bookmark_control.html.erb +0 -25
  267. data/app/views/atrium/exhibits/_folder_control.html.erb +0 -12
  268. data/app/views/atrium/exhibits/_navigation.html.erb +0 -30
  269. data/app/views/atrium/showcases/_showcase_navigation.html.erb +0 -23
  270. data/app/views/catalog/_collection_home_text.html.erb +0 -6
  271. data/app/views/catalog/_constraints.html.erb +0 -9
  272. data/app/views/catalog/_default_collection_text.html.erb +0 -18
  273. data/app/views/catalog/_default_home_text.html.erb +0 -6
  274. data/app/views/catalog/_home_text.html.erb +0 -6
  275. data/app/views/catalog/_index_partials/_description.html.erb +0 -8
  276. data/app/views/catalog/_search_form.html.erb +0 -66
  277. data/app/views/catalog/_show_partials/_description.html.erb +0 -15
  278. data/app/views/catalog/browse_show.html.erb +0 -18
  279. data/app/views/catalog/index.html.erb +0 -41
  280. data/app/views/catalog/list_description.html.erb +0 -24
  281. data/app/views/catalog/list_item.html.erb +0 -3
  282. data/app/views/layouts/atrium_themes/default.html.erb +0 -4
  283. data/app/views/layouts/item_listing.html.erb +0 -36
  284. data/app/views/listing/_document.html.erb +0 -27
  285. data/app/views/listing/_document_list.html.erb +0 -3
  286. data/app/views/listing/_item_search.html.erb +0 -27
  287. data/app/views/shared/_banner.html.erb +0 -5
  288. data/app/views/shared/_collection_complete_list.html.erb +0 -33
  289. data/app/views/shared/_collection_search_form.html.erb +0 -12
  290. data/app/views/shared/_collection_title_header.html.erb +0 -3
  291. data/app/views/shared/_featured_sources.html.erb +0 -23
  292. data/app/views/shared/_list_descriptions.html.erb +0 -39
  293. data/app/views/shared/_navigation_browse_levels.html.erb +0 -34
  294. data/app/views/shared/_showcase_configure_menu.html.erb +0 -22
  295. data/app/views/shared/_top_navigation.html.erb +0 -9
  296. data/init.rb +0 -3
  297. data/lib/application_controller.rb +0 -24
  298. data/lib/atrium/application_helper.rb +0 -24
  299. data/lib/atrium/atrium_helper_behavior.rb +0 -159
  300. data/lib/atrium/catalog.rb +0 -203
  301. data/lib/atrium/collections_helper.rb +0 -172
  302. data/lib/atrium/controller.rb +0 -10
  303. data/lib/atrium/descriptions_helper.rb +0 -27
  304. data/lib/atrium/layout_helper.rb +0 -13
  305. data/lib/atrium/routes.rb +0 -100
  306. data/lib/atrium/solr_helper.rb +0 -440
  307. data/lib/generators/atrium/assets_generator.rb +0 -44
  308. data/lib/generators/atrium/atrium_generator.rb +0 -149
  309. data/lib/generators/atrium/cucumber_support_generator.rb +0 -29
  310. data/lib/generators/atrium/templates/config/role_map_cucumber.yml +0 -2
  311. data/lib/generators/atrium/templates/config/role_map_development.yml +0 -2
  312. data/lib/generators/atrium/templates/config/role_map_production.yml +0 -2
  313. data/lib/generators/atrium/templates/config/role_map_test.yml +0 -2
  314. data/lib/generators/atrium/templates/config/solr.yml +0 -10
  315. data/lib/generators/atrium/templates/db/seeds.rb +0 -87
  316. data/lib/generators/atrium/templates/migrations/create_atrium_showcase_items.rb +0 -17
  317. data/lib/generators/atrium/templates/themes/example.html.erb +0 -21
  318. data/lib/railties/all_tests.rake +0 -23
  319. data/lib/railties/atrium_cucumber.rake +0 -121
  320. data/lib/railties/index.rake +0 -37
  321. data/tasks/atrium.rake +0 -268
  322. data/tasks/atrium_rspec.rake +0 -91
  323. data/test_support/etc/Gemfile +0 -33
  324. data/test_support/etc/bundle_config +0 -3
  325. data/test_support/etc/rvmrc +0 -32
  326. data/test_support/features/atrium_collections.feature +0 -162
  327. data/test_support/features/atrium_exhibits.feature +0 -164
  328. data/test_support/features/step_definitions/atrium_collection_steps.rb +0 -102
  329. data/test_support/features/step_definitions/atrium_exhibit_steps.rb +0 -53
  330. data/test_support/features/step_definitions/bookmarks_steps.rb +0 -6
  331. data/test_support/features/step_definitions/error_steps.rb +0 -5
  332. data/test_support/features/step_definitions/folder_steps.rb +0 -27
  333. data/test_support/features/step_definitions/general_steps.rb +0 -50
  334. data/test_support/features/step_definitions/record_view_steps.rb +0 -12
  335. data/test_support/features/step_definitions/saved_searches_steps.rb +0 -22
  336. data/test_support/features/step_definitions/search_facets_steps.rb +0 -29
  337. data/test_support/features/step_definitions/search_history_steps.rb +0 -9
  338. data/test_support/features/step_definitions/search_result_steps.rb +0 -114
  339. data/test_support/features/step_definitions/search_steps.rb +0 -103
  340. data/test_support/features/step_definitions/user_steps.rb +0 -5
  341. data/test_support/features/step_definitions/web_steps.rb +0 -213
  342. data/test_support/features/support/env.rb +0 -67
  343. data/test_support/features/support/paths.rb +0 -76
  344. data/test_support/features/support/selectors.rb +0 -40
  345. data/test_support/fixtures/atrium_exhibits.yml +0 -3
  346. data/test_support/spec/controllers/atrium/base_controller_spec.rb +0 -13
  347. data/test_support/spec/controllers/atrium/collection_exhibit_order_controller_spec.rb +0 -29
  348. data/test_support/spec/controllers/atrium/collections_controller_spec.rb +0 -185
  349. data/test_support/spec/controllers/atrium/customization_controller_spec.rb +0 -38
  350. data/test_support/spec/controllers/atrium/descriptions_controller_spec.rb +0 -150
  351. data/test_support/spec/controllers/atrium/exhibit_facet_order_controller_spec.rb +0 -36
  352. data/test_support/spec/controllers/atrium/exhibits_controller_spec.rb +0 -192
  353. data/test_support/spec/controllers/atrium/showcases_controller_spec.rb +0 -219
  354. data/test_support/spec/helpers/atrium_collections_helper_spec.rb +0 -147
  355. data/test_support/spec/helpers/atrium_description_helper_spec.rb +0 -47
  356. data/test_support/spec/helpers/atrium_solr_helper_spec.rb +0 -522
  357. data/test_support/spec/models/atrium/browse_level_spec.rb +0 -31
  358. data/test_support/spec/models/atrium/collection_spec.rb +0 -30
  359. data/test_support/spec/models/atrium/description_spec.rb +0 -67
  360. data/test_support/spec/models/atrium/essay_spec.rb +0 -12
  361. data/test_support/spec/models/atrium/exhibit_spec.rb +0 -76
  362. data/test_support/spec/models/atrium/search/facet_selection_spec.rb +0 -24
  363. data/test_support/spec/models/atrium/search_facet_spec.rb +0 -54
  364. data/test_support/spec/models/atrium/showcase/item_spec.rb +0 -12
  365. data/test_support/spec/models/atrium/showcase_facet_selection_spec.rb +0 -65
  366. data/test_support/spec/models/atrium/showcase_spec.rb +0 -134
  367. data/test_support/spec/rcov.opts +0 -3
  368. data/test_support/spec/routing/atrium/collections_routing_spec.rb +0 -33
  369. data/test_support/spec/spec.opts +0 -4
  370. data/test_support/spec/spec_helper.rb +0 -47
  371. data/test_support/tmp/step_definitions/catalog_index_steps.rb +0 -14
  372. data/test_support/tmp/step_definitions/edit_document_steps.rb +0 -67
  373. data/test_support/tmp/step_definitions/hydra_metadata_steps.rb +0 -3
  374. data/test_support/tmp/step_definitions/hydra_steps.rb +0 -8
  375. data/test_support/tmp/step_definitions/search_steps.rb +0 -86
  376. data/test_support/tmp/step_definitions/searching_steps.rb +0 -22
  377. data/test_support/tmp/step_definitions/select_steps.rb +0 -8
  378. data/test_support/tmp/step_definitions/show_document_steps.rb +0 -73
  379. data/test_support/tmp/step_definitions/user_steps.rb +0 -15
  380. data/test_support/tmp/step_definitions/web_steps.rb +0 -273
  381. data/test_support/tmp/support/env.rb +0 -54
  382. data/test_support/tmp/support/paths.rb +0 -57
@@ -0,0 +1,34 @@
1
+ require 'active_support/concern'
2
+ module Atrium::IsShowcasedMixin
3
+ extend ActiveSupport::Concern
4
+
5
+ included do
6
+ has_many(
7
+ :showcases,
8
+ class_name: 'Atrium::Showcase',
9
+ as: :showcases,
10
+ dependent: :destroy
11
+ )
12
+ accepts_nested_attributes_for :showcases
13
+
14
+ def showcase_order
15
+ showcases.each_with_object({}) { |showcase, object|
16
+ object[showcase[:id]] = showcase.sequence
17
+ }
18
+ end
19
+
20
+ def showcase_order=(showcase_order = {})
21
+ showcase_order.each_pair do |showcase_id, sequence|
22
+ begin
23
+ showcases.find(showcase_id).update_attributes!(sequence: sequence)
24
+ rescue ActiveRecord::RecordNotFound
25
+ end
26
+ end
27
+ end
28
+ attr_accessible(
29
+ :showcase_order,
30
+ :showcases_attributes
31
+ )
32
+
33
+ end
34
+ end
@@ -0,0 +1,105 @@
1
+ require 'active_support/concern'
2
+ module Atrium::QueryParamMixin
3
+ extend ActiveSupport::Concern
4
+
5
+ included do
6
+
7
+ def find_saved_search_and_format_to_query(search_id)
8
+ @saved_search_id = search_id
9
+ return @saved_search_id unless @saved_search_id.present?
10
+ saved_search = nil
11
+ begin
12
+ saved_search = Atrium.saved_search_class.find(search_id)
13
+ rescue ActiveRecord::RecordNotFound
14
+ @saved_search_id = nil
15
+ end
16
+ @saved_search_id = nil
17
+ formatted_query_params = {}
18
+ if saved_search
19
+ if saved_search.query_params.has_key?(:f)
20
+ formatted_query_params[:f] = saved_search.query_params[:f]
21
+ end
22
+ if saved_search.query_params.has_key?(:q)
23
+ formatted_query_params[:q] = saved_search.query_params[:q]
24
+ end
25
+ end
26
+ formatted_query_params
27
+ end
28
+
29
+ attr_reader :include_search_id
30
+
31
+ attr_accessible :include_search_id
32
+
33
+ def include_search_id=(value)
34
+ return value unless value.present?
35
+ self.filter_query_params = find_saved_search_and_format_to_query(value)
36
+ end
37
+
38
+ attr_reader :exclude_search_id
39
+
40
+ attr_accessible :exclude_search_id
41
+
42
+ def exclude_search_id=(value)
43
+ return value unless value.present?
44
+ query_params={}
45
+ query_params[:exclude] = find_saved_search_and_format_to_query(value)
46
+ self.exclude_query_params=query_params
47
+ end
48
+
49
+ serialize :filter_query_params, Hash
50
+
51
+ def filter_query_params
52
+ begin
53
+ super
54
+ rescue ActiveRecord::SerializationTypeMismatch
55
+ {}
56
+ end
57
+ end
58
+
59
+ serialize :exclude_query_params, Hash
60
+
61
+ def exclude_query_params
62
+ begin
63
+ super
64
+ rescue ActiveRecord::SerializationTypeMismatch
65
+ {}
66
+ end
67
+ end
68
+
69
+ # This is a hopefully temporary work around that can be removed once all
70
+ # atrium instances have a clean set of data.
71
+ def read_attribute(attr_name)
72
+ if attr_name.to_s == 'filter_query_params' || attr_name.to_s == 'exclude_query_params'
73
+ begin
74
+ super(attr_name)
75
+ rescue ActiveRecord::SerializationTypeMismatch
76
+ {}
77
+ end
78
+ else
79
+ super
80
+ end
81
+ end
82
+
83
+ attr_reader :remove_filter_query_params
84
+
85
+ attr_accessible :remove_filter_query_params
86
+
87
+ def remove_filter_query_params=(value)
88
+ @remove_filter_query_params = value
89
+ self.filter_query_params = nil if @remove_filter_query_params.to_i ==1
90
+ @remove_filter_query_params = nil
91
+ end
92
+
93
+ attr_reader :remove_exclude_query_params
94
+
95
+ attr_accessible :remove_exclude_query_params
96
+
97
+ def remove_exclude_query_params=(value)
98
+ @remove_exclude_query_params = value
99
+ self.exclude_query_params = nil if @remove_exclude_query_params.to_i ==1
100
+ @remove_exclude_query_params = nil
101
+ end
102
+
103
+
104
+ end
105
+ end
@@ -1,29 +1,18 @@
1
- class Atrium::Search::Facet < ActiveRecord::Base
2
- self.table_name = 'atrium_search_facets'
1
+ module Atrium
2
+ class Search::Facet < ActiveRecord::Base
3
+ self.table_name = 'atrium_search_facets'
3
4
 
4
- belongs_to(
5
- :collection,
6
- :class_name => 'Atrium::Collection',
7
- :foreign_key => 'atrium_collection_id'
8
- )
5
+ validates :collection, presence: true
6
+ belongs_to(
7
+ :collection,
8
+ class_name: 'Atrium::Collection',
9
+ foreign_key: 'atrium_collection_id',
10
+ inverse_of: :search_facets
11
+ )
9
12
 
10
- scope :find_by_name_and_collection_id, lambda {|name, collection_id|
11
- where("#{self.quoted_table_name}.`name` = ? AND #{self.quoted_table_name}.`atrium_collection_id` = ?", name, collection_id)
12
- }
13
-
14
- def self.find_or_create_by_name_and_collection_id(name, collection_id)
15
- find_by_name_and_collection_id(name, collection_id).first ||
16
- self.create(:name => name, :atrium_collection_id => id)
13
+ validates :name, presence: true
14
+ attr_accessible(
15
+ :name
16
+ )
17
17
  end
18
-
19
- validates_presence_of(
20
- :atrium_collection_id,
21
- :name
22
- )
23
-
24
- attr_accessible(
25
- :atrium_collection_id,
26
- :name
27
- )
28
-
29
18
  end
@@ -1,17 +1,15 @@
1
- require 'morphine'
2
- class Atrium::Search::FacetSelection
3
- attr_reader :field_name
1
+ module Atrium
2
+ class Search::FacetSelection
3
+ include Atrium::ApplicationHelper
4
4
 
5
- def initialize(field_name)
6
- @field_name = field_name
7
- end
5
+ attr_reader :field_name
8
6
 
9
- def label
10
- @label ||= facet_configuration[:label]
11
- end
7
+ def initialize(field_name_hash)
8
+ @field_name = field_name_hash[:field_name]
9
+ end
12
10
 
13
- include Morphine
14
- register :facet_configuration do
15
- CatalogController.blacklight_config.facet_fields[field_name] || {}
11
+ def label
12
+ @label ||= Atrium.config.label_for_facet(field_name)
13
+ end
16
14
  end
17
15
  end
@@ -1,88 +1,87 @@
1
+ # A Atrium::Showcase is a container for storing feature items and descriptions.
2
+ # A Atrium::Showcase can be attached to a collection, exhibit, or to specific
3
+ # combinations of selected facets and facet values within an exhibit. There can
4
+ # be multiple Atrium::Showcase in an Atrium::Exhibit.
1
5
  class Atrium::Showcase < ActiveRecord::Base
2
- self.table_name = 'atrium_showcases'
3
-
4
- # TODO: remove the need to expose the showcase_id to the AtriumShowcasesController
5
6
  attr_accessible(
6
7
  :showcases_id,
7
8
  :showcases_type,
8
9
  :showcase_items,
10
+ :tag,
11
+ :sequence,
9
12
  :solr_facet_name,
10
13
  :value,
11
14
  :descriptions_attributes,
12
- :facet_selections_attributes,
13
- :featured_items_attributes,
14
- :related_items_attributes
15
+ :facet_selections_attributes
15
16
  )
16
17
 
17
18
  has_many(
18
19
  :descriptions,
19
- :class_name => 'Atrium::Description',
20
- :foreign_key => 'atrium_showcase_id',
21
- :dependent => :destroy
20
+ class_name: 'Atrium::Description',
21
+ foreign_key: 'atrium_showcase_id',
22
+ dependent: :destroy,
23
+ inverse_of: :showcase
22
24
  )
23
25
  accepts_nested_attributes_for(
24
26
  :descriptions,
25
- :allow_destroy => true
27
+ allow_destroy: true
26
28
  )
27
29
 
28
30
  has_many(
29
31
  :facet_selections,
30
- :class_name => 'Atrium::Showcase::FacetSelection',
31
- :foreign_key => 'atrium_showcase_id',
32
- :dependent => :destroy
32
+ class_name: 'Atrium::Showcase::FacetSelection',
33
+ foreign_key: 'atrium_showcase_id',
34
+ dependent: :destroy
33
35
  )
34
36
  accepts_nested_attributes_for :facet_selections
35
37
 
36
- def get_parent_path
37
- if for_exhibit?
38
- facet={}
39
- unless facet_selections.blank?
40
- facet[facet_selections.first.solr_facet_name]=facet_selections.first.value
41
- end
42
- path= Rails.application.routes.url_helpers.atrium_exhibit_path(parent, :f=>facet)
43
- return path
44
- else
45
- return parent
46
- end
38
+ def parent_title
39
+ parent.pretty_title
47
40
  end
48
41
 
49
- has_many(
50
- :featured_items,
51
- :class_name => 'Atrium::Showcase::Item::Featured',
52
- :foreign_key => 'atrium_showcase_id',
53
- :dependent => :destroy
54
- )
55
- accepts_nested_attributes_for(
56
- :featured_items,
57
- :allow_destroy => true
58
- )
42
+ def for_exhibit?
43
+ showcases_type == "Atrium::Exhibit"
44
+ end
59
45
 
60
- has_many(
61
- :related_items,
62
- :class_name => 'Atrium::Showcase::Item::Related',
63
- :foreign_key => 'atrium_showcase_id',
64
- :dependent => :destroy
65
- )
66
- accepts_nested_attributes_for(
67
- :related_items,
68
- :allow_destroy => true
69
- )
46
+ def facet_details
47
+ logger.debug("Belongs to: #{facet_selections.inspect}")
48
+ "#{facet_selections.solr_facet_name - facet_selections.value}"
49
+ end
70
50
 
71
51
  belongs_to(
72
52
  :showcases,
73
- :polymorphic => true
53
+ polymorphic: true
74
54
  )
75
55
 
56
+ def parent
57
+ showcases
58
+ end
59
+
60
+ delegate :collection, to: :showcases
61
+
76
62
  serialize :showcase_items, Hash
77
63
 
78
64
  def showcase_items
79
- read_attribute(:showcase_items) || write_attribute(:showcase_items, {})
65
+ items = read_attribute(:showcase_items) ||
66
+ write_attribute(:showcase_items, {})
67
+
68
+ if items && items[:solr_doc_ids]
69
+ items[:solr_doc_ids].split(",")
70
+ else
71
+ []
72
+ end
80
73
  end
81
74
 
82
- def showcase_items=(solr_doc_ids = [])
83
- showcase_items[:type]="featured"
84
- showcase_items[:solr_doc_ids]=solr_doc_ids.join(',')
85
- write_attribute(:showcase_items, showcase_items)
75
+ def showcase_items=(solr_doc_ids = [])
76
+ unless solr_doc_ids.blank?
77
+ items={}
78
+ items[:type]="featured"
79
+ items[:solr_doc_ids]=solr_doc_ids.join(',')
80
+ write_attribute(:showcase_items, items)
81
+ else
82
+ write_attribute(:showcase_items, {})
83
+ end
84
+
86
85
  end
87
86
 
88
87
  def solr_doc_ids
@@ -93,87 +92,98 @@ class Atrium::Showcase < ActiveRecord::Base
93
92
  showcase_items[:type] unless showcase_items.blank?
94
93
  end
95
94
 
96
- def parent
97
- # debugger;true
98
- if showcases_type && showcases_id
99
- begin
100
- showcases_type.constantize.find(showcases_id)
101
- rescue
102
- logger.error("Invalid showcase parent type set for showcase id: #{id}")
103
- nil
104
- end
95
+ after_create :assign_sequence
96
+
97
+ def assign_sequence
98
+ unless for_exhibit?
99
+ sequence= parent.showcases.size
100
+ self.update_attributes(sequence: sequence)
105
101
  end
106
102
  end
107
103
 
108
- def parent_title
109
- parent.pretty_title
104
+ def pretty_title
105
+ id.blank? ? 'Unnamed Showcase' : "Showcase #{id}"
110
106
  end
111
107
 
112
- def for_exhibit?
113
- showcases_type == "Atrium::Exhibit"
114
- end
115
108
 
116
- # This method will select showcase objects that have exactly the selected facets passed in (but no more or no less) and is tied to the given exhibit id
109
+
110
+ # This method will select showcase objects that have exactly the selected
111
+ # facets passed in (but no more or no less) and is tied to the given exhibit
112
+ # id
113
+ #
117
114
  # It expects two parameters:
118
115
  # @param[String] the exhibit id
119
116
  # @param[Hash] hash of key value pairs of selected facets
120
117
  # @return Array of showcase objects found
121
- scope :with_selected_facets, lambda {|*args|
118
+ scope :with_selected_facets, lambda { |*args|
122
119
  parent_id, parent_type, selected_facets = args.flatten(1)
123
-
124
120
  selected_facets =
125
121
  if parent_type.eql?("Atrium::Collection")
126
122
  {}
127
123
  else
128
124
  selected_facets
129
125
  end
126
+ facet_selection_quoted_table_name =
127
+ Atrium::Showcase::FacetSelection.quoted_table_name
130
128
  facet_condition_values = []
129
+
131
130
  facet_conditions =
132
131
  if selected_facets
133
132
  selected_facets.collect {|key,value|
134
133
  facet_condition_values << key
135
- facet_condition_values << (value.is_a?(String) ? value : value.flatten.compact.to_s)
136
-
134
+ facet_condition_values << [value].flatten.compact.first.to_s
137
135
  %((
138
- #{Atrium::Showcase::FacetSelection.quoted_table_name}.`solr_facet_name` = ?
139
- AND #{Atrium::Showcase::FacetSelection.quoted_table_name}.`value` = ?
140
- ))
136
+ #{facet_selection_quoted_table_name}.`solr_facet_name` = ?
137
+ AND #{facet_selection_quoted_table_name}.`value` = ?
138
+ ))
141
139
  }
142
140
  else
143
141
  []
144
142
  end
145
-
146
143
  if facet_conditions.empty?
147
- joins(%(
148
- LEFT OUTER JOIN #{Atrium::Showcase::FacetSelection.quoted_table_name}
149
- ON #{quoted_table_name}.`id` = #{Atrium::Showcase::FacetSelection.quoted_table_name}.`atrium_showcase_id`)
144
+ joins(
145
+ %(
146
+ LEFT OUTER JOIN #{facet_selection_quoted_table_name}
147
+ ON #{quoted_table_name}.`id` =
148
+ #{facet_selection_quoted_table_name}.`atrium_showcase_id`
149
+ )
150
150
  ).
151
- where(:showcases_id => parent_id,:showcases_type => parent_type).
152
- where("#{Atrium::Showcase::FacetSelection.quoted_table_name}.`id` is NULL")
151
+ where(showcases_id: parent_id,showcases_type: parent_type).
152
+ where("#{facet_selection_quoted_table_name}.`id` is NULL")
153
153
  else
154
154
  # unfortunately have to do subselect here to get this correct
155
- conditions = [%(
156
- #{Atrium::Showcase::FacetSelection.quoted_table_name}.`atrium_showcase_id`
157
- IN (
158
- SELECT #{Atrium::Showcase::FacetSelection.quoted_table_name}.`atrium_showcase_id`
159
- FROM #{Atrium::Showcase::FacetSelection.quoted_table_name}
160
- INNER JOIN #{quoted_table_name}
161
- ON #{Atrium::Showcase::FacetSelection.quoted_table_name}.`atrium_showcase_id` = #{quoted_table_name}.`id`
162
- WHERE #{quoted_table_name}.showcases_id = ?
163
- AND #{quoted_table_name}.`showcases_type` = ?
164
- AND (#{facet_conditions.join(" OR ")})
165
- )
166
- ), parent_id, parent_type] + facet_condition_values
155
+ conditions = [
156
+ %(
157
+ #{facet_selection_quoted_table_name}.`atrium_showcase_id`
158
+ IN
159
+ (
160
+ SELECT #{facet_selection_quoted_table_name}.`atrium_showcase_id`
161
+ FROM #{facet_selection_quoted_table_name}
162
+ INNER JOIN #{quoted_table_name}
163
+ ON #{facet_selection_quoted_table_name}.`atrium_showcase_id` =
164
+ #{quoted_table_name}.`id`
165
+ WHERE #{quoted_table_name}.showcases_id = ?
166
+ AND #{quoted_table_name}.`showcases_type` = ?
167
+ AND (
168
+ #{facet_conditions.join(" OR ")}
169
+ )
170
+ )
171
+ ),
172
+ parent_id,
173
+ parent_type,
174
+ ] + facet_condition_values
167
175
 
168
176
  having_str = %(
169
- COUNT(#{Atrium::Showcase::FacetSelection.quoted_table_name}.`atrium_showcase_id`) = #{facet_conditions.size}
177
+ COUNT(
178
+ #{facet_selection_quoted_table_name}.`atrium_showcase_id`
179
+ ) =
180
+ #{facet_conditions.size}
170
181
  )
171
182
 
172
183
  joins(:facet_selections).
173
- where(conditions).
174
- group("#{Atrium::Showcase::FacetSelection.quoted_table_name}.`atrium_showcase_id`").
175
- having(having_str)
184
+ where(conditions).
185
+ group("#{facet_selection_quoted_table_name}.`atrium_showcase_id`").
186
+ having(having_str)
176
187
  end
177
188
  }
178
-
179
189
  end