zen 0.2.8 → 0.3b

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 (422) hide show
  1. data/.gems +20 -0
  2. data/.mailmap +3 -2
  3. data/.rvmrc +1 -1
  4. data/.travis.yml +13 -2
  5. data/.yardopts +13 -0
  6. data/AUTHORS +1 -1
  7. data/README.md +115 -77
  8. data/Rakefile +6 -7
  9. data/bin/zen +12 -5
  10. data/guide/_static/categories/categories.png +0 -0
  11. data/guide/_static/categories/category_groups.png +0 -0
  12. data/guide/_static/categories/new_category.png +0 -0
  13. data/guide/_static/categories/new_category_group.png +0 -0
  14. data/guide/_static/comments/comments.png +0 -0
  15. data/guide/_static/comments/edit_comment.png +0 -0
  16. data/guide/_static/custom_fields/custom_field_groups.png +0 -0
  17. data/guide/_static/custom_fields/custom_field_types.png +0 -0
  18. data/guide/_static/custom_fields/custom_fields.png +0 -0
  19. data/guide/_static/custom_fields/edit_custom_field_general.png +0 -0
  20. data/guide/_static/custom_fields/edit_custom_field_group.png +0 -0
  21. data/guide/_static/custom_fields/edit_custom_field_settings.png +0 -0
  22. data/guide/_static/custom_fields/edit_custom_field_type.png +0 -0
  23. data/guide/_static/menus/edit_menu.png +0 -0
  24. data/guide/_static/menus/edit_menu_item.png +0 -0
  25. data/guide/_static/menus/menu_items.png +0 -0
  26. data/guide/_static/menus/menus.png +0 -0
  27. data/guide/_static/sections/edit_entry.png +0 -0
  28. data/guide/_static/sections/edit_entry_categories.png +0 -0
  29. data/guide/_static/sections/edit_entry_general.png +0 -0
  30. data/guide/_static/sections/edit_entry_meta.png +0 -0
  31. data/guide/_static/sections/edit_section_comments.png +0 -0
  32. data/guide/_static/sections/edit_section_general.png +0 -0
  33. data/guide/_static/sections/edit_section_groups.png +0 -0
  34. data/guide/_static/sections/entries.png +0 -0
  35. data/guide/_static/sections/sections.png +0 -0
  36. data/guide/_static/settings/overview_general.png +0 -0
  37. data/guide/_static/settings/overview_security.png +0 -0
  38. data/guide/_static/settings/overview_user.png +0 -0
  39. data/guide/_static/users/edit_user.png +0 -0
  40. data/guide/_static/users/edit_user_group.png +0 -0
  41. data/guide/_static/users/edit_user_group_permissions.png +0 -0
  42. data/guide/_static/users/edit_user_permissions.png +0 -0
  43. data/guide/_static/users/overview.png +0 -0
  44. data/guide/_static/users/user_groups_overview.png +0 -0
  45. data/guide/asset_management.md +117 -0
  46. data/{CHANGELOG.md → guide/changelog.md} +42 -0
  47. data/guide/css/common.css +20 -0
  48. data/guide/getting_started.md +61 -0
  49. data/guide/hacking.md +52 -0
  50. data/guide/installation.md +44 -0
  51. data/guide/javascript.md +352 -0
  52. data/lib/vendor/sequel_sluggable.rb +137 -0
  53. data/lib/yard/tags.rb +13 -0
  54. data/lib/zen.rb +148 -78
  55. data/lib/zen/asset_groups.rb +85 -0
  56. data/lib/zen/bin/create.rb +267 -56
  57. data/lib/zen/bin/default.rb +84 -0
  58. data/lib/zen/controller/admin_controller.rb +1 -82
  59. data/lib/zen/controller/base_controller.rb +9 -5
  60. data/lib/zen/controller/frontend_controller.rb +0 -1
  61. data/lib/zen/controller/main_controller.rb +30 -42
  62. data/lib/zen/controller/preview.rb +9 -8
  63. data/lib/zen/controller/translations.rb +49 -0
  64. data/lib/zen/error.rb +17 -0
  65. data/lib/zen/event.rb +118 -0
  66. data/lib/zen/helper/asset.rb +63 -0
  67. data/lib/zen/helper/breadcrumb.rb +1 -4
  68. data/lib/zen/helper/controller.rb +73 -0
  69. data/lib/zen/helper/locale.rb +42 -0
  70. data/lib/zen/helper/message.rb +0 -3
  71. data/lib/zen/helper/search.rb +54 -0
  72. data/lib/zen/helper/stacked_aspect.rb +249 -0
  73. data/lib/zen/helper/theme.rb +3 -10
  74. data/lib/zen/language.rb +356 -181
  75. data/lib/zen/language/en/zen_general.rb +52 -0
  76. data/lib/zen/language/en/zen_models.rb +19 -0
  77. data/lib/zen/language/nl/zen_general.rb +57 -0
  78. data/lib/zen/language/nl/zen_models.rb +22 -0
  79. data/lib/zen/language/translation.rb +132 -0
  80. data/lib/zen/languages.rb +9 -0
  81. data/lib/zen/layout/admin.xhtml +3 -3
  82. data/lib/zen/layout/login.xhtml +1 -1
  83. data/lib/zen/markup.rb +189 -0
  84. data/lib/zen/model/helper.rb +65 -0
  85. data/lib/zen/model/init.rb +62 -0
  86. data/lib/zen/model/methods.rb +6 -7
  87. data/lib/zen/package.rb +312 -201
  88. data/lib/zen/package/all.rb +4 -3
  89. data/lib/zen/package/categories/lib/categories.rb +29 -41
  90. data/lib/zen/package/categories/lib/categories/controller/categories.rb +185 -130
  91. data/lib/zen/package/categories/lib/categories/controller/category_groups.rb +172 -102
  92. data/lib/zen/package/categories/lib/categories/helper/category.rb +4 -9
  93. data/lib/zen/package/categories/lib/categories/helper/category_frontend.rb +86 -0
  94. data/lib/zen/package/categories/lib/categories/language/en/categories.rb +40 -0
  95. data/lib/zen/package/categories/lib/categories/language/en/category_groups.rb +39 -0
  96. data/lib/zen/package/categories/lib/categories/language/nl/categories.rb +42 -0
  97. data/lib/zen/package/categories/lib/categories/language/nl/category_groups.rb +42 -0
  98. data/lib/zen/package/categories/lib/categories/model/category.rb +21 -25
  99. data/lib/zen/package/categories/lib/categories/model/category_group.rb +21 -15
  100. data/lib/zen/package/categories/lib/categories/view/admin/categories/form.xhtml +25 -26
  101. data/lib/zen/package/categories/lib/categories/view/admin/categories/index.xhtml +24 -24
  102. data/lib/zen/package/categories/lib/categories/view/admin/category-groups/form.xhtml +18 -20
  103. data/lib/zen/package/categories/lib/categories/view/admin/category-groups/index.xhtml +21 -18
  104. data/lib/zen/package/comments/lib/comments.rb +30 -50
  105. data/lib/zen/package/comments/lib/comments/anti_spam.rb +138 -0
  106. data/lib/zen/package/comments/lib/comments/controller/comments.rb +159 -92
  107. data/lib/zen/package/comments/lib/comments/controller/comments_form.rb +122 -34
  108. data/lib/zen/package/comments/lib/comments/helper/comment.rb +0 -3
  109. data/lib/zen/package/comments/lib/comments/helper/comment_frontend.rb +90 -0
  110. data/lib/zen/package/comments/lib/comments/language/en/comments.rb +57 -0
  111. data/lib/zen/package/comments/lib/comments/language/nl/comments.rb +61 -0
  112. data/lib/zen/package/comments/lib/comments/model/comment.rb +147 -49
  113. data/lib/zen/package/comments/lib/comments/model/comment_status.rb +0 -2
  114. data/lib/zen/package/comments/lib/comments/view/admin/comments/form.xhtml +37 -40
  115. data/lib/zen/package/comments/lib/comments/view/admin/comments/index.xhtml +23 -42
  116. data/lib/zen/package/comments/migrations/1308774099_comment_status.rb +12 -4
  117. data/lib/zen/package/comments/migrations/1313851786_remove_defensio_signature.rb +11 -0
  118. data/lib/zen/package/custom_fields/lib/custom_fields.rb +40 -43
  119. data/lib/zen/package/custom_fields/lib/custom_fields/blue_form_parameters.rb +72 -17
  120. data/lib/zen/package/custom_fields/lib/custom_fields/controller/custom_field_groups.rb +154 -118
  121. data/lib/zen/package/custom_fields/lib/custom_fields/controller/custom_field_types.rb +147 -90
  122. data/lib/zen/package/custom_fields/lib/custom_fields/controller/custom_fields.rb +161 -131
  123. data/lib/zen/package/custom_fields/lib/custom_fields/helper/custom_field.rb +4 -9
  124. data/lib/zen/package/custom_fields/lib/custom_fields/language/en/custom_field_groups.rb +42 -0
  125. data/lib/zen/package/custom_fields/lib/custom_fields/language/en/custom_field_types.rb +51 -0
  126. data/lib/zen/package/custom_fields/lib/custom_fields/language/en/custom_fields.rb +60 -0
  127. data/lib/zen/package/custom_fields/lib/custom_fields/language/nl/custom_field_groups.rb +41 -0
  128. data/lib/zen/package/custom_fields/lib/custom_fields/language/nl/custom_field_types.rb +49 -0
  129. data/lib/zen/package/custom_fields/lib/custom_fields/language/nl/custom_fields.rb +61 -0
  130. data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field.rb +18 -23
  131. data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field_group.rb +20 -19
  132. data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field_method.rb +1 -3
  133. data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field_type.rb +19 -9
  134. data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field_value.rb +18 -15
  135. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-groups/form.xhtml +18 -18
  136. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-groups/index.xhtml +30 -24
  137. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-types/form.xhtml +15 -10
  138. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-types/index.xhtml +24 -19
  139. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-fields/form.xhtml +18 -13
  140. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-fields/index.xhtml +30 -20
  141. data/lib/zen/package/extensions/lib/extensions.rb +20 -0
  142. data/lib/zen/package/extensions/lib/extensions/controller/extensions.rb +41 -0
  143. data/lib/zen/package/extensions/lib/extensions/language/en/extensions.rb +23 -0
  144. data/lib/zen/package/extensions/lib/extensions/language/nl/extensions.rb +25 -0
  145. data/lib/zen/package/extensions/lib/extensions/view/admin/extensions/index.xhtml +86 -0
  146. data/lib/zen/package/menu.rb +109 -0
  147. data/lib/zen/package/menus/lib/menus.rb +25 -34
  148. data/lib/zen/package/menus/lib/menus/controller/menu_items.rb +143 -107
  149. data/lib/zen/package/menus/lib/menus/controller/menus.rb +166 -115
  150. data/lib/zen/package/menus/lib/menus/helper/menu.rb +2 -8
  151. data/lib/zen/package/menus/lib/menus/helper/menu_frontend.rb +114 -0
  152. data/lib/zen/package/menus/lib/menus/language/en/menu_items.rb +48 -0
  153. data/lib/zen/package/menus/lib/menus/language/en/menus.rb +48 -0
  154. data/lib/zen/package/menus/lib/menus/language/nl/menu_items.rb +48 -0
  155. data/lib/zen/package/menus/lib/menus/language/nl/menus.rb +50 -0
  156. data/lib/zen/package/menus/lib/menus/model/menu.rb +24 -17
  157. data/lib/zen/package/menus/lib/menus/model/menu_item.rb +37 -13
  158. data/lib/zen/package/menus/lib/menus/view/admin/menu-items/form.xhtml +32 -25
  159. data/lib/zen/package/menus/lib/menus/view/admin/menu-items/index.xhtml +23 -17
  160. data/lib/zen/package/menus/lib/menus/view/admin/menus/form.xhtml +31 -26
  161. data/lib/zen/package/menus/lib/menus/view/admin/menus/index.xhtml +20 -22
  162. data/lib/zen/package/sections/lib/sections.rb +25 -68
  163. data/lib/zen/package/sections/lib/sections/controller/section_entries.rb +178 -138
  164. data/lib/zen/package/sections/lib/sections/controller/sections.rb +173 -140
  165. data/lib/zen/package/sections/lib/sections/helper/section.rb +3 -6
  166. data/lib/zen/package/sections/lib/sections/helper/section_frontend.rb +146 -0
  167. data/lib/zen/package/sections/lib/sections/language/en/section_entries.rb +50 -0
  168. data/lib/zen/package/sections/lib/sections/language/en/sections.rb +55 -0
  169. data/lib/zen/package/sections/lib/sections/language/nl/section_entries.rb +50 -0
  170. data/lib/zen/package/sections/lib/sections/language/nl/sections.rb +55 -0
  171. data/lib/zen/package/sections/lib/sections/model/section.rb +36 -36
  172. data/lib/zen/package/sections/lib/sections/model/section_entry.rb +52 -59
  173. data/lib/zen/package/sections/lib/sections/model/section_entry_status.rb +2 -2
  174. data/lib/zen/package/sections/lib/sections/view/admin/form.xhtml +24 -21
  175. data/lib/zen/package/sections/lib/sections/view/admin/index.xhtml +24 -26
  176. data/lib/zen/package/sections/lib/sections/view/admin/section-entries/form.xhtml +33 -31
  177. data/lib/zen/package/sections/lib/sections/view/admin/section-entries/index.xhtml +24 -25
  178. data/lib/zen/package/sections/migrations/1308672298_use_id_for_default_section.rb +14 -10
  179. data/lib/zen/package/sections/migrations/1308813320_section_entry_statuses.rb +12 -6
  180. data/lib/zen/package/settings/lib/settings.rb +25 -120
  181. data/lib/zen/package/settings/lib/settings/blue_form_parameters.rb +157 -0
  182. data/lib/zen/package/settings/lib/settings/controller/settings.rb +94 -69
  183. data/lib/zen/package/settings/lib/settings/language/en/settings.rb +41 -0
  184. data/lib/zen/package/settings/lib/settings/language/nl/settings.rb +41 -0
  185. data/lib/zen/package/settings/lib/settings/model/setting.rb +0 -2
  186. data/lib/zen/package/settings/lib/settings/setting.rb +379 -0
  187. data/lib/zen/package/settings/lib/settings/setting_groups.rb +11 -0
  188. data/lib/zen/package/settings/lib/settings/settings.rb +83 -0
  189. data/lib/zen/package/settings/lib/settings/settings_group.rb +84 -0
  190. data/lib/zen/package/settings/lib/settings/singleton_methods.rb +35 -0
  191. data/lib/zen/package/settings/lib/settings/view/admin/settings/index.xhtml +15 -57
  192. data/lib/zen/package/settings/migrations/1321197919_remove_unused_columns.rb +17 -0
  193. data/lib/zen/package/users/lib/users.rb +51 -36
  194. data/lib/zen/package/users/lib/users/controller/user_groups.rb +133 -98
  195. data/lib/zen/package/users/lib/users/controller/users.rb +253 -136
  196. data/lib/zen/package/users/lib/users/helper/access.rb +102 -0
  197. data/lib/zen/package/users/lib/users/helper/acl.rb +113 -0
  198. data/lib/zen/package/users/lib/users/helper/users.rb +41 -24
  199. data/lib/zen/package/users/lib/users/language/en/permissions.rb +16 -0
  200. data/lib/zen/package/users/lib/users/language/en/user_groups.rb +39 -0
  201. data/lib/zen/package/users/lib/users/language/en/users.rb +73 -0
  202. data/lib/zen/package/users/lib/users/language/nl/permissions.rb +16 -0
  203. data/lib/zen/package/users/lib/users/language/nl/user_groups.rb +41 -0
  204. data/lib/zen/package/users/lib/users/language/nl/users.rb +74 -0
  205. data/lib/zen/package/users/lib/users/model/permission.rb +28 -0
  206. data/lib/zen/package/users/lib/users/model/user.rb +104 -65
  207. data/lib/zen/package/users/lib/users/model/user_group.rb +28 -24
  208. data/lib/zen/package/users/lib/users/model/user_status.rb +27 -0
  209. data/lib/zen/package/users/lib/users/public/admin/css/users/permissions.css +22 -0
  210. data/lib/zen/package/users/lib/users/public/admin/js/users/permissions.js +33 -0
  211. data/lib/zen/package/users/lib/users/settings.rb +19 -0
  212. data/lib/zen/package/users/lib/users/view/admin/user-groups/form.xhtml +58 -28
  213. data/lib/zen/package/users/lib/users/view/admin/user-groups/index.xhtml +19 -15
  214. data/lib/zen/package/users/lib/users/view/admin/users/form.xhtml +93 -62
  215. data/lib/zen/package/users/lib/users/view/admin/users/index.xhtml +23 -36
  216. data/lib/zen/package/users/lib/users/view/admin/users/login.xhtml +13 -6
  217. data/lib/zen/package/users/lib/users/view/admin/users/permissions.xhtml +33 -0
  218. data/lib/zen/package/users/lib/users/view/admin/users/register.xhtml +52 -0
  219. data/lib/zen/package/users/migrations/1313786058_update_default_date.rb +41 -0
  220. data/lib/zen/package/users/migrations/1316432327_permissions.rb +36 -0
  221. data/lib/zen/package/users/migrations/1320272365_status_ids.rb +67 -0
  222. data/lib/zen/public/admin/css/zen/buttons.css +3 -11
  223. data/lib/zen/public/admin/css/zen/datepicker.css +23 -13
  224. data/lib/zen/public/admin/css/zen/editor.css +6 -14
  225. data/lib/zen/public/admin/css/zen/forms.css +19 -12
  226. data/lib/zen/public/admin/css/zen/general.css +22 -18
  227. data/lib/zen/public/admin/css/zen/grid.css +1 -20
  228. data/lib/zen/public/admin/css/zen/layout.css +26 -11
  229. data/lib/zen/public/admin/css/zen/messages.css +3 -10
  230. data/lib/zen/public/admin/css/zen/reset.css +13 -15
  231. data/lib/zen/public/admin/css/zen/tables.css +8 -10
  232. data/lib/zen/public/admin/css/zen/tabs.css +2 -10
  233. data/lib/zen/public/admin/css/zen/window.css +2 -8
  234. data/lib/zen/public/admin/js/vendor/datepicker.js +540 -240
  235. data/lib/zen/public/admin/js/vendor/mootools/core.js +273 -283
  236. data/lib/zen/public/admin/js/vendor/mootools/more.js +131 -136
  237. data/lib/zen/public/admin/js/zen/index.js +8 -14
  238. data/lib/zen/public/admin/js/zen/lib/editor.js +36 -33
  239. data/lib/zen/public/admin/js/zen/lib/editor/markdown.js +0 -6
  240. data/lib/zen/public/admin/js/zen/lib/editor/textile.js +0 -6
  241. data/lib/zen/public/admin/js/zen/lib/html_table.js +0 -5
  242. data/lib/zen/public/admin/js/zen/lib/tabs.js +22 -79
  243. data/lib/zen/public/admin/js/zen/lib/window.js +12 -22
  244. data/lib/zen/spec/bacon/color_output.rb +1 -1
  245. data/lib/zen/spec/helper.rb +6 -11
  246. data/lib/zen/spec/simplecov.rb +3 -3
  247. data/lib/zen/task.rb +0 -1
  248. data/lib/zen/task/build.rake +46 -26
  249. data/lib/zen/task/clean.rake +14 -7
  250. data/lib/zen/task/db.rake +31 -29
  251. data/lib/zen/task/package.rake +19 -23
  252. data/lib/zen/task/proto.rake +3 -5
  253. data/lib/zen/task/setup.rake +4 -0
  254. data/lib/zen/task/test.rake +31 -6
  255. data/lib/zen/task/theme.rake +13 -19
  256. data/lib/zen/theme.rb +377 -52
  257. data/lib/zen/validation.rb +22 -30
  258. data/lib/zen/version.rb +1 -2
  259. data/lib/zen/view/bottom.xhtml +9 -1
  260. data/lib/zen/view/head.xhtml +1 -1
  261. data/lib/zen/view/main.xhtml +1 -1
  262. data/lib/zen/view/search.xhtml +9 -0
  263. data/proto/app/Rakefile +0 -1
  264. data/proto/app/app.rb +21 -16
  265. data/proto/app/config/config.rb.erb +41 -0
  266. data/proto/app/config/{database.rb → database.rb.erb} +17 -14
  267. data/proto/app/config/middlewares.rb +1 -1
  268. data/proto/app/theme/default/index.xhtml +25 -0
  269. data/proto/app/theme/theme.rb +19 -0
  270. data/proto/app/{log/database/dev → tmp}/.gitkeep +0 -0
  271. data/proto/migration.rb +3 -5
  272. data/proto/rack/thin.yml +41 -0
  273. data/proto/rack/unicorn.rb +38 -0
  274. data/spec/Rakefile +15 -11
  275. data/spec/fixtures/zen/helper/controller.rb +13 -0
  276. data/spec/fixtures/zen/helper/locale.rb +7 -0
  277. data/spec/fixtures/zen/helper/message.rb +0 -4
  278. data/spec/fixtures/zen/language.rb +31 -0
  279. data/spec/fixtures/zen/language/en/spec.rb +11 -0
  280. data/spec/fixtures/zen/language/nl/spec.rb +11 -0
  281. data/spec/fixtures/zen/package.rb +0 -10
  282. data/spec/fixtures/zen/package/categories/helper/category_frontend.rb +16 -0
  283. data/spec/fixtures/zen/package/comments/helper/comment_frontend.rb +16 -0
  284. data/spec/fixtures/zen/package/sections/helper/section_frontend.rb +16 -0
  285. data/spec/fixtures/zen/package/settings/controller/settings.rb +17 -0
  286. data/spec/fixtures/zen/package/users/helper/access.rb +18 -0
  287. data/spec/fixtures/zen/package/users/helper/acl.rb +23 -0
  288. data/spec/fixtures/zen/theme/{default-section → default}/index.xhtml +0 -0
  289. data/spec/helper.rb +12 -27
  290. data/{proto/app/log/database/live → spec/public}/.gitkeep +0 -0
  291. data/spec/zen/controller/admin_controller.rb +5 -6
  292. data/spec/zen/controller/main_controller.rb +29 -35
  293. data/spec/zen/controller/preview.rb +9 -10
  294. data/spec/zen/event.rb +44 -0
  295. data/spec/zen/helper/breadcrumb.rb +4 -5
  296. data/spec/zen/helper/controller.rb +21 -0
  297. data/spec/zen/helper/locale.rb +25 -0
  298. data/spec/zen/helper/message.rb +4 -11
  299. data/spec/zen/helper/theme.rb +11 -14
  300. data/spec/zen/language.rb +48 -22
  301. data/spec/zen/markup.rb +39 -0
  302. data/spec/zen/package.rb +48 -11
  303. data/spec/zen/package/categories/controller/categories.rb +99 -45
  304. data/spec/zen/package/categories/controller/category_groups.rb +109 -33
  305. data/spec/zen/package/categories/helper/category.rb +19 -32
  306. data/spec/zen/package/categories/helper/category_frontend.rb +61 -0
  307. data/spec/zen/package/comments/anti_spam.rb +50 -0
  308. data/spec/zen/package/comments/controller/comments.rb +121 -61
  309. data/spec/zen/package/comments/controller/comments_form.rb +120 -94
  310. data/spec/zen/package/comments/helper/comment.rb +13 -13
  311. data/spec/zen/package/comments/helper/comment_frontend.rb +92 -0
  312. data/spec/zen/package/custom_fields/blue_form_parameters.rb +50 -50
  313. data/spec/zen/package/custom_fields/controller/custom_field_groups.rb +135 -43
  314. data/spec/zen/package/custom_fields/controller/custom_field_types.rb +153 -48
  315. data/spec/zen/package/custom_fields/controller/custom_fields.rb +130 -51
  316. data/spec/zen/package/custom_fields/helper/custom_field.rb +8 -8
  317. data/spec/zen/package/extensions/controller/extensions.rb +38 -0
  318. data/spec/zen/package/menus/controller/menu_items.rb +121 -42
  319. data/spec/zen/package/menus/controller/menus.rb +125 -38
  320. data/spec/zen/package/menus/helper/menu.rb +26 -26
  321. data/spec/zen/package/menus/helper/menu_frontend.rb +104 -0
  322. data/spec/zen/package/sections/controller/section_entries.rb +145 -89
  323. data/spec/zen/package/sections/controller/sections.rb +130 -35
  324. data/spec/zen/package/sections/helper/section.rb +27 -38
  325. data/spec/zen/package/sections/helper/section_frontend.rb +160 -0
  326. data/spec/zen/package/settings/controller/settings.rb +73 -8
  327. data/spec/zen/package/settings/settings.rb +119 -0
  328. data/spec/zen/package/users/controller/user_groups.rb +134 -34
  329. data/spec/zen/package/users/controller/users.rb +189 -44
  330. data/spec/zen/package/users/helper/access.rb +29 -0
  331. data/spec/zen/package/users/helper/acl.rb +46 -0
  332. data/spec/zen/package/users/helper/users.rb +20 -64
  333. data/spec/zen/theme.rb +7 -9
  334. data/spec/zen/validation.rb +1 -2
  335. data/zen.gemspec +25 -22
  336. metadata +303 -222
  337. data/lib/zen/asset.rb +0 -292
  338. data/lib/zen/bin/runner.rb +0 -118
  339. data/lib/zen/error/language_error.rb +0 -10
  340. data/lib/zen/error/package_error.rb +0 -10
  341. data/lib/zen/error/plugin_error.rb +0 -10
  342. data/lib/zen/error/theme_error.rb +0 -10
  343. data/lib/zen/error/validation_error.rb +0 -10
  344. data/lib/zen/helper/acl.rb +0 -182
  345. data/lib/zen/helper/blue_form_vendor.rb +0 -689
  346. data/lib/zen/language/en/zen_general.yml +0 -25
  347. data/lib/zen/language/en/zen_models.yml +0 -13
  348. data/lib/zen/language/nl/zen_general.yml +0 -25
  349. data/lib/zen/language/nl/zen_models.yml +0 -13
  350. data/lib/zen/model/settings.rb +0 -78
  351. data/lib/zen/package/base.rb +0 -62
  352. data/lib/zen/package/categories/lib/categories/language/en/categories.yml +0 -36
  353. data/lib/zen/package/categories/lib/categories/language/en/category_groups.yml +0 -34
  354. data/lib/zen/package/categories/lib/categories/language/nl/categories.yml +0 -40
  355. data/lib/zen/package/categories/lib/categories/language/nl/category_groups.yml +0 -34
  356. data/lib/zen/package/categories/lib/categories/plugin/categories.rb +0 -141
  357. data/lib/zen/package/comments/lib/comments/language/en/comments.yml +0 -48
  358. data/lib/zen/package/comments/lib/comments/language/nl/comments.yml +0 -50
  359. data/lib/zen/package/comments/lib/comments/plugin/anti_spam.rb +0 -156
  360. data/lib/zen/package/comments/lib/comments/plugin/comments.rb +0 -115
  361. data/lib/zen/package/custom_fields/lib/custom_fields/language/en/custom_field_groups.yml +0 -33
  362. data/lib/zen/package/custom_fields/lib/custom_fields/language/en/custom_field_types.yml +0 -40
  363. data/lib/zen/package/custom_fields/lib/custom_fields/language/en/custom_fields.yml +0 -54
  364. data/lib/zen/package/custom_fields/lib/custom_fields/language/nl/custom_field_groups.yml +0 -33
  365. data/lib/zen/package/custom_fields/lib/custom_fields/language/nl/custom_field_types.yml +0 -40
  366. data/lib/zen/package/custom_fields/lib/custom_fields/language/nl/custom_fields.yml +0 -54
  367. data/lib/zen/package/menus/lib/menus/language/en/menu_items.yml +0 -41
  368. data/lib/zen/package/menus/lib/menus/language/en/menus.yml +0 -40
  369. data/lib/zen/package/menus/lib/menus/language/nl/menu_items.yml +0 -41
  370. data/lib/zen/package/menus/lib/menus/language/nl/menus.yml +0 -40
  371. data/lib/zen/package/menus/lib/menus/plugin/menus.rb +0 -152
  372. data/lib/zen/package/sections/lib/sections/language/en/section_entries.yml +0 -44
  373. data/lib/zen/package/sections/lib/sections/language/en/sections.yml +0 -48
  374. data/lib/zen/package/sections/lib/sections/language/nl/section_entries.yml +0 -44
  375. data/lib/zen/package/sections/lib/sections/language/nl/sections.yml +0 -48
  376. data/lib/zen/package/sections/lib/sections/plugin/section_entries.rb +0 -244
  377. data/lib/zen/package/sections/lib/sections/plugin/sections.rb +0 -87
  378. data/lib/zen/package/settings/lib/settings/language/en/settings.yml +0 -36
  379. data/lib/zen/package/settings/lib/settings/language/nl/settings.yml +0 -37
  380. data/lib/zen/package/settings/lib/settings/plugin/group_base.rb +0 -39
  381. data/lib/zen/package/settings/lib/settings/plugin/setting_base.rb +0 -133
  382. data/lib/zen/package/settings/lib/settings/plugin/settings.rb +0 -251
  383. data/lib/zen/package/users/lib/users/controller/access_rules.rb +0 -284
  384. data/lib/zen/package/users/lib/users/language/en/access_rules.yml +0 -38
  385. data/lib/zen/package/users/lib/users/language/en/user_groups.yml +0 -32
  386. data/lib/zen/package/users/lib/users/language/en/users.yml +0 -57
  387. data/lib/zen/package/users/lib/users/language/nl/access_rules.yml +0 -38
  388. data/lib/zen/package/users/lib/users/language/nl/user_groups.yml +0 -32
  389. data/lib/zen/package/users/lib/users/language/nl/users.yml +0 -57
  390. data/lib/zen/package/users/lib/users/model/access_rule.rb +0 -42
  391. data/lib/zen/package/users/lib/users/public/admin/js/users/access_rules.js +0 -65
  392. data/lib/zen/package/users/lib/users/public/admin/js/users/lib/access_rules.js +0 -49
  393. data/lib/zen/package/users/lib/users/view/admin/access-rules/form.xhtml +0 -120
  394. data/lib/zen/package/users/lib/users/view/admin/access-rules/index.xhtml +0 -102
  395. data/lib/zen/plugin.rb +0 -182
  396. data/lib/zen/plugin/base.rb +0 -46
  397. data/lib/zen/plugin/helper.rb +0 -47
  398. data/lib/zen/plugin/markup/lib/markup.rb +0 -14
  399. data/lib/zen/plugin/markup/lib/markup/language/en/markup.yml +0 -6
  400. data/lib/zen/plugin/markup/lib/markup/markup.rb +0 -165
  401. data/lib/zen/public/admin/js/zen/lib/asset.js +0 -111
  402. data/lib/zen/task/plugin.rake +0 -18
  403. data/lib/zen/theme/base.rb +0 -65
  404. data/proto/app/config/config.rb +0 -18
  405. data/spec/fixtures/zen/language/en/spec.yml +0 -10
  406. data/spec/fixtures/zen/language/nl/spec.yml +0 -7
  407. data/spec/fixtures/zen/package/settings/plugin/settings.rb +0 -20
  408. data/spec/zen/asset.rb +0 -97
  409. data/spec/zen/bin/create.rb +0 -89
  410. data/spec/zen/bin/runner.rb +0 -47
  411. data/spec/zen/helper/acl.rb +0 -149
  412. data/spec/zen/package/categories/plugin/categories.rb +0 -92
  413. data/spec/zen/package/comments/plugin/anti_spam.rb +0 -59
  414. data/spec/zen/package/comments/plugin/comments.rb +0 -107
  415. data/spec/zen/package/menus/plugin/menus.rb +0 -120
  416. data/spec/zen/package/sections/plugin/section_entries.rb +0 -161
  417. data/spec/zen/package/sections/plugin/sections.rb +0 -75
  418. data/spec/zen/package/settings/plugin/settings.rb +0 -33
  419. data/spec/zen/package/users/controller/access_rules.rb +0 -90
  420. data/spec/zen/plugin.rb +0 -64
  421. data/spec/zen/plugin/helper.rb +0 -11
  422. data/spec/zen/plugin/markup.rb +0 -44
@@ -3,17 +3,21 @@ module Zen
3
3
  #:nodoc:
4
4
  module Controller
5
5
  ##
6
- # The BaseController is extended by both the FrontendController and the
7
- # BackendController. This controller is mostly used to set and retrieve
6
+ # The BaseController is extended by both the FrontendController and the
7
+ # BackendController. This controller is mostly used to set and retrieve
8
8
  # data that's used in both the backend and the frontend.
9
9
  #
10
- # @author Yorick Peterse
11
10
  # @since 0.1
12
11
  #
13
12
  class BaseController < Ramaze::Controller
14
- include ::Zen::Language
13
+ helper :user, :csrf, :message, :cgi, :locale, :controller,
14
+ :blue_form, :paginate, :stacked_aspect
15
15
 
16
- helper :csrf, :cgi
16
+ # Configure the pagination helper
17
+ trait :paginate => {
18
+ :limit => 20,
19
+ :var => 'page'
20
+ }
17
21
  end # BaseController
18
22
  end # Controller
19
23
  end # Zen
@@ -7,7 +7,6 @@ module Zen
7
7
  # accessed from the web without having to log in. Frontend controllers don't
8
8
  # have a layout and use the Liquid template engine for all views.
9
9
  #
10
- # @author Yorick Peterse
11
10
  # @since 0.1
12
11
  #
13
12
  class FrontendController < Zen::Controller::BaseController
@@ -1,65 +1,53 @@
1
- #:nodoc:
2
1
  module Zen
3
- #:nodoc:
4
2
  module Controller
5
3
  ##
6
- # The MainController controller is used to load the correct template files
7
- # based on the current URI. If no section is specified the default section
8
- # will be retrieved from the settings table.
4
+ # The MainController controller is used to load the correct template files
5
+ # based on the current URI.
9
6
  #
10
- # @author Yorick Peterse
11
7
  # @since 0.1
12
8
  #
13
9
  class MainController < Zen::Controller::FrontendController
14
10
  map '/'
15
-
11
+
16
12
  ##
17
- # The index method acts as a catch-all method. Based on the requested URI
18
- # the correct template group/file will be loaded. If no templates are
19
- # found a 404 template will be loaded. If that's not found either a
20
- # default error will be shown.
13
+ # Determines what template group and template have to be rendered based on
14
+ # the requested URI. If the template does not exist a 404 template
15
+ # (404.xhtml) will be rendered. If that template doesn't exist either a
16
+ # plain text message will be displayed.
21
17
  #
22
- # @author Yorick Peterse
23
18
  # @since 0.1
24
- # @param [Array] uri Array containing all arguments (thus the URI).
19
+ # @param [Array] uri Array containing all the URI segments that were
20
+ # specified (without any file extensions).
25
21
  #
26
22
  def index(*uri)
27
- @request_uri = []
28
- theme = plugin(:settings, :get, :theme).value
29
-
30
- # Clean the URI of nasty input
31
- uri.each { |v| @request_uri.push(h(v)) }
32
-
23
+ @request_uri = uri.map { |v| h(v) }
24
+ theme = get_setting(:theme).value
25
+
26
+ if theme.nil? or theme.empty?
27
+ respond(lang('zen_general.errors.no_theme'))
28
+ end
29
+
30
+ theme = Zen::Theme[theme]
31
+
33
32
  if !@request_uri[0] or @request_uri[0].empty?
34
- section = plugin(:settings, :get, :default_section).value
35
- section = ::Sections::Model::Section[section].slug
36
- @request_uri[0] = section
33
+ @request_uri[0] = theme.default_template_group
37
34
  end
38
-
35
+
39
36
  if !@request_uri[1] or @request_uri[1].empty?
40
37
  @request_uri[1] = 'index'
41
38
  end
42
-
43
- # A theme is always required
44
- if theme.nil? or theme.empty?
45
- respond(lang('zen_general.errors.no_theme'))
46
- end
47
39
 
48
- theme = ::Zen::Theme[theme]
49
- group = @request_uri[0]
50
- template = @request_uri[1]
51
-
52
- # Create the group, template and partial paths
53
- theme_path = theme.template_dir
54
- group_path = File.join(theme_path, group)
55
- template_path = File.join(theme_path, group, "#{template}.xhtml")
56
-
57
- # Check if the group exists
58
- if File.directory?(group_path) and File.exists?(template_path)
59
- render_file(template_path)
40
+ path = File.join(
41
+ theme.templates,
42
+ @request_uri[0],
43
+ "#{@request_uri[1]}.xhtml"
44
+ )
45
+
46
+ if File.exist?(path)
47
+ render_file(path)
60
48
  else
61
- not_found = File.join(theme_path, '404.xhtml')
62
-
49
+ not_found = File.join(theme.templates, '404.xhtml')
50
+
63
51
  if File.exist?(not_found)
64
52
  respond(render_file(not_found), 404)
65
53
  else
@@ -3,11 +3,11 @@ module Zen
3
3
  #:nodoc
4
4
  module Controller
5
5
  ##
6
- # Controller that can be used to render a block of markup based on the POST
7
- # data. This controller is useful for generating previews when using the
6
+ # Controller that can be used to render a block of markup based on the POST
7
+ # data. This controller is useful for generating previews when using the
8
8
  # text editor for example.
9
9
  #
10
- # In order to render a preview you'll have to send a POST request with the
10
+ # In order to render a preview you'll have to send a POST request with the
11
11
  # following data in it:
12
12
  #
13
13
  # * engine: The markup engine to use (Markdown, Textile, etc).
@@ -19,11 +19,10 @@ module Zen
19
19
  # engine: "markdown"
20
20
  # markup: "Hello **world**!"
21
21
  #
22
- # The return data is an HTTP status code and the HTML as the body. The HTTP
23
- # status code will be 200 whenever the data was converted and or 400 in case
22
+ # The return data is an HTTP status code and the HTML as the body. The HTTP
23
+ # status code will be 200 whenever the data was converted and or 400 in case
24
24
  # of an error (e.g. an incorrect markup engine was specified).
25
25
  #
26
- # @author Yorick Peterse
27
26
  # @since 0.2.6
28
27
  #
29
28
  class Preview < Zen::Controller::AdminController
@@ -32,7 +31,6 @@ module Zen
32
31
  ##
33
32
  # Converts the markup set in the POST data and returns the HTML.
34
33
  #
35
- # @author Yorick Peterse
36
34
  # @since 0.2.6
37
35
  #
38
36
  def index
@@ -42,7 +40,10 @@ module Zen
42
40
 
43
41
  begin
44
42
  respond(
45
- plugin(:markup, request.params['engine'], request.params['markup']),
43
+ Zen::Markup.convert(
44
+ request.params['engine'],
45
+ request.params['markup']
46
+ ),
46
47
  200
47
48
  )
48
49
  rescue
@@ -0,0 +1,49 @@
1
+ module Zen
2
+ module Controller
3
+ ##
4
+ # Controller that generates a Javascript variable containing various
5
+ # language strings that should be available in Javascript code.
6
+ #
7
+ # @since 0.3
8
+ #
9
+ class Translations < Zen::Controller::FrontendController
10
+ map '/admin/js/zen/lib/translations.js'
11
+
12
+ # Array containing all the translations to copy.
13
+ TRANSLATIONS = [
14
+ 'zen_general.buttons.bold',
15
+ 'zen_general.buttons.italic',
16
+ 'zen_general.buttons.link',
17
+ 'zen_general.buttons.ul',
18
+ 'zen_general.buttons.ol',
19
+ 'zen_general.buttons.preview',
20
+ 'zen_general.buttons.close',
21
+ 'zen_general.datepicker.select_a_time',
22
+ 'zen_general.datepicker.use_mouse_wheel',
23
+ 'zen_general.datepicker.time_confirm_button',
24
+ 'zen_general.datepicker.apply_range',
25
+ 'zen_general.datepicker.cancel',
26
+ 'zen_general.datepicker.week'
27
+ ]
28
+
29
+ ##
30
+ # Renders the translations as a Javascript variable. It is a bit of a
31
+ # dirty process but it means I don't have to use the JSON gem which can
32
+ # suck up quite a bit of memory over time.
33
+ #
34
+ # @since 0.3
35
+ #
36
+ def index
37
+ var = 'var Zen = Zen || {}; Zen.translations = {'
38
+
39
+ TRANSLATIONS.each do |k|
40
+ var += "'#{k}': '#{lang(k)}',"
41
+ end
42
+
43
+ var += '};'
44
+
45
+ respond(var, 200, 'Content-Type' => 'text/javascript')
46
+ end
47
+ end # Language
48
+ end # Controller
49
+ end # Zen
data/lib/zen/error.rb ADDED
@@ -0,0 +1,17 @@
1
+ #:nodoc:
2
+ module Zen
3
+ # Error class used by Zen::Language.
4
+ class LanguageError < StandardError; end
5
+
6
+ # Error class used by Zen::Package.
7
+ class PackageError < StandardError; end
8
+
9
+ # Error class used by Zen::Plugin.
10
+ class PluginError < StandardError; end
11
+
12
+ # Error class used by Zen::Theme.
13
+ class ThemeError < StandardError; end
14
+
15
+ # Error class used by Zen::Validation.
16
+ class ValidationError < StandardError; end
17
+ end # Zen
data/lib/zen/event.rb ADDED
@@ -0,0 +1,118 @@
1
+ module Zen
2
+ ##
3
+ # Zen::Event is a module that can be used to register and execute events.
4
+ # Events are small Procs that are executed before or after something has
5
+ # happened. Events can be useful when you want to send an Email after a
6
+ # certain record has been added without having to monkey patch a particular
7
+ # model (which would overwrite any existing events). Events can also be used
8
+ # to modify data at certain points in your application. For example, you might
9
+ # have an event that changes a comment's status before inserting it into the
10
+ # database.
11
+ #
12
+ # Adding a event can be done by calling Zen::Event.listen as following:
13
+ #
14
+ # Zen::Event.listen(:event_name) do
15
+ #
16
+ # end
17
+ #
18
+ # The block that's added to the Zen::Event.listen() takes any number of
19
+ # parameters depending on the ones passed to Zen::Event.call(). For example,
20
+ # if the event is called and passed two parameters both parameters will be
21
+ # passed to the event's block.
22
+ #
23
+ # Events are called in sequence and each event will receive the same
24
+ # parameters (given they take the same parameters). This means that if you
25
+ # have 5 events each event could potentially receive different data depending
26
+ # on whether a previous event modified the data. This is illustrated in the
27
+ # following example:
28
+ #
29
+ # obj = Struct.new(:name).new('Python')
30
+ #
31
+ # Zen::Event.listen(:event_1) do |obj|
32
+ # obj.name = 'Ruby'
33
+ # end
34
+ #
35
+ # Zen::Event.listen(:event_1) do |obj|
36
+ # obj.name = 'Perl'
37
+ # end
38
+ #
39
+ # Zen::Event.call(:event_1, obj)
40
+ #
41
+ # puts obj.name # => "Perl"
42
+ #
43
+ # @example Prints "Hello Ruby" 10 times
44
+ # Zen::Event.listen(:greet) do |amount, name|
45
+ # amount.times do
46
+ # puts "Hello #{name}"
47
+ # end
48
+ # end
49
+ #
50
+ # Zen::Event.call(:greet, 10, 'Ruby')
51
+ #
52
+ # @since 0.3
53
+ #
54
+ module Event
55
+ # Hash containing all the event names and a list of procs to execute for all
56
+ # those events.
57
+ REGISTERED = {}
58
+
59
+ class << self
60
+ ##
61
+ # Runs all the events for the name and passes the arguments to each event.
62
+ # Each event is run in it's own thread and is wrapped in a mutex.
63
+ #
64
+ # @example
65
+ # Zen::Event.call(:new_user, User[1])
66
+ #
67
+ # @since 0.3
68
+ # @param [#to_sym] event The name of the event to invoke.
69
+ # @param [Array] *args An array of arguments to pass to each event.
70
+ #
71
+ def call(event, *args)
72
+ event = event.to_sym
73
+
74
+ if REGISTERED.key?(event)
75
+ REGISTERED[event].each do |event|
76
+ event.call(*args)
77
+ end
78
+ end
79
+ end
80
+
81
+ ##
82
+ # Adds a new event to the list of events for the given name. If the event
83
+ # does not exist it will be created automatically.
84
+ #
85
+ # @example
86
+ # Zen::Event.listen(:new_user) do |user|
87
+ # puts user.name
88
+ # end
89
+ #
90
+ # @since 0.3
91
+ # @param [#to_sym] event The name of the event.
92
+ # @param [Proc] block A block to execute when the event is invoked.
93
+ #
94
+ def listen(event, &block)
95
+ event = event.to_sym
96
+ REGISTERED[event] ||= []
97
+
98
+ REGISTERED[event].push(block)
99
+ end
100
+
101
+ ##
102
+ # Removes all events for the given names.
103
+ #
104
+ # @example
105
+ # Zen::Event.delete(:before_new_user, :after_new_user)
106
+ #
107
+ # @since 0.3
108
+ # @param [Array] *names The names of the events to remove. Each name
109
+ # should be a symbol or something that responds to #to_sym().
110
+ #
111
+ def delete(*names)
112
+ names.each do |name|
113
+ REGISTERED.delete(name.to_sym)
114
+ end
115
+ end
116
+ end # class << self
117
+ end # Event
118
+ end # Zen
@@ -0,0 +1,63 @@
1
+ module Ramaze
2
+ module Helper
3
+ ##
4
+ # Helper that makes it a bit easier to add assets to Zen.asset. All assets
5
+ # added via this module are *only* loaded for the class that called the
6
+ # method.
7
+ #
8
+ # @since 0.3
9
+ #
10
+ module Asset
11
+ ##
12
+ # Extends the including class with the ClassMethods module.
13
+ #
14
+ # @since 0.3
15
+ # @param [Class] klass The klass that included this module.
16
+ #
17
+ def self.included(klass)
18
+ klass.extend(Ramaze::Helper::Asset::ClassMethods)
19
+ end
20
+
21
+ ##
22
+ # Module of which the methods will become available as class methods to
23
+ # the class that included Ramaze::Helper::Asset.
24
+ #
25
+ # @since 0.3
26
+ #
27
+ module ClassMethods
28
+ ##
29
+ # Provides a shortcut method to Zen.asset.serve() and automatically
30
+ # loads all the given assets for the calling class.
31
+ #
32
+ # @since 0.3
33
+ # @see Ramaze::Asset::Environment#serve()
34
+ #
35
+ def serve(type, files, options = {})
36
+ Zen.asset.serve(type, files, options.merge({:controller => self}))
37
+ end
38
+
39
+ ##
40
+ # Loads an asset group. This method can either load a single asset group
41
+ # or an array of groups.
42
+ #
43
+ # @example
44
+ # load_asset_group(:datepicker)
45
+ # load_asset_group([:editor, :datepicker])
46
+ #
47
+ # @since 0.3
48
+ # @see Ramaze::Asset::Environment#load_asset_group()
49
+ # @param [Array] methods An array of methods to load the assets for.
50
+ #
51
+ def load_asset_group(name, methods = nil)
52
+ if name.respond_to?(:each)
53
+ name.each do |n|
54
+ Zen.asset.load_asset_group(n, self, methods)
55
+ end
56
+ else
57
+ Zen.asset.load_asset_group(name, self, methods)
58
+ end
59
+ end
60
+ end # ClassMethods
61
+ end # Asset
62
+ end # Helper
63
+ end # Ramaze
@@ -18,7 +18,6 @@ module Ramaze
18
18
  # This will generate the correct HTML and return it, all you have to do is
19
19
  # output it.
20
20
  #
21
- # @author Yorick Peterse
22
21
  # @since 0.1
23
22
  #
24
23
  module Breadcrumb
@@ -33,7 +32,6 @@ module Ramaze
33
32
  # Note that you'll have to manually specify anchor tags, this method won't
34
33
  # automatically generate URLs.
35
34
  #
36
- # @author Yorick Peterse
37
35
  # @param [Array] args Array of segments for the breadcrumbs.
38
36
  # @since 0.1
39
37
  #
@@ -51,9 +49,8 @@ module Ramaze
51
49
  # @example
52
50
  # get_breadcrumbs ">" # => "Articles > Edit"
53
51
  #
54
- # @author Yorick Peterse
55
52
  # @param [String] separator The HTML character to use for separating each
56
- # segment.
53
+ # segment.
57
54
  # @return [String]
58
55
  #
59
56
  def get_breadcrumbs(separator = "&raquo;")