compartment 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (330) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +24 -0
  4. data/Rakefile +34 -0
  5. data/app/assets/javascripts/compartment/application.js +24 -0
  6. data/app/assets/javascripts/compartment/collections/content_block_types.js.coffee +5 -0
  7. data/app/assets/javascripts/compartment/collections/content_blocks.js.coffee +12 -0
  8. data/app/assets/javascripts/compartment/compartment.js.coffee +12 -0
  9. data/app/assets/javascripts/compartment/modals.js.coffee +49 -0
  10. data/app/assets/javascripts/compartment/models/content_area.js.coffee +12 -0
  11. data/app/assets/javascripts/compartment/models/content_block.js.coffee +1 -0
  12. data/app/assets/javascripts/compartment/models/content_block_type.js.coffee +1 -0
  13. data/app/assets/javascripts/compartment/models/page.js.coffee +36 -0
  14. data/app/assets/javascripts/compartment/routers/default.js.coffee +13 -0
  15. data/app/assets/javascripts/compartment/views/content_area.js.coffee +63 -0
  16. data/app/assets/javascripts/compartment/views/content_block.js.coffee +61 -0
  17. data/app/assets/javascripts/compartment/views/content_span.js.coffee +61 -0
  18. data/app/assets/javascripts/compartment/views/modal.js.coffee +42 -0
  19. data/app/assets/javascripts/compartment/views/modals/new_content_block.js.coffee +20 -0
  20. data/app/assets/javascripts/compartment/views/modals/new_page.js.coffee +3 -0
  21. data/app/assets/javascripts/compartment/views/modals/old_modal.js.coffee +72 -0
  22. data/app/assets/javascripts/compartment/views/page.js.coffee +14 -0
  23. data/app/assets/javascripts/compartment/views/page_toolbar.js.coffee +19 -0
  24. data/app/assets/stylesheets/compartment/admin-styles.sass +6 -0
  25. data/app/assets/stylesheets/compartment/forms.sass +118 -0
  26. data/app/assets/stylesheets/compartment/frontend-styles.sass +64 -0
  27. data/app/assets/stylesheets/compartment/modals.sass +21 -0
  28. data/app/assets/stylesheets/compartment/page_toolbar.sass +51 -0
  29. data/app/assets/templates/compartment/add_content_button.jst.eco +3 -0
  30. data/app/assets/templates/compartment/content_blocks/actions.jst.eco +6 -0
  31. data/app/assets/templates/compartment/content_blocks/edit.jst.ejs +8 -0
  32. data/app/assets/templates/compartment/content_blocks/new.jst.eco +6 -0
  33. data/app/assets/templates/compartment/content_blocks/show.jst.ejs +8 -0
  34. data/app/assets/templates/compartment/modals/new_content_block.jst.eco +12 -0
  35. data/app/assets/templates/compartment/modals/new_page.jst.eco +11 -0
  36. data/app/assets/templates/compartment/modals/sign_up_form.jst.eco +27 -0
  37. data/app/assets/templates/compartment/page_toolbar.jst.eco +6 -0
  38. data/app/controllers/compartment/admin/account_controller.rb +12 -0
  39. data/app/controllers/compartment/admin/application_controller.rb +27 -0
  40. data/app/controllers/compartment/admin/content_block_types_controller.rb +14 -0
  41. data/app/controllers/compartment/admin/content_blocks_controller.rb +68 -0
  42. data/app/controllers/compartment/admin/dashboard_controller.rb +12 -0
  43. data/app/controllers/compartment/admin/pages_controller.rb +98 -0
  44. data/app/controllers/compartment/admin/sessions_controller.rb +34 -0
  45. data/app/controllers/compartment/admin/settings_controller.rb +13 -0
  46. data/app/controllers/compartment/admin/sites_controller.rb +89 -0
  47. data/app/controllers/compartment/admin/users_controller.rb +89 -0
  48. data/app/controllers/compartment/application_controller.rb +16 -0
  49. data/app/controllers/compartment/pages_controller.rb +17 -0
  50. data/app/controllers/compartment/theme_assets_controller.rb +12 -0
  51. data/app/helpers/compartment/application_helper.rb +12 -0
  52. data/app/helpers/compartment/pages_helper.rb +93 -0
  53. data/app/models/compartment/content_block.rb +14 -0
  54. data/app/models/compartment/page.rb +14 -0
  55. data/app/models/compartment/site.rb +14 -0
  56. data/app/models/compartment/theme.rb +41 -0
  57. data/app/models/compartment/user.rb +8 -0
  58. data/app/themes/default/images/background_body.jpg +0 -0
  59. data/app/themes/default/images/background_header.jpg +0 -0
  60. data/app/themes/default/images/favicon.ico +0 -0
  61. data/app/themes/default/images/image.jpg +0 -0
  62. data/app/themes/default/info.rb +4 -0
  63. data/app/themes/default/stylesheets/styles.css +209 -0
  64. data/app/themes/default/templates/error_404.html +1 -0
  65. data/app/themes/default/templates/error_500.html +1 -0
  66. data/app/themes/default/templates/one_column.erb +63 -0
  67. data/app/themes/default/templates/two_column.erb +70 -0
  68. data/app/views/compartment/admin/account/show.html.erb +1 -0
  69. data/app/views/compartment/admin/content_blocks/_form.html.erb +22 -0
  70. data/app/views/compartment/admin/content_blocks/edit.html.erb +6 -0
  71. data/app/views/compartment/admin/content_blocks/index.html.erb +25 -0
  72. data/app/views/compartment/admin/content_blocks/new.html.erb +5 -0
  73. data/app/views/compartment/admin/content_blocks/show.html.erb +15 -0
  74. data/app/views/compartment/admin/dashboard/index.html.erb +1 -0
  75. data/app/views/compartment/admin/pages/_form.html.erb +29 -0
  76. data/app/views/compartment/admin/pages/edit.html.erb +6 -0
  77. data/app/views/compartment/admin/pages/index.html.erb +7 -0
  78. data/app/views/compartment/admin/pages/new.html.erb +4 -0
  79. data/app/views/compartment/admin/pages/show.html.erb +25 -0
  80. data/app/views/compartment/admin/pages/toolbar.html.erb +56 -0
  81. data/app/views/compartment/admin/sessions/new.html.erb +19 -0
  82. data/app/views/compartment/admin/settings/index.html.erb +3 -0
  83. data/app/views/compartment/admin/sites/_form.html.erb +21 -0
  84. data/app/views/compartment/admin/sites/edit.html.erb +6 -0
  85. data/app/views/compartment/admin/sites/index.html.erb +23 -0
  86. data/app/views/compartment/admin/sites/new.html.erb +5 -0
  87. data/app/views/compartment/admin/sites/show.html.erb +10 -0
  88. data/app/views/compartment/admin/users/_form.html.erb +29 -0
  89. data/app/views/compartment/admin/users/edit.html.erb +6 -0
  90. data/app/views/compartment/admin/users/index.html.erb +24 -0
  91. data/app/views/compartment/admin/users/new.html.erb +5 -0
  92. data/app/views/compartment/admin/users/show.html.erb +15 -0
  93. data/app/views/compartment/errors/page_not_found.html.erb +1 -0
  94. data/app/views/compartment/errors/unknown_site.html.erb +1 -0
  95. data/app/views/layouts/compartment/application.html.erb +41 -0
  96. data/app/views/layouts/compartment/authentication.html.erb +45 -0
  97. data/config/cucumber.yml +8 -0
  98. data/config/routes.rb +25 -0
  99. data/db/migrate/20121208061936_create_compartment_sites.rb +9 -0
  100. data/db/migrate/20121208063802_create_compartment_pages.rb +13 -0
  101. data/db/migrate/20121209214222_create_compartment_content_blocks.rb +12 -0
  102. data/db/migrate/20121209223603_create_compartment_themes.rb +11 -0
  103. data/db/migrate/20121214060141_create_compartment_users.rb +10 -0
  104. data/lib/compartment.rb +13 -0
  105. data/lib/compartment/config.rb +20 -0
  106. data/lib/compartment/content_block_dsl.rb +25 -0
  107. data/lib/compartment/engine.rb +21 -0
  108. data/lib/compartment/version.rb +3 -0
  109. data/lib/tasks/compartment_tasks.rake +21 -0
  110. data/spec/controllers/compartment/admin/content_blocks_controller_spec_autogenerated.rb +164 -0
  111. data/spec/dummy/README.rdoc +261 -0
  112. data/spec/dummy/Rakefile +7 -0
  113. data/spec/dummy/app/assets/javascripts/application.js +15 -0
  114. data/spec/dummy/app/assets/stylesheets/application.css +13 -0
  115. data/spec/dummy/app/controllers/application_controller.rb +3 -0
  116. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  117. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  118. data/spec/dummy/config.ru +4 -0
  119. data/spec/dummy/config/application.rb +59 -0
  120. data/spec/dummy/config/boot.rb +10 -0
  121. data/spec/dummy/config/database.yml +25 -0
  122. data/spec/dummy/config/environment.rb +5 -0
  123. data/spec/dummy/config/environments/development.rb +37 -0
  124. data/spec/dummy/config/environments/production.rb +67 -0
  125. data/spec/dummy/config/environments/test.rb +37 -0
  126. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  127. data/spec/dummy/config/initializers/inflections.rb +15 -0
  128. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  129. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  130. data/spec/dummy/config/initializers/session_store.rb +8 -0
  131. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  132. data/spec/dummy/config/locales/en.yml +5 -0
  133. data/spec/dummy/config/routes.rb +4 -0
  134. data/spec/dummy/db/development.sqlite3 +0 -0
  135. data/spec/dummy/db/schema.rb +60 -0
  136. data/spec/dummy/db/test.sqlite3 +0 -0
  137. data/spec/dummy/lib/tasks/cucumber.rake +65 -0
  138. data/spec/dummy/log/development.log +4127 -0
  139. data/spec/dummy/log/test.log +93426 -0
  140. data/spec/dummy/public/404.html +26 -0
  141. data/spec/dummy/public/422.html +26 -0
  142. data/spec/dummy/public/500.html +25 -0
  143. data/spec/dummy/public/favicon.ico +0 -0
  144. data/spec/dummy/script/rails +6 -0
  145. data/spec/dummy/tmp/cache/assets/C3E/240/sprockets%2F055c2b9605c134d2066c606674f01d05 +0 -0
  146. data/spec/dummy/tmp/cache/assets/C47/120/sprockets%2F185f0b2e6c231347125613b2407ff686 +0 -0
  147. data/spec/dummy/tmp/cache/assets/C50/DA0/sprockets%2F456eeb2d37782046ba6c030836643476 +0 -0
  148. data/spec/dummy/tmp/cache/assets/C52/1C0/sprockets%2Fa78612d84335327b0983c4dc225d1668 +0 -0
  149. data/spec/dummy/tmp/cache/assets/C76/0F0/sprockets%2F75046a33c909e2b406a3a5929a633a09 +0 -0
  150. data/spec/dummy/tmp/cache/assets/C77/980/sprockets%2F360cfd80942c2190cb67268b1630a484 +0 -0
  151. data/spec/dummy/tmp/cache/assets/C8E/6D0/sprockets%2F9e0fc4406af59e36f7d9670453801932 +0 -0
  152. data/spec/dummy/tmp/cache/assets/C8F/840/sprockets%2F5e5130c2ae14217f1530b406b32a832f +0 -0
  153. data/spec/dummy/tmp/cache/assets/C9D/370/sprockets%2F6191b8cb150830acc70b897012d4008e +0 -0
  154. data/spec/dummy/tmp/cache/assets/CA0/C60/sprockets%2Fa16082a8613c43441e0d26b0945aec95 +0 -0
  155. data/spec/dummy/tmp/cache/assets/CA1/3D0/sprockets%2Fb60224c86974950f832ac26115bbec00 +0 -0
  156. data/spec/dummy/tmp/cache/assets/CA1/A40/sprockets%2F446b1711d42cc93f65a4a7d22564b035 +0 -0
  157. data/spec/dummy/tmp/cache/assets/CA7/750/sprockets%2F412bb188276e8969c51469a0ab010a8a +0 -0
  158. data/spec/dummy/tmp/cache/assets/CA8/250/sprockets%2F5721e7a044aa7244f3f42139ed26385b +0 -0
  159. data/spec/dummy/tmp/cache/assets/CA9/750/sprockets%2F81a628a4623319f364f30e31e9e3eb22 +0 -0
  160. data/spec/dummy/tmp/cache/assets/CAC/7A0/sprockets%2Fd1db034053f1908095360ef27668c7da +0 -0
  161. data/spec/dummy/tmp/cache/assets/CAF/5C0/sprockets%2F72933125931d191df741f01fc5ff2f26 +0 -0
  162. data/spec/dummy/tmp/cache/assets/CB0/930/sprockets%2F8272ad6d0b079362b2491ce3396a2c97 +0 -0
  163. data/spec/dummy/tmp/cache/assets/CB1/230/sprockets%2Fbb1808e1d9891094168331ff2fa29c23 +0 -0
  164. data/spec/dummy/tmp/cache/assets/CB4/FB0/sprockets%2F1f909bc406bf958072ad795d5303f235 +0 -0
  165. data/spec/dummy/tmp/cache/assets/CB6/730/sprockets%2F19ef44fa001bbda37824909746238f68 +0 -0
  166. data/spec/dummy/tmp/cache/assets/CBC/170/sprockets%2F895158f320da274e839a4978bb3a25f4 +0 -0
  167. data/spec/dummy/tmp/cache/assets/CBD/160/sprockets%2Fe56dd38d8c51e8095620f5d67103909d +0 -0
  168. data/spec/dummy/tmp/cache/assets/CC2/AD0/sprockets%2F94439c33d1a5c557b89cb739e08e1991 +0 -0
  169. data/spec/dummy/tmp/cache/assets/CCB/850/sprockets%2F02e05b258d7c735f26e633b010c920cb +0 -0
  170. data/spec/dummy/tmp/cache/assets/CD0/500/sprockets%2Fd27696561a9ec3799b76d4af927338e5 +0 -0
  171. data/spec/dummy/tmp/cache/assets/CD0/F70/sprockets%2Fb770d8010fa12ecf83d2a171480763d4 +0 -0
  172. data/spec/dummy/tmp/cache/assets/CD6/980/sprockets%2F78671dda395c821a632ca0871043abf5 +0 -0
  173. data/spec/dummy/tmp/cache/assets/CD7/7C0/sprockets%2F04f40780f76ba40666c06bf4d1273ef1 +0 -0
  174. data/spec/dummy/tmp/cache/assets/CD7/8B0/sprockets%2F4a7030aa11b628c26653f58da193f84f +0 -0
  175. data/spec/dummy/tmp/cache/assets/CD7/E40/sprockets%2F244cc083a125c752f459d8ddfc510218 +0 -0
  176. data/spec/dummy/tmp/cache/assets/CD9/A90/sprockets%2Fdb4d98730929f78269f493773b5be8e8 +0 -0
  177. data/spec/dummy/tmp/cache/assets/CDE/0E0/sprockets%2F4b5a7685116047b5ece80c613a4eb866 +0 -0
  178. data/spec/dummy/tmp/cache/assets/CE2/F80/sprockets%2F3f4be29b1866cb0b0e2dc56536934189 +0 -0
  179. data/spec/dummy/tmp/cache/assets/CE3/B50/sprockets%2F10e4d9543759ae40f8249c45d34a31ff +0 -0
  180. data/spec/dummy/tmp/cache/assets/CE5/2A0/sprockets%2F38ab60b12edd0388b87513096a7b789e +0 -0
  181. data/spec/dummy/tmp/cache/assets/CE8/330/sprockets%2F6f9128544f46a17c60027c35fce4ef75 +0 -0
  182. data/spec/dummy/tmp/cache/assets/CEB/200/sprockets%2F3007de86523e820696bcaa986ef2a785 +0 -0
  183. data/spec/dummy/tmp/cache/assets/CEB/4E0/sprockets%2Fffb7c224a9178c6154dea70d94089627 +0 -0
  184. data/spec/dummy/tmp/cache/assets/CEF/A00/sprockets%2F42449d8a1940eba9130a32d02ab2cf20 +0 -0
  185. data/spec/dummy/tmp/cache/assets/CF0/C20/sprockets%2F83a42387a965774facbd717770f6f2a7 +0 -0
  186. data/spec/dummy/tmp/cache/assets/CF5/060/sprockets%2F2986d6ece9249d6f3f9ac694540a2372 +0 -0
  187. data/spec/dummy/tmp/cache/assets/CF9/F20/sprockets%2F986fdff75a775c678471053713d8c1ed +0 -0
  188. data/spec/dummy/tmp/cache/assets/CFC/FF0/sprockets%2F47850d338885758cbc4bd4e7b9328fe8 +0 -0
  189. data/spec/dummy/tmp/cache/assets/D05/D70/sprockets%2F7007cf768de19464db05ae106ca2604d +0 -0
  190. data/spec/dummy/tmp/cache/assets/D06/590/sprockets%2Fc045182e2f0f3816f76aeb421a167ee3 +0 -0
  191. data/spec/dummy/tmp/cache/assets/D09/D40/sprockets%2F1bcb641850b964f38417f5cc91e00c7a +0 -0
  192. data/spec/dummy/tmp/cache/assets/D0B/7D0/sprockets%2Ffa7e2864007ff1f93ab619b61be12705 +0 -0
  193. data/spec/dummy/tmp/cache/assets/D0C/2B0/sprockets%2Fc01d05da2c09811f6ebb6457a579f393 +0 -0
  194. data/spec/dummy/tmp/cache/assets/D0F/0A0/sprockets%2F7530089ddbee51165c91d42983ea5cc1 +0 -0
  195. data/spec/dummy/tmp/cache/assets/D10/190/sprockets%2F17a938bb93cdc2e9a4a71383f824811c +0 -0
  196. data/spec/dummy/tmp/cache/assets/D13/490/sprockets%2Ffaa1ae5ba596394a7e6f21293362884c +0 -0
  197. data/spec/dummy/tmp/cache/assets/D18/4F0/sprockets%2F0dd2285c0874040e463e76b49fc9ee6d +0 -0
  198. data/spec/dummy/tmp/cache/assets/D1B/080/sprockets%2F8289214205c22b86fd90e7dde88e70dc +0 -0
  199. data/spec/dummy/tmp/cache/assets/D20/960/sprockets%2F9d81c99fa4b33c3e2f6425593bf6e590 +0 -0
  200. data/spec/dummy/tmp/cache/assets/D2B/DE0/sprockets%2F80480edba05dbf2a035b05454d57e34c +0 -0
  201. data/spec/dummy/tmp/cache/assets/D2C/210/sprockets%2F8f316259703dacdd21f83ad05f0ca132 +0 -0
  202. data/spec/dummy/tmp/cache/assets/D2C/780/sprockets%2Ffe4d215714b72c23b8dd8a5f0020ad09 +0 -0
  203. data/spec/dummy/tmp/cache/assets/D2F/180/sprockets%2Fbf3b7ed377172b501728a446a107bbcc +0 -0
  204. data/spec/dummy/tmp/cache/assets/D37/EC0/sprockets%2Fea6cc6410ad20a1c67445f8e860fe444 +0 -0
  205. data/spec/dummy/tmp/cache/assets/D38/6D0/sprockets%2F7cc91ca26644e7b06438b0bf8e405d0d +0 -0
  206. data/spec/dummy/tmp/cache/assets/D3B/780/sprockets%2F1e0cf992502bd912aa9a191ec778cc44 +0 -0
  207. data/spec/dummy/tmp/cache/assets/D3B/930/sprockets%2F0e770ba1bd268256242eaea8c9718e5c +0 -0
  208. data/spec/dummy/tmp/cache/assets/D3D/D10/sprockets%2F953c3b472be2ede368471137bdc90ae4 +0 -0
  209. data/spec/dummy/tmp/cache/assets/D3E/500/sprockets%2Fe60a09899ac6c983ddea50151d2ea273 +0 -0
  210. data/spec/dummy/tmp/cache/assets/D3F/340/sprockets%2Fef74a174d01b6808e4bc5a2ef87721e4 +0 -0
  211. data/spec/dummy/tmp/cache/assets/D41/930/sprockets%2Fb3d4b6333baf5e867f2b361c5b2c7498 +0 -0
  212. data/spec/dummy/tmp/cache/assets/D45/A40/sprockets%2Fc60487581ef1accbcc895418c71f2e72 +0 -0
  213. data/spec/dummy/tmp/cache/assets/D46/090/sprockets%2F0ea2b9f32f6719be92596d7f6033b2ec +0 -0
  214. data/spec/dummy/tmp/cache/assets/D48/750/sprockets%2F76db9aaecd1148827ed661f924d6f251 +0 -0
  215. data/spec/dummy/tmp/cache/assets/D4B/990/sprockets%2Fc8702905706ece4f927eb4ae267bf7d4 +0 -0
  216. data/spec/dummy/tmp/cache/assets/D51/720/sprockets%2F1a0601ba3458aa96131495dc4aca0fbe +0 -0
  217. data/spec/dummy/tmp/cache/assets/D52/EF0/sprockets%2Ffd5f726a8a0df8287448fa948db1b817 +0 -0
  218. data/spec/dummy/tmp/cache/assets/D57/4A0/sprockets%2F2f425bc85c002e370adbd8c51c8220eb +0 -0
  219. data/spec/dummy/tmp/cache/assets/D58/940/sprockets%2F1c3b2ff81dc2a0482d34112f9fb12d2e +0 -0
  220. data/spec/dummy/tmp/cache/assets/D5B/7F0/sprockets%2F523ea79ecf40a31bd0b6ddb56e334123 +0 -0
  221. data/spec/dummy/tmp/cache/assets/D5F/210/sprockets%2F41a7b5fa423ac505c66add2b98942c0b +0 -0
  222. data/spec/dummy/tmp/cache/assets/D62/8F0/sprockets%2F5b6411bf7a3d055f2f07a8bf457a2bd3 +0 -0
  223. data/spec/dummy/tmp/cache/assets/D63/D20/sprockets%2F008f511a7971c5311f1b8d4fddaad18f +0 -0
  224. data/spec/dummy/tmp/cache/assets/D65/050/sprockets%2Faaee3ad426e876a0f2219b790191b2ed +0 -0
  225. data/spec/dummy/tmp/cache/assets/D65/3A0/sprockets%2Fc1ec78a1c30ff75157afa34014f3ef63 +0 -0
  226. data/spec/dummy/tmp/cache/assets/D69/6A0/sprockets%2F1bf617ff04da082c0eb39b9445d8d3a5 +0 -0
  227. data/spec/dummy/tmp/cache/assets/D6B/0D0/sprockets%2Fea8a529c947d286a13e5eefe16b12b12 +0 -0
  228. data/spec/dummy/tmp/cache/assets/D6D/1F0/sprockets%2F11595043cc2f4c29d2fb5cea595e1b9e +0 -0
  229. data/spec/dummy/tmp/cache/assets/D70/970/sprockets%2Fb21f42ff3dec1446ff32e8f260b18c78 +0 -0
  230. data/spec/dummy/tmp/cache/assets/D71/FB0/sprockets%2F68433b17ff4eaf61f5048ee06e8cb20e +0 -0
  231. data/spec/dummy/tmp/cache/assets/D73/060/sprockets%2Fd1df80c17350a4ca8daf86c7599f41f1 +0 -0
  232. data/spec/dummy/tmp/cache/assets/D74/050/sprockets%2F29efd25b4cdd2d7607b0d477705b8ec6 +0 -0
  233. data/spec/dummy/tmp/cache/assets/D78/DC0/sprockets%2F3f1950b87fc75fb6f1dbb672e3ed5327 +0 -0
  234. data/spec/dummy/tmp/cache/assets/D79/710/sprockets%2F0b98cf262e57ae187a6192f29ccad49d +0 -0
  235. data/spec/dummy/tmp/cache/assets/D7A/5F0/sprockets%2F69fbbb1724da70dc767193677df3c4de +0 -0
  236. data/spec/dummy/tmp/cache/assets/D7B/7B0/sprockets%2F9df3019edd7238ea05c0d86ae899f3b3 +0 -0
  237. data/spec/dummy/tmp/cache/assets/D7E/380/sprockets%2F256295ea2de1a85d8aefa6a797c69c90 +0 -0
  238. data/spec/dummy/tmp/cache/assets/D81/D40/sprockets%2Ff6ffb740a883607444fcc8e9e51c8dc4 +0 -0
  239. data/spec/dummy/tmp/cache/assets/D82/120/sprockets%2Fcfa458d7fd9975793198ae714e02ecaa +0 -0
  240. data/spec/dummy/tmp/cache/assets/D86/A60/sprockets%2Fc38e7ef3fd858357b7fc3c2fb8a91564 +0 -0
  241. data/spec/dummy/tmp/cache/assets/D89/DA0/sprockets%2F8d18248a443fea94a88079efa99bfaf7 +0 -0
  242. data/spec/dummy/tmp/cache/assets/D8C/770/sprockets%2F7b0fa3005aecf24c6e23af9c5ad02827 +0 -0
  243. data/spec/dummy/tmp/cache/assets/D93/3D0/sprockets%2Fa5bb4b51d7b5cf47a9d85ccd00904f12 +0 -0
  244. data/spec/dummy/tmp/cache/assets/D94/420/sprockets%2F2e54f2c67f40ae3b28fdb90c215d3d3c +0 -0
  245. data/spec/dummy/tmp/cache/assets/D97/890/sprockets%2Fea52bb8869ad0d04f5a91ecabd722239 +0 -0
  246. data/spec/dummy/tmp/cache/assets/D98/770/sprockets%2Fab39cb17cb0c7ddc46a7e083741d7c28 +0 -0
  247. data/spec/dummy/tmp/cache/assets/D9A/910/sprockets%2F52be75ddde7b2ffa06af4fd068008091 +0 -0
  248. data/spec/dummy/tmp/cache/assets/D9E/8D0/sprockets%2F6183b396dba27e5bb64eaa8dce09740e +0 -0
  249. data/spec/dummy/tmp/cache/assets/DA6/EC0/sprockets%2F2cd5612affe9038f43fb59fa525ae39e +0 -0
  250. data/spec/dummy/tmp/cache/assets/DA9/610/sprockets%2F070519c5b7c9e2a05ffb7a82e9c69cdf +0 -0
  251. data/spec/dummy/tmp/cache/assets/DAF/0A0/sprockets%2F81a6c69e615b9f6c0a7870fde9e4ae7a +0 -0
  252. data/spec/dummy/tmp/cache/assets/DB4/9A0/sprockets%2F152cabc332eafced3e25d12e33a4435e +0 -0
  253. data/spec/dummy/tmp/cache/assets/DC6/2D0/sprockets%2F7f232a3b35c509bdb0cdd0eee98e3c36 +0 -0
  254. data/spec/dummy/tmp/cache/assets/DC9/830/sprockets%2Fff60d20f4db56b13e6bad309b96c08fd +0 -0
  255. data/spec/dummy/tmp/cache/assets/DCF/A70/sprockets%2F5cfadbd4a6878da4c19eb5451225e3ef +0 -0
  256. data/spec/dummy/tmp/cache/assets/DD3/1E0/sprockets%2Fb2dbcbff454c034f8ecb7528b908c8a8 +0 -0
  257. data/spec/dummy/tmp/cache/assets/DD3/9E0/sprockets%2F99fee80ec4d119a6cc5a3d90d1bb7d92 +0 -0
  258. data/spec/dummy/tmp/cache/assets/DD5/F20/sprockets%2F9bcb865783d19929b0eace77ab1ac4ec +0 -0
  259. data/spec/dummy/tmp/cache/assets/DD9/D20/sprockets%2F774bf932abf9fed1f8d1de4a68b931e0 +0 -0
  260. data/spec/dummy/tmp/cache/assets/DDA/830/sprockets%2Ff565a73a906a56c2e19ce6dfbf5e61ff +0 -0
  261. data/spec/dummy/tmp/cache/assets/DDA/F10/sprockets%2Fd8b845f49355b153aedcb6d9a8fc7ca5 +0 -0
  262. data/spec/dummy/tmp/cache/assets/DDC/5D0/sprockets%2F364253d7cbaf3ad0350ad0cb6a5cbdc0 +0 -0
  263. data/spec/dummy/tmp/cache/assets/DE4/E20/sprockets%2F2fdc2c653d97cb4f40fed7f45d879da9 +0 -0
  264. data/spec/dummy/tmp/cache/assets/DF2/880/sprockets%2Fc906bbb19c4a06daf594ab3e286bc3bd +0 -0
  265. data/spec/dummy/tmp/cache/assets/DF4/0F0/sprockets%2F3421cdee43ff1e0d6cfa27eafa7e2516 +0 -0
  266. data/spec/dummy/tmp/cache/assets/DF6/410/sprockets%2Fbcdfb6d07d79490cbfb6801aa63cc5c2 +0 -0
  267. data/spec/dummy/tmp/cache/assets/DFA/2D0/sprockets%2F240cd9ec435b5fa1c59ff1b1a79dae8a +0 -0
  268. data/spec/dummy/tmp/cache/assets/E02/4E0/sprockets%2Fbfb8eaedf0b359e72db268fe2c4175c4 +0 -0
  269. data/spec/dummy/tmp/cache/assets/E07/F90/sprockets%2F6fbb6d5990372ef85acc84beceac4b73 +0 -0
  270. data/spec/dummy/tmp/cache/assets/E0D/470/sprockets%2Faef35e2e6837a1ffa4d5898acc5a8fe4 +0 -0
  271. data/spec/dummy/tmp/cache/assets/E0F/790/sprockets%2F2f4eb4bda5c5ca56d3340caa5aa82c0b +0 -0
  272. data/spec/dummy/tmp/cache/assets/E40/950/sprockets%2F7ff1e1ede4ad5d7ef5094b0efd8896cc +0 -0
  273. data/spec/dummy/tmp/cache/assets/E7B/720/sprockets%2Fbbeda91214d7ec5bd4c2fdb5b5eead02 +0 -0
  274. data/spec/dummy/tmp/cache/assets/E98/680/sprockets%2F42fd3fbf3bc7ecafb09f7cff81088ded +0 -0
  275. data/spec/dummy/tmp/cache/assets/EC6/860/sprockets%2F83df86ffb45cdaaea9ba6efbca34d7c9 +0 -0
  276. data/spec/dummy/tmp/cache/assets/EEC/1E0/sprockets%2Fbfa1aff0059cf17ccf5f27afb6ffbfeb +0 -0
  277. data/spec/dummy/tmp/cache/sass/301ce5a14d4f5bb39e22a56c42ad3d69df129f35/bootstrap.scssc +0 -0
  278. data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_accordion.scssc +0 -0
  279. data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_alerts.scssc +0 -0
  280. data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_breadcrumbs.scssc +0 -0
  281. data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_button-groups.scssc +0 -0
  282. data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_buttons.scssc +0 -0
  283. data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_carousel.scssc +0 -0
  284. data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_close.scssc +0 -0
  285. data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_code.scssc +0 -0
  286. data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_component-animations.scssc +0 -0
  287. data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_dropdowns.scssc +0 -0
  288. data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_forms.scssc +0 -0
  289. data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_grid.scssc +0 -0
  290. data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_hero-unit.scssc +0 -0
  291. data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_labels-badges.scssc +0 -0
  292. data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_layouts.scssc +0 -0
  293. data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_media.scssc +0 -0
  294. data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_mixins.scssc +0 -0
  295. data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_modals.scssc +0 -0
  296. data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_navbar.scssc +0 -0
  297. data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_navs.scssc +0 -0
  298. data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_pager.scssc +0 -0
  299. data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_pagination.scssc +0 -0
  300. data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_popovers.scssc +0 -0
  301. data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_progress-bars.scssc +0 -0
  302. data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_reset.scssc +0 -0
  303. data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_scaffolding.scssc +0 -0
  304. data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_sprites.scssc +0 -0
  305. data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_tables.scssc +0 -0
  306. data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_thumbnails.scssc +0 -0
  307. data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_tooltip.scssc +0 -0
  308. data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_type.scssc +0 -0
  309. data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_utilities.scssc +0 -0
  310. data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_variables.scssc +0 -0
  311. data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_wells.scssc +0 -0
  312. data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/bootstrap.scssc +0 -0
  313. data/spec/dummy/tmp/cache/sass/e09d521ae3b813be62b26216d68685f8f049a496/admin-styles.sassc +0 -0
  314. data/spec/dummy/tmp/cache/sass/e09d521ae3b813be62b26216d68685f8f049a496/frontend-styles.sassc +0 -0
  315. data/spec/factories/compartment_admin_content_blocks.rb +8 -0
  316. data/spec/factories/content_block.rb +8 -0
  317. data/spec/factories/page.rb +16 -0
  318. data/spec/factories/site.rb +13 -0
  319. data/spec/factories/theme.rb +5 -0
  320. data/spec/factories/user.rb +6 -0
  321. data/spec/helpers/pages_helper_spec.rb +126 -0
  322. data/spec/lib/compartment/config_spec.rb +11 -0
  323. data/spec/lib/compartment_spec.rb +10 -0
  324. data/spec/models/compartment/content_block_spec.rb +12 -0
  325. data/spec/models/compartment/page_spec.rb +39 -0
  326. data/spec/models/compartment/site_spec.rb +8 -0
  327. data/spec/models/compartment/theme_spec.rb +53 -0
  328. data/spec/models/compartment/user_spec.rb +6 -0
  329. data/spec/spec_helper.rb +50 -0
  330. metadata +703 -0
@@ -0,0 +1,5 @@
1
+ <h1>New site</h1>
2
+
3
+ <%= render 'form' %>
4
+
5
+ <%= link_to 'Back', sites_path %>
@@ -0,0 +1,10 @@
1
+ <p id="notice"><%= notice %></p>
2
+
3
+ <p>
4
+ <b>Domain:</b>
5
+ <%= @site.domain %>
6
+ </p>
7
+
8
+
9
+ <%= link_to 'Edit', edit_site_path(@site) %> |
10
+ <%= link_to 'Back', sites_path %>
@@ -0,0 +1,29 @@
1
+ <%= form_for(@user) do |f| %>
2
+ <% if @user.errors.any? %>
3
+ <div id="error_explanation">
4
+ <h2><%= pluralize(@user.errors.count, "error") %> prohibited this user from being saved:</h2>
5
+
6
+ <ul>
7
+ <% @user.errors.full_messages.each do |msg| %>
8
+ <li><%= msg %></li>
9
+ <% end %>
10
+ </ul>
11
+ </div>
12
+ <% end %>
13
+
14
+ <div class="field">
15
+ <%= f.label :email %>
16
+ <%= f.text_field :email %>
17
+ </div>
18
+ <div class="field">
19
+ <%= f.label :password %>
20
+ <%= f.password_field :password %>
21
+ </div>
22
+ <div class="field">
23
+ <%= f.label :password_confirmation %>
24
+ <%= f.password_field :password_confirmation %>
25
+ </div>
26
+ <div class="actions">
27
+ <%= f.submit %>
28
+ </div>
29
+ <% end %>
@@ -0,0 +1,6 @@
1
+ <h1>Editing user</h1>
2
+
3
+ <%= render 'form' %>
4
+
5
+ <%= link_to 'Show', @user %> |
6
+ <%= link_to 'Back', users_path %>
@@ -0,0 +1,24 @@
1
+ <h1>Listing users</h1>
2
+
3
+ <%= link_to 'New User', new_admin_user_path, class: 'btn pull-right' %>
4
+
5
+ <table>
6
+ <tr>
7
+ <th>Email</th>
8
+ <th></th>
9
+ <th></th>
10
+ <th></th>
11
+ </tr>
12
+
13
+ <% @users.each do |user| %>
14
+ <tr>
15
+ <td><%= user.email %></td>
16
+ <td><%= link_to 'Show', admin_user_path(user) %></td>
17
+ <td><%#= link_to 'Edit', edit_admin_user_path(user) %></td>
18
+ <td><%#= link_to 'Destroy', admin_user(user), method: :delete, data: { confirm: 'Are you sure?' } %></td>
19
+ </tr>
20
+ <% end %>
21
+ </table>
22
+
23
+ <br />
24
+
@@ -0,0 +1,5 @@
1
+ <h1>New user</h1>
2
+
3
+ <%= render 'form' %>
4
+
5
+ <%= link_to 'Back', users_path %>
@@ -0,0 +1,15 @@
1
+ <p id="notice"><%= notice %></p>
2
+
3
+ <p>
4
+ <b>Email:</b>
5
+ <%= @user.email %>
6
+ </p>
7
+
8
+ <p>
9
+ <b>Password digest:</b>
10
+ <%= @user.password_digest %>
11
+ </p>
12
+
13
+
14
+ <%= link_to 'Edit', edit_user_path(@user) %> |
15
+ <%= link_to 'Back', users_path %>
@@ -0,0 +1 @@
1
+ <h1>Page Not Found</h1>
@@ -0,0 +1 @@
1
+ <h1>Site Not Found</h1>
@@ -0,0 +1,41 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>Compartment</title>
5
+ <%= stylesheet_link_tag 'compartment/admin-styles' %>
6
+ <%= csrf_meta_tags %>
7
+ </head>
8
+ <body>
9
+
10
+ <div class="container">
11
+
12
+ <header>
13
+ <div class="pull-right">
14
+ <%= link_to 'My Account', admin_account_path %> | <%= link_to 'Sign Out', admin_logout_path %>
15
+ </div>
16
+
17
+ <!-- TODO: make this dynamic -->
18
+ <ul class="nav nav-tabs">
19
+ <li class="<%= 'active' if params[:controller] == 'compartment/admin/dashboard' %>">
20
+ <%= link_to 'Dashboard', admin_dashboard_path %>
21
+ </li>
22
+ <li class="<%= 'active' if params[:controller] == 'compartment/admin/pages' %>">
23
+ <%= link_to 'Pages', admin_pages_path %>
24
+ </li>
25
+ <li class="<%= 'active' if params[:controller] == 'compartment/admin/users' %>">
26
+ <%= link_to 'Users', admin_users_path %>
27
+ </li>
28
+ <li class="<%= 'active' if params[:controller] == 'compartment/admin/settings' %>">
29
+ <%= link_to 'Settings', admin_settings_path %>
30
+ </li>
31
+ </ul>
32
+ </header>
33
+
34
+ <div class="body">
35
+ <%= yield %>
36
+ </div>
37
+
38
+ </div>
39
+
40
+ </body>
41
+ </html>
@@ -0,0 +1,45 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>Compartment</title>
5
+ <%= stylesheet_link_tag 'compartment/admin-styles' %>
6
+ <%= csrf_meta_tags %>
7
+ <style>
8
+ body {
9
+ padding-top: 40px;
10
+ padding-bottom: 40px;
11
+ background-color: #f5f5f5;
12
+ }
13
+ .form-signin {
14
+ max-width: 300px;
15
+ padding: 19px 29px 29px;
16
+ margin: 0 auto 20px;
17
+ background-color: #fff;
18
+ border: 1px solid #e5e5e5;
19
+ -webkit-border-radius: 5px;
20
+ -moz-border-radius: 5px;
21
+ border-radius: 5px;
22
+ -webkit-box-shadow: 0 1px 2px rgba(0,0,0,.05);
23
+ -moz-box-shadow: 0 1px 2px rgba(0,0,0,.05);
24
+ box-shadow: 0 1px 2px rgba(0,0,0,.05);
25
+ }
26
+ .form-signin input[type="text"], .form-signin input[type="password"] {
27
+ font-size: 16px;
28
+ height: auto;
29
+ margin-bottom: 15px;
30
+ padding: 7px 9px;
31
+ }
32
+ </style>
33
+ </head>
34
+ <body>
35
+
36
+ <div class="container">
37
+
38
+ <div class="body">
39
+ <%= yield %>
40
+ </div>
41
+
42
+ </div>
43
+
44
+ </body>
45
+ </html>
@@ -0,0 +1,8 @@
1
+ <%
2
+ rerun = File.file?('rerun.txt') ? IO.read('rerun.txt') : ""
3
+ rerun_opts = rerun.to_s.strip.empty? ? "--format #{ENV['CUCUMBER_FORMAT'] || 'progress'} features" : "--format #{ENV['CUCUMBER_FORMAT'] || 'pretty'} #{rerun}"
4
+ std_opts = "--format #{ENV['CUCUMBER_FORMAT'] || 'pretty'} --strict --tags ~@wip"
5
+ %>
6
+ default: <%= std_opts %> features
7
+ wip: --tags @wip:3 --wip features
8
+ rerun: <%= rerun_opts %> --format rerun --out rerun.txt --strict --tags ~@wip
@@ -0,0 +1,25 @@
1
+ Compartment::Engine.routes.draw do
2
+
3
+ namespace :admin, :constraints => { :protocol => :ssl } do
4
+ root :to => 'dashboard#index'
5
+ get 'login' => 'sessions#new', :as => :login
6
+ post 'login' => 'sessions#create'
7
+ get 'logout' => 'sessions#destroy', :as => :logout
8
+ get 'account' => 'account#show', :as => :account
9
+ get 'dashboard' => "dashboard#index", :as => :dashboard
10
+ get 'settings' => "settings#index", :as => :settings
11
+ resources :users
12
+ # resources :sites # this belongs in its own gem
13
+ resources :pages do
14
+ # get 'toolbar'
15
+ resources :content_areas
16
+ resources :content_blocks
17
+ end
18
+ resources :content_block_types, only: :index
19
+ # get 'content_block_types' => 'content_block_types#index', :as => :content_block_types
20
+ end
21
+
22
+ get 'assets/themes/:theme_name/*file.:ext' => 'theme_assets#send_asset'
23
+ match '*all', :to => 'pages#show', :as => :page
24
+ root :to => 'pages#show'
25
+ end
@@ -0,0 +1,9 @@
1
+ class CreateCompartmentSites < ActiveRecord::Migration
2
+ def change
3
+ create_table :compartment_sites do |t|
4
+ t.string :domain
5
+
6
+ t.timestamps
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,13 @@
1
+ class CreateCompartmentPages < ActiveRecord::Migration
2
+ def change
3
+ create_table :compartment_pages do |t|
4
+ t.references :site
5
+ t.string :url_path
6
+ t.string :title
7
+ t.string :template
8
+
9
+ t.timestamps
10
+ end
11
+ add_index :compartment_pages, :site_id
12
+ end
13
+ end
@@ -0,0 +1,12 @@
1
+ class CreateCompartmentContentBlocks < ActiveRecord::Migration
2
+ def change
3
+ create_table :compartment_content_blocks do |t|
4
+ t.references :page
5
+ t.text :content_area
6
+ t.text :data
7
+
8
+ t.timestamps
9
+ end
10
+ add_index :compartment_content_blocks, :page_id
11
+ end
12
+ end
@@ -0,0 +1,11 @@
1
+ class CreateCompartmentThemes < ActiveRecord::Migration
2
+ def change
3
+ create_table :compartment_themes do |t|
4
+ t.references :site
5
+ t.string :name
6
+
7
+ t.timestamps
8
+ end
9
+ add_index :compartment_themes, :site_id
10
+ end
11
+ end
@@ -0,0 +1,10 @@
1
+ class CreateCompartmentUsers < ActiveRecord::Migration
2
+ def change
3
+ create_table :compartment_users do |t|
4
+ t.string :email
5
+ t.string :password_digest
6
+ t.references :site
7
+ t.timestamps
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,13 @@
1
+ %w{
2
+ jquery-rails
3
+ backbone-on-rails
4
+ bootstrap-sass
5
+ compartment/config
6
+ compartment/engine
7
+ }.each { |dependency| require dependency }
8
+
9
+ module Compartment
10
+ def self.config
11
+ @config ||= Config.new
12
+ end
13
+ end
@@ -0,0 +1,20 @@
1
+ module Compartment
2
+ class Config
3
+ attr_accessor :themes_path,
4
+ :content_blocks_path
5
+
6
+ def content_block_types
7
+ @content_block_types ||= []
8
+ end
9
+
10
+ def load_content_block_types
11
+ Dir[content_blocks_path + '/*/*.rb'].each do |item|
12
+ require item
13
+ end
14
+ end
15
+
16
+ def registered_themes
17
+ @registered_themes ||= []
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,25 @@
1
+ module Compartment
2
+ module ContentBlockDsl
3
+
4
+ def self.included(base)
5
+ base.extend ClassMethods
6
+ Compartment.config.content_block_types << base
7
+ end
8
+
9
+ module ClassMethods
10
+
11
+ def name(name)
12
+ @name = name
13
+ end
14
+
15
+ def description(desc)
16
+ @description = desc
17
+ end
18
+
19
+ def to_json
20
+ { name: @name, description: @description }.to_json
21
+ end
22
+ end
23
+
24
+ end
25
+ end
@@ -0,0 +1,21 @@
1
+ module Compartment
2
+ class Engine < ::Rails::Engine
3
+ isolate_namespace Compartment
4
+
5
+ initializer "Compartment.configure_paths" do |app|
6
+ Compartment.config.themes_path = File.join(app.root, 'app', 'themes')
7
+ Compartment.config.content_blocks_path = File.join(app.root, 'app', 'content_blocks')
8
+ end
9
+
10
+ initializer "Compartment.load_content_block_types" do |app|
11
+ Compartment.config.load_content_block_types
12
+ end
13
+
14
+ config.generators do |g|
15
+ g.test_framework :rspec, :fixture => false
16
+ g.fixture_replacement :factory_girl, :dir => 'spec/factories'
17
+ g.assets false
18
+ g.helper false
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,3 @@
1
+ module Compartment
2
+ VERSION = "0.0.0"
3
+ end
@@ -0,0 +1,21 @@
1
+ namespace :compartment do
2
+
3
+ task :install do
4
+ # TODO: copy the themes directory into the rails app's app directory
5
+ end
6
+
7
+ desc "Seeds the database with a fully functioning demo site"
8
+ task :demo => :environment do
9
+ # create site
10
+ site = Compartment::Site.create!(:domain => 'localhost')
11
+ site.create_theme(:name => 'default')
12
+
13
+ #create users
14
+ site.users.create!(:email => 'demo', :password => 'demo')
15
+
16
+ # create content
17
+ page = site.pages.create!(:url_path => '/', :title => 'Homepage', :template => 'one_column')
18
+ page.content_blocks.create!(content_area: 'body', :data => 'welcome to the homepage')
19
+ end
20
+
21
+ end
@@ -0,0 +1,164 @@
1
+ require 'spec_helper'
2
+
3
+ # This spec was generated by rspec-rails when you ran the scaffold generator.
4
+ # It demonstrates how one might use RSpec to specify the controller code that
5
+ # was generated by Rails when you ran the scaffold generator.
6
+ #
7
+ # It assumes that the implementation code is generated by the rails scaffold
8
+ # generator. If you are using any extension libraries to generate different
9
+ # controller code, this generated spec may or may not pass.
10
+ #
11
+ # It only uses APIs available in rails and/or rspec-rails. There are a number
12
+ # of tools you can use to make these specs even more expressive, but we're
13
+ # sticking to rails and rspec-rails APIs to keep things simple and stable.
14
+ #
15
+ # Compared to earlier versions of this generator, there is very limited use of
16
+ # stubs and message expectations in this spec. Stubs are only used when there
17
+ # is no simpler way to get a handle on the object needed for the example.
18
+ # Message expectations are only used when there is no simpler way to specify
19
+ # that an instance is receiving a specific message.
20
+
21
+ describe Admin::ContentBlocksController do
22
+
23
+ # This should return the minimal set of attributes required to create a valid
24
+ # Admin::ContentBlock. As you add validations to Admin::ContentBlock, be sure to
25
+ # update the return value of this method accordingly.
26
+ def valid_attributes
27
+ {}
28
+ end
29
+
30
+ # This should return the minimal set of values that should be in the session
31
+ # in order to pass any filters (e.g. authentication) defined in
32
+ # Admin::ContentBlocksController. Be sure to keep this updated too.
33
+ def valid_session
34
+ {}
35
+ end
36
+
37
+ describe "GET index" do
38
+ it "assigns all admin_content_blocks as @admin_content_blocks" do
39
+ content_block = Admin::ContentBlock.create! valid_attributes
40
+ get :index, {}, valid_session
41
+ assigns(:admin_content_blocks).should eq([content_block])
42
+ end
43
+ end
44
+
45
+ describe "GET show" do
46
+ it "assigns the requested content_block as @content_block" do
47
+ content_block = Admin::ContentBlock.create! valid_attributes
48
+ get :show, {:id => content_block.to_param}, valid_session
49
+ assigns(:content_block).should eq(content_block)
50
+ end
51
+ end
52
+
53
+ describe "GET new" do
54
+ it "assigns a new content_block as @content_block" do
55
+ get :new, {}, valid_session
56
+ assigns(:content_block).should be_a_new(Admin::ContentBlock)
57
+ end
58
+ end
59
+
60
+ describe "GET edit" do
61
+ it "assigns the requested content_block as @content_block" do
62
+ content_block = Admin::ContentBlock.create! valid_attributes
63
+ get :edit, {:id => content_block.to_param}, valid_session
64
+ assigns(:content_block).should eq(content_block)
65
+ end
66
+ end
67
+
68
+ describe "POST create" do
69
+ describe "with valid params" do
70
+ it "creates a new Admin::ContentBlock" do
71
+ expect {
72
+ post :create, {:content_block => valid_attributes}, valid_session
73
+ }.to change(Admin::ContentBlock, :count).by(1)
74
+ end
75
+
76
+ it "assigns a newly created content_block as @content_block" do
77
+ post :create, {:content_block => valid_attributes}, valid_session
78
+ assigns(:content_block).should be_a(Admin::ContentBlock)
79
+ assigns(:content_block).should be_persisted
80
+ end
81
+
82
+ it "redirects to the created content_block" do
83
+ post :create, {:content_block => valid_attributes}, valid_session
84
+ response.should redirect_to(Admin::ContentBlock.last)
85
+ end
86
+ end
87
+
88
+ describe "with invalid params" do
89
+ it "assigns a newly created but unsaved content_block as @content_block" do
90
+ # Trigger the behavior that occurs when invalid params are submitted
91
+ Admin::ContentBlock.any_instance.stub(:save).and_return(false)
92
+ post :create, {:content_block => {}}, valid_session
93
+ assigns(:content_block).should be_a_new(Admin::ContentBlock)
94
+ end
95
+
96
+ it "re-renders the 'new' template" do
97
+ # Trigger the behavior that occurs when invalid params are submitted
98
+ Admin::ContentBlock.any_instance.stub(:save).and_return(false)
99
+ post :create, {:content_block => {}}, valid_session
100
+ response.should render_template("new")
101
+ end
102
+ end
103
+ end
104
+
105
+ describe "PUT update" do
106
+ describe "with valid params" do
107
+ it "updates the requested content_block" do
108
+ content_block = Admin::ContentBlock.create! valid_attributes
109
+ # Assuming there are no other admin_content_blocks in the database, this
110
+ # specifies that the Admin::ContentBlock created on the previous line
111
+ # receives the :update_attributes message with whatever params are
112
+ # submitted in the request.
113
+ Admin::ContentBlock.any_instance.should_receive(:update_attributes).with({'these' => 'params'})
114
+ put :update, {:id => content_block.to_param, :content_block => {'these' => 'params'}}, valid_session
115
+ end
116
+
117
+ it "assigns the requested content_block as @content_block" do
118
+ content_block = Admin::ContentBlock.create! valid_attributes
119
+ put :update, {:id => content_block.to_param, :content_block => valid_attributes}, valid_session
120
+ assigns(:content_block).should eq(content_block)
121
+ end
122
+
123
+ it "redirects to the content_block" do
124
+ content_block = Admin::ContentBlock.create! valid_attributes
125
+ put :update, {:id => content_block.to_param, :content_block => valid_attributes}, valid_session
126
+ response.should redirect_to(content_block)
127
+ end
128
+ end
129
+
130
+ describe "with invalid params" do
131
+ it "assigns the content_block as @content_block" do
132
+ content_block = Admin::ContentBlock.create! valid_attributes
133
+ # Trigger the behavior that occurs when invalid params are submitted
134
+ Admin::ContentBlock.any_instance.stub(:save).and_return(false)
135
+ put :update, {:id => content_block.to_param, :content_block => {}}, valid_session
136
+ assigns(:content_block).should eq(content_block)
137
+ end
138
+
139
+ it "re-renders the 'edit' template" do
140
+ content_block = Admin::ContentBlock.create! valid_attributes
141
+ # Trigger the behavior that occurs when invalid params are submitted
142
+ Admin::ContentBlock.any_instance.stub(:save).and_return(false)
143
+ put :update, {:id => content_block.to_param, :content_block => {}}, valid_session
144
+ response.should render_template("edit")
145
+ end
146
+ end
147
+ end
148
+
149
+ describe "DELETE destroy" do
150
+ it "destroys the requested content_block" do
151
+ content_block = Admin::ContentBlock.create! valid_attributes
152
+ expect {
153
+ delete :destroy, {:id => content_block.to_param}, valid_session
154
+ }.to change(Admin::ContentBlock, :count).by(-1)
155
+ end
156
+
157
+ it "redirects to the admin_content_blocks list" do
158
+ content_block = Admin::ContentBlock.create! valid_attributes
159
+ delete :destroy, {:id => content_block.to_param}, valid_session
160
+ response.should redirect_to(admin_content_blocks_url)
161
+ end
162
+ end
163
+
164
+ end