zen 0.1a → 0.2

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 (414) hide show
  1. data/CHANGELOG.md +17 -0
  2. data/MANIFEST +161 -264
  3. data/README.md +114 -0
  4. data/ROADMAP.md +31 -0
  5. data/Thorfile +8 -0
  6. data/lib/zen.rb +13 -10
  7. data/lib/zen/base/database.rb +34 -28
  8. data/lib/zen/base/language.rb +174 -92
  9. data/lib/zen/base/logger.rb +8 -6
  10. data/lib/zen/base/package.rb +36 -29
  11. data/lib/zen/base/version.rb +2 -1
  12. data/lib/zen/bin/zen_binary.rb +7 -71
  13. data/lib/zen/controller/admin_controller.rb +31 -11
  14. data/lib/zen/controller/base_controller.rb +13 -13
  15. data/lib/zen/controller/frontend_controller.rb +2 -0
  16. data/lib/zen/controller/main_controller.rb +9 -8
  17. data/lib/zen/helper/acl.rb +4 -1
  18. data/lib/zen/helper/asset.rb +5 -3
  19. data/lib/zen/helper/breadcrumb.rb +10 -8
  20. data/lib/zen/helper/common.rb +28 -13
  21. data/lib/zen/language/en/zen_general.yml +31 -0
  22. data/lib/zen/language/en/zen_models.yml +13 -0
  23. data/lib/zen/layout/admin.xhtml +76 -68
  24. data/lib/zen/layout/login.xhtml +48 -42
  25. data/lib/zen/liquid/controller_behavior.rb +2 -0
  26. data/lib/zen/liquid/general.rb +60 -9
  27. data/lib/zen/liquid/redirect.rb +29 -6
  28. data/lib/zen/liquid/strip.rb +3 -1
  29. data/lib/zen/model/methods.rb +7 -5
  30. data/lib/zen/model/settings.rb +69 -18
  31. data/lib/zen/package/all.rb +7 -0
  32. data/lib/zen/{packages → package}/categories/lib/categories.rb +3 -3
  33. data/lib/zen/package/categories/lib/categories/controller/categories.rb +250 -0
  34. data/lib/zen/package/categories/lib/categories/controller/category_groups.rb +216 -0
  35. data/lib/zen/package/categories/lib/categories/language/en/categories.yml +35 -0
  36. data/lib/zen/package/categories/lib/categories/language/en/category_groups.yml +32 -0
  37. data/lib/zen/package/categories/lib/categories/liquid/categories.rb +16 -0
  38. data/lib/zen/{packages → package}/categories/lib/categories/model/category.rb +9 -9
  39. data/lib/zen/{packages → package}/categories/lib/categories/model/category_group.rb +6 -4
  40. data/lib/zen/package/categories/lib/categories/view/admin/categories/edit.xhtml +7 -0
  41. data/lib/zen/package/categories/lib/categories/view/admin/categories/form.xhtml +59 -0
  42. data/lib/zen/package/categories/lib/categories/view/admin/categories/index.xhtml +78 -0
  43. data/lib/zen/package/categories/lib/categories/view/admin/categories/new.xhtml +7 -0
  44. data/lib/zen/package/categories/lib/categories/view/admin/category-groups/edit.xhtml +7 -0
  45. data/lib/zen/package/categories/lib/categories/view/admin/category-groups/form.xhtml +31 -0
  46. data/lib/zen/package/categories/lib/categories/view/admin/category-groups/index.xhtml +85 -0
  47. data/lib/zen/package/categories/lib/categories/view/admin/category-groups/new.xhtml +7 -0
  48. data/lib/zen/{packages → package}/categories/migrations/.gitkeep +0 -0
  49. data/lib/zen/{packages → package}/categories/migrations/1295282303_create_schema.rb +3 -2
  50. data/lib/zen/{packages → package}/comments/lib/comments.rb +1 -1
  51. data/lib/zen/{packages → package}/comments/lib/comments/controller/comments.rb +81 -41
  52. data/lib/zen/{packages → package}/comments/lib/comments/controller/comments_form.rb +15 -13
  53. data/lib/zen/package/comments/lib/comments/language/en/comments.yml +42 -0
  54. data/lib/zen/{packages → package}/comments/lib/comments/liquid/comment_form.rb +43 -13
  55. data/lib/zen/{packages → package}/comments/lib/comments/liquid/comments.rb +10 -12
  56. data/lib/zen/{packages → package}/comments/lib/comments/model/comment.rb +24 -0
  57. data/lib/zen/package/comments/lib/comments/view/admin/comments/edit.xhtml +7 -0
  58. data/lib/zen/package/comments/lib/comments/view/admin/comments/form.xhtml +57 -0
  59. data/lib/zen/package/comments/lib/comments/view/admin/comments/index.xhtml +79 -0
  60. data/lib/zen/{packages → package}/comments/migrations/.gitkeep +0 -0
  61. data/lib/zen/{packages → package}/comments/migrations/1295282202_create_schema.rb +6 -4
  62. data/lib/zen/{packages → package}/custom_fields/lib/custom_fields.rb +2 -2
  63. data/lib/zen/package/custom_fields/lib/custom_fields/controller/custom_field_groups.rb +224 -0
  64. data/lib/zen/package/custom_fields/lib/custom_fields/controller/custom_fields.rb +259 -0
  65. data/lib/zen/package/custom_fields/lib/custom_fields/language/en/custom_field_groups.yml +32 -0
  66. data/lib/zen/package/custom_fields/lib/custom_fields/language/en/custom_fields.yml +52 -0
  67. data/lib/zen/{packages → package}/custom_fields/lib/custom_fields/model/custom_field.rb +12 -7
  68. data/lib/zen/{packages → package}/custom_fields/lib/custom_fields/model/custom_field_group.rb +14 -4
  69. data/lib/zen/{packages → package}/custom_fields/lib/custom_fields/model/custom_field_value.rb +4 -2
  70. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-groups/edit.xhtml +7 -0
  71. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-groups/form.xhtml +30 -0
  72. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-groups/index.xhtml +100 -0
  73. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-groups/new.xhtml +7 -0
  74. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-fields/edit.xhtml +7 -0
  75. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-fields/form.xhtml +107 -0
  76. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-fields/index.xhtml +84 -0
  77. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-fields/new.xhtml +7 -0
  78. data/lib/zen/{packages → package}/custom_fields/migrations/.gitkeep +0 -0
  79. data/lib/zen/{packages → package}/custom_fields/migrations/1295255665_create_schema.rb +8 -7
  80. data/lib/zen/package/menus/lib/menus.rb +59 -0
  81. data/lib/zen/package/menus/lib/menus/controller/menu_items.rb +244 -0
  82. data/lib/zen/package/menus/lib/menus/controller/menus.rb +231 -0
  83. data/lib/zen/package/menus/lib/menus/helper/menu_item.rb +93 -0
  84. data/lib/zen/package/menus/lib/menus/language/en/menu_items.yml +41 -0
  85. data/lib/zen/package/menus/lib/menus/language/en/menus.yml +39 -0
  86. data/lib/zen/package/menus/lib/menus/liquid/menus.rb +152 -0
  87. data/lib/zen/package/menus/lib/menus/model/menu.rb +38 -0
  88. data/lib/zen/package/menus/lib/menus/model/menu_item.rb +33 -0
  89. data/lib/zen/package/menus/lib/menus/view/admin/menu-items/edit.xhtml +7 -0
  90. data/lib/zen/package/menus/lib/menus/view/admin/menu-items/form.xhtml +64 -0
  91. data/lib/zen/package/menus/lib/menus/view/admin/menu-items/index.xhtml +84 -0
  92. data/lib/zen/package/menus/lib/menus/view/admin/menu-items/new.xhtml +7 -0
  93. data/lib/zen/package/menus/lib/menus/view/admin/menus/edit.xhtml +7 -0
  94. data/lib/zen/package/menus/lib/menus/view/admin/menus/form.xhtml +42 -0
  95. data/lib/zen/package/menus/lib/menus/view/admin/menus/index.xhtml +95 -0
  96. data/lib/zen/package/menus/lib/menus/view/admin/menus/new.xhtml +7 -0
  97. data/lib/zen/{packages/sections → package/menus}/migrations/.gitkeep +0 -0
  98. data/lib/zen/package/menus/migrations/1297184342_create_schema.rb +33 -0
  99. data/lib/zen/{packages → package}/sections/lib/sections.rb +0 -0
  100. data/lib/zen/{packages → package}/sections/lib/sections/controller/section_entries.rb +132 -68
  101. data/lib/zen/{packages → package}/sections/lib/sections/controller/sections.rb +96 -48
  102. data/lib/zen/package/sections/lib/sections/language/en/section_entries.yml +43 -0
  103. data/lib/zen/package/sections/lib/sections/language/en/sections.yml +48 -0
  104. data/lib/zen/{packages → package}/sections/lib/sections/liquid/section_entries.rb +55 -43
  105. data/lib/zen/{packages → package}/sections/lib/sections/liquid/sections.rb +9 -8
  106. data/lib/zen/package/sections/lib/sections/model/section.rb +62 -0
  107. data/lib/zen/package/sections/lib/sections/model/section_entry.rb +53 -0
  108. data/lib/zen/package/sections/lib/sections/view/admin/edit.xhtml +7 -0
  109. data/lib/zen/package/sections/lib/sections/view/admin/form.xhtml +107 -0
  110. data/lib/zen/package/sections/lib/sections/view/admin/index.xhtml +93 -0
  111. data/lib/zen/package/sections/lib/sections/view/admin/new.xhtml +7 -0
  112. data/lib/zen/package/sections/lib/sections/view/admin/section-entries/edit.xhtml +7 -0
  113. data/lib/zen/package/sections/lib/sections/view/admin/section-entries/form.xhtml +233 -0
  114. data/lib/zen/package/sections/lib/sections/view/admin/section-entries/index.xhtml +82 -0
  115. data/lib/zen/package/sections/lib/sections/view/admin/section-entries/new.xhtml +7 -0
  116. data/lib/zen/{packages/settings → package/sections}/migrations/.gitkeep +0 -0
  117. data/lib/zen/{packages → package}/sections/migrations/1295251836_create_schema.rb +6 -6
  118. data/lib/zen/{packages → package}/settings/lib/settings.rb +0 -0
  119. data/lib/zen/{packages → package}/settings/lib/settings/controller/settings.rb +33 -24
  120. data/lib/zen/package/settings/lib/settings/language/en/settings.yml +26 -0
  121. data/lib/zen/{packages → package}/settings/lib/settings/liquid/setting.rb +5 -3
  122. data/lib/zen/package/settings/lib/settings/model/setting.rb +113 -0
  123. data/lib/zen/package/settings/lib/settings/view/admin/settings/index.xhtml +111 -0
  124. data/lib/zen/{packages/users → package/settings}/migrations/.gitkeep +0 -0
  125. data/lib/zen/{packages → package}/settings/migrations/1295597111_create_schema.rb +2 -2
  126. data/lib/zen/package/settings/migrations/1299538742_add_language_key.rb +62 -0
  127. data/lib/zen/{packages → package}/users/lib/users.rb +6 -2
  128. data/lib/zen/package/users/lib/users/controller/access_rules.rb +238 -0
  129. data/lib/zen/package/users/lib/users/controller/user_groups.rb +217 -0
  130. data/lib/zen/{packages → package}/users/lib/users/controller/users.rb +115 -57
  131. data/lib/zen/package/users/lib/users/language/en/access_rules.yml +35 -0
  132. data/lib/zen/package/users/lib/users/language/en/user_groups.yml +31 -0
  133. data/lib/zen/package/users/lib/users/language/en/users.yml +50 -0
  134. data/lib/zen/{packages → package}/users/lib/users/liquid/user.rb +8 -6
  135. data/lib/zen/{packages → package}/users/lib/users/liquid/users.rb +5 -3
  136. data/lib/zen/{packages → package}/users/lib/users/model/access_rule.rb +11 -3
  137. data/lib/zen/{packages → package}/users/lib/users/model/user.rb +5 -1
  138. data/lib/zen/{packages → package}/users/lib/users/model/user_group.rb +6 -3
  139. data/lib/zen/package/users/lib/users/public/admin/js/users/access_rules.js +42 -0
  140. data/lib/zen/package/users/lib/users/view/admin/access-rules/edit.xhtml +7 -0
  141. data/lib/zen/package/users/lib/users/view/admin/access-rules/form.xhtml +108 -0
  142. data/lib/zen/package/users/lib/users/view/admin/access-rules/index.xhtml +93 -0
  143. data/lib/zen/package/users/lib/users/view/admin/access-rules/new.xhtml +7 -0
  144. data/lib/zen/package/users/lib/users/view/admin/user-groups/edit.xhtml +7 -0
  145. data/lib/zen/package/users/lib/users/view/admin/user-groups/form.xhtml +37 -0
  146. data/lib/zen/package/users/lib/users/view/admin/user-groups/index.xhtml +76 -0
  147. data/lib/zen/package/users/lib/users/view/admin/user-groups/new.xhtml +7 -0
  148. data/lib/zen/package/users/lib/users/view/admin/users/edit.xhtml +7 -0
  149. data/lib/zen/package/users/lib/users/view/admin/users/form.xhtml +53 -0
  150. data/lib/zen/package/users/lib/users/view/admin/users/index.xhtml +81 -0
  151. data/lib/zen/package/users/lib/users/view/admin/users/login.xhtml +27 -0
  152. data/lib/zen/package/users/lib/users/view/admin/users/new.xhtml +7 -0
  153. data/{pkg → lib/zen/package/users/migrations}/.gitkeep +0 -0
  154. data/lib/zen/{packages → package}/users/migrations/1295281013_create_schema.rb +2 -2
  155. data/lib/zen/public/admin/css/boilerplate.css +62 -60
  156. data/lib/zen/public/admin/css/buttons.css +46 -0
  157. data/lib/zen/public/admin/css/datepicker.css +163 -0
  158. data/lib/zen/public/admin/css/editor.css +91 -0
  159. data/lib/zen/public/admin/css/forms.css +68 -0
  160. data/lib/zen/public/admin/css/general.css +34 -419
  161. data/lib/zen/public/admin/css/grid.css +26 -26
  162. data/lib/zen/public/admin/css/layout.css +73 -62
  163. data/lib/zen/public/admin/css/modals.css +63 -0
  164. data/lib/zen/public/admin/css/notifications.css +84 -0
  165. data/lib/zen/public/admin/css/tables.css +71 -0
  166. data/lib/zen/public/admin/css/tabs.css +53 -0
  167. data/lib/zen/public/admin/js/mootools/more.js +139 -51
  168. data/lib/zen/public/admin/js/vendor/datepicker/Picker.Attach.js +137 -0
  169. data/lib/zen/public/admin/js/vendor/datepicker/Picker.Date.js +576 -0
  170. data/lib/zen/public/admin/js/vendor/datepicker/Picker.js +291 -0
  171. data/lib/zen/public/admin/js/vendor/datepicker/README.md +325 -0
  172. data/lib/zen/public/admin/js/vendor/datepicker/locale.js +16 -0
  173. data/lib/zen/public/admin/js/zen/editor/base.js +173 -183
  174. data/lib/zen/public/admin/js/zen/editor/drivers/html.js +74 -89
  175. data/lib/zen/public/admin/js/zen/editor/drivers/markdown.js +72 -87
  176. data/lib/zen/public/admin/js/zen/editor/drivers/textile.js +72 -87
  177. data/lib/zen/public/admin/js/zen/init.js +65 -51
  178. data/lib/zen/public/admin/js/zen/modal.js +108 -121
  179. data/lib/zen/public/admin/js/zen/notification.js +163 -165
  180. data/lib/zen/public/admin/js/zen/tabs.js +203 -210
  181. data/lib/zen/task/build.rb +123 -0
  182. data/lib/zen/task/clean.rb +46 -0
  183. data/lib/zen/task/db.rb +120 -0
  184. data/lib/zen/task/package.rb +82 -0
  185. data/lib/zen/task/proto.rb +116 -0
  186. data/{LICENSE → license.txt} +2 -2
  187. data/proto/app/Thorfile +4 -0
  188. data/proto/app/config/middlewares.rb +3 -3
  189. data/proto/app/config/requires.rb +1 -6
  190. data/proto/app/start.rb +5 -10
  191. data/{lib/zen/packages/settings → proto/package}/LICENSE +0 -0
  192. data/{lib/zen/packages/categories → proto/package}/README.textile +0 -0
  193. data/proto/package/lib/package.rb +41 -0
  194. data/proto/{module/lib/module → package/lib/package}/controller/controllers.rb +3 -2
  195. data/proto/{module/lib/module → package/lib/package}/language/en/languages.rb +0 -0
  196. data/proto/{module/lib/module → package/lib/package}/model/model.rb +0 -0
  197. data/proto/{module/lib/module/view/admin → package/lib/package/view/admin/package}/edit.xhtml +0 -0
  198. data/proto/{module/lib/module/view/admin → package/lib/package/view/admin/package}/form.xhtml +0 -0
  199. data/proto/{module/lib/module/view/admin → package/lib/package/view/admin/package}/index.xhtml +0 -0
  200. data/proto/{module/lib/module/view/admin → package/lib/package/view/admin/package}/new.xhtml +0 -0
  201. data/proto/{module → package}/migrations/.gitkeep +0 -0
  202. metadata +199 -280
  203. data/README.textile +0 -42
  204. data/Rakefile +0 -6
  205. data/doc/Categories.html +0 -93
  206. data/doc/Categories/Controllers.html +0 -93
  207. data/doc/Categories/Controllers/Categories.html +0 -995
  208. data/doc/Categories/Controllers/CategoryGroups.html +0 -878
  209. data/doc/Categories/Models.html +0 -97
  210. data/doc/Categories/Models/Category.html +0 -269
  211. data/doc/Categories/Models/CategoryGroup.html +0 -231
  212. data/doc/Comments.html +0 -93
  213. data/doc/Comments/Controllers.html +0 -93
  214. data/doc/Comments/Controllers/Comments.html +0 -797
  215. data/doc/Comments/Controllers/CommentsForm.html +0 -487
  216. data/doc/Comments/Liquid.html +0 -93
  217. data/doc/Comments/Liquid/CommentForm.html +0 -522
  218. data/doc/Comments/Liquid/Comments.html +0 -543
  219. data/doc/Comments/Models.html +0 -95
  220. data/doc/Comments/Models/Comment.html +0 -260
  221. data/doc/CustomFields.html +0 -93
  222. data/doc/CustomFields/Controllers.html +0 -93
  223. data/doc/CustomFields/Controllers/CustomFieldGroups.html +0 -902
  224. data/doc/CustomFields/Controllers/CustomFields.html +0 -974
  225. data/doc/CustomFields/Models.html +0 -97
  226. data/doc/CustomFields/Models/CustomField.html +0 -272
  227. data/doc/CustomFields/Models/CustomFieldGroup.html +0 -259
  228. data/doc/CustomFields/Models/CustomFieldValue.html +0 -154
  229. data/doc/Ramaze.html +0 -93
  230. data/doc/Ramaze/Helper.html +0 -93
  231. data/doc/Ramaze/Helper/ACL.html +0 -531
  232. data/doc/Ramaze/Helper/Asset.html +0 -617
  233. data/doc/Ramaze/Helper/Breadcrumb.html +0 -411
  234. data/doc/Ramaze/Helper/Common.html +0 -738
  235. data/doc/Sections.html +0 -93
  236. data/doc/Sections/Controllers.html +0 -93
  237. data/doc/Sections/Controllers/SectionEntries.html +0 -1100
  238. data/doc/Sections/Controllers/Sections.html +0 -953
  239. data/doc/Sections/Liquid.html +0 -93
  240. data/doc/Sections/Liquid/SectionEntries.html +0 -674
  241. data/doc/Sections/Liquid/Sections.html +0 -494
  242. data/doc/Sections/Models.html +0 -97
  243. data/doc/Sections/Models/Section.html +0 -272
  244. data/doc/Sections/Models/SectionEntry.html +0 -264
  245. data/doc/Sequel.html +0 -91
  246. data/doc/Sequel/Model.html +0 -243
  247. data/doc/Settings.html +0 -93
  248. data/doc/Settings/Controllers.html +0 -91
  249. data/doc/Settings/Controllers/Settings.html +0 -565
  250. data/doc/Settings/Liquid.html +0 -91
  251. data/doc/Settings/Liquid/Setting.html +0 -426
  252. data/doc/Settings/Models.html +0 -95
  253. data/doc/Settings/Models/Setting.html +0 -293
  254. data/doc/Users.html +0 -93
  255. data/doc/Users/Controllers.html +0 -93
  256. data/doc/Users/Controllers/AccessRules.html +0 -904
  257. data/doc/Users/Controllers/UserGroups.html +0 -879
  258. data/doc/Users/Controllers/Users.html +0 -1124
  259. data/doc/Users/Liquid.html +0 -93
  260. data/doc/Users/Liquid/User.html +0 -480
  261. data/doc/Users/Liquid/Users.html +0 -495
  262. data/doc/Users/Models.html +0 -97
  263. data/doc/Users/Models/AccessRule.html +0 -257
  264. data/doc/Users/Models/User.html +0 -649
  265. data/doc/Users/Models/UserGroup.html +0 -267
  266. data/doc/Zen.html +0 -391
  267. data/doc/Zen/Bin.html +0 -113
  268. data/doc/Zen/Bin/Base.html +0 -727
  269. data/doc/Zen/Controllers.html +0 -115
  270. data/doc/Zen/Controllers/AdminController.html +0 -298
  271. data/doc/Zen/Controllers/BaseController.html +0 -272
  272. data/doc/Zen/Controllers/FrontendController.html +0 -164
  273. data/doc/Zen/Controllers/MainController.html +0 -421
  274. data/doc/Zen/Database.html +0 -498
  275. data/doc/Zen/Language.html +0 -660
  276. data/doc/Zen/Liquid.html +0 -117
  277. data/doc/Zen/Liquid/ControllerBehavior.html +0 -448
  278. data/doc/Zen/Liquid/General.html +0 -444
  279. data/doc/Zen/Liquid/Redirect.html +0 -435
  280. data/doc/Zen/Liquid/Strip.html +0 -447
  281. data/doc/Zen/Logger.html +0 -393
  282. data/doc/Zen/Package.html +0 -909
  283. data/doc/_index.html +0 -724
  284. data/doc/class_list.html +0 -36
  285. data/doc/css/common.css +0 -1
  286. data/doc/css/full_list.css +0 -53
  287. data/doc/css/style.css +0 -310
  288. data/doc/file.README.html +0 -86
  289. data/doc/file_list.html +0 -38
  290. data/doc/frames.html +0 -13
  291. data/doc/index.html +0 -86
  292. data/doc/js/app.js +0 -203
  293. data/doc/js/full_list.js +0 -149
  294. data/doc/js/jquery.js +0 -154
  295. data/doc/method_list.html +0 -1139
  296. data/doc/top-level-namespace.html +0 -88
  297. data/lib/zen/language/en/zen_general.rb +0 -21
  298. data/lib/zen/language/en/zen_models.rb +0 -39
  299. data/lib/zen/packages/categories/LICENSE +0 -19
  300. data/lib/zen/packages/categories/lib/categories/controller/categories.rb +0 -202
  301. data/lib/zen/packages/categories/lib/categories/controller/category_groups.rb +0 -173
  302. data/lib/zen/packages/categories/lib/categories/language/en/categories.rb +0 -38
  303. data/lib/zen/packages/categories/lib/categories/language/en/category_groups.rb +0 -37
  304. data/lib/zen/packages/categories/lib/categories/view/admin/categories/edit.xhtml +0 -7
  305. data/lib/zen/packages/categories/lib/categories/view/admin/categories/form.xhtml +0 -36
  306. data/lib/zen/packages/categories/lib/categories/view/admin/categories/index.xhtml +0 -70
  307. data/lib/zen/packages/categories/lib/categories/view/admin/categories/new.xhtml +0 -7
  308. data/lib/zen/packages/categories/lib/categories/view/admin/category_groups/edit.xhtml +0 -7
  309. data/lib/zen/packages/categories/lib/categories/view/admin/category_groups/form.xhtml +0 -18
  310. data/lib/zen/packages/categories/lib/categories/view/admin/category_groups/index.xhtml +0 -72
  311. data/lib/zen/packages/categories/lib/categories/view/admin/category_groups/new.xhtml +0 -7
  312. data/lib/zen/packages/comments/LICENSE +0 -19
  313. data/lib/zen/packages/comments/README.textile +0 -0
  314. data/lib/zen/packages/comments/lib/comments/language/en/comments.rb +0 -52
  315. data/lib/zen/packages/comments/lib/comments/view/admin/comments/edit.xhtml +0 -7
  316. data/lib/zen/packages/comments/lib/comments/view/admin/comments/form.xhtml +0 -31
  317. data/lib/zen/packages/comments/lib/comments/view/admin/comments/index.xhtml +0 -74
  318. data/lib/zen/packages/comments/migrations/1296949631_add_defensio_signature.rb +0 -11
  319. data/lib/zen/packages/custom_fields/LICENSE +0 -19
  320. data/lib/zen/packages/custom_fields/README.textile +0 -0
  321. data/lib/zen/packages/custom_fields/lib/custom_fields/controller/custom_field_groups.rb +0 -179
  322. data/lib/zen/packages/custom_fields/lib/custom_fields/controller/custom_fields.rb +0 -194
  323. data/lib/zen/packages/custom_fields/lib/custom_fields/language/en/custom_field_groups.rb +0 -45
  324. data/lib/zen/packages/custom_fields/lib/custom_fields/language/en/custom_fields.rb +0 -64
  325. data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_field_groups/edit.xhtml +0 -7
  326. data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_field_groups/form.xhtml +0 -18
  327. data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_field_groups/index.xhtml +0 -88
  328. data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_field_groups/new.xhtml +0 -7
  329. data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_fields/edit.xhtml +0 -7
  330. data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_fields/form.xhtml +0 -50
  331. data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_fields/index.xhtml +0 -75
  332. data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_fields/new.xhtml +0 -7
  333. data/lib/zen/packages/sections/LICENSE +0 -19
  334. data/lib/zen/packages/sections/README.textile +0 -43
  335. data/lib/zen/packages/sections/lib/sections/language/en/section_entries.rb +0 -58
  336. data/lib/zen/packages/sections/lib/sections/language/en/sections.rb +0 -63
  337. data/lib/zen/packages/sections/lib/sections/model/section.rb +0 -43
  338. data/lib/zen/packages/sections/lib/sections/model/section_entry.rb +0 -43
  339. data/lib/zen/packages/sections/lib/sections/view/admin/edit.xhtml +0 -7
  340. data/lib/zen/packages/sections/lib/sections/view/admin/form.xhtml +0 -54
  341. data/lib/zen/packages/sections/lib/sections/view/admin/index.xhtml +0 -77
  342. data/lib/zen/packages/sections/lib/sections/view/admin/new.xhtml +0 -7
  343. data/lib/zen/packages/sections/lib/sections/view/admin/section_entries/edit.xhtml +0 -7
  344. data/lib/zen/packages/sections/lib/sections/view/admin/section_entries/form.xhtml +0 -147
  345. data/lib/zen/packages/sections/lib/sections/view/admin/section_entries/index.xhtml +0 -74
  346. data/lib/zen/packages/sections/lib/sections/view/admin/section_entries/new.xhtml +0 -7
  347. data/lib/zen/packages/sections/migrations/1296335671_userdata_section_entries.rb +0 -18
  348. data/lib/zen/packages/sections/migrations/1296936110_drop_comment_antispam.rb +0 -11
  349. data/lib/zen/packages/settings/README.textile +0 -0
  350. data/lib/zen/packages/settings/lib/settings/language/en/settings.rb +0 -56
  351. data/lib/zen/packages/settings/lib/settings/model/setting.rb +0 -38
  352. data/lib/zen/packages/settings/lib/settings/view/admin/settings/index.xhtml +0 -79
  353. data/lib/zen/packages/users/LICENSE +0 -19
  354. data/lib/zen/packages/users/README.textile +0 -0
  355. data/lib/zen/packages/users/lib/users/controller/access_rules.rb +0 -186
  356. data/lib/zen/packages/users/lib/users/controller/user_groups.rb +0 -171
  357. data/lib/zen/packages/users/lib/users/language/en/access_rules.rb +0 -49
  358. data/lib/zen/packages/users/lib/users/language/en/user_groups.rb +0 -42
  359. data/lib/zen/packages/users/lib/users/language/en/users.rb +0 -63
  360. data/lib/zen/packages/users/lib/users/public/admin/js/users/access_rules.js +0 -43
  361. data/lib/zen/packages/users/lib/users/view/admin/access_rules/edit.xhtml +0 -7
  362. data/lib/zen/packages/users/lib/users/view/admin/access_rules/form.xhtml +0 -68
  363. data/lib/zen/packages/users/lib/users/view/admin/access_rules/index.xhtml +0 -85
  364. data/lib/zen/packages/users/lib/users/view/admin/access_rules/new.xhtml +0 -7
  365. data/lib/zen/packages/users/lib/users/view/admin/user_groups/edit.xhtml +0 -7
  366. data/lib/zen/packages/users/lib/users/view/admin/user_groups/form.xhtml +0 -19
  367. data/lib/zen/packages/users/lib/users/view/admin/user_groups/index.xhtml +0 -69
  368. data/lib/zen/packages/users/lib/users/view/admin/user_groups/new.xhtml +0 -7
  369. data/lib/zen/packages/users/lib/users/view/admin/users/edit.xhtml +0 -7
  370. data/lib/zen/packages/users/lib/users/view/admin/users/form.xhtml +0 -25
  371. data/lib/zen/packages/users/lib/users/view/admin/users/index.xhtml +0 -73
  372. data/lib/zen/packages/users/lib/users/view/admin/users/login.xhtml +0 -22
  373. data/lib/zen/packages/users/lib/users/view/admin/users/new.xhtml +0 -7
  374. data/lib/zen/tasks.rb +0 -6
  375. data/proto/app/Rakefile +0 -2
  376. data/proto/module/LICENSE +0 -0
  377. data/proto/module/README.textile +0 -0
  378. data/proto/module/lib/module.rb +0 -15
  379. data/spec/javascript/css/base.css +0 -177
  380. data/spec/javascript/css/style.css +0 -204
  381. data/spec/javascript/css/typography.css +0 -70
  382. data/spec/javascript/editor/index.html +0 -65
  383. data/spec/javascript/images/close.png +0 -0
  384. data/spec/javascript/images/info.png +0 -0
  385. data/spec/javascript/js/editor.js +0 -16
  386. data/spec/javascript/js/modal.js +0 -12
  387. data/spec/javascript/js/namespace.js +0 -2
  388. data/spec/javascript/js/notification.js +0 -43
  389. data/spec/javascript/js/tabs.js +0 -8
  390. data/spec/javascript/modal/index.html +0 -45
  391. data/spec/javascript/notification/index.html +0 -48
  392. data/spec/javascript/tabs/index.html +0 -73
  393. data/spec/javascript/tabs/tab_1.html +0 -1
  394. data/spec/javascript/tabs/tab_2.html +0 -1
  395. data/spec/zen/base/language.rb +0 -31
  396. data/spec/zen/base/logger.rb +0 -34
  397. data/spec/zen/base/package.rb +0 -47
  398. data/spec/zen/config/database.rb +0 -8
  399. data/spec/zen/helper/asset.rb +0 -26
  400. data/spec/zen/helper/breadcrumb.rb +0 -24
  401. data/spec/zen/language/en/general.rb +0 -4
  402. data/spec/zen/language/nl/general.rb +0 -4
  403. data/spec/zen/liquid/general.rb +0 -42
  404. data/spec/zen/logs/.gitkeep +0 -0
  405. data/spec/zen/spec.rb +0 -9
  406. data/spec/zen/spec_database.db +0 -0
  407. data/tasks/bacon.rake +0 -99
  408. data/tasks/build.rake +0 -72
  409. data/tasks/clean.rake +0 -18
  410. data/tasks/db.rake +0 -81
  411. data/tasks/doc.rake +0 -5
  412. data/tasks/extension.rake +0 -65
  413. data/tasks/proto.rake +0 -37
  414. data/tasks/theme.rake +0 -63
@@ -1,4 +1,6 @@
1
+ #:nodoc:
1
2
  module Sections
3
+ #:nodoc:
2
4
  module Controllers
3
5
  ##
4
6
  # Sections can be seen as mini applications inside your website.
@@ -13,15 +15,14 @@ module Sections
13
15
  # @since 0.1
14
16
  #
15
17
  class Sections < Zen::Controllers::AdminController
16
- map '/admin'
17
-
18
- trait :extension_identifier => 'com.zen.sections'
19
-
20
18
  include ::Sections::Models
19
+
20
+ map '/admin'
21
+ trait :extension_identifier => 'com.zen.sections'
21
22
 
22
23
  before_all do
23
- csrf_protection :save, :delete do
24
- respond(@zen_general_lang.errors[:csrf], 401)
24
+ csrf_protection(:save, :delete) do
25
+ respond(lang('zen_general.errors.csrf'), 403)
25
26
  end
26
27
  end
27
28
 
@@ -29,39 +30,45 @@ module Sections
29
30
  # Constructor method, called upon initialization. It's used to set the
30
31
  # URL to which forms send their data and load the language pack.
31
32
  #
33
+ # This method loads the following language files:
34
+ #
35
+ # * sections
36
+ #
32
37
  # @author Yorick Peterse
33
38
  # @since 0.1
34
39
  #
35
40
  def initialize
36
41
  super
37
42
 
38
- @form_save_url = '/admin/save'
39
- @form_delete_url = '/admin/delete'
40
- @sections_lang = Zen::Language.load 'sections'
43
+ @form_save_url = Sections.r(:save)
44
+ @form_delete_url = Sections.r(:delete)
45
+
46
+ Zen::Language.load('sections')
41
47
 
42
48
  # Set the page title
43
49
  if !action.method.nil?
44
- method = action.method.to_sym
45
-
46
- if @sections_lang.titles.key? method
47
- @page_title = @sections_lang.titles[method]
48
- end
50
+ method = action.method.to_sym
51
+ @page_title = lang("sections.titles.#{method}") rescue nil
49
52
  end
50
53
  end
51
54
 
52
55
  ##
53
56
  # Show an overview of all existing sections. Using this overview a user
54
57
  # can manage an existing section, delete it or create a new one.
58
+ #
59
+ # This method requires the following permissions:
60
+ #
61
+ # * read
55
62
  #
56
63
  # @author Yorick Peterse
57
64
  # @since 0.1
58
65
  #
59
66
  def index
60
67
  if !user_authorized?([:read])
61
- respond(@zen_general_lang.errors[:not_authorized], 403)
68
+ respond(lang('zen_general.errors.not_authorized'), 403)
62
69
  end
63
70
 
64
- set_breadcrumbs @sections_lang.titles[:index]
71
+ set_breadcrumbs(lang('sections.titles.index'))
65
72
 
66
73
  @sections = Section.all
67
74
  end
@@ -69,34 +76,55 @@ module Sections
69
76
  ##
70
77
  # Show a form that lets the user edit an existing section.
71
78
  #
79
+ # This method requires the following permissions:
80
+ #
81
+ # * read
82
+ # * update
83
+ #
72
84
  # @author Yorick Peterse
73
85
  # @param [Integer] id The ID of the section to retrieve so that we can edit it.
74
86
  # @since 0.1
75
87
  #
76
88
  def edit id
77
89
  if !user_authorized?([:read, :update])
78
- respond(@zen_general_lang.errors[:not_authorized], 403)
90
+ respond(lang('zen_general.errors.not_authorized'), 403)
79
91
  end
80
92
 
81
- set_breadcrumbs anchor_to(@sections_lang.titles[:index], "admin"), @page_title
93
+ set_breadcrumbs(
94
+ anchor_to(lang('sections.titles.index'), Sections.r(:index)),
95
+ @page_title
96
+ )
82
97
 
83
98
  @custom_field_group_pk_hash = CustomFields::Models::CustomFieldGroup.pk_hash(:name)
84
99
  @category_group_pk_hash = Categories::Models::CategoryGroup.pk_hash(:name)
85
- @section = Section[id]
100
+
101
+ if flash[:form_data]
102
+ @section = flash[:form_data]
103
+ else
104
+ @section = Section[id.to_i]
105
+ end
86
106
  end
87
107
 
88
108
  ##
89
109
  # Show a form that lets the user create a new section.
90
110
  #
111
+ # This method requires the following permissions:
112
+ #
113
+ # * create
114
+ # * read
115
+ #
91
116
  # @author Yorick Peterse
92
117
  # @since 0.1
93
118
  #
94
119
  def new
95
120
  if !user_authorized?([:create, :read])
96
- respond(@zen_general_lang.errors[:not_authorized], 403)
121
+ respond(lang('zen_general.errors.not_authorized'), 403)
97
122
  end
98
123
 
99
- set_breadcrumbs anchor_to(@sections_lang.titles[:index], "admin"), @page_title
124
+ set_breadcrumbs(
125
+ anchor_to(lang('sections.titles.index'), Sections.r(:index)),
126
+ @page_title
127
+ )
100
128
 
101
129
  @custom_field_group_pk_hash = CustomFields::Models::CustomFieldGroup.pk_hash(:name)
102
130
  @category_group_pk_hash = Categories::Models::CategoryGroup.pk_hash(:name)
@@ -108,43 +136,47 @@ module Sections
108
136
  # the proper URL. Based on the value of a hidden field named "id" we'll determine
109
137
  # if the data will be used to create a new section or to update an existing one.
110
138
  #
139
+ # This method requires the following permissions:
140
+ #
141
+ # * create
142
+ # * update
143
+ #
111
144
  # @author Yorick Peterse
112
145
  # @since 0.1
113
146
  #
114
147
  def save
115
148
  if !user_authorized?([:create, :update])
116
- respond(@zen_general_lang.errors[:not_authorized], 403)
149
+ respond(lang('zen_general.errors.not_authorized'), 403)
117
150
  end
118
151
 
119
152
  post = request.params.dup
120
-
121
- post.each do |key, value|
122
- post.delete(key) if value.empty?
123
- end
124
153
 
125
- if post["id"] and !post["id"].empty?
126
- @section = Section[post["id"]]
154
+ if post['id'] and !post['id'].empty?
155
+ @section = Section[post['id']]
127
156
  save_action = :save
128
157
  else
129
158
  @section = Section.new
130
159
  save_action = :new
131
160
  end
132
161
 
133
- flash_success = @sections_lang.success[save_action]
134
- flash_error = @sections_lang.errors[save_action]
162
+ flash_success = lang("sections.success.#{save_action}")
163
+ flash_error = lang("sections.errors.#{save_action}")
135
164
 
136
165
  # The primary keys have to be integers otherwise Sequel will soil it's pants
137
- if !post["custom_field_group_pks"].nil?
138
- post["custom_field_group_pks"].map! { |value| value.to_i }
166
+ if !post['custom_field_group_pks'].nil?
167
+ post['custom_field_group_pks'].map! { |value| value.to_i }
139
168
  else
140
- post["custom_field_group_pks"] = []
169
+ post['custom_field_group_pks'] = []
141
170
  end
142
171
 
143
- if !post["category_group_pks"].nil?
144
- post["category_group_pks"].map! { |value| value.to_i }
172
+ if !post['category_group_pks'].nil?
173
+ post['category_group_pks'].map! { |value| value.to_i }
145
174
  else
146
- post["category_group_pks"] = []
175
+ post['category_group_pks'] = []
147
176
  end
177
+
178
+ # Auto generate the slug if it's empty
179
+ post.delete('slug') if post['slug'].empty?
148
180
 
149
181
  begin
150
182
  @section.update(post)
@@ -154,15 +186,16 @@ module Sections
154
186
  @section.category_group_pks = post['category_group_pks']
155
187
  end
156
188
 
157
- notification(:success, @sections_lang.titles[:index], flash_success)
189
+ notification(:success, lang('sections.titles.index'), flash_success)
158
190
  rescue
159
- notification(:error, @sections_lang.titles[:index], flash_error)
191
+ notification(:error, lang('sections.titles.index'), flash_error)
160
192
 
193
+ flash[:form_data] = @section
161
194
  flash[:form_errors] = @section.errors
162
195
  end
163
196
 
164
197
  if @section.id
165
- redirect "/admin/edit/#{@section.id}"
198
+ redirect(Sections.r(:edit, @section.id))
166
199
  else
167
200
  redirect_referrer
168
201
  end
@@ -174,27 +207,42 @@ module Sections
174
207
  # a field named "section_ids[]". This field should contain the primary values of
175
208
  # each section that has to be deleted.
176
209
  #
210
+ # This method requires the following permissions:
211
+ #
212
+ # * delete
213
+ #
177
214
  # @author Yorick Peterse
178
215
  # @since 0.1
179
216
  #
180
217
  def delete
181
218
  if !user_authorized?([:delete])
182
- respond(@zen_general_lang.errors[:not_authorized], 403)
219
+ respond(lang('zen_general.errors.not_authorized'), 403)
183
220
  end
184
221
 
185
- if !request.params["section_ids"] or request.params["section_ids"].empty?
186
- notification(:error, @sections_lang.titles[:index], @sections_lang.errors[:no_delete])
222
+ if !request.params['section_ids'] or request.params['section_ids'].empty?
223
+ notification(
224
+ :error,
225
+ lang('sections.titles.index'),
226
+ lang('sections.errors.no_delete')
227
+ )
228
+
187
229
  redirect_referrer
188
230
  end
189
231
 
190
- request.params["section_ids"].each do |id|
191
- @section = Section[id]
192
-
232
+ request.params['section_ids'].each do |id|
193
233
  begin
194
- @section.delete
195
- notification(:success, @sections_lang.titles[:index], @sections_lang.success[:delete] % id)
234
+ Section[id.to_i].destroy
235
+ notification(
236
+ :success,
237
+ lang('sections.titles.index'),
238
+ lang('sections.success.delete')
239
+ )
196
240
  rescue
197
- notification(:error, @sections_lang.titles[:index], @sections_lang.errors[:delete] % id)
241
+ notification(
242
+ :error,
243
+ lang('sections.titles.index'),
244
+ lang('sections.errors.delete') % id
245
+ )
198
246
  end
199
247
  end
200
248
 
@@ -0,0 +1,43 @@
1
+ ---
2
+ titles:
3
+ index : 'Entries'
4
+ edit : 'EditEntry'
5
+ new : 'AddEntry'
6
+
7
+ labels:
8
+ id : '#'
9
+ title : 'Title'
10
+ slug : 'Slug'
11
+ status : 'Status'
12
+ created_at : 'Created at'
13
+ updated_at : 'Updated at'
14
+ author : 'Author'
15
+
16
+ special:
17
+ status_hash:
18
+ draft : 'Draft'
19
+ published : 'Published'
20
+
21
+ tabs:
22
+ basic : 'Basic'
23
+ categories : 'Categories'
24
+
25
+ messages:
26
+ no_entries : 'No section entries have been created.'
27
+ no_categories : 'No categories have been assigned to the current section.'
28
+
29
+ errors:
30
+ new : 'Failed to create a new section entry.'
31
+ save : 'Failed to save the section entry.'
32
+ delete : 'Failed to delete the section entry with ID#%s'
33
+ no_delete : "You haven't specified any section entries to delete."
34
+
35
+ success:
36
+ new : 'The new section entry has been created.'
37
+ save : 'The section entry has been modified.'
38
+ delete : 'All selected entries have been deleted.'
39
+
40
+ buttons:
41
+ new : 'Add section entry'
42
+ delete : 'Delete selected entries'
43
+ save : 'Save entry'
@@ -0,0 +1,48 @@
1
+ ---
2
+ titles:
3
+ index : 'Sections'
4
+ edit : 'Edit Section'
5
+ new : 'Add Secton'
6
+
7
+ labels:
8
+ id : '#'
9
+ name : 'Name'
10
+ slug : 'Slug'
11
+ description : 'Description'
12
+ comment_allow : 'Allow comments'
13
+ comment_require_account : 'Comments require an account'
14
+ comment_moderate : 'Moderate comments'
15
+ comment_format : 'Comment format'
16
+ custom_field_groups : 'Custom field groups'
17
+ category_groups : 'Category groups'
18
+ manage_entries : 'Manage entries'
19
+
20
+ special:
21
+ boolean_hash:
22
+ 'true' : 'Yes'
23
+ 'false' : 'No'
24
+
25
+ tabs:
26
+ general : 'General'
27
+ comment_settings : 'Comment Settings'
28
+ group_assignments : 'Group Assignments'
29
+
30
+ messages:
31
+ no_sections: "No sections have been created yet."
32
+
33
+ errors:
34
+ new : 'Failed to create a new section.'
35
+ save : 'Failed to modify the section.'
36
+ delete : 'Failed to delete the section with ID #%s.'
37
+ no_delete : 'You need to specify at least one section to delete.'
38
+
39
+ success:
40
+ new : 'The new section has been created.'
41
+ save : 'The section has been modified.'
42
+ delete : 'The selected sections have been deleted.'
43
+
44
+ buttons:
45
+ new : 'Add section'
46
+ delete : 'Delete selected sections'
47
+ save : 'Save section'
48
+
@@ -1,12 +1,14 @@
1
+ #:nodoc:
1
2
  module Sections
3
+ #:nodoc:
2
4
  module Liquid
3
5
  ##
4
6
  # The SectionEntries tag can be used to retrieve all section entries
5
7
  # for the given section. A basic example of this looks like the following:
6
8
  #
7
- # bc. {% section_entries section="blog" %}
8
- # Do something in here
9
- # {% endsection_entries %}
9
+ # {% section_entries section="blog" %}
10
+ # Do something in here
11
+ # {% endsection_entries %}
10
12
  #
11
13
  # When using this tag you can specify the following optionally arguments:
12
14
  #
@@ -16,20 +18,21 @@ module Sections
16
18
  # * section_entry: the slug of the section entry to select
17
19
  # * order: the sort order type
18
20
  # * order_by: the name of the column to sort on
21
+ # * category: retrieves all entries that are using the specified category
19
22
  #
20
23
  # These arguments can be specified as following:
21
24
  #
22
- # bc. {% section_entries section="blog" limit="10" offset="20" %}
23
- # Do something in here
24
- # {% endsection_entries %}
25
+ # {% section_entries section="blog" limit="10" offset="20" %}
26
+ # Do something in here
27
+ # {% endsection_entries %}
25
28
  #
26
29
  # Inside this block you can output the values of your custom fields by
27
30
  # calling the variable tag containing the name of the custom field. For example,
28
31
  # if you have a field called "body" you can output it for each entry as following:
29
32
  #
30
- # bc. {% section_entries section="blog" limit="10" offset="20" %}
31
- # {{body}}
32
- # {% endsection_entries %}
33
+ # {% section_entries section="blog" limit="10" offset="20" %}
34
+ # {{body}}
35
+ # {% endsection_entries %}
33
36
  #
34
37
  # The following variables are available by default:
35
38
  #
@@ -42,14 +45,13 @@ module Sections
42
45
  # * section_id: the ID of the section to which this entry belongs
43
46
  #
44
47
  # @example
45
- #
46
48
  # {% section_entries section="blog" limit="10" offset="20" %}
47
49
  # <article>
48
- # <header>
49
- # <h1>{{title}}</h1>
50
- # </header>
50
+ # <header>
51
+ # <h1>{{title}}</h1>
52
+ # </header>
51
53
  #
52
- # {{body}}
54
+ # {{body}}
53
55
  # </article>
54
56
  # {% endsection_entries %}
55
57
  #
@@ -70,24 +72,25 @@ module Sections
70
72
  # @param [String] arguments All additional arguments passed as a string.
71
73
  # @param [String] html The HTML inside the block.
72
74
  #
73
- def initialize tag_name, arguments, html
75
+ def initialize(tag_name ='section_entries', arguments = '', html = '')
74
76
  super
75
-
77
+
76
78
  @arguments = {
77
- 'limit' => nil,
78
- 'offset' => nil,
79
- 'section' => Zen::Controllers::FrontendController.session[:settings][:default_section],
80
- 'order' => 'desc',
81
- 'order_by'=> 'id'
79
+ 'limit' => 10,
80
+ 'offset' => 0,
81
+ 'section' => '',
82
+ 'order' => 'desc',
83
+ 'order_by' => 'id',
84
+ 'category' => ''
82
85
  }.merge(parse_key_values(arguments))
83
86
 
84
87
  @args_parsed = false
85
88
  end
86
89
 
87
90
  ##
88
- # Processes that arguments, retrieves all data and renders the tag block.
89
- # When outputting data inside the tag block you can always use the following
90
- # variables:
91
+ # Processes the arguments set in the constructor, retrieves all data and renders
92
+ # the tag block. When outputting data inside the tag block you can always use the
93
+ # following variables regardless on whether there are any section entries:
91
94
  #
92
95
  # * total_rows: the amount of rows retrieved
93
96
  # * index: the current index
@@ -105,38 +108,48 @@ module Sections
105
108
  # @author Yorick Peterse
106
109
  # @since 0.1
107
110
  #
108
- def render context
109
- # Check if any of the given arguments in @arguments exist in our context.
110
- if @args_parsed == false
111
- @arguments.each do |k, v|
112
- v = v.to_s
113
-
114
- if context.has_key?(v)
115
- @arguments[k] = h(context[v])
116
- end
117
- end
118
- end
119
-
111
+ def render(context)
112
+ @arguments = merge_context(@arguments, context) if @args_parsed == false
113
+
120
114
  @args_parsed = true
121
115
  result = []
122
116
  entries = []
123
117
  filter_hash = {:status => 'published'}
124
118
 
119
+ # ------
120
+ # Filter by a section entry's slug
125
121
  if @arguments.key?('section_entry')
126
122
  if @arguments['section_entry'].empty?
127
- raise ArgumentError, "You need to specify a section entry to retrieve"
123
+ raise(ArgumentError, "You need to specify a section entry to retrieve")
128
124
  end
129
125
 
130
126
  filter_hash[:slug] = @arguments['section_entry']
127
+
128
+ # ------
129
+ # Filter by a category's slug
130
+ elsif @arguments.key?('category') and !@arguments['category'].empty?
131
+ category = ::Categories::Models::Category[:slug => @arguments['category']]
132
+
133
+ # Bail out of the category doesn't exist
134
+ return result if category.nil?
135
+
136
+ # Retrieve the category group
137
+ group = category.category_group
138
+
139
+ # Now it's time to retrieve all section IDs
140
+ filter_hash[:section_id] = group.sections.map { |s| s.id }
131
141
 
142
+ # ------
143
+ # Filter by a section's slug
132
144
  else
133
145
  if @arguments['section'].empty?
134
- raise ArgumentError, "You need to specify a section for which to retrieve all entries"
146
+ @arguments['section'] = ::Settings::Model::Setting.get_settings[:default_section]
135
147
  end
136
148
 
137
149
  section = ::Sections::Models::Section[:slug => @arguments['section']]
138
150
 
139
151
  return result if section.nil?
152
+
140
153
  filter_hash[:section_id] = section.id
141
154
  end
142
155
 
@@ -149,9 +162,7 @@ module Sections
149
162
  context['total_rows'] = entries.count
150
163
 
151
164
  entries.each_with_index do |entry, index|
152
- entry.values.each do |k, v|
153
- context[k.to_s] = v
154
- end
165
+ entry.values.each { |k, v| context[k.to_s] = v }
155
166
 
156
167
  context['index'] = index
157
168
  context['categories'] = []
@@ -198,10 +209,11 @@ module Sections
198
209
  context[name.to_s] = value
199
210
  end
200
211
 
201
- result << render_all(@nodelist, context)
212
+ result.push(render_all(@nodelist, context))
202
213
  end
203
214
 
204
- result << render_all(@nodelist, context) if result.empty?
215
+ result.push(render_all(@nodelist, context)) if result.empty?
216
+
205
217
  return result
206
218
  end
207
219
  end