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,3 +1,45 @@
1
+ # Changelog
2
+
3
+ ## Git Head
4
+
5
+ * Started using checkboxes in favor of select boxes as they're easier to use.
6
+ * Fixed a small issue that would make it impossible to add/update categories of
7
+ a section entry.
8
+ * Core packages no longer include certain modules just to so that they don't
9
+ have to specify the full namespace to a class.
10
+ * Added an event system (Zen::Event) and a bucket load of events.
11
+ * Merged Zen.init and Zen.post_init into Zen.start.
12
+ * Fixed various YARD formatting issues.
13
+ * Localized all of the Javascript.
14
+ * All specs now pass on Ruby 1.9.3.
15
+ * Made it easier to format dates and do other locale based actions using
16
+ Ramaze::Helper::Locale.
17
+ * Dropped Zen::Asset in favor of Ramaze::Asset.
18
+ * Updated Mootools Core and Mootools More to version 1.4.
19
+ * Fixed an issue related to creating users without passwords.
20
+ * New API for Zen::Package.
21
+ * ACL system has been re-written from scratch.
22
+ * Merged Zen::Theme::Base with Zen::Theme and Zen::Plugin::Base with
23
+ Zen::Plugin.
24
+ * Sections are no longer directly related to template groups.
25
+ * Added a package that displays the installed languages, packages and themes.
26
+ * New API for Zen::Language.
27
+ * Removed Zen::Plugin.
28
+ * Improved settings API.
29
+ * Visitors can now register an account (or not) based on a setting.
30
+ * Vendorized Ramaze::Helper::StackedAspect from Ramaze Git.
31
+ * Added a helper for allowing users to access admin URLs.
32
+ * User statuses are now stored as IDs instead of plain text.
33
+ * Full support for PostgreSQL.
34
+ * Zen now requires Ramaze >= 2011.10.23.
35
+ * Content in the admin panel can now be searched using regular expressions (not
36
+ supported in SQLite3) or LIKE statements (used in case of SQLite3).
37
+ * New documentation based on YARD instead of Sphinx.
38
+ * Vendorized the Sequel sluggable plugin.
39
+ * Fixed an issue that would cause comments to be displayed regardless of their
40
+ status.
41
+ * Lots of small fixes, improvements, etc.
42
+
1
43
  ## 0.2.8 - August 3, 2011
2
44
 
3
45
  * Replaced RSpec with Bacon.
@@ -0,0 +1,20 @@
1
+ body
2
+ {
3
+ font-size: 14px;
4
+ line-height: 1.6;
5
+ margin: 0 auto;
6
+ max-width: 960px;
7
+ }
8
+
9
+ p code
10
+ {
11
+ background: #f2f2f2;
12
+ padding-left: 3px;
13
+ padding-right: 3px;
14
+ }
15
+
16
+ pre.code
17
+ {
18
+ font-size: 13px;
19
+ line-height: 1.4;
20
+ }
@@ -0,0 +1,61 @@
1
+ # Getting Started
2
+
3
+ Once installed (see {file:installation Installation}) you can use the ``zen``
4
+ executable to create new applications. Keep in mind that this command is not a
5
+ wrapper for the ``ramaze`` executable. This means that you still have to type
6
+ ``ramaze console`` or ``ramaze start`` if you want to open up a console or start
7
+ your application.
8
+
9
+ In order to create a new application based on Zen you'll need to execute the
10
+ following command:
11
+
12
+ $ zen create
13
+
14
+ This command will start an interactive installer that walks you through the
15
+ process of creating a new project. Using this installer you can specify the
16
+ project name, database settings and various other settings.
17
+
18
+ The prototype applications generated by the zen command are pretty basic but
19
+ should be enough for most users. If you want to change anything of it you're
20
+ free to do so just make sure that all paths and such are updated correctly.
21
+
22
+ Once an application has been created and is configured you'll need to create the
23
+ database and insert the default user. This can be done by executing the
24
+ following commands:
25
+
26
+ $ rake db:migrate
27
+ $ rake db:user
28
+
29
+ This creates all the database tables and inserts a default user with a random
30
+ password.
31
+
32
+ When creating the database tables for the first time you'll see one or two
33
+ yellow warnings telling you certain tables might be missing. These can be safely
34
+ ignored.
35
+
36
+ You can now start the application using your server of choice and start using
37
+ it.
38
+
39
+ ## Updating Applications
40
+
41
+ Updating Zen in general is quite easy and requires the following two commands::
42
+
43
+ $ gem update zen
44
+ $ rake db:migrate
45
+
46
+ However, with some releases there may be some extra steps that are required in
47
+ order to properly update your installation so it's always wise to check the
48
+ release notes before updating an installation.
49
+
50
+ When updating the database schema I always try to write my migrations in such a
51
+ way that existing data is migrated as well. However, because there may be some
52
+ cases where this isn't possible it's recommended that you **always** make a
53
+ backup of your database before updating.
54
+
55
+ ## Logging In
56
+
57
+ In order to log in you must navigate to ``/admin/users/login`` or ``/admin``
58
+ (the latter will redirect you to the first URL and show a warning). If you don't
59
+ have any user accounts set up yet you should run the rake command ``rake
60
+ db:user`` as explained above. If you do have an available user account you can
61
+ log in using the user's Email address and password.
data/guide/hacking.md ADDED
@@ -0,0 +1,52 @@
1
+ # Hacking & Contributing
2
+
3
+ Everybody is free to contribute to Zen. However, to ensure that the quality of
4
+ Zen doesn't degrade developers should stick with the guidelines described in
5
+ this document. Zen also follows the [Ramaze guidelines][ramaze guidelines] as
6
+ much as possible.
7
+
8
+ ## General Standards
9
+
10
+ * 2 spaces per indentation level for Ruby code.
11
+ * 4 spaces per indentation level for Javascript, CSS and HTML.
12
+ * Document your code, that includes CSS (when dealing with complex selectors)
13
+ and Javascript files.
14
+ * No tabs at all times.
15
+ * Markdown is used for all markup.
16
+ * The maximum width of each line should be no more than 80 characters, this
17
+ makes it easier to read code in terminals or when using split view modes.
18
+
19
+ ## Comitting
20
+
21
+ Besides the guidelines set in [Ramaze's comit messages][commit guidelines]
22
+ section Zen comes with the requirement that all commits are signed off using
23
+ ``git commit --sign``. For more information about signing commits (and why
24
+ it is a good idea) see the following pages:
25
+
26
+ * <http://kerneltrap.org/files/Jeremy/DCO.txt>
27
+ * <http://stackoverflow.com/questions/1962094/what-is-the-sign-off-feature-in-git-for>
28
+
29
+ ## Branching
30
+
31
+ Zen has two main branches, "master" and "develop". The master branch is directly
32
+ tied to releases, this means that it should **always** contain stable and fully
33
+ tested code. In almost all cases I (Yorick) will be the only one merging
34
+ changes into this branch. The develop branch is used as a place to merge other
35
+ branches into as well as for comitting small changes such as typos, small bug
36
+ fixes and so on.
37
+
38
+ Big features such as a new backend design should go in a separate branch with an
39
+ easy to remember and meaningful name. In this example the branch name could be
40
+ "new\_design" or simply "design".
41
+
42
+ ## Tests
43
+
44
+ Tests for Zen are written using [Bacon][bacon]. New features, modified ones, it
45
+ doesn't matter, they should all be tested. Currently Zen's code coverage
46
+ (measured using SimpleCov) sits around 96% and I intent to keep it above 95%.
47
+ The test ouput is displayed using [TAP][tap protocol].
48
+
49
+ [ramaze guidelines]: http://ramaze.net/documentation/file.contributing.html
50
+ [commit guidelines]: http://ramaze.net/documentation/file.contributing.html#Commit_Messages
51
+ [bacon]: https://github.com/chneukirchen/bacon
52
+ [tap protocol]: https://en.wikipedia.org/wiki/Test_Anything_Protocol
@@ -0,0 +1,44 @@
1
+ # Installation
2
+
3
+ Zen can be installed in two different ways, either by using Rubygems or Git. The
4
+ former is the easiest of the two as it only requires a single command. The
5
+ latter is more useful if you want to hack on Zen while using it.
6
+
7
+ ## Rubygems Installation
8
+
9
+ Installing Zen using Rubygems can be done by running the following command in
10
+ your terminal:
11
+
12
+ $ gem install zen
13
+
14
+ If you want to install a specific version of Zen you can provide the ``-v``
15
+ option:
16
+
17
+ $ gem install zen -v [VERSION]
18
+
19
+ For example, if you want to install 0.2.8 you'd run the following command:
20
+
21
+ $ gem install zen -v 0.2.8
22
+
23
+ ## Git Installation
24
+
25
+ When you want to submit a patch, hack the core or are just interested in
26
+ browsing the code you'll want to install a copy of the Git repository. This can
27
+ be done by a simply cloning the repository:
28
+
29
+ $ git clone git://github.com/zen-cms/Zen-Core.git zen_core
30
+
31
+ This command saves a local copy of Zen in the directory ./zen_core. Now that you
32
+ have a local copy there are two ways of using it:
33
+
34
+ 1. Manually build the Gem each time you've made a change.
35
+ 2. Directly load the Zen installation from your application.
36
+
37
+ The latter is recommended as you don't have to build the Gem each time. In order
38
+ to do this you simply need to replace all calls to require() that load data from
39
+ the gem with a path to the local copy of Zen.
40
+
41
+ For an overview of all available tasks that can be executed in your local copy
42
+ of Zen execute the following command:
43
+
44
+ $ rake -T
@@ -0,0 +1,352 @@
1
+ # Javascript API
2
+
3
+ Zen comes with a pretty good Javascript API that's based on the
4
+ [Mootools][mootools]. This API allows you to display modal windows, markup
5
+ editors and so on. On top of that you're free to use everything Mootools and
6
+ it's community has to offer.
7
+
8
+ <div class="note todo">
9
+ <p>
10
+ <strong>Note</strong>: Whenever you're creating Javascript files you
11
+ should use 4 spaces per indentation and refrain from using tabs. 4
12
+ spaces are used as 2 spaces are generally harder to read due to
13
+ Javascript using curly brackets.
14
+ </p>
15
+ </div>
16
+
17
+ ## Creating Classes
18
+
19
+ Mootools has a wonderful system that allows you to easily create classes. The
20
+ one thing to remember when creating classes is that you should *always* declare
21
+ them under a certain namespace. Not doing so might lead to collisions with
22
+ classes created by other developers.
23
+
24
+ Creating a class (including a namespace) works like the following:
25
+
26
+ // This would be your namespace
27
+ var Foobar = {};
28
+
29
+ Foobar.ClassName = new Class(
30
+ {
31
+ initialize: function()
32
+ {
33
+
34
+ }
35
+ });
36
+
37
+ This allows you to access your class as following:
38
+
39
+ var instance = new Foobar.ClassName();
40
+
41
+ The namespace you're using doesn't really matter as long as you **do not** use
42
+ the "Zen" namespace, it's reserved for all the official classes that are
43
+ included in Zen.
44
+
45
+ It's also important to remember that there's no guarantee Javascript (and CSS)
46
+ files are loaded in a particular order. Because of that you should always wrap
47
+ your code (except for class declarations and such) in the following code:
48
+
49
+ window.addEvent('domready', function()
50
+ {
51
+ // Do something funky!
52
+ });
53
+
54
+ This function will be executed once the DOM (and thus all the resources) are
55
+ fully loaded.
56
+
57
+ <div class="note deprecated">
58
+ <p>
59
+ <strong>Warning</strong>: Do not put class declarations inside this
60
+ block as it may lead to unexpected behavior.
61
+ </p>
62
+ </div>
63
+
64
+ ## Available Classes
65
+
66
+ Out of the box the following classes are available:
67
+
68
+ * Zen.Window
69
+ * Zen.Tabs
70
+ * Zen.Editor
71
+ * Zen.Editor.Markdown
72
+ * Zen.Editor.Textile
73
+ * Zen.HtmlTable
74
+
75
+ The following third-party classes are also provided:
76
+
77
+ * Picker
78
+ * Picker.Date
79
+ * Picker.Attach
80
+
81
+ ### Zen.Window
82
+
83
+ The Window class can be used to display modal windows with (or without) a set of
84
+ custom buttons. These windows can be used for displaying pictures, confirmation
85
+ messages and so on. In order to display a window you'll need to create a new
86
+ instance of the class. The syntax of this looks like the following:
87
+
88
+ var some_window = new Zen.Window(content[, options]);
89
+
90
+ <div class="note deprecated">
91
+ <p>
92
+ <strong>Warning</strong>: When creating an instance of Zen.Window you
93
+ should never save it in a variable named "window" as this is a reserved
94
+ variable that refers to the browser window.
95
+ </p>
96
+ </div>
97
+
98
+ The first parameter is the content to display and can either be plain text or
99
+ HTML. The second parameter is an object containing various options that can be
100
+ used to customize the window. The following options can be set in this object:
101
+
102
+ * height: a number indicating a fixed height to use for the window.
103
+ * width: the same but for the width.
104
+ * title: the title to display in the title bar containing the close button.
105
+ * resize: boolean that when set to true allows the user to resize the window.
106
+ * move: boolean that when set to true allows the user to move the window around.
107
+ * buttons: an array of buttons to display at the bottom of the window.
108
+
109
+ Creating a new window with some of these options would look something like the
110
+ following:
111
+
112
+ var some_window = new Zen.Window('Hello, world!', {title: 'This is a window!'});
113
+
114
+ Note that you're not required to call any extra methods, the window will be
115
+ displayed whenever a new instance of the window is created.
116
+
117
+ Buttons can be added by setting the "buttons" option to an array of objects of
118
+ which each object has the following format:
119
+
120
+ {
121
+ name: 'foobar',
122
+ label: 'Foobar',
123
+ onClick: function() {}
124
+ }
125
+
126
+ * name: the name of the button, should be unique as it's used for the class of
127
+ the ``li`` element of the button.
128
+ * label: the text displayed in the button.
129
+ * onClick: a function that will be called whenever the button is clicked.
130
+
131
+ <div class="note todo">
132
+ <p>
133
+ <strong>Note</strong>: Currently the resize and move features are a bit
134
+ buggy, especially when they're both used. This will be fixed in one of
135
+ the next releases.
136
+ </p>
137
+ </div>
138
+
139
+ ### Zen.Tabs
140
+
141
+ Zen.Tabs can be used to create a tab based navigation menu. Because Zen already
142
+ uses this class for all elements that match the selector ``div.tabs ul`` it's
143
+ usually not required to manually create an instance of this class.
144
+
145
+ The syntax of creating an instance of this class looks like the following:
146
+
147
+ var tabs = new Zen.Tabs(selector[, options]);
148
+
149
+ The first parameter is a CSS selector, the second parameter is an object
150
+ containing various options to customize the instance. Note that the selector
151
+ used should result in a number of ``ul`` elements, not ``div`` elements (or any
152
+ other elements).
153
+
154
+ A short example looks like the following:
155
+
156
+ var tabs = new Zen.Tabs('div.my_tabs ul');
157
+
158
+ The following options can be used to customize the tabs:
159
+
160
+ * default: a selector used to indicate what tab element should be selected by
161
+ default. Set to ``li:first-child`` by default.
162
+ * ajax: when set to true the content to display for each tab will be retrieved
163
+ using an Ajax call rather than retrieving it from the current page.
164
+
165
+ When you're *not* using an Ajax based tab system you'll have to make sure your
166
+ markup is correct. The links of the tabs should point to an ID of an element
167
+ with a class of "tab_content":
168
+
169
+ <div id="some_id" class="tab_content">
170
+
171
+ </div>
172
+
173
+ In order to display this field the corresponding tab URL should be ``#some_id``.
174
+ A full example of the required markup, including the markup for the tab menu,
175
+ looks like the following:
176
+
177
+ <div class="tabs">
178
+ <ul>
179
+ <li>
180
+ <a href="#my_tab">This is my tab</a>
181
+ </li>
182
+ </ul>
183
+ </div>
184
+
185
+ <div id="my_tab" class="tab_content">
186
+
187
+ </div>
188
+
189
+ ### Zen.Editor
190
+
191
+ Zen.Editor is the main class used for the markup editor that can be used to more
192
+ easily insert markup for all supported languages into a text area. By default
193
+ Zen will automatically use the markup editor for all ``textarea`` elements with
194
+ a class of ``visual_editor``. The format used for the markup is retrieved from
195
+ the column ``data-format`` (this column is required). The attribute
196
+ ``data-format`` should contain the name of the markup engine to use as defined
197
+ in ``Zen.Editor.drivers``. Currently the following are supported:
198
+
199
+ * markdown
200
+ * textile
201
+
202
+ If an unknown driver is specified the default driver (HTML) will be used
203
+ instead.
204
+
205
+ The markup required for Zen to automatically use the markup editor looks like
206
+ the example below.
207
+
208
+ <textarea class="visual_editor" data-format="markdown"></textarea>
209
+
210
+ If you want to manually create an instance of ``Zen.Editor`` you can still do so
211
+ but due to the way the system works you shouldn't directly create an instance of
212
+ the class as this will prevent the editor from automatically using the correct
213
+ driver class. You should use ``Zen.Editor.init`` instead. This method has the
214
+ following syntax:
215
+
216
+ var editor = Zen.Editor.init(driver, element[, options, buttons]);
217
+
218
+ The first parameter is a string containing the name of the driver to use. The
219
+ second parameter can either be a CSS selector, a collection of elements or a
220
+ single element. If the parameter is a CSS selector or a collection of elements
221
+ the **first** element will be used, all others will be ignored. The last two
222
+ parameters are used for customized options as well as adding custom buttons to
223
+ the editor. Currently the editor only supports the following two options:
224
+
225
+ * width: sets a minimum width on the textarea element.
226
+ * height: sets a minimum hight on the textarea element.
227
+
228
+ Buttons can be added by setting the last parameter to an array. Each button has
229
+ the same format as the buttons used in Zen.Window:
230
+
231
+ {
232
+ name: 'foobar',
233
+ label: 'Foobar',
234
+ onClick: function() {}
235
+ }
236
+
237
+ Note that unlike Zen.Window these buttons can't be set in the options object
238
+ under the key "buttons". This is because the Options class of Mootools doesn't
239
+ actually merge options but instead overwrites existing ones. This would mean
240
+ that it would be more difficult to add a default set of buttons as well as
241
+ custom ones. Most likely this will change in the future once I find out what the
242
+ best way of doing this would be.
243
+
244
+ Example:
245
+
246
+ var editor = Zen.Editor.init(
247
+ 'markdown',
248
+ 'div#text_editor',
249
+ {
250
+ width: 400
251
+ },
252
+ [
253
+ {
254
+ name: 'custom',
255
+ label: 'Custom',
256
+ onClick: function(editor)
257
+ {
258
+ console.log("This is a custom button!");
259
+ }
260
+ }
261
+ ]
262
+ );
263
+
264
+ Functions used for buttons take a single parameter which will contain an
265
+ instance of the editor the button belongs to. This makes it easy to insert text
266
+ into the textarea:
267
+
268
+ function(editor)
269
+ {
270
+ editor.insertAroundCursor({before: '<!--', after: '-->'});
271
+ }
272
+
273
+ ### Zen.HtmlTable
274
+
275
+ The class Zen.HtmlTable was introduced in Zen 0.2.8 and makes it possible to
276
+ sort tables by their columns, check all checkboxes in the first column of a
277
+ table and it highlights odd rows. Generally you don't need to use this class
278
+ itself but instead you'll be using the markup it accepts in order to modify it's
279
+ behavior.
280
+
281
+ The basic markup for this class is very simple, in fact, it's nothing more than
282
+ a regular table with a ``<thead>`` element:
283
+
284
+ <table>
285
+ <thead>
286
+ <tr>
287
+ <th>#</th>
288
+ <th>Name</th>
289
+ </tr>
290
+ </thead>
291
+ <tbody>
292
+ <tr>
293
+ <td>2</td>
294
+ <td>Ruby</td>
295
+ </tr>
296
+ </tbody>
297
+ </table>
298
+
299
+ Zen will automatically detect and use the table and you're good to go. If you
300
+ want to modify the behavior you can use a few attributes on certain elements of
301
+ the table. The following attributes can be applied to the ``<table>`` element
302
+ itself:
303
+
304
+ * data-sort-index: the index of the ``<th>`` element to sort the table on by
305
+ default. By default this is set to 1 as all tables have a checkbox in the
306
+ first column of each row.
307
+
308
+ The following attributes can be set on each ``<th>`` element:
309
+
310
+ * data-sort-parser: the name of the parser to use for sorting the columns. This
311
+ option is directly passed to HtmlTable.Sort and can be any of the parsers
312
+ Mootools has to offer (or one you wrote yourself).
313
+
314
+ Example:
315
+
316
+ <table data-sort-index="1">
317
+ <thead>
318
+ <tr>
319
+ <th>#</th>
320
+ <th data-sort-parser="usernames">Name</th>
321
+ </tr>
322
+ </thead>
323
+ <tbody>
324
+ <tr>
325
+ <td>2</td>
326
+ <td>Ruby</td>
327
+ </tr>
328
+ </tbody>
329
+ </table>
330
+
331
+ If you want to create a table that should be ignored by Zen.Html table simply
332
+ give the ``<table>`` element a class of ``no_sort``:
333
+
334
+ <table class="no_sort">
335
+ <thead>
336
+ <tr>
337
+ <th>#</th>
338
+ <th>Name</th>
339
+ </tr>
340
+ </thead>
341
+ <tbody>
342
+ <tr>
343
+ <td>2</td>
344
+ <td>Ruby</td>
345
+ </tr>
346
+ </tbody>
347
+ </table>
348
+
349
+ This class can also be applied to ``<th>`` elements to ignore just that column
350
+ rather than the entire table.
351
+
352
+ [mootools]: http://mootools.net/