spina 0.6.11

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 (326) hide show
  1. checksums.yaml +7 -0
  2. data/README.rdoc +3 -0
  3. data/Rakefile +40 -0
  4. data/app/assets/images/spina/admin/logo@2x.png +0 -0
  5. data/app/assets/javascripts/spina/admin/account.js.coffee +15 -0
  6. data/app/assets/javascripts/spina/admin/application.js +8 -0
  7. data/app/assets/javascripts/spina/admin/aviary.js.coffee +26 -0
  8. data/app/assets/javascripts/spina/admin/confirm_delete.js.coffee +24 -0
  9. data/app/assets/javascripts/spina/admin/pages.js.coffee +49 -0
  10. data/app/assets/javascripts/spina/application.js +15 -0
  11. data/app/assets/stylesheets/spina/_mixins.css.scss +34 -0
  12. data/app/assets/stylesheets/spina/_normalize.css +396 -0
  13. data/app/assets/stylesheets/spina/admin/application.css.sass +1 -0
  14. data/app/assets/stylesheets/spina/application.css.sass +6 -0
  15. data/app/controllers/spina/admin/accounts_controller.rb +50 -0
  16. data/app/controllers/spina/admin/admin_controller.rb +36 -0
  17. data/app/controllers/spina/admin/attachments_controller.rb +55 -0
  18. data/app/controllers/spina/admin/inquiries_controller.rb +63 -0
  19. data/app/controllers/spina/admin/page_parts_controller.rb +11 -0
  20. data/app/controllers/spina/admin/pages_controller.rb +92 -0
  21. data/app/controllers/spina/admin/photos_controller.rb +77 -0
  22. data/app/controllers/spina/admin/sessions_controller.rb +30 -0
  23. data/app/controllers/spina/admin/users_controller.rb +64 -0
  24. data/app/controllers/spina/application_controller.rb +26 -0
  25. data/app/controllers/spina/inquiries_controller.rb +30 -0
  26. data/app/controllers/spina/pages_controller.rb +47 -0
  27. data/app/controllers/spina/sitemaps_controller.rb +7 -0
  28. data/app/helpers/spina/admin/accounts_helper.rb +6 -0
  29. data/app/helpers/spina/admin/inquiries_helper.rb +6 -0
  30. data/app/helpers/spina/admin/page_parts_helper.rb +6 -0
  31. data/app/helpers/spina/admin/pages_helper.rb +16 -0
  32. data/app/helpers/spina/admin/photos_helper.rb +6 -0
  33. data/app/helpers/spina/admin/sessions_helper.rb +6 -0
  34. data/app/helpers/spina/admin/users_helper.rb +6 -0
  35. data/app/helpers/spina/application_helper.rb +68 -0
  36. data/app/mailers/spina/inquiry_mailer.rb +19 -0
  37. data/app/models/spina/ability.rb +20 -0
  38. data/app/models/spina/account.rb +72 -0
  39. data/app/models/spina/attachment.rb +28 -0
  40. data/app/models/spina/attachment_collection.rb +15 -0
  41. data/app/models/spina/inquiry.rb +41 -0
  42. data/app/models/spina/layout_part.rb +38 -0
  43. data/app/models/spina/line.rb +6 -0
  44. data/app/models/spina/page.rb +125 -0
  45. data/app/models/spina/page_part.rb +38 -0
  46. data/app/models/spina/photo.rb +23 -0
  47. data/app/models/spina/photo_collection.rb +30 -0
  48. data/app/models/spina/photo_collections_photo.rb +6 -0
  49. data/app/models/spina/spina.rb +7 -0
  50. data/app/models/spina/text.rb +6 -0
  51. data/app/models/spina/user.rb +31 -0
  52. data/app/presenters/spina/pages/menu_presenter.rb +82 -0
  53. data/app/uploaders/spina/file_uploader.rb +56 -0
  54. data/app/uploaders/spina/logo_uploader.rb +52 -0
  55. data/app/uploaders/spina/photo_uploader.rb +42 -0
  56. data/app/views/layouts/spina/admin/application.html.haml +37 -0
  57. data/app/views/layouts/spina/admin/media_library.html.haml +14 -0
  58. data/app/views/layouts/spina/admin/messages.html.haml +22 -0
  59. data/app/views/layouts/spina/admin/settings.html.haml +30 -0
  60. data/app/views/layouts/spina/admin/website.html.haml +26 -0
  61. data/app/views/layouts/spina/email.html.erb +124 -0
  62. data/app/views/layouts/spina/login.html.haml +21 -0
  63. data/app/views/spina/admin/accounts/_form.html.haml +55 -0
  64. data/app/views/spina/admin/accounts/analytics.html.haml +21 -0
  65. data/app/views/spina/admin/accounts/edit.html.haml +1 -0
  66. data/app/views/spina/admin/accounts/social.html.haml +23 -0
  67. data/app/views/spina/admin/accounts/style.html.haml +32 -0
  68. data/app/views/spina/admin/attachments/_attachment.html.haml +7 -0
  69. data/app/views/spina/admin/attachments/_attachment_collection.html.haml +2 -0
  70. data/app/views/spina/admin/attachments/_select.html.haml +25 -0
  71. data/app/views/spina/admin/attachments/_select_collection.html.haml +25 -0
  72. data/app/views/spina/admin/attachments/create.js.erb +5 -0
  73. data/app/views/spina/admin/attachments/index.html.haml +19 -0
  74. data/app/views/spina/admin/attachments/insert.js.erb +5 -0
  75. data/app/views/spina/admin/attachments/insert_collection.js.erb +7 -0
  76. data/app/views/spina/admin/attachments/select.js.erb +2 -0
  77. data/app/views/spina/admin/attachments/select_collection.js.erb +2 -0
  78. data/app/views/spina/admin/inquiries/inbox.html.haml +30 -0
  79. data/app/views/spina/admin/inquiries/index.html.haml +36 -0
  80. data/app/views/spina/admin/inquiries/show.html.haml +23 -0
  81. data/app/views/spina/admin/inquiries/spam.html.haml +36 -0
  82. data/app/views/spina/admin/layout_partables/_line_form.html.haml +4 -0
  83. data/app/views/spina/admin/page_partables/_attachment_collection_form.html.haml +9 -0
  84. data/app/views/spina/admin/page_partables/_attachment_form.html.haml +8 -0
  85. data/app/views/spina/admin/page_partables/_line_form.html.haml +2 -0
  86. data/app/views/spina/admin/page_partables/_photo_collection_form.html.haml +12 -0
  87. data/app/views/spina/admin/page_partables/_photo_form.html.haml +11 -0
  88. data/app/views/spina/admin/page_partables/_text_form.html.haml +21 -0
  89. data/app/views/spina/admin/page_parts/_wysihtml5_link.html.haml +12 -0
  90. data/app/views/spina/admin/page_parts/insert_wysihtml5_link.js +5 -0
  91. data/app/views/spina/admin/page_parts/wysihtml5_link.js +2 -0
  92. data/app/views/spina/admin/pages/_attachment_fields.html.haml +8 -0
  93. data/app/views/spina/admin/pages/_form.html.haml +83 -0
  94. data/app/views/spina/admin/pages/_page.html.haml +17 -0
  95. data/app/views/spina/admin/pages/edit.html.haml +11 -0
  96. data/app/views/spina/admin/pages/index.html.haml +37 -0
  97. data/app/views/spina/admin/pages/new.html.haml +11 -0
  98. data/app/views/spina/admin/pages/update.js.coffee +4 -0
  99. data/app/views/spina/admin/photos/_photo.html.haml +7 -0
  100. data/app/views/spina/admin/photos/_photo_collection.html.haml +5 -0
  101. data/app/views/spina/admin/photos/_photo_collection_select.html.haml +20 -0
  102. data/app/views/spina/admin/photos/_photo_link.html.haml +11 -0
  103. data/app/views/spina/admin/photos/_photo_select.html.haml +20 -0
  104. data/app/views/spina/admin/photos/_wysihtml5_select.html.haml +20 -0
  105. data/app/views/spina/admin/photos/create.js.erb +5 -0
  106. data/app/views/spina/admin/photos/enhance.js +0 -0
  107. data/app/views/spina/admin/photos/index.html.haml +7 -0
  108. data/app/views/spina/admin/photos/insert_photo.js.erb +10 -0
  109. data/app/views/spina/admin/photos/insert_photo_collection.js.erb +23 -0
  110. data/app/views/spina/admin/photos/link.js.erb +2 -0
  111. data/app/views/spina/admin/photos/photo_collection_select.js.erb +2 -0
  112. data/app/views/spina/admin/photos/photo_select.js.erb +2 -0
  113. data/app/views/spina/admin/photos/wysihtml5_insert.js.erb +5 -0
  114. data/app/views/spina/admin/photos/wysihtml5_select.js.erb +2 -0
  115. data/app/views/spina/admin/sessions/new.html.haml +4 -0
  116. data/app/views/spina/admin/shared/_navigation.html.haml +16 -0
  117. data/app/views/spina/admin/shared/_notifications.html.haml +16 -0
  118. data/app/views/spina/admin/users/_form.html.haml +54 -0
  119. data/app/views/spina/admin/users/edit.html.haml +1 -0
  120. data/app/views/spina/admin/users/index.html.haml +21 -0
  121. data/app/views/spina/admin/users/new.html.haml +1 -0
  122. data/app/views/spina/inquiries/create.html.haml +2 -0
  123. data/app/views/spina/inquiries/index.html.haml +19 -0
  124. data/app/views/spina/inquiry_mailer/inquiry.html.haml +15 -0
  125. data/app/views/spina/pages/_page.html.haml +3 -0
  126. data/app/views/spina/pages/homepage.html.haml +3 -0
  127. data/app/views/spina/pages/robots.text.erb +4 -0
  128. data/app/views/spina/pages/show.html.haml +1 -0
  129. data/app/views/spina/shared/_admin_bar.html.haml +4 -0
  130. data/app/views/spina/shared/_analytics.html.erb +11 -0
  131. data/app/views/spina/shared/_navigation.html.haml +3 -0
  132. data/app/views/spina/shared/_social.html.haml +5 -0
  133. data/app/views/spina/sitemaps/show.xml.builder +18 -0
  134. data/config/initializers/time_formats.rb +1 -0
  135. data/config/locales/en.yml +10 -0
  136. data/config/locales/nl.yml +213 -0
  137. data/config/routes.rb +88 -0
  138. data/db/migrate/20130412140449_create_spina_pages.rb +15 -0
  139. data/db/migrate/20130412140656_change_columns_pages.rb +6 -0
  140. data/db/migrate/20130412173041_create_spina_users.rb +12 -0
  141. data/db/migrate/20130412175403_create_spina_page_parts.rb +12 -0
  142. data/db/migrate/20130412175531_change_admin_of_users.rb +5 -0
  143. data/db/migrate/20130412180027_create_spina_page_includes.rb +12 -0
  144. data/db/migrate/20130412182257_create_spina_photos.rb +9 -0
  145. data/db/migrate/20130412191946_create_spina_accounts.rb +16 -0
  146. data/db/migrate/20130414145608_create_spina_inquiries.rb +13 -0
  147. data/db/migrate/20130422094248_add_theme_to_spina_accounts.rb +5 -0
  148. data/db/migrate/20130422161041_remove_theme_from_spina_accounts.rb +5 -0
  149. data/db/migrate/20130422194143_change_default_value_column_archived_inquiries.rb +5 -0
  150. data/db/migrate/20130425080630_change_page_includes.rb +8 -0
  151. data/db/migrate/20130426122705_add_parent_id_to_spina_pages.rb +5 -0
  152. data/db/migrate/20130426133425_change_colum_n_spina_pages_again.rb +5 -0
  153. data/db/migrate/20130426133606_bring_out_the_nukes.rb +6 -0
  154. data/db/migrate/20130429092708_add_name_to_spina_pages.rb +5 -0
  155. data/db/migrate/20130429124414_change_column_stomme_onzin.rb +6 -0
  156. data/db/migrate/20130503072744_add_last_logged_in_to_users.rb +5 -0
  157. data/db/migrate/20130503073613_change_column_spina_users.rb +5 -0
  158. data/db/migrate/20130503104857_create_spina_spina_files.rb +9 -0
  159. data/db/migrate/20130503105356_add_file_to_spina_page_parts.rb +5 -0
  160. data/db/migrate/20130503105943_change_columns_spina_files.rb +6 -0
  161. data/db/migrate/20130503110240_fix_namespaces.rb +12 -0
  162. data/db/migrate/20130503133649_create_spina_galleries.rb +10 -0
  163. data/db/migrate/20130504163456_add_seo_title_to_spina_pages.rb +5 -0
  164. data/db/migrate/20130516132913_add_spam_to_spina_inquiries.rb +5 -0
  165. data/db/migrate/20130523132347_add_page_partable_to_spina_page_parts.rb +137 -0
  166. data/db/migrate/20130527124130_remove_deprecated_columns_from_spina_page_parts.rb +11 -0
  167. data/db/migrate/20130715151201_switch_to_nested_sets_instead_of_position_pages.rb +10 -0
  168. data/db/migrate/20130719120007_add_skip_to_first_child_and_templates_to_spina_pages.rb +7 -0
  169. data/db/migrate/20130719121520_add_draft_to_spina_pages.rb +5 -0
  170. data/db/migrate/20130719122139_add_link_url_to_spina_pages.rb +5 -0
  171. data/db/migrate/20130719134545_rename_spina_file_to_attachments.rb +9 -0
  172. data/db/migrate/20130725111749_add_ancestry_to_spina_pages.rb +10 -0
  173. data/db/migrate/20130730185527_add_materialized_path_to_spina_pages.rb +5 -0
  174. data/db/migrate/20130918133920_change_column_page_parts.rb +6 -0
  175. data/db/migrate/20130919074011_create_spina_texts.rb +9 -0
  176. data/db/migrate/20130919074023_create_spina_lines.rb +9 -0
  177. data/db/migrate/20130919074838_remove_column_from_spina_page_parts.rb +5 -0
  178. data/db/migrate/20131210122702_change_column_spina_texts.rb +5 -0
  179. data/db/migrate/20131212080016_add_required_stuff_to_spina_accounts.rb +6 -0
  180. data/db/migrate/20140225141812_create_layout_parts.rb +12 -0
  181. data/db/migrate/20140225151146_add_account_id_to_spina_layout_parts.rb +5 -0
  182. data/db/migrate/20140407095608_add_active_to_spina_pages.rb +5 -0
  183. data/db/migrate/20140711154425_add_robots_allowed_to_spina_accounts.rb +5 -0
  184. data/db/migrate/20140718095419_add_position_to_spina_photo_collections_photos.rb +5 -0
  185. data/db/seeds.rb +14 -0
  186. data/lib/spina.rb +1 -0
  187. data/lib/spina/engine.rb +67 -0
  188. data/lib/spina/plugin.rb +10 -0
  189. data/lib/spina/theme.rb +21 -0
  190. data/lib/spina/version.rb +3 -0
  191. data/lib/tasks/spina_tasks.rake +12 -0
  192. data/test/dummy/README.rdoc +261 -0
  193. data/test/dummy/Rakefile +7 -0
  194. data/test/dummy/app/assets/javascripts/application.js +15 -0
  195. data/test/dummy/app/assets/stylesheets/application.css +13 -0
  196. data/test/dummy/app/controllers/application_controller.rb +3 -0
  197. data/test/dummy/app/helpers/application_helper.rb +2 -0
  198. data/test/dummy/config.ru +4 -0
  199. data/test/dummy/config/application.rb +50 -0
  200. data/test/dummy/config/boot.rb +10 -0
  201. data/test/dummy/config/database.yml +26 -0
  202. data/test/dummy/config/environment.rb +5 -0
  203. data/test/dummy/config/environments/development.rb +41 -0
  204. data/test/dummy/config/environments/production.rb +70 -0
  205. data/test/dummy/config/environments/test.rb +36 -0
  206. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  207. data/test/dummy/config/initializers/inflections.rb +15 -0
  208. data/test/dummy/config/initializers/mime_types.rb +5 -0
  209. data/test/dummy/config/initializers/secret_token.rb +8 -0
  210. data/test/dummy/config/initializers/session_store.rb +8 -0
  211. data/test/dummy/config/initializers/spina.rb +7 -0
  212. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  213. data/test/dummy/config/locales/en.yml +5 -0
  214. data/test/dummy/config/locales/nl.yml +214 -0
  215. data/test/dummy/config/routes.rb +4 -0
  216. data/test/dummy/db/migrate/20130412140523_create_spina_pages.spina.rb +16 -0
  217. data/test/dummy/db/migrate/20130412140723_change_columns_pages.spina.rb +7 -0
  218. data/test/dummy/db/migrate/20130412175127_create_spina_users.spina.rb +13 -0
  219. data/test/dummy/db/migrate/20130412175554_create_spina_page_parts.spina.rb +13 -0
  220. data/test/dummy/db/migrate/20130412175555_change_admin_of_users.spina.rb +6 -0
  221. data/test/dummy/db/migrate/20130412180101_create_spina_page_includes.spina.rb +13 -0
  222. data/test/dummy/db/migrate/20130412182303_create_spina_photos.spina.rb +10 -0
  223. data/test/dummy/db/migrate/20130412191955_create_spina_accounts.spina.rb +17 -0
  224. data/test/dummy/db/migrate/20130414145616_create_spina_inquiries.spina.rb +14 -0
  225. data/test/dummy/db/migrate/20130422094426_add_theme_to_spina_accounts.spina.rb +6 -0
  226. data/test/dummy/db/migrate/20130422161301_remove_theme_from_spina_accounts.spina.rb +6 -0
  227. data/test/dummy/db/migrate/20130422194211_change_default_value_column_archived_inquiries.spina.rb +6 -0
  228. data/test/dummy/db/migrate/20130425080933_change_page_includes.spina.rb +9 -0
  229. data/test/dummy/db/migrate/20130426122731_add_parent_id_to_spina_pages.spina.rb +6 -0
  230. data/test/dummy/db/migrate/20130426132453_change_column_spina_pages.spina.rb +6 -0
  231. data/test/dummy/db/migrate/20130426133450_change_colum_n_spina_pages_again.spina.rb +6 -0
  232. data/test/dummy/db/migrate/20130426133636_bring_out_the_nukes.spina.rb +7 -0
  233. data/test/dummy/db/migrate/20130429092958_add_name_to_spina_pages.spina.rb +6 -0
  234. data/test/dummy/db/migrate/20130503072811_change_column_stomme_onzin.spina.rb +7 -0
  235. data/test/dummy/db/migrate/20130503072850_add_last_logged_in_to_users.spina.rb +6 -0
  236. data/test/dummy/db/migrate/20130503073738_change_column_spina_users.spina.rb +6 -0
  237. data/test/dummy/db/migrate/20130503104917_create_spina_spina_files.spina.rb +10 -0
  238. data/test/dummy/db/migrate/20130503105407_add_file_to_spina_page_parts.spina.rb +6 -0
  239. data/test/dummy/db/migrate/20130503110055_change_columns_spina_files.spina.rb +7 -0
  240. data/test/dummy/db/migrate/20130503110354_fix_namespaces.spina.rb +13 -0
  241. data/test/dummy/db/migrate/20130503135202_create_spina_galleries.spina.rb +11 -0
  242. data/test/dummy/db/migrate/20130504171717_add_seo_title_to_spina_pages.spina.rb +6 -0
  243. data/test/dummy/db/migrate/20130516132920_add_spam_to_spina_inquiries.spina.rb +6 -0
  244. data/test/dummy/db/migrate/20130524104253_add_page_partable_to_spina_page_parts.spina.rb +131 -0
  245. data/test/dummy/db/migrate/20130528195734_remove_deprecated_columns_from_spina_page_parts.spina.rb +14 -0
  246. data/test/dummy/db/migrate/20130715152615_switch_to_nested_sets_instead_of_position_pages.spina.rb +11 -0
  247. data/test/dummy/db/migrate/20130719120131_add_skip_to_first_child_and_templates_to_spina_pages.spina.rb +8 -0
  248. data/test/dummy/db/migrate/20130719121553_add_draft_to_spina_pages.spina.rb +6 -0
  249. data/test/dummy/db/migrate/20130719122158_add_link_url_to_spina_pages.spina.rb +6 -0
  250. data/test/dummy/db/migrate/20130719134709_rename_spina_file_to_attachments.spina.rb +10 -0
  251. data/test/dummy/db/migrate/20130725112244_add_ancestry_to_spina_pages.spina.rb +11 -0
  252. data/test/dummy/db/migrate/20130730185551_add_materialized_path_to_spina_pages.spina.rb +6 -0
  253. data/test/dummy/db/migrate/20130918133920_change_column_page_parts.spina.rb +6 -0
  254. data/test/dummy/db/migrate/20130919074011_create_spina_texts.spina.rb +9 -0
  255. data/test/dummy/db/migrate/20130919074023_create_spina_lines.spina.rb +9 -0
  256. data/test/dummy/db/migrate/20130919074838_remove_column_from_spina_page_parts.spina.rb +5 -0
  257. data/test/dummy/db/migrate/20131210122702_change_column_spina_texts.rb +5 -0
  258. data/test/dummy/db/migrate/20131212080016_add_required_stuff_to_spina_accounts.rb +6 -0
  259. data/test/dummy/db/migrate/20140225141812_create_layout_parts.rb +12 -0
  260. data/test/dummy/db/migrate/20140225151146_add_account_id_to_spina_layout_parts.rb +5 -0
  261. data/test/dummy/db/migrate/20140407095608_add_active_to_spina_pages.rb +5 -0
  262. data/test/dummy/db/schema.rb +141 -0
  263. data/test/dummy/db/seeds.rb +1 -0
  264. data/test/dummy/public/404.html +26 -0
  265. data/test/dummy/public/422.html +26 -0
  266. data/test/dummy/public/500.html +25 -0
  267. data/test/dummy/public/favicon.ico +0 -0
  268. data/test/dummy/script/rails +6 -0
  269. data/test/fixtures/spina/accounts.yml +21 -0
  270. data/test/fixtures/spina/galleries.yml +9 -0
  271. data/test/fixtures/spina/inquiries.yml +15 -0
  272. data/test/fixtures/spina/lines.yml +7 -0
  273. data/test/fixtures/spina/page_includes.yml +13 -0
  274. data/test/fixtures/spina/page_parts.yml +13 -0
  275. data/test/fixtures/spina/pages.yml +19 -0
  276. data/test/fixtures/spina/photo_collection_files.yml +11 -0
  277. data/test/fixtures/spina/photo_collections.yml +11 -0
  278. data/test/fixtures/spina/photos.yml +7 -0
  279. data/test/fixtures/spina/texts.yml +7 -0
  280. data/test/fixtures/spina/users.yml +13 -0
  281. data/test/functional/spina/accounts_controller_test.rb +9 -0
  282. data/test/functional/spina/inquiries_controller_test.rb +9 -0
  283. data/test/functional/spina/page_parts_controller_test.rb +9 -0
  284. data/test/functional/spina/pages_controller_test.rb +9 -0
  285. data/test/functional/spina/photos_controller_test.rb +9 -0
  286. data/test/functional/spina/sessions_controller_test.rb +9 -0
  287. data/test/functional/spina/spina/inquiry_mailer_test.rb +9 -0
  288. data/test/functional/spina/users_controller_test.rb +9 -0
  289. data/test/integration/navigation_test.rb +10 -0
  290. data/test/models/spina/line_test.rb +9 -0
  291. data/test/models/spina/text_test.rb +9 -0
  292. data/test/spina_test.rb +7 -0
  293. data/test/support/images/after sun 2.jpg +0 -0
  294. data/test/support/images/after sun.jpg +0 -0
  295. data/test/support/images/amygdalus.jpg +0 -0
  296. data/test/support/images/at sunset-1.jpg +0 -0
  297. data/test/support/images/colorfull.jpg +0 -0
  298. data/test/support/images/nature tree.jpg +0 -0
  299. data/test/support/images/orchid.jpg +0 -0
  300. data/test/support/images/smooth.jpg +0 -0
  301. data/test/support/images/soft.jpg +0 -0
  302. data/test/support/images/spring memory.jpg +0 -0
  303. data/test/support/images/spring purple.jpg +0 -0
  304. data/test/support/images/spring.jpg +0 -0
  305. data/test/support/images/yew-tree.jpg +0 -0
  306. data/test/test_helper.rb +15 -0
  307. data/test/unit/helpers/spina/accounts_helper_test.rb +6 -0
  308. data/test/unit/helpers/spina/inquiries_helper_test.rb +6 -0
  309. data/test/unit/helpers/spina/page_parts_helper_test.rb +6 -0
  310. data/test/unit/helpers/spina/pages_helper_test.rb +6 -0
  311. data/test/unit/helpers/spina/photos_helper_test.rb +6 -0
  312. data/test/unit/helpers/spina/sessions_helper_test.rb +6 -0
  313. data/test/unit/helpers/spina/users_helper_test.rb +6 -0
  314. data/test/unit/spina/account_test.rb +9 -0
  315. data/test/unit/spina/file_collection_file_test.rb +9 -0
  316. data/test/unit/spina/gallery_test.rb +9 -0
  317. data/test/unit/spina/inquiry_test.rb +9 -0
  318. data/test/unit/spina/page_include_test.rb +9 -0
  319. data/test/unit/spina/page_part_test.rb +9 -0
  320. data/test/unit/spina/page_test.rb +9 -0
  321. data/test/unit/spina/photo_collection_file_test.rb +9 -0
  322. data/test/unit/spina/photo_collection_test.rb +9 -0
  323. data/test/unit/spina/photo_test.rb +9 -0
  324. data/test/unit/spina/spina/file_test.rb +9 -0
  325. data/test/unit/spina/user_test.rb +9 -0
  326. metadata +676 -0
@@ -0,0 +1 @@
1
+ = render 'form'
@@ -0,0 +1,23 @@
1
+ = form_for [spina, :admin, current_account] do |f|
2
+ .table-container
3
+ %table.table.table-form
4
+ %tr
5
+ %td
6
+ %label Facebook
7
+ %td
8
+ = f.text_field :facebook, placeholder: "Facebook"
9
+
10
+ %tr
11
+ %td
12
+ %label Twitter
13
+ %td
14
+ = f.text_field :twitter, placeholder: "Twitter"
15
+
16
+ %tr
17
+ %td
18
+ %label Google+
19
+ %td
20
+ = f.text_field :google_plus, placeholder: "Google+"
21
+
22
+ %button.button.button-primary{type: 'submit', data: {icon: 'o'}}
23
+ Social media opslaan
@@ -0,0 +1,32 @@
1
+ = form_for [spina, :admin, current_account] do |f|
2
+ .table-container
3
+ %table.table.table-form
4
+ %tr
5
+ %td
6
+ %label Layout website
7
+ %td
8
+ .select-dropdown.account-theme{data: {layout_parts: current_theme.config.layout_parts.map{|layout_part| layout_part[:name]}}}
9
+ - options = options_for_select(Spina.themes.map { |theme| [theme.to_s, theme.to_s, {'data-layout-parts' => theme.config.layout_parts.map{|layout_part| layout_part[:name] }}] }, current_account.theme)
10
+ = f.select :theme, options
11
+
12
+ %tr
13
+ %td
14
+ %label Logo
15
+ %td
16
+ = image_tag current_account.logo
17
+ = f.file_field :logo
18
+
19
+ = f.fields_for :layout_parts do |layout_part_form|
20
+ %tr.layout-part{data: {name: layout_part_form.object.name}}
21
+ %td
22
+ %label= layout_part_form.object.title
23
+ %td
24
+ = layout_part_form.hidden_field :id
25
+ = layout_part_form.hidden_field :title
26
+ = layout_part_form.hidden_field :layout_partable_type
27
+ = layout_part_form.hidden_field :name
28
+
29
+ = render partial: "spina/admin/layout_partables/#{layout_part_form.object.layout_partable_type.demodulize.underscore}_form", object: layout_part_form
30
+
31
+ %button.button.button-primary{type: 'submit', data: {icon: 'o'}}
32
+ Vormgeving opslaan
@@ -0,0 +1,7 @@
1
+ %tr
2
+ %td= attachment.name
3
+ %td.nowrap= number_to_human_size(attachment.file.size)
4
+ %td.nowrap
5
+ %small= l attachment.created_at, format: '%d %B %Y %H:%M'
6
+ %td.nowrap
7
+ = link_to "Verwijderen", "#", class: 'button button-link button-danger button-small', data: {confirm: "Weet je zeker dat je <strong>#{attachment.name}</strong> wilt verwijderen?"}
@@ -0,0 +1,2 @@
1
+ - attachments.each do |attachment|
2
+ .attachment= attachment.name
@@ -0,0 +1,25 @@
1
+ .modal.modal-large
2
+ %header
3
+ = link_to "", "#", class: 'close_modal', data: {dismiss: 'modal', icon: 'm'}
4
+ %h3 Document invoegen
5
+
6
+ %section
7
+ -# = form_for [spina, :admin, @attachment], html: {multipart: true} do |f|
8
+ -# = f.file_field :file, data: {customfileinput: true}
9
+
10
+ = form_tag spina.insert_admin_attachments_path(params[:page_part_id]), remote: true, class: 'gallery-prepend-attachment' do
11
+ .table-container
12
+ %table.table.table-clickable
13
+ %thead
14
+ %tr
15
+ %th
16
+ %th Bestandsnaam
17
+ %tbody
18
+ - @attachments.each do |attachment|
19
+ %tr
20
+ %td= radio_button_tag :attachment_id, attachment.id
21
+ %td= attachment.name
22
+
23
+ %footer
24
+ = link_to "Annuleren", "#", data: {dismiss: 'modal'}
25
+ = button_tag "Document invoegen", type: 'submit', class: 'primary', data: {icon: 't '}
@@ -0,0 +1,25 @@
1
+ .modal.modal-large
2
+ %header
3
+ = link_to "", "#", class: 'close_modal', data: {dismiss: 'modal', icon: 'm'}
4
+ %h3 Documenten invoegen
5
+
6
+ %section
7
+ -# = form_for [spina, :admin, @attachment], html: {multipart: true} do |f|
8
+ -# = f.file_field :file, data: {customfileinput: true}
9
+
10
+ = form_tag spina.insert_collection_admin_attachments_path(params[:page_part_id]), remote: true, class: 'gallery-prepend-attachment' do
11
+ .table-container
12
+ %table.table.table-clickable
13
+ %thead
14
+ %tr
15
+ %th
16
+ %th Bestandsnaam
17
+ %tbody
18
+ - @attachments.each do |attachment|
19
+ %tr
20
+ %td= check_box_tag 'attachment_ids[]', attachment.id
21
+ %td= attachment.name
22
+
23
+ %footer
24
+ = link_to "Annuleren", "#", data: {dismiss: 'modal'}
25
+ = button_tag "Documenten invoegen", type: 'submit', class: 'primary', data: {icon: 't '}
@@ -0,0 +1,5 @@
1
+ <% if @attachment.new_record? %>
2
+ alert("Document kon niet worden verwerkt: <%= j @attachment.errors.full_messages.join(', ').html_safe %>");
3
+ <% else %>
4
+ $(".table-prepend-document").prepend("<%= j render partial: 'spina/admin/attachments/attachment', object: @attachment %>");
5
+ <% end %>
@@ -0,0 +1,19 @@
1
+ .table-container
2
+ .search-input.pull-right
3
+ = text_field_tag :search, nil, placeholder: "Zoeken...", class: 'input-search input-rounded'
4
+ .clear-input{data: {icon: 'm'}}
5
+
6
+ %table.table.datatable
7
+ %thead
8
+ %tr
9
+ %th Bestandsnaam
10
+ %th Grootte
11
+ %th Aangemaakt op
12
+ %th
13
+ %tr
14
+ %td{colspan: 4}
15
+ = form_for [spina, :admin, @attachment], html: {multipart: true, class: "new_document"} do |f|
16
+ = f.file_field :file, data: {customfileinput: true}
17
+
18
+ %tbody.table-prepend-document
19
+ = render partial: 'spina/admin/attachments/attachment', collection: @attachments
@@ -0,0 +1,5 @@
1
+ var hidden_input = $("input[name='<%= j params[:page_part_id] %>[page_partable_id]']");
2
+ hidden_input.parents('td').find('a .attachment, a .placeholder').remove();
3
+ hidden_input.parents('td').find('a').prepend("<div class='attachment'><%= @attachment.name %></div>");
4
+ hidden_input.val("<%= @attachment.id %>");
5
+ $.hideModal();
@@ -0,0 +1,7 @@
1
+ var hidden_input = $("input[name='<%= j params[:page_part_id] %>[attachment_tokens]']");
2
+ var attachment_collection = $("<%= j render partial: 'attachment_collection', locals: {attachments: @attachments} %>");
3
+
4
+ hidden_input.parents('td').find('.attachment, .placeholder').remove();
5
+ hidden_input.parents('td a').append(attachment_collection);
6
+ hidden_input.val("<%= @attachments.map(&:id).join(',') %>");
7
+ $.hideModal();
@@ -0,0 +1,2 @@
1
+ var modal = $("<%= j render 'select' %>");
2
+ modal.modal();
@@ -0,0 +1,2 @@
1
+ var modal = $("<%= j render 'select_collection' %>");
2
+ modal.modal();
@@ -0,0 +1,30 @@
1
+ .table-container
2
+ %table.table
3
+ %thead
4
+ %tr
5
+ %th{width: 200} Afzender
6
+ %th Bericht
7
+ %th{colspan: 2}
8
+
9
+ %tbody
10
+ - if @inquiries.present?
11
+ - @inquiries.each do |inquiry|
12
+ %tr
13
+ %td
14
+ %p
15
+ %strong= inquiry.name
16
+
17
+ %td
18
+ %p= link_to inquiry.summary, spina.inbox_show_admin_inquiry_path(inquiry)
19
+
20
+ %td.nowrap
21
+ = l inquiry.created_at, format: '%e %B %Y %H:%M'
22
+
23
+ %td.nowrap
24
+ = link_to "Bericht markeren als gelezen", spina.mark_as_read_admin_inquiry_path(inquiry), method: :patch, class: 'button button-link button-small', data: {icon: 'k'}
25
+ = link_to "Verwijderen", spina.admin_inquiry_path(inquiry), method: :delete, class: 'button button-danger button-link button-small', data: {confirm: "Weet je zeker dat je het bericht van <strong>#{inquiry.name}</strong> definitief wilt verwijderen?"}
26
+
27
+ - else
28
+ %tr
29
+ %td.align-center{colspan: 3}
30
+ %em Inbox is leeg.
@@ -0,0 +1,36 @@
1
+ - content_for(:tertiary_navigation) do
2
+ %nav.tabs
3
+ %ul
4
+ %li{class: ('active' if action_name == "index")}
5
+ = link_to spina.admin_inquiries_path do
6
+ Alle berichten
7
+ %li{ class: ('active' if action_name == 'spam')}
8
+ = link_to spina.spam_admin_inquiries_path do
9
+ Spam
10
+
11
+ .table-container
12
+ %table.table
13
+ %thead
14
+ %tr
15
+ %th{width: 200} Afzender
16
+ %th Bericht
17
+ %th{colspan: 2}
18
+
19
+ %tbody
20
+ - if @inquiries.present?
21
+ - @inquiries.each do |inquiry|
22
+ %tr
23
+ %td
24
+ %p
25
+ %strong= inquiry.name
26
+ %td
27
+ %p
28
+ = link_to inquiry.summary, spina.admin_inquiry_path(inquiry)
29
+ %td.nowrap
30
+ %small=l inquiry.created_at, format: '%e %B %Y %H:%M'
31
+ %td.nowrap
32
+ = link_to "Verwijderen", spina.admin_inquiry_path(inquiry), method: :delete, class: 'button button-danger button-link button-small', data: {confirm: "Weet je zeker dat je het bericht van <strong>#{inquiry.name}</strong> definitief wilt verwijderen?"}
33
+ - else
34
+ %tr
35
+ %td.align-center{colspan: 3}
36
+ %em Je hebt nog geen berichten ontvangen.
@@ -0,0 +1,23 @@
1
+ .table-container.table-form
2
+ %table.table
3
+ %tr
4
+ %th Naam
5
+ %td= @inquiry.name
6
+ %tr
7
+ %th Email
8
+ %td= @inquiry.email
9
+ %tr
10
+ %th Telefoon
11
+ %td= @inquiry.phone
12
+ %tr
13
+ %td
14
+ %td= simple_format @inquiry.message
15
+
16
+ .pull-right
17
+ - unless @inquiry.archived?
18
+ = link_to "Bericht markeren als gelezen", spina.mark_as_read_admin_inquiry_path(@inquiry), method: :patch, class: 'button', data: {icon: 'k'}
19
+
20
+ - if @inquiry.spam
21
+ = link_to "Geen spam", spina.unmark_spam_admin_inquiry_path(@inquiry), method: :patch, class: 'button', data: {icon: 'v'}
22
+
23
+ = link_to "Verwijderen", spina.admin_inquiry_path(@inquiry), method: :delete, class: 'button button-danger button-link', data: {confirm: "Weet je zeker dat je het bericht van <strong>#{@inquiry.name}</strong> definitief wilt verwijderen?"}
@@ -0,0 +1,36 @@
1
+ - content_for(:tertiary_navigation) do
2
+ %nav.tabs
3
+ %ul
4
+ %li{class: ('active' if action_name == "index")}
5
+ = link_to spina.admin_inquiries_path do
6
+ Alle berichten
7
+ %li{ class: ('active' if action_name == 'spam')}
8
+ = link_to spina.spam_admin_inquiries_path do
9
+ Spam
10
+
11
+ .table-container
12
+ %table.table
13
+ %thead
14
+ %tr
15
+ %th{width: 200} Afzender
16
+ %th Bericht
17
+ %th{colspan: 2}
18
+
19
+ %tbody
20
+ - if @inquiries.present?
21
+ - @inquiries.each do |inquiry|
22
+ %tr
23
+ %td
24
+ %p
25
+ %strong= inquiry.name
26
+ %td
27
+ %p= link_to inquiry.summary, spina.admin_inquiry_path(inquiry)
28
+ %td.nowrap
29
+ %small=l inquiry.created_at, format: '%e %B %Y %H:%M'
30
+ %td.nowrap
31
+ = link_to "Geen spam", spina.unmark_spam_admin_inquiry_path(inquiry), method: :patch, class: 'button button-link button-primary button-small', data: {icon: 'x'}
32
+ = link_to "Verwijderen", spina.admin_inquiry_path(inquiry), method: :delete, class: 'button button-danger button-link button-small', data: {confirm: "Weet je zeker dat je het bericht van <strong>#{inquiry.name}</strong> definitief wilt verwijderen?"}
33
+ - else
34
+ %tr
35
+ %td.align-center{colspan: 3}
36
+ %em Er zijn geen berichten gemarkeerd als spam.
@@ -0,0 +1,4 @@
1
+ = line_form.fields_for :layout_partable, line_form.object.layout_partable do |form|
2
+ .colorpicker
3
+ = form.text_field :content, placeholder: line_form.object.title
4
+ .colorpicker-container
@@ -0,0 +1,9 @@
1
+ = attachment_collection_form.fields_for :page_partable, attachment_collection_form.object.page_partable do |form|
2
+ = link_to select_collection_admin_attachments_path(form.object_name), remote: true, class: "media_picker" do
3
+ - if form.object.attachments.any?
4
+ - form.object.attachments.each do |attachment|
5
+ .attachment= attachment.name
6
+ - else
7
+ .placeholder
8
+ %span{data: {icon: 't'}} Kies uit bibliotheek
9
+ = form.hidden_field :attachment_tokens, value: form.object.attachment_ids.join(",")
@@ -0,0 +1,8 @@
1
+ = link_to select_admin_attachments_path(attachment_form.object_name), remote: true, class: "media_picker" do
2
+ - if attachment_form.object.page_partable && attachment_form.object.page_partable.file.present?
3
+ .attachment= attachment_form.object.page_partable.name
4
+ - else
5
+ .placeholder
6
+ %span{data: {icon: 't'}} Kies uit bibliotheek
7
+
8
+ = attachment_form.hidden_field :page_partable_id
@@ -0,0 +1,2 @@
1
+ = line_form.fields_for :page_partable, line_form.object.page_partable do |form|
2
+ = form.text_field :content, placeholder: "Paginsectie #{line_form.object.name.downcase}"
@@ -0,0 +1,12 @@
1
+ = photo_collection_form.fields_for :page_partable, photo_collection_form.object.page_partable do |form|
2
+ = link_to spina.photo_collection_select_admin_photos_path(form.object_name, selected_photo_ids: (form.object.photo_ids if form.object.photos.any?)), remote: true, class: "media_picker" do
3
+ .placeholder{class: ('pull-right' if form.object.photos.any?)}
4
+ %span.button.button-small.button-round{data: {icon: 'U'}} Foto's kiezen
5
+
6
+ .photo-collection
7
+ - if form.object.photos.sorted_by_photo_collection.any?
8
+ = render 'spina/admin/photos/photo_collection', photos: form.object.photos.sorted_by_photo_collection
9
+ - elsif form.object.photos.any?
10
+ = render 'spina/admin/photos/photo_collection', photos: form.object.photos
11
+ = form.hidden_field :photo_tokens, value: form.object.photo_ids.join(",")
12
+ = form.hidden_field :photo_positions, value: form.object.photos.sorted_by_photo_collection.pluck(:photo_id).join(","), class: 'photo-positions'
@@ -0,0 +1,11 @@
1
+ = link_to spina.photo_select_admin_photos_path(photo_form.object_name, selected_photo_id: (photo_form.object.page_partable.id if photo_form.object.page_partable.present?)), remote: true, class: "media_picker" do
2
+ - if photo_form.object.page_partable && photo_form.object.page_partable.file.present?
3
+ .placeholder.pull-right
4
+ %span.button.button-small.button-round{data: {icon: 'U'}} Foto kiezen
5
+ .image
6
+ = image_tag photo_form.object.page_partable.file.thumb
7
+ - else
8
+ .placeholder
9
+ %span.button.button-small.button-round{data: {icon: 'U'}} Foto kiezen
10
+
11
+ = photo_form.hidden_field :page_partable_id
@@ -0,0 +1,21 @@
1
+ = text_form.fields_for :page_partable, text_form.object.page_partable do |form|
2
+ .wysihtml5-container{data: {:"object-id" => text_form.object.object_id}}
3
+ .toolbar{id: "wysihtml5-toolbar-#{text_form.object.object_id}"}
4
+ = link_to "", "#", class: 'command command-bold', title: "CTRL+B", data: {:"wysihtml5-command" => "bold", icon: 'H'}
5
+ = link_to "", "#", class: 'command command-italic', title: "CTRL+I", data: {:"wysihtml5-command" => "italic", icon: 'G'}
6
+ = link_to "", "#", class: 'command command-insert-unordered-list', data: {:"wysihtml5-command" => "insertUnorderedList", icon: 'F'}
7
+ = link_to "", spina.wysihtml5_link_admin_page_parts_path(text_form.object.object_id), class: 'command', data: {icon: 'Y'}, remote: true
8
+ = link_to "", spina.wysihtml5_select_admin_photos_path(text_form.object.object_id), class: 'command', data: {icon: 'V'}, remote: true
9
+
10
+ .pull-right
11
+ .choose-text-type
12
+ %ul
13
+ %li= link_to "Paragraaf", "#", data: {:"wysihtml5-command" => "formatBlock", :"wysihtml5-command-value" => "P"}
14
+ %li= link_to "Kop 1", "#", data: {:"wysihtml5-command" => "formatBlock", :"wysihtml5-command-value" => "h1"}
15
+ %li= link_to "Kop 2", "#", data: {:"wysihtml5-command" => "formatBlock", :"wysihtml5-command-value" => "h2"}
16
+ %li= link_to "Kop 3", "#", data: {:"wysihtml5-command" => "formatBlock", :"wysihtml5-command-value" => "h3"}
17
+ %li= link_to "Quote", "#", data: {:"wysihtml5-command" => "formatBlock", :"wysihtml5-command-value" => "blockquote"}
18
+
19
+ = link_to "", "#", class: 'command action-change-view', data: {:"wysihtml5-action" => "change_view", icon: 'I'}
20
+
21
+ = form.text_area :content, placeholder: "Paginasectie #{text_form.object.name.downcase}", class: 'wysihtml5'
@@ -0,0 +1,12 @@
1
+ .modal
2
+ = form_tag spina.wysihtml5_link_admin_page_parts_path(params[:object_id]), method: :post, remote: true do
3
+ %header
4
+ = link_to "", "#", class: 'close_modal', data: {dismiss: 'modal', icon: 'm'}
5
+ %h3 Link invoegen
6
+
7
+ %section
8
+ = text_field_tag :link, nil, placeholder: "URL"
9
+
10
+ %footer
11
+ = link_to "Annuleren", "#", data: {dismiss: 'modal'}
12
+ = button_tag "Link invoegen", type: 'submit', class: 'primary', data: {icon: 't '}
@@ -0,0 +1,5 @@
1
+ var editor = $(".wysihtml5-container[data-object-id=<%= params[:object_id] %>]").data('wysihtml5');
2
+ editor.focus();
3
+ editor.composer.commands.exec("createLink", { href: "<%= params[:link] %>", target: "_self" });
4
+ editor.focus();
5
+ $.hideModal();
@@ -0,0 +1,2 @@
1
+ var modal = $("<%= j render 'wysihtml5_link' %>");
2
+ modal.modal();
@@ -0,0 +1,8 @@
1
+ -# %fieldset
2
+ -# %div{style: 'float: left; min-width: 400px;'}
3
+ -# = f.file_field :file, data: { customfile: true, placeholder: (f.object.new_record? ? "Nog geen bestand geselecteerd" : f.object.name) }
4
+ -# %br
5
+ -# = link_to "", '#', class: 'remove_field button button-link', data: {icon: 'x'}
6
+ -# = f.hidden_field :_destroy
7
+ -# %br
8
+ -#
@@ -0,0 +1,83 @@
1
+ = form_for [spina, :admin, @page], multipart: true, html: {autocomplete: "off"} do |f|
2
+ - content_for :notification_alert do
3
+ = error_explanation!(@page)
4
+
5
+ #page_content.tab-content.active
6
+ .table-container
7
+ %table.table.table-form
8
+ %tr
9
+ %td
10
+ Titel
11
+ %td
12
+ = f.text_field :title, placeholder: "Titel in de pagina"
13
+
14
+ = f.fields_for :page_parts, @page_parts.sort { |a,b| a.position(current_theme) <=> b.position(current_theme) } do |page_part_form|
15
+ %tr.page-part{data: {name: page_part_form.object.name}}
16
+ %td
17
+ %label= page_part_form.object.title
18
+ %td
19
+ = page_part_form.hidden_field :id
20
+ = page_part_form.hidden_field :title
21
+ = page_part_form.hidden_field :page_partable_type
22
+ = page_part_form.hidden_field :name
23
+
24
+ = render partial: "spina/admin/page_partables/#{page_part_form.object.page_partable_type.demodulize.underscore}_form", object: page_part_form
25
+
26
+ #page_seo.tab-content
27
+ .table-container
28
+ %table.table.table-form
29
+ %tr
30
+ %td
31
+ SEO &lt;title&gt;
32
+ %td
33
+ = f.text_field :seo_title, placeholder: "Deze titel komt in de <title>-tag van de broncode te staan"
34
+
35
+ %tr
36
+ %td
37
+ SEO Beschrijving
38
+ %small De beschrijving wordt weergegeven bij resultaten van zoekmachines
39
+ %td
40
+ = f.text_field :description, placeholder: "Een korte beschrijving van de pagina"
41
+
42
+ #advanced.tab-content
43
+ .table-container
44
+ %table.table.table-form
45
+ %tr
46
+ %td
47
+ Concept
48
+ %small Handig wanneer de pagina nog niet helemaal af is
49
+ %td
50
+ = f.check_box :draft, data: {switch: true}
51
+ %tr
52
+ %td
53
+ Doorsturen
54
+ %small Doorsturen naar eerste onderliggende pagina
55
+ %td
56
+ = f.check_box :skip_to_first_child, data: {switch: true}
57
+ %tr
58
+ %td
59
+ In menu weergeven
60
+ %small Als dit uit staat komt de pagina niet voor in het menu
61
+ %td
62
+ = f.check_box :show_in_menu, data: {switch: true}
63
+ %tr{style: ('border-bottom: none' if @page.custom_page?)}
64
+ %td
65
+ Menu titel
66
+ %td
67
+ = f.text_field :menu_title, placeholder: "Leeglaten om de titel van de pagina over te nemen"
68
+
69
+ %tr{style: ('display: none' if @page.custom_page?)}
70
+ %td
71
+ Pagina template
72
+ %td
73
+ .select-dropdown.page-template{data: {page_parts: current_theme.config.view_templates[@page.view_template || "show"][:page_parts]}}
74
+ - options = options_for_select(current_theme.config.view_templates.map { |template| [template[1][:title], template[0], {'data-page-parts' => template[1][:page_parts]}] }, @page.view_template)
75
+ = f.select :view_template, options
76
+
77
+ %button.button.button-primary{type: 'submit', data: {icon: 'o'}}
78
+ Pagina opslaan
79
+
80
+ = link_to "Annuleren", spina.admin_pages_path, class: 'button button-link'
81
+
82
+ - unless @page.new_record? || !@page.deletable
83
+ .pull-right= link_to "Definitief verwijderen", spina.admin_page_path(@page), method: :delete, data: {confirm: "Weet je zeker dat je de pagina <strong>#{@page.menu_title}</strong> wilt verwijderen?"}, class: 'button button-link button-danger'