cardboard_cms 0.1.4

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 (360) hide show
  1. checksums.yaml +7 -0
  2. data/.ruby-gemset +1 -0
  3. data/.ruby-version +1 -0
  4. data/Gemfile +42 -0
  5. data/Gemfile.lock +324 -0
  6. data/Guardfile +23 -0
  7. data/LICENSE.txt +677 -0
  8. data/README.md +370 -0
  9. data/Rakefile +23 -0
  10. data/app/assets/images/cardboard/.gitkeep +0 -0
  11. data/app/assets/images/cardboard/bg.png +0 -0
  12. data/app/assets/images/cardboard/calendar.png +0 -0
  13. data/app/assets/images/cardboard/lorem-ipsum-coffe-mug.jpg +0 -0
  14. data/app/assets/javascripts/cardboard.js +1 -0
  15. data/app/assets/javascripts/cardboard/admin.js +62 -0
  16. data/app/assets/javascripts/cardboard/content_sidebar.js +27 -0
  17. data/app/assets/javascripts/cardboard/datepicker.js +19 -0
  18. data/app/assets/javascripts/cardboard/main_sidebar.js +32 -0
  19. data/app/assets/javascripts/cardboard/rich_text.js +81 -0
  20. data/app/assets/javascripts/cardboard/search_filter.js +28 -0
  21. data/app/assets/stylesheets/cardboard.css.scss +2 -0
  22. data/app/assets/stylesheets/cardboard/_bootstrap-select.css.scss +183 -0
  23. data/app/assets/stylesheets/cardboard/_content.css.scss +35 -0
  24. data/app/assets/stylesheets/cardboard/_content_sidebar.css.scss +96 -0
  25. data/app/assets/stylesheets/cardboard/_framework.css.scss +129 -0
  26. data/app/assets/stylesheets/cardboard/_main_sidebar.css.scss +38 -0
  27. data/app/assets/stylesheets/cardboard/_main_topbar.css.scss +62 -0
  28. data/app/assets/stylesheets/cardboard/_resources.css.scss +28 -0
  29. data/app/assets/stylesheets/cardboard/_rich_text.css.scss +6 -0
  30. data/app/assets/stylesheets/cardboard/_variables.scss +326 -0
  31. data/app/assets/stylesheets/cardboard/admin.css.scss +63 -0
  32. data/app/controllers/cardboard/application_controller.rb +45 -0
  33. data/app/controllers/cardboard/dashboard_controller.rb +9 -0
  34. data/app/controllers/cardboard/my_account_controller.rb +27 -0
  35. data/app/controllers/cardboard/pages_controller.rb +34 -0
  36. data/app/controllers/cardboard/resource_controller.rb +61 -0
  37. data/app/controllers/cardboard/settings_controller.rb +28 -0
  38. data/app/controllers/cardboard/super_user_controller.rb +8 -0
  39. data/app/controllers/pages_controller.rb +29 -0
  40. data/app/decorators/controllers/application_controller_decorator.rb +9 -0
  41. data/app/decorators/lib/cardboard/user_class_decorator.rb +32 -0
  42. data/app/helpers/cardboard/application_helper.rb +4 -0
  43. data/app/helpers/cardboard/public_helper.rb +53 -0
  44. data/app/helpers/cardboard/resource_helper.rb +80 -0
  45. data/app/inputs/date_picker_input.rb +10 -0
  46. data/app/inputs/date_time_input.rb +7 -0
  47. data/app/inputs/image_input.rb +3 -0
  48. data/app/inputs/rich_text_input.rb +6 -0
  49. data/app/models/cardboard/field.rb +67 -0
  50. data/app/models/cardboard/field/boolean.rb +29 -0
  51. data/app/models/cardboard/field/date.rb +24 -0
  52. data/app/models/cardboard/field/decimal.rb +25 -0
  53. data/app/models/cardboard/field/external_link.rb +4 -0
  54. data/app/models/cardboard/field/file.rb +19 -0
  55. data/app/models/cardboard/field/image.rb +33 -0
  56. data/app/models/cardboard/field/integer.rb +26 -0
  57. data/app/models/cardboard/field/resource_link.rb +4 -0
  58. data/app/models/cardboard/field/rich_text.rb +21 -0
  59. data/app/models/cardboard/field/string.rb +16 -0
  60. data/app/models/cardboard/field/text.rb +15 -0
  61. data/app/models/cardboard/page.rb +253 -0
  62. data/app/models/cardboard/page_part.rb +79 -0
  63. data/app/models/cardboard/setting.rb +46 -0
  64. data/app/views/cardboard/dashboard/index.html.slim +1 -0
  65. data/app/views/cardboard/fields/_base_input.html.slim +1 -0
  66. data/app/views/cardboard/fields/_boolean.html.slim +4 -0
  67. data/app/views/cardboard/fields/_date.html.slim +1 -0
  68. data/app/views/cardboard/fields/_external_link.html.slim +2 -0
  69. data/app/views/cardboard/fields/_file.html.slim +12 -0
  70. data/app/views/cardboard/fields/_image.html.slim +11 -0
  71. data/app/views/cardboard/fields/_resource_link.html.slim +2 -0
  72. data/app/views/cardboard/fields/_rich_text.html.slim +3 -0
  73. data/app/views/cardboard/fields/_string.html.slim +1 -0
  74. data/app/views/cardboard/my_account/edit.html.slim +29 -0
  75. data/app/views/cardboard/pages/_error.html.slim +7 -0
  76. data/app/views/cardboard/pages/_seo.html.slim +6 -0
  77. data/app/views/cardboard/pages/_sidebar.html.slim +17 -0
  78. data/app/views/cardboard/pages/_subpart_fields.html.slim +20 -0
  79. data/app/views/cardboard/pages/_url_field.html.slim +20 -0
  80. data/app/views/cardboard/pages/edit.html.slim +43 -0
  81. data/app/views/cardboard/pages/index.html.slim +2 -0
  82. data/app/views/cardboard/pages/show.html.slim +9 -0
  83. data/app/views/cardboard/resources/_advanced_search.html.slim +40 -0
  84. data/app/views/cardboard/resources/_search_button.html.slim +2 -0
  85. data/app/views/cardboard/resources/_search_helper.html.slim +17 -0
  86. data/app/views/cardboard/resources/_simple_search.html.slim +6 -0
  87. data/app/views/cardboard/rich_editor/_links_modal.html.slim +39 -0
  88. data/app/views/cardboard/settings/index.html.slim +8 -0
  89. data/app/views/cardboard/super_user/index.html.slim +10 -0
  90. data/app/views/layouts/cardboard/_flash_message.html.slim +6 -0
  91. data/app/views/layouts/cardboard/_head.html.slim +16 -0
  92. data/app/views/layouts/cardboard/_main_sidebar.html.slim +12 -0
  93. data/app/views/layouts/cardboard/_main_topbar.html.slim +32 -0
  94. data/app/views/layouts/cardboard/application.html.slim +28 -0
  95. data/cardboard.gemspec +57 -0
  96. data/config/initializers/dragonfly.rb +27 -0
  97. data/config/initializers/ranker_mapper_finder_bugfix.rb +43 -0
  98. data/config/initializers/simple_form.rb +142 -0
  99. data/config/initializers/simple_form_bootstrap.rb +45 -0
  100. data/config/locales/simple_form.en.yml +26 -0
  101. data/config/routes.rb +53 -0
  102. data/doc/apple-touch-icon.png +0 -0
  103. data/doc/classes/Cardboard.html +190 -0
  104. data/doc/classes/Cardboard/AdminController.html +134 -0
  105. data/doc/classes/Cardboard/AdminHelper.html +307 -0
  106. data/doc/classes/Cardboard/ApplicationController.html +76 -0
  107. data/doc/classes/Cardboard/ApplicationHelper.html +70 -0
  108. data/doc/classes/Cardboard/DashboardController.html +131 -0
  109. data/doc/classes/Cardboard/Field.html +283 -0
  110. data/doc/classes/Cardboard/Field/Boolean.html +218 -0
  111. data/doc/classes/Cardboard/Field/Date.html +218 -0
  112. data/doc/classes/Cardboard/Field/Decimal.html +218 -0
  113. data/doc/classes/Cardboard/Field/ExternalLink.html +76 -0
  114. data/doc/classes/Cardboard/Field/File.html +131 -0
  115. data/doc/classes/Cardboard/Field/Image.html +181 -0
  116. data/doc/classes/Cardboard/Field/Integer.html +218 -0
  117. data/doc/classes/Cardboard/Field/ResourceLink.html +76 -0
  118. data/doc/classes/Cardboard/Field/RichText.html +131 -0
  119. data/doc/classes/Cardboard/Field/String.html +131 -0
  120. data/doc/classes/Cardboard/Page.html +1184 -0
  121. data/doc/classes/Cardboard/PagePart.html +304 -0
  122. data/doc/classes/Cardboard/PagesController.html +186 -0
  123. data/doc/classes/Cardboard/PublicHelper.html +252 -0
  124. data/doc/classes/Cardboard/Setting.html +240 -0
  125. data/doc/classes/Cardboard/SettingsController.html +184 -0
  126. data/doc/classes/Cardboard/SuperUserController.html +130 -0
  127. data/doc/classes/Cardboard/UsersController.html +191 -0
  128. data/doc/classes/DatePickerInput.html +132 -0
  129. data/doc/classes/ImageInput.html +76 -0
  130. data/doc/classes/Object.html +211 -0
  131. data/doc/classes/PagesController.html +145 -0
  132. data/doc/classes/RichTextInput.html +132 -0
  133. data/doc/created.rid +31 -0
  134. data/doc/css/github.css +129 -0
  135. data/doc/css/main.css +333 -0
  136. data/doc/css/panel.css +384 -0
  137. data/doc/css/reset.css +48 -0
  138. data/doc/favicon.ico +0 -0
  139. data/doc/files/app/controllers/cardboard/admin_controller_rb.html +79 -0
  140. data/doc/files/app/controllers/cardboard/application_controller_rb.html +84 -0
  141. data/doc/files/app/controllers/cardboard/dashboard_controller_rb.html +84 -0
  142. data/doc/files/app/controllers/cardboard/pages_controller_rb.html +84 -0
  143. data/doc/files/app/controllers/cardboard/settings_controller_rb.html +84 -0
  144. data/doc/files/app/controllers/cardboard/super_user_controller_rb.html +84 -0
  145. data/doc/files/app/controllers/cardboard/users_controller_rb.html +84 -0
  146. data/doc/files/app/controllers/pages_controller_rb.html +79 -0
  147. data/doc/files/app/decorators/controllers/application_controller_decorator_rb.html +68 -0
  148. data/doc/files/app/decorators/lib/cardboard/user_class_decorator_rb.html +68 -0
  149. data/doc/files/app/helpers/cardboard/admin_helper_rb.html +84 -0
  150. data/doc/files/app/helpers/cardboard/application_helper_rb.html +84 -0
  151. data/doc/files/app/helpers/cardboard/public_helper_rb.html +84 -0
  152. data/doc/files/app/inputs/date_picker_input_rb.html +79 -0
  153. data/doc/files/app/inputs/image_input_rb.html +79 -0
  154. data/doc/files/app/inputs/rich_text_input_rb.html +79 -0
  155. data/doc/files/app/models/cardboard/field/boolean_rb.html +84 -0
  156. data/doc/files/app/models/cardboard/field/date_rb.html +84 -0
  157. data/doc/files/app/models/cardboard/field/decimal_rb.html +84 -0
  158. data/doc/files/app/models/cardboard/field/external_link_rb.html +84 -0
  159. data/doc/files/app/models/cardboard/field/file_rb.html +84 -0
  160. data/doc/files/app/models/cardboard/field/image_rb.html +84 -0
  161. data/doc/files/app/models/cardboard/field/integer_rb.html +84 -0
  162. data/doc/files/app/models/cardboard/field/resource_link_rb.html +84 -0
  163. data/doc/files/app/models/cardboard/field/rich_text_rb.html +84 -0
  164. data/doc/files/app/models/cardboard/field/string_rb.html +84 -0
  165. data/doc/files/app/models/cardboard/field_rb.html +84 -0
  166. data/doc/files/app/models/cardboard/page_part_rb.html +84 -0
  167. data/doc/files/app/models/cardboard/page_rb.html +84 -0
  168. data/doc/files/app/models/cardboard/setting_rb.html +84 -0
  169. data/doc/i/arrows.png +0 -0
  170. data/doc/i/results_bg.png +0 -0
  171. data/doc/i/tree_bg.png +0 -0
  172. data/doc/index.html +13 -0
  173. data/doc/js/highlight.pack.js +1 -0
  174. data/doc/js/jquery-1.3.2.min.js +19 -0
  175. data/doc/js/jquery-effect.js +593 -0
  176. data/doc/js/main.js +24 -0
  177. data/doc/js/navigation.js +142 -0
  178. data/doc/js/search_index.js +1 -0
  179. data/doc/js/searchdoc.js +449 -0
  180. data/doc/js/searcher.js +228 -0
  181. data/doc/panel/index.html +73 -0
  182. data/doc/panel/links.html +66 -0
  183. data/doc/panel/tree.js +1 -0
  184. data/lib/cardboard/application.rb +67 -0
  185. data/lib/cardboard/engine.rb +83 -0
  186. data/lib/cardboard/helpers/seed.rb +80 -0
  187. data/lib/cardboard/helpers/settings.rb +58 -0
  188. data/lib/cardboard/version.rb +3 -0
  189. data/lib/cardboard_cms.rb +34 -0
  190. data/lib/generators/cardboard/assets/assets_generator.rb +18 -0
  191. data/lib/generators/cardboard/install/install_generator.rb +96 -0
  192. data/lib/generators/cardboard/install/templates/cardboard.rb.erb +53 -0
  193. data/lib/generators/cardboard/install/templates/cardboard.yml +29 -0
  194. data/lib/generators/cardboard/install/templates/index.html.erb +0 -0
  195. data/lib/generators/cardboard/install/templates/migrations/1_create_cardboard_fields.rb +21 -0
  196. data/lib/generators/cardboard/install/templates/migrations/2_create_cardboard_page_parts.rb +17 -0
  197. data/lib/generators/cardboard/install/templates/migrations/3_create_cardboard_pages.rb +18 -0
  198. data/lib/generators/cardboard/install/templates/migrations/4_create_cardboard_settings.rb +14 -0
  199. data/lib/generators/cardboard/resource/resource_generator.rb +52 -0
  200. data/lib/generators/cardboard/resource/templates/admin_controller.rb +9 -0
  201. data/lib/generators/cardboard/resource/templates/slim/_fields.html.slim +5 -0
  202. data/lib/generators/cardboard/resource/templates/slim/edit.html.slim +4 -0
  203. data/lib/generators/cardboard/resource/templates/slim/index.html.slim +18 -0
  204. data/lib/generators/cardboard/resource/templates/slim/new.html.slim +4 -0
  205. data/lib/tasks/cardboard_tasks.rake +22 -0
  206. data/lib/templates/erb/scaffold/_form.html.erb +13 -0
  207. data/script/rails +8 -0
  208. data/test/dummy/README.rdoc +261 -0
  209. data/test/dummy/Rakefile +7 -0
  210. data/test/dummy/app/assets/images/defaults/CrashTest.jpg +0 -0
  211. data/test/dummy/app/assets/javascripts/admins.js +2 -0
  212. data/test/dummy/app/assets/javascripts/application.js +5 -0
  213. data/test/dummy/app/assets/javascripts/beans.js +2 -0
  214. data/test/dummy/app/assets/javascripts/cardboard.js +1 -0
  215. data/test/dummy/app/assets/javascripts/icescreams.js +2 -0
  216. data/test/dummy/app/assets/javascripts/main.js +2 -0
  217. data/test/dummy/app/assets/javascripts/news_posts.js +2 -0
  218. data/test/dummy/app/assets/javascripts/pianos.js +2 -0
  219. data/test/dummy/app/assets/stylesheets/admins.css.scss +3 -0
  220. data/test/dummy/app/assets/stylesheets/application.css.scss +9 -0
  221. data/test/dummy/app/assets/stylesheets/beans.css.scss +3 -0
  222. data/test/dummy/app/assets/stylesheets/cardboard.css.scss +5 -0
  223. data/test/dummy/app/assets/stylesheets/icescreams.css.scss +3 -0
  224. data/test/dummy/app/assets/stylesheets/main.css +4 -0
  225. data/test/dummy/app/assets/stylesheets/news_posts.css.scss +3 -0
  226. data/test/dummy/app/assets/stylesheets/pianos.css.scss +3 -0
  227. data/test/dummy/app/assets/stylesheets/scaffolds.css.scss +69 -0
  228. data/test/dummy/app/controllers/application_controller.rb +3 -0
  229. data/test/dummy/app/controllers/cardboard/pianos_controller.rb +6 -0
  230. data/test/dummy/app/controllers/pianos_controller.rb +83 -0
  231. data/test/dummy/app/helpers/application_helper.rb +9 -0
  232. data/test/dummy/app/helpers/cardboard/pianos_helper.rb +7 -0
  233. data/test/dummy/app/mailers/.gitkeep +0 -0
  234. data/test/dummy/app/models/.gitkeep +0 -0
  235. data/test/dummy/app/models/admin_user.rb +28 -0
  236. data/test/dummy/app/models/piano.rb +3 -0
  237. data/test/dummy/app/views/cardboard/pianos/_fields.html.slim +5 -0
  238. data/test/dummy/app/views/cardboard/pianos/edit.html.slim +6 -0
  239. data/test/dummy/app/views/cardboard/pianos/index.html.slim +18 -0
  240. data/test/dummy/app/views/cardboard/pianos/new.html.slim +6 -0
  241. data/test/dummy/app/views/cardboard/pianos/show.html.slim +11 -0
  242. data/test/dummy/app/views/layouts/application.html.slim +24 -0
  243. data/test/dummy/app/views/main/index.html.slim +1 -0
  244. data/test/dummy/app/views/pages/about-us.html.slim +1 -0
  245. data/test/dummy/app/views/pages/home.html.slim +3 -0
  246. data/test/dummy/app/views/pianos/_form.html.erb +25 -0
  247. data/test/dummy/app/views/pianos/edit.html.erb +6 -0
  248. data/test/dummy/app/views/pianos/index.html.erb +25 -0
  249. data/test/dummy/app/views/pianos/new.html.erb +5 -0
  250. data/test/dummy/app/views/pianos/show.html.erb +15 -0
  251. data/test/dummy/config.ru +4 -0
  252. data/test/dummy/config/application.rb +50 -0
  253. data/test/dummy/config/boot.rb +10 -0
  254. data/test/dummy/config/cardboard.yml +126 -0
  255. data/test/dummy/config/database.yml +17 -0
  256. data/test/dummy/config/environment.rb +5 -0
  257. data/test/dummy/config/environments/development.rb +24 -0
  258. data/test/dummy/config/environments/production.rb +70 -0
  259. data/test/dummy/config/environments/test.rb +33 -0
  260. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  261. data/test/dummy/config/initializers/cardboard.rb +53 -0
  262. data/test/dummy/config/initializers/devise.rb +240 -0
  263. data/test/dummy/config/initializers/inflections.rb +15 -0
  264. data/test/dummy/config/initializers/mime_types.rb +5 -0
  265. data/test/dummy/config/initializers/secret_token.rb +8 -0
  266. data/test/dummy/config/initializers/session_store.rb +8 -0
  267. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  268. data/test/dummy/config/locales/devise.en.yml +59 -0
  269. data/test/dummy/config/locales/en.yml +5 -0
  270. data/test/dummy/config/routes.rb +16 -0
  271. data/test/dummy/db/migrate/20130403142235_create_pianos.rb +10 -0
  272. data/test/dummy/db/migrate/20130417134832_add_devise_to_admin_users.rb +53 -0
  273. data/test/dummy/db/migrate/20130426021522_create_news_posts.rb +10 -0
  274. data/test/dummy/db/migrate/20130501195423_create_icescreams.rb +10 -0
  275. data/test/dummy/db/migrate/20130502165540_create_beans.rb +12 -0
  276. data/test/dummy/db/migrate/20130522151358_create_cardboard_fields.rb +21 -0
  277. data/test/dummy/db/migrate/20130522151359_create_cardboard_page_parts.rb +17 -0
  278. data/test/dummy/db/migrate/20130522151400_create_cardboard_pages.rb +18 -0
  279. data/test/dummy/db/migrate/20130522151401_create_cardboard_settings.rb +14 -0
  280. data/test/dummy/db/migrate/20130607132558_create_admins.rb +9 -0
  281. data/test/dummy/db/schema.rb +129 -0
  282. data/test/dummy/db/seeds.rb +2 -0
  283. data/test/dummy/lib/assets/.gitkeep +0 -0
  284. data/test/dummy/log/.gitkeep +0 -0
  285. data/test/dummy/public/404.html +26 -0
  286. data/test/dummy/public/422.html +26 -0
  287. data/test/dummy/public/500.html +25 -0
  288. data/test/dummy/public/favicon.ico +0 -0
  289. data/test/dummy/public/system/dragonfly/development/2013/04/16/10_39_10_816_404_no_file.png +0 -0
  290. data/test/dummy/public/system/dragonfly/development/2013/04/16/10_39_10_816_404_no_file.png.meta +2 -0
  291. data/test/dummy/public/system/dragonfly/development/2013/04/16/10_39_17_87_404_no_file.png +0 -0
  292. data/test/dummy/public/system/dragonfly/development/2013/04/16/10_39_17_87_404_no_file.png.meta +2 -0
  293. data/test/dummy/public/system/dragonfly/development/2013/04/16/10_39_34_680_404_no_file.png +0 -0
  294. data/test/dummy/public/system/dragonfly/development/2013/04/16/10_39_34_680_404_no_file.png.meta +2 -0
  295. data/test/dummy/public/system/dragonfly/development/2013/04/16/10_44_00_698_404_no_file.png +0 -0
  296. data/test/dummy/public/system/dragonfly/development/2013/04/16/10_44_00_698_404_no_file.png.meta +2 -0
  297. data/test/dummy/public/system/dragonfly/development/2013/04/16/10_46_49_55_6152message_in_a_bottle.jpeg +0 -0
  298. data/test/dummy/public/system/dragonfly/development/2013/04/16/10_46_49_55_6152message_in_a_bottle.jpeg.meta +2 -0
  299. data/test/dummy/public/system/dragonfly/development/2013/04/16/14_10_30_773_404_no_file.png +0 -0
  300. data/test/dummy/public/system/dragonfly/development/2013/04/16/14_10_30_773_404_no_file.png.meta +2 -0
  301. data/test/dummy/public/system/dragonfly/development/2013/04/16/14_10_38_856_airport_shuttles_20130207_1647.csv +8 -0
  302. data/test/dummy/public/system/dragonfly/development/2013/04/16/14_10_38_856_airport_shuttles_20130207_1647.csv.meta +2 -0
  303. data/test/dummy/public/system/dragonfly/development/2013/04/16/14_12_12_144_1361696555_GMail_Android_R.png +0 -0
  304. data/test/dummy/public/system/dragonfly/development/2013/04/16/14_12_12_144_1361696555_GMail_Android_R.png.meta +2 -0
  305. data/test/dummy/public/system/dragonfly/development/2013/04/16/14_16_40_989_404_no_file.png +0 -0
  306. data/test/dummy/public/system/dragonfly/development/2013/04/16/14_16_40_989_404_no_file.png.meta +2 -0
  307. data/test/dummy/public/system/dragonfly/development/2013/04/16/14_19_19_40_6152message_in_a_bottle.jpeg +0 -0
  308. data/test/dummy/public/system/dragonfly/development/2013/04/16/14_19_19_40_6152message_in_a_bottle.jpeg.meta +2 -0
  309. data/test/dummy/public/system/dragonfly/development/2013/04/16/14_21_21_825_6152message_in_a_bottle.jpeg +0 -0
  310. data/test/dummy/public/system/dragonfly/development/2013/04/16/14_21_21_825_6152message_in_a_bottle.jpeg.meta +2 -0
  311. data/test/dummy/public/system/dragonfly/development/2013/04/16/15_46_33_341_bio.jpg +0 -0
  312. data/test/dummy/public/system/dragonfly/development/2013/04/16/15_46_33_341_bio.jpg.meta +2 -0
  313. data/test/dummy/public/system/dragonfly/development/2013/04/16/15_52_55_892_404_no_file.png +0 -0
  314. data/test/dummy/public/system/dragonfly/development/2013/04/16/15_52_55_892_404_no_file.png.meta +2 -0
  315. data/test/dummy/public/system/dragonfly/development/2013/04/16/15_52_56_30_404_no_file.png +0 -0
  316. data/test/dummy/public/system/dragonfly/development/2013/04/16/15_52_56_30_404_no_file.png.meta +2 -0
  317. data/test/dummy/public/system/dragonfly/development/2013/04/17/15_24_04_585_Sky_3920445.jpg +0 -0
  318. data/test/dummy/public/system/dragonfly/development/2013/04/17/15_24_04_585_Sky_3920445.jpg.meta +2 -0
  319. data/test/dummy/public/system/dragonfly/development/2013/04/17/15_25_41_111_Sky_3920445.jpg +0 -0
  320. data/test/dummy/public/system/dragonfly/development/2013/04/17/15_25_41_111_Sky_3920445.jpg.meta +2 -0
  321. data/test/dummy/public/system/dragonfly/development/2013/04/17/15_27_16_937_Sky_3920445.jpg +0 -0
  322. data/test/dummy/public/system/dragonfly/development/2013/04/17/15_27_16_937_Sky_3920445.jpg.meta +2 -0
  323. data/test/dummy/public/system/dragonfly/development/2013/04/17/15_27_57_585_Sky_3920445.jpg +0 -0
  324. data/test/dummy/public/system/dragonfly/development/2013/04/17/15_27_57_585_Sky_3920445.jpg.meta +2 -0
  325. data/test/dummy/public/system/dragonfly/development/2013/04/17/15_28_24_991_Sky_3920445.jpg +0 -0
  326. data/test/dummy/public/system/dragonfly/development/2013/04/17/15_28_24_991_Sky_3920445.jpg.meta +2 -0
  327. data/test/dummy/public/system/dragonfly/development/2013/04/17/15_33_30_610_Sky_3920445.jpg +0 -0
  328. data/test/dummy/public/system/dragonfly/development/2013/04/17/15_33_30_610_Sky_3920445.jpg.meta +2 -0
  329. data/test/dummy/public/system/dragonfly/development/2013/04/17/15_35_18_437_Sky_3920445.jpg +0 -0
  330. data/test/dummy/public/system/dragonfly/development/2013/04/17/15_35_18_437_Sky_3920445.jpg.meta +2 -0
  331. data/test/dummy/public/system/dragonfly/development/2013/04/17/16_45_07_162_Vehicle_Types.jpg +0 -0
  332. data/test/dummy/public/system/dragonfly/development/2013/04/17/16_45_07_162_Vehicle_Types.jpg.meta +2 -0
  333. data/test/dummy/public/system/dragonfly/development/2013/04/18/22_27_35_733_hall.jpg +0 -0
  334. data/test/dummy/public/system/dragonfly/development/2013/04/18/22_27_35_733_hall.jpg.meta +2 -0
  335. data/test/dummy/public/system/dragonfly/development/2013/04/18/22_29_15_808_fluidicon.png +0 -0
  336. data/test/dummy/public/system/dragonfly/development/2013/04/18/22_29_15_808_fluidicon.png.meta +2 -0
  337. data/test/dummy/public/system/dragonfly/development/2013/04/18/22_29_15_989_fluidicon.png +0 -0
  338. data/test/dummy/public/system/dragonfly/development/2013/04/18/22_29_15_989_fluidicon.png.meta +2 -0
  339. data/test/dummy/public/system/dragonfly/development/2013/04/19/09_54_44_881_hall3.jpg +0 -0
  340. data/test/dummy/public/system/dragonfly/development/2013/04/19/09_54_44_881_hall3.jpg.meta +2 -0
  341. data/test/dummy/public/system/dragonfly/development/2013/04/19/09_54_45_450_hall3.jpg +0 -0
  342. data/test/dummy/public/system/dragonfly/development/2013/04/19/09_54_45_450_hall3.jpg.meta +2 -0
  343. data/test/dummy/script/rails +6 -0
  344. data/test/dummy/test/fixtures/admins.yml +7 -0
  345. data/test/dummy/test/functional/admins_controller_test.rb +49 -0
  346. data/test/dummy/test/unit/admin_test.rb +7 -0
  347. data/test/dummy/test/unit/helpers/admins_helper_test.rb +4 -0
  348. data/test/factories.rb +47 -0
  349. data/test/integration/page_editing_test.rb +77 -0
  350. data/test/integration/seeding_test.rb +96 -0
  351. data/test/models/field_test.rb +102 -0
  352. data/test/models/page_test.rb +105 -0
  353. data/test/test_helper.rb +40 -0
  354. data/vendor/assets/javascripts/cardboard/bootstrap-select.js +590 -0
  355. data/vendor/assets/javascripts/cardboard/jquery.livesearch.js +48 -0
  356. data/vendor/assets/javascripts/cardboard/jquery.pjax.js +822 -0
  357. data/vendor/assets/javascripts/cardboard/jquery.wysihtml5_size_matters.js.coffee +44 -0
  358. data/vendor/assets/javascripts/cardboard/jquery.wysihtml5imgresizer.js +320 -0
  359. data/vendor/assets/javascripts/cardboard/wysihtml5-0.4.0pre.js +9579 -0
  360. metadata +1011 -0
@@ -0,0 +1,80 @@
1
+ require 'active_support/concern'
2
+
3
+ module Cardboard
4
+
5
+ module Seed
6
+ extend ActiveSupport::Concern
7
+
8
+ def self.populate_pages(filehash = nil)
9
+ pages = filehash ? filehash[:pages] : {}
10
+ pages.each do |id, page|
11
+
12
+ db_page = Cardboard::Page.where(identifier: id.to_s).first_or_initialize
13
+ db_page.position_position = page[:position] || :last
14
+ db_page.update_attributes!(page.slice(:title, :parent_id))
15
+
16
+ self.populate_parts(page[:parts], db_page)
17
+ end
18
+
19
+ for remove_page in Cardboard::Page.all.map(&:identifier) - pages.map{|k,v|k.to_s}
20
+ Cardboard::Page.where(identifier: remove_page).first.destroy
21
+ end
22
+
23
+ Cardboard::Page.create(identifier: "index", path: "/") if Cardboard::Page.root.nil?
24
+ end
25
+
26
+
27
+ def self.populate_parts(page_parts, db_page)
28
+ page_parts ||= {}
29
+ page_parts.each do |id, part|
30
+ db_part = db_page.parts.where(identifier: id.to_s).first_or_initialize
31
+ db_part.part_position_position = part[:position] || :last
32
+ db_part.update_attributes!(part.slice(:repeatable))
33
+
34
+ db_part.subparts.first_or_create!
35
+
36
+ db_part.subparts.each do |db_part|
37
+ self.populate_fields(part[:fields], db_part)
38
+ end
39
+ end
40
+ for remove_part in db_page.parts.map(&:identifier) - page_parts.map{|k,v|k.to_s}
41
+ db_page.parts.where(identifier: remove_part).first.destroy
42
+ end
43
+ end
44
+
45
+ def self.populate_fields(fields, object)
46
+ fields ||= {}
47
+ fields.each do |id, field|
48
+ db_field = Field.where(identifier: id.to_s, object_with_field: object).first_or_initialize
49
+ db_field.type = "Cardboard::Field::#{(field[:type] || "string").camelize}"
50
+ db_field.seeding = true
51
+ db_field.position_position = field[:position] || :last
52
+ begin
53
+ db_field.update_attributes!(field.reject{|k,v| ["type", "position"].include?(k)})
54
+ rescue Exception => e
55
+ # Output validation errors
56
+ puts "-- ERROR --"
57
+ puts e
58
+ puts "#{db_field.identifier}: #{db_field.value_uid || field[:value] || field[:default] || "nil"}"
59
+ puts "-----------"
60
+ end
61
+ end
62
+
63
+ #remove fields no longer in the seed file
64
+ for remove_field in object.fields.map(&:identifier) - fields.map{|k,v|k.to_s}
65
+ object.fields.where(identifier: remove_field).first.destroy
66
+ end
67
+ end
68
+
69
+ def self.populate_settings(filehash = nil)
70
+ settings = filehash ? filehash[:settings] : nil
71
+ if settings
72
+ db_settings = Cardboard::Setting.first_or_create
73
+ self.populate_fields(settings, db_settings)
74
+ end
75
+ Cardboard::Setting.add("company_name", type: "string", default: Cardboard.application.site_title, position: 0)
76
+ # Cardboard::Setting.add("google_analytics", type: "string", position: 1)
77
+ end
78
+
79
+ end
80
+ end
@@ -0,0 +1,58 @@
1
+ require 'active_support/concern'
2
+
3
+ module Cardboard
4
+
5
+ # Adds a class method to a class to create settings with default values.
6
+ #
7
+ # Example:
8
+ #
9
+ # class Configuration
10
+ # include Cardboard::Settings
11
+ #
12
+ # setting :site_title, "Default Site Title"
13
+ # end
14
+ #
15
+ # conf = Configuration.new
16
+ # conf.site_title #=> "Default Site Title"
17
+ # conf.site_title = "Override Default"
18
+ # conf.site_title #=> "Override Default"
19
+ #
20
+ module Settings
21
+ extend ActiveSupport::Concern
22
+
23
+ def read_default_setting(name)
24
+ default_settings[name]
25
+ end
26
+
27
+ private
28
+
29
+ def default_settings
30
+ self.class.default_settings
31
+ end
32
+
33
+ module ClassMethods
34
+
35
+ def setting(name, default)
36
+ default_settings[name] = default
37
+ attr_accessor(name)
38
+
39
+ # Create an accessor that grabs from the defaults
40
+ # if @name has not been set yet
41
+ class_eval <<-EOC, __FILE__, __LINE__ + 1
42
+ def #{name}
43
+ if instance_variable_defined? :@#{name}
44
+ @#{name}
45
+ else
46
+ read_default_setting(:#{name})
47
+ end
48
+ end
49
+ EOC
50
+ end
51
+
52
+ def default_settings
53
+ @default_settings ||= {}
54
+ end
55
+
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,3 @@
1
+ module Cardboard
2
+ VERSION = "0.1.4"
3
+ end
@@ -0,0 +1,34 @@
1
+ require "cardboard/engine"
2
+
3
+ module Cardboard
4
+ autoload :Application, 'cardboard/application'
5
+
6
+ class << self
7
+
8
+ attr_accessor :application, :resource_controllers
9
+
10
+ def application
11
+ @application ||= ::Cardboard::Application.new
12
+ end
13
+
14
+ def user_class
15
+ return false unless application.user_class
16
+ @user_class ||= application.user_class.to_s.camelize.constantize
17
+ end
18
+
19
+ def set_resource_controllers
20
+ Dir[Rails.root.join('app/controllers/cardboard/*_controller.rb')].map.each do |controller|
21
+ require_dependency controller
22
+ end
23
+ Cardboard.resource_controllers = Cardboard::ResourceController.descendants
24
+ end
25
+
26
+ # Gets called within the initializer
27
+ def setup
28
+ yield(application)
29
+ end
30
+ end
31
+
32
+ end
33
+
34
+
@@ -0,0 +1,18 @@
1
+ require 'rails'
2
+ require 'cardboard_cms'
3
+
4
+ module Cardboard
5
+ module Generators
6
+ class AssetsGenerator < Rails::Generators::Base
7
+
8
+ def self.source_root
9
+ @_cardboard_source_root ||= Cardboard::Engine.root.join('app', 'assets')#File.expand_path("../templates", __FILE__)
10
+ end
11
+
12
+ def install_assets
13
+ template 'javascripts/cardboard.js', 'app/assets/javascripts/cardboard.js'
14
+ template 'stylesheets/cardboard.css.scss', 'app/assets/stylesheets/cardboard.css.scss'
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,96 @@
1
+ require 'rails/generators/active_record'
2
+
3
+ module Cardboard
4
+ module Generators
5
+ class InstallGenerator < ActiveRecord::Generators::Base
6
+ desc "Installs Cardboard and generates the necessary migrations"
7
+
8
+ argument :name, :type => :string, :default => Rails.application.class.name.split("::").first.titlecase
9
+ class_option "user-class", :type => :string
10
+ class_option "no-migrate", :type => :boolean
11
+
12
+ def self.source_root
13
+ @_cardboard_source_root ||= File.expand_path("../templates", __FILE__)
14
+ end
15
+
16
+ def copy_initializer
17
+ if generating?
18
+ @site_title = ask("What is the site name? [#{@name}]").presence || @name
19
+
20
+ @user_class = options["user-class"].presence ||
21
+ ask("What is your user class called? [AdminUser]").presence ||
22
+ 'AdminUser'
23
+ user_class_underscore = @user_class.underscore
24
+ #TODO: check that this class really exists
25
+ @current_user_helper = "current_#{user_class_underscore}"
26
+ @authentication_method = "authenticate_#{user_class_underscore}!"
27
+ @logout_link_path = "destroy_#{user_class_underscore}_session_path"
28
+
29
+ unless defined?(Devise)
30
+ @current_user_helper = ask("What is the current_user helper called in your app? [#{@current_user_helper}]").presence || @current_user_helper
31
+ @authentication_method = ask("What is the authenticate! helper called in your app? [#{@authentication_method}]").presence || @authentication_method
32
+ @logout_link_path = ask("What is the signout link of your app [#{@logout_link_path}]?").presence || @logout_link_path
33
+ end
34
+ end
35
+
36
+ path = "#{Rails.root}/config/initializers/cardboard.rb"
37
+ # if File.exists?(path)
38
+ # p "Skipping config/initializers/cardboard.rb creation, as file already exists!"
39
+ # else
40
+ p "Adding cardboard initializer (config/initializers/cardboard.rb)..."
41
+ template 'cardboard.rb.erb', path
42
+ require path if File.exists?(path) # Load the configuration
43
+ # end
44
+ end
45
+
46
+ def setup_cardboard_yaml
47
+ p "Generating a default config/cardboard.yml file..."
48
+ copy_file 'cardboard.yml', 'config/cardboard.yml'
49
+ end
50
+
51
+ def setup_directory
52
+ empty_directory "app/controllers/cardboard"
53
+ empty_directory "app/views/pages"
54
+ end
55
+
56
+ def setup_routes
57
+ p "Mounting Cardboard::Engine at \"/cardboard\" in config/routes.rb..."
58
+ inject_into_file "config/routes.rb", " mount Cardboard::Engine => \"/cardboard\"\n", :after => /routes\.draw do\n/
59
+ end
60
+
61
+ def create_assets
62
+ p "Generating cardboard assets..."
63
+ generate "cardboard:assets"
64
+ end
65
+
66
+ def create_migrations
67
+ p "Copying over migrations..."
68
+ Dir["#{self.class.source_root}/migrations/*.rb"].sort.each do |filepath|
69
+ name = File.basename(filepath)
70
+ migration_template "migrations/#{name}", "db/migrate/#{name.gsub(/^\d+_/,'')}"
71
+ sleep 1
72
+ end
73
+ end
74
+ # def install_migrations
75
+ # puts "Copying over migrations..."
76
+ # Dir.chdir(Rails.root) do
77
+ # `rake cardboard:install:migrations`
78
+ # end
79
+ # end
80
+
81
+ protected
82
+
83
+ def p(msg)
84
+ puts msg if generating?
85
+ end
86
+
87
+ def generating?
88
+ :invoke == behavior
89
+ end
90
+
91
+ def destroying?
92
+ :revoke == behavior
93
+ end
94
+ end
95
+ end
96
+ end
@@ -0,0 +1,53 @@
1
+ Cardboard.setup do |config|
2
+
3
+ # == Site Title
4
+ #
5
+ # Set the title that is displayed on the main layout
6
+ # for each of the Cardboard pages.
7
+ #
8
+ config.site_title = '<%= @site_title %>'
9
+
10
+ # == Admin User Class
11
+ #
12
+ # Cardboard will associate actions with the current
13
+ # user performing them.
14
+ config.user_class = '<%= @user_class %>'
15
+
16
+ # == Current User
17
+ #
18
+ # Cardboard will associate actions with the current
19
+ # user performing them.
20
+ #
21
+ # This setting changes the method which Cardboard calls
22
+ # to return the currently logged in user.
23
+ config.current_admin_user_method = :<%= @current_user_helper %>
24
+
25
+ # == User Authentication
26
+ #
27
+ # Cardboard will automatically call an authentication
28
+ # method in a before filter of all controller actions to
29
+ # ensure that there is a currently logged in admin user.
30
+ #
31
+ # This setting changes the method which Cardboard calls
32
+ # within the controller.
33
+ config.authentication_method = :<%= @authentication_method %>
34
+
35
+ # == Logging Out
36
+ #
37
+ # Cardboard displays a logout link on each screen. These
38
+ # settings configure the location and method used for the link.
39
+ #
40
+ # This setting changes the path where the link points to. If it's
41
+ # a string, the strings is used as the path. If it's a Symbol, we
42
+ # will call the method to return the path.
43
+ #
44
+ # Default:
45
+ config.logout_link_path = :<%= @logout_link_path %>
46
+
47
+ # This setting changes the http method used when rendering the
48
+ # link. For example :get, :delete, :put, etc..
49
+ #
50
+ # Default:
51
+ # config.logout_link_method = :get
52
+
53
+ end
@@ -0,0 +1,29 @@
1
+ # # Page and Settings admin forms
2
+ # # Example
3
+ # pages:
4
+ # home:
5
+ # title: Welcome
6
+ # parts:
7
+ # intro:
8
+ # fields:
9
+ # text1:
10
+ # type: string
11
+ # text2:
12
+ # type: string
13
+ # show_slideshow:
14
+ # type: boolean
15
+ # slideshow:
16
+ # repeatable: true
17
+ # fields:
18
+ # image1:
19
+ # type: image
20
+ # position: 0
21
+ # description:
22
+ # hint: This will be visible on mouse over
23
+ # type: string
24
+ # required: false
25
+ # position: 1
26
+ # settings:
27
+ # more_fun:
28
+ # type: boolean
29
+ # default: true
@@ -0,0 +1,21 @@
1
+ class CreateCardboardFields < ActiveRecord::Migration
2
+ def change
3
+ create_table :cardboard_fields do |t|
4
+ t.string :identifier
5
+ t.string :label
6
+ t.string :type
7
+ t.boolean :required, default: true
8
+ t.belongs_to :page_part
9
+ t.integer :position
10
+ t.text :value_uid
11
+ t.string :hint
12
+ t.string :placeholder
13
+ t.integer :object_with_field_id
14
+ t.string :object_with_field_type
15
+
16
+ t.timestamps
17
+ end
18
+ add_index :cardboard_fields, :identifier
19
+ add_index :cardboard_fields, [:object_with_field_id, :object_with_field_type], :name => 'parent_object'
20
+ end
21
+ end
@@ -0,0 +1,17 @@
1
+ class CreateCardboardPageParts < ActiveRecord::Migration
2
+ def change
3
+ create_table :cardboard_page_parts do |t|
4
+ t.string :identifier
5
+ t.integer :position
6
+ t.integer :parent_part_id
7
+ t.boolean :repeatable
8
+ t.string :label
9
+ t.belongs_to :page
10
+
11
+ t.timestamps
12
+ end
13
+ add_index :cardboard_page_parts, :page_id
14
+ add_index :cardboard_page_parts, :identifier
15
+ add_index :cardboard_page_parts, :parent_part_id
16
+ end
17
+ end
@@ -0,0 +1,18 @@
1
+ class CreateCardboardPages < ActiveRecord::Migration
2
+ def change
3
+ create_table :cardboard_pages do |t|
4
+ t.string :title
5
+ t.string :path
6
+ t.string :slug
7
+ t.text :slugs_backup
8
+ t.integer :position
9
+ t.text :meta_seo
10
+ t.boolean :in_menu, default: true
11
+ t.string :identifier, unique: true
12
+
13
+ t.timestamps
14
+ end
15
+ add_index :cardboard_pages, [:path, :slug], :unique => true
16
+ add_index :cardboard_pages, :identifier, :unique => true
17
+ end
18
+ end