zen 0.3 → 0.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 (373) hide show
  1. data/.gems +3 -2
  2. data/.rvmrc +1 -1
  3. data/.travis.yml +5 -0
  4. data/.yardopts +2 -1
  5. data/LICENSE +1 -1
  6. data/README.md +28 -24
  7. data/Rakefile +5 -2
  8. data/guide/asset_management.md +6 -6
  9. data/guide/autosaving_forms.md +42 -0
  10. data/guide/changelog.md +41 -0
  11. data/guide/faq.md +49 -0
  12. data/guide/getting_started.md +24 -13
  13. data/guide/hacking.md +40 -9
  14. data/guide/images/categories/categories.png +0 -0
  15. data/guide/images/categories/category_groups.png +0 -0
  16. data/guide/images/categories/new_category.png +0 -0
  17. data/guide/images/categories/new_category_group.png +0 -0
  18. data/guide/images/comments/comments.png +0 -0
  19. data/guide/images/comments/edit_comment.png +0 -0
  20. data/guide/images/custom_fields/custom_field_groups.png +0 -0
  21. data/guide/images/custom_fields/custom_field_types.png +0 -0
  22. data/guide/images/custom_fields/custom_fields.png +0 -0
  23. data/guide/images/custom_fields/edit_custom_field_general.png +0 -0
  24. data/guide/images/custom_fields/edit_custom_field_group.png +0 -0
  25. data/guide/images/custom_fields/edit_custom_field_settings.png +0 -0
  26. data/guide/images/custom_fields/edit_custom_field_type.png +0 -0
  27. data/guide/images/dashboard/added.png +0 -0
  28. data/guide/images/dashboard/columns.png +0 -0
  29. data/guide/images/dashboard/dashboard.png +0 -0
  30. data/guide/images/dashboard/options.png +0 -0
  31. data/guide/images/menus/edit_menu.png +0 -0
  32. data/guide/images/menus/edit_menu_item.png +0 -0
  33. data/guide/images/menus/menu_item_hierarchy.png +0 -0
  34. data/guide/images/menus/menu_items.png +0 -0
  35. data/guide/images/menus/menus.png +0 -0
  36. data/guide/images/sections/edit_entry.png +0 -0
  37. data/guide/images/sections/edit_entry_categories.png +0 -0
  38. data/guide/images/sections/edit_entry_general.png +0 -0
  39. data/guide/images/sections/edit_entry_meta.png +0 -0
  40. data/guide/images/sections/edit_section_comments.png +0 -0
  41. data/guide/images/sections/edit_section_general.png +0 -0
  42. data/guide/images/sections/edit_section_groups.png +0 -0
  43. data/guide/images/sections/entries.png +0 -0
  44. data/guide/images/sections/sections.png +0 -0
  45. data/guide/images/settings/overview_general.png +0 -0
  46. data/guide/images/settings/overview_security.png +0 -0
  47. data/guide/images/settings/overview_user.png +0 -0
  48. data/guide/images/users/edit_user.png +0 -0
  49. data/guide/images/users/edit_user_group.png +0 -0
  50. data/guide/images/users/edit_user_group_permissions.png +0 -0
  51. data/guide/images/users/edit_user_permissions.png +0 -0
  52. data/guide/images/users/overview.png +0 -0
  53. data/guide/images/users/user_groups_overview.png +0 -0
  54. data/guide/installation.md +7 -1
  55. data/guide/javascript.md +36 -273
  56. data/guide/javascript/zen_autosave.md +26 -0
  57. data/guide/javascript/zen_editor.md +83 -0
  58. data/guide/javascript/zen_hash.md +34 -0
  59. data/guide/javascript/zen_htmltable.md +78 -0
  60. data/guide/javascript/zen_tabs.md +44 -0
  61. data/guide/javascript/zen_window.md +49 -0
  62. data/guide/zen_compared.md +201 -0
  63. data/lib/vendor/sequel_sluggable.rb +1 -1
  64. data/lib/zen.rb +64 -44
  65. data/lib/zen/asset_groups.rb +10 -10
  66. data/lib/zen/bin/create.rb +8 -1
  67. data/lib/zen/helper/breadcrumb.rb +4 -12
  68. data/lib/zen/helper/controller.rb +209 -6
  69. data/lib/zen/helper/locale.rb +19 -0
  70. data/lib/zen/helper/search.rb +1 -1
  71. data/lib/zen/helper/stacked_aspect.rb +7 -43
  72. data/lib/zen/helper/theme.rb +3 -3
  73. data/lib/zen/language.rb +5 -10
  74. data/lib/zen/language/translation.rb +1 -1
  75. data/lib/zen/layout/admin.xhtml +41 -25
  76. data/lib/zen/layout/login.xhtml +8 -3
  77. data/lib/zen/migrator.rb +54 -0
  78. data/lib/zen/model/helper.rb +20 -1
  79. data/lib/zen/model/init.rb +2 -0
  80. data/lib/zen/model/plugin/events.rb +158 -0
  81. data/lib/zen/package.rb +32 -6
  82. data/lib/zen/package/all.rb +1 -0
  83. data/lib/zen/package/categories/lib/categories.rb +6 -6
  84. data/lib/zen/package/categories/lib/categories/controller/categories.rb +20 -83
  85. data/lib/zen/package/categories/lib/categories/controller/category_groups.rb +23 -74
  86. data/lib/zen/package/categories/lib/categories/model/category.rb +58 -1
  87. data/lib/zen/package/categories/lib/categories/model/category_group.rb +62 -2
  88. data/lib/zen/package/categories/lib/categories/view/admin/categories/form.xhtml +46 -40
  89. data/lib/zen/package/categories/lib/categories/view/admin/categories/index.xhtml +74 -75
  90. data/lib/zen/package/categories/lib/categories/view/admin/category-groups/form.xhtml +27 -24
  91. data/lib/zen/package/categories/lib/categories/view/admin/category-groups/index.xhtml +83 -86
  92. data/lib/zen/package/comments/lib/comments.rb +5 -5
  93. data/lib/zen/package/comments/lib/comments/controller/comments.rb +12 -64
  94. data/lib/zen/package/comments/lib/comments/controller/comments_form.rb +4 -22
  95. data/lib/zen/package/comments/lib/comments/model/comment.rb +65 -16
  96. data/lib/zen/package/comments/lib/comments/view/admin/comments/form.xhtml +52 -49
  97. data/lib/zen/package/comments/lib/comments/view/admin/comments/index.xhtml +52 -60
  98. data/lib/zen/package/comments/migrations/1308774099_comment_status.rb +1 -1
  99. data/lib/zen/package/custom_fields/lib/custom_fields.rb +11 -13
  100. data/lib/zen/package/custom_fields/lib/custom_fields/blue_form_parameters.rb +29 -13
  101. data/lib/zen/package/custom_fields/lib/custom_fields/controller/custom_field_groups.rb +21 -50
  102. data/lib/zen/package/custom_fields/lib/custom_fields/controller/custom_field_types.rb +27 -71
  103. data/lib/zen/package/custom_fields/lib/custom_fields/controller/custom_fields.rb +25 -78
  104. data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field.rb +48 -1
  105. data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field_group.rb +35 -1
  106. data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field_method.rb +3 -0
  107. data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field_type.rb +40 -1
  108. data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field_value.rb +1 -0
  109. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-groups/form.xhtml +29 -26
  110. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-groups/index.xhtml +96 -100
  111. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-types/form.xhtml +56 -53
  112. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-types/index.xhtml +82 -82
  113. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-fields/form.xhtml +88 -85
  114. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-fields/index.xhtml +83 -80
  115. data/lib/zen/package/dashboard/lib/dashboard.rb +28 -0
  116. data/lib/zen/package/dashboard/lib/dashboard/controller/dashboard.rb +154 -0
  117. data/lib/zen/package/dashboard/lib/dashboard/language/en/dashboard.rb +35 -0
  118. data/lib/zen/package/dashboard/lib/dashboard/language/nl/dashboard.rb +36 -0
  119. data/lib/zen/package/dashboard/lib/dashboard/model/widget.rb +45 -0
  120. data/lib/zen/package/dashboard/lib/dashboard/public/admin/dashboard/css/dashboard.css +74 -0
  121. data/lib/zen/package/dashboard/lib/dashboard/public/admin/dashboard/js/dashboard.js +102 -0
  122. data/lib/zen/package/dashboard/lib/dashboard/view/admin/index.xhtml +29 -0
  123. data/lib/zen/package/dashboard/lib/dashboard/view/admin/widget/welcome.xhtml +28 -0
  124. data/lib/zen/package/dashboard/lib/dashboard/widget.rb +292 -0
  125. data/lib/zen/package/dashboard/lib/dashboard/widget/welcome.rb +9 -0
  126. data/lib/zen/package/dashboard/migrations/1326411254_create_schema.rb +28 -0
  127. data/lib/zen/package/extensions/lib/extensions.rb +5 -5
  128. data/lib/zen/package/extensions/lib/extensions/view/admin/extensions/index.xhtml +72 -67
  129. data/lib/zen/package/menu.rb +6 -1
  130. data/lib/zen/package/menus/lib/menus.rb +6 -4
  131. data/lib/zen/package/menus/lib/menus/controller/menu_items.rb +69 -104
  132. data/lib/zen/package/menus/lib/menus/controller/menus.rb +19 -76
  133. data/lib/zen/package/menus/lib/menus/helper/menu.rb +54 -38
  134. data/lib/zen/package/menus/lib/menus/helper/menu_frontend.rb +7 -13
  135. data/lib/zen/package/menus/lib/menus/model/menu.rb +158 -2
  136. data/lib/zen/package/menus/lib/menus/model/menu_item.rb +73 -10
  137. data/lib/zen/package/menus/lib/menus/public/admin/menus/css/menus.css +47 -0
  138. data/lib/zen/package/menus/lib/menus/public/admin/menus/js/lib/nested_sortables.js +549 -0
  139. data/lib/zen/package/menus/lib/menus/public/admin/menus/js/menu_items.js +38 -0
  140. data/lib/zen/package/menus/lib/menus/view/admin/menu-items/form.xhtml +51 -61
  141. data/lib/zen/package/menus/lib/menus/view/admin/menu-items/index.xhtml +18 -81
  142. data/lib/zen/package/menus/lib/menus/view/admin/menus/form.xhtml +49 -44
  143. data/lib/zen/package/menus/lib/menus/view/admin/menus/index.xhtml +81 -83
  144. data/lib/zen/package/sections/lib/sections.rb +9 -4
  145. data/lib/zen/package/sections/lib/sections/controller/section_entries.rb +80 -132
  146. data/lib/zen/package/sections/lib/sections/controller/sections.rb +27 -73
  147. data/lib/zen/package/sections/lib/sections/helper/section.rb +44 -1
  148. data/lib/zen/package/sections/lib/sections/language/en/section_entries.rb +2 -0
  149. data/lib/zen/package/sections/lib/sections/language/nl/section_entries.rb +2 -0
  150. data/lib/zen/package/sections/lib/sections/model/section.rb +48 -1
  151. data/lib/zen/package/sections/lib/sections/model/section_entry.rb +55 -5
  152. data/lib/zen/package/sections/lib/sections/model/section_entry_status.rb +2 -0
  153. data/lib/zen/package/sections/lib/sections/view/admin/section-entries/form.xhtml +76 -67
  154. data/lib/zen/package/sections/lib/sections/view/admin/section-entries/index.xhtml +74 -79
  155. data/lib/zen/package/sections/lib/sections/view/admin/section-entries/recent_entries.xhtml +45 -0
  156. data/lib/zen/package/sections/lib/sections/view/admin/sections/form.xhtml +119 -0
  157. data/lib/zen/package/sections/lib/sections/view/admin/sections/index.xhtml +96 -0
  158. data/lib/zen/package/sections/lib/sections/widget/recent_entries.rb +14 -0
  159. data/lib/zen/package/sections/migrations/1308813320_section_entry_statuses.rb +1 -1
  160. data/lib/zen/package/settings/lib/settings.rb +14 -5
  161. data/lib/zen/package/settings/lib/settings/controller/settings.rb +4 -4
  162. data/lib/zen/package/settings/lib/settings/language/nl/settings.rb +1 -1
  163. data/lib/zen/package/settings/lib/settings/setting.rb +1 -1
  164. data/lib/zen/package/settings/lib/settings/view/admin/settings/index.xhtml +21 -17
  165. data/lib/zen/package/users/lib/users.rb +18 -19
  166. data/lib/zen/package/users/lib/users/controller/user_groups.rb +23 -50
  167. data/lib/zen/package/users/lib/users/controller/users.rb +57 -89
  168. data/lib/zen/package/users/lib/users/helper/acl.rb +1 -0
  169. data/lib/zen/package/users/lib/users/language/en/user_groups.rb +1 -0
  170. data/lib/zen/package/users/lib/users/language/en/users.rb +2 -1
  171. data/lib/zen/package/users/lib/users/language/nl/user_groups.rb +1 -0
  172. data/lib/zen/package/users/lib/users/language/nl/users.rb +2 -1
  173. data/lib/zen/package/users/lib/users/model/permission.rb +13 -0
  174. data/lib/zen/package/users/lib/users/model/user.rb +57 -4
  175. data/lib/zen/package/users/lib/users/model/user_group.rb +37 -3
  176. data/lib/zen/package/users/lib/users/model/user_status.rb +4 -0
  177. data/lib/zen/package/users/lib/users/public/admin/{css/users/permissions.css → users/css/users.css} +0 -0
  178. data/lib/zen/package/users/lib/users/public/admin/{js/users/permissions.js → users/js/users.js} +4 -2
  179. data/lib/zen/package/users/lib/users/view/admin/user-groups/form.xhtml +51 -47
  180. data/lib/zen/package/users/lib/users/view/admin/user-groups/index.xhtml +62 -69
  181. data/lib/zen/package/users/lib/users/view/admin/users/form.xhtml +92 -82
  182. data/lib/zen/package/users/lib/users/view/admin/users/index.xhtml +68 -66
  183. data/lib/zen/package/users/lib/users/view/admin/users/login.xhtml +36 -28
  184. data/lib/zen/package/users/lib/users/view/admin/users/permissions.xhtml +5 -7
  185. data/lib/zen/package/users/lib/users/view/admin/users/register.xhtml +47 -41
  186. data/lib/zen/package/users/migrations/1320272365_status_ids.rb +1 -1
  187. data/lib/zen/public/admin/{js/vendor/mootools → mootools/js}/core.js +113 -108
  188. data/lib/zen/public/admin/{js/vendor/mootools → mootools/js}/more.js +99 -6
  189. data/lib/zen/public/admin/zen/css/buttons.css +106 -0
  190. data/lib/zen/public/admin/{css/zen → zen/css}/datepicker.css +45 -30
  191. data/lib/zen/public/admin/zen/css/editor.css +69 -0
  192. data/lib/zen/public/admin/{css/zen → zen/css}/forms.css +28 -30
  193. data/lib/zen/public/admin/zen/css/general.css +183 -0
  194. data/lib/zen/public/admin/zen/css/layout.css +224 -0
  195. data/lib/zen/public/admin/zen/css/messages.css +34 -0
  196. data/lib/zen/public/admin/{css/zen → zen/css}/reset.css +4 -9
  197. data/lib/zen/public/admin/zen/css/tables.css +57 -0
  198. data/lib/zen/public/admin/zen/css/tabs.css +84 -0
  199. data/lib/zen/public/admin/zen/css/window.css +74 -0
  200. data/lib/zen/public/admin/{images/zen → zen/images}/icons/asc.png +0 -0
  201. data/lib/zen/public/admin/{images/zen → zen/images}/icons/bold.png +0 -0
  202. data/lib/zen/public/admin/zen/images/icons/box.png +0 -0
  203. data/lib/zen/public/admin/zen/images/icons/categories.png +0 -0
  204. data/lib/zen/public/admin/{images/zen → zen/images}/icons/close.png +0 -0
  205. data/lib/zen/public/admin/zen/images/icons/comment.png +0 -0
  206. data/lib/zen/public/admin/{images/zen → zen/images}/icons/desc.png +0 -0
  207. data/lib/zen/public/admin/{images/zen → zen/images}/icons/edit.png +0 -0
  208. data/lib/zen/public/admin/{images/zen → zen/images}/icons/error.png +0 -0
  209. data/lib/zen/public/admin/zen/images/icons/external.png +0 -0
  210. data/lib/zen/public/admin/zen/images/icons/globe.png +0 -0
  211. data/lib/zen/public/admin/{images/zen → zen/images}/icons/italic.png +0 -0
  212. data/lib/zen/public/admin/{images/zen → zen/images}/icons/link.png +0 -0
  213. data/lib/zen/public/admin/zen/images/icons/lock.png +0 -0
  214. data/lib/zen/public/admin/{images/zen → zen/images}/icons/ol.png +0 -0
  215. data/lib/zen/public/admin/zen/images/icons/pages.png +0 -0
  216. data/lib/zen/public/admin/{images/zen → zen/images}/icons/preview.png +0 -0
  217. data/lib/zen/public/admin/zen/images/icons/relation.png +0 -0
  218. data/lib/zen/public/admin/zen/images/icons/settings.png +0 -0
  219. data/lib/zen/public/admin/zen/images/icons/template.png +0 -0
  220. data/lib/zen/public/admin/{images/zen → zen/images}/icons/ul.png +0 -0
  221. data/lib/zen/public/admin/{images/zen → zen/images}/icons/user.png +0 -0
  222. data/lib/zen/public/admin/zen/images/icons/user_group.png +0 -0
  223. data/lib/zen/public/admin/{js/zen → zen/js}/index.js +21 -9
  224. data/lib/zen/public/admin/zen/js/lib/autosave.js +185 -0
  225. data/lib/zen/public/admin/zen/js/lib/base.js +60 -0
  226. data/lib/zen/public/admin/{js/vendor → zen/js/lib}/datepicker.js +52 -28
  227. data/lib/zen/public/admin/{js/zen → zen/js}/lib/editor.js +23 -34
  228. data/lib/zen/public/admin/{js/zen → zen/js}/lib/editor/markdown.js +5 -1
  229. data/lib/zen/public/admin/{js/zen → zen/js}/lib/editor/textile.js +4 -0
  230. data/lib/zen/public/admin/zen/js/lib/hash.js +218 -0
  231. data/lib/zen/public/admin/{js/zen → zen/js}/lib/html_table.js +5 -0
  232. data/lib/zen/public/admin/zen/js/lib/tabs.js +194 -0
  233. data/lib/zen/public/admin/{js/zen → zen/js}/lib/window.js +54 -29
  234. data/lib/zen/security.rb +50 -0
  235. data/lib/zen/spec/helper.rb +5 -120
  236. data/lib/zen/spec/helper/capybara.rb +75 -0
  237. data/lib/zen/spec/helper/general.rb +75 -0
  238. data/lib/zen/spec/simplecov.rb +1 -0
  239. data/lib/zen/task/build.rake +2 -21
  240. data/lib/zen/task/clean.rake +1 -10
  241. data/lib/zen/task/db.rake +4 -10
  242. data/lib/zen/task/package.rake +2 -5
  243. data/lib/zen/task/setup.rake +1 -1
  244. data/lib/zen/task/test.rake +6 -6
  245. data/lib/zen/task/theme.rake +2 -5
  246. data/lib/zen/theme.rb +26 -22
  247. data/lib/zen/version.rb +1 -1
  248. data/lib/zen/view/bottom.xhtml +2 -3
  249. data/lib/zen/view/search.xhtml +3 -5
  250. data/proto/app/config/config.rb.erb +1 -1
  251. data/proto/app/theme/default/index.xhtml +116 -20
  252. data/proto/app/theme/partials/head.xhtml +9 -0
  253. data/proto/app/theme/partials/sidebar.xhtml +40 -0
  254. data/proto/app/theme/theme.rb +3 -0
  255. data/spec/Rakefile +1 -2
  256. data/spec/fixtures/zen/helper/stacked_aspect.rb +54 -0
  257. data/spec/fixtures/zen/package/dashboard/controller/widget.rb +15 -0
  258. data/spec/fixtures/zen/package/dashboard/widget.rb +5 -0
  259. data/spec/fixtures/zen/theme/theme.rb +2 -2
  260. data/spec/helper.rb +19 -10
  261. data/spec/zen/controller/admin_controller.rb +3 -3
  262. data/spec/zen/controller/main_controller.rb +7 -7
  263. data/spec/zen/controller/preview.rb +3 -3
  264. data/spec/zen/event.rb +4 -4
  265. data/spec/zen/helper/breadcrumb.rb +4 -8
  266. data/spec/zen/helper/controller.rb +47 -4
  267. data/spec/zen/helper/locale.rb +3 -3
  268. data/spec/zen/helper/message.rb +4 -4
  269. data/spec/zen/helper/stacked_aspect.rb +40 -0
  270. data/spec/zen/helper/theme.rb +9 -9
  271. data/spec/zen/language.rb +8 -8
  272. data/spec/zen/markup.rb +6 -6
  273. data/spec/zen/package.rb +11 -9
  274. data/spec/zen/package/categories/controller/categories.rb +56 -24
  275. data/spec/zen/package/categories/controller/category_groups.rb +55 -23
  276. data/spec/zen/package/categories/helper/category.rb +5 -5
  277. data/spec/zen/package/categories/helper/category_frontend.rb +5 -5
  278. data/spec/zen/package/comments/anti_spam.rb +4 -4
  279. data/spec/zen/package/comments/controller/comments.rb +95 -24
  280. data/spec/zen/package/comments/controller/comments_form.rb +31 -26
  281. data/spec/zen/package/comments/helper/comment.rb +3 -3
  282. data/spec/zen/package/comments/helper/comment_frontend.rb +6 -6
  283. data/spec/zen/package/custom_fields/blue_form_parameters.rb +8 -8
  284. data/spec/zen/package/custom_fields/controller/custom_field_groups.rb +58 -27
  285. data/spec/zen/package/custom_fields/controller/custom_field_types.rb +57 -27
  286. data/spec/zen/package/custom_fields/controller/custom_fields.rb +58 -27
  287. data/spec/zen/package/custom_fields/helper/custom_field.rb +7 -7
  288. data/spec/zen/package/dashboard/controller/dashboard.rb +147 -0
  289. data/spec/zen/package/dashboard/widget.rb +56 -0
  290. data/spec/zen/package/extensions/controller/extensions.rb +4 -4
  291. data/spec/zen/package/menus/controller/menu_items.rb +48 -39
  292. data/spec/zen/package/menus/controller/menus.rb +55 -24
  293. data/spec/zen/package/menus/helper/menu.rb +6 -14
  294. data/spec/zen/package/menus/helper/menu_frontend.rb +7 -7
  295. data/spec/zen/package/menus/model/menu.rb +121 -0
  296. data/spec/zen/package/menus/model/menu_item.rb +34 -0
  297. data/spec/zen/package/sections/controller/section_entries.rb +104 -39
  298. data/spec/zen/package/sections/controller/sections.rb +60 -27
  299. data/spec/zen/package/sections/helper/section.rb +5 -5
  300. data/spec/zen/package/sections/helper/section_frontend.rb +9 -9
  301. data/spec/zen/package/sections/widget.rb +44 -0
  302. data/spec/zen/package/settings/controller/settings.rb +18 -16
  303. data/spec/zen/package/settings/settings.rb +12 -12
  304. data/spec/zen/package/users/controller/user_groups.rb +61 -29
  305. data/spec/zen/package/users/controller/users.rb +118 -39
  306. data/spec/zen/package/users/helper/access.rb +3 -3
  307. data/spec/zen/package/users/helper/acl.rb +4 -4
  308. data/spec/zen/package/users/helper/users.rb +5 -5
  309. data/spec/zen/security.rb +25 -0
  310. data/spec/zen/theme.rb +20 -18
  311. data/spec/zen/validation.rb +5 -5
  312. data/spec/zen/vendor/sequel_sluggable.rb +12 -0
  313. data/zen.gemspec +27 -4
  314. metadata +182 -124
  315. data/AUTHORS +0 -4
  316. data/guide/_static/categories/categories.png +0 -0
  317. data/guide/_static/categories/category_groups.png +0 -0
  318. data/guide/_static/categories/new_category.png +0 -0
  319. data/guide/_static/categories/new_category_group.png +0 -0
  320. data/guide/_static/comments/comments.png +0 -0
  321. data/guide/_static/comments/edit_comment.png +0 -0
  322. data/guide/_static/custom_fields/custom_field_groups.png +0 -0
  323. data/guide/_static/custom_fields/custom_field_types.png +0 -0
  324. data/guide/_static/custom_fields/custom_fields.png +0 -0
  325. data/guide/_static/custom_fields/edit_custom_field_general.png +0 -0
  326. data/guide/_static/custom_fields/edit_custom_field_group.png +0 -0
  327. data/guide/_static/custom_fields/edit_custom_field_settings.png +0 -0
  328. data/guide/_static/custom_fields/edit_custom_field_type.png +0 -0
  329. data/guide/_static/menus/edit_menu.png +0 -0
  330. data/guide/_static/menus/edit_menu_item.png +0 -0
  331. data/guide/_static/menus/menu_items.png +0 -0
  332. data/guide/_static/menus/menus.png +0 -0
  333. data/guide/_static/sections/edit_entry.png +0 -0
  334. data/guide/_static/sections/edit_entry_categories.png +0 -0
  335. data/guide/_static/sections/edit_entry_general.png +0 -0
  336. data/guide/_static/sections/edit_entry_meta.png +0 -0
  337. data/guide/_static/sections/edit_section_comments.png +0 -0
  338. data/guide/_static/sections/edit_section_general.png +0 -0
  339. data/guide/_static/sections/edit_section_groups.png +0 -0
  340. data/guide/_static/sections/entries.png +0 -0
  341. data/guide/_static/sections/sections.png +0 -0
  342. data/guide/_static/settings/overview_general.png +0 -0
  343. data/guide/_static/settings/overview_security.png +0 -0
  344. data/guide/_static/settings/overview_user.png +0 -0
  345. data/guide/_static/users/edit_user.png +0 -0
  346. data/guide/_static/users/edit_user_group.png +0 -0
  347. data/guide/_static/users/edit_user_group_permissions.png +0 -0
  348. data/guide/_static/users/edit_user_permissions.png +0 -0
  349. data/guide/_static/users/overview.png +0 -0
  350. data/guide/_static/users/user_groups_overview.png +0 -0
  351. data/lib/zen/controller/translations.rb +0 -49
  352. data/lib/zen/package/sections/lib/sections/view/admin/form.xhtml +0 -113
  353. data/lib/zen/package/sections/lib/sections/view/admin/index.xhtml +0 -97
  354. data/lib/zen/public/admin/css/zen/buttons.css +0 -46
  355. data/lib/zen/public/admin/css/zen/editor.css +0 -88
  356. data/lib/zen/public/admin/css/zen/general.css +0 -109
  357. data/lib/zen/public/admin/css/zen/grid.css +0 -100
  358. data/lib/zen/public/admin/css/zen/layout.css +0 -184
  359. data/lib/zen/public/admin/css/zen/messages.css +0 -54
  360. data/lib/zen/public/admin/css/zen/tables.css +0 -97
  361. data/lib/zen/public/admin/css/zen/tabs.css +0 -47
  362. data/lib/zen/public/admin/css/zen/window.css +0 -73
  363. data/lib/zen/public/admin/images/zen/icons/accept.png +0 -0
  364. data/lib/zen/public/admin/images/zen/icons/add.png +0 -0
  365. data/lib/zen/public/admin/images/zen/icons/back.png +0 -0
  366. data/lib/zen/public/admin/images/zen/icons/delete.png +0 -0
  367. data/lib/zen/public/admin/images/zen/icons/help.png +0 -0
  368. data/lib/zen/public/admin/images/zen/icons/info.png +0 -0
  369. data/lib/zen/public/admin/images/zen/icons/logout.png +0 -0
  370. data/lib/zen/public/admin/images/zen/icons/pdf.png +0 -0
  371. data/lib/zen/public/admin/images/zen/icons/view.png +0 -0
  372. data/lib/zen/public/admin/js/zen/lib/tabs.js +0 -207
  373. data/lib/zen/view/main.xhtml +0 -19
@@ -1,22 +1,22 @@
1
1
  require File.expand_path('../../../helper', __FILE__)
2
2
  require File.join(Zen::FIXTURES, 'helper', 'message')
3
3
 
4
- describe('Ramaze::Helper::Message') do
4
+ describe 'Ramaze::Helper::Message' do
5
5
  behaves_like :capybara
6
6
 
7
- it('Display a success message') do
7
+ it 'Display a success message' do
8
8
  visit('/admin/spec-message-helper/success')
9
9
 
10
10
  page.body.include?('success message').should == true
11
11
  end
12
12
 
13
- it('Display an info message') do
13
+ it 'Display an info message' do
14
14
  visit('/admin/spec-message-helper/info')
15
15
 
16
16
  page.body.include?('info message').should == true
17
17
  end
18
18
 
19
- it('Display an error message') do
19
+ it 'Display an error message' do
20
20
  visit('/admin/spec-message-helper/error')
21
21
 
22
22
  page.body.include?('error message').should == true
@@ -0,0 +1,40 @@
1
+ require File.expand_path('../../../helper', __FILE__)
2
+ require File.join(Zen::FIXTURES, 'helper', 'stacked_aspect')
3
+
4
+ describe 'Ramaze::Helper::StackedAspect' do
5
+ behaves_like :capybara
6
+
7
+ before do
8
+ SpecStackedAspect::NUMBERS.each do |k, v|
9
+ SpecStackedAspect::NUMBERS[k] = 0
10
+ end
11
+ end
12
+
13
+ it 'Ramaze::Helper::StackedAspect.stacked_before_all' do
14
+ visit('/spec-stacked-aspect/before_all')
15
+
16
+ page.has_content?('15').should == true
17
+ SpecStackedAspect::NUMBERS[:before_all].should == 15
18
+ end
19
+
20
+ it 'Ramaze::Helper::StackedAspect.stacked_before' do
21
+ visit('/spec-stacked-aspect/before')
22
+
23
+ page.has_content?('4').should == true
24
+ SpecStackedAspect::NUMBERS[:before].should == 4
25
+ end
26
+
27
+ it 'Ramaze::Helper::StackedAspect.stacked_after_all' do
28
+ visit('/spec-stacked-aspect/before_all')
29
+
30
+ page.has_content?('15').should == true
31
+ SpecStackedAspect::NUMBERS[:after_all].should == 15
32
+ end
33
+
34
+ it 'Ramaze::Helper::StackedAspect.stacked_after' do
35
+ visit('/spec-stacked-aspect/after')
36
+
37
+ page.has_content?('0').should == true
38
+ SpecStackedAspect::NUMBERS[:after].should == 4
39
+ end
40
+ end
@@ -1,7 +1,7 @@
1
1
  require File.expand_path('../../../helper', __FILE__)
2
2
  require File.join(Zen::FIXTURES, 'theme', 'theme')
3
3
 
4
- describe('Ramaze::Helper::Theme') do
4
+ describe 'Ramaze::Helper::Theme' do
5
5
  behaves_like :capybara
6
6
 
7
7
  before do
@@ -12,13 +12,13 @@ describe('Ramaze::Helper::Theme') do
12
12
  get_setting(:theme).value = nil
13
13
  end
14
14
 
15
- it('Render a partial template') do
15
+ it 'Render a partial template' do
16
16
  visit('/helper/partial')
17
17
 
18
18
  page.body.include?('This is a partial.').should == true
19
19
  end
20
20
 
21
- it('Show a 404 page in a template') do
21
+ it 'Show a 404 page in a template' do
22
22
  visit('/helper/404')
23
23
 
24
24
  page.body.include?('The requested page could not be found!') \
@@ -27,9 +27,9 @@ describe('Ramaze::Helper::Theme') do
27
27
  page.status_code.should == 404
28
28
  end
29
29
 
30
- it('Error when no partials directory has been set') do
31
- dir = Zen::Theme['spec_theme'].partial_dir
32
- Zen::Theme['spec_theme'].partial_dir = nil
30
+ it 'Error when no partials directory has been set' do
31
+ dir = Zen::Theme['spec_theme'].partials
32
+ Zen::Theme['spec_theme'].partials = nil
33
33
 
34
34
  begin
35
35
  visit('/helper/partial')
@@ -37,12 +37,12 @@ describe('Ramaze::Helper::Theme') do
37
37
  e.message.should == 'The theme spec_theme has no partial directory set.'
38
38
  end
39
39
 
40
- Zen::Theme['spec_theme'].partial_dir = dir
40
+ Zen::Theme['spec_theme'].partials = dir
41
41
  end
42
42
 
43
- it('Error when loading a non existing partial') do
43
+ it 'Error when loading a non existing partial' do
44
44
  theme = File.join(
45
- Zen::Theme['spec_theme'].partial_dir,
45
+ Zen::Theme['spec_theme'].partials,
46
46
  'wrong_partial.xhtml'
47
47
  )
48
48
 
@@ -1,7 +1,7 @@
1
1
  require File.expand_path('../../helper', __FILE__)
2
2
  require File.expand_path('../../fixtures/zen/language', __FILE__)
3
3
 
4
- describe('Zen::Language') do
4
+ describe 'Zen::Language' do
5
5
  behaves_like :capybara
6
6
 
7
7
  # Ensure the user object is put back in the correct state after each
@@ -13,7 +13,7 @@ describe('Zen::Language') do
13
13
  )
14
14
  end
15
15
 
16
- it('Change the current language') do
16
+ it 'Change the current language' do
17
17
  # Check if the frontend language is set properly.
18
18
  visit('/spec-language/frontend_dutch')
19
19
 
@@ -36,7 +36,7 @@ describe('Zen::Language') do
36
36
  page.body.include?('<p>en</p>').should == false
37
37
  end
38
38
 
39
- it('Load an English language pack') do
39
+ it 'Load an English language pack' do
40
40
  Zen::Language.load('spec')
41
41
 
42
42
  lang('spec.name').should == 'Name'
@@ -45,31 +45,31 @@ describe('Zen::Language') do
45
45
  lang('spec.parent.sub').should == 'Sub item'
46
46
  end
47
47
 
48
- it('Load an already loaded language file') do
48
+ it 'Load an already loaded language file' do
49
49
  Zen::Language.load('spec')
50
50
 
51
51
  lang('spec.name').should == 'Name'
52
52
  end
53
53
 
54
- it('Fail to load a non existing language file') do
54
+ it 'Fail to load a non existing language file' do
55
55
  should.raise?(Zen::LanguageError) do
56
56
  Zen::Language.load('does-not-exist')
57
57
  end
58
58
  end
59
59
 
60
- it('Fail to access a non existing language string') do
60
+ it 'Fail to access a non existing language string' do
61
61
  should.raise?(Zen::LanguageError) do
62
62
  lang('spec.does-not-exist')
63
63
  end
64
64
  end
65
65
 
66
- it('Fail to access a non existing language file') do
66
+ it 'Fail to access a non existing language file' do
67
67
  should.raise?(Zen::LanguageError) do
68
68
  lang('foo.does-not-exist', 'foo')
69
69
  end
70
70
  end
71
71
 
72
- it('Load a Dutch language pack') do
72
+ it 'Load a Dutch language pack' do
73
73
  get_setting(:language).value = 'nl'
74
74
 
75
75
  lang('spec.name').should == 'Naam'
@@ -1,33 +1,33 @@
1
1
  require File.expand_path('../../helper', __FILE__)
2
2
 
3
- describe('Zen::Markup') do
3
+ describe 'Zen::Markup' do
4
4
  WebMock.allow_net_connect!
5
5
 
6
- it('Convert Markdown to HTML') do
6
+ it 'Convert Markdown to HTML' do
7
7
  html = Zen::Markup.convert(:markdown, 'hello **world**').strip
8
8
 
9
9
  html.should == '<p>hello <strong>world</strong></p>'
10
10
  end
11
11
 
12
- it('Convert Textile to HTML') do
12
+ it 'Convert Textile to HTML' do
13
13
  html = Zen::Markup.convert(:textile, 'hello *world*').strip
14
14
 
15
15
  html.should == '<p>hello <strong>world</strong></p>'
16
16
  end
17
17
 
18
- it('Convert HTML to plain text') do
18
+ it 'Convert HTML to plain text' do
19
19
  text = Zen::Markup.convert(:plain, '<p>hello world</p>').strip
20
20
 
21
21
  text.should == '&lt;p&gt;hello world&lt;&#x2F;p&gt;'
22
22
  end
23
23
 
24
- it('Convert to HTML to HTML') do
24
+ it 'Convert to HTML to HTML' do
25
25
  html = Zen::Markup.convert(:html, '<p>hello world</p>')
26
26
 
27
27
  html.should == '<p>hello world</p>'
28
28
  end
29
29
 
30
- it('Specify a non existing engine') do
30
+ it 'Specify a non existing engine' do
31
31
  begin
32
32
  Zen::Markup.convert(:foobar, 'hello')
33
33
  rescue ArgumentError => e
@@ -1,10 +1,10 @@
1
1
  require File.expand_path('../../helper', __FILE__)
2
2
  require File.join(Zen::FIXTURES, 'package')
3
3
 
4
- describe('Zen::Package') do
4
+ describe 'Zen::Package' do
5
5
  behaves_like :capybara
6
6
 
7
- it('Add a new package') do
7
+ it 'Add a new package' do
8
8
  Zen::Package.add do |p|
9
9
  p.name = :spec
10
10
  p.title = 'Spec'
@@ -13,6 +13,7 @@ describe('Zen::Package') do
13
13
  p.url = 'http://zen-cms.com/'
14
14
  p.root = __DIR__
15
15
  p.migrations = __DIR__
16
+ p.env.foo = 'bar'
16
17
 
17
18
  p.menu('Spec', '/admin/spec', :permission => :show_menu) do |sub|
18
19
  sub.menu('Sub spec', '/admin/spec/sub')
@@ -28,19 +29,20 @@ describe('Zen::Package') do
28
29
  pkg.author.should == 'Yorick Peterse'
29
30
  pkg.root.should == __DIR__
30
31
  pkg.migrations.should == pkg.root
32
+ pkg.env.foo.should == 'bar'
31
33
 
32
- pkg.menu.title.should == 'Spec'
33
- pkg.menu.url.should == '/admin/spec'
34
+ pkg.menu[0].title.should == 'Spec'
35
+ pkg.menu[0].url.should == '/admin/spec'
34
36
 
35
- pkg.menu.children[0].title.should == 'Sub spec'
36
- pkg.menu.children[0].url.should == '/admin/spec/sub'
37
+ pkg.menu[0].children[0].title.should == 'Sub spec'
38
+ pkg.menu[0].children[0].url.should == '/admin/spec/sub'
37
39
 
38
40
  pkg.permissions[:foobar].should == 'Foobar'
39
41
  end
40
42
 
41
- it('Build a package\'s navigation items') do
43
+ it 'Build a package\'s navigation items' do
42
44
  pkg = Zen::Package[:spec]
43
- menu = pkg.menu.html
45
+ menu = pkg.menu[0].html
44
46
  html = '<li><a href="/admin/spec" title="Spec">Spec</a>' \
45
47
  '<ul><li><a href="/admin/spec/sub" title="Sub spec">Sub spec</a></li>' \
46
48
  '</ul></li>'
@@ -48,7 +50,7 @@ describe('Zen::Package') do
48
50
  menu.should == html
49
51
  end
50
52
 
51
- it('Build the navigation menu for all packages') do
53
+ it 'Build the navigation menu for all packages' do
52
54
  menu = Zen::Package.build_menu
53
55
  html = '<li><a href="/admin/spec" title="Spec">Spec</a>' \
54
56
  '<ul><li><a href="/admin/spec/sub" title="Sub spec">Sub spec</a></li>' \
@@ -1,6 +1,6 @@
1
1
  require File.expand_path('../../../../../helper', __FILE__)
2
2
 
3
- describe("Categories::Controller::Categories") do
3
+ describe "Categories::Controller::Categories" do
4
4
  behaves_like :capybara
5
5
 
6
6
  after do
@@ -16,20 +16,12 @@ describe("Categories::Controller::Categories") do
16
16
 
17
17
  group = Categories::Model::CategoryGroup.create(:name => 'Spec group')
18
18
  index_url = Categories::Controller::Categories.r(:index, group.id).to_s
19
- edit_url = Categories::Controller::Categories.r(:edit , group.id).to_s
19
+ edit_url = Categories::Controller::Categories.r(:edit, group.id).to_s
20
+ new_url = Categories::Controller::Categories.r(:new, group.id).to_s
20
21
  save_button = lang('categories.buttons.save')
21
22
  delete_button = lang('categories.buttons.delete')
22
23
 
23
- it('Submit a form without a CSRF token') do
24
- response = page.driver.post(
25
- Categories::Controller::Categories.r(:save).to_s
26
- )
27
-
28
- response.body.include?(lang('zen_general.errors.csrf')).should == true
29
- response.status.should == 403
30
- end
31
-
32
- it('Find no existing categories') do
24
+ it 'Find no existing categories' do
33
25
  message = lang('categories.messages.no_categories')
34
26
 
35
27
  visit(index_url)
@@ -39,7 +31,18 @@ describe("Categories::Controller::Categories") do
39
31
  current_path.should == index_url
40
32
  end
41
33
 
42
- it("Create a new category") do
34
+ it 'Try to create a new category with a missing CSRF token' do
35
+ visit(new_url)
36
+
37
+ within '#category_form' do
38
+ find('input[name="csrf_token"]').set('')
39
+ click_on(save_button)
40
+ end
41
+
42
+ page.has_content?(lang('zen_general.errors.csrf')).should == true
43
+ end
44
+
45
+ it "Create a new category" do
43
46
  new_button = lang('categories.buttons.new')
44
47
  event_name = nil
45
48
  event_name2 = nil
@@ -55,7 +58,7 @@ describe("Categories::Controller::Categories") do
55
58
  visit(index_url)
56
59
  click_link(new_button)
57
60
 
58
- within('#category_form') do
61
+ within '#category_form' do
59
62
  fill_in('name', :with => 'Spec category')
60
63
  click_on(save_button)
61
64
  end
@@ -65,12 +68,12 @@ describe("Categories::Controller::Categories") do
65
68
  event_name2.should == event_name
66
69
  end
67
70
 
68
- it('Search for a category') do
71
+ it 'Search for a category' do
69
72
  visit(index_url)
70
73
  search_button = lang('zen_general.buttons.search')
71
74
  error = lang('zen_general.errors.invalid_search')
72
75
 
73
- within('#search_form') do
76
+ within '#search_form' do
74
77
  fill_in('query', :with => 'Spec')
75
78
  click_on(search_button)
76
79
  end
@@ -78,7 +81,7 @@ describe("Categories::Controller::Categories") do
78
81
  page.has_content?(error).should == false
79
82
  page.has_content?('Spec category').should == true
80
83
 
81
- within('#search_form') do
84
+ within '#search_form' do
82
85
  fill_in('query', :with => 'does not exist')
83
86
  click_on(search_button)
84
87
  end
@@ -88,7 +91,7 @@ describe("Categories::Controller::Categories") do
88
91
  page.has_selector?('table tbody tr').should == false
89
92
  end
90
93
 
91
- it("Edit an existing category") do
94
+ it "Edit an existing category" do
92
95
  event_name = nil
93
96
  event_name2 = nil
94
97
  name = 'Spec category modified 123'
@@ -106,7 +109,7 @@ describe("Categories::Controller::Categories") do
106
109
 
107
110
  current_path.should =~ /#{edit_url}\/[0-9]+/
108
111
 
109
- within('#category_form') do
112
+ within '#category_form' do
110
113
  fill_in('name', :with => name)
111
114
  click_on(save_button)
112
115
  end
@@ -121,20 +124,20 @@ describe("Categories::Controller::Categories") do
121
124
  category.name = 'Spec category modified'
122
125
  end
123
126
 
124
- within('#category_form') do
127
+ within '#category_form' do
125
128
  click_on(save_button)
126
129
  end
127
130
 
128
131
  page.find('input[name="name"]').value.should == 'Spec category modified'
129
132
  end
130
133
 
131
- it("Edit an existing category with invalid data") do
134
+ it "Edit an existing category with invalid data" do
132
135
  visit(index_url)
133
136
  click_link('Spec category')
134
137
 
135
138
  current_path.should =~ /#{edit_url}\/[0-9]+/
136
139
 
137
- within('#category_form') do
140
+ within '#category_form' do
138
141
  fill_in('name', :with => '')
139
142
  click_on(save_button)
140
143
  end
@@ -142,14 +145,43 @@ describe("Categories::Controller::Categories") do
142
145
  page.has_selector?('span.error').should == true
143
146
  end
144
147
 
145
- it('Fail to delete a category without an ID') do
148
+ enable_javascript
149
+
150
+ it 'Automatically save a category' do
151
+ visit(index_url)
152
+ click_link('Spec category')
153
+
154
+ within '#category_form' do
155
+ fill_in('name', :with => 'Spec category autosave')
156
+ end
157
+
158
+ autosave_form('category_form')
159
+
160
+ visit(index_url)
161
+
162
+ page.has_content?('Spec category autosave').should == true
163
+
164
+ click_link('Spec category autosave')
165
+
166
+ within '#category_form' do
167
+ fill_in('name', :with => 'Spec category modified')
168
+ click_on(save_button)
169
+ end
170
+
171
+ page.has_selector?('span.error').should == false
172
+ page.find('input[name="name"]').value.should == 'Spec category modified'
173
+ end
174
+
175
+ disable_javascript
176
+
177
+ it 'Fail to delete a category without an ID' do
146
178
  visit(index_url)
147
179
  click_on(delete_button)
148
180
 
149
181
  page.has_selector?('input[name="category_ids[]"]').should == true
150
182
  end
151
183
 
152
- it("Delete an existing category") do
184
+ it "Delete an existing category" do
153
185
  message = lang('categories.messages.no_categories')
154
186
  event_name = nil
155
187
  event_name2 = nil