zen 0.2.7 → 0.2.8

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