zen 0.3 → 0.4

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 (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
@@ -3,59 +3,62 @@
3
3
  <h1>#{get_breadcrumbs}</h1>
4
4
  </header>
5
5
 
6
- #{form_for(
7
- @comment,
8
- :method => :post,
9
- :action => Comments::Controller::Comments.r(:save),
10
- :id => :comment_form
11
- ) do |f|
12
- f.input_hidden(:csrf_token, get_csrf_token)
13
- f.input_hidden(:id , @comment.id)
6
+ <div class="body">
7
+ #{form_for(
8
+ @comment,
9
+ :method => :post,
10
+ :action => Comments::Controller::Comments.r(:save),
11
+ :id => :comment_form,
12
+ :'data-autosave-url' => Comments::Controller::Comments.r(:autosave)
13
+ ) do |f|
14
+ f.input_hidden(:csrf_token, get_csrf_token)
15
+ f.input_hidden(:id , @comment.id)
14
16
 
15
- f.input_text(
16
- lang('comments.labels.name'),
17
- :name,
18
- :value => @comment.user_name,
19
- :disabled => :disabled
20
- )
17
+ f.input_text(
18
+ lang('comments.labels.name'),
19
+ :name,
20
+ :value => @comment.user_name,
21
+ :disabled => :disabled
22
+ )
21
23
 
22
- if @comment.user.nil?
24
+ if @comment.user.nil?
25
+ f.input_text(
26
+ lang('comments.labels.website'),
27
+ :website,
28
+ :value => @comment.website,
29
+ :maxlength => 255
30
+ )
23
31
 
24
- f.input_text(
25
- lang('comments.labels.website'),
26
- :website,
27
- :value => @comment.website,
28
- :maxlength => 255
29
- )
32
+ f.input_text(
33
+ lang('comments.labels.email'),
34
+ :email,
35
+ :value => @comment.email,
36
+ :required => :required,
37
+ :maxlength => 255
38
+ )
39
+ end
30
40
 
31
- f.input_text(
32
- lang('comments.labels.email'),
33
- :email,
34
- :value => @comment.email,
35
- :required => :required,
36
- :maxlength => 255
37
- )
41
+ f.select(
42
+ lang('comments.labels.status'),
43
+ :comment_status_id,
44
+ :values => Comments::Model::Comment.status_hash,
45
+ :selected => @comment.comment_status_id,
46
+ :size => 1,
47
+ :required => :required
48
+ )
38
49
 
39
- end
50
+ f.textarea(
51
+ lang('comments.labels.comment'),
52
+ :comment,
53
+ :rows => 10,
54
+ :required => :required
55
+ )
40
56
 
41
- f.select(
42
- lang('comments.labels.status'),
43
- :comment_status_id,
44
- :values => Comments::Model::Comment.status_hash,
45
- :selected => @comment.comment_status_id,
46
- :size => 1,
47
- :required => :required
48
- )
49
-
50
- f.textarea(
51
- lang('comments.labels.comment'),
52
- :comment,
53
- :rows => 10,
54
- :required => :required
55
- )
56
-
57
- f.g.div(:class => 'button') do
58
- f.g.input(:type => 'submit', :value => lang('comments.buttons.save'))
59
- end
60
- end}
57
+ f.g.input(
58
+ :type => 'submit',
59
+ :value => lang('comments.buttons.save'),
60
+ :class => 'button'
61
+ )
62
+ end}
63
+ </div>
61
64
  </section>
@@ -1,75 +1,67 @@
1
1
  <section>
2
- #{render_search_form(::Comments::Controller::Comments.r(:index))}
3
-
4
- <header>
2
+ <header class="with_search">
5
3
  <h1>#{get_breadcrumbs}</h1>
6
- </header>
7
4
 
8
- <form method="post" action="#{Comments::Controller::Comments.r(:delete)}">
9
- <input type="hidden" name="csrf_token" value="#{get_csrf_token}" />
5
+ #{render_search_form(::Comments::Controller::Comments.r(:index))}
6
+ </header>
10
7
 
11
- <?r if !@comments.empty? ?>
8
+ <div class="body">
9
+ <form method="post" action="#{Comments::Controller::Comments.r(:delete)}">
10
+ <input type="hidden" name="csrf_token" value="#{get_csrf_token}" />
12
11
 
13
- <table>
14
- <thead>
15
- <?r if user_authorized?(:delete_comment) ?>
16
- <th class="no_sort">
17
- <input type="checkbox" />
18
- </th>
19
- <?r end ?>
12
+ <?r if !@comments.empty? ?>
20
13
 
21
- <th>#{lang('comments.labels.id')}</th>
22
- <th>#{lang('comments.labels.comment')}</th>
23
- <th>#{lang('comments.labels.entry')}</th>
24
- <th>#{lang('comments.labels.status')}</th>
25
- <th>#{lang('comments.labels.name')}</th>
26
- <th>#{lang('comments.labels.email')}</th>
27
- <th>#{lang('comments.labels.website')}</th>
28
- <th>#{lang('comments.labels.created_at')}</th>
29
- </thead>
30
- <tbody>
31
- <?r @comments.each do |comment| ?>
32
- <tr>
14
+ <table>
15
+ <thead>
33
16
  <?r if user_authorized?(:delete_comment) ?>
34
- <td>
35
- <input type="checkbox" name="comment_ids[]"
36
- value="#{comment.id}" />
37
- </td>
17
+ <th class="no_sort">
18
+ <input type="checkbox" />
19
+ </th>
38
20
  <?r end ?>
39
21
 
40
- <td>#{comment.id}</td>
41
- <td>
42
- #{if user_authorized?(:edit_comment)
43
- comment.summary(true)
44
- else
45
- comment.summary
46
- end}
47
- </td>
48
- <td>#{comment.section_entry.title}</td>
49
- <td>#{comment.status_name}</td>
50
- <td>#{comment.user_name}</td>
51
- <td>#{comment.user_email}</td>
52
- <td>#{comment.user_website(true)}</td>
53
- <td>#{format_date(comment.created_at)}</td>
54
- </tr>
55
- <?r end ?>
56
- </tbody>
57
- </table>
22
+ <th>#{lang('comments.labels.id')}</th>
23
+ <th>#{lang('comments.labels.comment')}</th>
24
+ <th>#{lang('comments.labels.entry')}</th>
25
+ <th>#{lang('comments.labels.status')}</th>
26
+ <th>#{lang('comments.labels.name')}</th>
27
+ <th>#{lang('comments.labels.email')}</th>
28
+ <th>#{lang('comments.labels.created_at')}</th>
29
+ </thead>
30
+ <tbody>
31
+ <?r @comments.each do |comment| ?>
32
+ <tr>
33
+ <?r if user_authorized?(:delete_comment) ?>
34
+ <td>
35
+ <input type="checkbox" name="comment_ids[]"
36
+ value="#{comment.id}" />
37
+ </td>
38
+ <?r end ?>
39
+
40
+ <td>#{comment.id}</td>
41
+ <td>
42
+ #{comment.summary(user_authorized?(:edit_comment))}
43
+ </td>
44
+ <td>#{comment.section_entry.title}</td>
45
+ <td>#{comment.status_name}</td>
46
+ <td>#{comment.user_website(true, comment.user_name)}</td>
47
+ <td>#{comment.user_email}</td>
48
+ <td>#{format_date(comment.created_at)}</td>
49
+ </tr>
50
+ <?r end ?>
51
+ </tbody>
52
+ </table>
58
53
 
59
- #{if @comments.respond_to?(:navigation) and @comments.page_count > 1
60
- @comments.navigation
61
- end}
54
+ #{render_pagination(@comments)}
62
55
 
63
- <?r else ?>
56
+ <?r else ?>
64
57
 
65
- <p>#{lang('comments.messages.no_comments')}</p>
58
+ <p>#{lang('comments.messages.no_comments')}</p>
66
59
 
67
- <?r end ?>
60
+ <?r end ?>
68
61
 
69
- <?r if user_authorized?(:delete_comment) and !@comments.empty? ?>
70
- <div class="button">
71
- <input type="submit" value="#{lang('comments.buttons.delete')}" />
72
- </div>
73
- <?r end ?>
74
- </form>
62
+ <?r if user_authorized?(:delete_comment) and !@comments.empty? ?>
63
+ #{delete_button(lang('comments.buttons.delete'))}
64
+ <?r end ?>
65
+ </form>
66
+ </div>
75
67
  </section>
@@ -49,7 +49,7 @@ Sequel.migration do
49
49
  # MySQL doesn't automatically drop foreign keys, because of this the one
50
50
  # for the comment status ID has to be removed manually. Luckily the name
51
51
  # of the foreign key is rather easy to figure out.
52
- if Zen.database.adapter_scheme.to_s.include?('mysql')
52
+ if Zen.database.database_type.to_s.include?('mysql')
53
53
  drop_constraint(:comments_ibfk_2, :type => :foreign_key)
54
54
  end
55
55
 
@@ -7,17 +7,13 @@ Zen::Package.add do |p|
7
7
  p.root = __DIR__('custom_fields')
8
8
  p.migrations = __DIR__('../migrations')
9
9
 
10
- p.menu(
11
- 'custom_fields.titles.index',
10
+ p.menu 'custom_fields.titles.index',
12
11
  '/admin/custom-field-groups',
13
12
  :permission => :show_custom_field_group
14
- ) do |sub|
15
- sub.menu(
16
- 'custom_field_types.titles.index',
17
- '/admin/custom-field-types',
18
- :permission => :show_custom_field
19
- )
20
- end
13
+
14
+ p.menu 'custom_field_types.titles.index',
15
+ '/admin/custom-field-types',
16
+ :permission => :show_custom_field
21
17
 
22
18
  p.permission :show_custom_field_group, 'custom_field_groups.permissions.show'
23
19
  p.permission :edit_custom_field_group, 'custom_field_groups.permissions.edit'
@@ -36,10 +32,6 @@ Zen::Package.add do |p|
36
32
  p.permission :delete_custom_field, 'custom_fields.permissions.delete'
37
33
  end
38
34
 
39
- Zen::Language.load('custom_fields')
40
- Zen::Language.load('custom_field_groups')
41
- Zen::Language.load('custom_field_types')
42
-
43
35
  require __DIR__('custom_fields/model/custom_field_method')
44
36
  require __DIR__('custom_fields/model/custom_field_type')
45
37
  require __DIR__('custom_fields/model/custom_field')
@@ -51,3 +43,9 @@ require __DIR__('custom_fields/controller/custom_fields')
51
43
  require __DIR__('custom_fields/controller/custom_field_types')
52
44
 
53
45
  require __DIR__('custom_fields/blue_form_parameters')
46
+
47
+ Zen::Event.listen :post_start do
48
+ Zen::Language.load('custom_fields')
49
+ Zen::Language.load('custom_field_groups')
50
+ Zen::Language.load('custom_field_types')
51
+ end
@@ -87,11 +87,9 @@ module CustomFields
87
87
  def input_text(field, field_value)
88
88
  type = field.custom_field_type
89
89
  value = field_value.value rescue nil
90
+ name = "custom_field_value_#{field.id}"
90
91
  params = [
91
- :input_text,
92
- field.name,
93
- "custom_field_value_#{field.id}",
94
- {:value => value}
92
+ :input_text, field.name, name, {:value => get_value(name, value)}
95
93
  ]
96
94
 
97
95
  if !field.text_limit.nil?
@@ -164,13 +162,8 @@ module CustomFields
164
162
  def input_radio(field, field_value)
165
163
  type = field.custom_field_type
166
164
  value = field_value.value rescue nil
167
- params = [
168
- :input_radio,
169
- field.name,
170
- "custom_field_value_#{field.id}",
171
- value,
172
- {}
173
- ]
165
+ name = "custom_field_value_#{field.id}"
166
+ params = [:input_radio, field.name, name, get_value(name, value), {}]
174
167
 
175
168
  # Convert the string containing the possible values to a hash.
176
169
  if !field.possible_values.nil? and !field.possible_values.empty?
@@ -215,11 +208,12 @@ module CustomFields
215
208
  def select(field, field_value)
216
209
  type = field.custom_field_type
217
210
  value = field_value.value rescue nil
211
+ name = "custom_field_value_#{field.id}"
218
212
  params = [
219
213
  :select,
220
214
  field.name,
221
- "custom_field_value_#{field.id}",
222
- {:selected => value, :size => 1}
215
+ name,
216
+ {:selected => get_value(name, value), :size => 1}
223
217
  ]
224
218
 
225
219
  # Convert the string containing the possible values to a hash.
@@ -259,6 +253,28 @@ module CustomFields
259
253
 
260
254
  return params
261
255
  end
256
+
257
+ private
258
+
259
+ ##
260
+ # Determines the value of a custom field. If a field's value is set in
261
+ # ``flash[:form_data]`` it will be retrieved from this hash, otherwise the
262
+ # default value is used.
263
+ #
264
+ # @since 26-02-2012
265
+ # @param [String] name The name of the field.
266
+ # @param [Mixed] value The default value.
267
+ # @return [Mixed]
268
+ #
269
+ def get_value(name, value)
270
+ if Ramaze::Current.session \
271
+ and Ramaze::Current.session.flash[:form_data] \
272
+ and Ramaze::Current.session.flash[:form_data].key?(name)
273
+ value = Ramaze::Current.session.flash[:form_data][name]
274
+ end
275
+
276
+ return value
277
+ end
262
278
  end # class << self
263
279
  end # BlueFormParameters
264
280
  end # CustomFields
@@ -34,7 +34,7 @@ module CustomFields
34
34
  # existing groups these will be displayed, otherwise a message telling you
35
35
  # that do don't have any groups will be displayed instead.
36
36
  #
37
- # ![Groups](../../_static/custom_fields/custom_field_groups.png)
37
+ # ![Groups](../../images/custom_fields/custom_field_groups.png)
38
38
  #
39
39
  # Just like with other packages you can delete records by clicking the
40
40
  # checkboxes followed by the "Delete selected groups" button. Groups can be
@@ -43,7 +43,7 @@ module CustomFields
43
43
  #
44
44
  # ## Adding/Editing Groups
45
45
  #
46
- # ![Edit Group](../../_static/custom_fields/edit_custom_field_group.png)
46
+ # ![Edit Group](../../images/custom_fields/edit_custom_field_group.png)
47
47
  #
48
48
  # When creating a new group or editing an existing group you can fill in the
49
49
  # following two fields:
@@ -62,27 +62,18 @@ module CustomFields
62
62
  # * edit_custom_field_group
63
63
  # * delete_custom_field_group
64
64
  #
65
- # ## Events
66
- #
67
- # All events in this controller receive an instance of
68
- # {CustomFields::Model::CustomFieldGroup}. The
69
- # ``after_delete_custom_field_group`` event will receive an instance of this
70
- # model that has already been destroyed.
71
- #
72
65
  # @since 0.1
73
66
  # @map /admin/custom-field-groups
74
- # @event before_new_custom_field_group
75
- # @event after_new_custom_field_group
76
- # @event before_edit_custom_field_group
77
- # @event after_edit_custom_field_group
78
- # @event before_delete_custom_field_group
79
- # @event after_delete_custom_field_group
80
67
  #
81
68
  class CustomFieldGroups < Zen::Controller::AdminController
82
69
  helper :custom_field
83
70
  map '/admin/custom-field-groups'
84
71
  title 'custom_field_groups.titles.%s'
85
72
 
73
+ autosave Model::CustomFieldGroup,
74
+ Model::CustomFieldGroup::COLUMNS,
75
+ :edit_custom_field_group
76
+
86
77
  csrf_protection :save, :delete
87
78
 
88
79
  ##
@@ -123,7 +114,8 @@ module CustomFields
123
114
  @page_title
124
115
  )
125
116
 
126
- @field_group = flash[:form_data] || validate_custom_field_group(id)
117
+ @field_group = validate_custom_field_group(id)
118
+ @field_group.set(flash[:form_data]) if flash[:form_data]
127
119
 
128
120
  render_view(:form)
129
121
  end
@@ -142,11 +134,8 @@ module CustomFields
142
134
  @page_title
143
135
  )
144
136
 
145
- if flash[:form_data]
146
- @field_group = flash[:form_data]
147
- else
148
- @field_group = ::CustomFields::Model::CustomFieldGroup.new
149
- end
137
+ @field_group = Model::CustomFieldGroup.new
138
+ @field_group.set(flash[:form_data]) if flash[:form_data]
150
139
 
151
140
  render_view(:form)
152
141
  end
@@ -159,52 +148,39 @@ module CustomFields
159
148
  # @since 0.1
160
149
  # @permission edit_custom_field_group (when editing a group)
161
150
  # @permission new_custom_field_group (when creating a group)
162
- # @event before_edit_custom_field_group
163
- # @event after_edit_custom_field_group
164
- # @event before_new_custom_field_group
165
- # @event after_new_custom_field_group
166
151
  #
167
152
  def save
168
- post = request.subset(:id, :name, :description)
153
+ post = post_fields(*Model::CustomFieldGroup::COLUMNS)
154
+ id = request.params['id']
169
155
 
170
- if post['id'] and !post['id'].empty?
156
+ if id and !id.empty?
171
157
  authorize_user!(:edit_custom_field_group)
172
158
 
173
- field_group = validate_custom_field_group(post['id'])
174
- save_action = :save
175
- before_event = :before_edit_custom_field_group
176
- after_event = :after_edit_custom_field_group
159
+ field_group = validate_custom_field_group(id)
160
+ save_action = :save
177
161
  else
178
162
  authorize_user!(:new_custom_field_group)
179
163
 
180
- field_group = ::CustomFields::Model::CustomFieldGroup.new
181
- save_action = :new
182
- before_event = :before_new_custom_field_group
183
- after_event = :after_new_custom_field_group
164
+ field_group = ::CustomFields::Model::CustomFieldGroup.new
165
+ save_action = :new
184
166
  end
185
167
 
186
- post.delete('id')
187
-
188
168
  success = lang("custom_field_groups.success.#{save_action}")
189
169
  error = lang("custom_field_groups.errors.#{save_action}")
190
170
 
191
171
  begin
192
- post.each { |k, v| field_group.send("#{k}=", v) }
193
- Zen::Event.call(before_event, field_group)
194
-
172
+ field_group.set(post)
195
173
  field_group.save
196
174
  rescue => e
197
- Ramaze::Log.error(e.inspect)
175
+ Ramaze::Log.error(e)
198
176
  message(:error, error)
199
177
 
200
178
  flash[:form_errors] = field_group.errors
201
- flash[:form_data] = field_group
179
+ flash[:form_data] = post
202
180
 
203
181
  redirect_referrer
204
182
  end
205
183
 
206
- Zen::Event.call(after_event, field_group)
207
-
208
184
  message(:success, success)
209
185
  redirect(CustomFieldGroups.r(:edit, field_group.id))
210
186
  end
@@ -215,8 +191,6 @@ module CustomFields
215
191
  #
216
192
  # @since 0.1
217
193
  # @permission delete_custom_field_group
218
- # @event before_delete_custom_field_group
219
- # @event after_delete_custom_field_group
220
194
  #
221
195
  def delete
222
196
  authorize_user!(:delete_custom_field_group)
@@ -231,18 +205,15 @@ module CustomFields
231
205
  group = ::CustomFields::Model::CustomFieldGroup[id]
232
206
 
233
207
  next if group.nil?
234
- Zen::Event.call(:before_delete_custom_field_group, group)
235
208
 
236
209
  begin
237
210
  group.destroy
238
211
  rescue => e
239
- Ramaze::Log.error(e.inspect)
212
+ Ramaze::Log.error(e)
240
213
  message(:error, lang('custom_field_groups.errors.delete') % id)
241
214
 
242
215
  redirect_referrer
243
216
  end
244
-
245
- Zen::Event.call(:after_delete_custom_field_group, group)
246
217
  end
247
218
 
248
219
  message(:success, lang('custom_field_groups.success.delete'))