zen 0.3 → 0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (373) hide show
  1. data/.gems +3 -2
  2. data/.rvmrc +1 -1
  3. data/.travis.yml +5 -0
  4. data/.yardopts +2 -1
  5. data/LICENSE +1 -1
  6. data/README.md +28 -24
  7. data/Rakefile +5 -2
  8. data/guide/asset_management.md +6 -6
  9. data/guide/autosaving_forms.md +42 -0
  10. data/guide/changelog.md +41 -0
  11. data/guide/faq.md +49 -0
  12. data/guide/getting_started.md +24 -13
  13. data/guide/hacking.md +40 -9
  14. data/guide/images/categories/categories.png +0 -0
  15. data/guide/images/categories/category_groups.png +0 -0
  16. data/guide/images/categories/new_category.png +0 -0
  17. data/guide/images/categories/new_category_group.png +0 -0
  18. data/guide/images/comments/comments.png +0 -0
  19. data/guide/images/comments/edit_comment.png +0 -0
  20. data/guide/images/custom_fields/custom_field_groups.png +0 -0
  21. data/guide/images/custom_fields/custom_field_types.png +0 -0
  22. data/guide/images/custom_fields/custom_fields.png +0 -0
  23. data/guide/images/custom_fields/edit_custom_field_general.png +0 -0
  24. data/guide/images/custom_fields/edit_custom_field_group.png +0 -0
  25. data/guide/images/custom_fields/edit_custom_field_settings.png +0 -0
  26. data/guide/images/custom_fields/edit_custom_field_type.png +0 -0
  27. data/guide/images/dashboard/added.png +0 -0
  28. data/guide/images/dashboard/columns.png +0 -0
  29. data/guide/images/dashboard/dashboard.png +0 -0
  30. data/guide/images/dashboard/options.png +0 -0
  31. data/guide/images/menus/edit_menu.png +0 -0
  32. data/guide/images/menus/edit_menu_item.png +0 -0
  33. data/guide/images/menus/menu_item_hierarchy.png +0 -0
  34. data/guide/images/menus/menu_items.png +0 -0
  35. data/guide/images/menus/menus.png +0 -0
  36. data/guide/images/sections/edit_entry.png +0 -0
  37. data/guide/images/sections/edit_entry_categories.png +0 -0
  38. data/guide/images/sections/edit_entry_general.png +0 -0
  39. data/guide/images/sections/edit_entry_meta.png +0 -0
  40. data/guide/images/sections/edit_section_comments.png +0 -0
  41. data/guide/images/sections/edit_section_general.png +0 -0
  42. data/guide/images/sections/edit_section_groups.png +0 -0
  43. data/guide/images/sections/entries.png +0 -0
  44. data/guide/images/sections/sections.png +0 -0
  45. data/guide/images/settings/overview_general.png +0 -0
  46. data/guide/images/settings/overview_security.png +0 -0
  47. data/guide/images/settings/overview_user.png +0 -0
  48. data/guide/images/users/edit_user.png +0 -0
  49. data/guide/images/users/edit_user_group.png +0 -0
  50. data/guide/images/users/edit_user_group_permissions.png +0 -0
  51. data/guide/images/users/edit_user_permissions.png +0 -0
  52. data/guide/images/users/overview.png +0 -0
  53. data/guide/images/users/user_groups_overview.png +0 -0
  54. data/guide/installation.md +7 -1
  55. data/guide/javascript.md +36 -273
  56. data/guide/javascript/zen_autosave.md +26 -0
  57. data/guide/javascript/zen_editor.md +83 -0
  58. data/guide/javascript/zen_hash.md +34 -0
  59. data/guide/javascript/zen_htmltable.md +78 -0
  60. data/guide/javascript/zen_tabs.md +44 -0
  61. data/guide/javascript/zen_window.md +49 -0
  62. data/guide/zen_compared.md +201 -0
  63. data/lib/vendor/sequel_sluggable.rb +1 -1
  64. data/lib/zen.rb +64 -44
  65. data/lib/zen/asset_groups.rb +10 -10
  66. data/lib/zen/bin/create.rb +8 -1
  67. data/lib/zen/helper/breadcrumb.rb +4 -12
  68. data/lib/zen/helper/controller.rb +209 -6
  69. data/lib/zen/helper/locale.rb +19 -0
  70. data/lib/zen/helper/search.rb +1 -1
  71. data/lib/zen/helper/stacked_aspect.rb +7 -43
  72. data/lib/zen/helper/theme.rb +3 -3
  73. data/lib/zen/language.rb +5 -10
  74. data/lib/zen/language/translation.rb +1 -1
  75. data/lib/zen/layout/admin.xhtml +41 -25
  76. data/lib/zen/layout/login.xhtml +8 -3
  77. data/lib/zen/migrator.rb +54 -0
  78. data/lib/zen/model/helper.rb +20 -1
  79. data/lib/zen/model/init.rb +2 -0
  80. data/lib/zen/model/plugin/events.rb +158 -0
  81. data/lib/zen/package.rb +32 -6
  82. data/lib/zen/package/all.rb +1 -0
  83. data/lib/zen/package/categories/lib/categories.rb +6 -6
  84. data/lib/zen/package/categories/lib/categories/controller/categories.rb +20 -83
  85. data/lib/zen/package/categories/lib/categories/controller/category_groups.rb +23 -74
  86. data/lib/zen/package/categories/lib/categories/model/category.rb +58 -1
  87. data/lib/zen/package/categories/lib/categories/model/category_group.rb +62 -2
  88. data/lib/zen/package/categories/lib/categories/view/admin/categories/form.xhtml +46 -40
  89. data/lib/zen/package/categories/lib/categories/view/admin/categories/index.xhtml +74 -75
  90. data/lib/zen/package/categories/lib/categories/view/admin/category-groups/form.xhtml +27 -24
  91. data/lib/zen/package/categories/lib/categories/view/admin/category-groups/index.xhtml +83 -86
  92. data/lib/zen/package/comments/lib/comments.rb +5 -5
  93. data/lib/zen/package/comments/lib/comments/controller/comments.rb +12 -64
  94. data/lib/zen/package/comments/lib/comments/controller/comments_form.rb +4 -22
  95. data/lib/zen/package/comments/lib/comments/model/comment.rb +65 -16
  96. data/lib/zen/package/comments/lib/comments/view/admin/comments/form.xhtml +52 -49
  97. data/lib/zen/package/comments/lib/comments/view/admin/comments/index.xhtml +52 -60
  98. data/lib/zen/package/comments/migrations/1308774099_comment_status.rb +1 -1
  99. data/lib/zen/package/custom_fields/lib/custom_fields.rb +11 -13
  100. data/lib/zen/package/custom_fields/lib/custom_fields/blue_form_parameters.rb +29 -13
  101. data/lib/zen/package/custom_fields/lib/custom_fields/controller/custom_field_groups.rb +21 -50
  102. data/lib/zen/package/custom_fields/lib/custom_fields/controller/custom_field_types.rb +27 -71
  103. data/lib/zen/package/custom_fields/lib/custom_fields/controller/custom_fields.rb +25 -78
  104. data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field.rb +48 -1
  105. data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field_group.rb +35 -1
  106. data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field_method.rb +3 -0
  107. data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field_type.rb +40 -1
  108. data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field_value.rb +1 -0
  109. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-groups/form.xhtml +29 -26
  110. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-groups/index.xhtml +96 -100
  111. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-types/form.xhtml +56 -53
  112. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-types/index.xhtml +82 -82
  113. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-fields/form.xhtml +88 -85
  114. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-fields/index.xhtml +83 -80
  115. data/lib/zen/package/dashboard/lib/dashboard.rb +28 -0
  116. data/lib/zen/package/dashboard/lib/dashboard/controller/dashboard.rb +154 -0
  117. data/lib/zen/package/dashboard/lib/dashboard/language/en/dashboard.rb +35 -0
  118. data/lib/zen/package/dashboard/lib/dashboard/language/nl/dashboard.rb +36 -0
  119. data/lib/zen/package/dashboard/lib/dashboard/model/widget.rb +45 -0
  120. data/lib/zen/package/dashboard/lib/dashboard/public/admin/dashboard/css/dashboard.css +74 -0
  121. data/lib/zen/package/dashboard/lib/dashboard/public/admin/dashboard/js/dashboard.js +102 -0
  122. data/lib/zen/package/dashboard/lib/dashboard/view/admin/index.xhtml +29 -0
  123. data/lib/zen/package/dashboard/lib/dashboard/view/admin/widget/welcome.xhtml +28 -0
  124. data/lib/zen/package/dashboard/lib/dashboard/widget.rb +292 -0
  125. data/lib/zen/package/dashboard/lib/dashboard/widget/welcome.rb +9 -0
  126. data/lib/zen/package/dashboard/migrations/1326411254_create_schema.rb +28 -0
  127. data/lib/zen/package/extensions/lib/extensions.rb +5 -5
  128. data/lib/zen/package/extensions/lib/extensions/view/admin/extensions/index.xhtml +72 -67
  129. data/lib/zen/package/menu.rb +6 -1
  130. data/lib/zen/package/menus/lib/menus.rb +6 -4
  131. data/lib/zen/package/menus/lib/menus/controller/menu_items.rb +69 -104
  132. data/lib/zen/package/menus/lib/menus/controller/menus.rb +19 -76
  133. data/lib/zen/package/menus/lib/menus/helper/menu.rb +54 -38
  134. data/lib/zen/package/menus/lib/menus/helper/menu_frontend.rb +7 -13
  135. data/lib/zen/package/menus/lib/menus/model/menu.rb +158 -2
  136. data/lib/zen/package/menus/lib/menus/model/menu_item.rb +73 -10
  137. data/lib/zen/package/menus/lib/menus/public/admin/menus/css/menus.css +47 -0
  138. data/lib/zen/package/menus/lib/menus/public/admin/menus/js/lib/nested_sortables.js +549 -0
  139. data/lib/zen/package/menus/lib/menus/public/admin/menus/js/menu_items.js +38 -0
  140. data/lib/zen/package/menus/lib/menus/view/admin/menu-items/form.xhtml +51 -61
  141. data/lib/zen/package/menus/lib/menus/view/admin/menu-items/index.xhtml +18 -81
  142. data/lib/zen/package/menus/lib/menus/view/admin/menus/form.xhtml +49 -44
  143. data/lib/zen/package/menus/lib/menus/view/admin/menus/index.xhtml +81 -83
  144. data/lib/zen/package/sections/lib/sections.rb +9 -4
  145. data/lib/zen/package/sections/lib/sections/controller/section_entries.rb +80 -132
  146. data/lib/zen/package/sections/lib/sections/controller/sections.rb +27 -73
  147. data/lib/zen/package/sections/lib/sections/helper/section.rb +44 -1
  148. data/lib/zen/package/sections/lib/sections/language/en/section_entries.rb +2 -0
  149. data/lib/zen/package/sections/lib/sections/language/nl/section_entries.rb +2 -0
  150. data/lib/zen/package/sections/lib/sections/model/section.rb +48 -1
  151. data/lib/zen/package/sections/lib/sections/model/section_entry.rb +55 -5
  152. data/lib/zen/package/sections/lib/sections/model/section_entry_status.rb +2 -0
  153. data/lib/zen/package/sections/lib/sections/view/admin/section-entries/form.xhtml +76 -67
  154. data/lib/zen/package/sections/lib/sections/view/admin/section-entries/index.xhtml +74 -79
  155. data/lib/zen/package/sections/lib/sections/view/admin/section-entries/recent_entries.xhtml +45 -0
  156. data/lib/zen/package/sections/lib/sections/view/admin/sections/form.xhtml +119 -0
  157. data/lib/zen/package/sections/lib/sections/view/admin/sections/index.xhtml +96 -0
  158. data/lib/zen/package/sections/lib/sections/widget/recent_entries.rb +14 -0
  159. data/lib/zen/package/sections/migrations/1308813320_section_entry_statuses.rb +1 -1
  160. data/lib/zen/package/settings/lib/settings.rb +14 -5
  161. data/lib/zen/package/settings/lib/settings/controller/settings.rb +4 -4
  162. data/lib/zen/package/settings/lib/settings/language/nl/settings.rb +1 -1
  163. data/lib/zen/package/settings/lib/settings/setting.rb +1 -1
  164. data/lib/zen/package/settings/lib/settings/view/admin/settings/index.xhtml +21 -17
  165. data/lib/zen/package/users/lib/users.rb +18 -19
  166. data/lib/zen/package/users/lib/users/controller/user_groups.rb +23 -50
  167. data/lib/zen/package/users/lib/users/controller/users.rb +57 -89
  168. data/lib/zen/package/users/lib/users/helper/acl.rb +1 -0
  169. data/lib/zen/package/users/lib/users/language/en/user_groups.rb +1 -0
  170. data/lib/zen/package/users/lib/users/language/en/users.rb +2 -1
  171. data/lib/zen/package/users/lib/users/language/nl/user_groups.rb +1 -0
  172. data/lib/zen/package/users/lib/users/language/nl/users.rb +2 -1
  173. data/lib/zen/package/users/lib/users/model/permission.rb +13 -0
  174. data/lib/zen/package/users/lib/users/model/user.rb +57 -4
  175. data/lib/zen/package/users/lib/users/model/user_group.rb +37 -3
  176. data/lib/zen/package/users/lib/users/model/user_status.rb +4 -0
  177. data/lib/zen/package/users/lib/users/public/admin/{css/users/permissions.css → users/css/users.css} +0 -0
  178. data/lib/zen/package/users/lib/users/public/admin/{js/users/permissions.js → users/js/users.js} +4 -2
  179. data/lib/zen/package/users/lib/users/view/admin/user-groups/form.xhtml +51 -47
  180. data/lib/zen/package/users/lib/users/view/admin/user-groups/index.xhtml +62 -69
  181. data/lib/zen/package/users/lib/users/view/admin/users/form.xhtml +92 -82
  182. data/lib/zen/package/users/lib/users/view/admin/users/index.xhtml +68 -66
  183. data/lib/zen/package/users/lib/users/view/admin/users/login.xhtml +36 -28
  184. data/lib/zen/package/users/lib/users/view/admin/users/permissions.xhtml +5 -7
  185. data/lib/zen/package/users/lib/users/view/admin/users/register.xhtml +47 -41
  186. data/lib/zen/package/users/migrations/1320272365_status_ids.rb +1 -1
  187. data/lib/zen/public/admin/{js/vendor/mootools → mootools/js}/core.js +113 -108
  188. data/lib/zen/public/admin/{js/vendor/mootools → mootools/js}/more.js +99 -6
  189. data/lib/zen/public/admin/zen/css/buttons.css +106 -0
  190. data/lib/zen/public/admin/{css/zen → zen/css}/datepicker.css +45 -30
  191. data/lib/zen/public/admin/zen/css/editor.css +69 -0
  192. data/lib/zen/public/admin/{css/zen → zen/css}/forms.css +28 -30
  193. data/lib/zen/public/admin/zen/css/general.css +183 -0
  194. data/lib/zen/public/admin/zen/css/layout.css +224 -0
  195. data/lib/zen/public/admin/zen/css/messages.css +34 -0
  196. data/lib/zen/public/admin/{css/zen → zen/css}/reset.css +4 -9
  197. data/lib/zen/public/admin/zen/css/tables.css +57 -0
  198. data/lib/zen/public/admin/zen/css/tabs.css +84 -0
  199. data/lib/zen/public/admin/zen/css/window.css +74 -0
  200. data/lib/zen/public/admin/{images/zen → zen/images}/icons/asc.png +0 -0
  201. data/lib/zen/public/admin/{images/zen → zen/images}/icons/bold.png +0 -0
  202. data/lib/zen/public/admin/zen/images/icons/box.png +0 -0
  203. data/lib/zen/public/admin/zen/images/icons/categories.png +0 -0
  204. data/lib/zen/public/admin/{images/zen → zen/images}/icons/close.png +0 -0
  205. data/lib/zen/public/admin/zen/images/icons/comment.png +0 -0
  206. data/lib/zen/public/admin/{images/zen → zen/images}/icons/desc.png +0 -0
  207. data/lib/zen/public/admin/{images/zen → zen/images}/icons/edit.png +0 -0
  208. data/lib/zen/public/admin/{images/zen → zen/images}/icons/error.png +0 -0
  209. data/lib/zen/public/admin/zen/images/icons/external.png +0 -0
  210. data/lib/zen/public/admin/zen/images/icons/globe.png +0 -0
  211. data/lib/zen/public/admin/{images/zen → zen/images}/icons/italic.png +0 -0
  212. data/lib/zen/public/admin/{images/zen → zen/images}/icons/link.png +0 -0
  213. data/lib/zen/public/admin/zen/images/icons/lock.png +0 -0
  214. data/lib/zen/public/admin/{images/zen → zen/images}/icons/ol.png +0 -0
  215. data/lib/zen/public/admin/zen/images/icons/pages.png +0 -0
  216. data/lib/zen/public/admin/{images/zen → zen/images}/icons/preview.png +0 -0
  217. data/lib/zen/public/admin/zen/images/icons/relation.png +0 -0
  218. data/lib/zen/public/admin/zen/images/icons/settings.png +0 -0
  219. data/lib/zen/public/admin/zen/images/icons/template.png +0 -0
  220. data/lib/zen/public/admin/{images/zen → zen/images}/icons/ul.png +0 -0
  221. data/lib/zen/public/admin/{images/zen → zen/images}/icons/user.png +0 -0
  222. data/lib/zen/public/admin/zen/images/icons/user_group.png +0 -0
  223. data/lib/zen/public/admin/{js/zen → zen/js}/index.js +21 -9
  224. data/lib/zen/public/admin/zen/js/lib/autosave.js +185 -0
  225. data/lib/zen/public/admin/zen/js/lib/base.js +60 -0
  226. data/lib/zen/public/admin/{js/vendor → zen/js/lib}/datepicker.js +52 -28
  227. data/lib/zen/public/admin/{js/zen → zen/js}/lib/editor.js +23 -34
  228. data/lib/zen/public/admin/{js/zen → zen/js}/lib/editor/markdown.js +5 -1
  229. data/lib/zen/public/admin/{js/zen → zen/js}/lib/editor/textile.js +4 -0
  230. data/lib/zen/public/admin/zen/js/lib/hash.js +218 -0
  231. data/lib/zen/public/admin/{js/zen → zen/js}/lib/html_table.js +5 -0
  232. data/lib/zen/public/admin/zen/js/lib/tabs.js +194 -0
  233. data/lib/zen/public/admin/{js/zen → zen/js}/lib/window.js +54 -29
  234. data/lib/zen/security.rb +50 -0
  235. data/lib/zen/spec/helper.rb +5 -120
  236. data/lib/zen/spec/helper/capybara.rb +75 -0
  237. data/lib/zen/spec/helper/general.rb +75 -0
  238. data/lib/zen/spec/simplecov.rb +1 -0
  239. data/lib/zen/task/build.rake +2 -21
  240. data/lib/zen/task/clean.rake +1 -10
  241. data/lib/zen/task/db.rake +4 -10
  242. data/lib/zen/task/package.rake +2 -5
  243. data/lib/zen/task/setup.rake +1 -1
  244. data/lib/zen/task/test.rake +6 -6
  245. data/lib/zen/task/theme.rake +2 -5
  246. data/lib/zen/theme.rb +26 -22
  247. data/lib/zen/version.rb +1 -1
  248. data/lib/zen/view/bottom.xhtml +2 -3
  249. data/lib/zen/view/search.xhtml +3 -5
  250. data/proto/app/config/config.rb.erb +1 -1
  251. data/proto/app/theme/default/index.xhtml +116 -20
  252. data/proto/app/theme/partials/head.xhtml +9 -0
  253. data/proto/app/theme/partials/sidebar.xhtml +40 -0
  254. data/proto/app/theme/theme.rb +3 -0
  255. data/spec/Rakefile +1 -2
  256. data/spec/fixtures/zen/helper/stacked_aspect.rb +54 -0
  257. data/spec/fixtures/zen/package/dashboard/controller/widget.rb +15 -0
  258. data/spec/fixtures/zen/package/dashboard/widget.rb +5 -0
  259. data/spec/fixtures/zen/theme/theme.rb +2 -2
  260. data/spec/helper.rb +19 -10
  261. data/spec/zen/controller/admin_controller.rb +3 -3
  262. data/spec/zen/controller/main_controller.rb +7 -7
  263. data/spec/zen/controller/preview.rb +3 -3
  264. data/spec/zen/event.rb +4 -4
  265. data/spec/zen/helper/breadcrumb.rb +4 -8
  266. data/spec/zen/helper/controller.rb +47 -4
  267. data/spec/zen/helper/locale.rb +3 -3
  268. data/spec/zen/helper/message.rb +4 -4
  269. data/spec/zen/helper/stacked_aspect.rb +40 -0
  270. data/spec/zen/helper/theme.rb +9 -9
  271. data/spec/zen/language.rb +8 -8
  272. data/spec/zen/markup.rb +6 -6
  273. data/spec/zen/package.rb +11 -9
  274. data/spec/zen/package/categories/controller/categories.rb +56 -24
  275. data/spec/zen/package/categories/controller/category_groups.rb +55 -23
  276. data/spec/zen/package/categories/helper/category.rb +5 -5
  277. data/spec/zen/package/categories/helper/category_frontend.rb +5 -5
  278. data/spec/zen/package/comments/anti_spam.rb +4 -4
  279. data/spec/zen/package/comments/controller/comments.rb +95 -24
  280. data/spec/zen/package/comments/controller/comments_form.rb +31 -26
  281. data/spec/zen/package/comments/helper/comment.rb +3 -3
  282. data/spec/zen/package/comments/helper/comment_frontend.rb +6 -6
  283. data/spec/zen/package/custom_fields/blue_form_parameters.rb +8 -8
  284. data/spec/zen/package/custom_fields/controller/custom_field_groups.rb +58 -27
  285. data/spec/zen/package/custom_fields/controller/custom_field_types.rb +57 -27
  286. data/spec/zen/package/custom_fields/controller/custom_fields.rb +58 -27
  287. data/spec/zen/package/custom_fields/helper/custom_field.rb +7 -7
  288. data/spec/zen/package/dashboard/controller/dashboard.rb +147 -0
  289. data/spec/zen/package/dashboard/widget.rb +56 -0
  290. data/spec/zen/package/extensions/controller/extensions.rb +4 -4
  291. data/spec/zen/package/menus/controller/menu_items.rb +48 -39
  292. data/spec/zen/package/menus/controller/menus.rb +55 -24
  293. data/spec/zen/package/menus/helper/menu.rb +6 -14
  294. data/spec/zen/package/menus/helper/menu_frontend.rb +7 -7
  295. data/spec/zen/package/menus/model/menu.rb +121 -0
  296. data/spec/zen/package/menus/model/menu_item.rb +34 -0
  297. data/spec/zen/package/sections/controller/section_entries.rb +104 -39
  298. data/spec/zen/package/sections/controller/sections.rb +60 -27
  299. data/spec/zen/package/sections/helper/section.rb +5 -5
  300. data/spec/zen/package/sections/helper/section_frontend.rb +9 -9
  301. data/spec/zen/package/sections/widget.rb +44 -0
  302. data/spec/zen/package/settings/controller/settings.rb +18 -16
  303. data/spec/zen/package/settings/settings.rb +12 -12
  304. data/spec/zen/package/users/controller/user_groups.rb +61 -29
  305. data/spec/zen/package/users/controller/users.rb +118 -39
  306. data/spec/zen/package/users/helper/access.rb +3 -3
  307. data/spec/zen/package/users/helper/acl.rb +4 -4
  308. data/spec/zen/package/users/helper/users.rb +5 -5
  309. data/spec/zen/security.rb +25 -0
  310. data/spec/zen/theme.rb +20 -18
  311. data/spec/zen/validation.rb +5 -5
  312. data/spec/zen/vendor/sequel_sluggable.rb +12 -0
  313. data/zen.gemspec +27 -4
  314. metadata +182 -124
  315. data/AUTHORS +0 -4
  316. data/guide/_static/categories/categories.png +0 -0
  317. data/guide/_static/categories/category_groups.png +0 -0
  318. data/guide/_static/categories/new_category.png +0 -0
  319. data/guide/_static/categories/new_category_group.png +0 -0
  320. data/guide/_static/comments/comments.png +0 -0
  321. data/guide/_static/comments/edit_comment.png +0 -0
  322. data/guide/_static/custom_fields/custom_field_groups.png +0 -0
  323. data/guide/_static/custom_fields/custom_field_types.png +0 -0
  324. data/guide/_static/custom_fields/custom_fields.png +0 -0
  325. data/guide/_static/custom_fields/edit_custom_field_general.png +0 -0
  326. data/guide/_static/custom_fields/edit_custom_field_group.png +0 -0
  327. data/guide/_static/custom_fields/edit_custom_field_settings.png +0 -0
  328. data/guide/_static/custom_fields/edit_custom_field_type.png +0 -0
  329. data/guide/_static/menus/edit_menu.png +0 -0
  330. data/guide/_static/menus/edit_menu_item.png +0 -0
  331. data/guide/_static/menus/menu_items.png +0 -0
  332. data/guide/_static/menus/menus.png +0 -0
  333. data/guide/_static/sections/edit_entry.png +0 -0
  334. data/guide/_static/sections/edit_entry_categories.png +0 -0
  335. data/guide/_static/sections/edit_entry_general.png +0 -0
  336. data/guide/_static/sections/edit_entry_meta.png +0 -0
  337. data/guide/_static/sections/edit_section_comments.png +0 -0
  338. data/guide/_static/sections/edit_section_general.png +0 -0
  339. data/guide/_static/sections/edit_section_groups.png +0 -0
  340. data/guide/_static/sections/entries.png +0 -0
  341. data/guide/_static/sections/sections.png +0 -0
  342. data/guide/_static/settings/overview_general.png +0 -0
  343. data/guide/_static/settings/overview_security.png +0 -0
  344. data/guide/_static/settings/overview_user.png +0 -0
  345. data/guide/_static/users/edit_user.png +0 -0
  346. data/guide/_static/users/edit_user_group.png +0 -0
  347. data/guide/_static/users/edit_user_group_permissions.png +0 -0
  348. data/guide/_static/users/edit_user_permissions.png +0 -0
  349. data/guide/_static/users/overview.png +0 -0
  350. data/guide/_static/users/user_groups_overview.png +0 -0
  351. data/lib/zen/controller/translations.rb +0 -49
  352. data/lib/zen/package/sections/lib/sections/view/admin/form.xhtml +0 -113
  353. data/lib/zen/package/sections/lib/sections/view/admin/index.xhtml +0 -97
  354. data/lib/zen/public/admin/css/zen/buttons.css +0 -46
  355. data/lib/zen/public/admin/css/zen/editor.css +0 -88
  356. data/lib/zen/public/admin/css/zen/general.css +0 -109
  357. data/lib/zen/public/admin/css/zen/grid.css +0 -100
  358. data/lib/zen/public/admin/css/zen/layout.css +0 -184
  359. data/lib/zen/public/admin/css/zen/messages.css +0 -54
  360. data/lib/zen/public/admin/css/zen/tables.css +0 -97
  361. data/lib/zen/public/admin/css/zen/tabs.css +0 -47
  362. data/lib/zen/public/admin/css/zen/window.css +0 -73
  363. data/lib/zen/public/admin/images/zen/icons/accept.png +0 -0
  364. data/lib/zen/public/admin/images/zen/icons/add.png +0 -0
  365. data/lib/zen/public/admin/images/zen/icons/back.png +0 -0
  366. data/lib/zen/public/admin/images/zen/icons/delete.png +0 -0
  367. data/lib/zen/public/admin/images/zen/icons/help.png +0 -0
  368. data/lib/zen/public/admin/images/zen/icons/info.png +0 -0
  369. data/lib/zen/public/admin/images/zen/icons/logout.png +0 -0
  370. data/lib/zen/public/admin/images/zen/icons/pdf.png +0 -0
  371. data/lib/zen/public/admin/images/zen/icons/view.png +0 -0
  372. data/lib/zen/public/admin/js/zen/lib/tabs.js +0 -207
  373. data/lib/zen/view/main.xhtml +0 -19
@@ -36,7 +36,13 @@ have a local copy there are two ways of using it:
36
36
 
37
37
  The latter is recommended as you don't have to build the Gem each time. In order
38
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.
39
+ the gem with a path to the local copy of Zen. This means that the following:
40
+
41
+ require 'zen'
42
+
43
+ Should be converted to this:
44
+
45
+ require File.expand_path('../path/to/zen/lib/zen', __FILE__)
40
46
 
41
47
  For an overview of all available tasks that can be executed in your local copy
42
48
  of Zen execute the following command:
@@ -23,8 +23,7 @@ classes created by other developers.
23
23
 
24
24
  Creating a class (including a namespace) works like the following:
25
25
 
26
- // This would be your namespace
27
- var Foobar = {};
26
+ namespace('Foobar');
28
27
 
29
28
  Foobar.ClassName = new Class(
30
29
  {
@@ -39,8 +38,7 @@ This allows you to access your class as following:
39
38
  var instance = new Foobar.ClassName();
40
39
 
41
40
  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.
41
+ the "Zen" namespace, it's reserved for all the classes that ship with Zen.
44
42
 
45
43
  It's also important to remember that there's no guarantee Javascript (and CSS)
46
44
  files are loaded in a particular order. Because of that you should always wrap
@@ -54,23 +52,16 @@ your code (except for class declarations and such) in the following code:
54
52
  This function will be executed once the DOM (and thus all the resources) are
55
53
  fully loaded.
56
54
 
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
55
  ## Available Classes
65
56
 
66
57
  Out of the box the following classes are available:
67
58
 
68
- * Zen.Window
69
- * Zen.Tabs
70
- * Zen.Editor
71
- * Zen.Editor.Markdown
72
- * Zen.Editor.Textile
73
- * Zen.HtmlTable
59
+ * {file:javascript/zen_window Zen.Window}
60
+ * {file:javascript/zen_tabs Zen.Tabs}
61
+ * {file:javascript/zen_hash Zen.Hash}
62
+ * {file:javascript/zen_editor Zen.Editor}
63
+ * {file:javascript/zen_htmltable Zen.HtmlTable}
64
+ * {file:javascript/zen_autosave Zen.Autosave}
74
65
 
75
66
  The following third-party classes are also provided:
76
67
 
@@ -78,275 +69,47 @@ The following third-party classes are also provided:
78
69
  * Picker.Date
79
70
  * Picker.Attach
80
71
 
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:
72
+ ## Datepickers
101
73
 
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.
74
+ Zen comes with a version of [Mootools Datepicker][mootools datepicker]. To load
75
+ this datepicker you must load the asset group ``:datepicker`` in your
76
+ controller:
108
77
 
109
- Creating a new window with some of these options would look something like the
110
- following:
78
+ class Posts < Zen::Controller::AdminController
79
+ map '/admin/posts'
111
80
 
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>
81
+ load_asset_group [:datepicker], [:new, :edit]
138
82
 
139
- ### Zen.Tabs
83
+ def new
140
84
 
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.
85
+ end
144
86
 
145
- The syntax of creating an instance of this class looks like the following:
87
+ def edit(id)
146
88
 
147
- var tabs = new Zen.Tabs(selector[, options]);
89
+ end
90
+ end
148
91
 
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).
92
+ For more information on loading assets see {file:asset_management.md Asset
93
+ Management}.
153
94
 
154
- A short example looks like the following:
95
+ In order to use the datepicker you'll have to add the class "date" to your input
96
+ elements:
155
97
 
156
- var tabs = new Zen.Tabs('div.my_tabs ul');
98
+ <input type="text" name="my_date" class="date" />
157
99
 
158
- The following options can be used to customize the tabs:
100
+ In order to customize the datepicker you can set the following attributes:
159
101
 
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.
102
+ * data-date-format: a custom date format to use for input and output
103
+ values. Set to the format as defined in ``Zen.date_format`` by default.
104
+ * data-date-time: when set to "1" or "true" users can also select a time. Set to
105
+ false by default.
106
+ * data-date-min: string containing the minimum date.
107
+ * data-date-max: string containing the maximum date.
164
108
 
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":
109
+ An example of using these attributes is the following:
168
110
 
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.
111
+ <input type="text" name="my_date" class="date" data-date-format="%d-%m-%Y"
112
+ data-date-min="01-01-2012" data-date-max="01-01-2013" />
351
113
 
352
114
  [mootools]: http://mootools.net/
115
+ [mootools datepicker]: https://github.com/arian/mootools-datepicker
@@ -0,0 +1,26 @@
1
+ # Zen.Autosave
2
+
3
+ Zen.Autosave automatically saves form data at a given interval. Automatically
4
+ saving form data makes it more pleasant for users to work with their data as
5
+ the risk of data loss is minimized.
6
+
7
+ Basic usage of this class is as following:
8
+
9
+ new Zen.Autosave(
10
+ $('my_form'),
11
+ 'http://localhost/admin/category-groups/autosave'
12
+ );
13
+
14
+ When creating a new instance of this class you are required to specify a
15
+ single Element instance as well as the URL to submit the data to. The element
16
+ is specified as the first parameter, the URL as the second one. The optional
17
+ third parameter can be used for setting optional options such as the interval
18
+ and the HTTP method to use for submitting the data.
19
+
20
+ By default the interval is set to 10 minutes, this can be changed as
21
+ following:
22
+
23
+ new Zen.Autosave(element, url, {interval: 300000});
24
+
25
+ This would cause the form data to be saved every 5 minutes instead of every
26
+ 10 minutes.