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,36 +0,0 @@
1
- ---
2
- titles:
3
- index: 'Settings'
4
-
5
- labels:
6
- website_name : 'Website name'
7
- website_description : 'Website description'
8
- language : 'Language'
9
- frontend_language : 'Frontend language'
10
- default_section : 'Default section'
11
- theme : 'Theme'
12
- enable_antispam : 'Enable anti-spam'
13
- date_format : 'Date format'
14
-
15
- placeholders:
16
- website_name : 'The name of the website.'
17
- website_description : 'The description of the website.'
18
- language : 'The language to use for the system.'
19
- default_section : 'The default section to use on the homepage.'
20
- theme : 'The frontend theme to use.'
21
- enable_antispam : 'Whether or not anti-spam protection should be used for comments'
22
- frontend_language : 'The language to use for the frontend of the website.'
23
- date_format : 'A custom format used for all the dates displayed in the backend.'
24
-
25
- tabs:
26
- general : 'General'
27
- security : 'Security'
28
-
29
- buttons:
30
- save: 'Save'
31
-
32
- success:
33
- save: 'The settings have been saved.'
34
-
35
- errors:
36
- save: 'The settings could not be saved.'
@@ -1,37 +0,0 @@
1
- ---
2
- titles:
3
- index: 'Instellingen'
4
-
5
- labels:
6
- website_name : 'Website naam'
7
- website_description: 'Website beschrijving'
8
- language : 'Taal'
9
- frontend_langauge : 'Taal voor bezoekers'
10
- default_section : 'Standaard sectie'
11
- theme : 'Thema'
12
- enable_antispam : 'Anti-spam inschakelen'
13
- date_format : 'Datum formaat'
14
-
15
- placeholders:
16
- website_name : 'De naam van de website.'
17
- website_description: 'De beschrijving van de website.'
18
- language : 'De taal die gebruikt moet worden voor het admin gedeelte.'
19
- default_section : 'De standaard sectie die moet worden gebruikt.'
20
- theme : 'Het thema dat bezoekers zullen zien.'
21
- enable_antispam : 'Waarde die aangeeft of het anti-spam systeem moet worden gebruikt
22
- voor reacties.'
23
- frontend_language : 'De taal die gebruikt moet worden voor bezoekers.'
24
- date_format : 'Het formaat van de datum voor het admin gedeelte.'
25
-
26
- tabs:
27
- general : 'Algemeen'
28
- security: 'Beveiliging'
29
-
30
- buttons:
31
- save: 'Opslaan'
32
-
33
- success:
34
- save: 'De instellingen zijn opgeslagen.'
35
-
36
- errors:
37
- save: 'De instellingen konden niet worden opgeslagen.'
@@ -1,39 +0,0 @@
1
- #:nodoc:
2
- module Settings
3
- #:nodoc:
4
- module Plugin
5
- ##
6
- # Base class used for setting groups.
7
- #
8
- # @author Yorick Peterse
9
- # @since 0.2.5
10
- #
11
- class GroupBase
12
- include ::Zen::Validation
13
-
14
- # The name of the group
15
- attr_accessor :name
16
-
17
- # The title of the group, displayed in the GUI
18
- attr_accessor :title
19
-
20
- ##
21
- # Validates all attributes of this class.
22
- #
23
- # @author Yorick Peterse
24
- # @since 0.2.5
25
- #
26
- def validate
27
- validates_presence([:name, :title])
28
- validates_format(:name, /[a-z0-9_\-]+/)
29
-
30
- if ::Settings::Plugin::Settings::Registered[:groups].key?(name)
31
- raise(
32
- ::Zen::ValidationError,
33
- "The setting group #{name} has already been registered."
34
- )
35
- end
36
- end
37
- end # GroupBase
38
- end # Plugin
39
- end # Settings
@@ -1,133 +0,0 @@
1
- #:nodoc:
2
- module Settings
3
- #:nodoc:
4
- module Plugin
5
- ##
6
- # Base class used for individual settings.
7
- #
8
- # @author Yorick Peterse
9
- # @since 0.2.5
10
- #
11
- class SettingBase
12
- include ::Zen::Validation
13
-
14
- ##
15
- # Array containing all possible setting types.
16
- #
17
- # @author Yorick Peterse
18
- # @since 0.2.5
19
- #
20
- Types = [
21
- 'textbox', 'textarea', 'radio', 'checkbox', 'date', 'select', 'select_multiple'
22
- ]
23
-
24
- # The name of the setting
25
- attr_accessor :name
26
-
27
- # The title of the setting, displayed in the GUI
28
- attr_accessor :title
29
-
30
- # A small description about the setting
31
- attr_accessor :description
32
-
33
- # The name of the settings group this setting belongs to
34
- attr_accessor :group
35
-
36
- # The type of setting (e.g. textbox)
37
- attr_accessor :type
38
-
39
- # The possible values for the setting
40
- attr_writer :values
41
-
42
- # The default value of the setting
43
- attr_accessor :default
44
-
45
- ##
46
- # Validates all attributes of this class.
47
- #
48
- # @author Yorick Peterse
49
- # @since 0.2.5
50
- #
51
- def validate
52
- validates_presence([:name, :title, :group, :type])
53
-
54
- # Validate the setting type
55
- if !Types.include?(type)
56
- raise(::Zen::ValidationError, "The setting type #{type} is invalid.")
57
- end
58
-
59
- # Check if the setting hasn't been registered yet
60
- if ::Settings::Plugin::Settings::Registered[:settings].key?(name)
61
- raise(
62
- ::Zen::ValidationError,
63
- "The setting #{name} has already been registered"
64
- )
65
- end
66
-
67
- # Validate the group
68
- if !::Settings::Plugin::Settings::Registered[:groups].key?(group)
69
- raise(::Zen::ValidationError, "The settings group #{group} doesn't exist.")
70
- end
71
- end
72
-
73
- ##
74
- # Updates the value of a setting both in the cache and the SQL database.
75
- #
76
- # @author Yorick Peterse
77
- # @since 0.2.6.1
78
- # @param [String] value The value to set the setting to.
79
- #
80
- def value=(value)
81
- # First we'll update the SQL database
82
- ::Settings::Model::Setting[:name => name].update(:value => value)
83
-
84
- # Sync the cache
85
- ::Ramaze::Cache.settings.store(name, value)
86
- end
87
-
88
- ##
89
- # Retrieves the setting. If it exists in the cache the cache's value is used,
90
- # otherwise it will be retrieved from the SQL database and cached.
91
- #
92
- # @author Yorick Peterse
93
- # @since 0.2.6.1
94
- #
95
- def value
96
- val = ::Ramaze::Cache.settings.fetch(name)
97
-
98
- # Get the setting from the database
99
- if val.nil?
100
- setting = ::Settings::Model::Setting[:name => name]
101
-
102
- # If the value is also nil we'll use the default value
103
- if setting.value.nil? or setting.value.empty?
104
- val = setting.default
105
- else
106
- val = setting.value
107
- end
108
-
109
- ::Ramaze::Cache.settings.store(name, val)
110
- end
111
-
112
- return val
113
- end
114
-
115
- ##
116
- # Retrieves the possible values for the setting. If the value is a Proc or Lambda
117
- # (or anything else that responds to call()) it will be called and it's return
118
- # value is used.
119
- #
120
- # @author Yorick Peterse
121
- # @since 0.2.8
122
- # @return [Mixed]
123
- #
124
- def values
125
- if @values.respond_to?(:call)
126
- return @values.call
127
- else
128
- return @values
129
- end
130
- end
131
- end # SettingBase
132
- end # Plugin
133
- end # Settings
@@ -1,251 +0,0 @@
1
- require __DIR__('group_base')
2
- require __DIR__('setting_base')
3
-
4
- #:nodoc:
5
- module Settings
6
- #:nodoc:
7
- module Plugin
8
- ##
9
- # The settings plugin is a plugin that can be used to register and migrate settings
10
- # without having to manually insert the data. Previously you'd have to manually insert
11
- # the data into the settings table at some point and the process of loading
12
- # translation keys and possible values was a pain. This this plugin was created to
13
- # solve most of those problems.
14
- #
15
- # ## Adding Settings
16
- #
17
- # In order to add a setting you'll first need to ensure there's at least a single
18
- # setting group available. These groups don't add any extra features or whatsoever but
19
- # are used to display settings in different tabs in the backend interface. In order to
20
- # register a new group you'd write the following code:
21
- #
22
- # plugin(:settings, :register_group) do |group|
23
- # group.title = 'My Group'
24
- # group.name = 'my_group'
25
- # end
26
- #
27
- # When registering a group you only need to specify a title and a name. The name is
28
- # used to associate a setting with it's group and thus should always be unique. The
29
- # title is displayed in the tab for the specific settings group.
30
- #
31
- # Once a setting group has been added we can add a setting as following:
32
- #
33
- # plugin(:settings, :register) do |setting|
34
- # setting.title = 'My Setting'
35
- # setting.description = 'This is my setting!'
36
- # setting.name = 'my_setting'
37
- # setting.group = 'my_group'
38
- # setting.type = 'select'
39
- # setting.values = ['yorick', 'zen']
40
- # setting.default = 'yorick'
41
- # end
42
- #
43
- # Note that the values array (or hash) is used to determine the possible values for
44
- # a field. These values will only be used for elements that only allow a user to
45
- # choose a single value (e.g. a checkbox). For the type getter/setter you can use
46
- # any of the following values:
47
- #
48
- # * textbox
49
- # * textarea
50
- # * radio
51
- # * checkbox
52
- # * date
53
- # * select
54
- # * select_multiple
55
- #
56
- # ## Migrating Settings
57
- #
58
- # Once a setting has been added you still have to migrate it. Zen takes care of this
59
- # so usually you don't need to manually migrate your settings. If you do want to
60
- # migrate them however you can simple execute the following code:
61
- #
62
- # plugin(:settings, :migrate)
63
- #
64
- # ## Removing Settings
65
- #
66
- # If you ever need to remove a setting both from the database and the system you can
67
- # do so as following:
68
- #
69
- # plugin(:settings, :remove, ['name1', 'name2'])
70
- #
71
- # You don't have to specify an array of names, you can also specify the name of a
72
- # single setting to delete.
73
- #
74
- # @author Yorick Peterse
75
- # @since 0.2.5
76
- #
77
- class Settings
78
- include ::Zen::Plugin::Helper
79
- include ::Settings::Model
80
-
81
- ##
82
- # Hash containing all registered settings and setting groups.
83
- #
84
- # @author Yorick Peterse
85
- # @since 0.2.5
86
- #
87
- Registered = {
88
- :groups => {},
89
- :settings => {}
90
- }
91
-
92
- ##
93
- # Creates a new instance of the plugin and saves the given arguments as instance
94
- # variables so they can be used by Settings::Plugin::Settings.call.
95
- #
96
- # @author Yorick Peterse
97
- # @since 0.2.5
98
- # @param [Symbol/String] action The action (method) to execute.
99
- # @param [Array] args Array containing all additional arguments.
100
- # @param [Proc] block An optional block containing extra details.
101
- # a setting.
102
- #
103
- def initialize(action, *args, &block)
104
- # Validate the given action
105
- if !respond_to?(action)
106
- raise(ArgumentError, "The action #{action} does not exist.")
107
- end
108
-
109
- validate_type(action, :action, [Symbol, String])
110
-
111
- @action, @args, @block = action, args, block
112
- end
113
-
114
- ##
115
- # Executes the action set in the construct and returns the results.
116
- #
117
- # @author Yorick Peterse
118
- # @since 0.2.5
119
- # @return [Mixed]
120
- #
121
- def call
122
- return send(@action, *@args, &@block)
123
- end
124
-
125
- ##
126
- # Registers a new setting group using the specified block.
127
- #
128
- # @example
129
- # plugin(:settings, :register_group) do |group|
130
- # group.name = 'example'
131
- # group.title = 'Example group'
132
- # end
133
- #
134
- # @author Yorick Peterse
135
- # @since 0.2.5
136
- #
137
- def register_group
138
- group = GroupBase.new
139
-
140
- yield group
141
-
142
- # Validate the group
143
- group.validate
144
-
145
- # Store the group
146
- Registered[:groups][group.name] = group
147
- end
148
-
149
- ##
150
- # Registers a new setting using the specified block.
151
- #
152
- # @example
153
- # plugin(:settings, :register) do |setting|
154
- # setting.name = 'example'
155
- # setting.title = 'Example setting'
156
- # setting.group = 'example'
157
- # setting.type = 'select'
158
- # setting.value = ['yorick', 'chuck']
159
- # end
160
- #
161
- # @author Yorick Peterse
162
- # @since 0.2.5
163
- #
164
- def register
165
- setting = SettingBase.new
166
-
167
- yield setting
168
-
169
- # Validate all attributes
170
- setting.validate
171
-
172
- Registered[:settings][setting.name] = setting
173
- end
174
-
175
- ##
176
- # Gets the setting for the given name.
177
- #
178
- # @author Yorick Peterse
179
- # @since 0.2.5
180
- # @param [String] name The name of the setting to retrieve.
181
- # @return [Zen::StrictStruct]
182
- #
183
- def get(name)
184
- validate_type(name, :name, [String, Symbol])
185
-
186
- name = name.to_s
187
-
188
- if !Registered[:settings].key?(name)
189
- raise(ArgumentError, "The setting #{name} doesn't exist.")
190
- end
191
-
192
- return Registered[:settings][name]
193
- end
194
-
195
- ##
196
- # Inserts all settings into the database. This method will ignore the settings that
197
- # have already been inserted into the database.
198
- #
199
- # @author Yorick Peterse
200
- # @since 0.2.5
201
- #
202
- def migrate
203
- settings = Setting.all.map { |s| s.name }
204
-
205
- Registered[:settings].each do |name, setting|
206
- name = name.to_s
207
-
208
- if !settings.include?(name)
209
- # For some reason using the Settings model generates nil errors
210
- # when this method is called from a migration so we'll insert them
211
- # the non-model way.
212
- Zen.database[:settings].insert(
213
- :name => setting.name,
214
- :group => setting.group,
215
- :default => setting.default,
216
- :type => setting.type
217
- )
218
-
219
- # Update everything but the value
220
- else
221
- Zen.database[:settings].filter[:name => setting.name].update(
222
- :group => setting.group,
223
- :default => setting.default,
224
- :type => setting.type
225
- )
226
- end
227
- end
228
- end
229
-
230
- ##
231
- # Removes the settings who's names match those specified in the array. The values
232
- # of these settings will also be removed from the database.
233
- #
234
- # @author Yorick Peterse
235
- # @since 0.2.5
236
- # @param [Array] namese An array with setting names to remove.
237
- #
238
- def remove(names)
239
- if names.class != Array
240
- names = [names]
241
- end
242
-
243
- names.each do |i|
244
- Registered[:settings].delete(i)
245
- end
246
-
247
- Setting.filter(:name => names).delete
248
- end
249
- end # Settings
250
- end # Plugin
251
- end # Settings