zen 0.2.8 → 0.3b

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (422) hide show
  1. data/.gems +20 -0
  2. data/.mailmap +3 -2
  3. data/.rvmrc +1 -1
  4. data/.travis.yml +13 -2
  5. data/.yardopts +13 -0
  6. data/AUTHORS +1 -1
  7. data/README.md +115 -77
  8. data/Rakefile +6 -7
  9. data/bin/zen +12 -5
  10. data/guide/_static/categories/categories.png +0 -0
  11. data/guide/_static/categories/category_groups.png +0 -0
  12. data/guide/_static/categories/new_category.png +0 -0
  13. data/guide/_static/categories/new_category_group.png +0 -0
  14. data/guide/_static/comments/comments.png +0 -0
  15. data/guide/_static/comments/edit_comment.png +0 -0
  16. data/guide/_static/custom_fields/custom_field_groups.png +0 -0
  17. data/guide/_static/custom_fields/custom_field_types.png +0 -0
  18. data/guide/_static/custom_fields/custom_fields.png +0 -0
  19. data/guide/_static/custom_fields/edit_custom_field_general.png +0 -0
  20. data/guide/_static/custom_fields/edit_custom_field_group.png +0 -0
  21. data/guide/_static/custom_fields/edit_custom_field_settings.png +0 -0
  22. data/guide/_static/custom_fields/edit_custom_field_type.png +0 -0
  23. data/guide/_static/menus/edit_menu.png +0 -0
  24. data/guide/_static/menus/edit_menu_item.png +0 -0
  25. data/guide/_static/menus/menu_items.png +0 -0
  26. data/guide/_static/menus/menus.png +0 -0
  27. data/guide/_static/sections/edit_entry.png +0 -0
  28. data/guide/_static/sections/edit_entry_categories.png +0 -0
  29. data/guide/_static/sections/edit_entry_general.png +0 -0
  30. data/guide/_static/sections/edit_entry_meta.png +0 -0
  31. data/guide/_static/sections/edit_section_comments.png +0 -0
  32. data/guide/_static/sections/edit_section_general.png +0 -0
  33. data/guide/_static/sections/edit_section_groups.png +0 -0
  34. data/guide/_static/sections/entries.png +0 -0
  35. data/guide/_static/sections/sections.png +0 -0
  36. data/guide/_static/settings/overview_general.png +0 -0
  37. data/guide/_static/settings/overview_security.png +0 -0
  38. data/guide/_static/settings/overview_user.png +0 -0
  39. data/guide/_static/users/edit_user.png +0 -0
  40. data/guide/_static/users/edit_user_group.png +0 -0
  41. data/guide/_static/users/edit_user_group_permissions.png +0 -0
  42. data/guide/_static/users/edit_user_permissions.png +0 -0
  43. data/guide/_static/users/overview.png +0 -0
  44. data/guide/_static/users/user_groups_overview.png +0 -0
  45. data/guide/asset_management.md +117 -0
  46. data/{CHANGELOG.md → guide/changelog.md} +42 -0
  47. data/guide/css/common.css +20 -0
  48. data/guide/getting_started.md +61 -0
  49. data/guide/hacking.md +52 -0
  50. data/guide/installation.md +44 -0
  51. data/guide/javascript.md +352 -0
  52. data/lib/vendor/sequel_sluggable.rb +137 -0
  53. data/lib/yard/tags.rb +13 -0
  54. data/lib/zen.rb +148 -78
  55. data/lib/zen/asset_groups.rb +85 -0
  56. data/lib/zen/bin/create.rb +267 -56
  57. data/lib/zen/bin/default.rb +84 -0
  58. data/lib/zen/controller/admin_controller.rb +1 -82
  59. data/lib/zen/controller/base_controller.rb +9 -5
  60. data/lib/zen/controller/frontend_controller.rb +0 -1
  61. data/lib/zen/controller/main_controller.rb +30 -42
  62. data/lib/zen/controller/preview.rb +9 -8
  63. data/lib/zen/controller/translations.rb +49 -0
  64. data/lib/zen/error.rb +17 -0
  65. data/lib/zen/event.rb +118 -0
  66. data/lib/zen/helper/asset.rb +63 -0
  67. data/lib/zen/helper/breadcrumb.rb +1 -4
  68. data/lib/zen/helper/controller.rb +73 -0
  69. data/lib/zen/helper/locale.rb +42 -0
  70. data/lib/zen/helper/message.rb +0 -3
  71. data/lib/zen/helper/search.rb +54 -0
  72. data/lib/zen/helper/stacked_aspect.rb +249 -0
  73. data/lib/zen/helper/theme.rb +3 -10
  74. data/lib/zen/language.rb +356 -181
  75. data/lib/zen/language/en/zen_general.rb +52 -0
  76. data/lib/zen/language/en/zen_models.rb +19 -0
  77. data/lib/zen/language/nl/zen_general.rb +57 -0
  78. data/lib/zen/language/nl/zen_models.rb +22 -0
  79. data/lib/zen/language/translation.rb +132 -0
  80. data/lib/zen/languages.rb +9 -0
  81. data/lib/zen/layout/admin.xhtml +3 -3
  82. data/lib/zen/layout/login.xhtml +1 -1
  83. data/lib/zen/markup.rb +189 -0
  84. data/lib/zen/model/helper.rb +65 -0
  85. data/lib/zen/model/init.rb +62 -0
  86. data/lib/zen/model/methods.rb +6 -7
  87. data/lib/zen/package.rb +312 -201
  88. data/lib/zen/package/all.rb +4 -3
  89. data/lib/zen/package/categories/lib/categories.rb +29 -41
  90. data/lib/zen/package/categories/lib/categories/controller/categories.rb +185 -130
  91. data/lib/zen/package/categories/lib/categories/controller/category_groups.rb +172 -102
  92. data/lib/zen/package/categories/lib/categories/helper/category.rb +4 -9
  93. data/lib/zen/package/categories/lib/categories/helper/category_frontend.rb +86 -0
  94. data/lib/zen/package/categories/lib/categories/language/en/categories.rb +40 -0
  95. data/lib/zen/package/categories/lib/categories/language/en/category_groups.rb +39 -0
  96. data/lib/zen/package/categories/lib/categories/language/nl/categories.rb +42 -0
  97. data/lib/zen/package/categories/lib/categories/language/nl/category_groups.rb +42 -0
  98. data/lib/zen/package/categories/lib/categories/model/category.rb +21 -25
  99. data/lib/zen/package/categories/lib/categories/model/category_group.rb +21 -15
  100. data/lib/zen/package/categories/lib/categories/view/admin/categories/form.xhtml +25 -26
  101. data/lib/zen/package/categories/lib/categories/view/admin/categories/index.xhtml +24 -24
  102. data/lib/zen/package/categories/lib/categories/view/admin/category-groups/form.xhtml +18 -20
  103. data/lib/zen/package/categories/lib/categories/view/admin/category-groups/index.xhtml +21 -18
  104. data/lib/zen/package/comments/lib/comments.rb +30 -50
  105. data/lib/zen/package/comments/lib/comments/anti_spam.rb +138 -0
  106. data/lib/zen/package/comments/lib/comments/controller/comments.rb +159 -92
  107. data/lib/zen/package/comments/lib/comments/controller/comments_form.rb +122 -34
  108. data/lib/zen/package/comments/lib/comments/helper/comment.rb +0 -3
  109. data/lib/zen/package/comments/lib/comments/helper/comment_frontend.rb +90 -0
  110. data/lib/zen/package/comments/lib/comments/language/en/comments.rb +57 -0
  111. data/lib/zen/package/comments/lib/comments/language/nl/comments.rb +61 -0
  112. data/lib/zen/package/comments/lib/comments/model/comment.rb +147 -49
  113. data/lib/zen/package/comments/lib/comments/model/comment_status.rb +0 -2
  114. data/lib/zen/package/comments/lib/comments/view/admin/comments/form.xhtml +37 -40
  115. data/lib/zen/package/comments/lib/comments/view/admin/comments/index.xhtml +23 -42
  116. data/lib/zen/package/comments/migrations/1308774099_comment_status.rb +12 -4
  117. data/lib/zen/package/comments/migrations/1313851786_remove_defensio_signature.rb +11 -0
  118. data/lib/zen/package/custom_fields/lib/custom_fields.rb +40 -43
  119. data/lib/zen/package/custom_fields/lib/custom_fields/blue_form_parameters.rb +72 -17
  120. data/lib/zen/package/custom_fields/lib/custom_fields/controller/custom_field_groups.rb +154 -118
  121. data/lib/zen/package/custom_fields/lib/custom_fields/controller/custom_field_types.rb +147 -90
  122. data/lib/zen/package/custom_fields/lib/custom_fields/controller/custom_fields.rb +161 -131
  123. data/lib/zen/package/custom_fields/lib/custom_fields/helper/custom_field.rb +4 -9
  124. data/lib/zen/package/custom_fields/lib/custom_fields/language/en/custom_field_groups.rb +42 -0
  125. data/lib/zen/package/custom_fields/lib/custom_fields/language/en/custom_field_types.rb +51 -0
  126. data/lib/zen/package/custom_fields/lib/custom_fields/language/en/custom_fields.rb +60 -0
  127. data/lib/zen/package/custom_fields/lib/custom_fields/language/nl/custom_field_groups.rb +41 -0
  128. data/lib/zen/package/custom_fields/lib/custom_fields/language/nl/custom_field_types.rb +49 -0
  129. data/lib/zen/package/custom_fields/lib/custom_fields/language/nl/custom_fields.rb +61 -0
  130. data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field.rb +18 -23
  131. data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field_group.rb +20 -19
  132. data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field_method.rb +1 -3
  133. data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field_type.rb +19 -9
  134. data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field_value.rb +18 -15
  135. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-groups/form.xhtml +18 -18
  136. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-groups/index.xhtml +30 -24
  137. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-types/form.xhtml +15 -10
  138. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-types/index.xhtml +24 -19
  139. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-fields/form.xhtml +18 -13
  140. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-fields/index.xhtml +30 -20
  141. data/lib/zen/package/extensions/lib/extensions.rb +20 -0
  142. data/lib/zen/package/extensions/lib/extensions/controller/extensions.rb +41 -0
  143. data/lib/zen/package/extensions/lib/extensions/language/en/extensions.rb +23 -0
  144. data/lib/zen/package/extensions/lib/extensions/language/nl/extensions.rb +25 -0
  145. data/lib/zen/package/extensions/lib/extensions/view/admin/extensions/index.xhtml +86 -0
  146. data/lib/zen/package/menu.rb +109 -0
  147. data/lib/zen/package/menus/lib/menus.rb +25 -34
  148. data/lib/zen/package/menus/lib/menus/controller/menu_items.rb +143 -107
  149. data/lib/zen/package/menus/lib/menus/controller/menus.rb +166 -115
  150. data/lib/zen/package/menus/lib/menus/helper/menu.rb +2 -8
  151. data/lib/zen/package/menus/lib/menus/helper/menu_frontend.rb +114 -0
  152. data/lib/zen/package/menus/lib/menus/language/en/menu_items.rb +48 -0
  153. data/lib/zen/package/menus/lib/menus/language/en/menus.rb +48 -0
  154. data/lib/zen/package/menus/lib/menus/language/nl/menu_items.rb +48 -0
  155. data/lib/zen/package/menus/lib/menus/language/nl/menus.rb +50 -0
  156. data/lib/zen/package/menus/lib/menus/model/menu.rb +24 -17
  157. data/lib/zen/package/menus/lib/menus/model/menu_item.rb +37 -13
  158. data/lib/zen/package/menus/lib/menus/view/admin/menu-items/form.xhtml +32 -25
  159. data/lib/zen/package/menus/lib/menus/view/admin/menu-items/index.xhtml +23 -17
  160. data/lib/zen/package/menus/lib/menus/view/admin/menus/form.xhtml +31 -26
  161. data/lib/zen/package/menus/lib/menus/view/admin/menus/index.xhtml +20 -22
  162. data/lib/zen/package/sections/lib/sections.rb +25 -68
  163. data/lib/zen/package/sections/lib/sections/controller/section_entries.rb +178 -138
  164. data/lib/zen/package/sections/lib/sections/controller/sections.rb +173 -140
  165. data/lib/zen/package/sections/lib/sections/helper/section.rb +3 -6
  166. data/lib/zen/package/sections/lib/sections/helper/section_frontend.rb +146 -0
  167. data/lib/zen/package/sections/lib/sections/language/en/section_entries.rb +50 -0
  168. data/lib/zen/package/sections/lib/sections/language/en/sections.rb +55 -0
  169. data/lib/zen/package/sections/lib/sections/language/nl/section_entries.rb +50 -0
  170. data/lib/zen/package/sections/lib/sections/language/nl/sections.rb +55 -0
  171. data/lib/zen/package/sections/lib/sections/model/section.rb +36 -36
  172. data/lib/zen/package/sections/lib/sections/model/section_entry.rb +52 -59
  173. data/lib/zen/package/sections/lib/sections/model/section_entry_status.rb +2 -2
  174. data/lib/zen/package/sections/lib/sections/view/admin/form.xhtml +24 -21
  175. data/lib/zen/package/sections/lib/sections/view/admin/index.xhtml +24 -26
  176. data/lib/zen/package/sections/lib/sections/view/admin/section-entries/form.xhtml +33 -31
  177. data/lib/zen/package/sections/lib/sections/view/admin/section-entries/index.xhtml +24 -25
  178. data/lib/zen/package/sections/migrations/1308672298_use_id_for_default_section.rb +14 -10
  179. data/lib/zen/package/sections/migrations/1308813320_section_entry_statuses.rb +12 -6
  180. data/lib/zen/package/settings/lib/settings.rb +25 -120
  181. data/lib/zen/package/settings/lib/settings/blue_form_parameters.rb +157 -0
  182. data/lib/zen/package/settings/lib/settings/controller/settings.rb +94 -69
  183. data/lib/zen/package/settings/lib/settings/language/en/settings.rb +41 -0
  184. data/lib/zen/package/settings/lib/settings/language/nl/settings.rb +41 -0
  185. data/lib/zen/package/settings/lib/settings/model/setting.rb +0 -2
  186. data/lib/zen/package/settings/lib/settings/setting.rb +379 -0
  187. data/lib/zen/package/settings/lib/settings/setting_groups.rb +11 -0
  188. data/lib/zen/package/settings/lib/settings/settings.rb +83 -0
  189. data/lib/zen/package/settings/lib/settings/settings_group.rb +84 -0
  190. data/lib/zen/package/settings/lib/settings/singleton_methods.rb +35 -0
  191. data/lib/zen/package/settings/lib/settings/view/admin/settings/index.xhtml +15 -57
  192. data/lib/zen/package/settings/migrations/1321197919_remove_unused_columns.rb +17 -0
  193. data/lib/zen/package/users/lib/users.rb +51 -36
  194. data/lib/zen/package/users/lib/users/controller/user_groups.rb +133 -98
  195. data/lib/zen/package/users/lib/users/controller/users.rb +253 -136
  196. data/lib/zen/package/users/lib/users/helper/access.rb +102 -0
  197. data/lib/zen/package/users/lib/users/helper/acl.rb +113 -0
  198. data/lib/zen/package/users/lib/users/helper/users.rb +41 -24
  199. data/lib/zen/package/users/lib/users/language/en/permissions.rb +16 -0
  200. data/lib/zen/package/users/lib/users/language/en/user_groups.rb +39 -0
  201. data/lib/zen/package/users/lib/users/language/en/users.rb +73 -0
  202. data/lib/zen/package/users/lib/users/language/nl/permissions.rb +16 -0
  203. data/lib/zen/package/users/lib/users/language/nl/user_groups.rb +41 -0
  204. data/lib/zen/package/users/lib/users/language/nl/users.rb +74 -0
  205. data/lib/zen/package/users/lib/users/model/permission.rb +28 -0
  206. data/lib/zen/package/users/lib/users/model/user.rb +104 -65
  207. data/lib/zen/package/users/lib/users/model/user_group.rb +28 -24
  208. data/lib/zen/package/users/lib/users/model/user_status.rb +27 -0
  209. data/lib/zen/package/users/lib/users/public/admin/css/users/permissions.css +22 -0
  210. data/lib/zen/package/users/lib/users/public/admin/js/users/permissions.js +33 -0
  211. data/lib/zen/package/users/lib/users/settings.rb +19 -0
  212. data/lib/zen/package/users/lib/users/view/admin/user-groups/form.xhtml +58 -28
  213. data/lib/zen/package/users/lib/users/view/admin/user-groups/index.xhtml +19 -15
  214. data/lib/zen/package/users/lib/users/view/admin/users/form.xhtml +93 -62
  215. data/lib/zen/package/users/lib/users/view/admin/users/index.xhtml +23 -36
  216. data/lib/zen/package/users/lib/users/view/admin/users/login.xhtml +13 -6
  217. data/lib/zen/package/users/lib/users/view/admin/users/permissions.xhtml +33 -0
  218. data/lib/zen/package/users/lib/users/view/admin/users/register.xhtml +52 -0
  219. data/lib/zen/package/users/migrations/1313786058_update_default_date.rb +41 -0
  220. data/lib/zen/package/users/migrations/1316432327_permissions.rb +36 -0
  221. data/lib/zen/package/users/migrations/1320272365_status_ids.rb +67 -0
  222. data/lib/zen/public/admin/css/zen/buttons.css +3 -11
  223. data/lib/zen/public/admin/css/zen/datepicker.css +23 -13
  224. data/lib/zen/public/admin/css/zen/editor.css +6 -14
  225. data/lib/zen/public/admin/css/zen/forms.css +19 -12
  226. data/lib/zen/public/admin/css/zen/general.css +22 -18
  227. data/lib/zen/public/admin/css/zen/grid.css +1 -20
  228. data/lib/zen/public/admin/css/zen/layout.css +26 -11
  229. data/lib/zen/public/admin/css/zen/messages.css +3 -10
  230. data/lib/zen/public/admin/css/zen/reset.css +13 -15
  231. data/lib/zen/public/admin/css/zen/tables.css +8 -10
  232. data/lib/zen/public/admin/css/zen/tabs.css +2 -10
  233. data/lib/zen/public/admin/css/zen/window.css +2 -8
  234. data/lib/zen/public/admin/js/vendor/datepicker.js +540 -240
  235. data/lib/zen/public/admin/js/vendor/mootools/core.js +273 -283
  236. data/lib/zen/public/admin/js/vendor/mootools/more.js +131 -136
  237. data/lib/zen/public/admin/js/zen/index.js +8 -14
  238. data/lib/zen/public/admin/js/zen/lib/editor.js +36 -33
  239. data/lib/zen/public/admin/js/zen/lib/editor/markdown.js +0 -6
  240. data/lib/zen/public/admin/js/zen/lib/editor/textile.js +0 -6
  241. data/lib/zen/public/admin/js/zen/lib/html_table.js +0 -5
  242. data/lib/zen/public/admin/js/zen/lib/tabs.js +22 -79
  243. data/lib/zen/public/admin/js/zen/lib/window.js +12 -22
  244. data/lib/zen/spec/bacon/color_output.rb +1 -1
  245. data/lib/zen/spec/helper.rb +6 -11
  246. data/lib/zen/spec/simplecov.rb +3 -3
  247. data/lib/zen/task.rb +0 -1
  248. data/lib/zen/task/build.rake +46 -26
  249. data/lib/zen/task/clean.rake +14 -7
  250. data/lib/zen/task/db.rake +31 -29
  251. data/lib/zen/task/package.rake +19 -23
  252. data/lib/zen/task/proto.rake +3 -5
  253. data/lib/zen/task/setup.rake +4 -0
  254. data/lib/zen/task/test.rake +31 -6
  255. data/lib/zen/task/theme.rake +13 -19
  256. data/lib/zen/theme.rb +377 -52
  257. data/lib/zen/validation.rb +22 -30
  258. data/lib/zen/version.rb +1 -2
  259. data/lib/zen/view/bottom.xhtml +9 -1
  260. data/lib/zen/view/head.xhtml +1 -1
  261. data/lib/zen/view/main.xhtml +1 -1
  262. data/lib/zen/view/search.xhtml +9 -0
  263. data/proto/app/Rakefile +0 -1
  264. data/proto/app/app.rb +21 -16
  265. data/proto/app/config/config.rb.erb +41 -0
  266. data/proto/app/config/{database.rb → database.rb.erb} +17 -14
  267. data/proto/app/config/middlewares.rb +1 -1
  268. data/proto/app/theme/default/index.xhtml +25 -0
  269. data/proto/app/theme/theme.rb +19 -0
  270. data/proto/app/{log/database/dev → tmp}/.gitkeep +0 -0
  271. data/proto/migration.rb +3 -5
  272. data/proto/rack/thin.yml +41 -0
  273. data/proto/rack/unicorn.rb +38 -0
  274. data/spec/Rakefile +15 -11
  275. data/spec/fixtures/zen/helper/controller.rb +13 -0
  276. data/spec/fixtures/zen/helper/locale.rb +7 -0
  277. data/spec/fixtures/zen/helper/message.rb +0 -4
  278. data/spec/fixtures/zen/language.rb +31 -0
  279. data/spec/fixtures/zen/language/en/spec.rb +11 -0
  280. data/spec/fixtures/zen/language/nl/spec.rb +11 -0
  281. data/spec/fixtures/zen/package.rb +0 -10
  282. data/spec/fixtures/zen/package/categories/helper/category_frontend.rb +16 -0
  283. data/spec/fixtures/zen/package/comments/helper/comment_frontend.rb +16 -0
  284. data/spec/fixtures/zen/package/sections/helper/section_frontend.rb +16 -0
  285. data/spec/fixtures/zen/package/settings/controller/settings.rb +17 -0
  286. data/spec/fixtures/zen/package/users/helper/access.rb +18 -0
  287. data/spec/fixtures/zen/package/users/helper/acl.rb +23 -0
  288. data/spec/fixtures/zen/theme/{default-section → default}/index.xhtml +0 -0
  289. data/spec/helper.rb +12 -27
  290. data/{proto/app/log/database/live → spec/public}/.gitkeep +0 -0
  291. data/spec/zen/controller/admin_controller.rb +5 -6
  292. data/spec/zen/controller/main_controller.rb +29 -35
  293. data/spec/zen/controller/preview.rb +9 -10
  294. data/spec/zen/event.rb +44 -0
  295. data/spec/zen/helper/breadcrumb.rb +4 -5
  296. data/spec/zen/helper/controller.rb +21 -0
  297. data/spec/zen/helper/locale.rb +25 -0
  298. data/spec/zen/helper/message.rb +4 -11
  299. data/spec/zen/helper/theme.rb +11 -14
  300. data/spec/zen/language.rb +48 -22
  301. data/spec/zen/markup.rb +39 -0
  302. data/spec/zen/package.rb +48 -11
  303. data/spec/zen/package/categories/controller/categories.rb +99 -45
  304. data/spec/zen/package/categories/controller/category_groups.rb +109 -33
  305. data/spec/zen/package/categories/helper/category.rb +19 -32
  306. data/spec/zen/package/categories/helper/category_frontend.rb +61 -0
  307. data/spec/zen/package/comments/anti_spam.rb +50 -0
  308. data/spec/zen/package/comments/controller/comments.rb +121 -61
  309. data/spec/zen/package/comments/controller/comments_form.rb +120 -94
  310. data/spec/zen/package/comments/helper/comment.rb +13 -13
  311. data/spec/zen/package/comments/helper/comment_frontend.rb +92 -0
  312. data/spec/zen/package/custom_fields/blue_form_parameters.rb +50 -50
  313. data/spec/zen/package/custom_fields/controller/custom_field_groups.rb +135 -43
  314. data/spec/zen/package/custom_fields/controller/custom_field_types.rb +153 -48
  315. data/spec/zen/package/custom_fields/controller/custom_fields.rb +130 -51
  316. data/spec/zen/package/custom_fields/helper/custom_field.rb +8 -8
  317. data/spec/zen/package/extensions/controller/extensions.rb +38 -0
  318. data/spec/zen/package/menus/controller/menu_items.rb +121 -42
  319. data/spec/zen/package/menus/controller/menus.rb +125 -38
  320. data/spec/zen/package/menus/helper/menu.rb +26 -26
  321. data/spec/zen/package/menus/helper/menu_frontend.rb +104 -0
  322. data/spec/zen/package/sections/controller/section_entries.rb +145 -89
  323. data/spec/zen/package/sections/controller/sections.rb +130 -35
  324. data/spec/zen/package/sections/helper/section.rb +27 -38
  325. data/spec/zen/package/sections/helper/section_frontend.rb +160 -0
  326. data/spec/zen/package/settings/controller/settings.rb +73 -8
  327. data/spec/zen/package/settings/settings.rb +119 -0
  328. data/spec/zen/package/users/controller/user_groups.rb +134 -34
  329. data/spec/zen/package/users/controller/users.rb +189 -44
  330. data/spec/zen/package/users/helper/access.rb +29 -0
  331. data/spec/zen/package/users/helper/acl.rb +46 -0
  332. data/spec/zen/package/users/helper/users.rb +20 -64
  333. data/spec/zen/theme.rb +7 -9
  334. data/spec/zen/validation.rb +1 -2
  335. data/zen.gemspec +25 -22
  336. metadata +303 -222
  337. data/lib/zen/asset.rb +0 -292
  338. data/lib/zen/bin/runner.rb +0 -118
  339. data/lib/zen/error/language_error.rb +0 -10
  340. data/lib/zen/error/package_error.rb +0 -10
  341. data/lib/zen/error/plugin_error.rb +0 -10
  342. data/lib/zen/error/theme_error.rb +0 -10
  343. data/lib/zen/error/validation_error.rb +0 -10
  344. data/lib/zen/helper/acl.rb +0 -182
  345. data/lib/zen/helper/blue_form_vendor.rb +0 -689
  346. data/lib/zen/language/en/zen_general.yml +0 -25
  347. data/lib/zen/language/en/zen_models.yml +0 -13
  348. data/lib/zen/language/nl/zen_general.yml +0 -25
  349. data/lib/zen/language/nl/zen_models.yml +0 -13
  350. data/lib/zen/model/settings.rb +0 -78
  351. data/lib/zen/package/base.rb +0 -62
  352. data/lib/zen/package/categories/lib/categories/language/en/categories.yml +0 -36
  353. data/lib/zen/package/categories/lib/categories/language/en/category_groups.yml +0 -34
  354. data/lib/zen/package/categories/lib/categories/language/nl/categories.yml +0 -40
  355. data/lib/zen/package/categories/lib/categories/language/nl/category_groups.yml +0 -34
  356. data/lib/zen/package/categories/lib/categories/plugin/categories.rb +0 -141
  357. data/lib/zen/package/comments/lib/comments/language/en/comments.yml +0 -48
  358. data/lib/zen/package/comments/lib/comments/language/nl/comments.yml +0 -50
  359. data/lib/zen/package/comments/lib/comments/plugin/anti_spam.rb +0 -156
  360. data/lib/zen/package/comments/lib/comments/plugin/comments.rb +0 -115
  361. data/lib/zen/package/custom_fields/lib/custom_fields/language/en/custom_field_groups.yml +0 -33
  362. data/lib/zen/package/custom_fields/lib/custom_fields/language/en/custom_field_types.yml +0 -40
  363. data/lib/zen/package/custom_fields/lib/custom_fields/language/en/custom_fields.yml +0 -54
  364. data/lib/zen/package/custom_fields/lib/custom_fields/language/nl/custom_field_groups.yml +0 -33
  365. data/lib/zen/package/custom_fields/lib/custom_fields/language/nl/custom_field_types.yml +0 -40
  366. data/lib/zen/package/custom_fields/lib/custom_fields/language/nl/custom_fields.yml +0 -54
  367. data/lib/zen/package/menus/lib/menus/language/en/menu_items.yml +0 -41
  368. data/lib/zen/package/menus/lib/menus/language/en/menus.yml +0 -40
  369. data/lib/zen/package/menus/lib/menus/language/nl/menu_items.yml +0 -41
  370. data/lib/zen/package/menus/lib/menus/language/nl/menus.yml +0 -40
  371. data/lib/zen/package/menus/lib/menus/plugin/menus.rb +0 -152
  372. data/lib/zen/package/sections/lib/sections/language/en/section_entries.yml +0 -44
  373. data/lib/zen/package/sections/lib/sections/language/en/sections.yml +0 -48
  374. data/lib/zen/package/sections/lib/sections/language/nl/section_entries.yml +0 -44
  375. data/lib/zen/package/sections/lib/sections/language/nl/sections.yml +0 -48
  376. data/lib/zen/package/sections/lib/sections/plugin/section_entries.rb +0 -244
  377. data/lib/zen/package/sections/lib/sections/plugin/sections.rb +0 -87
  378. data/lib/zen/package/settings/lib/settings/language/en/settings.yml +0 -36
  379. data/lib/zen/package/settings/lib/settings/language/nl/settings.yml +0 -37
  380. data/lib/zen/package/settings/lib/settings/plugin/group_base.rb +0 -39
  381. data/lib/zen/package/settings/lib/settings/plugin/setting_base.rb +0 -133
  382. data/lib/zen/package/settings/lib/settings/plugin/settings.rb +0 -251
  383. data/lib/zen/package/users/lib/users/controller/access_rules.rb +0 -284
  384. data/lib/zen/package/users/lib/users/language/en/access_rules.yml +0 -38
  385. data/lib/zen/package/users/lib/users/language/en/user_groups.yml +0 -32
  386. data/lib/zen/package/users/lib/users/language/en/users.yml +0 -57
  387. data/lib/zen/package/users/lib/users/language/nl/access_rules.yml +0 -38
  388. data/lib/zen/package/users/lib/users/language/nl/user_groups.yml +0 -32
  389. data/lib/zen/package/users/lib/users/language/nl/users.yml +0 -57
  390. data/lib/zen/package/users/lib/users/model/access_rule.rb +0 -42
  391. data/lib/zen/package/users/lib/users/public/admin/js/users/access_rules.js +0 -65
  392. data/lib/zen/package/users/lib/users/public/admin/js/users/lib/access_rules.js +0 -49
  393. data/lib/zen/package/users/lib/users/view/admin/access-rules/form.xhtml +0 -120
  394. data/lib/zen/package/users/lib/users/view/admin/access-rules/index.xhtml +0 -102
  395. data/lib/zen/plugin.rb +0 -182
  396. data/lib/zen/plugin/base.rb +0 -46
  397. data/lib/zen/plugin/helper.rb +0 -47
  398. data/lib/zen/plugin/markup/lib/markup.rb +0 -14
  399. data/lib/zen/plugin/markup/lib/markup/language/en/markup.yml +0 -6
  400. data/lib/zen/plugin/markup/lib/markup/markup.rb +0 -165
  401. data/lib/zen/public/admin/js/zen/lib/asset.js +0 -111
  402. data/lib/zen/task/plugin.rake +0 -18
  403. data/lib/zen/theme/base.rb +0 -65
  404. data/proto/app/config/config.rb +0 -18
  405. data/spec/fixtures/zen/language/en/spec.yml +0 -10
  406. data/spec/fixtures/zen/language/nl/spec.yml +0 -7
  407. data/spec/fixtures/zen/package/settings/plugin/settings.rb +0 -20
  408. data/spec/zen/asset.rb +0 -97
  409. data/spec/zen/bin/create.rb +0 -89
  410. data/spec/zen/bin/runner.rb +0 -47
  411. data/spec/zen/helper/acl.rb +0 -149
  412. data/spec/zen/package/categories/plugin/categories.rb +0 -92
  413. data/spec/zen/package/comments/plugin/anti_spam.rb +0 -59
  414. data/spec/zen/package/comments/plugin/comments.rb +0 -107
  415. data/spec/zen/package/menus/plugin/menus.rb +0 -120
  416. data/spec/zen/package/sections/plugin/section_entries.rb +0 -161
  417. data/spec/zen/package/sections/plugin/sections.rb +0 -75
  418. data/spec/zen/package/settings/plugin/settings.rb +0 -33
  419. data/spec/zen/package/users/controller/access_rules.rb +0 -90
  420. data/spec/zen/plugin.rb +0 -64
  421. data/spec/zen/plugin/helper.rb +0 -11
  422. data/spec/zen/plugin/markup.rb +0 -44
@@ -0,0 +1,146 @@
1
+ module Ramaze
2
+ module Helper
3
+ ##
4
+ # Helper for retrieving section entries in your templates.
5
+ #
6
+ # @since 0.3
7
+ #
8
+ module SectionFrontend
9
+ ##
10
+ # Retrieves a number of entries for a given section ID or section slug.
11
+ #
12
+ # @example Retrieving all entries by a section's ID
13
+ # get_entries(2)
14
+ #
15
+ # @example Retrieving all entries by a section's slug
16
+ # get_entries('pages')
17
+ #
18
+ # @example Paginating the results
19
+ # entries = get_entries('pages', :paginate => true)
20
+ #
21
+ # entries.each do |entry|
22
+ # puts entry.title
23
+ # end
24
+ #
25
+ # entries.navigation
26
+ #
27
+ # @example Customizing the sort order
28
+ # get_entries('pages', :order_by => :created_at, :order => :asc)
29
+ #
30
+ # @since 0.3
31
+ # @param [String|Fixnum] section The ID or slug of an section for which
32
+ # to retrieve a number of entries.
33
+ # @param [Hash] options A hash containing various options to customize
34
+ # the return value.
35
+ # @option options [Fixnum] :limit The maximum amount of entries to
36
+ # retrieve.
37
+ # @option options [TrueClass|FalseClass] :comments Whether or not all
38
+ # comments should be eager loaded, set to ``false`` by default.
39
+ # @option options [TrueClass|FalseClass] :categories Whether or not all
40
+ # categories have to be eager loaded, set to ``false`` by default.
41
+ # @option options [Symbol] :order_by The column to order the results on.
42
+ # @option options [Symbol] :order The sort order to use, set to ``:desc``
43
+ # by default.
44
+ # @option options [TrueClass|FalseClass] :paginate Whether or not the
45
+ # results should be paginated.
46
+ # @option options [String] :var The name of the query string item that
47
+ # contains the current page number.
48
+ # @option options [TrueClass|FalseClass] :field_values Whether or not
49
+ # custom fields and their values should be eager loaded. When set to
50
+ # false the hash ``fields`` on each entry will **not** be filled.
51
+ # @option options [TrueClass|FalseClass] :user Whether or not the user
52
+ # objects should be eager loaded for all entries. Set to ``false`` by
53
+ # default.
54
+ # @return [Mixed]
55
+ #
56
+ def get_entries(section, options = {})
57
+ trait = Zen::Controller::FrontendController.ancestral_trait[:paginate]
58
+ options = {
59
+ :limit => trait[:limit],
60
+ :var => trait[:var],
61
+ :paginate => false,
62
+ :comments => false,
63
+ :categories => false,
64
+ :order_by => :id,
65
+ :order => :desc,
66
+ :custom_field_values => true,
67
+ :user => false
68
+ }.merge(options)
69
+
70
+ eager = [:section]
71
+
72
+ # Determine what relations to eager load.
73
+ [:custom_field_values, :user, :comments, :categories].each do |k|
74
+ if options[k] == true
75
+ eager << k
76
+ end
77
+ end
78
+
79
+ # Build the query
80
+ query = Sections::Model::SectionEntry.select_all(:section_entries) \
81
+ .eager(*eager) \
82
+ .join(:sections, :section_entries__section_id => :sections__id)
83
+
84
+ if section.is_a?(String)
85
+ query = query.filter(:sections__slug => section)
86
+ else
87
+ query = query.filter(:sections__id => section)
88
+ end
89
+
90
+ query = query.order(options[:order_by].send(options[:order]))
91
+
92
+ # Paginate the results?
93
+ if options[:paginate] == true
94
+ query = paginate(
95
+ query,
96
+ :var => options[:var],
97
+ :limit => options[:limit]
98
+ )
99
+ else
100
+ query = query.limit(options[:limit]).all
101
+ end
102
+
103
+ # Loop over the rows and create a hash containing the custom fields and
104
+ # values of each entry.
105
+ query.each do |row|
106
+ row.fields ||= {}
107
+
108
+ # Get the fields?
109
+ if options[:custom_field_values] == true
110
+ row.custom_field_values.each do |field_value|
111
+ name = field_value.custom_field.slug.to_sym
112
+ row.fields[name] = field_value.html
113
+ end
114
+ end
115
+ end
116
+
117
+ return query
118
+ end
119
+
120
+ ##
121
+ # Retrieves the details of a single section entry.
122
+ #
123
+ # @example Get a single entry
124
+ # entry = get_entry('home')
125
+ #
126
+ # @since 0.3
127
+ # @param [String|Fixnum] entry The ID or slug of an entry to retrieve.
128
+ # @return [Mixed]
129
+ #
130
+ def get_entry(entry)
131
+ row = Sections::Model::SectionEntry.find_by_pk_or_slug(entry)
132
+
133
+ return row if row.nil?
134
+
135
+ row.fields ||= {}
136
+
137
+ row.custom_field_values.each do |field_value|
138
+ name = field_value.custom_field.slug.to_sym
139
+ row.fields[name] = field_value.html
140
+ end
141
+
142
+ return row
143
+ end
144
+ end # SectionFrontend
145
+ end # Helper
146
+ end # Ramaze
@@ -0,0 +1,50 @@
1
+ # encoding: utf-8
2
+
3
+ Zen::Language::Translation.add do |trans|
4
+ trans.language = 'en'
5
+ trans.name = 'section_entries'
6
+
7
+ trans.translate do |t|
8
+ t['titles.index'] = 'Section Entries'
9
+ t['titles.edit'] = 'Edit Entry'
10
+ t['titles.new'] = 'Add Entry'
11
+
12
+ t['labels.id'] = '#'
13
+ t['labels.title'] = 'Title'
14
+ t['labels.slug'] = 'Slug'
15
+ t['labels.status'] = 'Status'
16
+ t['labels.created_at'] = 'Created at'
17
+ t['labels.updated_at'] = 'Updated at'
18
+ t['labels.author'] = 'Author'
19
+
20
+ t['special.status_hash.draft'] = 'Draft'
21
+ t['special.status_hash.published'] = 'Published'
22
+
23
+ t['tabs.basic'] = 'Basic'
24
+ t['tabs.categories'] = 'Categories'
25
+
26
+ t['messages.no_entries'] = 'No section entries were found.'
27
+ t['messages.no_categories'] = 'No categories have been assigned to the '\
28
+ 'current section.'
29
+
30
+ t['errors.new'] = 'Failed to create a new section entry.'
31
+ t['errors.save'] = 'Failed to save the section entry.'
32
+ t['errors.delete'] = 'Failed to delete the section entry with ID#%s'
33
+ t['errors.no_delete'] = 'You haven\'t specified any section '\
34
+ 'entries to delete.'
35
+ t['errors.invalid_entry'] = 'The specified entry is invalid.'
36
+
37
+ t['success.new'] = 'The new section entry has been created.'
38
+ t['success.save'] = 'The section entry has been modified.'
39
+ t['success.delete'] = 'All selected entries have been deleted.'
40
+
41
+ t['buttons.new'] = 'Add section entry'
42
+ t['buttons.delete'] = 'Delete selected entries'
43
+ t['buttons.save'] = 'Save entry'
44
+
45
+ t['permissions.show'] = 'Show section entry'
46
+ t['permissions.edit'] = 'Edit section entry'
47
+ t['permissions.new'] = 'Add section entry'
48
+ t['permissions.delete'] = 'Delete section entry'
49
+ end
50
+ end
@@ -0,0 +1,55 @@
1
+ # encoding: utf-8
2
+
3
+ Zen::Language::Translation.add do |trans|
4
+ trans.language = 'en'
5
+ trans.name = 'sections'
6
+
7
+ trans.translate do |t|
8
+ t['titles.index'] = 'Sections'
9
+ t['titles.edit'] = 'Edit Section'
10
+ t['titles.new'] = 'Add Secton'
11
+
12
+ t['labels.id'] = '#'
13
+ t['labels.name'] = 'Name'
14
+ t['labels.slug'] = 'Slug'
15
+ t['labels.description'] = 'Description'
16
+ t['labels.comment_allow'] = 'Allow comments'
17
+ t['labels.comment_require_account'] = 'Comments require an account'
18
+ t['labels.comment_moderate'] = 'Moderate comments'
19
+ t['labels.comment_format'] = 'Comment format'
20
+ t['labels.custom_field_groups'] = 'Custom field groups'
21
+ t['labels.category_groups'] = 'Category groups'
22
+ t['labels.manage_entries'] = 'Manage entries'
23
+
24
+ t['special.boolean_hash.true'] = 'Yes'
25
+ t['special.boolean_hash.false'] = 'No'
26
+
27
+ t['tabs.general'] = 'General'
28
+ t['tabs.comment_settings'] = 'Comment Settings'
29
+ t['tabs.group_assignments'] = 'Group Assignments'
30
+
31
+ t['messages.no_sections'] = 'No sections have been created yet.'
32
+
33
+ t['errors.new'] = 'Failed to create a new section.'
34
+ t['errors.save'] = 'Failed to modify the section.'
35
+ t['errors.delete'] = 'Failed to delete the section with ID #%s.'
36
+ t['errors.no_delete'] = 'You need to specify at least one ' \
37
+ 'section to delete.'
38
+ t['errors.invalid_section'] = 'The specified section is invalid.'
39
+
40
+ t['success.new'] = 'The new section has been created.'
41
+ t['success.save'] = 'The section has been modified.'
42
+ t['success.delete'] = 'The selected sections have been deleted.'
43
+
44
+ t['buttons.new'] = 'Add section'
45
+ t['buttons.delete'] = 'Delete selected sections'
46
+ t['buttons.save'] = 'Save section'
47
+
48
+ t['permissions.show'] = 'Show section'
49
+ t['permissions.edit'] = 'Edit section'
50
+ t['permissions.new'] = 'Add section'
51
+ t['permissions.delete'] = 'Delete section'
52
+
53
+ t['description'] = 'Manage sections and section entries.'
54
+ end
55
+ end
@@ -0,0 +1,50 @@
1
+ # encoding: utf-8
2
+
3
+ Zen::Language::Translation.add do |trans|
4
+ trans.language = 'nl'
5
+ trans.name = 'section_entries'
6
+
7
+ trans.translate do |t|
8
+ t['titles.index'] = 'Sectie items'
9
+ t['titles.edit'] = 'Sectie item aanpassen'
10
+ t['titles.new'] = 'Sectie item aanmaken'
11
+
12
+ t['labels.id'] = '#'
13
+ t['labels.title'] = 'Titel'
14
+ t['labels.slug'] = 'Slug'
15
+ t['labels.status'] = 'Status'
16
+ t['labels.created_at'] = 'Aanmaak datum'
17
+ t['labels.updated_at'] = 'Aanpas datum'
18
+ t['labels.author'] = 'Auteur'
19
+
20
+ t['special.status_hash.draft'] = 'Voorbeeld'
21
+ t['special.status_hash.published'] = 'Gepubliceerd'
22
+
23
+ t['tabs.basic'] = 'Algemeen'
24
+ t['tabs.categories'] = 'Categoriën'
25
+
26
+ t['messages.no_entries'] = 'Er konden geen items worden gevonden.'
27
+ t['messages.no_categories'] = 'De huidige sectie bevat geen categoriën.'
28
+
29
+ t['success.new'] = 'Het sectie item is aangemaakt.'
30
+ t['success.save'] = 'Het sectie item is aangepast.'
31
+ t['success.delete'] = 'Alle geselecteerde items zijn verwijderd.'
32
+
33
+ t['errors.new'] = 'Het sectie item kon niet worden aangemaakt.'
34
+ t['errors.save'] = 'Het sectie item kon niet worden aangepast.'
35
+ t['errors.delete'] = 'Het sectie item met ID #%s kon niet ' \
36
+ 'worden verwijderd.'
37
+ t['errors.no_delete'] = 'U moet ten minste 1 item specificeren ' \
38
+ 'om te verwijderen.'
39
+ t['errors.invalid_entry'] = 'Het opgegeven item is ongeldig.'
40
+
41
+ t['buttons.new'] = 'Sectie item toevoegen'
42
+ t['buttons.save'] = 'Sectie item opslaan'
43
+ t['buttons.delete'] = 'Geselecteerde items verwijderen'
44
+
45
+ t['permissions.show'] = 'Sectie item weergeven'
46
+ t['permissions.edit'] = 'Sectie item aanpassen'
47
+ t['permissions.new'] = 'Sectie item aanmaken'
48
+ t['permissions.delete'] = 'Sectie item verwijderen'
49
+ end
50
+ end
@@ -0,0 +1,55 @@
1
+ # encoding: utf-8
2
+
3
+ Zen::Language::Translation.add do |trans|
4
+ trans.language = 'nl'
5
+ trans.name = 'sections'
6
+
7
+ trans.translate do |t|
8
+ t['titles.index'] = 'Secties'
9
+ t['titles.edit'] = 'Sectie aanpassen'
10
+ t['titles.new'] = 'Sectie toevoegen'
11
+
12
+ t['labels.id'] = '#'
13
+ t['labels.name'] = 'Naam'
14
+ t['labels.slug'] = 'Slug'
15
+ t['labels.description'] = 'Beschrijving'
16
+ t['labels.comment_allow'] = 'Reacties toegestaan'
17
+ t['labels.comment_require_account'] = 'Reacties vereisen een account'
18
+ t['labels.comment_moderate'] = 'Beheer reacties'
19
+ t['labels.comment_format'] = 'Text opmaak'
20
+ t['labels.custom_field_groups'] = 'Veld groepen'
21
+ t['labels.category_groups'] = 'Categorie groepen'
22
+ t['labels.manage_entries'] = 'Beheer items'
23
+
24
+ t['special.boolean_hash.true'] = 'Ja'
25
+ t['special.boolean_hash.false'] = 'Nee'
26
+
27
+ t['tabs.general'] = 'Algemeen'
28
+ t['tabs.comment_settings'] = 'Reactie instellingen'
29
+ t['tabs.group_assignments'] = 'Groepen'
30
+
31
+ t['messages.no_sections'] = 'Er konden geen secties worden gevonden.'
32
+
33
+ t['success.new'] = 'De sectie is aangemaakt.'
34
+ t['success.save'] = 'De sectie is aangepast.'
35
+ t['success.delete'] = 'Alle geselecteerde secties zijn verwijderd.'
36
+
37
+ t['errors.new'] = 'De sectie kon niet worden aangemaakt.'
38
+ t['errors.save'] = 'De sectie kon niet worden aangepast.'
39
+ t['errors.delete'] = 'De sectie met ID #%s kon niet worden verwijderd.'
40
+ t['errors.no_delete'] = 'U moet ten minste 1 sectie specificeren ' \
41
+ 'om te verwijderen.'
42
+ t['errors.invalid_section'] = 'De opgegeven sectie is ongeldig.'
43
+
44
+ t['buttons.new'] = 'Sectie toevoegen'
45
+ t['buttons.save'] = 'Sectie opslaan'
46
+ t['buttons.delete'] = 'Geselecteerde secties verwijderen'
47
+
48
+ t['permissions.show'] = 'Sectie weergeven'
49
+ t['permissions.edit'] = 'Sectie aanpassen'
50
+ t['permissions.new'] = 'Sectie aanmaken'
51
+ t['permissions.delete'] = 'Sectie verwijderen'
52
+
53
+ t['description'] = 'Beheer secties en sectie items.'
54
+ end
55
+ end
@@ -1,64 +1,64 @@
1
- #:nodoc:
2
1
  module Sections
3
2
  #:nodoc:
4
3
  module Model
5
4
  ##
6
- # Model that represents a single section. This model has the following
7
- # relations:
5
+ # Model that represents a single section.
8
6
  #
9
- # * section entries (one to many), eager loads the custom field values
10
- # * custom field group (many to many)
11
- # * category groups (many to many)
12
- #
13
- # The following plugins are loaded by this model:
14
- #
15
- # * sluggable (source: "name")
16
- #
17
- # @author Yorick Peterse
18
7
  # @since 0.1
19
8
  #
20
9
  class Section < Sequel::Model
21
- one_to_many(
22
- :section_entries,
23
- :class => "Sections::Model::SectionEntry",
10
+ include Zen::Model::Helper
11
+
12
+ one_to_many :section_entries,
13
+ :class => 'Sections::Model::SectionEntry',
24
14
  :eager => [:custom_field_values, :section_entry_status]
25
- )
26
-
27
- many_to_many(
28
- :custom_field_groups,
29
- :class => "CustomFields::Model::CustomFieldGroup"
30
- )
31
15
 
32
- many_to_many(
33
- :category_groups,
34
- :class => "Categories::Model::CategoryGroup"
35
- )
16
+ many_to_many :custom_field_groups,
17
+ :class => 'CustomFields::Model::CustomFieldGroup'
18
+
19
+ many_to_many :category_groups,
20
+ :class => 'Categories::Model::CategoryGroup'
21
+
22
+ plugin :sluggable, :source => :name, :freeze => false
23
+
24
+ ##
25
+ # Searches for a number of sections of which the title or description
26
+ # matches the search query.
27
+ #
28
+ # @example
29
+ # Sections::Model::Section.search('pages')
30
+ #
31
+ # @since 16-10-2011
32
+ # @param [String] query The search query.
33
+ # @return [Mixed]
34
+ #
35
+ def self.search(query)
36
+ return filter(
37
+ search_column(:name, query) | search_column(:description, query)
38
+ )
39
+ end
36
40
 
37
- plugin(:sluggable, :source => :name, :freeze => false)
38
-
39
41
  ##
40
42
  # Specifies all validation rules for each section.
41
43
  #
42
- # @author Yorick Peterse
43
44
  # @since 0.1
44
45
  #
45
46
  def validate
46
47
  validates_presence([
47
- :name,
48
- :comment_allow,
49
- :comment_require_account,
50
- :comment_moderate,
48
+ :name,
49
+ :comment_allow,
50
+ :comment_require_account,
51
+ :comment_moderate,
51
52
  :comment_format
52
53
  ])
53
54
 
54
- validates_presence(:slug) unless new?
55
55
  validates_max_length(255, [:name, :slug])
56
-
56
+
57
57
  validates_type(
58
- TrueClass,
58
+ TrueClass,
59
59
  [:comment_allow, :comment_require_account, :comment_moderate]
60
60
  )
61
-
61
+
62
62
  validates_unique(:slug)
63
63
  end
64
64
  end # Section