zen 0.2.8 → 0.3b

Sign up to get free protection for your applications and to get access to all the features.
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/