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
data/lib/zen/plugin.rb DELETED
@@ -1,182 +0,0 @@
1
- require __DIR__('error/plugin_error')
2
- require __DIR__('plugin/base')
3
-
4
- #:nodoc:
5
- module Zen
6
- ##
7
- # Plugins in Zen are quite similar to packages except for a few differences.
8
- # The biggest difference is that plugins won't update any Ramaze root
9
- # directories or language directories. This means that they can't have
10
- # controllers, models and so on. Plugins are useful for supporting multiple
11
- # markup formats (Markdown, Textile, etc) and other small tasks such as
12
- # replacing Email addresses and so on.
13
- #
14
- # ## Creating Plugins
15
- #
16
- # Creating a plugin happens in two steps. First you'll create your class and
17
- # then you'll register it so that it can be used by the system. A plugin has
18
- # a very simple layout, it's just a class with two methods: initialize and
19
- # call. The most basic skeleton of a plugin looks like the following:
20
- #
21
- # class MyPlugin
22
- # def initialize
23
- #
24
- # end
25
- #
26
- # def call
27
- #
28
- # end
29
- # end
30
- #
31
- # When a plugin is called all specified arguments are sent to the construct
32
- # method so if your plugin requires a number of arguments be sure to store
33
- # them. An example of this looks like the following:
34
- #
35
- # class MyPlugin
36
- # def initialize(name)
37
- # @name = name
38
- # end
39
- #
40
- # def call
41
- #
42
- # end
43
- # end
44
- #
45
- # The call method is supposed to return some data. Say we want to capitalize
46
- # a given name we'd modify the skeleton so that it looks like the following:
47
- #
48
- # class MyPlugin
49
- # def initialize(name)
50
- # @name = name
51
- # end
52
- #
53
- # def call
54
- # return @name.upcase
55
- # end
56
- # end
57
- #
58
- # ## Registering Plugins
59
- #
60
- # Now that the plugin is created it's time to tell Zen it actually is a plugin
61
- # and not some random class that doesn't belong somewhere. This can be done
62
- # by calling Zen::Plugin.add and specifying a block with the details of the
63
- # plugin. Example:
64
- #
65
- # Zen::Plugin.add do |plugin|
66
- # plugin.name = :my_plugin
67
- # plugin.author = 'Your name goes in here'
68
- # plugin.about = 'A simple plugin that capitalizes a given string/name'
69
- # plugin.plugin = MyPlugin
70
- # end
71
- #
72
- # The name and plugin setter are the most important. Names should always match
73
- # the regular expression /[a-z0-9_\-]+/. This is done to ensure names are
74
- # consistent and easy to remember. It's also used for calling plugins and
75
- # making sure there are no duplicates.
76
- #
77
- # The second important part is the plugin setting. This setter takes the class
78
- # constant of the plugin that was created earlier on. There's no need to call
79
- # new(), this will be done by Zen whenever the plugin is actually used.
80
- #
81
- # ## Executing Plugins
82
- #
83
- # Executing plugins is very easy and can be done by using the global method
84
- # plugin():
85
- #
86
- # plugin(:my_plugin, 'yorick') # => "YORICK"
87
- #
88
- # The first argument is the name of the plugin to call, all following
89
- # arguments will be sent to the plugin's construct method.
90
- #
91
- # @author Yorick Peterse
92
- # @since 0.2.4
93
- #
94
- module Plugin
95
- ##
96
- # Hash containing all registered plugins. The keys are the names of the
97
- # plugins and the values are instances of Zen::Plugin::Base.
98
- #
99
- # @author Yorick Peterse
100
- # @since 0.2.5
101
- #
102
- Registered = {}
103
-
104
- ##
105
- # Adds a new plugin with the given details.
106
- #
107
- # @author Yorick Peterse
108
- # @since 0.2.4
109
- # @raise [Zen::PluginError] Error raised whenever the plugin already exists
110
- # or is missing a certain setter.
111
- #
112
- def self.add
113
- plugin = Zen::Plugin::Base.new
114
-
115
- yield plugin
116
-
117
- # Validate the plugin
118
- plugin.validate
119
- plugin.name = plugin.name.to_sym
120
-
121
- Registered[plugin.name] = plugin
122
- end
123
-
124
- ##
125
- # Returns a plugin for the given name.
126
- #
127
- # @example
128
- # Zen::Plugin[:markup]
129
- #
130
- # @author Yorick Peterse
131
- # @since 0.2.4
132
- # @param [String] name The name of the plugin to retrieve.
133
- # @raise Zen::PluginError Error that's raised when no plugins have been
134
- # added yet or the specified plugin doesn't exist.
135
- # @return [Struct] Instance of the plugin.
136
- #
137
- def self.[](name)
138
- name = name.to_sym if name.class != Symbol
139
-
140
- if !Registered[name]
141
- raise(Zen::PluginError, "The plugin #{name} doesn't exist.")
142
- end
143
-
144
- return Registered[name]
145
- end
146
-
147
- ##
148
- # @author Yorick Peterse
149
- # @since 0.2.8
150
- # @see Zen::Plugin::SingletonMethods#plugin
151
- #
152
- def self.plugin(name, *data, &block)
153
- if name.class != Symbol
154
- name = name.to_sym
155
- end
156
-
157
- return ::Zen::Plugin[name].plugin.new(*data, &block).call
158
- end
159
-
160
- #:nodoc:
161
- module SingletonMethods
162
- ##
163
- # Retrieves the given plugin and executes it. All specified parameters
164
- # will be sent to the plugin as well.
165
- #
166
- # @example
167
- # plugin(:settings, :get, :language)
168
- #
169
- # @author Yorick Peterse
170
- # @since 0.2.5
171
- # @param [String/Symbol] name The name of the plugin to call.
172
- # @param [Array] data Any data to pass to the plugin's action (a lambda).
173
- # @param [Proc] block A block that should be passed to the plugin instead
174
- # of this method.
175
- # @return [Mixed]
176
- #
177
- def plugin(name, *data, &block)
178
- ::Zen::Plugin.plugin(name, *data, &block)
179
- end
180
- end # SingletonMethods
181
- end # Plugin
182
- end # Zen
@@ -1,46 +0,0 @@
1
- #:nodoc:
2
- module Zen
3
- #:nodoc:
4
- module Plugin
5
- ##
6
- # Base class used to store the data about plugins such as the name, plugin class, etc.
7
- #
8
- # @author Yorick Peterse
9
- # @since 0.2.5
10
- #
11
- class Base
12
- include ::Zen::Validation
13
-
14
- # The name of the plugin
15
- attr_accessor :name
16
-
17
- # The author of the plugin
18
- attr_accessor :author
19
-
20
- # A small description of the plugin
21
- attr_accessor :about
22
-
23
- # The URL to the plugin's website
24
- attr_accessor :url
25
-
26
- # The class of the plugin
27
- attr_accessor :plugin
28
-
29
- ##
30
- # Validates all the attributes.
31
- #
32
- # @author Yorick Peterse
33
- # @since 0.2.5
34
- #
35
- def validate
36
- validates_presence([:name, :author, :about, :plugin])
37
- validates_format(:name, /[a-z0-9_\-]+/)
38
-
39
- # Check if the theme doesn't exist
40
- if ::Zen::Plugin::Registered.key?(name.to_sym)
41
- raise(::Zen::ValidationError, "The plugin #{name} already exists.")
42
- end
43
- end
44
- end
45
- end
46
- end
@@ -1,47 +0,0 @@
1
- #:nodoc:
2
- module Zen
3
- #:nodoc:
4
- module Plugin
5
- ##
6
- # Module containing various methods that can be used for developing plugins.
7
- #
8
- # @author Yorick Peterse
9
- # @since 0.2.5
10
- #
11
- module Helper
12
-
13
- ##
14
- # Method that can be used to validate the class of a given variable. If the class
15
- # isn't included in the whitelist an error will be triggered explaining the error.
16
- #
17
- # @example
18
- # username = 10
19
- # validate_type(username, :username, [String]) # => TypeError: "\"username\" can only
20
- # be an instance of String but got Integer."
21
- #
22
- # @author Yorick Peterse
23
- # @since 0.2.5
24
- # @param [Mixed] variable The variable to validate.
25
- # @param [Symbol/String] name The name of the variable to validate.
26
- # @param [Array] whitelist Whitelist of the allowed classes.
27
- # @raise TypeError Raised whenever the variable's class wasn't allowed.
28
- #
29
- def validate_type(variable, name, whitelist)
30
- if whitelist.class != Array
31
- whitelist = [whitelist]
32
- end
33
-
34
- name = name.to_s
35
- classes = whitelist.join(' or ').to_s
36
-
37
- if !whitelist.include?(variable.class)
38
- raise(
39
- TypeError,
40
- "\"#{name}\" can only be an instance of #{classes} but got #{variable.class}"
41
- )
42
- end
43
- end
44
-
45
- end
46
- end
47
- end
@@ -1,14 +0,0 @@
1
- # Load our language packs
2
- Zen::Language.options.paths.push(__DIR__('markup'))
3
- Zen::Language.load('markup')
4
-
5
- # Load the actual plugin
6
- require __DIR__('markup/markup')
7
-
8
- # Describe the plugin
9
- Zen::Plugin.add do |plugin|
10
- plugin.name = 'markup'
11
- plugin.author = 'Yorick Peterse'
12
- plugin.about = 'Plugin used for converting various markup formats to HTML.'
13
- plugin.plugin = Zen::Plugin::Markup
14
- end
@@ -1,6 +0,0 @@
1
- ---
2
- engines:
3
- html : 'HTML'
4
- markdown : 'Markdown'
5
- textile : 'Textile'
6
- plain : 'Plain text'
@@ -1,165 +0,0 @@
1
- #:nodoc
2
- module Zen
3
- #:nodoc
4
- module Plugin
5
- ##
6
- # The Markup plugin is used to convert the given markup using the specified
7
- # engine. Out of the box this plugin is capable of doing the following:
8
- #
9
- # * Markdown -> HTML
10
- # * Textile -> HTML
11
- # * HTML -> Plain text (escapes HTML)
12
- # * Regular HTML
13
- #
14
- # When using Markdown you'll have to make sure RDiscount is loaded, for
15
- # Textile this should be RedCloth.
16
- #
17
- # ## Usage
18
- #
19
- # Using this plugin can be done as following::
20
- #
21
- # plugin(:markup, :markdown, "hello **world**")
22
- #
23
- # ## Adding Engines
24
- #
25
- # In order to add a custom markdown engine (e.g. RDoc) you'll have to update
26
- # Zen::Plugin::Markup::Engines so that it includes the name and human
27
- # readable name of the engine you wish to use. This can be done as
28
- # following:
29
- #
30
- # Zen::Plugin::Markup::Engines[:rdoc] => 'RDoc'
31
- #
32
- # Once this is done you'll need to define a method that matches the key
33
- # you've just added. In this case it will be named "rdoc":
34
- #
35
- # module Zen
36
- # module Plugin
37
- # class Markup
38
- # def rdoc(markup)
39
- # # Do something with the markup in the variable "markup"
40
- # end
41
- # end
42
- # end
43
- # end
44
- #
45
- # Once this has been done you're able to convert RDoc markup to HTML using
46
- # this plugin.
47
- #
48
- # @author Yorick Peterse
49
- # @since 0.2.5
50
- #
51
- class Markup
52
- include Ramaze::Helper::CGI
53
-
54
- # Load the language pack in the class method scope rather than the
55
- # instance's scope
56
- class << self
57
- include Zen::Language
58
- end
59
-
60
- ##
61
- # Hash containing the keys of the engines to use and their human friendly
62
- # names (used in the backend). Note that the keys of this hash should be
63
- # strings.
64
- #
65
- # @author Yorick Peterse
66
- # @since 0.2.5
67
- #
68
- Engines = {
69
- 'markdown' => lang('markup.engines.markdown'),
70
- 'textile' => lang('markup.engines.textile'),
71
- 'plain' => lang('markup.engines.plain'),
72
- 'html' => lang('markup.engines.html')
73
- }
74
-
75
- ##
76
- # Creates a new instance of the markup plugin and validates all the given
77
- # parameters.
78
- #
79
- # @author Yorick Peterse
80
- # @since 0.2.5
81
- # @param [Symbol] engine The markup engine to use (e.g. :markdown).
82
- # @param [String] markup The markup to convert to HTML or something else.
83
- #
84
- def initialize(engine = 'markdown', markup = '')
85
- @engine, @markup = engine.to_s, markup
86
-
87
- # Validate the given engine
88
- if !Engines.keys.include?(@engine)
89
- raise(
90
- ArgumentError,
91
- "The markup engine \"#{@engine}\" is invalid."
92
- )
93
- end
94
-
95
- # Does the engine have a matching method?
96
- if !respond_to?(@engine)
97
- raise(
98
- NoMethodError,
99
- "The engine \"#{@engine}\" has no matching method."
100
- )
101
- end
102
- end
103
-
104
- ##
105
- # Converts the markup into HTML or plain text.
106
- #
107
- # @author Yorick Peterse
108
- # @since 0.2.5
109
- # @return [String] The converted markup.
110
- #
111
- def call
112
- return send(@engine, @markup)
113
- end
114
-
115
- ##
116
- # Converts the Markdown markup to HTML using RDiscount.
117
- #
118
- # @author Yorick Peterse
119
- # @since 0.2.5
120
- # @param [String] markup The Markdown string to convert to HTML.
121
- # @return [String] The HTML returned by RDiscount.
122
- #
123
- def markdown(markup)
124
- return RDiscount.new(markup).to_html
125
- end
126
-
127
- ##
128
- # Converts Textile to HTML using RedCloth.
129
- #
130
- # @author Yorick Peterse
131
- # @since 0.2.5
132
- # @param [String] markup The Textile markup to convert to HTML.
133
- # @return [String] The HTML returned by RedCloth.
134
- #
135
- def textile(markup)
136
- return RedCloth.new(markup).to_html
137
- end
138
-
139
- ##
140
- # Escapes all HTML using Ramaze::Helper::CGI.
141
- #
142
- # @author Yorick Peterse
143
- # @since 0.2.5
144
- # @param [String] markup The markup in which all HTML tags should be
145
- # escaped.
146
- # @return [String] String containing the escaped HTML.
147
- #
148
- def plain(markup)
149
- return h(markup)
150
- end
151
-
152
- ##
153
- # Ignores the markup and just returns it.
154
- #
155
- # @author Yorick Peterse
156
- # @since 0.2.5
157
- # @param [String] markup The markup to return.
158
- # @return [String] String containing our markup.
159
- #
160
- def html(markup)
161
- return markup
162
- end
163
- end # Markup
164
- end # Plugin
165
- end # Zen