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
@@ -0,0 +1,38 @@
1
+ #:nodoc:
2
+ module Menus
3
+ #:nodoc:
4
+ module Models
5
+ ##
6
+ # Model used for managing groups of menu items. This model uses the following
7
+ # Sequel plugins:
8
+ #
9
+ # * sluggable
10
+ #
11
+ # @author Yorick Peterse
12
+ # @since 0.2a
13
+ #
14
+ class Menu < Sequel::Model
15
+ plugin :sluggable, :source => :name, :freeze => false
16
+
17
+ # Define our relations
18
+ one_to_many :menu_items, :class => "Menus::Models::MenuItem"
19
+
20
+ ##
21
+ # Specifies all validates rules used when creating or updating a menu.
22
+ # A slug will be generated when a menu is first created but after that they are
23
+ # required to ensure that they don't collide with existing slugs.
24
+ #
25
+ # @author Yorick Peterse
26
+ # @since 0.2a
27
+ #
28
+ def validate
29
+ validates_presence :name
30
+ validates_presence :slug unless new?
31
+ validates_unique :slug
32
+
33
+ # Prevent people from entering random crap for class and ID names
34
+ validates_format(/^[a-zA-Z\-_0-9]*/, [:css_class, :css_id])
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,33 @@
1
+ #:nodoc:
2
+ module Menus
3
+ #:nodoc:
4
+ module Models
5
+ ##
6
+ # Model used for managing individual menu items in a group.
7
+ # This model uses the following plugins:
8
+ #
9
+ # * tree
10
+ #
11
+ # @author Yorick Peterse
12
+ # @since 0.2a
13
+ #
14
+ class MenuItem < Sequel::Model
15
+ plugin :tree, :order => :order
16
+
17
+ ##
18
+ # Specifies all validation rules that will be used when creating or updating a
19
+ # menu item.
20
+ #
21
+ # @author Yorick Peterse
22
+ # @since 0.2a
23
+ #
24
+ def validate
25
+ validates_presence :name
26
+ validates_integer [:order, :parent_id]
27
+
28
+ # Prevent people from entering random crap for class and ID names
29
+ validates_format(/^[a-zA-Z\-_0-9]*/, [:css_class, :css_id])
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,7 @@
1
+ <article>
2
+ <header>
3
+ <h1>#{get_breadcrumbs}</h1>
4
+ </header>
5
+
6
+ #{render_partial :form}
7
+ </article>
@@ -0,0 +1,64 @@
1
+ #{
2
+ form_for(
3
+ @menu_item, :method => :post, :action => @form_save_url, :id => :menu_item_form
4
+ ) do |f|
5
+
6
+ f.input_hidden(:csrf_token, get_csrf_token)
7
+ f.input_hidden(:id , @menu_item.id)
8
+ f.input_hidden(:menu_id , @menu_id)
9
+
10
+ f.input_text(
11
+ lang('menu_items.labels.name'),
12
+ :name,
13
+ :placeholder => lang('menu_items.placeholders.name')
14
+ )
15
+
16
+ f.input_text(
17
+ lang('menu_items.labels.url'),
18
+ :url,
19
+ :placeholder => lang('menu_items.placeholders.url')
20
+ )
21
+
22
+ f.input_text(
23
+ lang('menu_items.labels.order'),
24
+ :order,
25
+ :placeholder => lang('menu_items.placeholders.order')
26
+ )
27
+
28
+ # Generate the dropdown that contains all possible parent menu items
29
+ parent_items = {}
30
+ Menus::Models::Menu[@menu_id.to_i].menu_items.each do |i|
31
+ if i.id != @menu_item.id
32
+ parent_items[i.id] = i.name
33
+ end
34
+ end
35
+
36
+ parent_items = menu_item_tree(@menu_id.to_i)
37
+
38
+ f.select(
39
+ lang('menu_items.labels.parent_id'),
40
+ :parent_id,
41
+ :values => parent_items,
42
+ :selected => @menu_item.parent_id,
43
+ :size => 1
44
+ )
45
+
46
+ f.input_text(
47
+ lang('menu_items.labels.css_class'),
48
+ :css_class,
49
+ :placeholder => lang('menu_items.placeholders.css_class')
50
+ )
51
+
52
+ f.input_text(
53
+ lang('menu_items.labels.css_id'),
54
+ :css_id,
55
+ :placeholder => lang('menu_items.placeholders.css_id')
56
+ )
57
+
58
+ f.g.div(:class => :clearfix) do
59
+ f.g.div(:class => :button) do
60
+ f.g.input(:type => :submit, :value => lang('menu_items.buttons.save'))
61
+ end
62
+ end
63
+ end
64
+ }
@@ -0,0 +1,84 @@
1
+ <article>
2
+ <header>
3
+ <h1>#{get_breadcrumbs}</h1>
4
+ </header>
5
+
6
+ <form method="post" action="#{@form_delete_url}">
7
+ <input name="csrf_token" type="hidden" value="#{get_csrf_token}" />
8
+
9
+ <?r if @menu_items and !@menu_items.empty? ?>
10
+ <table class="table">
11
+ <thead>
12
+ <tr>
13
+ <?r if user_authorized?([:delete]) ?>
14
+ <th>
15
+ <input type="checkbox" />
16
+ </th>
17
+ <?r end ?>
18
+
19
+ <th>#{lang('menu_items.labels.id')}</th>
20
+ <th>#{lang('menu_items.labels.name')}</th>
21
+ <th>#{lang('menu_items.labels.url')}</th>
22
+ <th>#{lang('menu_items.labels.parent_id')}</th>
23
+ <th>#{lang('menu_items.labels.order')}</th>
24
+ <th>#{lang('menu_items.labels.css_class')}</th>
25
+ <th>#{lang('menu_items.labels.css_id')}</th>
26
+ </tr>
27
+ </thead>
28
+ <tbody>
29
+
30
+ <?r @menu_items.each do |item| ?>
31
+ <tr>
32
+ <?r if user_authorized?([:delete]) ?>
33
+ <td>
34
+ <input name="menu_item_ids[]" type="checkbox" value="#{item.id}" />
35
+ </td>
36
+ <?r end ?>
37
+
38
+ <td>#{item.id}</td>
39
+
40
+ <?r if user_authorized?([:edit]) ?>
41
+ <td>
42
+ #{anchor_to(
43
+ item.name,
44
+ Menus::Controllers::MenuItems.r(:edit, @menu_id, item.id)
45
+ )}
46
+ </td>
47
+ <?r else ?>
48
+ <td>#{item.name}</td>
49
+ <?r end ?>
50
+
51
+ <td>#{anchor_to(item.url, item.url)}</td>
52
+ <td>#{item.ancestors.map { |a| a.name }.join(', ')}</td>
53
+ <td>#{item.order}</td>
54
+ <td>#{item.css_class}</td>
55
+ <td>#{item.css_id}</td>
56
+ </tr>
57
+ <?r end ?>
58
+
59
+ </tbody>
60
+ </table>
61
+
62
+ <?r else ?>
63
+ <p>#{lang('menu_items.messages.no_items')}</p>
64
+ <?r end ?>
65
+
66
+ <div class="clearfix">
67
+ <?r if user_authorized?([:create, :read]) ?>
68
+ <div class="button">
69
+ #{anchor_to(
70
+ lang('menu_items.buttons.new'),
71
+ Menus::Controllers::MenuItems.r(:new, @menu_id)
72
+ )}
73
+ </div>
74
+ <?r end ?>
75
+
76
+ <?r if user_authorized?([:delete]) ?>
77
+ <div class="button">
78
+ <input type="submit" value="#{lang('menu_items.buttons.delete')}" />
79
+ </div>
80
+ <?r end ?>
81
+ </div>
82
+ </form>
83
+
84
+ </article>
@@ -0,0 +1,7 @@
1
+ <article>
2
+ <header>
3
+ <h1>#{get_breadcrumbs}</h1>
4
+ </header>
5
+
6
+ #{render_partial :form}
7
+ </article>
@@ -0,0 +1,7 @@
1
+ <article>
2
+ <header>
3
+ <h1>#{get_breadcrumbs}</h1>
4
+ </header>
5
+
6
+ #{render_partial :form}
7
+ </article>
@@ -0,0 +1,42 @@
1
+ #{
2
+ form_for(@menu, :method => :post, :action => @form_save_url, :id => :menu_form) do |f|
3
+ f.input_hidden(:csrf_token, get_csrf_token)
4
+ f.input_hidden(:id , @menu.id)
5
+
6
+ f.input_text(
7
+ lang('menus.labels.name'),
8
+ :name,
9
+ :placeholder => lang('menus.placeholders.name')
10
+ )
11
+
12
+ f.input_text(
13
+ lang('menus.labels.slug'),
14
+ :slug,
15
+ :placeholder => lang('menus.placeholders.slug')
16
+ )
17
+
18
+ f.input_text(
19
+ lang('menus.labels.css_class'),
20
+ :css_class,
21
+ :placeholder => lang('menus.placeholders.css_class')
22
+ )
23
+
24
+ f.input_text(
25
+ lang('menus.labels.css_id'),
26
+ :css_id,
27
+ :placeholder => lang('menus.placeholders.css_id')
28
+ )
29
+
30
+ f.textarea(
31
+ lang('menus.labels.description'),
32
+ :description,
33
+ :rows => 8
34
+ )
35
+
36
+ f.g.div(:class => "clearfix") do
37
+ f.g.div(:class => "button") do
38
+ f.g.input(:type => :submit, :value => lang('menus.buttons.save'))
39
+ end
40
+ end
41
+ end
42
+ }
@@ -0,0 +1,95 @@
1
+ <article>
2
+ <header>
3
+ <h1>#{get_breadcrumbs}</h1>
4
+ </header>
5
+
6
+ <form action="#{@form_delete_url}" method="post">
7
+ <input name="csrf_token" type="hidden" value="#{get_csrf_token}" />
8
+
9
+ <?r if @menus and !@menus.empty? ?>
10
+
11
+ <table class="table">
12
+ <thead>
13
+ <tr>
14
+ <?r if user_authorized?([:delete]) ?>
15
+ <th>
16
+ <input type="checkbox" />
17
+ </th>
18
+ <?r end ?>
19
+
20
+ <th>#{lang('menus.labels.id')}</th>
21
+ <th>#{lang('menus.labels.name')}</th>
22
+ <th>#{lang('menus.labels.slug')}</th>
23
+ <th>#{lang('menus.labels.css_class')}</th>
24
+ <th>#{lang('menus.labels.css_id')}</th>
25
+
26
+ <?r if user_authorized?([:create, :read]) ?>
27
+ <th></th>
28
+ <?r end ?>
29
+ </tr>
30
+ </thead>
31
+
32
+ <tbody>
33
+ <?r @menus.each do |menu| ?>
34
+ <tr>
35
+ <?r if user_authorized?([:delete]) ?>
36
+ <td>
37
+ <input type="checkbox" name="menu_ids[]" value="#{menu.id}" />
38
+ </td>
39
+ <?r end ?>
40
+
41
+ <td>#{menu.id}</td>
42
+
43
+ <?r if user_authorized?([:edit]) ?>
44
+ <td>
45
+ #{anchor_to(
46
+ menu.name,
47
+ Menus::Controllers::Menus.r(:edit, menu.id)
48
+ )}
49
+ </td>
50
+ <?r else ?>
51
+ <td>#{menu.name}</td>
52
+ <?r end ?>
53
+
54
+ <td>#{menu.slug}</td>
55
+ <td>#{menu.css_class}</td>
56
+ <td>#{menu.css_id}</td>
57
+
58
+ <?r if user_authorized?([:create, :read]) ?>
59
+ <td>
60
+ #{anchor_to(
61
+ lang('menus.labels.manage_items'),
62
+ Menus::Controllers::MenuItems.r(:index, menu.id)
63
+ )}
64
+ </td>
65
+ <?r end ?>
66
+ </tr>
67
+ <?r end ?>
68
+ </tbody>
69
+ </table>
70
+
71
+ <?r else ?>
72
+ <p>#{lang('menus.messages.no_menus')}</p>
73
+ <?r end ?>
74
+
75
+ <div class="clearfix">
76
+
77
+ <?r if user_authorized?([:create, :read]) ?>
78
+ <div class="button">
79
+ #{anchor_to(
80
+ lang('menus.buttons.new'),
81
+ Menus::Controllers::Menus.r(:new)
82
+ )}
83
+ </div>
84
+ <?r end ?>
85
+
86
+ <?r if user_authorized?([:delete]) ?>
87
+ <div class="button">
88
+ <input type="submit" value="#{lang('menus.buttons.delete')}" />
89
+ </div>
90
+ <?r end ?>
91
+
92
+ </div>
93
+
94
+ </form>
95
+ </article>
@@ -0,0 +1,7 @@
1
+ <article>
2
+ <header>
3
+ <h1>#{get_breadcrumbs}</h1>
4
+ </header>
5
+
6
+ #{render_partial :form}
7
+ </article>
@@ -0,0 +1,33 @@
1
+ Sequel.migration do
2
+
3
+ up do
4
+ create_table :menus do
5
+ primary_key :id
6
+
7
+ String :name , :null => false
8
+ String :slug , :null => false, :index => true
9
+ String :description , :text => true
10
+ String :css_class
11
+ String :css_id
12
+ end
13
+
14
+ create_table :menu_items do
15
+ primary_key :id
16
+
17
+ Integer :parent_id, :index => true
18
+ String :name , :null => false
19
+ String :url , :null => false
20
+ Integer :order , :default => 0
21
+ String :css_class
22
+ String :css_id
23
+
24
+ foreign_key :menu_id, :menus, :update => :on_cascade, :on_delete => :cascade, :key => :id,
25
+ end
26
+ end
27
+
28
+ down do
29
+ drop_table :menu_items
30
+ drop_table :menus
31
+ end
32
+
33
+ end
@@ -1,4 +1,6 @@
1
+ #:nodoc:
1
2
  module Sections
3
+ #:nodoc:
2
4
  module Controllers
3
5
  ##
4
6
  # Section entries can be seen as blog entries, products, all sorts of things.
@@ -8,15 +10,14 @@ module Sections
8
10
  # @since 0.1
9
11
  #
10
12
  class SectionEntries < Zen::Controllers::AdminController
11
- map '/admin/section_entries'
13
+ include ::Sections::Models
12
14
 
15
+ map '/admin/section-entries'
13
16
  trait :extension_identifier => 'com.zen.sections'
14
17
 
15
- include ::Sections::Models
16
-
17
18
  before_all do
18
- csrf_protection :save, :delete do
19
- respond(@zen_general_lang.errors[:csrf], 401)
19
+ csrf_protection(:save, :delete) do
20
+ respond(lang('zen_general.errors.csrf'), 403)
20
21
  end
21
22
  end
22
23
 
@@ -24,44 +25,66 @@ module Sections
24
25
  # Constructor method, called upon initialization. It's used to set the
25
26
  # URL to which forms send their data and load the language pack.
26
27
  #
28
+ # This method loads the following language files:
29
+ #
30
+ # * sections
31
+ # * section_entries
32
+ # * zen_models
33
+ #
27
34
  # @author Yorick Peterse
28
35
  # @since 0.1
29
36
  #
30
37
  def initialize
31
38
  super
32
39
 
33
- @form_save_url = '/admin/section_entries/save'
34
- @form_delete_url = '/admin/section_entries/delete'
35
- @entries_lang = Zen::Language.load 'section_entries'
36
- @sections_lang = Zen::Language.load 'sections'
37
- @models_lang = Zen::Language.load 'zen_models'
40
+ @form_save_url = SectionEntries.r(:save)
41
+ @form_delete_url = SectionEntries.r(:delete)
42
+
43
+ Zen::Language.load('section_entries')
44
+ Zen::Language.load('sections')
38
45
 
39
46
  # Set the page title
40
47
  if !action.method.nil?
41
- method = action.method.to_sym
42
-
43
- if @entries_lang.titles.key? method
44
- @page_title = @entries_lang.titles[method]
45
- end
48
+ method = action.method.to_sym
49
+ @page_title = lang("section_entries.titles.#{method}") rescue nil
46
50
  end
51
+
52
+ # Load our datepicker that ships with Zen itself
53
+ require_js(
54
+ 'vendor/datepicker/Picker', 'vendor/datepicker/Picker.Attach',
55
+ 'vendor/datepicker/Picker.Date', 'vendor/datepicker/locale'
56
+ )
57
+
58
+ require_css('datepicker')
59
+
60
+ @status_hash = {
61
+ 'draft' => lang('section_entries.special.status_hash.draft'),
62
+ 'published' => lang('section_entries.special.status_hash.published')
63
+ }
47
64
  end
48
65
 
49
66
  ##
50
- # Show an overview of all entries for the current section
67
+ # Show an overview of all entries for the current section.
68
+ #
69
+ # This method requires the following permissions:
70
+ #
71
+ # * read
51
72
  #
52
73
  # @author Yorick Peterse
53
74
  # @param [Integer] section_id The ID of the current section.
54
75
  # @since 0.1
55
76
  #
56
- def index section_id
77
+ def index(section_id)
57
78
  if !user_authorized?([:read])
58
- respond(@zen_general_lang.errors[:not_authorized], 403)
79
+ respond(lang('zen_general.errors.not_authorized'), 403)
59
80
  end
60
81
 
61
- set_breadcrumbs anchor_to(@sections_lang.titles[:index], "admin"),
62
- @entries_lang.titles[:index]
82
+ set_breadcrumbs(
83
+ anchor_to(lang('sections.titles.index'), Sections.r(:index)),
84
+ lang('section_entries.titles.index')
85
+ )
63
86
 
64
- section = Section[section_id]
87
+ section = Section[section_id.to_i]
65
88
  @section_id = section_id
66
89
  @entries = section.section_entries
67
90
  end
@@ -69,52 +92,68 @@ module Sections
69
92
  ##
70
93
  # Show a form that lets the user edit an existing section entry.
71
94
  #
95
+ # This method requires the following permissions:
96
+ #
97
+ # * read
98
+ # * update
99
+ #
72
100
  # @author Yorick Peterse
73
101
  # @param [Integer] section_id The ID of the current section.
74
102
  # @param [Integer] entry_id The ID of the current section entry.
75
103
  # @since 0.1
76
104
  #
77
- def edit section_id, entry_id
105
+ def edit(section_id, entry_id)
78
106
  if !user_authorized?([:read, :update])
79
- respond(@zen_general_lang.errors[:not_authorized], 403)
107
+ respond(lang('zen_general.errors.not_authorized'), 403)
80
108
  end
81
109
 
82
- set_breadcrumbs anchor_to(@sections_lang.titles[:index], "admin"),
83
- anchor_to(@entries_lang.titles[:index], "admin/section_entries/index/#{section_id}"),
84
- @entries_lang.titles[:edit]
110
+ set_breadcrumbs(
111
+ anchor_to(lang('sections.titles.index'), Sections.r(:index)),
112
+ anchor_to(lang('section_entries.titles.index'), SectionEntries.r(:index, section_id)),
113
+ lang('section_entries.titles.edit')
114
+ )
85
115
 
86
116
  @section_id = section_id
87
- @entry = SectionEntry[entry_id]
117
+
118
+ if flash[:form_data]
119
+ @entry = flash[:form_data]
120
+ else
121
+ @entry = SectionEntry[entry_id.to_i]
122
+ end
123
+
88
124
  @users_hash = {}
89
125
 
90
- Users::Models::User.each do |u|
91
- @users_hash[u.id] = u.name
92
- end
126
+ Users::Models::User.each { |u| @users_hash[u.id] = u.name }
93
127
  end
94
128
 
95
129
  ##
96
130
  # Show a form that lets the user create a new section entry.
97
131
  #
132
+ # This method requires the following permissions:
133
+ #
134
+ # * read
135
+ # * create
136
+ #
98
137
  # @author Yorick Peterse
99
138
  # @param [Integer] section_id The ID of the current section.
100
139
  # @since 0.1
101
140
  #
102
141
  def new section_id
103
142
  if !user_authorized?([:read, :create])
104
- respond(@zen_general_lang.errors[:not_authorized], 403)
143
+ respond(lang('zen_general.errors.not_authorized'), 403)
105
144
  end
106
145
 
107
- set_breadcrumbs anchor_to(@sections_lang.titles[:index], "admin"),
108
- anchor_to(@entries_lang.titles[:index], "admin/section_entries/index/#{section_id}"),
109
- @entries_lang.titles[:new]
146
+ set_breadcrumbs(
147
+ anchor_to(lang('sections.titles.index'), Sections.r(:index)),
148
+ anchor_to(lang('section_entries.titles.index'), SectionEntries.r(:index, section_id)),
149
+ lang('section_entries.titles.new')
150
+ )
110
151
 
111
152
  @section_id = section_id
112
- @entry = SectionEntry.new :section_id => @section_id
153
+ @entry = SectionEntry.new(:section_id => @section_id)
113
154
  @users_hash = {}
114
155
 
115
- Users::Models::User.each do |u|
116
- @users_hash[u.id] = u.name
117
- end
156
+ Users::Models::User.each { |u| @users_hash[u.id] = u.name }
118
157
  end
119
158
 
120
159
  ##
@@ -122,6 +161,11 @@ module Sections
122
161
  # the proper URL. Based on the value of a hidden field named "id" we'll determine
123
162
  # if the data will be used to create a new section or to update an existing one.
124
163
  #
164
+ # This method requires the following permissions:
165
+ #
166
+ # * create
167
+ # * save
168
+ #
125
169
  # @author Yorick Peterse
126
170
  # @since 0.1
127
171
  # @todo The way this method handles the creation of field values might require some
@@ -129,28 +173,25 @@ module Sections
129
173
  #
130
174
  def save
131
175
  if !user_authorized?([:create, :save])
132
- respond(@zen_general_lang.errors[:not_authorized], 403)
176
+ respond(lang('zen_general.errors.not_authorized'), 403)
133
177
  end
134
178
 
135
179
  post = request.params.dup
136
- section_id = post["section_id"]
137
- field_values = post["custom_field_values"]
180
+ section_id = post['section_id']
181
+ field_values = post['custom_field_values']
138
182
  custom_field_errors = {}
139
183
 
140
184
  post.delete("custom_field_values")
185
+ post.delete('slug') if post['slug'].empty?
141
186
 
142
- post.each do |key, value|
143
- post.delete(key) if value.empty?
144
- end
145
-
146
- if !post["category_pks"].nil?
147
- post["category_pks"].map! { |value| value.to_i }
187
+ if !post['category_pks'].nil?
188
+ post['category_pks'].map! { |value| value.to_i }
148
189
  else
149
- post["category_pks"] = []
190
+ post['category_pks'] = []
150
191
  end
151
192
 
152
- if post["id"] and !post["id"].empty?
153
- @entry = SectionEntry[post["id"]]
193
+ if post['id'] and !post['id'].empty?
194
+ @entry = SectionEntry[post['id']]
154
195
  save_action = :save
155
196
 
156
197
  # Section entries aren't considered to be updated whenever a custom field value
@@ -161,29 +202,35 @@ module Sections
161
202
  save_action = :new
162
203
  end
163
204
 
164
- flash_success = @entries_lang.success[save_action]
165
- flash_error = @entries_lang.errors[save_action]
205
+ flash_success = lang("section_entries.success.#{save_action}")
206
+ flash_error = lang("section_entries.errors.#{save_action}")
166
207
 
167
208
  # Transactions ahoy!
168
209
  begin
169
210
  Zen::Database.handle.transaction do
170
211
  # Update the entry itself
171
212
  @entry.update(post)
172
- notification(:success, @entries_lang.titles[:index], flash_success)
213
+ notification(:success, lang('section_entries.titles.index'), flash_success)
173
214
 
174
215
  # Update the field values
175
216
  field_values.each do |field_id, value|
176
- field_value = CustomFields::Models::CustomFieldValue[:custom_field_id => field_id, :section_entry_id => @entry.id]
217
+ field_value = CustomFields::Models::CustomFieldValue[
218
+ :custom_field_id => field_id,
219
+ :section_entry_id => @entry.id
220
+ ]
177
221
 
178
222
  if field_value.nil?
179
- field_value = @entry.add_custom_field_value(:section_entry_id => @entry.id, :custom_field_id => field_id)
223
+ field_value = @entry.add_custom_field_value(
224
+ :section_entry_id => @entry.id,
225
+ :custom_field_id => field_id
226
+ )
180
227
  end
181
228
 
182
229
  # Get the custom field for the current value
183
230
  custom_field = field_value.custom_field
184
231
 
185
232
  if custom_field.required and value.empty?
186
- custom_field_errors[:"custom_field_values[#{field_id}]"] = @models_lang.presence
233
+ custom_field_errors[:"custom_field_values[#{field_id}]"] = lang('zen_models.presence')
187
234
  end
188
235
 
189
236
  # Validate the entry
@@ -203,14 +250,16 @@ module Sections
203
250
  # 2. Any custom field marked as required didn't have a value
204
251
  # 3. Something else went wrong, god knows what.
205
252
  rescue
206
- notification(:error, @entries_lang.titles[:index], flash_error)
253
+ notification(:error, lang('section_entries.titles.index'), flash_error)
207
254
 
208
255
  flash[:form_errors] = @entry.errors.merge(custom_field_errors)
256
+ flash[:form_data] = @entry
257
+
209
258
  redirect_referrer
210
259
  end
211
260
 
212
261
  if @entry.id
213
- redirect "/admin/section_entries/edit/#{section_id}/#{@entry.id}"
262
+ redirect(SectionEntries.r(:edit, section_id, @entry.id))
214
263
  else
215
264
  redirect_referrer
216
265
  end
@@ -220,27 +269,42 @@ module Sections
220
269
  # Delete a set of section entries based on the supplied POST
221
270
  # field "section_entry_ids".
222
271
  #
272
+ # This method requires the following permissions:
273
+ #
274
+ # * delete
275
+ #
223
276
  # @author Yorick Peterse
224
277
  # @since 0.1
225
278
  #
226
279
  def delete
227
280
  if !user_authorized?([:delete])
228
- respond(@zen_general_lang.errors[:not_authorized], 403)
281
+ respond(lang('zen_general.errors.not_authorized'), 403)
229
282
  end
230
283
 
231
- if !request.params["section_entry_ids"] or request.params["section_entry_ids"].empty?
232
- notification(:error, @entries_lang.titles[:index], @entries_lang.errors[:no_delete])
284
+ if !request.params['section_entry_ids'] or request.params['section_entry_ids'].empty?
285
+ notification(
286
+ :error,
287
+ lang('section_entries.titles.index'),
288
+ lang('section_entries.errors.no_delete')
289
+ )
290
+
233
291
  redirect_referrer
234
292
  end
235
293
 
236
- request.params["section_entry_ids"].each do |id|
237
- @entry = SectionEntry[id]
238
-
294
+ request.params['section_entry_ids'].each do |id|
239
295
  begin
240
- @entry.delete
241
- notification(:success, @entries_lang.titles[:index], @entries_lang.success[:delete] % id)
296
+ SectionEntry[id.to_i].destroy
297
+ notification(
298
+ :success,
299
+ lang('section_entries.titles.index'),
300
+ lang('section_entries.success.delete')
301
+ )
242
302
  rescue
243
- notification(:error, @entries_lang.titles[:index], @entries_lang.errors[:delete] % id)
303
+ notification(
304
+ :error,
305
+ lang('section_entries.titles.index'),
306
+ lang('section_entries.errors.delete') % id
307
+ )
244
308
  end
245
309
  end
246
310
 
@@ -248,4 +312,4 @@ module Sections
248
312
  end
249
313
  end
250
314
  end
251
- end
315
+ end