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
@@ -1,48 +0,0 @@
1
- ---
2
- titles:
3
- index : 'Comments'
4
- edit : 'Edit Comment'
5
-
6
- labels:
7
- id : '#'
8
- website : 'Website'
9
- entry : 'Section Entry'
10
- email : 'Email'
11
- status : 'Status'
12
- comment : 'Comment'
13
- name : 'Name'
14
- created_at : 'Created'
15
- updated_at : 'Updated'
16
- defensio : 'Defensio'
17
- anti_spam_system : 'Anti-spam system'
18
- open : 'Open'
19
- closed : 'Closed'
20
- spam : 'Spam'
21
- defensio_key : 'Defensio key'
22
-
23
- messages:
24
- no_comments: 'No comments have been added yet.'
25
-
26
- placeholders:
27
- anti_spam_system : 'The anti-spam system to use for validating comments.'
28
- defensio_key : 'The API key for the Defensio anti-spam system.'
29
-
30
- success:
31
- new : 'The new comment has been created.'
32
- save : 'The comment has been modified.'
33
- delete : 'All selected comments have been deleted.'
34
- moderate : "The comment has been posted but must be approved by an administrator before it's displayed."
35
-
36
- errors:
37
- new : 'Failed to create the new comment.'
38
- save : 'Failed to modify the comment.'
39
- delete : 'Failed to delete the comment with ID #%s.'
40
- no_delete : "You haven't specified any comments to delete."
41
- invalid_entry : 'The specified section entry is invalid.'
42
- comments_not_allowed : "Comments aren't allowed for this section."
43
- comments_require_account: 'You need to be logged in to post a comment.'
44
- invalid_comment : 'The specified comment is invalid.'
45
-
46
- buttons:
47
- delete : 'Delete selected comments'
48
- save : 'Save comment'
@@ -1,50 +0,0 @@
1
- ---
2
- titles:
3
- index: 'Reacties'
4
- edit : 'Reactie aanpassen'
5
-
6
- labels:
7
- id : '#'
8
- website : 'Website'
9
- entry : 'Sectie artikelen'
10
- email : 'Email'
11
- status : 'Status'
12
- comment : 'Reactie'
13
- name : 'Naam'
14
- created_at : 'Aangemaakt'
15
- updated_at : 'Aangepast'
16
- defensio : 'Defensio'
17
- anti_spam_system: 'Anti-spam systeem'
18
- open : 'Open'
19
- closed : 'Gesloten'
20
- spam : 'Spam'
21
- defensio_key : 'Defensio sleutel'
22
-
23
- messages:
24
- no_comments: 'Er zijn nog geen reacties toegevoegd.'
25
-
26
- placeholders:
27
- anti_spam_system: 'Het anti-spam systeem dat gebruikt moet worden voor het verifiëren
28
- van reacties.'
29
- defensio_key: 'De API sleutel voor het Defensio anti-spam systeem.'
30
-
31
- success:
32
- new : 'De reactie is aangemaakt.'
33
- save : 'De reactie is aangepast.'
34
- delete : 'Alle geselecteerde reacties zijn verwijderd.'
35
- moderate: 'De reactie moet eerst worden goedgekeurd door een beheerder voordat het kan
36
- worden weergegeven'
37
-
38
- errors:
39
- new : 'De reactie kon niet worden aangemaakt.'
40
- save : 'De reactie kon niet worden aangepast.'
41
- delete : 'De reactie met ID #%s kon niet worden verwijderd.'
42
- no_delete : 'U moet ten minste 1 reactie specificeren om te verwijderen.'
43
- invalid_entry : 'Het gespecificeerde artikel is ongeldig.'
44
- comments_not_allowed : 'Reacties zijn niet toegestaan voor deze sectie.'
45
- comments_require_account: 'Je moet ingelogd zijn om reacties te kunnen plaatsen.'
46
- invalid_comment : 'De opgegeven reactie is ongeldig.'
47
-
48
- buttons:
49
- delete: 'Geselecteerde reacties verwijderen'
50
- save : 'Reactie opslaan'
@@ -1,156 +0,0 @@
1
- #:nodoc:
2
- module Comments
3
- #:nodoc:
4
- module Plugin
5
- ##
6
- # A plugin that can be used to verify a comment against an external (or
7
- # internal) service to see if it's spam or ham.
8
- #
9
- # ## Usage
10
- #
11
- # plugin(:anti_spam, engine, author, email, url, comment)
12
- #
13
- # Note that all variables are required. This is because certain anti-spam
14
- # systems may verify the name of the author or the entered Email address
15
- # besides just the comment. When using Defensio you're only required to set
16
- # the comment:
17
- #
18
- # plugin(
19
- # :anti_spam, :defensio, nil, nil, nil, 'Hello, this is a comment.'
20
- # )
21
- #
22
- # ## Supported Systems
23
- #
24
- # Currently the plugin only supports Defensio, this engine requires the
25
- # setting "defensio_key" to contain a valid Defensio API key.
26
- #
27
- # ## Adding Systems
28
- #
29
- # Adding a system is done in two steps. First you should update the hash
30
- # Comments::PLugin::AntiSpam::Registered so that it includes your system.
31
- # The keys of this hash are symbols that match the name of the engine used
32
- # when calling the plugin() method. The values are the Gems to require.
33
- #
34
- # Once this has been done you should add a method to the class
35
- # Comments::Plugin::AntiSpam who's name matches the key set in the
36
- # Registered hash. If your anti-spam solution is called "cake" then you'd
37
- # do something like the following:
38
- #
39
- # Comments::Plugin::AntiSpam::Registered[:cake] = 'cake-gem'
40
- #
41
- # module Comments
42
- # module Plugin
43
- # class AntiSpam
44
- # def cake
45
- #
46
- # end
47
- # end
48
- # end
49
- # end
50
- #
51
- # The return value of the method added should be a boolean, true for spam
52
- # and false for ham.
53
- #
54
- # @author Yorick Peterse
55
- # @since 0.2.6
56
- #
57
- class AntiSpam
58
- include ::Zen::Plugin::Helper
59
-
60
- ##
61
- # Hash containing all the supported anti-spam engines and their Gems to
62
- # load.
63
- #
64
- # @author Yorick Peterse
65
- # @since 0.2.6
66
- #
67
- Registered = {
68
- :defensio => 'defensio',
69
- }
70
-
71
- ##
72
- # Creates a new instance of the plugin and saves the passed parameters.
73
- #
74
- # @author Yorick Peterse
75
- # @since 0.2.6
76
- # @param [Symbol] engine The anti-spam engine to use.
77
- # @param [String] author The name of the person that wrote the comment.
78
- # @param [String] email The email address of the author.
79
- # @param [String] url The website of the author (if any).
80
- # @param [String] comment The comment.
81
- #
82
- def initialize(engine, author, email, url, comment)
83
- @engine, @author, @email, @url, @comment = engine, author, email, \
84
- url, comment
85
-
86
- validate_type(engine, :engine, [Symbol])
87
-
88
- # Load the correct gem
89
- if !Registered.key?(@engine) or !respond_to?(@engine)
90
- raise(
91
- ::Zen::PluginError,
92
- "The anti-spam engine \"#{@engine}\" is invalid"
93
- )
94
- end
95
-
96
- begin
97
- require Registered[@engine]
98
- rescue ::LoadError
99
- raise(
100
- ::Zen::PluginError,
101
- "You need to install the gem \"#{Registered[@engine]}\" in order to " +
102
- "use the anti-spam engine \"#{@engine}\""
103
- )
104
- end
105
- end
106
-
107
- ##
108
- # Validates the comment to see if it's spam or ham.
109
- #
110
- # @author Yorick Peterse
111
- # @since 0.2.6
112
- # @return [TrueClass/FalseClass]
113
- #
114
- def call
115
- return send(@engine)
116
- end
117
-
118
- ##
119
- # Validates the comment using the Defensio anti-spam system.
120
- #
121
- # @author Yorick Peterse
122
- # @since 0.2.6
123
- # @return [TrueClass/FalseClass]
124
- #
125
- def defensio
126
- spam = true
127
- api_key = plugin(:settings, :get, :defensio_key).value
128
-
129
- if api_key.nil? or api_key.empty?
130
- raise(
131
- ::Zen::PluginError,
132
- "You need to specify an API key for the defensio system"
133
- )
134
- end
135
-
136
- client = ::Defensio.new(api_key)
137
- status, response = client.post_document(
138
- :content => @comment,
139
- :platform => 'zen',
140
- :type => 'comment'
141
- )
142
-
143
- # Not likely to happen but just in case we'll flag the comment as spam
144
- return spam if status != 200
145
-
146
- if response['allow'] === true and response['spaminess'] <= 0.85
147
- spam = false
148
- else
149
- spam = true
150
- end
151
-
152
- return spam
153
- end
154
- end # AntiSpam
155
- end # Plugin
156
- end # Comments
@@ -1,115 +0,0 @@
1
- #:nodoc
2
- module Comments
3
- #:nodoc
4
- module Plugin
5
- ##
6
- # The Comments plugin can be used to display a list of comments for a given
7
- # section entry.
8
- #
9
- # ## Usage
10
- #
11
- # If we want to retrieve all comments for the entry "hello-world":
12
- #
13
- # plugin(:comments, :entry => 'hello-world').each do |comment|
14
- # comment[:website]
15
- # end
16
- #
17
- # For more information about all available options see
18
- # Comments::Plugin::Comments#initialize
19
- #
20
- # @author Yorick Peterse
21
- # @since 0.2.5
22
- #
23
- class Comments
24
- include ::Zen::Plugin::Helper
25
- include ::Sections::Model
26
- include ::Comments::Model
27
-
28
- ##
29
- # Creates a new instance of the plugin and saves the specified
30
- # configuration options.
31
- #
32
- # @author Yorick Peterse
33
- # @since 0.2.5
34
- # @param [Hash] options Hash with a set of options that determine how
35
- # the comments should be retrieved.
36
- # @option options [String/Integer] :entry The slug or ID of the entry for
37
- # which to retrieve all comments.
38
- # @option options [Integer] :limit The maximum amount of comments to
39
- # retrieve.
40
- # @option options [Integer] :offset The row offset, useful for pagination
41
- # systems.
42
- # @option options [Boolean] :markup When set to true (default) the markup
43
- # used in each comment will be converted to the appropriate format.
44
- #
45
- def initialize(options = {})
46
- @options = {
47
- :limit => 20,
48
- :offset => 0,
49
- :markup => true,
50
- :entry => nil
51
- }.merge(options)
52
-
53
- # Validate the :entry option
54
- validate_type(@options[:limit] , :limit , [Integer, Fixnum])
55
- validate_type(@options[:offset], :offset, [Integer, Fixnum])
56
- validate_type(@options[:entry] , :entry , [Integer, String, Fixnum])
57
- validate_type(@options[:markup], :markup, [FalseClass, TrueClass])
58
- end
59
-
60
- ##
61
- # Retrieves all comments based on the options set in the construct. The
62
- # comments are returned as an array.
63
- #
64
- # @author Yorick Peterse
65
- # @since 0.2.5
66
- #
67
- def call
68
- # Get the section entry
69
- if @options[:entry].class == String
70
- entry = SectionEntry[:slug => @options[:entry]]
71
- else
72
- entry = SectionEntry[@options[:entry]]
73
- end
74
-
75
- # Now that we have the entry and the section we can start retrieving
76
- # all the comments.
77
- comments = Comment.filter(:section_entry_id => entry.id) \
78
- .limit(@options[:limit], @options[:offset]) \
79
- .all
80
-
81
- # Don't bother with all code below this if/end if we don't want to
82
- # convert the markup of each comment.
83
- if @options[:markup] === false
84
- return comments
85
- end
86
-
87
- # Get the section for the comments. This is required to determine what
88
- # markup is used for the comments.
89
- section = entry.section
90
-
91
- # Convert the markup of each comment and convert each comment to a hash
92
- comments.each_with_index do |comment, index|
93
- user = comment.user
94
- comment = comment.values
95
- comment[:comment] = plugin(
96
- :markup, section.comment_format, comment[:comment]
97
- )
98
-
99
- # Conver the userdata to a hash as well
100
- comment[:user] = {}
101
-
102
- if !user.nil?
103
- user.values.each do |k, v|
104
- comment[:user][k] = v
105
- end
106
- end
107
-
108
- comments[index] = comment
109
- end
110
-
111
- return comments
112
- end
113
- end # Comments
114
- end # Plugin
115
- end # Comments
@@ -1,33 +0,0 @@
1
- ---
2
- titles:
3
- index: 'Custom Field Groups'
4
- edit : 'Edit Custom Field Group'
5
- new : 'Add Custom Field Group'
6
-
7
- labels:
8
- id : '#'
9
- name : 'Name'
10
- description : 'Description'
11
- sections : 'Sections'
12
- manage_fields: 'Manage custom fields'
13
- none : 'None'
14
-
15
- messages:
16
- no_groups: 'No custom field groups have been created yet.'
17
-
18
- errors:
19
- new : 'Failed to create a new custom field group.'
20
- save : 'Failed to modify the custom field group.'
21
- delete : 'Failed to delete the custom field group with ID #%s'
22
- no_delete : "You haven't specified any custom field groups to delete"
23
- invalid_group: 'The specified custom field group is invalid.'
24
-
25
- success:
26
- new : 'The custom field group has been created.'
27
- save : 'The custom field group has been modified.'
28
- delete: 'The selected custom field groups have been deleted.'
29
-
30
- buttons:
31
- new : 'Add group'
32
- delete: 'Delete selected groups'
33
- save : 'Save group'
@@ -1,40 +0,0 @@
1
- ---
2
- titles:
3
- index: 'Custom Field Types'
4
- edit : 'Edit Custom Field Type'
5
- new : 'Add Custom Field Type'
6
-
7
- labels:
8
- id : '#'
9
- name : 'Name'
10
- language_string : 'Language string'
11
- html_class : 'HTML class'
12
- serialize : 'Serialize'
13
- allow_markup : 'Allow markup'
14
- custom_field_method_id: 'Custom field method'
15
-
16
- placeholders:
17
- language_string: 'The full language string to use.'
18
- html_class : 'A set of HTML classes to apply to all fields.'
19
- serialize : 'Whether or not the value of a field has to be serialized.'
20
- allow_markup : 'Whether or not markup, such as Markdown, can be used. '
21
-
22
- messages:
23
- no_field_types: 'No custom field types have been added yet.'
24
-
25
- errors:
26
- new : 'The custom field type could not be added.'
27
- save : 'The custom field type could not be modified.'
28
- delete : 'The custom field type with ID #%s could not be removed.'
29
- no_delete : 'You need to specify at least one custom field type to remove.'
30
- invalid_type: 'The specified custom field type is invalid.'
31
-
32
- success:
33
- new : 'The custom field type has been added.'
34
- save : 'The custom field type has been modified.'
35
- delete: 'All selected custom field types have been removed.'
36
-
37
- buttons:
38
- new : 'Add field type'
39
- delete: 'Delete selected field types'
40
- save : 'Save field type'