zen 0.1a → 0.2

Sign up to get free protection for your applications and to get access to all the features.
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,42 @@
1
+ ---
2
+ titles:
3
+ index : 'Comments'
4
+ edit : 'Edit Comment'
5
+
6
+ labels:
7
+ id : '#'
8
+ website : 'Website'
9
+ entry : 'Section Entry'
10
+ email : 'Email'
11
+ status : 'Status'
12
+ comment : 'Comment'
13
+ name : 'Name'
14
+ created_at : 'Created'
15
+ updated_at : 'Updated'
16
+ defensio_signature : 'Defensio Signature'
17
+ open : 'Open'
18
+ closed : 'Closed'
19
+ spam : 'Spam'
20
+
21
+ messages:
22
+ no_comments: 'No comments have been added yet.'
23
+
24
+ success:
25
+ new : 'The new comment has been created.'
26
+ save : 'The comment has been modified.'
27
+ delete : 'All selected comments have been deleted.'
28
+ moderate : "The comment has been posted but mush be approved by an administrator before it's displayed."
29
+
30
+ errors:
31
+ new : 'Failed to create the new comment.'
32
+ save : 'Failed to modify the comment.'
33
+ delete : 'Failed to delete the comment with ID #%s.'
34
+ no_delete : "You haven't specified any comments to delete."
35
+ invalid_entry : 'The specified section entry is invalid.'
36
+ comments_not_allowed : "Comments aren't allowed for this section."
37
+ no_api_key : 'You need to specify an API key for the Defensio system in your settings panel.'
38
+ defensio_status : 'The comment could not be saved due to a problem with the Defensio server.'
39
+
40
+ buttons:
41
+ delete : 'Delete selected comments'
42
+ save : 'Save comment'
@@ -1,14 +1,38 @@
1
1
  require 'ramaze/gestalt'
2
2
 
3
+ #:nodoc:
3
4
  module Comments
5
+ #:nodoc:
4
6
  module Liquid
5
7
  ##
6
- # Describe...
8
+ # Liquid tag that can be used to generate the required form elements for submitting
9
+ # comments. It's important to remember that you still need to define your own
10
+ # form fields such as those for the name and Email, this tag merely generates
11
+ # the form open/closing tags and a few hidden fields. The following field (names)
12
+ # are required when creating a comment form:
13
+ #
14
+ # * name
15
+ # * website
16
+ # * email
17
+ # * comment
18
+ #
19
+ # Basic usage of this tag is as following:
20
+ #
21
+ # {% comment_form section_entry="hello-world" %}
22
+ #
23
+ # <p>
24
+ # <label for="name">Name</label>
25
+ # <input type="text" name="name" id="name" />
26
+ # </p>
27
+ #
28
+ # <input type="submit" value="Submit comment" />
29
+ #
30
+ # {% endcomment_form %}
7
31
  #
8
32
  # The following arguments can be used:
9
33
  #
10
- # * section_entry
11
- # * section_entry_id
34
+ # * section_entry: the slug of the entry
35
+ # * section_entry_id: the ID of the entry
12
36
  #
13
37
  # @author Yorick Peterse
14
38
  # @since 0.1
@@ -29,7 +53,7 @@ module Comments
29
53
  # @param [String] html The HTML inside the block.
30
54
  # @since 0.1
31
55
  #
32
- def initialize(tag_name, arguments, html)
56
+ def initialize(tag_name = 'comments_form', arguments = '', html = '')
33
57
  super
34
58
 
35
59
  @arguments = parse_key_values(arguments)
@@ -57,15 +81,17 @@ module Comments
57
81
  g = Ramaze::Gestalt.new
58
82
  user_html = ''
59
83
 
60
- super(context).each do |h|
61
- user_html += h
62
- end
84
+ super(context).each { |h| user_html += h }
63
85
 
64
86
  # Get our section to which this form belongs
65
87
  if @arguments.key?('section_entry')
66
- section_entry = ::Sections::Models::SectionEntry[:slug => @arguments['section_entry']]
88
+ section_entry = ::Sections::Models::SectionEntry[
89
+ :slug => @arguments['section_entry']
90
+ ]
67
91
  else
68
- section_entry = ::Sections::Models::SectionEntry[@arguments['section_entry_id'].to_i]
92
+ section_entry = ::Sections::Models::SectionEntry[
93
+ @arguments['section_entry_id'].to_i
94
+ ]
69
95
  end
70
96
 
71
97
  # Get the section entry's ID
@@ -82,10 +108,14 @@ module Comments
82
108
  user_id = nil
83
109
  end
84
110
 
85
- g_html = form_for(nil, :method => :post, :action => "/comments_form/save") do |f|
86
- f.input_hidden :csrf_token, get_csrf_token
87
- f.input_hidden :section_entry, section_entry_id
88
- f.input_hidden :user_id, user_id
111
+ g_html = form_for(
112
+ nil,
113
+ :method => :post,
114
+ :action => Comments::Controllers::CommentsForm.r(:save)
115
+ ) do |f|
116
+ f.input_hidden(:csrf_token , get_csrf_token)
117
+ f.input_hidden(:section_entry, section_entry_id)
118
+ f.input_hidden(:user_id , user_id)
89
119
 
90
120
  user_html
91
121
  end
@@ -1,11 +1,12 @@
1
+ #:nodoc:
1
2
  module Comments
3
+ #:nodoc:
2
4
  module Liquid
3
5
  ##
4
6
  # Tag that can be used to display a number of comments based on the section entry ID
5
7
  # or the slug of a section entry.
6
8
  #
7
9
  # @example
8
- #
9
10
  # {% comments section_entry="hello-world" limit="10" %}
10
11
  # {{comment}}
11
12
  # {% endcomments %}
@@ -33,7 +34,7 @@ module Comments
33
34
  # @param [String] html The HTML inside the block.
34
35
  # @since 0.1
35
36
  #
36
- def initialize tag_name, arguments, html
37
+ def initialize(tag_name = 'comments', arguments = '', html = '')
37
38
  super
38
39
 
39
40
  @arguments = {
@@ -44,7 +45,10 @@ module Comments
44
45
  @args_parsed = false
45
46
 
46
47
  if !@arguments.key?('section_entry') or @arguments['section_entry'].empty?
47
- raise ArgumentError, "You need to specify a section entry's slug in order to retrieve a set of comments"
48
+ raise(
49
+ ArgumentError,
50
+ "You need to specify a section entry's slug in order to retrieve a set of comments"
51
+ )
48
52
  end
49
53
  end
50
54
 
@@ -56,13 +60,7 @@ module Comments
56
60
  #
57
61
  def render context
58
62
  if @args_parsed == false
59
- @arguments.each do |k, v|
60
- v = v.to_s
61
-
62
- if context.has_key?(v)
63
- @arguments[k] = h(context[v])
64
- end
65
- end
63
+ @arguments = merge_context(@arguments, context)
66
64
  end
67
65
 
68
66
  @args_parsed = true
@@ -104,10 +102,10 @@ module Comments
104
102
  end
105
103
  end
106
104
 
107
- result << render_all(@nodelist, context)
105
+ result.push(render_all(@nodelist, context))
108
106
  end
109
107
 
110
- result << render_all(@nodelist, context) if result.empty?
108
+ result.push(render_all(@nodelist, context)) if result.empty?
111
109
  return result
112
110
  end
113
111
  end
@@ -1,4 +1,6 @@
1
+ #:nodoc:
1
2
  module Comments
3
+ #:nodoc:
2
4
  module Models
3
5
  ##
4
6
  # Model that represents a single comment. This model has the following relations:
@@ -14,6 +16,8 @@ module Comments
14
16
  # @since 0.1
15
17
  #
16
18
  class Comment < Sequel::Model
19
+ include ::Zen::Language
20
+
17
21
  many_to_one :section_entry, :class => "Sections::Models::SectionEntry"
18
22
  many_to_one :user, :class => "Users::Models::User"
19
23
 
@@ -29,6 +33,26 @@ module Comments
29
33
  validates_presence :comment
30
34
  validates_presence :email
31
35
  end
36
+
37
+ ##
38
+ # Returns a hash containing all available statuses for each comment.
39
+ #
40
+ # @example
41
+ # Comments::Models::Comment.status_hash
42
+ #
43
+ # @author Yorick Peterse
44
+ # @since 0.2
45
+ # @return [Hash]
46
+ #
47
+ def self.status_hash
48
+ ::Zen::Language.load('comments')
49
+
50
+ return {
51
+ 'open' => lang('comments.labels.open'),
52
+ 'closed' => lang('comments.labels.closed'),
53
+ 'spam' => lang('comments.labels.spam')
54
+ }
55
+ end
32
56
  end
33
57
  end
34
58
  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,57 @@
1
+ #{
2
+ form_for(
3
+ @comment, :method => :post, :action => @form_save_url, :id => :comment_form
4
+ ) do |f|
5
+ f.input_hidden(:csrf_token, get_csrf_token)
6
+ f.input_hidden(:id , @comment.id)
7
+
8
+ if !@comment.user_id
9
+ name = @comment.name
10
+ website = @comment.website
11
+ email = @comment.email
12
+ else
13
+ name = @comment.user.name
14
+ website = @comment.user.website
15
+ email = @comment.user.email
16
+ end
17
+
18
+ f.input_text(
19
+ lang('comments.labels.name'),
20
+ :name,
21
+ :value => name,
22
+ :disabled => :disabled
23
+ )
24
+
25
+ f.input_text(
26
+ lang('comments.labels.website'),
27
+ :website,
28
+ :value => website
29
+ )
30
+
31
+ f.input_text(
32
+ lang('comments.labels.email'),
33
+ :email,
34
+ :value => email
35
+ )
36
+
37
+ f.select(
38
+ lang('comments.labels.status'),
39
+ :status,
40
+ :values => Comments::Models::Comment.status_hash,
41
+ :selected => @comment.status,
42
+ :size => 1
43
+ )
44
+
45
+ f.textarea(
46
+ lang('comments.labels.comment'),
47
+ :comment,
48
+ :rows => 10
49
+ )
50
+
51
+ f.g.div(:class => 'clearfix') do
52
+ f.g.div(:class => 'button') do
53
+ f.g.input(:type => 'submit', :value => lang('comments.buttons.save'))
54
+ end
55
+ end
56
+ end
57
+ }
@@ -0,0 +1,79 @@
1
+ <article>
2
+ <header>
3
+ <h1>#{get_breadcrumbs}</h1>
4
+ </header>
5
+
6
+ <form method="post" action="#{@form_delete_url}">
7
+ <input type="hidden" name="csrf_token" value="#{get_csrf_token}" />
8
+
9
+ <?r if @comments and !@comments.empty? ?>
10
+ <table class="table">
11
+ <thead>
12
+ <?r if user_authorized?([:delete]) ?>
13
+ <th>
14
+ <input type="checkbox" />
15
+ </th>
16
+ <?r end ?>
17
+ <th>#{lang('comments.labels.id')}</th>
18
+ <th>#{lang('comments.labels.comment')}</th>
19
+ <th>#{lang('comments.labels.entry')}</th>
20
+ <th>#{lang('comments.labels.status')}</th>
21
+ <th>#{lang('comments.labels.name')}</th>
22
+ <th>#{lang('comments.labels.email')}</th>
23
+ <th>#{lang('comments.labels.website')}</th>
24
+ <th>#{lang('comments.labels.defensio_signature')}</th>
25
+ </thead>
26
+ <tbody>
27
+ <?r @comments.each do |comment| ?>
28
+ <tr>
29
+ <?r if user_authorized?([:delete]) ?>
30
+ <td>
31
+ <input type="checkbox" name="comment_ids[]" value="#{comment.id}" />
32
+ </td>
33
+ <?r end ?>
34
+
35
+ <td>#{comment.id}</td>
36
+
37
+ <?r if user_authorized?([:update]) ?>
38
+ <td>
39
+ #{anchor_to(
40
+ "#{comment.comment[0, 15]}...",
41
+ Comments::Controllers::Comments.r(:edit, comment.id)
42
+ )}
43
+ </td>
44
+ <?r else ?>
45
+ <td>#{comment.comment[0, 15]}...</td>
46
+ <?r end ?>
47
+
48
+ <td>#{comment.section_entry.title}</td>
49
+ <td>#{Comments::Models::Comment.status_hash[comment.status]}</td>
50
+
51
+ <?r if !comment.user_id ?>
52
+ <td>#{comment.name}</td>
53
+ <td>#{comment.email}</td>
54
+ <td>#{comment.website}</td>
55
+ <?r else ?>
56
+ <?r user = comment.user ?>
57
+ <td>#{user.name}</td>
58
+ <td>#{user.email}</td>
59
+ <td>#{user.website}</td>
60
+ <?r end ?>
61
+ <td>#{comment.defensio_signature}</td>
62
+ </tr>
63
+ <?r end ?>
64
+ </tbody>
65
+ </table>
66
+ <?r else ?>
67
+ <p>#{lang('comments.messages.no_comments')}</p>
68
+ <?r end ?>
69
+
70
+ <?r if user_authorized?([:delete]) and @comments and !@comments.empty? ?>
71
+ <div class="clearfix">
72
+ <div class="button">
73
+ <input type="submit" value="#{lang('comments.buttons.delete')}" />
74
+ </div>
75
+ </div>
76
+ <?r end ?>
77
+
78
+ </form>
79
+ </article>
@@ -8,12 +8,14 @@ Sequel.migration do
8
8
  String :name
9
9
  String :website
10
10
  String :email
11
- String :comment, :text => true
12
- Enum :status, :elements => ['open', 'closed', 'spam'], :default => 'closed'
11
+ String :comment, :text => true
12
+ String :defensio_signature
13
+ String :status, :default => 'closed'
13
14
  Time :created_at
14
15
  Time :updated_at
15
16
 
16
- foreign_key :section_entry_id, :section_entries, :on_delete => :cascade, :on_update => :cascade, :key => :id
17
+ foreign_key :section_entry_id, :section_entries, :on_delete => :cascade,
18
+ :on_update => :cascade, :key => :id
17
19
  end
18
20
  end
19
21
 
@@ -21,4 +23,4 @@ Sequel.migration do
21
23
  drop_table :comments
22
24
  end
23
25
 
24
- end
26
+ end
@@ -19,6 +19,6 @@ Zen::Package.add do |p|
19
19
 
20
20
  p.menu = [{
21
21
  :title => "Custom Fields",
22
- :url => "admin/custom_field_groups"
22
+ :url => "admin/custom-field-groups"
23
23
  }]
24
- end
24
+ end
@@ -0,0 +1,224 @@
1
+ #:nodoc:
2
+ module CustomFields
3
+ #:nodoc:
4
+ module Controllers
5
+ ##
6
+ # Controller for managing custom field groups. These groups are used
7
+ # to organize individual fields into a larger group which in turn will
8
+ # be assigned to a section.
9
+ #
10
+ # @author Yorick Peterse
11
+ # @since 0.1
12
+ #
13
+ class CustomFieldGroups < Zen::Controllers::AdminController
14
+ include ::CustomFields::Models
15
+
16
+ map '/admin/custom-field-groups'
17
+ trait :extension_identifier => 'com.zen.custom_fields'
18
+
19
+ before_all do
20
+ csrf_protection(:save, :delete) do
21
+ respond(lang('zen_general.errors.csrf'), 403)
22
+ end
23
+ end
24
+
25
+ ##
26
+ # Constructor method, called upon initialization. It's used to set the
27
+ # URL to which forms send their data and load the language pack.
28
+ #
29
+ # This method loads the following language files:
30
+ #
31
+ # * custom_field_groups
32
+ #
33
+ # @author Yorick Peterse
34
+ # @since 0.1
35
+ #
36
+ def initialize
37
+ super
38
+
39
+ @form_save_url = CustomFieldGroups.r(:save)
40
+ @form_delete_url = CustomFieldGroups.r(:delete)
41
+
42
+ Zen::Language.load('custom_field_groups')
43
+
44
+ # Set the page title
45
+ if !action.method.nil?
46
+ method = action.method.to_sym
47
+ @page_title = lang("custom_field_groups.titles.#{method}") rescue nil
48
+ end
49
+ end
50
+
51
+ ##
52
+ # Show an overview of all existing custom field groups. Using this overview a user
53
+ # can manage an existing field group, delete it or create a new one.
54
+ #
55
+ # This method requires the following permissions:
56
+ #
57
+ # * read
58
+ #
59
+ # @author Yorick Peterse
60
+ # @since 0.1
61
+ #
62
+ def index
63
+ if !user_authorized?([:read])
64
+ respond(lang('zen_general.errors.not_authorized'), 403)
65
+ end
66
+
67
+ set_breadcrumbs(lang('custom_field_groups.titles.index'))
68
+
69
+ @field_groups = CustomFieldGroup.all
70
+ end
71
+
72
+ ##
73
+ # Show a form that lets the user edit an existing custom field group.
74
+ #
75
+ # This method requires the following permissions:
76
+ #
77
+ # * read
78
+ # * update
79
+ #
80
+ # @author Yorick Peterse
81
+ # @param [Integer] id The ID of the custom field group to retrieve so that we
82
+ # can edit it.
83
+ # @since 0.1
84
+ #
85
+ def edit id
86
+ if !user_authorized?([:read, :update])
87
+ respond(lang('zen_general.errors.not_authorized'), 403)
88
+ end
89
+
90
+ set_breadcrumbs(
91
+ anchor_to(lang('custom_field_groups.titles.index'), CustomFieldGroups.r(:index)),
92
+ @page_title
93
+ )
94
+
95
+ if flash[:form_data]
96
+ @field_group = flash[:form_data]
97
+ else
98
+ @field_group = CustomFieldGroup[id.to_i]
99
+ end
100
+ end
101
+
102
+ ##
103
+ # Show a form that lets the user create a new custom field group.
104
+ #
105
+ # This method requires the following permissions:
106
+ #
107
+ # * read
108
+ # * create
109
+ #
110
+ # @author Yorick Peterse
111
+ # @since 0.1
112
+ #
113
+ def new
114
+ if !user_authorized?([:read, :create])
115
+ respond(lang('zen_general.errors.not_authorized'), 403)
116
+ end
117
+
118
+ set_breadcrumbs(
119
+ anchor_to(lang('custom_field_groups.titles.index'), CustomFieldGroups.r(:index)),
120
+ @page_title
121
+ )
122
+
123
+ @field_group = CustomFieldGroup.new
124
+ end
125
+
126
+ ##
127
+ # Method used for processing the form data and redirecting the user back to
128
+ # the proper URL. Based on the value of a hidden field named 'id' we'll determine
129
+ # if the data will be used to create a new group or to update an existing one.
130
+ #
131
+ # This method requires the following permissions:
132
+ #
133
+ # * create
134
+ # * update
135
+ #
136
+ # @author Yorick Peterse
137
+ # @since 0.1
138
+ #
139
+ def save
140
+ if !user_authorized?([:create, :update])
141
+ respond(lang('zen_general.errors.not_authorized'), 403)
142
+ end
143
+
144
+ post = request.params.dup
145
+
146
+ # Get or create a custom field group based on the ID from the hidden field.
147
+ if post['id'] and !post['id'].empty?
148
+ @field_group = CustomFieldGroup[post['id'].to_i]
149
+ save_action = :save
150
+ else
151
+ @field_group = CustomFieldGroup.new
152
+ save_action = :new
153
+ end
154
+
155
+ flash_success = lang("custom_field_groups.success.#{save_action}")
156
+ flash_error = lang("custom_field_groups.errors.#{save_action}")
157
+
158
+ begin
159
+ @field_group.update(post)
160
+ notification(:success, lang("custom_field_groups.titles.index"), flash_success)
161
+ rescue
162
+ notification(:error, lang("custom_field_groups.titles.index"), flash_error)
163
+
164
+ flash[:form_errors] = @field_group.errors
165
+ flash[:form_data] = @field_group
166
+ end
167
+
168
+ if !@field_group.nil? and @field_group.id
169
+ redirect(CustomFieldGroups.r(:edit, @field_group.id))
170
+ else
171
+ redirect(CustomFieldGroups.r(:new))
172
+ end
173
+ end
174
+
175
+ ##
176
+ # Delete an existing custom field group.
177
+ #
178
+ # In order to delete a custom field group you'll need to send a POST request
179
+ # that contains a field named 'custom_field_group_ids[]'. This field should
180
+ # contain the primary values of each field group that has to be deleted.
181
+ #
182
+ # This method requires the following permissions:
183
+ #
184
+ # * delete
185
+ #
186
+ # @author Yorick Peterse
187
+ # @since 0.1
188
+ #
189
+ def delete
190
+ if !user_authorized?([:delete])
191
+ respond(lang('zen_general.errors.not_authorized'), 403)
192
+ end
193
+
194
+ if !request.params['custom_field_group_ids'] or request.params['custom_field_group_ids'].empty?
195
+ notification(
196
+ :error,
197
+ lang('custom_field_groups.titles.index'),
198
+ lang('custom_field_groups.errors.no_delete')
199
+ )
200
+ redirect(CustomFieldGroups.r(:index))
201
+ end
202
+
203
+ request.params['custom_field_group_ids'].each do |id|
204
+ begin
205
+ CustomFieldGroup[id.to_i].destroy
206
+ notification(
207
+ :success,
208
+ lang('custom_field_groups.titles.index'),
209
+ lang('custom_field_groups.success.delete')
210
+ )
211
+ rescue
212
+ notification(
213
+ :error,
214
+ lang('custom_field_groups.titles.index'),
215
+ lang('custom_field_groups.errors.delete') % id
216
+ )
217
+ end
218
+ end
219
+
220
+ redirect_referrer
221
+ end
222
+ end
223
+ end
224
+ end