zen 0.2.8 → 0.3b

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (422) hide show
  1. data/.gems +20 -0
  2. data/.mailmap +3 -2
  3. data/.rvmrc +1 -1
  4. data/.travis.yml +13 -2
  5. data/.yardopts +13 -0
  6. data/AUTHORS +1 -1
  7. data/README.md +115 -77
  8. data/Rakefile +6 -7
  9. data/bin/zen +12 -5
  10. data/guide/_static/categories/categories.png +0 -0
  11. data/guide/_static/categories/category_groups.png +0 -0
  12. data/guide/_static/categories/new_category.png +0 -0
  13. data/guide/_static/categories/new_category_group.png +0 -0
  14. data/guide/_static/comments/comments.png +0 -0
  15. data/guide/_static/comments/edit_comment.png +0 -0
  16. data/guide/_static/custom_fields/custom_field_groups.png +0 -0
  17. data/guide/_static/custom_fields/custom_field_types.png +0 -0
  18. data/guide/_static/custom_fields/custom_fields.png +0 -0
  19. data/guide/_static/custom_fields/edit_custom_field_general.png +0 -0
  20. data/guide/_static/custom_fields/edit_custom_field_group.png +0 -0
  21. data/guide/_static/custom_fields/edit_custom_field_settings.png +0 -0
  22. data/guide/_static/custom_fields/edit_custom_field_type.png +0 -0
  23. data/guide/_static/menus/edit_menu.png +0 -0
  24. data/guide/_static/menus/edit_menu_item.png +0 -0
  25. data/guide/_static/menus/menu_items.png +0 -0
  26. data/guide/_static/menus/menus.png +0 -0
  27. data/guide/_static/sections/edit_entry.png +0 -0
  28. data/guide/_static/sections/edit_entry_categories.png +0 -0
  29. data/guide/_static/sections/edit_entry_general.png +0 -0
  30. data/guide/_static/sections/edit_entry_meta.png +0 -0
  31. data/guide/_static/sections/edit_section_comments.png +0 -0
  32. data/guide/_static/sections/edit_section_general.png +0 -0
  33. data/guide/_static/sections/edit_section_groups.png +0 -0
  34. data/guide/_static/sections/entries.png +0 -0
  35. data/guide/_static/sections/sections.png +0 -0
  36. data/guide/_static/settings/overview_general.png +0 -0
  37. data/guide/_static/settings/overview_security.png +0 -0
  38. data/guide/_static/settings/overview_user.png +0 -0
  39. data/guide/_static/users/edit_user.png +0 -0
  40. data/guide/_static/users/edit_user_group.png +0 -0
  41. data/guide/_static/users/edit_user_group_permissions.png +0 -0
  42. data/guide/_static/users/edit_user_permissions.png +0 -0
  43. data/guide/_static/users/overview.png +0 -0
  44. data/guide/_static/users/user_groups_overview.png +0 -0
  45. data/guide/asset_management.md +117 -0
  46. data/{CHANGELOG.md → guide/changelog.md} +42 -0
  47. data/guide/css/common.css +20 -0
  48. data/guide/getting_started.md +61 -0
  49. data/guide/hacking.md +52 -0
  50. data/guide/installation.md +44 -0
  51. data/guide/javascript.md +352 -0
  52. data/lib/vendor/sequel_sluggable.rb +137 -0
  53. data/lib/yard/tags.rb +13 -0
  54. data/lib/zen.rb +148 -78
  55. data/lib/zen/asset_groups.rb +85 -0
  56. data/lib/zen/bin/create.rb +267 -56
  57. data/lib/zen/bin/default.rb +84 -0
  58. data/lib/zen/controller/admin_controller.rb +1 -82
  59. data/lib/zen/controller/base_controller.rb +9 -5
  60. data/lib/zen/controller/frontend_controller.rb +0 -1
  61. data/lib/zen/controller/main_controller.rb +30 -42
  62. data/lib/zen/controller/preview.rb +9 -8
  63. data/lib/zen/controller/translations.rb +49 -0
  64. data/lib/zen/error.rb +17 -0
  65. data/lib/zen/event.rb +118 -0
  66. data/lib/zen/helper/asset.rb +63 -0
  67. data/lib/zen/helper/breadcrumb.rb +1 -4
  68. data/lib/zen/helper/controller.rb +73 -0
  69. data/lib/zen/helper/locale.rb +42 -0
  70. data/lib/zen/helper/message.rb +0 -3
  71. data/lib/zen/helper/search.rb +54 -0
  72. data/lib/zen/helper/stacked_aspect.rb +249 -0
  73. data/lib/zen/helper/theme.rb +3 -10
  74. data/lib/zen/language.rb +356 -181
  75. data/lib/zen/language/en/zen_general.rb +52 -0
  76. data/lib/zen/language/en/zen_models.rb +19 -0
  77. data/lib/zen/language/nl/zen_general.rb +57 -0
  78. data/lib/zen/language/nl/zen_models.rb +22 -0
  79. data/lib/zen/language/translation.rb +132 -0
  80. data/lib/zen/languages.rb +9 -0
  81. data/lib/zen/layout/admin.xhtml +3 -3
  82. data/lib/zen/layout/login.xhtml +1 -1
  83. data/lib/zen/markup.rb +189 -0
  84. data/lib/zen/model/helper.rb +65 -0
  85. data/lib/zen/model/init.rb +62 -0
  86. data/lib/zen/model/methods.rb +6 -7
  87. data/lib/zen/package.rb +312 -201
  88. data/lib/zen/package/all.rb +4 -3
  89. data/lib/zen/package/categories/lib/categories.rb +29 -41
  90. data/lib/zen/package/categories/lib/categories/controller/categories.rb +185 -130
  91. data/lib/zen/package/categories/lib/categories/controller/category_groups.rb +172 -102
  92. data/lib/zen/package/categories/lib/categories/helper/category.rb +4 -9
  93. data/lib/zen/package/categories/lib/categories/helper/category_frontend.rb +86 -0
  94. data/lib/zen/package/categories/lib/categories/language/en/categories.rb +40 -0
  95. data/lib/zen/package/categories/lib/categories/language/en/category_groups.rb +39 -0
  96. data/lib/zen/package/categories/lib/categories/language/nl/categories.rb +42 -0
  97. data/lib/zen/package/categories/lib/categories/language/nl/category_groups.rb +42 -0
  98. data/lib/zen/package/categories/lib/categories/model/category.rb +21 -25
  99. data/lib/zen/package/categories/lib/categories/model/category_group.rb +21 -15
  100. data/lib/zen/package/categories/lib/categories/view/admin/categories/form.xhtml +25 -26
  101. data/lib/zen/package/categories/lib/categories/view/admin/categories/index.xhtml +24 -24
  102. data/lib/zen/package/categories/lib/categories/view/admin/category-groups/form.xhtml +18 -20
  103. data/lib/zen/package/categories/lib/categories/view/admin/category-groups/index.xhtml +21 -18
  104. data/lib/zen/package/comments/lib/comments.rb +30 -50
  105. data/lib/zen/package/comments/lib/comments/anti_spam.rb +138 -0
  106. data/lib/zen/package/comments/lib/comments/controller/comments.rb +159 -92
  107. data/lib/zen/package/comments/lib/comments/controller/comments_form.rb +122 -34
  108. data/lib/zen/package/comments/lib/comments/helper/comment.rb +0 -3
  109. data/lib/zen/package/comments/lib/comments/helper/comment_frontend.rb +90 -0
  110. data/lib/zen/package/comments/lib/comments/language/en/comments.rb +57 -0
  111. data/lib/zen/package/comments/lib/comments/language/nl/comments.rb +61 -0
  112. data/lib/zen/package/comments/lib/comments/model/comment.rb +147 -49
  113. data/lib/zen/package/comments/lib/comments/model/comment_status.rb +0 -2
  114. data/lib/zen/package/comments/lib/comments/view/admin/comments/form.xhtml +37 -40
  115. data/lib/zen/package/comments/lib/comments/view/admin/comments/index.xhtml +23 -42
  116. data/lib/zen/package/comments/migrations/1308774099_comment_status.rb +12 -4
  117. data/lib/zen/package/comments/migrations/1313851786_remove_defensio_signature.rb +11 -0
  118. data/lib/zen/package/custom_fields/lib/custom_fields.rb +40 -43
  119. data/lib/zen/package/custom_fields/lib/custom_fields/blue_form_parameters.rb +72 -17
  120. data/lib/zen/package/custom_fields/lib/custom_fields/controller/custom_field_groups.rb +154 -118
  121. data/lib/zen/package/custom_fields/lib/custom_fields/controller/custom_field_types.rb +147 -90
  122. data/lib/zen/package/custom_fields/lib/custom_fields/controller/custom_fields.rb +161 -131
  123. data/lib/zen/package/custom_fields/lib/custom_fields/helper/custom_field.rb +4 -9
  124. data/lib/zen/package/custom_fields/lib/custom_fields/language/en/custom_field_groups.rb +42 -0
  125. data/lib/zen/package/custom_fields/lib/custom_fields/language/en/custom_field_types.rb +51 -0
  126. data/lib/zen/package/custom_fields/lib/custom_fields/language/en/custom_fields.rb +60 -0
  127. data/lib/zen/package/custom_fields/lib/custom_fields/language/nl/custom_field_groups.rb +41 -0
  128. data/lib/zen/package/custom_fields/lib/custom_fields/language/nl/custom_field_types.rb +49 -0
  129. data/lib/zen/package/custom_fields/lib/custom_fields/language/nl/custom_fields.rb +61 -0
  130. data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field.rb +18 -23
  131. data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field_group.rb +20 -19
  132. data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field_method.rb +1 -3
  133. data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field_type.rb +19 -9
  134. data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field_value.rb +18 -15
  135. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-groups/form.xhtml +18 -18
  136. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-groups/index.xhtml +30 -24
  137. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-types/form.xhtml +15 -10
  138. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-types/index.xhtml +24 -19
  139. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-fields/form.xhtml +18 -13
  140. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-fields/index.xhtml +30 -20
  141. data/lib/zen/package/extensions/lib/extensions.rb +20 -0
  142. data/lib/zen/package/extensions/lib/extensions/controller/extensions.rb +41 -0
  143. data/lib/zen/package/extensions/lib/extensions/language/en/extensions.rb +23 -0
  144. data/lib/zen/package/extensions/lib/extensions/language/nl/extensions.rb +25 -0
  145. data/lib/zen/package/extensions/lib/extensions/view/admin/extensions/index.xhtml +86 -0
  146. data/lib/zen/package/menu.rb +109 -0
  147. data/lib/zen/package/menus/lib/menus.rb +25 -34
  148. data/lib/zen/package/menus/lib/menus/controller/menu_items.rb +143 -107
  149. data/lib/zen/package/menus/lib/menus/controller/menus.rb +166 -115
  150. data/lib/zen/package/menus/lib/menus/helper/menu.rb +2 -8
  151. data/lib/zen/package/menus/lib/menus/helper/menu_frontend.rb +114 -0
  152. data/lib/zen/package/menus/lib/menus/language/en/menu_items.rb +48 -0
  153. data/lib/zen/package/menus/lib/menus/language/en/menus.rb +48 -0
  154. data/lib/zen/package/menus/lib/menus/language/nl/menu_items.rb +48 -0
  155. data/lib/zen/package/menus/lib/menus/language/nl/menus.rb +50 -0
  156. data/lib/zen/package/menus/lib/menus/model/menu.rb +24 -17
  157. data/lib/zen/package/menus/lib/menus/model/menu_item.rb +37 -13
  158. data/lib/zen/package/menus/lib/menus/view/admin/menu-items/form.xhtml +32 -25
  159. data/lib/zen/package/menus/lib/menus/view/admin/menu-items/index.xhtml +23 -17
  160. data/lib/zen/package/menus/lib/menus/view/admin/menus/form.xhtml +31 -26
  161. data/lib/zen/package/menus/lib/menus/view/admin/menus/index.xhtml +20 -22
  162. data/lib/zen/package/sections/lib/sections.rb +25 -68
  163. data/lib/zen/package/sections/lib/sections/controller/section_entries.rb +178 -138
  164. data/lib/zen/package/sections/lib/sections/controller/sections.rb +173 -140
  165. data/lib/zen/package/sections/lib/sections/helper/section.rb +3 -6
  166. data/lib/zen/package/sections/lib/sections/helper/section_frontend.rb +146 -0
  167. data/lib/zen/package/sections/lib/sections/language/en/section_entries.rb +50 -0
  168. data/lib/zen/package/sections/lib/sections/language/en/sections.rb +55 -0
  169. data/lib/zen/package/sections/lib/sections/language/nl/section_entries.rb +50 -0
  170. data/lib/zen/package/sections/lib/sections/language/nl/sections.rb +55 -0
  171. data/lib/zen/package/sections/lib/sections/model/section.rb +36 -36
  172. data/lib/zen/package/sections/lib/sections/model/section_entry.rb +52 -59
  173. data/lib/zen/package/sections/lib/sections/model/section_entry_status.rb +2 -2
  174. data/lib/zen/package/sections/lib/sections/view/admin/form.xhtml +24 -21
  175. data/lib/zen/package/sections/lib/sections/view/admin/index.xhtml +24 -26
  176. data/lib/zen/package/sections/lib/sections/view/admin/section-entries/form.xhtml +33 -31
  177. data/lib/zen/package/sections/lib/sections/view/admin/section-entries/index.xhtml +24 -25
  178. data/lib/zen/package/sections/migrations/1308672298_use_id_for_default_section.rb +14 -10
  179. data/lib/zen/package/sections/migrations/1308813320_section_entry_statuses.rb +12 -6
  180. data/lib/zen/package/settings/lib/settings.rb +25 -120
  181. data/lib/zen/package/settings/lib/settings/blue_form_parameters.rb +157 -0
  182. data/lib/zen/package/settings/lib/settings/controller/settings.rb +94 -69
  183. data/lib/zen/package/settings/lib/settings/language/en/settings.rb +41 -0
  184. data/lib/zen/package/settings/lib/settings/language/nl/settings.rb +41 -0
  185. data/lib/zen/package/settings/lib/settings/model/setting.rb +0 -2
  186. data/lib/zen/package/settings/lib/settings/setting.rb +379 -0
  187. data/lib/zen/package/settings/lib/settings/setting_groups.rb +11 -0
  188. data/lib/zen/package/settings/lib/settings/settings.rb +83 -0
  189. data/lib/zen/package/settings/lib/settings/settings_group.rb +84 -0
  190. data/lib/zen/package/settings/lib/settings/singleton_methods.rb +35 -0
  191. data/lib/zen/package/settings/lib/settings/view/admin/settings/index.xhtml +15 -57
  192. data/lib/zen/package/settings/migrations/1321197919_remove_unused_columns.rb +17 -0
  193. data/lib/zen/package/users/lib/users.rb +51 -36
  194. data/lib/zen/package/users/lib/users/controller/user_groups.rb +133 -98
  195. data/lib/zen/package/users/lib/users/controller/users.rb +253 -136
  196. data/lib/zen/package/users/lib/users/helper/access.rb +102 -0
  197. data/lib/zen/package/users/lib/users/helper/acl.rb +113 -0
  198. data/lib/zen/package/users/lib/users/helper/users.rb +41 -24
  199. data/lib/zen/package/users/lib/users/language/en/permissions.rb +16 -0
  200. data/lib/zen/package/users/lib/users/language/en/user_groups.rb +39 -0
  201. data/lib/zen/package/users/lib/users/language/en/users.rb +73 -0
  202. data/lib/zen/package/users/lib/users/language/nl/permissions.rb +16 -0
  203. data/lib/zen/package/users/lib/users/language/nl/user_groups.rb +41 -0
  204. data/lib/zen/package/users/lib/users/language/nl/users.rb +74 -0
  205. data/lib/zen/package/users/lib/users/model/permission.rb +28 -0
  206. data/lib/zen/package/users/lib/users/model/user.rb +104 -65
  207. data/lib/zen/package/users/lib/users/model/user_group.rb +28 -24
  208. data/lib/zen/package/users/lib/users/model/user_status.rb +27 -0
  209. data/lib/zen/package/users/lib/users/public/admin/css/users/permissions.css +22 -0
  210. data/lib/zen/package/users/lib/users/public/admin/js/users/permissions.js +33 -0
  211. data/lib/zen/package/users/lib/users/settings.rb +19 -0
  212. data/lib/zen/package/users/lib/users/view/admin/user-groups/form.xhtml +58 -28
  213. data/lib/zen/package/users/lib/users/view/admin/user-groups/index.xhtml +19 -15
  214. data/lib/zen/package/users/lib/users/view/admin/users/form.xhtml +93 -62
  215. data/lib/zen/package/users/lib/users/view/admin/users/index.xhtml +23 -36
  216. data/lib/zen/package/users/lib/users/view/admin/users/login.xhtml +13 -6
  217. data/lib/zen/package/users/lib/users/view/admin/users/permissions.xhtml +33 -0
  218. data/lib/zen/package/users/lib/users/view/admin/users/register.xhtml +52 -0
  219. data/lib/zen/package/users/migrations/1313786058_update_default_date.rb +41 -0
  220. data/lib/zen/package/users/migrations/1316432327_permissions.rb +36 -0
  221. data/lib/zen/package/users/migrations/1320272365_status_ids.rb +67 -0
  222. data/lib/zen/public/admin/css/zen/buttons.css +3 -11
  223. data/lib/zen/public/admin/css/zen/datepicker.css +23 -13
  224. data/lib/zen/public/admin/css/zen/editor.css +6 -14
  225. data/lib/zen/public/admin/css/zen/forms.css +19 -12
  226. data/lib/zen/public/admin/css/zen/general.css +22 -18
  227. data/lib/zen/public/admin/css/zen/grid.css +1 -20
  228. data/lib/zen/public/admin/css/zen/layout.css +26 -11
  229. data/lib/zen/public/admin/css/zen/messages.css +3 -10
  230. data/lib/zen/public/admin/css/zen/reset.css +13 -15
  231. data/lib/zen/public/admin/css/zen/tables.css +8 -10
  232. data/lib/zen/public/admin/css/zen/tabs.css +2 -10
  233. data/lib/zen/public/admin/css/zen/window.css +2 -8
  234. data/lib/zen/public/admin/js/vendor/datepicker.js +540 -240
  235. data/lib/zen/public/admin/js/vendor/mootools/core.js +273 -283
  236. data/lib/zen/public/admin/js/vendor/mootools/more.js +131 -136
  237. data/lib/zen/public/admin/js/zen/index.js +8 -14
  238. data/lib/zen/public/admin/js/zen/lib/editor.js +36 -33
  239. data/lib/zen/public/admin/js/zen/lib/editor/markdown.js +0 -6
  240. data/lib/zen/public/admin/js/zen/lib/editor/textile.js +0 -6
  241. data/lib/zen/public/admin/js/zen/lib/html_table.js +0 -5
  242. data/lib/zen/public/admin/js/zen/lib/tabs.js +22 -79
  243. data/lib/zen/public/admin/js/zen/lib/window.js +12 -22
  244. data/lib/zen/spec/bacon/color_output.rb +1 -1
  245. data/lib/zen/spec/helper.rb +6 -11
  246. data/lib/zen/spec/simplecov.rb +3 -3
  247. data/lib/zen/task.rb +0 -1
  248. data/lib/zen/task/build.rake +46 -26
  249. data/lib/zen/task/clean.rake +14 -7
  250. data/lib/zen/task/db.rake +31 -29
  251. data/lib/zen/task/package.rake +19 -23
  252. data/lib/zen/task/proto.rake +3 -5
  253. data/lib/zen/task/setup.rake +4 -0
  254. data/lib/zen/task/test.rake +31 -6
  255. data/lib/zen/task/theme.rake +13 -19
  256. data/lib/zen/theme.rb +377 -52
  257. data/lib/zen/validation.rb +22 -30
  258. data/lib/zen/version.rb +1 -2
  259. data/lib/zen/view/bottom.xhtml +9 -1
  260. data/lib/zen/view/head.xhtml +1 -1
  261. data/lib/zen/view/main.xhtml +1 -1
  262. data/lib/zen/view/search.xhtml +9 -0
  263. data/proto/app/Rakefile +0 -1
  264. data/proto/app/app.rb +21 -16
  265. data/proto/app/config/config.rb.erb +41 -0
  266. data/proto/app/config/{database.rb → database.rb.erb} +17 -14
  267. data/proto/app/config/middlewares.rb +1 -1
  268. data/proto/app/theme/default/index.xhtml +25 -0
  269. data/proto/app/theme/theme.rb +19 -0
  270. data/proto/app/{log/database/dev → tmp}/.gitkeep +0 -0
  271. data/proto/migration.rb +3 -5
  272. data/proto/rack/thin.yml +41 -0
  273. data/proto/rack/unicorn.rb +38 -0
  274. data/spec/Rakefile +15 -11
  275. data/spec/fixtures/zen/helper/controller.rb +13 -0
  276. data/spec/fixtures/zen/helper/locale.rb +7 -0
  277. data/spec/fixtures/zen/helper/message.rb +0 -4
  278. data/spec/fixtures/zen/language.rb +31 -0
  279. data/spec/fixtures/zen/language/en/spec.rb +11 -0
  280. data/spec/fixtures/zen/language/nl/spec.rb +11 -0
  281. data/spec/fixtures/zen/package.rb +0 -10
  282. data/spec/fixtures/zen/package/categories/helper/category_frontend.rb +16 -0
  283. data/spec/fixtures/zen/package/comments/helper/comment_frontend.rb +16 -0
  284. data/spec/fixtures/zen/package/sections/helper/section_frontend.rb +16 -0
  285. data/spec/fixtures/zen/package/settings/controller/settings.rb +17 -0
  286. data/spec/fixtures/zen/package/users/helper/access.rb +18 -0
  287. data/spec/fixtures/zen/package/users/helper/acl.rb +23 -0
  288. data/spec/fixtures/zen/theme/{default-section → default}/index.xhtml +0 -0
  289. data/spec/helper.rb +12 -27
  290. data/{proto/app/log/database/live → spec/public}/.gitkeep +0 -0
  291. data/spec/zen/controller/admin_controller.rb +5 -6
  292. data/spec/zen/controller/main_controller.rb +29 -35
  293. data/spec/zen/controller/preview.rb +9 -10
  294. data/spec/zen/event.rb +44 -0
  295. data/spec/zen/helper/breadcrumb.rb +4 -5
  296. data/spec/zen/helper/controller.rb +21 -0
  297. data/spec/zen/helper/locale.rb +25 -0
  298. data/spec/zen/helper/message.rb +4 -11
  299. data/spec/zen/helper/theme.rb +11 -14
  300. data/spec/zen/language.rb +48 -22
  301. data/spec/zen/markup.rb +39 -0
  302. data/spec/zen/package.rb +48 -11
  303. data/spec/zen/package/categories/controller/categories.rb +99 -45
  304. data/spec/zen/package/categories/controller/category_groups.rb +109 -33
  305. data/spec/zen/package/categories/helper/category.rb +19 -32
  306. data/spec/zen/package/categories/helper/category_frontend.rb +61 -0
  307. data/spec/zen/package/comments/anti_spam.rb +50 -0
  308. data/spec/zen/package/comments/controller/comments.rb +121 -61
  309. data/spec/zen/package/comments/controller/comments_form.rb +120 -94
  310. data/spec/zen/package/comments/helper/comment.rb +13 -13
  311. data/spec/zen/package/comments/helper/comment_frontend.rb +92 -0
  312. data/spec/zen/package/custom_fields/blue_form_parameters.rb +50 -50
  313. data/spec/zen/package/custom_fields/controller/custom_field_groups.rb +135 -43
  314. data/spec/zen/package/custom_fields/controller/custom_field_types.rb +153 -48
  315. data/spec/zen/package/custom_fields/controller/custom_fields.rb +130 -51
  316. data/spec/zen/package/custom_fields/helper/custom_field.rb +8 -8
  317. data/spec/zen/package/extensions/controller/extensions.rb +38 -0
  318. data/spec/zen/package/menus/controller/menu_items.rb +121 -42
  319. data/spec/zen/package/menus/controller/menus.rb +125 -38
  320. data/spec/zen/package/menus/helper/menu.rb +26 -26
  321. data/spec/zen/package/menus/helper/menu_frontend.rb +104 -0
  322. data/spec/zen/package/sections/controller/section_entries.rb +145 -89
  323. data/spec/zen/package/sections/controller/sections.rb +130 -35
  324. data/spec/zen/package/sections/helper/section.rb +27 -38
  325. data/spec/zen/package/sections/helper/section_frontend.rb +160 -0
  326. data/spec/zen/package/settings/controller/settings.rb +73 -8
  327. data/spec/zen/package/settings/settings.rb +119 -0
  328. data/spec/zen/package/users/controller/user_groups.rb +134 -34
  329. data/spec/zen/package/users/controller/users.rb +189 -44
  330. data/spec/zen/package/users/helper/access.rb +29 -0
  331. data/spec/zen/package/users/helper/acl.rb +46 -0
  332. data/spec/zen/package/users/helper/users.rb +20 -64
  333. data/spec/zen/theme.rb +7 -9
  334. data/spec/zen/validation.rb +1 -2
  335. data/zen.gemspec +25 -22
  336. metadata +303 -222
  337. data/lib/zen/asset.rb +0 -292
  338. data/lib/zen/bin/runner.rb +0 -118
  339. data/lib/zen/error/language_error.rb +0 -10
  340. data/lib/zen/error/package_error.rb +0 -10
  341. data/lib/zen/error/plugin_error.rb +0 -10
  342. data/lib/zen/error/theme_error.rb +0 -10
  343. data/lib/zen/error/validation_error.rb +0 -10
  344. data/lib/zen/helper/acl.rb +0 -182
  345. data/lib/zen/helper/blue_form_vendor.rb +0 -689
  346. data/lib/zen/language/en/zen_general.yml +0 -25
  347. data/lib/zen/language/en/zen_models.yml +0 -13
  348. data/lib/zen/language/nl/zen_general.yml +0 -25
  349. data/lib/zen/language/nl/zen_models.yml +0 -13
  350. data/lib/zen/model/settings.rb +0 -78
  351. data/lib/zen/package/base.rb +0 -62
  352. data/lib/zen/package/categories/lib/categories/language/en/categories.yml +0 -36
  353. data/lib/zen/package/categories/lib/categories/language/en/category_groups.yml +0 -34
  354. data/lib/zen/package/categories/lib/categories/language/nl/categories.yml +0 -40
  355. data/lib/zen/package/categories/lib/categories/language/nl/category_groups.yml +0 -34
  356. data/lib/zen/package/categories/lib/categories/plugin/categories.rb +0 -141
  357. data/lib/zen/package/comments/lib/comments/language/en/comments.yml +0 -48
  358. data/lib/zen/package/comments/lib/comments/language/nl/comments.yml +0 -50
  359. data/lib/zen/package/comments/lib/comments/plugin/anti_spam.rb +0 -156
  360. data/lib/zen/package/comments/lib/comments/plugin/comments.rb +0 -115
  361. data/lib/zen/package/custom_fields/lib/custom_fields/language/en/custom_field_groups.yml +0 -33
  362. data/lib/zen/package/custom_fields/lib/custom_fields/language/en/custom_field_types.yml +0 -40
  363. data/lib/zen/package/custom_fields/lib/custom_fields/language/en/custom_fields.yml +0 -54
  364. data/lib/zen/package/custom_fields/lib/custom_fields/language/nl/custom_field_groups.yml +0 -33
  365. data/lib/zen/package/custom_fields/lib/custom_fields/language/nl/custom_field_types.yml +0 -40
  366. data/lib/zen/package/custom_fields/lib/custom_fields/language/nl/custom_fields.yml +0 -54
  367. data/lib/zen/package/menus/lib/menus/language/en/menu_items.yml +0 -41
  368. data/lib/zen/package/menus/lib/menus/language/en/menus.yml +0 -40
  369. data/lib/zen/package/menus/lib/menus/language/nl/menu_items.yml +0 -41
  370. data/lib/zen/package/menus/lib/menus/language/nl/menus.yml +0 -40
  371. data/lib/zen/package/menus/lib/menus/plugin/menus.rb +0 -152
  372. data/lib/zen/package/sections/lib/sections/language/en/section_entries.yml +0 -44
  373. data/lib/zen/package/sections/lib/sections/language/en/sections.yml +0 -48
  374. data/lib/zen/package/sections/lib/sections/language/nl/section_entries.yml +0 -44
  375. data/lib/zen/package/sections/lib/sections/language/nl/sections.yml +0 -48
  376. data/lib/zen/package/sections/lib/sections/plugin/section_entries.rb +0 -244
  377. data/lib/zen/package/sections/lib/sections/plugin/sections.rb +0 -87
  378. data/lib/zen/package/settings/lib/settings/language/en/settings.yml +0 -36
  379. data/lib/zen/package/settings/lib/settings/language/nl/settings.yml +0 -37
  380. data/lib/zen/package/settings/lib/settings/plugin/group_base.rb +0 -39
  381. data/lib/zen/package/settings/lib/settings/plugin/setting_base.rb +0 -133
  382. data/lib/zen/package/settings/lib/settings/plugin/settings.rb +0 -251
  383. data/lib/zen/package/users/lib/users/controller/access_rules.rb +0 -284
  384. data/lib/zen/package/users/lib/users/language/en/access_rules.yml +0 -38
  385. data/lib/zen/package/users/lib/users/language/en/user_groups.yml +0 -32
  386. data/lib/zen/package/users/lib/users/language/en/users.yml +0 -57
  387. data/lib/zen/package/users/lib/users/language/nl/access_rules.yml +0 -38
  388. data/lib/zen/package/users/lib/users/language/nl/user_groups.yml +0 -32
  389. data/lib/zen/package/users/lib/users/language/nl/users.yml +0 -57
  390. data/lib/zen/package/users/lib/users/model/access_rule.rb +0 -42
  391. data/lib/zen/package/users/lib/users/public/admin/js/users/access_rules.js +0 -65
  392. data/lib/zen/package/users/lib/users/public/admin/js/users/lib/access_rules.js +0 -49
  393. data/lib/zen/package/users/lib/users/view/admin/access-rules/form.xhtml +0 -120
  394. data/lib/zen/package/users/lib/users/view/admin/access-rules/index.xhtml +0 -102
  395. data/lib/zen/plugin.rb +0 -182
  396. data/lib/zen/plugin/base.rb +0 -46
  397. data/lib/zen/plugin/helper.rb +0 -47
  398. data/lib/zen/plugin/markup/lib/markup.rb +0 -14
  399. data/lib/zen/plugin/markup/lib/markup/language/en/markup.yml +0 -6
  400. data/lib/zen/plugin/markup/lib/markup/markup.rb +0 -165
  401. data/lib/zen/public/admin/js/zen/lib/asset.js +0 -111
  402. data/lib/zen/task/plugin.rake +0 -18
  403. data/lib/zen/theme/base.rb +0 -65
  404. data/proto/app/config/config.rb +0 -18
  405. data/spec/fixtures/zen/language/en/spec.yml +0 -10
  406. data/spec/fixtures/zen/language/nl/spec.yml +0 -7
  407. data/spec/fixtures/zen/package/settings/plugin/settings.rb +0 -20
  408. data/spec/zen/asset.rb +0 -97
  409. data/spec/zen/bin/create.rb +0 -89
  410. data/spec/zen/bin/runner.rb +0 -47
  411. data/spec/zen/helper/acl.rb +0 -149
  412. data/spec/zen/package/categories/plugin/categories.rb +0 -92
  413. data/spec/zen/package/comments/plugin/anti_spam.rb +0 -59
  414. data/spec/zen/package/comments/plugin/comments.rb +0 -107
  415. data/spec/zen/package/menus/plugin/menus.rb +0 -120
  416. data/spec/zen/package/sections/plugin/section_entries.rb +0 -161
  417. data/spec/zen/package/sections/plugin/sections.rb +0 -75
  418. data/spec/zen/package/settings/plugin/settings.rb +0 -33
  419. data/spec/zen/package/users/controller/access_rules.rb +0 -90
  420. data/spec/zen/plugin.rb +0 -64
  421. data/spec/zen/plugin/helper.rb +0 -11
  422. data/spec/zen/plugin/markup.rb +0 -44
data/.gems ADDED
@@ -0,0 +1,20 @@
1
+ # Production dependencies.
2
+ ramaze
3
+ sequel
4
+ bcrypt-ruby
5
+ loofah
6
+ shebang
7
+ ramaze-asset
8
+
9
+ # Development dependencies, no need for specific versions.
10
+ rdiscount
11
+ bacon
12
+ yard
13
+ capybara
14
+ sqlite3
15
+ defensio
16
+ simplecov
17
+ webmock
18
+ RedCloth
19
+ pg
20
+ mysql2
data/.mailmap CHANGED
@@ -1,2 +1,3 @@
1
- YorickPeterse <yorickpeterse@gmail.com> YorickPeterse <info@yorickpeterse.com>
2
- YorickPeterse <yorickpeterse@gmail.com> Yorick Peterse <info@yorickpeterse.com>
1
+ Yorick Peterse <yorickpeterse@gmail.com> YorickPeterse <info@yorickpeterse.com>
2
+ Yorick Peterse <yorickpeterse@gmail.com> Yorick Peterse <info@yorickpeterse.com>
3
+ Yorick Peterse <yorickpeterse@gmail.com> YorickPeterse <yorickpeterse@gmail.com>
data/.rvmrc CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env bash
2
- rvm use --create 1.9.2@zen
2
+ rvm use --create 1.9.3@zen
data/.travis.yml CHANGED
@@ -1,11 +1,22 @@
1
- script: "gem install ramaze; rake test"
1
+ script: "rake setup; rake test:default"
2
2
  rvm:
3
3
  - 1.9.2
4
+ - 1.9.3
4
5
 
5
6
  notifications:
6
- disabled: true
7
+ email:
8
+ - yorickpeterse@gmail.com
7
9
 
8
10
  branches:
9
11
  only:
10
12
  - develop
11
13
  - master
14
+
15
+ env:
16
+ - 'ADAPTER=sqlite'
17
+ - 'ADAPTER=mysql2 DATABASE=zen_dev'
18
+ - 'ADAPTER=postgres DATABASE=zen_dev USERNAME=postgres'
19
+
20
+ before_script:
21
+ - "mysql -e 'CREATE DATABASE zen_dev;'"
22
+ - "psql -c 'CREATE DATABASE zen_dev;' -U postgres"
data/.yardopts ADDED
@@ -0,0 +1,13 @@
1
+ ./lib/zen/**/*.rb ./lib/zen.rb
2
+ -m markdown
3
+ -M rdiscount
4
+ -o ./doc
5
+ -r ./README.md
6
+ -e ./lib/yard/tags.rb
7
+ --private
8
+ --protected
9
+ --asset ./guide/_static:_static
10
+ --asset ./guide/css/common.css:css/common.css
11
+ -
12
+ ./guide/*.md
13
+ LICENSE
data/AUTHORS CHANGED
@@ -1,4 +1,4 @@
1
1
  Following persons have contributed to Zen.
2
2
  (Sorted by number of submitted patches, then alphabetically)
3
3
 
4
- 184 YorickPeterse <yorickpeterse@gmail.com>
4
+ 308 Yorick Peterse <yorickpeterse@gmail.com>
data/README.md CHANGED
@@ -1,82 +1,96 @@
1
- # README
2
-
3
- Zen is a modular CMS written on top of the awesome Ramaze framework. Zen was
4
- built out of the frustration with Expression Engine, a popular CMS built on top
5
- of the Codeigniter framework which in turn is written using PHP. While I really
6
- like Codeigniter, ExpressionEngine and EllisLab there were several problems
7
- that bothered me. So I set out to write a system that's loosely based on
8
- ExpressionEngine but fits my needs. Because of this certain features may seem
9
- similar to those provided by EE and while at certain points there are
10
- similarities there are also pretty big differences.
1
+ # Zen
2
+
3
+ Zen is a flexible Content Management System that gives you full control over
4
+ your content and presentation without limiting your possibilities. One of the
5
+ key features of Zen is that you're able to define your own content types and
6
+ fields. No longer are you limited to only filling in a title and a body field,
7
+ instead you can just create your own as you see fit. Another interesting feature
8
+ is that Zen allows you to "embed" Ramaze applications inside Zen (although they
9
+ might need some minor changes).
10
+
11
+ Zen was originally inspired by [Expression Engine][ee]. EE is based on a similar
12
+ idea of allowing you to define your own fields and such. As much as I enjoyed
13
+ using EE at the time there were several very annoying limitations/problems. The
14
+ admin interface was a mess, the interal API wasn't very well organized and the
15
+ database design was even worse (for example, settings are serialized and encoded
16
+ using some algorithm). This started off the idea of Zen: something that's based
17
+ on a similar idea but solves all the problems I was having with Expression
18
+ Engine.
19
+
20
+ When building Zen I tried to make it pleasant to use, whether you're a
21
+ developer, designer or just a user. I tried to make the administration interface
22
+ as easy to use (although it has it's quirks) as well as making the internal API
23
+ a breeze to use. Another important part is performance. If I'm going to use a
24
+ content management system it should be fast and shouldn't use excessive amounts
25
+ of RAM. It's hard to say how fast Zen really is as it depends on your
26
+ configuration and hardware but one thing is sure: out of the box it should be
27
+ able to handle lots of requests per second without any trouble.
28
+
29
+ Some of the core features of Zen are listed below. Note that these are only a
30
+ small portion of what it can do.
31
+
32
+ * Define your own content fields (called "custom fields") with their own type,
33
+ markup, rules and so on.
34
+ * Fine grained control over user access thanks to an easy to use permission
35
+ system.
36
+ * Be able to use everything Ramaze has to offer. Want to use your own admin
37
+ layout? No problem! Want to drop in an existing Ramaze application? Sure!
38
+ * A well documented, tested and easy to understand API.
39
+ * A database structure that doesn't make you cry.
40
+
41
+ ## Chapters
42
+
43
+ * {file:installation Installation}
44
+ * {file:getting_started Getting Started}
45
+ * {file:hacking Hacking/Contributing}
46
+ * {file:changelog Changelog}
47
+ * {Categories Categories}
48
+ * {Categories::Controller::CategoryGroups Managing Category Groups}
49
+ * {Categories::Controller::Categories Managing Categories}
50
+ * {Ramaze::Helper::CategoryFrontend#get_categories Categories & Templates}
51
+ * {Comments Comments}
52
+ * {Comments::Controller::Comments Managing Comments}
53
+ * {Comments::Controller::CommentsForm Submitting Comments}
54
+ * {Comments::AntiSpam Validating Comments For Spam}
55
+ * {Ramaze::Helper::CommentFrontend#get_comments Comments & Templates}
56
+ * {CustomFields Custom Fields}
57
+ * {CustomFields::Controller::CustomFieldGroups Managing Groups}
58
+ * {CustomFields::Controller::CustomFields Managing Fields}
59
+ * {CustomFields::Controller::CustomFieldTypes Managing Types}
60
+ * {CustomFields::BlueFormParameters Generating BlueForm Parameters}
61
+ * {Menus Menus}
62
+ * {Menus::Controller::Menus Menu Management}
63
+ * {Menus::Controller::MenuItems Managing Menu Items}
64
+ * {Ramaze::Helper::MenuFrontend#render_menu Menus & Templates}
65
+ * {Sections Sections & Section Entries}
66
+ * {Sections::Controller::Sections Managing Sections}
67
+ * {Sections::Controller::SectionEntries Managing Section Entries}
68
+ * {Ramaze::Helper::SectionFrontend#get_entries Section Entries & Templates}
69
+ * {Settings}
70
+ * {Settings::Controller::Settings Managing Settings}
71
+ * {Settings::SingletonMethods#get_setting Retrieving Settings}
72
+ * {Users Users, User Groups and Permissions}
73
+ * {Users::Controller::Users Managing Users}
74
+ * {Users::Controller::UserGroups Managing User Groups}
75
+ * {Zen::Package Packages}
76
+ * {Zen::Theme Themes}
77
+ * {Zen::Language Localization}
78
+ * {Zen::Event Events}
79
+ * {Zen::Validation Validating Objects}
80
+ * {file:asset_management Asset Management}
81
+ * {file:javascript Javascript API}
11
82
 
12
83
  ## Requirements
13
84
 
14
- * Ramaze 2011.01.30 or newer
15
- * Ruby 1.9.2
16
- * A database (MySQL, PostgreSQL, etc)
17
-
18
- ## Installation
19
-
20
- Installing Zen using Rubygems is probably the easiest way:
21
-
22
- $ gem install zen
23
- $ zen create application_name
24
-
25
- If you like to hack with the core of Zen it's best to install it using Git:
26
-
27
- $ git clone git://github.com/zen-cms/Zen-Core.git
28
- $ cd zen-core
29
- $ rake build:gem
30
-
31
- ## Database Support
32
-
33
- Technically Zen should run on any given DBMS that's supported by Sequel as Zen
34
- doesn't use any DBMS specific field types. However, there might be a chance that
35
- it won't work. If you happen to have any problems getting Zen running using your
36
- database of choice feel free to submit a ticket or post it on the mailing
37
- list.
38
-
39
- The Zen website itself is tested and served using MySQL, SQLite3 works just as
40
- fine and PostgreSQL will be tested in the near future.
41
-
42
- ## Running Zen
43
-
44
- Zen can be run using any webserver as long as it supports Rack. Thin, Unicorn or
45
- Passenger, they should all work. The main website of Zen is served using Unicorn
46
- and Nginx, development is done using WEBRick and Unicorn.
47
-
48
- ## Documentation
49
-
50
- The documentation (both the userguide and the API docs) can be found on the
51
- website, located [here][zen documentation].
52
-
53
- ## Hacking/Contributing
54
-
55
- Zen follows a relatively strict set of guidelines when it comes to developing
56
- core features and making sure everything goes along smoothly. When working with
57
- Git a branch model based on [nvie's branch model][nvie branch model] is used.
58
- This means that the "master" branch is directly used for pushing Gems and thus
59
- should *always* contain stable code. Develop is used to contain less stable (but
60
- not unstable) commits that will be pushed into "master" from time to time. All
61
- other branches, e.g. "rspec2" will be used for individual features.
62
-
63
- Besides following this model developers are also expected to write tests using
64
- either RSpec or Capybara for their features. Capybara is used to test
65
- controllers and browser based tests while RSpec is used to test libraries,
66
- helpers, etc.
67
-
68
- ## Coding Standards
69
-
70
- * 2 spaces per indentation level for Ruby code.
71
- * 4 spaces per indentation level for Javascript, CSS and HTML.
72
- * Document your code, that includes CSS and Javascript files.
73
- * No tabs at all times.
74
- * Markdown is used for all markup.
75
- * The maximum width of each line should be no more than 80 characters, this
76
- makes it easier to read code in terminals or when using split view modes. The
77
- limit used to be 90 characters but this was decreased to fit the Ruby coding
78
- standards. Existing code using the 90 character limit will be changed over
79
- time.
85
+ * Ruby >= 1.9.2 (Rubinius, jruby and others are not supported).
86
+ * Ramaze 2011.10.23 or newer.
87
+ * A SQL database supported by Sequel. Zen has been tested and confirmed to
88
+ work on MySQL, SQLite3 and PostgreSQL. You'll also need the required gems for
89
+ these DBMS' such as "mysql2" for MySQL and "pg" for PostgreSQL.
90
+ * A Rack compatible server such as Thin or Unicorn.
91
+ * A library to convert your markup of choice to HTML. Zen by default has support
92
+ for Textile using Redcloth and Markdown using RDiscount. RDiscount and
93
+ RedCloth are installed automatically when needed.
80
94
 
81
95
  ## Community
82
96
 
@@ -88,6 +102,30 @@ in any of the following channels on Freenode:
88
102
 
89
103
  * \#forrst-chat
90
104
  * \#ramaze
105
+ * \#ruby-lang
106
+
107
+ ## Websites Using Zen
108
+
109
+ * http://yorickpeterse.com/
110
+ * http://ramaze.net/
111
+ * http://zen-cms.com/
112
+
113
+ If you've built a website using Zen and you'd like to have it listed here sent
114
+ an Email to me (yorickpeterse [at] gmail [dot] com) or send an Email to the
115
+ mailing list.
116
+
117
+ ## Special Thanks
118
+
119
+ While developing Zen I had a lot of help from various people and I'd like to
120
+ thank them for that. In particular I'd like to thank the following people:
121
+
122
+ * Michael Fellinger (manveru, creator of Ramaze/Innate) for his help and for
123
+ creating such a wonderful framework.
124
+ * Yukihiro Matsumoto for creating Ruby.
125
+ * \#ramaze on Freenode, lots of people in there helped me getting started with
126
+ Ramaze when I first started working with it around september 2010.
127
+ * EllisLab for creating ExpressionEngine, the system Zen was inspired by.
128
+ * Loren Segal for creating YARD and helping me out with various issues.
91
129
 
92
130
  ## License
93
131
 
@@ -96,5 +134,5 @@ open the file "LICENSE".
96
134
 
97
135
  [zen website]: http://zen-cms.com/
98
136
  [zen documentation]: http://zen-cms.com/userguide/index.html
99
- [nvie branch model]: http://nvie.com/posts/a-successful-git-branching-model/
100
137
  [mailing list]: https://groups.google.com/forum/#!forum/zen-cms
138
+ [ee]: http://expressionengine.com/
data/Rakefile CHANGED
@@ -1,10 +1,9 @@
1
- require File.expand_path('../lib/zen', __FILE__)
1
+ require 'rubygems'
2
2
 
3
- module Zen
4
- Gemspec = Gem::Specification::load(__DIR__('zen.gemspec'))
5
- end
3
+ Zen::Gemspec = Gem::Specification::load(
4
+ File.expand_path('../zen.gemspec', __FILE__)
5
+ )
6
6
 
7
- # Load all tasks
8
- Dir.glob(File.expand_path('../lib/zen/task/*.rake', __FILE__)).each do |f|
9
- import(f)
7
+ Dir.glob(File.expand_path('../lib/zen/task/*.rake', __FILE__)).each do |task|
8
+ import(task)
10
9
  end
data/bin/zen CHANGED
@@ -1,9 +1,16 @@
1
1
  #!/usr/bin/env ruby
2
-
3
2
  require 'ramaze'
4
- require 'optparse'
5
3
 
6
- require __DIR__('../lib/zen/version')
7
- require __DIR__('../lib/zen/bin/runner')
4
+ Ramaze.setup(:verbose => false) do
5
+ gem 'shebang', ['~> 0.1']
6
+ end
7
+
8
+ unless $LOAD_PATH.include?(__DIR__('../lib'))
9
+ $LOAD_PATH.unshift(__DIR__('../lib'))
10
+ end
11
+
12
+ require 'zen/version'
13
+ require 'zen/bin/create'
14
+ require 'zen/bin/default'
8
15
 
9
- Zen::Bin::Runner.run
16
+ Shebang.run
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,117 @@
1
+ # Asset Management
2
+
3
+ Zen comes with an asset manager powered by [Ramaze::Asset][ramaze-asset]. Before
4
+ v0.3 Zen used to come with it's own asset manager (``Zen::Asset``) but this
5
+ module is no longer available as of v0.3.
6
+
7
+ Assets can be loaded using the attribute ``Zen.asset``. This attribute contains
8
+ an instance of ``Ramaze::Asset::Environment`` and will automatically minify
9
+ files based on ``Ramaze.options.mode``. If the mode is ``:live`` all the files
10
+ will be minified. Once minified these files will be stored in
11
+ ``public/minified`` in the directory stored in ``Zen.root``. If the
12
+ ``minified/`` directory doesn't exist it will be automatically created.
13
+
14
+ Assets can be loaded in two different ways, either by calling
15
+ ``Zen.asset.serve()`` directly or by using the helper ``Ramaze::Helper::Asset``.
16
+ The asset helper is loaded in the admin controller and therefor available to all
17
+ controllers that extend it. Loading assets using the first method works as
18
+ following:
19
+
20
+ Zen.asset.serve(:javascript, ['admin/js/vendor/mootools/core'])
21
+
22
+ The first parameter is the type of files to load. Out of the box you can use
23
+ ``:javascript`` and ``:css``. The second parameter is an array of paths relative
24
+ to ``/`` (with or without file extensions). The third parameter can be used to
25
+ specify extra options. See [Ramaze::Asset::Environment][ramaze-env] URL for more
26
+ information.
27
+
28
+ The second way of loading assets is by using the Asset helper. This helper has a
29
+ shorter syntax and loads the assets *only* for the calling controller. Generally
30
+ it's better to load assets for a specific controller rather than globally
31
+ loading them. Using this helper you can load assets in your class declaration as
32
+ following:
33
+
34
+ class Posts < Zen::Controller::AdminController
35
+ map '/admin/posts'
36
+
37
+ serve(:javascript, ['admin/js/vendor/mootools/core'])
38
+ end
39
+
40
+ The ``serve()`` method has the same syntax as ``Zen.asset.serve()``, it just
41
+ automatically fills the ``:controller`` option.
42
+
43
+ An example of loading a set of files with various options (taken from the Users
44
+ package):
45
+
46
+ serve(
47
+ :javascript,
48
+ ['admin/js/users/lib/access_rules', 'admin/js/users/access_rules'],
49
+ :methods => [:edit, :new],
50
+ :name => 'users'
51
+ )
52
+
53
+ ## Asset Groups
54
+
55
+ Loading multiple assets, especially ones that ship with Zen, can be a bit
56
+ annoying. Luckily ``Ramaze::Asset`` provides a nice way of dealing with groups
57
+ of assets: asset groups. Asset groups are simple blocks that are invoked on the
58
+ an instance of ``Ramaze::Asset::Environment`` (the one they're added to). Adding
59
+ an asset group can be done as following:
60
+
61
+ Zen.asset.register_asset_group(:my_asset_group) do |asset|
62
+ asset.serve(...)
63
+ end
64
+
65
+ Loading that particular asset group would be done as following:
66
+
67
+ Zen.asset.load_asset_group(:my_asset_group)
68
+
69
+ All additional parameters passed to ``Zen.asset.load_asset_group()`` will be
70
+ passed to the block that defines the asset group. This makes it possible for
71
+ asset groups to know for what controller they should be loaded:
72
+
73
+ Zen.asset.register_asset_group(:my_asset_group) do |asset, controller|
74
+ asset.serve(
75
+ :javascript,
76
+ ['admin/js/vendor/mootools/core'],
77
+ :controller => controller
78
+ )
79
+ end
80
+
81
+ Zen.asset.load_asset_group(:my_asset_group, Sections::Controller::Sections)
82
+
83
+ The Asset helper also contains a method that makes it a bit easier to load
84
+ asset groups in your controllers. This method is called ``load_asset_group()``.
85
+ The first parameter is an array of groups to load and the second parameter an
86
+ array of methods for which to load those groups:
87
+
88
+ class Posts < Zen::Controller::AdminController
89
+ map '/'
90
+
91
+ # Loads the :tabs group for the index() method
92
+ load_asset_group([:tabs], [:index])
93
+ end
94
+
95
+ ### Available Groups
96
+
97
+ Zen comes with the following asset groups that you can use:
98
+
99
+ * tabs
100
+ * datepicker
101
+ * window
102
+ * editor
103
+
104
+ ## Global Assets
105
+
106
+ When starting up Zen will check if it can find a global stylesheet and
107
+ Javascript file. These files can be used to make changes to the admin panel
108
+ without having to go through the process of creating packages or re-defining the
109
+ entire layout. These files are called "global.css" and "global.js" and (in order
110
+ to use them) should be placed in the following directories (where ROOT is the
111
+ root directory of the application):
112
+
113
+ * ROOT/admin/css/global.css
114
+ * ROOT/admin/js/global.js
115
+
116
+ [ramaze-asset]: https://github.com/yorickpeterse/ramaze-asset
117
+ [ramaze-env]: https://github.com/YorickPeterse/ramaze-asset/blob/master/lib/ramaze/asset/environment.rb