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
@@ -0,0 +1,73 @@
1
+ module Ramaze
2
+ module Helper
3
+ ##
4
+ # Helper that provides a few methods for commonly used code inside a
5
+ # controller.
6
+ #
7
+ # @since 0.3
8
+ #
9
+ module Controller
10
+ ##
11
+ # Extends the class that included this module with the ClassMethods
12
+ # module.
13
+ #
14
+ # @since 0.3
15
+ # @param [Class] into The class that included this module.
16
+ #
17
+ def self.included(into)
18
+ into.extend(Ramaze::Helper::Controller::ClassMethods)
19
+ end
20
+
21
+ ##
22
+ # Methods that become available as class methods.
23
+ #
24
+ # @since 0.3
25
+ #
26
+ module ClassMethods
27
+ ##
28
+ # Sets the title for all the methods based on a language string. If
29
+ # there's no corresponding language key the title will not be set.
30
+ #
31
+ # @example
32
+ # class Foo < Zen::Controller::AdminController
33
+ # title 'foo.titles.%s'
34
+ # end
35
+ #
36
+ # @since 0.3
37
+ # @param [String] title The language key to use, a %s will be replaced
38
+ # with the name of the current action.
39
+ #
40
+ def title(title)
41
+ stacked_before_all(:set_page_title) do
42
+ @page_title = lang(title % action.method) rescue nil
43
+ end
44
+ end
45
+
46
+ ##
47
+ # Protects the specified methods against CSRF attacks. If a CSRF token
48
+ # is missing the user will see the message defined in the language key
49
+ # "zen_general.errors.csrf" and the HTTP status code will be set to 403.
50
+ #
51
+ # @example
52
+ # class Foo < Zen::Controller::AdminController
53
+ # csrf_protection :save, :delete
54
+ # end
55
+ #
56
+ # @since 0.3
57
+ # @param [Array] *actions An array of action names to protect against
58
+ # CSRF attacks.
59
+ #
60
+ def csrf_protection(*actions)
61
+ # before_all() calls don't stack. Because CSRF protected methods are
62
+ # usually used for POST calls (and are separate methods) this works
63
+ # around it.
64
+ stacked_before_all(:validate_csrf_token) do
65
+ csrf_protection(*actions) do
66
+ respond(lang('zen_general.errors.csrf'), 403)
67
+ end
68
+ end
69
+ end
70
+ end # ClassMethods
71
+ end # Controller
72
+ end # Helper
73
+ end # Ramaze
@@ -0,0 +1,42 @@
1
+ module Ramaze
2
+ module Helper
3
+ ##
4
+ # Helper that can be used to display various variables based on the user's
5
+ # locale and settings.
6
+ #
7
+ # @since 0.3
8
+ #
9
+ module Locale
10
+ ##
11
+ # Returns the date format for the currently logged in user. If the user
12
+ # has no date format set (or isn't logged in) the system format is used.
13
+ #
14
+ # @since 0.3
15
+ #
16
+ def date_format
17
+ begin
18
+ format = user.date_format
19
+ rescue
20
+ format = get_setting(:date_format).value
21
+ end
22
+
23
+ return format
24
+ end
25
+
26
+ ##
27
+ # Formats a date according to Ramaze::Helper::Locale#date_format.
28
+ #
29
+ # @since 0.3
30
+ # @param [#strftime] object An object that responds to #strftime().
31
+ # @return [String]
32
+ #
33
+ def format_date(object)
34
+ if object.respond_to?(:strftime)
35
+ return object.strftime(date_format)
36
+ else
37
+ return nil
38
+ end
39
+ end
40
+ end # Locale
41
+ end # Helper
42
+ end # Ramaze
@@ -22,14 +22,12 @@ module Ramaze
22
22
  #
23
23
  # This will create and return the HTML for all the messages.
24
24
  #
25
- # @author Yorick Peterse
26
25
  # @since 26-05-2011
27
26
  #
28
27
  module Message
29
28
  ##
30
29
  # Adds a new message to the list for the given type.
31
30
  #
32
- # @author Yorick Peterse
33
31
  # @since 26-05-2011
34
32
  # @param [Symbol/String] type The type of message to store (e.g. "error").
35
33
  # @param [String] message The message to display.
@@ -47,7 +45,6 @@ module Ramaze
47
45
  ##
48
46
  # Renders all the messages for the specified types.
49
47
  #
50
- # @author Yorick Peterse
51
48
  # @since 26-05-2011
52
49
  # @param [Array] types Array containing all the messages to render.
53
50
  #
@@ -0,0 +1,54 @@
1
+ module Ramaze
2
+ module Helper
3
+ ##
4
+ # The Search helper is a helper that can be used in controllers allowing the
5
+ # user to search the content of those controllers and models.
6
+ #
7
+ # @since 16-10-2011
8
+ #
9
+ module Search
10
+ ##
11
+ # Renders a search form that points to the given URL.
12
+ #
13
+ # @since 16-10-2011
14
+ # @param [#to_s] url The URL to point the search form to.
15
+ # @return [String]
16
+ #
17
+ def render_search_form(url)
18
+ render_file(
19
+ __DIR__('../view/search.xhtml'),
20
+ :url => url.to_s
21
+ )
22
+ end
23
+
24
+ ##
25
+ # Calls the given block used to search a number of records. If the search
26
+ # action raises an error a message is displayed and the user will be
27
+ # redirected back to the previous page.
28
+ #
29
+ # If no search query is specified nil will be returned.
30
+ #
31
+ # @example
32
+ # results = search do |query|
33
+ # Sections::Model::Section.search(query)
34
+ # end
35
+ #
36
+ # @since 16-10-2011
37
+ # @return [NilClass|Mixed]
38
+ #
39
+ def search
40
+ if request.params['query'].nil? or request.params['query'].empty?
41
+ return nil
42
+ end
43
+
44
+ begin
45
+ return yield(request.params['query'])
46
+ rescue => e
47
+ Ramaze::Log.error(e.inspect)
48
+ message(:error, lang('zen_general.errors.invalid_search'))
49
+ redirect_referrer(::Sections::Controller::Sections.r(:index))
50
+ end
51
+ end
52
+ end # Search
53
+ end # Helper
54
+ end # Ramaze
@@ -0,0 +1,249 @@
1
+ module Ramaze
2
+ module Helper
3
+ ##
4
+ # StackedAspect is a helper similar to {Innate::Helper::Aspect} but allows
5
+ # calls to methods such as ``before_all`` to stack on top of each other
6
+ # instead of overwriting previously defined ones.
7
+ #
8
+ # Although this helper works very similar to the Aspect helper there are two
9
+ # main differences besides the calls being stackable:
10
+ #
11
+ # 1. All methods are prefixed with ``stacked_``
12
+ # 2. All methods require you to specify a name for the block.
13
+ #
14
+ # Both these items exist to achieve compatibility with the Aspect helper as
15
+ # well as being able to reload code using the reloader without adding all
16
+ # the blocks each time the code is reloaded.
17
+ #
18
+ # Basic usage of this helper is as following:
19
+ #
20
+ # class Posts < Ramaze::Controller
21
+ # map '/posts'
22
+ # helper :stacked_aspect
23
+ #
24
+ # stacked_before_all(:validate_ip) do
25
+ # validate_ip
26
+ # end
27
+ #
28
+ # stacked_before_all(:validate_user) do
29
+ # validate_user
30
+ # end
31
+ #
32
+ # def index
33
+ #
34
+ # end
35
+ # end
36
+ #
37
+ # In this example both methods (``validate_ip`` and ``validate_user``) would
38
+ # be executed before calling ``#index()``.
39
+ #
40
+ # @since 06-11-2011
41
+ #
42
+ module StackedAspect
43
+ # Hash that will contain all the STACKED_AOP actions.
44
+ STACKED_AOP = Hash.new { |h, k| h[k] = Hash.new { |hh, kk| hh[kk] = {} } }
45
+
46
+ ##
47
+ # Called whenever this module is included into a class.
48
+ #
49
+ # @since 06-11-2011
50
+ # @param [Class] into The class that included this module.
51
+ #
52
+ def self.included(into)
53
+ into.extend(ClassMethods)
54
+ into.add_action_wrapper(7.0, :stacked_aspect_wrap)
55
+ end
56
+
57
+ # @see Innate::Helper::Aspect.ancestral_aop
58
+ def self.ancestral_aop(from)
59
+ aop = {}
60
+
61
+ from.ancestors.reverse.map do |anc|
62
+ aop.merge!(STACKED_AOP[anc]) if anc < StackedAspect
63
+ end
64
+
65
+ return aop
66
+ end
67
+
68
+ ##
69
+ # Shows a warning to inform the developer that the aspect name is already
70
+ # in use.
71
+ #
72
+ # @since 06-11-2011
73
+ # @param [#to_s] name The name of the aspect.
74
+ #
75
+ def self.aspect_warn(name)
76
+ file, line = caller[1].split(':')
77
+
78
+ Ramaze::Log.warn(
79
+ "The aspect name \"#{name}\" is already in use, it was redefined " \
80
+ "in #{file} on line #{line}"
81
+ )
82
+ end
83
+
84
+ ##
85
+ # Calls a certain AOP action for the specified position and method name.
86
+ #
87
+ # @since 06-11-2011
88
+ # @param [Symbol] position The position of the AOP action (e.g. :after).
89
+ # @param [String] name The name of the method for which to call the
90
+ # action.
91
+ #
92
+ def stacked_aspect_call(position, name)
93
+ return unless aop = StackedAspect.ancestral_aop(self.class)
94
+ return unless block = aop[position]
95
+
96
+ name = name.to_sym
97
+
98
+ # Bail out if the position is :before or :after but the current method
99
+ # doesn't match.
100
+ if [:before, :after].include?(position) and !block[name].is_a?(Hash)
101
+ return
102
+ end
103
+
104
+ # Extract the sub hash for the current method, this is needed for
105
+ # :before and :after.
106
+ if block.is_a?(Hash) and block[name].is_a?(Hash)
107
+ block = block[name]
108
+ end
109
+
110
+ if block.respond_to?(:each)
111
+ block.each do |k, v|
112
+ instance_eval(&v)
113
+ end
114
+ else
115
+ instance_eval(&block)
116
+ end
117
+ end
118
+
119
+ # @see Innate::Helper::Aspect#aspect_wrap
120
+ def stacked_aspect_wrap(action)
121
+ return yield unless method = action.name
122
+
123
+ stacked_aspect_call(:before_all, method)
124
+ stacked_aspect_call(:before, method)
125
+
126
+ result = yield
127
+
128
+ stacked_aspect_call(:after, method)
129
+ stacked_aspect_call(:after_all, method)
130
+
131
+ return result
132
+ end
133
+
134
+ ##
135
+ # Module who's methods become available as class methods.
136
+ #
137
+ # @since 06-11-2011
138
+ #
139
+ module ClassMethods
140
+ include Traited
141
+
142
+ ##
143
+ # Defines a block to run before all the actions in a controller.
144
+ #
145
+ # @example
146
+ # stacked_before_all(:check_ip) do
147
+ # validate_ip
148
+ # end
149
+ #
150
+ # stacked_before_all(:check_username) do
151
+ # validate_username
152
+ # end
153
+ #
154
+ # @since 06-11-2011
155
+ # @param [#to_sym] name The unique name of the block.
156
+ # @param [Proc] block The block to execute.
157
+ #
158
+ def stacked_before_all(name, &block)
159
+ name = name.to_sym
160
+
161
+ if !STACKED_AOP[self][:before_all].key?(name)
162
+ STACKED_AOP[self][:before_all][name] = block
163
+ else
164
+ StackedAspect.aspect_warn(name)
165
+ end
166
+ end
167
+
168
+ ##
169
+ # Defines a block similar to
170
+ # {Ramaze::Helper::StackedAspect::ClassMethods#stacked_before} but only
171
+ # runs the block before the specified list of methods.
172
+ #
173
+ # @example
174
+ # stacked_before(:check_ip, [:save, :delete]) do
175
+ # validate_ip
176
+ # end
177
+ #
178
+ # @since 06-11-2011
179
+ # @param [#to_sym] name A unique name for the block.
180
+ # @param [Array] methods An array of methods for which to run the block.
181
+ # @param [Proc] block The block to run.
182
+ #
183
+ def stacked_before(name, methods, &block)
184
+ name = name.to_sym
185
+
186
+ methods.each do |m|
187
+ m = m.to_sym
188
+ STACKED_AOP[self][:before][m] ||= {}
189
+
190
+ if !STACKED_AOP[self][:before][m].key?(name)
191
+ STACKED_AOP[self][:before][m][name] = block
192
+ else
193
+ StackedAspect.aspect_warn(name)
194
+ end
195
+ end
196
+ end
197
+
198
+ ##
199
+ # Runs a block after all the actions in a controller.
200
+ #
201
+ # @since 06-11-2011
202
+ # @see Ramaze::Helper::StackedAspect::ClassMethods#stacked_before_all
203
+ #
204
+ def stacked_after_all(name, &block)
205
+ name = name.to_sym
206
+
207
+ if !STACKED_AOP[self][:after_all].key?(name)
208
+ STACKED_AOP[self][:after_all][name] = block
209
+ else
210
+ StackedAspect.aspect_warn(name)
211
+ end
212
+ end
213
+
214
+ ##
215
+ # Runs a block after a specific list of methods.
216
+ #
217
+ # @since 06-11-2011
218
+ # @see Ramaze::Helper::StackedAspect::ClassMethods#stacked_before
219
+ #
220
+ def stacked_after(name, names, &block)
221
+ name = name.to_sym
222
+
223
+ methods.each do |m|
224
+ m = m.to_sym
225
+ STACKED_AOP[self][:after][m] ||= {}
226
+
227
+ if !STACKED_AOP[self][:after][m].key?(name)
228
+ STACKED_AOP[self][:after][m][name] = block
229
+ else
230
+ StackedAspect.aspect_warn(name)
231
+ end
232
+ end
233
+ end
234
+
235
+ ##
236
+ # Wraps the block around the list of methods.
237
+ #
238
+ # @since 06-11-2011
239
+ # @see Ramaze::Helper::StackedAspect::ClassMethods#stacked_before
240
+ # @see Ramaze::Helper::StackedAspect::ClassMethods#stacked_after
241
+ #
242
+ def stacked_wrap(name, names, &block)
243
+ before(name, names, &block)
244
+ after(name, names, &block)
245
+ end
246
+ end # ClassMethods
247
+ end # StackedAspect
248
+ end # Helper
249
+ end # Ramaze
@@ -1,5 +1,3 @@
1
- require __DIR__('../error/theme_error')
2
-
3
1
  #:nodoc:
4
2
  module Ramaze
5
3
  #:nodoc:
@@ -8,7 +6,6 @@ module Ramaze
8
6
  # Helper that provides a few methods that make certain tasks easier when
9
7
  # creating themes and templates.
10
8
  #
11
- # @author Yorick Peterse
12
9
  # @since 0.2.5
13
10
  #
14
11
  module Theme
@@ -22,14 +19,13 @@ module Ramaze
22
19
  # partial(:header) # => partials/header.xhtml
23
20
  # partial(:header, :username => "YorickPeterse")
24
21
  #
25
- # @author Yorick Peterse
26
22
  # @since 0.2.5
27
23
  # @param [Symbol] file The name of the partial to render.
28
24
  # @param [Hash] variables A hash with variables that should be made
29
- # available for the partial.
25
+ # available for the partial.
30
26
  #
31
27
  def partial(file, variables = {})
32
- theme = plugin(:settings, :get, :theme).value
28
+ theme = get_setting(:theme).value
33
29
  theme = Zen::Theme[theme]
34
30
 
35
31
  if !theme.respond_to?(:partial_dir) or theme.partial_dir.nil?
@@ -59,15 +55,12 @@ module Ramaze
59
55
  # show_404
60
56
  # show_404(:uri => @request_uri)
61
57
  #
62
- # @author Yorick Peterse
63
58
  # @since 0.2.5
64
59
  # @param [Hash] variables Hash with variables to pass to the 404 template.
65
60
  #
66
61
  def show_404(variables = {})
67
- theme = ::Zen::Theme[plugin(:settings, :get, :theme).value]
62
+ theme = ::Zen::Theme[get_setting(:theme).value]
68
63
  template = File.join(theme.template_dir, '404.xhtml')
69
-
70
- # Render the template and replace the current buffer with it's output
71
64
  template = render_file(template, variables)
72
65
 
73
66
  respond(template, 404)