zen 0.2.8 → 0.3b

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (422) hide show
  1. data/.gems +20 -0
  2. data/.mailmap +3 -2
  3. data/.rvmrc +1 -1
  4. data/.travis.yml +13 -2
  5. data/.yardopts +13 -0
  6. data/AUTHORS +1 -1
  7. data/README.md +115 -77
  8. data/Rakefile +6 -7
  9. data/bin/zen +12 -5
  10. data/guide/_static/categories/categories.png +0 -0
  11. data/guide/_static/categories/category_groups.png +0 -0
  12. data/guide/_static/categories/new_category.png +0 -0
  13. data/guide/_static/categories/new_category_group.png +0 -0
  14. data/guide/_static/comments/comments.png +0 -0
  15. data/guide/_static/comments/edit_comment.png +0 -0
  16. data/guide/_static/custom_fields/custom_field_groups.png +0 -0
  17. data/guide/_static/custom_fields/custom_field_types.png +0 -0
  18. data/guide/_static/custom_fields/custom_fields.png +0 -0
  19. data/guide/_static/custom_fields/edit_custom_field_general.png +0 -0
  20. data/guide/_static/custom_fields/edit_custom_field_group.png +0 -0
  21. data/guide/_static/custom_fields/edit_custom_field_settings.png +0 -0
  22. data/guide/_static/custom_fields/edit_custom_field_type.png +0 -0
  23. data/guide/_static/menus/edit_menu.png +0 -0
  24. data/guide/_static/menus/edit_menu_item.png +0 -0
  25. data/guide/_static/menus/menu_items.png +0 -0
  26. data/guide/_static/menus/menus.png +0 -0
  27. data/guide/_static/sections/edit_entry.png +0 -0
  28. data/guide/_static/sections/edit_entry_categories.png +0 -0
  29. data/guide/_static/sections/edit_entry_general.png +0 -0
  30. data/guide/_static/sections/edit_entry_meta.png +0 -0
  31. data/guide/_static/sections/edit_section_comments.png +0 -0
  32. data/guide/_static/sections/edit_section_general.png +0 -0
  33. data/guide/_static/sections/edit_section_groups.png +0 -0
  34. data/guide/_static/sections/entries.png +0 -0
  35. data/guide/_static/sections/sections.png +0 -0
  36. data/guide/_static/settings/overview_general.png +0 -0
  37. data/guide/_static/settings/overview_security.png +0 -0
  38. data/guide/_static/settings/overview_user.png +0 -0
  39. data/guide/_static/users/edit_user.png +0 -0
  40. data/guide/_static/users/edit_user_group.png +0 -0
  41. data/guide/_static/users/edit_user_group_permissions.png +0 -0
  42. data/guide/_static/users/edit_user_permissions.png +0 -0
  43. data/guide/_static/users/overview.png +0 -0
  44. data/guide/_static/users/user_groups_overview.png +0 -0
  45. data/guide/asset_management.md +117 -0
  46. data/{CHANGELOG.md → guide/changelog.md} +42 -0
  47. data/guide/css/common.css +20 -0
  48. data/guide/getting_started.md +61 -0
  49. data/guide/hacking.md +52 -0
  50. data/guide/installation.md +44 -0
  51. data/guide/javascript.md +352 -0
  52. data/lib/vendor/sequel_sluggable.rb +137 -0
  53. data/lib/yard/tags.rb +13 -0
  54. data/lib/zen.rb +148 -78
  55. data/lib/zen/asset_groups.rb +85 -0
  56. data/lib/zen/bin/create.rb +267 -56
  57. data/lib/zen/bin/default.rb +84 -0
  58. data/lib/zen/controller/admin_controller.rb +1 -82
  59. data/lib/zen/controller/base_controller.rb +9 -5
  60. data/lib/zen/controller/frontend_controller.rb +0 -1
  61. data/lib/zen/controller/main_controller.rb +30 -42
  62. data/lib/zen/controller/preview.rb +9 -8
  63. data/lib/zen/controller/translations.rb +49 -0
  64. data/lib/zen/error.rb +17 -0
  65. data/lib/zen/event.rb +118 -0
  66. data/lib/zen/helper/asset.rb +63 -0
  67. data/lib/zen/helper/breadcrumb.rb +1 -4
  68. data/lib/zen/helper/controller.rb +73 -0
  69. data/lib/zen/helper/locale.rb +42 -0
  70. data/lib/zen/helper/message.rb +0 -3
  71. data/lib/zen/helper/search.rb +54 -0
  72. data/lib/zen/helper/stacked_aspect.rb +249 -0
  73. data/lib/zen/helper/theme.rb +3 -10
  74. data/lib/zen/language.rb +356 -181
  75. data/lib/zen/language/en/zen_general.rb +52 -0
  76. data/lib/zen/language/en/zen_models.rb +19 -0
  77. data/lib/zen/language/nl/zen_general.rb +57 -0
  78. data/lib/zen/language/nl/zen_models.rb +22 -0
  79. data/lib/zen/language/translation.rb +132 -0
  80. data/lib/zen/languages.rb +9 -0
  81. data/lib/zen/layout/admin.xhtml +3 -3
  82. data/lib/zen/layout/login.xhtml +1 -1
  83. data/lib/zen/markup.rb +189 -0
  84. data/lib/zen/model/helper.rb +65 -0
  85. data/lib/zen/model/init.rb +62 -0
  86. data/lib/zen/model/methods.rb +6 -7
  87. data/lib/zen/package.rb +312 -201
  88. data/lib/zen/package/all.rb +4 -3
  89. data/lib/zen/package/categories/lib/categories.rb +29 -41
  90. data/lib/zen/package/categories/lib/categories/controller/categories.rb +185 -130
  91. data/lib/zen/package/categories/lib/categories/controller/category_groups.rb +172 -102
  92. data/lib/zen/package/categories/lib/categories/helper/category.rb +4 -9
  93. data/lib/zen/package/categories/lib/categories/helper/category_frontend.rb +86 -0
  94. data/lib/zen/package/categories/lib/categories/language/en/categories.rb +40 -0
  95. data/lib/zen/package/categories/lib/categories/language/en/category_groups.rb +39 -0
  96. data/lib/zen/package/categories/lib/categories/language/nl/categories.rb +42 -0
  97. data/lib/zen/package/categories/lib/categories/language/nl/category_groups.rb +42 -0
  98. data/lib/zen/package/categories/lib/categories/model/category.rb +21 -25
  99. data/lib/zen/package/categories/lib/categories/model/category_group.rb +21 -15
  100. data/lib/zen/package/categories/lib/categories/view/admin/categories/form.xhtml +25 -26
  101. data/lib/zen/package/categories/lib/categories/view/admin/categories/index.xhtml +24 -24
  102. data/lib/zen/package/categories/lib/categories/view/admin/category-groups/form.xhtml +18 -20
  103. data/lib/zen/package/categories/lib/categories/view/admin/category-groups/index.xhtml +21 -18
  104. data/lib/zen/package/comments/lib/comments.rb +30 -50
  105. data/lib/zen/package/comments/lib/comments/anti_spam.rb +138 -0
  106. data/lib/zen/package/comments/lib/comments/controller/comments.rb +159 -92
  107. data/lib/zen/package/comments/lib/comments/controller/comments_form.rb +122 -34
  108. data/lib/zen/package/comments/lib/comments/helper/comment.rb +0 -3
  109. data/lib/zen/package/comments/lib/comments/helper/comment_frontend.rb +90 -0
  110. data/lib/zen/package/comments/lib/comments/language/en/comments.rb +57 -0
  111. data/lib/zen/package/comments/lib/comments/language/nl/comments.rb +61 -0
  112. data/lib/zen/package/comments/lib/comments/model/comment.rb +147 -49
  113. data/lib/zen/package/comments/lib/comments/model/comment_status.rb +0 -2
  114. data/lib/zen/package/comments/lib/comments/view/admin/comments/form.xhtml +37 -40
  115. data/lib/zen/package/comments/lib/comments/view/admin/comments/index.xhtml +23 -42
  116. data/lib/zen/package/comments/migrations/1308774099_comment_status.rb +12 -4
  117. data/lib/zen/package/comments/migrations/1313851786_remove_defensio_signature.rb +11 -0
  118. data/lib/zen/package/custom_fields/lib/custom_fields.rb +40 -43
  119. data/lib/zen/package/custom_fields/lib/custom_fields/blue_form_parameters.rb +72 -17
  120. data/lib/zen/package/custom_fields/lib/custom_fields/controller/custom_field_groups.rb +154 -118
  121. data/lib/zen/package/custom_fields/lib/custom_fields/controller/custom_field_types.rb +147 -90
  122. data/lib/zen/package/custom_fields/lib/custom_fields/controller/custom_fields.rb +161 -131
  123. data/lib/zen/package/custom_fields/lib/custom_fields/helper/custom_field.rb +4 -9
  124. data/lib/zen/package/custom_fields/lib/custom_fields/language/en/custom_field_groups.rb +42 -0
  125. data/lib/zen/package/custom_fields/lib/custom_fields/language/en/custom_field_types.rb +51 -0
  126. data/lib/zen/package/custom_fields/lib/custom_fields/language/en/custom_fields.rb +60 -0
  127. data/lib/zen/package/custom_fields/lib/custom_fields/language/nl/custom_field_groups.rb +41 -0
  128. data/lib/zen/package/custom_fields/lib/custom_fields/language/nl/custom_field_types.rb +49 -0
  129. data/lib/zen/package/custom_fields/lib/custom_fields/language/nl/custom_fields.rb +61 -0
  130. data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field.rb +18 -23
  131. data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field_group.rb +20 -19
  132. data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field_method.rb +1 -3
  133. data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field_type.rb +19 -9
  134. data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field_value.rb +18 -15
  135. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-groups/form.xhtml +18 -18
  136. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-groups/index.xhtml +30 -24
  137. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-types/form.xhtml +15 -10
  138. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-types/index.xhtml +24 -19
  139. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-fields/form.xhtml +18 -13
  140. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-fields/index.xhtml +30 -20
  141. data/lib/zen/package/extensions/lib/extensions.rb +20 -0
  142. data/lib/zen/package/extensions/lib/extensions/controller/extensions.rb +41 -0
  143. data/lib/zen/package/extensions/lib/extensions/language/en/extensions.rb +23 -0
  144. data/lib/zen/package/extensions/lib/extensions/language/nl/extensions.rb +25 -0
  145. data/lib/zen/package/extensions/lib/extensions/view/admin/extensions/index.xhtml +86 -0
  146. data/lib/zen/package/menu.rb +109 -0
  147. data/lib/zen/package/menus/lib/menus.rb +25 -34
  148. data/lib/zen/package/menus/lib/menus/controller/menu_items.rb +143 -107
  149. data/lib/zen/package/menus/lib/menus/controller/menus.rb +166 -115
  150. data/lib/zen/package/menus/lib/menus/helper/menu.rb +2 -8
  151. data/lib/zen/package/menus/lib/menus/helper/menu_frontend.rb +114 -0
  152. data/lib/zen/package/menus/lib/menus/language/en/menu_items.rb +48 -0
  153. data/lib/zen/package/menus/lib/menus/language/en/menus.rb +48 -0
  154. data/lib/zen/package/menus/lib/menus/language/nl/menu_items.rb +48 -0
  155. data/lib/zen/package/menus/lib/menus/language/nl/menus.rb +50 -0
  156. data/lib/zen/package/menus/lib/menus/model/menu.rb +24 -17
  157. data/lib/zen/package/menus/lib/menus/model/menu_item.rb +37 -13
  158. data/lib/zen/package/menus/lib/menus/view/admin/menu-items/form.xhtml +32 -25
  159. data/lib/zen/package/menus/lib/menus/view/admin/menu-items/index.xhtml +23 -17
  160. data/lib/zen/package/menus/lib/menus/view/admin/menus/form.xhtml +31 -26
  161. data/lib/zen/package/menus/lib/menus/view/admin/menus/index.xhtml +20 -22
  162. data/lib/zen/package/sections/lib/sections.rb +25 -68
  163. data/lib/zen/package/sections/lib/sections/controller/section_entries.rb +178 -138
  164. data/lib/zen/package/sections/lib/sections/controller/sections.rb +173 -140
  165. data/lib/zen/package/sections/lib/sections/helper/section.rb +3 -6
  166. data/lib/zen/package/sections/lib/sections/helper/section_frontend.rb +146 -0
  167. data/lib/zen/package/sections/lib/sections/language/en/section_entries.rb +50 -0
  168. data/lib/zen/package/sections/lib/sections/language/en/sections.rb +55 -0
  169. data/lib/zen/package/sections/lib/sections/language/nl/section_entries.rb +50 -0
  170. data/lib/zen/package/sections/lib/sections/language/nl/sections.rb +55 -0
  171. data/lib/zen/package/sections/lib/sections/model/section.rb +36 -36
  172. data/lib/zen/package/sections/lib/sections/model/section_entry.rb +52 -59
  173. data/lib/zen/package/sections/lib/sections/model/section_entry_status.rb +2 -2
  174. data/lib/zen/package/sections/lib/sections/view/admin/form.xhtml +24 -21
  175. data/lib/zen/package/sections/lib/sections/view/admin/index.xhtml +24 -26
  176. data/lib/zen/package/sections/lib/sections/view/admin/section-entries/form.xhtml +33 -31
  177. data/lib/zen/package/sections/lib/sections/view/admin/section-entries/index.xhtml +24 -25
  178. data/lib/zen/package/sections/migrations/1308672298_use_id_for_default_section.rb +14 -10
  179. data/lib/zen/package/sections/migrations/1308813320_section_entry_statuses.rb +12 -6
  180. data/lib/zen/package/settings/lib/settings.rb +25 -120
  181. data/lib/zen/package/settings/lib/settings/blue_form_parameters.rb +157 -0
  182. data/lib/zen/package/settings/lib/settings/controller/settings.rb +94 -69
  183. data/lib/zen/package/settings/lib/settings/language/en/settings.rb +41 -0
  184. data/lib/zen/package/settings/lib/settings/language/nl/settings.rb +41 -0
  185. data/lib/zen/package/settings/lib/settings/model/setting.rb +0 -2
  186. data/lib/zen/package/settings/lib/settings/setting.rb +379 -0
  187. data/lib/zen/package/settings/lib/settings/setting_groups.rb +11 -0
  188. data/lib/zen/package/settings/lib/settings/settings.rb +83 -0
  189. data/lib/zen/package/settings/lib/settings/settings_group.rb +84 -0
  190. data/lib/zen/package/settings/lib/settings/singleton_methods.rb +35 -0
  191. data/lib/zen/package/settings/lib/settings/view/admin/settings/index.xhtml +15 -57
  192. data/lib/zen/package/settings/migrations/1321197919_remove_unused_columns.rb +17 -0
  193. data/lib/zen/package/users/lib/users.rb +51 -36
  194. data/lib/zen/package/users/lib/users/controller/user_groups.rb +133 -98
  195. data/lib/zen/package/users/lib/users/controller/users.rb +253 -136
  196. data/lib/zen/package/users/lib/users/helper/access.rb +102 -0
  197. data/lib/zen/package/users/lib/users/helper/acl.rb +113 -0
  198. data/lib/zen/package/users/lib/users/helper/users.rb +41 -24
  199. data/lib/zen/package/users/lib/users/language/en/permissions.rb +16 -0
  200. data/lib/zen/package/users/lib/users/language/en/user_groups.rb +39 -0
  201. data/lib/zen/package/users/lib/users/language/en/users.rb +73 -0
  202. data/lib/zen/package/users/lib/users/language/nl/permissions.rb +16 -0
  203. data/lib/zen/package/users/lib/users/language/nl/user_groups.rb +41 -0
  204. data/lib/zen/package/users/lib/users/language/nl/users.rb +74 -0
  205. data/lib/zen/package/users/lib/users/model/permission.rb +28 -0
  206. data/lib/zen/package/users/lib/users/model/user.rb +104 -65
  207. data/lib/zen/package/users/lib/users/model/user_group.rb +28 -24
  208. data/lib/zen/package/users/lib/users/model/user_status.rb +27 -0
  209. data/lib/zen/package/users/lib/users/public/admin/css/users/permissions.css +22 -0
  210. data/lib/zen/package/users/lib/users/public/admin/js/users/permissions.js +33 -0
  211. data/lib/zen/package/users/lib/users/settings.rb +19 -0
  212. data/lib/zen/package/users/lib/users/view/admin/user-groups/form.xhtml +58 -28
  213. data/lib/zen/package/users/lib/users/view/admin/user-groups/index.xhtml +19 -15
  214. data/lib/zen/package/users/lib/users/view/admin/users/form.xhtml +93 -62
  215. data/lib/zen/package/users/lib/users/view/admin/users/index.xhtml +23 -36
  216. data/lib/zen/package/users/lib/users/view/admin/users/login.xhtml +13 -6
  217. data/lib/zen/package/users/lib/users/view/admin/users/permissions.xhtml +33 -0
  218. data/lib/zen/package/users/lib/users/view/admin/users/register.xhtml +52 -0
  219. data/lib/zen/package/users/migrations/1313786058_update_default_date.rb +41 -0
  220. data/lib/zen/package/users/migrations/1316432327_permissions.rb +36 -0
  221. data/lib/zen/package/users/migrations/1320272365_status_ids.rb +67 -0
  222. data/lib/zen/public/admin/css/zen/buttons.css +3 -11
  223. data/lib/zen/public/admin/css/zen/datepicker.css +23 -13
  224. data/lib/zen/public/admin/css/zen/editor.css +6 -14
  225. data/lib/zen/public/admin/css/zen/forms.css +19 -12
  226. data/lib/zen/public/admin/css/zen/general.css +22 -18
  227. data/lib/zen/public/admin/css/zen/grid.css +1 -20
  228. data/lib/zen/public/admin/css/zen/layout.css +26 -11
  229. data/lib/zen/public/admin/css/zen/messages.css +3 -10
  230. data/lib/zen/public/admin/css/zen/reset.css +13 -15
  231. data/lib/zen/public/admin/css/zen/tables.css +8 -10
  232. data/lib/zen/public/admin/css/zen/tabs.css +2 -10
  233. data/lib/zen/public/admin/css/zen/window.css +2 -8
  234. data/lib/zen/public/admin/js/vendor/datepicker.js +540 -240
  235. data/lib/zen/public/admin/js/vendor/mootools/core.js +273 -283
  236. data/lib/zen/public/admin/js/vendor/mootools/more.js +131 -136
  237. data/lib/zen/public/admin/js/zen/index.js +8 -14
  238. data/lib/zen/public/admin/js/zen/lib/editor.js +36 -33
  239. data/lib/zen/public/admin/js/zen/lib/editor/markdown.js +0 -6
  240. data/lib/zen/public/admin/js/zen/lib/editor/textile.js +0 -6
  241. data/lib/zen/public/admin/js/zen/lib/html_table.js +0 -5
  242. data/lib/zen/public/admin/js/zen/lib/tabs.js +22 -79
  243. data/lib/zen/public/admin/js/zen/lib/window.js +12 -22
  244. data/lib/zen/spec/bacon/color_output.rb +1 -1
  245. data/lib/zen/spec/helper.rb +6 -11
  246. data/lib/zen/spec/simplecov.rb +3 -3
  247. data/lib/zen/task.rb +0 -1
  248. data/lib/zen/task/build.rake +46 -26
  249. data/lib/zen/task/clean.rake +14 -7
  250. data/lib/zen/task/db.rake +31 -29
  251. data/lib/zen/task/package.rake +19 -23
  252. data/lib/zen/task/proto.rake +3 -5
  253. data/lib/zen/task/setup.rake +4 -0
  254. data/lib/zen/task/test.rake +31 -6
  255. data/lib/zen/task/theme.rake +13 -19
  256. data/lib/zen/theme.rb +377 -52
  257. data/lib/zen/validation.rb +22 -30
  258. data/lib/zen/version.rb +1 -2
  259. data/lib/zen/view/bottom.xhtml +9 -1
  260. data/lib/zen/view/head.xhtml +1 -1
  261. data/lib/zen/view/main.xhtml +1 -1
  262. data/lib/zen/view/search.xhtml +9 -0
  263. data/proto/app/Rakefile +0 -1
  264. data/proto/app/app.rb +21 -16
  265. data/proto/app/config/config.rb.erb +41 -0
  266. data/proto/app/config/{database.rb → database.rb.erb} +17 -14
  267. data/proto/app/config/middlewares.rb +1 -1
  268. data/proto/app/theme/default/index.xhtml +25 -0
  269. data/proto/app/theme/theme.rb +19 -0
  270. data/proto/app/{log/database/dev → tmp}/.gitkeep +0 -0
  271. data/proto/migration.rb +3 -5
  272. data/proto/rack/thin.yml +41 -0
  273. data/proto/rack/unicorn.rb +38 -0
  274. data/spec/Rakefile +15 -11
  275. data/spec/fixtures/zen/helper/controller.rb +13 -0
  276. data/spec/fixtures/zen/helper/locale.rb +7 -0
  277. data/spec/fixtures/zen/helper/message.rb +0 -4
  278. data/spec/fixtures/zen/language.rb +31 -0
  279. data/spec/fixtures/zen/language/en/spec.rb +11 -0
  280. data/spec/fixtures/zen/language/nl/spec.rb +11 -0
  281. data/spec/fixtures/zen/package.rb +0 -10
  282. data/spec/fixtures/zen/package/categories/helper/category_frontend.rb +16 -0
  283. data/spec/fixtures/zen/package/comments/helper/comment_frontend.rb +16 -0
  284. data/spec/fixtures/zen/package/sections/helper/section_frontend.rb +16 -0
  285. data/spec/fixtures/zen/package/settings/controller/settings.rb +17 -0
  286. data/spec/fixtures/zen/package/users/helper/access.rb +18 -0
  287. data/spec/fixtures/zen/package/users/helper/acl.rb +23 -0
  288. data/spec/fixtures/zen/theme/{default-section → default}/index.xhtml +0 -0
  289. data/spec/helper.rb +12 -27
  290. data/{proto/app/log/database/live → spec/public}/.gitkeep +0 -0
  291. data/spec/zen/controller/admin_controller.rb +5 -6
  292. data/spec/zen/controller/main_controller.rb +29 -35
  293. data/spec/zen/controller/preview.rb +9 -10
  294. data/spec/zen/event.rb +44 -0
  295. data/spec/zen/helper/breadcrumb.rb +4 -5
  296. data/spec/zen/helper/controller.rb +21 -0
  297. data/spec/zen/helper/locale.rb +25 -0
  298. data/spec/zen/helper/message.rb +4 -11
  299. data/spec/zen/helper/theme.rb +11 -14
  300. data/spec/zen/language.rb +48 -22
  301. data/spec/zen/markup.rb +39 -0
  302. data/spec/zen/package.rb +48 -11
  303. data/spec/zen/package/categories/controller/categories.rb +99 -45
  304. data/spec/zen/package/categories/controller/category_groups.rb +109 -33
  305. data/spec/zen/package/categories/helper/category.rb +19 -32
  306. data/spec/zen/package/categories/helper/category_frontend.rb +61 -0
  307. data/spec/zen/package/comments/anti_spam.rb +50 -0
  308. data/spec/zen/package/comments/controller/comments.rb +121 -61
  309. data/spec/zen/package/comments/controller/comments_form.rb +120 -94
  310. data/spec/zen/package/comments/helper/comment.rb +13 -13
  311. data/spec/zen/package/comments/helper/comment_frontend.rb +92 -0
  312. data/spec/zen/package/custom_fields/blue_form_parameters.rb +50 -50
  313. data/spec/zen/package/custom_fields/controller/custom_field_groups.rb +135 -43
  314. data/spec/zen/package/custom_fields/controller/custom_field_types.rb +153 -48
  315. data/spec/zen/package/custom_fields/controller/custom_fields.rb +130 -51
  316. data/spec/zen/package/custom_fields/helper/custom_field.rb +8 -8
  317. data/spec/zen/package/extensions/controller/extensions.rb +38 -0
  318. data/spec/zen/package/menus/controller/menu_items.rb +121 -42
  319. data/spec/zen/package/menus/controller/menus.rb +125 -38
  320. data/spec/zen/package/menus/helper/menu.rb +26 -26
  321. data/spec/zen/package/menus/helper/menu_frontend.rb +104 -0
  322. data/spec/zen/package/sections/controller/section_entries.rb +145 -89
  323. data/spec/zen/package/sections/controller/sections.rb +130 -35
  324. data/spec/zen/package/sections/helper/section.rb +27 -38
  325. data/spec/zen/package/sections/helper/section_frontend.rb +160 -0
  326. data/spec/zen/package/settings/controller/settings.rb +73 -8
  327. data/spec/zen/package/settings/settings.rb +119 -0
  328. data/spec/zen/package/users/controller/user_groups.rb +134 -34
  329. data/spec/zen/package/users/controller/users.rb +189 -44
  330. data/spec/zen/package/users/helper/access.rb +29 -0
  331. data/spec/zen/package/users/helper/acl.rb +46 -0
  332. data/spec/zen/package/users/helper/users.rb +20 -64
  333. data/spec/zen/theme.rb +7 -9
  334. data/spec/zen/validation.rb +1 -2
  335. data/zen.gemspec +25 -22
  336. metadata +303 -222
  337. data/lib/zen/asset.rb +0 -292
  338. data/lib/zen/bin/runner.rb +0 -118
  339. data/lib/zen/error/language_error.rb +0 -10
  340. data/lib/zen/error/package_error.rb +0 -10
  341. data/lib/zen/error/plugin_error.rb +0 -10
  342. data/lib/zen/error/theme_error.rb +0 -10
  343. data/lib/zen/error/validation_error.rb +0 -10
  344. data/lib/zen/helper/acl.rb +0 -182
  345. data/lib/zen/helper/blue_form_vendor.rb +0 -689
  346. data/lib/zen/language/en/zen_general.yml +0 -25
  347. data/lib/zen/language/en/zen_models.yml +0 -13
  348. data/lib/zen/language/nl/zen_general.yml +0 -25
  349. data/lib/zen/language/nl/zen_models.yml +0 -13
  350. data/lib/zen/model/settings.rb +0 -78
  351. data/lib/zen/package/base.rb +0 -62
  352. data/lib/zen/package/categories/lib/categories/language/en/categories.yml +0 -36
  353. data/lib/zen/package/categories/lib/categories/language/en/category_groups.yml +0 -34
  354. data/lib/zen/package/categories/lib/categories/language/nl/categories.yml +0 -40
  355. data/lib/zen/package/categories/lib/categories/language/nl/category_groups.yml +0 -34
  356. data/lib/zen/package/categories/lib/categories/plugin/categories.rb +0 -141
  357. data/lib/zen/package/comments/lib/comments/language/en/comments.yml +0 -48
  358. data/lib/zen/package/comments/lib/comments/language/nl/comments.yml +0 -50
  359. data/lib/zen/package/comments/lib/comments/plugin/anti_spam.rb +0 -156
  360. data/lib/zen/package/comments/lib/comments/plugin/comments.rb +0 -115
  361. data/lib/zen/package/custom_fields/lib/custom_fields/language/en/custom_field_groups.yml +0 -33
  362. data/lib/zen/package/custom_fields/lib/custom_fields/language/en/custom_field_types.yml +0 -40
  363. data/lib/zen/package/custom_fields/lib/custom_fields/language/en/custom_fields.yml +0 -54
  364. data/lib/zen/package/custom_fields/lib/custom_fields/language/nl/custom_field_groups.yml +0 -33
  365. data/lib/zen/package/custom_fields/lib/custom_fields/language/nl/custom_field_types.yml +0 -40
  366. data/lib/zen/package/custom_fields/lib/custom_fields/language/nl/custom_fields.yml +0 -54
  367. data/lib/zen/package/menus/lib/menus/language/en/menu_items.yml +0 -41
  368. data/lib/zen/package/menus/lib/menus/language/en/menus.yml +0 -40
  369. data/lib/zen/package/menus/lib/menus/language/nl/menu_items.yml +0 -41
  370. data/lib/zen/package/menus/lib/menus/language/nl/menus.yml +0 -40
  371. data/lib/zen/package/menus/lib/menus/plugin/menus.rb +0 -152
  372. data/lib/zen/package/sections/lib/sections/language/en/section_entries.yml +0 -44
  373. data/lib/zen/package/sections/lib/sections/language/en/sections.yml +0 -48
  374. data/lib/zen/package/sections/lib/sections/language/nl/section_entries.yml +0 -44
  375. data/lib/zen/package/sections/lib/sections/language/nl/sections.yml +0 -48
  376. data/lib/zen/package/sections/lib/sections/plugin/section_entries.rb +0 -244
  377. data/lib/zen/package/sections/lib/sections/plugin/sections.rb +0 -87
  378. data/lib/zen/package/settings/lib/settings/language/en/settings.yml +0 -36
  379. data/lib/zen/package/settings/lib/settings/language/nl/settings.yml +0 -37
  380. data/lib/zen/package/settings/lib/settings/plugin/group_base.rb +0 -39
  381. data/lib/zen/package/settings/lib/settings/plugin/setting_base.rb +0 -133
  382. data/lib/zen/package/settings/lib/settings/plugin/settings.rb +0 -251
  383. data/lib/zen/package/users/lib/users/controller/access_rules.rb +0 -284
  384. data/lib/zen/package/users/lib/users/language/en/access_rules.yml +0 -38
  385. data/lib/zen/package/users/lib/users/language/en/user_groups.yml +0 -32
  386. data/lib/zen/package/users/lib/users/language/en/users.yml +0 -57
  387. data/lib/zen/package/users/lib/users/language/nl/access_rules.yml +0 -38
  388. data/lib/zen/package/users/lib/users/language/nl/user_groups.yml +0 -32
  389. data/lib/zen/package/users/lib/users/language/nl/users.yml +0 -57
  390. data/lib/zen/package/users/lib/users/model/access_rule.rb +0 -42
  391. data/lib/zen/package/users/lib/users/public/admin/js/users/access_rules.js +0 -65
  392. data/lib/zen/package/users/lib/users/public/admin/js/users/lib/access_rules.js +0 -49
  393. data/lib/zen/package/users/lib/users/view/admin/access-rules/form.xhtml +0 -120
  394. data/lib/zen/package/users/lib/users/view/admin/access-rules/index.xhtml +0 -102
  395. data/lib/zen/plugin.rb +0 -182
  396. data/lib/zen/plugin/base.rb +0 -46
  397. data/lib/zen/plugin/helper.rb +0 -47
  398. data/lib/zen/plugin/markup/lib/markup.rb +0 -14
  399. data/lib/zen/plugin/markup/lib/markup/language/en/markup.yml +0 -6
  400. data/lib/zen/plugin/markup/lib/markup/markup.rb +0 -165
  401. data/lib/zen/public/admin/js/zen/lib/asset.js +0 -111
  402. data/lib/zen/task/plugin.rake +0 -18
  403. data/lib/zen/theme/base.rb +0 -65
  404. data/proto/app/config/config.rb +0 -18
  405. data/spec/fixtures/zen/language/en/spec.yml +0 -10
  406. data/spec/fixtures/zen/language/nl/spec.yml +0 -7
  407. data/spec/fixtures/zen/package/settings/plugin/settings.rb +0 -20
  408. data/spec/zen/asset.rb +0 -97
  409. data/spec/zen/bin/create.rb +0 -89
  410. data/spec/zen/bin/runner.rb +0 -47
  411. data/spec/zen/helper/acl.rb +0 -149
  412. data/spec/zen/package/categories/plugin/categories.rb +0 -92
  413. data/spec/zen/package/comments/plugin/anti_spam.rb +0 -59
  414. data/spec/zen/package/comments/plugin/comments.rb +0 -107
  415. data/spec/zen/package/menus/plugin/menus.rb +0 -120
  416. data/spec/zen/package/sections/plugin/section_entries.rb +0 -161
  417. data/spec/zen/package/sections/plugin/sections.rb +0 -75
  418. data/spec/zen/package/settings/plugin/settings.rb +0 -33
  419. data/spec/zen/package/users/controller/access_rules.rb +0 -90
  420. data/spec/zen/plugin.rb +0 -64
  421. data/spec/zen/plugin/helper.rb +0 -11
  422. data/spec/zen/plugin/markup.rb +0 -44
@@ -0,0 +1,52 @@
1
+ Zen::Language::Translation.add do |trans|
2
+ trans.language = 'en'
3
+ trans.name = 'zen_general'
4
+
5
+ trans.translate do |t|
6
+ t['labels.powered_by'] = 'Powered by'
7
+ t['labels.view_website'] = 'View website'
8
+ t['labels.logout'] = 'Logout'
9
+ t['labels.profile'] = 'Profile'
10
+
11
+ t['errors.csrf'] = 'The specified request can not be executed without a ' \
12
+ 'valid CSRF token.'
13
+
14
+ t['errors.not_authorized'] = 'You are not authorized to access that page.'
15
+ t['errors.no_templates'] = 'No templates were found for the given action.'
16
+ t['errors.no_theme'] = 'No theme has been specified.'
17
+ t['errors.invalid_request'] = 'The request could not be executed as the ' \
18
+ 'specified data is incorrect.'
19
+
20
+ t['errors.require_login'] = 'You need to be logged in in order to view ' \
21
+ 'that page.'
22
+
23
+ t['errors.invalid_search'] = 'The specified search query is invalid.'
24
+
25
+ t['descriptions.search'] = 'Search keywords'
26
+
27
+ t['buttons.bold'] = 'Bold'
28
+ t['buttons.italic'] = 'Italic'
29
+ t['buttons.link'] = 'Link'
30
+ t['buttons.ul'] = 'Unordered list'
31
+ t['buttons.ol'] = 'Ordered list'
32
+ t['buttons.preview'] = 'Preview'
33
+ t['buttons.close'] = 'Close'
34
+ t['buttons.search'] = 'Search'
35
+
36
+ t['datepicker.select_a_time'] = 'Select a time'
37
+ t['datepicker.use_mouse_wheel'] = 'Use the mouse wheel to quickly change ' \
38
+ 'the value'
39
+ t['datepicker.time_confirm_button'] = 'Ok'
40
+ t['datepicker.apply_range'] = 'Ok'
41
+ t['datepicker.cancel'] = 'Cancel'
42
+ t['datepicker.week'] = 'W'
43
+
44
+ t['special.boolean_hash.true'] = 'Yes'
45
+ t['special.boolean_hash.false'] = 'No'
46
+
47
+ t['markup.html'] = 'HTML'
48
+ t['markup.textile'] = 'Textile'
49
+ t['markup.markdown'] = 'Markdown'
50
+ t['markup.plain'] = 'Plain'
51
+ end
52
+ end
@@ -0,0 +1,19 @@
1
+ Zen::Language::Translation.add do |trans|
2
+ trans.language = 'en'
3
+ trans.name = 'zen_models'
4
+
5
+ trans.translate do |t|
6
+ t['exact_length'] = 'This field is not exactly %s characters long.'
7
+ t['format'] = "This field's format is invalid."
8
+ t['includes'] = "This field's value is not in the range or set of %s."
9
+ t['integer'] = "This field's value is not an integer."
10
+ t['length_range'] = "This field's value is either too long or too short."
11
+ t['max_length'] = "This field's value may not be longer than %s characters."
12
+ t['min_length'] = "This field's value may not be shorter than %s characters."
13
+ t['not_string'] = "This field's value is not a string."
14
+ t['numeric'] = "This field's value is not numeric."
15
+ t['type'] = "This field's value is not a %s."
16
+ t['presence'] = "This field's value is required."
17
+ t['unique'] = "This field's value is already taken."
18
+ end
19
+ end
@@ -0,0 +1,57 @@
1
+ Zen::Language::Translation.add do |trans|
2
+ trans.language = 'nl'
3
+ trans.name = 'zen_general'
4
+
5
+ trans.translate do |t|
6
+ t['labels.powered_by'] = 'Aangedreven door'
7
+ t['labels.view_website'] = 'Bekijk website'
8
+ t['labels.logout'] = 'Log uit'
9
+ t['labels.profile'] = 'Profiel'
10
+
11
+ t['errors.csrf'] = 'De actie kon niet worden uitgevoerd zonder een geldige ' \
12
+ 'CSRF token.'
13
+
14
+ t['errors.not_authorized'] = 'U bent niet toegestaan om de opgevraagde ' \
15
+ 'pagina te bekijken.'
16
+
17
+ t['errors.no_templates'] = 'Er konden geen templates worden gevonden voor ' \
18
+ 'huidige actie.'
19
+
20
+ t['errors.no_theme'] = 'Er is geen thema ingesteld.'
21
+ t['errors.invalid_request'] = 'De actie kon niet worden uitgevoerd omdat ' \
22
+ 'de data onjuist is.'
23
+
24
+ t['errors.require_login'] = 'U moet ingelogd zijn om de opgevraagde pagina ' \
25
+ 'te kunnen bekijken.'
26
+
27
+ t['errors.invalid_search'] = 'De opgegeven zoek actie is ongeldig.'
28
+
29
+ t['descriptions.search'] = 'Zoektermen'
30
+
31
+ t['buttons.bold'] = 'Vet'
32
+ t['buttons.italic'] = 'Cursief'
33
+ t['buttons.link'] = 'Hyperlink'
34
+ t['buttons.ul'] = 'Ongesorteerde lijst'
35
+ t['buttons.ol'] = 'Gesorteerde lijst'
36
+ t['buttons.preview'] = 'Voorbeeld'
37
+ t['buttons.close'] = 'Sluiten'
38
+ t['buttons.search'] = 'Zoeken'
39
+
40
+ t['datepicker.select_a_time'] = 'Selecteer een tijd'
41
+ t['datepicker.use_mouse_wheel'] = 'Gebruik het muis wiel om een waarde te ' \
42
+ 'selecteren'
43
+
44
+ t['datepicker.time_confirm_button'] = 'Ok'
45
+ t['datepicker.apply_range'] = 'Ok'
46
+ t['datepicker.cancel'] = 'Annuleren'
47
+ t['datepicker.week'] = 'W'
48
+
49
+ t['special.boolean_hash.true'] = 'Ja'
50
+ t['special.boolean_hash.false'] = 'Nee'
51
+
52
+ t['markup.html'] = 'HTML'
53
+ t['markup.markdown'] = 'Markdown'
54
+ t['markup.textile'] = 'Textile'
55
+ t['markup.plain'] = 'Platte tekst'
56
+ end
57
+ end
@@ -0,0 +1,22 @@
1
+ Zen::Language::Translation.add do |trans|
2
+ trans.language = 'nl'
3
+ trans.name = 'zen_models'
4
+
5
+ trans.translate do |t|
6
+ t['exact_length'] = 'Dit veld bevat niet exact %s karakters.'
7
+ t['format'] = 'Het formaat van de waarde van dit veld is onjuist.'
8
+ t['includes'] = 'De waarde van dit veld is niet binnen het bereik '\
9
+ 'van %s.'
10
+ t['integer'] = 'De waarde van dit veld is niet numeriek.'
11
+ t['length_range'] = 'De waarde van dit veld is te lang of te kort.'
12
+ t['max_length'] = 'De waarde van dit veld mag niet langer zijn dan ' \
13
+ '%s karakters.'
14
+ t['min_length'] = 'De waarde van dit veld mag niet korter zijn dan ' \
15
+ '%s karakters.'
16
+ t['not_string'] = 'De waarde van dit veld is geen tekst.'
17
+ t['numeric'] = 'De waarde van dit veld is niet numeriek.'
18
+ t['type'] = 'De waarde van dit veld is niet het type %s.'
19
+ t['presence'] = 'Dit veld is vereist.'
20
+ t['unique'] = 'De waarde van dit veld is al in gebruik.'
21
+ end
22
+ end
@@ -0,0 +1,132 @@
1
+ module Zen
2
+ class Language
3
+ ##
4
+ # Class used to specify all the translations in a language file/pack. In
5
+ # order to add a translation you need to specify the language, the name of
6
+ # the collection and a bunch of strings to translate. This is done as
7
+ # following:
8
+ #
9
+ # Zen::Language::Translation.add do |trans|
10
+ # trans.language = 'en'
11
+ # trans.name = 'users'
12
+ #
13
+ # trans.translate do |t|
14
+ # t['titles.index'] = 'Users'
15
+ # end
16
+ # end
17
+ #
18
+ # For more general and expanded information see {Zen::Language}.
19
+ #
20
+ # @since 16-11-2011
21
+ #
22
+ class Translation
23
+ include Zen::Validation
24
+
25
+ # A regex that specifies the allowed format of language keys.
26
+ KEY_REGEX = /^[a-z_\.]+$/
27
+
28
+ # The name of the language this set of translations belongs to.
29
+ attr_reader :language
30
+
31
+ # The name of the set of translations.
32
+ attr_reader :name
33
+
34
+ # A block containing all the translations for the language file.
35
+ attr_accessor :translations
36
+
37
+ ##
38
+ # Adds a new translation set.
39
+ #
40
+ # @since 16-11-2011
41
+ # @yield Zen::Language::Translation
42
+ #
43
+ def self.add
44
+ trans = new
45
+
46
+ yield(trans)
47
+
48
+ trans.validate
49
+
50
+ REGISTERED[trans.language].collections[trans.name] = trans
51
+ end
52
+
53
+ ##
54
+ # Sets the language for the collection of translations.
55
+ #
56
+ # @since 16-11-2011
57
+ # @param [#to_s] language The language code.
58
+ # @raise Zen::ValidationError Raised whenever a given language is invalid.
59
+ #
60
+ def language=(language)
61
+ @language = language.is_a?(String) ? language : language.to_s
62
+ end
63
+
64
+ ##
65
+ # Stores the supplied block containing all translations in
66
+ # ``@translations``.
67
+ #
68
+ # @since 17-11-2011
69
+ # @param [Proc] block A block containing all calls to ``#[]=()``.
70
+ #
71
+ def translate(&block)
72
+ @translations = block
73
+ end
74
+
75
+ ##
76
+ # Loads the translations by invoking the block that was set using
77
+ # {#translate}.
78
+ #
79
+ # @since 17-11-2011
80
+ #
81
+ def load
82
+ @translations.call(self)
83
+ end
84
+
85
+ ##
86
+ # Sets the name of the collection of translations.
87
+ #
88
+ # @since 16-11-2011
89
+ # @param [#to_s] name The name of the collection.
90
+ #
91
+ def name=(name)
92
+ @name = name.is_a?(String) ? name : name.to_s
93
+ end
94
+
95
+ ##
96
+ # Adds a new translation by directly storing it in the cache
97
+ # ``Ramaze::Cache.translations``.
98
+ #
99
+ # @since 16-11-2011
100
+ # @param [#to_s] key The name of the language item, an example is
101
+ # "titles.index".
102
+ # @param [#to_s] value The value of the language item.
103
+ #
104
+ def []=(key, value)
105
+ unless key =~ KEY_REGEX
106
+ raise(
107
+ Zen::LanguageError,
108
+ "The format of the language key \"#{key}\" is invalid"
109
+ )
110
+ end
111
+
112
+ Ramaze::Cache.translations.store([language, name, key].join('.'), value)
113
+ end
114
+
115
+ ##
116
+ # Validates the instance.
117
+ #
118
+ # @since 17-11-2011
119
+ #
120
+ def validate
121
+ validates_presence([:name, :name, :translations])
122
+
123
+ unless Zen::Language::REGISTERED.key?(language)
124
+ raise(
125
+ Zen::ValidationError,
126
+ "The language \"#{language}\" doesn't exist"
127
+ )
128
+ end
129
+ end
130
+ end # Translation
131
+ end # Language
132
+ end # Zen
@@ -0,0 +1,9 @@
1
+ Zen::Language.add do |lang|
2
+ lang.name = 'en'
3
+ lang.title = 'English'
4
+ end
5
+
6
+ Zen::Language.add do |lang|
7
+ lang.name = 'nl'
8
+ lang.title = 'Nederlands'
9
+ end
@@ -1,5 +1,5 @@
1
1
  <!DOCTYPE html>
2
- <html lang="#{plugin(:settings, :get, :language).value}">
2
+ #{Zen::Language.html_head}
3
3
  <head>
4
4
  #{render_file(__DIR__('../view/head.xhtml'))}
5
5
  </head>
@@ -8,7 +8,7 @@
8
8
  <div id="top">
9
9
  <header class="container">
10
10
  <nav id="main_nav" class="grid_12">
11
- #{Zen::Package.build_menu("left", extension_permissions)}
11
+ #{Zen::Package.build_menu('left', session[:permissions])}
12
12
 
13
13
  <ul class="right clearfix">
14
14
  <li>
@@ -17,7 +17,7 @@
17
17
  </a>
18
18
  </li>
19
19
  <li>
20
- <a href="/admin/users/edit/#{session[:user].id}">
20
+ <a href="/admin/users/edit/#{user.id}">
21
21
  #{lang('zen_general.labels.profile')}
22
22
  </a>
23
23
  </li>
@@ -1,5 +1,5 @@
1
1
  <!DOCTYPE html>
2
- <html lang="#{plugin(:settings, :get, :language).value}">
2
+ #{Zen::Language.html_head}
3
3
  <head>
4
4
  #{render_file(__DIR__('../view/head.xhtml'))}
5
5
  </head>
data/lib/zen/markup.rb ADDED
@@ -0,0 +1,189 @@
1
+ module Zen
2
+ ##
3
+ # {Zen::Markup} is a module that makes it easy to convert markup from one
4
+ # format to another. It can be used to generate HTML using Markdown and
5
+ # Textile or to escape HTML using ``Ramaze::Helper::CGI``.
6
+ #
7
+ # Using this module is quite easy, simply call the ``.convert`` method of and
8
+ # pass the name of the markup engine you'd like to use to it along with some
9
+ # markup. For example, to convert Markdown to HTML you'd call the following:
10
+ #
11
+ # html = Zen::Markup.convert(:markdown, 'Hello **world**')
12
+ #
13
+ # When converting Markdown or Textile Zen will automatically install the
14
+ # required gems. For Markdown RDiscount is used, for Textile RedCloth is used.
15
+ #
16
+ # You may be tempted to call the various methods directly but it is not
17
+ # recommended to do so. For example, you might have the following code:
18
+ #
19
+ # # Taken from an HTML form
20
+ # engine = 'markdown'
21
+ # markup = '...'
22
+ # html = Zen::Markdown.send(engine, markup)
23
+ #
24
+ # This however makes it possible to do some serious damage. Consider the
25
+ # following:
26
+ #
27
+ # engine = 'instance_eval'
28
+ # markup = 'eval("....")'
29
+ # html = Zen::Markdown.send(engine, markup)
30
+ #
31
+ # Because of this you should use {Zen::Markup.convert} instead as this method
32
+ # will verify the engine name before calling the method for it.
33
+ #
34
+ # ## Adding Markup Engines
35
+ #
36
+ # Adding a new engine is relatively easy and is done in two steps. First you
37
+ # should add the name of your engine and it's label to
38
+ # {Zen::Markup::REGISTERED}. The keys of this hash should be the methods to
39
+ # call, teh values will be displayed in various ``<select>`` elements in the
40
+ # administration interface.
41
+ #
42
+ # Zen::Markup::REGISTERED['my_markup'] = 'My Markup'
43
+ #
44
+ # In this example the label is hardcoded but it's recommended to use
45
+ # {Zen::Language.lang} instead.
46
+ #
47
+ # Once the engine has been added to the list you'll have to add a
48
+ # corresponding method. This can be done as following:
49
+ #
50
+ # module Zen
51
+ # module Markup
52
+ # private
53
+ #
54
+ # def self.my_markup(markup)
55
+ #
56
+ # end
57
+ # end
58
+ # end
59
+ #
60
+ # Each markup method should be a class method and should take a single
61
+ # parameter. This parameter will contain the markup to convert. The return
62
+ # value of these methods should be the converted markup:
63
+ #
64
+ # module Zen
65
+ # module Markup
66
+ # private
67
+ #
68
+ # def self.my_markup(markup)
69
+ # return markup.upcase
70
+ # end
71
+ # end
72
+ # end
73
+ #
74
+ # @since 0.2.5
75
+ #
76
+ module Markup
77
+ # Hash containing all the markup engines and their names as they'll be
78
+ # displayed in the backend.
79
+ REGISTERED = {
80
+ 'markdown' => 'zen_general.markup.markdown',
81
+ 'textile' => 'zen_general.markup.textile',
82
+ 'plain' => 'zen_general.markup.plain',
83
+ 'html' => 'zen_general.markup.html'
84
+ }
85
+
86
+ class << self
87
+ include ::Ramaze::Helper::CGI
88
+
89
+ ##
90
+ # Returns a hash containing the available markup engines and their labels
91
+ # for the current language.
92
+ #
93
+ # @since 15-11-2011
94
+ # @return [Hash]
95
+ #
96
+ def to_hash
97
+ hash = {}
98
+
99
+ REGISTERED.each { |k, v| hash[k] = lang(v) }
100
+
101
+ return hash
102
+ end
103
+
104
+ ##
105
+ # Converts markup using the specified markup engine.
106
+ #
107
+ # @example
108
+ # Zen::Markup.conver(:markdown, 'Hello **world**')
109
+ #
110
+ # @since 0.3
111
+ # @param [#to_s] engine The markup engine to use.
112
+ # @param [String] markup The markup to convert.
113
+ # @return [String]
114
+ #
115
+ def convert(engine, markup)
116
+ unless REGISTERED.keys.include?(engine.to_s)
117
+ raise(ArgumentError, "The specified engine \"#{engine}\" is invalid")
118
+ end
119
+
120
+ return send(engine, markup)
121
+ end
122
+
123
+ private
124
+
125
+ ##
126
+ # Converts the Markdown markup to HTML using RDiscount.
127
+ #
128
+ # @example
129
+ # Zen::Markup.markdown('Hello **world**')
130
+ #
131
+ # @since 0.2.5
132
+ # @param [String] markup The Markdown string to convert to HTML.
133
+ # @return [String] The HTML returned by RDiscount.
134
+ #
135
+ def markdown(markup)
136
+ unless Kernel.const_defined?(:RDiscount)
137
+ Ramaze.setup(:verbose => false) do
138
+ gem 'rdiscount'
139
+ end
140
+ end
141
+
142
+ return RDiscount.new(markup).to_html
143
+ end
144
+
145
+ ##
146
+ # Converts Textile to HTML using RedCloth.
147
+ #
148
+ # @example
149
+ # Zen::Markup.textile('Hello *world*')
150
+ #
151
+ # @since 0.2.5
152
+ # @param [String] markup The Textile markup to convert to HTML.
153
+ # @return [String] The HTML returned by RedCloth.
154
+ #
155
+ def textile(markup)
156
+ unless Kernel.const_defined?(:RedCloth)
157
+ Ramaze.setup(:verbose => false) do
158
+ gem 'RedCloth', :lib => 'redcloth'
159
+ end
160
+ end
161
+
162
+ return RedCloth.new(markup).to_html
163
+ end
164
+
165
+ ##
166
+ # Escapes all HTML using Ramaze::Helper::CGI.
167
+ #
168
+ # @since 0.2.5
169
+ # @param [String] markup The markup in which all HTML tags should be
170
+ # escaped.
171
+ # @return [String] String containing the escaped HTML.
172
+ #
173
+ def plain(markup)
174
+ return h(markup)
175
+ end
176
+
177
+ ##
178
+ # Ignores the markup and just returns it.
179
+ #
180
+ # @since 0.2.5
181
+ # @param [String] markup The markup to return.
182
+ # @return [String] String containing our markup.
183
+ #
184
+ def html(markup)
185
+ return markup
186
+ end
187
+ end # class << self
188
+ end # Markup
189
+ end # Zen