zen 0.2.7 → 0.2.8

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 (303) hide show
  1. data/.gitignore +15 -0
  2. data/.mailmap +2 -0
  3. data/.rvmrc +2 -0
  4. data/.travis.yml +8 -3
  5. data/AUTHORS +1 -2
  6. data/CHANGELOG.md +48 -17
  7. data/README.md +44 -39
  8. data/Rakefile +4 -0
  9. data/bin/zen +5 -30
  10. data/lib/zen.rb +13 -19
  11. data/lib/zen/asset.rb +99 -64
  12. data/lib/zen/bin/create.rb +94 -0
  13. data/lib/zen/bin/runner.rb +118 -0
  14. data/lib/zen/controller/admin_controller.rb +52 -36
  15. data/lib/zen/controller/base_controller.rb +5 -5
  16. data/lib/zen/controller/frontend_controller.rb +7 -7
  17. data/lib/zen/controller/main_controller.rb +12 -10
  18. data/lib/zen/controller/preview.rb +15 -11
  19. data/lib/zen/helper/acl.rb +73 -53
  20. data/lib/zen/helper/blue_form_vendor.rb +689 -0
  21. data/lib/zen/helper/breadcrumb.rb +23 -19
  22. data/lib/zen/helper/message.rb +3 -3
  23. data/lib/zen/helper/theme.rb +18 -13
  24. data/lib/zen/language.rb +62 -58
  25. data/lib/zen/language/en/zen_general.yml +2 -4
  26. data/lib/zen/language/nl/zen_general.yml +2 -4
  27. data/lib/zen/layout/admin.xhtml +3 -12
  28. data/lib/zen/layout/login.xhtml +1 -6
  29. data/lib/zen/model/methods.rb +6 -6
  30. data/lib/zen/model/settings.rb +5 -4
  31. data/lib/zen/package.rb +47 -38
  32. data/lib/zen/package/all.rb +3 -5
  33. data/lib/zen/package/base.rb +7 -7
  34. data/lib/zen/package/categories/lib/categories.rb +8 -3
  35. data/lib/zen/package/categories/lib/categories/controller/categories.rb +81 -55
  36. data/lib/zen/package/categories/lib/categories/controller/category_groups.rb +45 -44
  37. data/lib/zen/package/categories/lib/categories/helper/category.rb +88 -0
  38. data/lib/zen/package/categories/lib/categories/language/en/categories.yml +5 -4
  39. data/lib/zen/package/categories/lib/categories/language/en/category_groups.yml +5 -4
  40. data/lib/zen/package/categories/lib/categories/language/nl/categories.yml +5 -4
  41. data/lib/zen/package/categories/lib/categories/language/nl/category_groups.yml +5 -4
  42. data/lib/zen/package/categories/lib/categories/model/category.rb +15 -13
  43. data/lib/zen/package/categories/lib/categories/model/category_group.rb +3 -3
  44. data/lib/zen/package/categories/lib/categories/plugin/categories.rb +36 -25
  45. data/lib/zen/package/categories/lib/categories/view/admin/categories/form.xhtml +49 -56
  46. data/lib/zen/package/categories/lib/categories/view/admin/categories/index.xhtml +48 -35
  47. data/lib/zen/package/categories/lib/categories/view/admin/category-groups/form.xhtml +36 -29
  48. data/lib/zen/package/categories/lib/categories/view/admin/category-groups/index.xhtml +42 -37
  49. data/lib/zen/package/comments/lib/comments.rb +4 -1
  50. data/lib/zen/package/comments/lib/comments/controller/comments.rb +39 -32
  51. data/lib/zen/package/comments/lib/comments/controller/comments_form.rb +45 -26
  52. data/lib/zen/package/comments/lib/comments/helper/comment.rb +35 -0
  53. data/lib/zen/package/comments/lib/comments/language/en/comments.yml +9 -7
  54. data/lib/zen/package/comments/lib/comments/language/nl/comments.yml +10 -8
  55. data/lib/zen/package/comments/lib/comments/model/comment.rb +31 -17
  56. data/lib/zen/package/comments/lib/comments/model/comment_status.rb +15 -0
  57. data/lib/zen/package/comments/lib/comments/plugin/anti_spam.rb +27 -18
  58. data/lib/zen/package/comments/lib/comments/plugin/comments.rb +25 -20
  59. data/lib/zen/package/comments/lib/comments/view/admin/comments/form.xhtml +61 -54
  60. data/lib/zen/package/comments/lib/comments/view/admin/comments/index.xhtml +38 -23
  61. data/lib/zen/package/comments/migrations/1308774099_comment_status.rb +60 -0
  62. data/lib/zen/package/custom_fields/lib/custom_fields.rb +33 -7
  63. data/lib/zen/package/custom_fields/lib/custom_fields/blue_form_parameters.rb +209 -0
  64. data/lib/zen/package/custom_fields/lib/custom_fields/controller/custom_field_groups.rb +50 -47
  65. data/lib/zen/package/custom_fields/lib/custom_fields/controller/custom_field_types.rb +215 -0
  66. data/lib/zen/package/custom_fields/lib/custom_fields/controller/custom_fields.rb +111 -73
  67. data/lib/zen/package/custom_fields/lib/custom_fields/helper/custom_field.rb +79 -0
  68. data/lib/zen/package/custom_fields/lib/custom_fields/language/en/custom_field_groups.yml +20 -19
  69. data/lib/zen/package/custom_fields/lib/custom_fields/language/en/custom_field_types.yml +40 -0
  70. data/lib/zen/package/custom_fields/lib/custom_fields/language/en/custom_fields.yml +34 -32
  71. data/lib/zen/package/custom_fields/lib/custom_fields/language/nl/custom_field_groups.yml +5 -4
  72. data/lib/zen/package/custom_fields/lib/custom_fields/language/nl/custom_field_types.yml +40 -0
  73. data/lib/zen/package/custom_fields/lib/custom_fields/language/nl/custom_fields.yml +18 -16
  74. data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field.rb +31 -11
  75. data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field_method.rb +15 -0
  76. data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field_type.rb +50 -0
  77. data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field_value.rb +28 -7
  78. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-groups/form.xhtml +33 -28
  79. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-groups/index.xhtml +48 -46
  80. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-types/form.xhtml +61 -0
  81. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-types/index.xhtml +93 -0
  82. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-fields/form.xhtml +105 -99
  83. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-fields/index.xhtml +43 -39
  84. data/lib/zen/package/custom_fields/migrations/1295255665_create_schema.rb +47 -16
  85. data/lib/zen/package/custom_fields/migrations/1310659580_custom_field_types.rb +148 -0
  86. data/lib/zen/package/custom_fields/migrations/1311694920_rename_css_class.rb +11 -0
  87. data/lib/zen/package/menus/lib/menus/controller/menu_items.rb +40 -35
  88. data/lib/zen/package/menus/lib/menus/controller/menus.rb +47 -43
  89. data/lib/zen/package/menus/lib/menus/helper/{menu_item.rb → menu.rb} +42 -15
  90. data/lib/zen/package/menus/lib/menus/language/en/menu_items.yml +5 -5
  91. data/lib/zen/package/menus/lib/menus/language/en/menus.yml +9 -8
  92. data/lib/zen/package/menus/lib/menus/language/nl/menu_items.yml +8 -8
  93. data/lib/zen/package/menus/lib/menus/language/nl/menus.yml +11 -10
  94. data/lib/zen/package/menus/lib/menus/model/menu.rb +5 -5
  95. data/lib/zen/package/menus/lib/menus/model/menu_item.rb +6 -5
  96. data/lib/zen/package/menus/lib/menus/plugin/menus.rb +41 -43
  97. data/lib/zen/package/menus/lib/menus/view/admin/menu-items/form.xhtml +59 -63
  98. data/lib/zen/package/menus/lib/menus/view/admin/menu-items/index.xhtml +35 -30
  99. data/lib/zen/package/menus/lib/menus/view/admin/menus/form.xhtml +46 -37
  100. data/lib/zen/package/menus/lib/menus/view/admin/menus/index.xhtml +37 -37
  101. data/lib/zen/package/menus/migrations/1297184342_create_schema.rb +5 -5
  102. data/lib/zen/package/menus/migrations/1308671733_rename_order_column.rb +11 -0
  103. data/lib/zen/package/menus/migrations/1311695030_rename_css_class.rb +17 -0
  104. data/lib/zen/package/sections/lib/sections.rb +18 -11
  105. data/lib/zen/package/sections/lib/sections/controller/section_entries.rb +115 -109
  106. data/lib/zen/package/sections/lib/sections/controller/sections.rb +72 -50
  107. data/lib/zen/package/sections/lib/sections/helper/section.rb +53 -0
  108. data/lib/zen/package/sections/lib/sections/language/en/section_entries.yml +5 -4
  109. data/lib/zen/package/sections/lib/sections/language/en/sections.yml +5 -4
  110. data/lib/zen/package/sections/lib/sections/language/nl/section_entries.yml +5 -4
  111. data/lib/zen/package/sections/lib/sections/language/nl/sections.yml +5 -4
  112. data/lib/zen/package/sections/lib/sections/model/section.rb +17 -9
  113. data/lib/zen/package/sections/lib/sections/model/section_entry.rb +192 -13
  114. data/lib/zen/package/sections/lib/sections/model/section_entry_status.rb +13 -0
  115. data/lib/zen/package/sections/lib/sections/plugin/section_entries.rb +60 -39
  116. data/lib/zen/package/sections/lib/sections/plugin/sections.rb +14 -11
  117. data/lib/zen/package/sections/lib/sections/view/admin/form.xhtml +100 -97
  118. data/lib/zen/package/sections/lib/sections/view/admin/index.xhtml +41 -39
  119. data/lib/zen/package/sections/lib/sections/view/admin/section-entries/form.xhtml +95 -215
  120. data/lib/zen/package/sections/lib/sections/view/admin/section-entries/index.xhtml +48 -40
  121. data/lib/zen/package/sections/migrations/1308672298_use_id_for_default_section.rb +40 -0
  122. data/lib/zen/package/sections/migrations/1308813320_section_entry_statuses.rb +58 -0
  123. data/lib/zen/package/settings/lib/settings/controller/settings.rb +5 -8
  124. data/lib/zen/package/settings/lib/settings/model/setting.rb +2 -37
  125. data/lib/zen/package/settings/lib/settings/plugin/setting_base.rb +18 -1
  126. data/lib/zen/package/settings/lib/settings/plugin/settings.rb +13 -7
  127. data/lib/zen/package/settings/lib/settings/view/admin/settings/index.xhtml +2 -1
  128. data/lib/zen/package/users/lib/users.rb +3 -1
  129. data/lib/zen/package/users/lib/users/controller/access_rules.rb +77 -60
  130. data/lib/zen/package/users/lib/users/controller/user_groups.rb +41 -36
  131. data/lib/zen/package/users/lib/users/controller/users.rb +48 -42
  132. data/lib/zen/package/users/lib/users/helper/users.rb +72 -0
  133. data/lib/zen/package/users/lib/users/language/en/access_rules.yml +6 -5
  134. data/lib/zen/package/users/lib/users/language/en/user_groups.yml +5 -4
  135. data/lib/zen/package/users/lib/users/language/en/users.yml +1 -0
  136. data/lib/zen/package/users/lib/users/language/nl/access_rules.yml +5 -4
  137. data/lib/zen/package/users/lib/users/language/nl/user_groups.yml +5 -4
  138. data/lib/zen/package/users/lib/users/language/nl/users.yml +1 -0
  139. data/lib/zen/package/users/lib/users/model/access_rule.rb +5 -1
  140. data/lib/zen/package/users/lib/users/model/user.rb +17 -10
  141. data/lib/zen/package/users/lib/users/public/admin/js/users/access_rules.js +10 -37
  142. data/lib/zen/package/users/lib/users/public/admin/js/users/lib/access_rules.js +49 -0
  143. data/lib/zen/package/users/lib/users/view/admin/access-rules/form.xhtml +105 -96
  144. data/lib/zen/package/users/lib/users/view/admin/access-rules/index.xhtml +48 -41
  145. data/lib/zen/package/users/lib/users/view/admin/user-groups/form.xhtml +42 -32
  146. data/lib/zen/package/users/lib/users/view/admin/user-groups/index.xhtml +43 -38
  147. data/lib/zen/package/users/lib/users/view/admin/users/form.xhtml +76 -67
  148. data/lib/zen/package/users/lib/users/view/admin/users/index.xhtml +43 -41
  149. data/lib/zen/package/users/lib/users/view/admin/users/login.xhtml +12 -9
  150. data/lib/zen/package/users/migrations/1295281013_create_schema.rb +2 -2
  151. data/lib/zen/plugin.rb +56 -50
  152. data/lib/zen/plugin/markup/lib/markup/markup.rb +33 -21
  153. data/lib/zen/public/admin/css/zen/buttons.css +11 -7
  154. data/lib/zen/public/admin/css/zen/datepicker.css +6 -6
  155. data/lib/zen/public/admin/css/zen/forms.css +2 -1
  156. data/lib/zen/public/admin/css/zen/general.css +15 -10
  157. data/lib/zen/public/admin/css/zen/layout.css +51 -20
  158. data/lib/zen/public/admin/css/zen/tables.css +39 -11
  159. data/lib/zen/public/admin/css/zen/tabs.css +6 -4
  160. data/lib/zen/public/admin/css/zen/window.css +11 -11
  161. data/lib/zen/public/{favicon.ico → admin/favicon.ico} +0 -0
  162. data/lib/zen/public/admin/images/zen/icons/asc.png +0 -0
  163. data/lib/zen/public/admin/images/zen/icons/desc.png +0 -0
  164. data/lib/zen/public/admin/js/vendor/datepicker.js +0 -11
  165. data/lib/zen/public/admin/js/{mootools → vendor/mootools}/core.js +0 -1
  166. data/lib/zen/public/admin/js/{mootools → vendor/mootools}/more.js +100 -29
  167. data/lib/zen/public/admin/js/zen/index.js +48 -0
  168. data/lib/zen/public/admin/js/zen/lib/asset.js +111 -0
  169. data/lib/zen/public/admin/js/zen/{editor.js → lib/editor.js} +107 -127
  170. data/lib/zen/public/admin/js/zen/{editor → lib/editor}/markdown.js +7 -9
  171. data/lib/zen/public/admin/js/zen/{editor → lib/editor}/textile.js +7 -9
  172. data/lib/zen/public/admin/js/zen/lib/html_table.js +143 -0
  173. data/lib/zen/public/admin/js/zen/{tabs.js → lib/tabs.js} +40 -37
  174. data/lib/zen/public/admin/js/zen/{window.js → lib/window.js} +24 -20
  175. data/lib/zen/spec/bacon/color_output.rb +39 -0
  176. data/lib/zen/spec/helper.rb +152 -0
  177. data/lib/zen/spec/simplecov.rb +22 -0
  178. data/lib/zen/task/build.rake +20 -43
  179. data/lib/zen/task/clean.rake +2 -6
  180. data/lib/zen/task/db.rake +8 -12
  181. data/lib/zen/task/package.rake +4 -10
  182. data/lib/zen/task/plugin.rake +3 -9
  183. data/lib/zen/task/proto.rake +0 -62
  184. data/lib/zen/task/test.rake +6 -3
  185. data/lib/zen/task/theme.rake +4 -11
  186. data/lib/zen/theme.rb +22 -24
  187. data/lib/zen/validation.rb +34 -27
  188. data/lib/zen/version.rb +2 -8
  189. data/lib/zen/view/head.xhtml +7 -0
  190. data/lib/zen/view/main.xhtml +7 -22
  191. data/{proto/package/migrations → pkg}/.gitkeep +0 -0
  192. data/proto/app/app.rb +1 -0
  193. data/proto/app/config/config.rb +5 -4
  194. data/proto/app/config/database.rb +19 -41
  195. data/proto/app/config/middlewares.rb +32 -29
  196. data/proto/{package/lib/package/view/admin/package/index.xhtml → app/log/database/dev/.gitkeep} +0 -0
  197. data/proto/app/log/database/live/.gitkeep +0 -0
  198. data/spec/Rakefile +26 -0
  199. data/spec/fixtures/zen/asset.rb +18 -0
  200. data/spec/fixtures/zen/helper/acl.rb +39 -0
  201. data/spec/fixtures/zen/helper/message.rb +19 -0
  202. data/spec/fixtures/zen/language/en/spec.yml +10 -0
  203. data/spec/fixtures/zen/language/nl/spec.yml +7 -0
  204. data/spec/fixtures/zen/package.rb +17 -0
  205. data/spec/fixtures/zen/package/comments/controller/comments_form.rb +27 -0
  206. data/spec/fixtures/zen/package/settings/plugin/settings.rb +20 -0
  207. data/spec/fixtures/zen/plugin.rb +7 -0
  208. data/spec/fixtures/zen/theme/404.xhtml +1 -0
  209. data/spec/fixtures/zen/theme/default-section/index.xhtml +1 -0
  210. data/spec/fixtures/zen/theme/helper/404.xhtml +1 -0
  211. data/spec/fixtures/zen/theme/helper/partial.xhtml +1 -0
  212. data/spec/fixtures/zen/theme/helper/wrong_partial.xhtml +1 -0
  213. data/spec/fixtures/zen/theme/partials/partial.xhtml +1 -0
  214. data/spec/fixtures/zen/theme/theme.rb +11 -0
  215. data/spec/fixtures/zen/validation.rb +22 -0
  216. data/spec/helper.rb +41 -0
  217. data/spec/zen/all.rb +5 -0
  218. data/spec/zen/asset.rb +97 -0
  219. data/spec/zen/bin/create.rb +89 -0
  220. data/spec/zen/bin/runner.rb +47 -0
  221. data/spec/zen/controller/admin_controller.rb +26 -0
  222. data/spec/zen/controller/main_controller.rb +81 -0
  223. data/spec/zen/controller/preview.rb +33 -0
  224. data/spec/zen/helper/acl.rb +149 -0
  225. data/spec/zen/helper/breadcrumb.rb +38 -0
  226. data/spec/zen/helper/message.rb +31 -0
  227. data/spec/zen/helper/theme.rb +58 -0
  228. data/spec/zen/language.rb +55 -0
  229. data/spec/zen/package.rb +23 -0
  230. data/spec/zen/package/categories/controller/categories.rb +123 -0
  231. data/spec/zen/package/categories/controller/category_groups.rb +108 -0
  232. data/spec/zen/package/categories/helper/category.rb +75 -0
  233. data/spec/zen/package/categories/plugin/categories.rb +92 -0
  234. data/spec/zen/package/comments/controller/comments.rb +134 -0
  235. data/spec/zen/package/comments/controller/comments_form.rb +343 -0
  236. data/spec/zen/package/comments/helper/comment.rb +47 -0
  237. data/spec/zen/package/comments/plugin/anti_spam.rb +59 -0
  238. data/spec/zen/package/comments/plugin/comments.rb +107 -0
  239. data/spec/zen/package/custom_fields/blue_form_parameters.rb +183 -0
  240. data/spec/zen/package/custom_fields/controller/custom_field_groups.rb +120 -0
  241. data/spec/zen/package/custom_fields/controller/custom_field_types.rb +169 -0
  242. data/spec/zen/package/custom_fields/controller/custom_fields.rb +158 -0
  243. data/spec/zen/package/custom_fields/helper/custom_field.rb +86 -0
  244. data/spec/zen/package/menus/controller/menu_items.rb +110 -0
  245. data/spec/zen/package/menus/controller/menus.rb +110 -0
  246. data/spec/zen/package/menus/helper/menu.rb +75 -0
  247. data/spec/zen/package/menus/plugin/menus.rb +120 -0
  248. data/spec/zen/package/sections/controller/section_entries.rb +201 -0
  249. data/spec/zen/package/sections/controller/sections.rb +116 -0
  250. data/spec/zen/package/sections/helper/section.rb +74 -0
  251. data/spec/zen/package/sections/plugin/section_entries.rb +161 -0
  252. data/spec/zen/package/sections/plugin/sections.rb +75 -0
  253. data/spec/zen/package/settings/controller/settings.rb +36 -0
  254. data/spec/zen/package/settings/plugin/settings.rb +33 -0
  255. data/spec/zen/package/users/controller/access_rules.rb +90 -0
  256. data/spec/zen/package/users/controller/user_groups.rb +101 -0
  257. data/spec/zen/package/users/controller/users.rb +130 -0
  258. data/spec/zen/package/users/helper/users.rb +97 -0
  259. data/spec/zen/plugin.rb +64 -0
  260. data/spec/zen/plugin/helper.rb +11 -0
  261. data/spec/zen/plugin/markup.rb +44 -0
  262. data/spec/zen/theme.rb +41 -0
  263. data/spec/zen/validation.rb +63 -0
  264. data/zen.gemspec +36 -0
  265. metadata +159 -113
  266. data/MANIFEST +0 -266
  267. data/lib/zen/bin/app.rb +0 -40
  268. data/lib/zen/ext/string.rb +0 -185
  269. data/lib/zen/helper/common.rb +0 -106
  270. data/lib/zen/package/categories/lib/categories/view/admin/categories/edit.xhtml +0 -7
  271. data/lib/zen/package/categories/lib/categories/view/admin/categories/new.xhtml +0 -7
  272. data/lib/zen/package/categories/lib/categories/view/admin/category-groups/edit.xhtml +0 -7
  273. data/lib/zen/package/categories/lib/categories/view/admin/category-groups/new.xhtml +0 -7
  274. data/lib/zen/package/comments/lib/comments/view/admin/comments/edit.xhtml +0 -7
  275. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-groups/edit.xhtml +0 -7
  276. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-groups/new.xhtml +0 -7
  277. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-fields/edit.xhtml +0 -7
  278. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-fields/new.xhtml +0 -7
  279. data/lib/zen/package/menus/lib/menus/view/admin/menu-items/edit.xhtml +0 -7
  280. data/lib/zen/package/menus/lib/menus/view/admin/menu-items/new.xhtml +0 -7
  281. data/lib/zen/package/menus/lib/menus/view/admin/menus/edit.xhtml +0 -7
  282. data/lib/zen/package/menus/lib/menus/view/admin/menus/new.xhtml +0 -7
  283. data/lib/zen/package/sections/lib/sections/view/admin/edit.xhtml +0 -7
  284. data/lib/zen/package/sections/lib/sections/view/admin/new.xhtml +0 -7
  285. data/lib/zen/package/sections/lib/sections/view/admin/section-entries/edit.xhtml +0 -7
  286. data/lib/zen/package/sections/lib/sections/view/admin/section-entries/new.xhtml +0 -7
  287. data/lib/zen/package/users/lib/users/view/admin/access-rules/edit.xhtml +0 -7
  288. data/lib/zen/package/users/lib/users/view/admin/access-rules/new.xhtml +0 -7
  289. data/lib/zen/package/users/lib/users/view/admin/user-groups/edit.xhtml +0 -7
  290. data/lib/zen/package/users/lib/users/view/admin/user-groups/new.xhtml +0 -7
  291. data/lib/zen/package/users/lib/users/view/admin/users/edit.xhtml +0 -7
  292. data/lib/zen/package/users/lib/users/view/admin/users/new.xhtml +0 -7
  293. data/lib/zen/plugin/controller.rb +0 -59
  294. data/lib/zen/public/admin/css/zen/notifications.css +0 -84
  295. data/lib/zen/public/admin/images/zen/icons/large/error.png +0 -0
  296. data/lib/zen/public/admin/images/zen/icons/large/notice.png +0 -0
  297. data/lib/zen/public/admin/images/zen/icons/large/success.png +0 -0
  298. data/lib/zen/public/admin/js/zen/core.js +0 -73
  299. data/lib/zen/public/admin/js/zen/init.js +0 -80
  300. data/proto/package/lib/package.rb +0 -21
  301. data/proto/package/lib/package/controller/controllers.rb +0 -50
  302. data/proto/package/lib/package/language/en/languages.yml +0 -4
  303. data/proto/package/lib/package/model/model.rb +0 -12
@@ -0,0 +1,11 @@
1
+ Sequel.migration do
2
+ # Updates the database with the changes specified in the block.
3
+ up do
4
+ rename_column(:custom_field_types, :css_class, :html_class)
5
+ end
6
+
7
+ # Reverts the changes made in the up() block.
8
+ down do
9
+ rename_column(:custom_field_types, :html_class, :css_class)
10
+ end
11
+ end
@@ -11,8 +11,8 @@ module Menus
11
11
  class MenuItems < ::Zen::Controller::AdminController
12
12
  include ::Menus::Model
13
13
 
14
- map('/admin/menu-items')
15
- helper(:menu_item)
14
+ map '/admin/menu-items'
15
+ helper :menu
16
16
 
17
17
  before_all do
18
18
  csrf_protection(:save, :delete) do
@@ -34,9 +34,6 @@ module Menus
34
34
  def initialize
35
35
  super
36
36
 
37
- @form_save_url = MenuItems.r(:save)
38
- @form_delete_url = MenuItems.r(:delete)
39
-
40
37
  Zen::Language.load('menu_items')
41
38
  Zen::Language.load('menus')
42
39
 
@@ -59,19 +56,18 @@ module Menus
59
56
  # @param [Integer] menu_id The ID of the current navigation menu.
60
57
  #
61
58
  def index(menu_id)
62
- if !user_authorized?([:read])
63
- respond(lang('zen_general.errors.not_authorized'), 403)
64
- end
59
+ require_permissions(:read)
65
60
 
66
- validate_menu(menu_id)
61
+ menu = validate_menu(menu_id)
67
62
 
68
63
  set_breadcrumbs(
69
- anchor_to(lang('menus.titles.index'), Menus.r(:index)),
64
+ Menus.a(lang('menus.titles.index'), :index),
70
65
  lang('menu_items.titles.index')
71
66
  )
72
67
 
73
68
  @menu_id = menu_id
74
- @menu_items = Menu[menu_id.to_i].menu_items
69
+ @menu_items = MenuItem.filter(:menu_id => menu_id)
70
+ @menu_items = paginate(@menu_items)
75
71
  end
76
72
 
77
73
  ##
@@ -88,15 +84,13 @@ module Menus
88
84
  # @param [Integer] id The ID of the menu item to edit.
89
85
  #
90
86
  def edit(menu_id, id)
91
- if !user_authorized?([:read, :update])
92
- respond(lang('zen_general.errors.not_authorized'), 403)
93
- end
87
+ require_permissions(:read, :update)
94
88
 
95
89
  validate_menu(menu_id)
96
90
 
97
91
  set_breadcrumbs(
98
- anchor_to(lang('menus.titles.index'), Menus.r(:index)),
99
- anchor_to(lang('menu_items.titles.index'), MenuItems.r(:index, menu_id)),
92
+ Menus.a(lang('menus.titles.index'), :index),
93
+ MenuItems.a(lang('menu_items.titles.index'), :index, menu_id),
100
94
  lang('menu_items.titles.edit')
101
95
  )
102
96
 
@@ -105,8 +99,10 @@ module Menus
105
99
  if flash[:form_data]
106
100
  @menu_item = flash[:form_data]
107
101
  else
108
- @menu_item = MenuItem[id]
102
+ @menu_item = validate_menu_item(id, menu_id)
109
103
  end
104
+
105
+ render_view(:form)
110
106
  end
111
107
 
112
108
  ##
@@ -122,24 +118,25 @@ module Menus
122
118
  # @param [Integer] menu_id The ID of the current navigation menu.
123
119
  #
124
120
  def new(menu_id)
125
- if !user_authorized?([:create, :read])
126
- respond(lang('zen_general.errors.not_authorized'), 403)
127
- end
121
+ require_permissions(:create, :read)
128
122
 
129
123
  validate_menu(menu_id)
130
124
 
131
125
  set_breadcrumbs(
132
- anchor_to(lang('menus.titles.index'), Menus.r(:index)),
133
- anchor_to(lang('menu_items.titles.index'), MenuItems.r(:index, menu_id)),
126
+ Menus.a(lang('menus.titles.index'), :index),
127
+ MenuItems.a(lang('menu_items.titles.index'), :index, menu_id),
134
128
  lang('menu_items.titles.new')
135
129
  )
136
130
 
137
131
  @menu_id = menu_id
138
132
  @menu_item = MenuItem.new
133
+
134
+ render_view(:form)
139
135
  end
140
136
 
141
137
  ##
142
- # Saves an existing menu iten or creates a new one using the supplied POST data.
138
+ # Saves an existing menu iten or creates a new one using the supplied
139
+ # POST data.
143
140
  #
144
141
  # This method requires the following permissions:
145
142
  #
@@ -150,24 +147,31 @@ module Menus
150
147
  # @since 0.2a
151
148
  #
152
149
  def save
153
- if !user_authorized?([:create, :update])
154
- respond(lang('zen_general.errors.not_authorized'), 403)
155
- end
156
-
157
150
  post = request.subset(
158
- :id, :parent_id, :name, :url, :order, :css_class, :css_id, :menu_id
151
+ :id,
152
+ :parent_id,
153
+ :name,
154
+ :url,
155
+ :sort_order,
156
+ :html_class,
157
+ :html_id,
158
+ :menu_id
159
159
  )
160
160
 
161
161
  if post['parent_id'].empty? or post['parent_id'] === post['id']
162
162
  post['parent_id'] = nil
163
163
  end
164
164
 
165
- # Determine if we're saving changes made to an existing menu item or if we're
166
- # going to create a new one.
167
- if !post['id'].empty?
168
- @menu_item = MenuItem[post['id']]
165
+ # Determine if we're saving changes made to an existing menu item or
166
+ # if we're going to create a new one.
167
+ if post.key?('id') and !post['id'].empty?
168
+ require_permissions(:update)
169
+
170
+ @menu_item = validate_menu_item(post['id'], post['menu_id'])
169
171
  save_action = :save
170
172
  else
173
+ require_permissions(:create)
174
+
171
175
  @menu_item = MenuItem.new
172
176
  save_action = :new
173
177
  end
@@ -188,6 +192,8 @@ module Menus
188
192
 
189
193
  flash[:form_data] = @menu_item
190
194
  flash[:form_errors] = @menu_item.errors
195
+
196
+ redirect_referrer
191
197
  end
192
198
 
193
199
  if @menu_item.id
@@ -207,9 +213,7 @@ module Menus
207
213
  # @since 0.2a
208
214
  #
209
215
  def delete
210
- if !user_authorized?([:delete])
211
- respond(lang('zen_general.errors.not_authorized'), 403)
212
- end
216
+ require_permissions(:delete)
213
217
 
214
218
  post = request.subset(:menu_item_ids)
215
219
 
@@ -224,6 +228,7 @@ module Menus
224
228
  rescue => e
225
229
  Ramaze::Log.error(e.inspect)
226
230
  message(:error, lang('menu_items.errors.delete') % id)
231
+
227
232
  redirect_referrer
228
233
  end
229
234
  end
@@ -3,8 +3,8 @@ module Menus
3
3
  #:nodoc:
4
4
  module Controller
5
5
  ##
6
- # Controller for managing menu groups. Individual navigation items are managed using
7
- # the menu items controller, simply named "menu_items".
6
+ # Controller for managing menu groups. Individual navigation items are
7
+ # managed using the menu items controller, simply named "menu_items".
8
8
  #
9
9
  # @author Yorick Peterse
10
10
  # @since 0.2a
@@ -12,7 +12,8 @@ module Menus
12
12
  class Menus < Zen::Controller::AdminController
13
13
  include ::Menus::Model
14
14
 
15
- map('/admin/menus')
15
+ map '/admin/menus'
16
+ helper :menu
16
17
 
17
18
  before_all do
18
19
  csrf_protection(:save, :delete) do
@@ -33,9 +34,6 @@ module Menus
33
34
  def initialize
34
35
  super
35
36
 
36
- @form_save_url = Menus.r(:save)
37
- @form_delete_url = Menus.r(:delete)
38
-
39
37
  Zen::Language.load('menus')
40
38
 
41
39
  # Set the page title
@@ -57,21 +55,17 @@ module Menus
57
55
  # @since 0.2a
58
56
  #
59
57
  def index
60
- if !user_authorized?([:read])
61
- respond(lang('zen_general.errors.not_authorized'), 403)
62
- end
58
+ require_permissions(:read)
63
59
 
64
- # Set our breadcrumbs
65
60
  set_breadcrumbs(lang('menus.titles.index'))
66
61
 
67
- # Get all menus
68
- @menus = Menu.all
62
+ @menus = paginate(Menu)
69
63
  end
70
64
 
71
65
  ##
72
- # Show a form that allows the user to edit the details (such as the name and slug)
73
- # of a menu group. This method can not be used to manage all menu items for this
74
- # group.
66
+ # Show a form that allows the user to edit the details (such as the name
67
+ # and slug) of a menu group. This method can not be used to manage all
68
+ # menu items for this group.
75
69
  #
76
70
  # This method requires the following permissions:
77
71
  #
@@ -82,25 +76,26 @@ module Menus
82
76
  # @since 0.2a
83
77
  #
84
78
  def edit(id)
85
- if !user_authorized?([:read, :update])
86
- respond(lang('zen_general.errors.not_authorized'), 403)
87
- end
79
+ require_permissions(:read, :update)
88
80
 
89
81
  set_breadcrumbs(
90
- anchor_to(lang('menus.titles.index'), Menus.r(:index)),
82
+ Menus.a(lang('menus.titles.index'), :index),
91
83
  @page_title
92
84
  )
93
85
 
94
86
  if flash[:form_data]
95
87
  @menu = flash[:form_data]
96
88
  else
97
- @menu = Menu[id]
89
+ @menu = validate_menu(id)
98
90
  end
91
+
92
+ render_view(:form)
99
93
  end
100
94
 
101
95
  ##
102
- # Show a form that can be used to create a new menu group. Once a menu group has
103
- # been created users can start adding navigation items to the group.
96
+ # Show a form that can be used to create a new menu group. Once a menu
97
+ # group has been created users can start adding navigation items to the
98
+ # group.
104
99
  #
105
100
  # This method requires the following permissions:
106
101
  #
@@ -111,24 +106,24 @@ module Menus
111
106
  # @since 0.2a
112
107
  #
113
108
  def new
114
- if !user_authorized?([:create, :read])
115
- respond(lang('zen_general.errors.not_authorized'), 403)
116
- end
109
+ require_permissions(:create, :read)
117
110
 
118
- # Breadcrumbs, om nom nom!
119
111
  set_breadcrumbs(
120
- anchor_to(lang('menus.titles.index'), Menus.r(:index)),
112
+ Menus.a(lang('menus.titles.index'), :index),
121
113
  @page_title
122
114
  )
123
115
 
124
116
  @menu = Menu.new
117
+
118
+ render_view(:form)
125
119
  end
126
120
 
127
121
  ##
128
- # Saves the changes made to an existing menu group or creates a new group using the
129
- # supplied POST data. In order to detect this forms that contain data of an existing
130
- # group should have a hidden field named "id", the value of this field is the primary
131
- # value of the menu group of which the changes should be saved.
122
+ # Saves the changes made to an existing menu group or creates a new group
123
+ # using the supplied POST data. In order to detect this forms that contain
124
+ # data of an existing group should have a hidden field named "id", the
125
+ # value of this field is the primary value of the menu group of which the
126
+ # changes should be saved.
132
127
  #
133
128
  # This method requires the following permissions:
134
129
  #
@@ -139,17 +134,24 @@ module Menus
139
134
  # @since 0.2a
140
135
  #
141
136
  def save
142
- if !user_authorized?([:create, :update])
143
- respond(lang('zen_general.errors.not_authorized'), 403)
144
- end
145
-
146
- post = request.subset(:name, :slug, :description, :css_class, :css_id, :id)
137
+ post = request.subset(
138
+ :name,
139
+ :slug,
140
+ :description,
141
+ :html_class,
142
+ :html_id,
143
+ :id
144
+ )
147
145
 
148
146
  # Determine if we're creating a new group or modifying an existing one.
149
- if !post['id'].empty?
150
- @menu = Menu[post['id']]
147
+ if post.key?('id') and !post['id'].empty?
148
+ require_permissions(:update)
149
+
150
+ @menu = validate_menu(post['id'])
151
151
  save_action = :save
152
152
  else
153
+ require_permissions(:create)
154
+
153
155
  @menu = Menu.new
154
156
  save_action = :new
155
157
 
@@ -172,6 +174,8 @@ module Menus
172
174
 
173
175
  flash[:form_data] = @menu
174
176
  flash[:form_errors] = @menu.errors
177
+
178
+ redirect_referrer
175
179
  end
176
180
 
177
181
  # Redrect the user to the proper page
@@ -183,8 +187,9 @@ module Menus
183
187
  end
184
188
 
185
189
  ##
186
- # Deletes a number of navigation menus based on the supplied primary values.
187
- # These primary values should be stored in a POST array called "menu_ids".
190
+ # Deletes a number of navigation menus based on the supplied primary
191
+ # values. These primary values should be stored in a POST array called
192
+ # "menu_ids".
188
193
  #
189
194
  # This method requires the following permissions:
190
195
  #
@@ -194,9 +199,7 @@ module Menus
194
199
  # @since 0.2a
195
200
  #
196
201
  def delete
197
- if !user_authorized?([:delete])
198
- respond(lang('zen_general.errors.not_authorized'), 403)
199
- end
202
+ require_permissions(:delete)
200
203
 
201
204
  post = request.params.dup
202
205
 
@@ -213,6 +216,7 @@ module Menus
213
216
  rescue => e
214
217
  Ramaze::Log.error(e.inspect)
215
218
  message(:error, lang('menus.errors.delete') % id)
219
+
216
220
  redirect_referrer
217
221
  end
218
222
  end
@@ -3,31 +3,58 @@ module Ramaze
3
3
  #:nodoc:
4
4
  module Helper
5
5
  ##
6
- # Small helper for the Menus package mainly used to reduce the amount of code
7
- # in controllers.
6
+ # Small helper for the Menus package mainly used to reduce the amount of
7
+ # code in controllers.
8
8
  #
9
9
  # @author Yorick Peterse
10
10
  # @since 0.2a
11
11
  #
12
- module MenuItem
12
+ module Menu
13
13
  ##
14
- # Checks if there is a menu for the given ID. If this isn't the case the user
15
- # will be redirected back to the index page of the menus controller.
14
+ # Checks if there is a menu for the given ID. If this isn't the case the
15
+ # user will be redirected back to the index page of the menus controller.
16
16
  #
17
17
  # @author Yorick Peterse
18
18
  # @since 0.2a
19
- # @param [Integer] menu_id The ID of the menu to validate.
19
+ # @param [Fixnum] menu_id The ID of the menu to validate.
20
+ # @return [Menus::Model::Menu] The menu that was specified in case it's
21
+ # valid.
20
22
  #
21
23
  def validate_menu(menu_id)
22
- if !menu_id or ::Menus::Model::Menu[menu_id].nil?
23
- message(:error, @menu_items_lang.errors[:invalid_menu])
24
+ menu = ::Menus::Model::Menu[menu_id]
25
+
26
+ if menu.nil?
27
+ message(:error, lang('menus.errors.invalid_menu'))
24
28
  redirect(::Menus::Controller::Menus.r(:index))
29
+ else
30
+ return menu
31
+ end
32
+ end
33
+
34
+ ##
35
+ # Validates a menu item and returns it if it's valid.
36
+ #
37
+ # @author Yorick Peterse
38
+ # @since 0.2.8
39
+ # @param [Fixnum] menu_item_id The ID of the menu item to validate.
40
+ # @param [Fixnum] menu_id The ID of the menu the item belongs to, used
41
+ # when redirecting the user.
42
+ # @return [Menus::Model::MenuItem]
43
+ #
44
+ def validate_menu_item(menu_item_id, menu_id)
45
+ menu_item = ::Menus::Model::MenuItem[menu_item_id]
46
+
47
+ if menu_item.nil?
48
+ message(:error, lang('menu_items.errors.invalid_item'))
49
+ redirect(::Menus::Controller::MenuItems.r(:index, menu_id))
50
+ else
51
+ return menu_item
25
52
  end
26
53
  end
27
54
 
28
55
  ##
29
- # Builds a hierarchy of navigation items and all their sub items. The generated
30
- # structure looks like the following:
56
+ # Builds a hierarchy of navigation items and all their sub items. The
57
+ # generated structure looks like the following:
31
58
  #
32
59
  # Root
33
60
  # |
@@ -36,15 +63,15 @@ module Ramaze
36
63
  # | |_ Sub sub
37
64
  # |
38
65
  # |_ Sub 1
39
- #
66
+ #
40
67
  # @author Yorick Peterse
41
68
  # @since 0.2a
42
- # @param [Integer] menu_id The ID of the current menu group.
69
+ # @param [Fixnum] menu_id The ID of the current menu group.
43
70
  # @return [Hash]
44
71
  #
45
72
  def menu_item_tree(menu_id)
46
73
  menu_items = ::Menus::Model::MenuItem.filter(
47
- :menu_id => menu_id,
74
+ :menu_id => menu_id,
48
75
  :parent_id => nil
49
76
  )
50
77
 
@@ -54,7 +81,7 @@ module Ramaze
54
81
  @menu_items_hash[item.id] = item.name
55
82
 
56
83
  item.descendants.each do |i|
57
- self.descendant_items(i, 2)
84
+ descendant_items(i, 2)
58
85
  end
59
86
  end
60
87
 
@@ -67,7 +94,7 @@ module Ramaze
67
94
  # @author Yorick Peterse
68
95
  # @since 0.2a
69
96
  # @param [Menus::Model::MenuItem] item A MenuItem instance
70
- # @param [Integer] spaces The amount of unbreakable spaces to use.
97
+ # @param [Fixnum] spaces The amount of unbreakable spaces to use.
71
98
  #
72
99
  def descendant_items(item, spaces)
73
100
  return if @menu_items_hash.key?(item.id)