zen 0.1a → 0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (414) hide show
  1. data/CHANGELOG.md +17 -0
  2. data/MANIFEST +161 -264
  3. data/README.md +114 -0
  4. data/ROADMAP.md +31 -0
  5. data/Thorfile +8 -0
  6. data/lib/zen.rb +13 -10
  7. data/lib/zen/base/database.rb +34 -28
  8. data/lib/zen/base/language.rb +174 -92
  9. data/lib/zen/base/logger.rb +8 -6
  10. data/lib/zen/base/package.rb +36 -29
  11. data/lib/zen/base/version.rb +2 -1
  12. data/lib/zen/bin/zen_binary.rb +7 -71
  13. data/lib/zen/controller/admin_controller.rb +31 -11
  14. data/lib/zen/controller/base_controller.rb +13 -13
  15. data/lib/zen/controller/frontend_controller.rb +2 -0
  16. data/lib/zen/controller/main_controller.rb +9 -8
  17. data/lib/zen/helper/acl.rb +4 -1
  18. data/lib/zen/helper/asset.rb +5 -3
  19. data/lib/zen/helper/breadcrumb.rb +10 -8
  20. data/lib/zen/helper/common.rb +28 -13
  21. data/lib/zen/language/en/zen_general.yml +31 -0
  22. data/lib/zen/language/en/zen_models.yml +13 -0
  23. data/lib/zen/layout/admin.xhtml +76 -68
  24. data/lib/zen/layout/login.xhtml +48 -42
  25. data/lib/zen/liquid/controller_behavior.rb +2 -0
  26. data/lib/zen/liquid/general.rb +60 -9
  27. data/lib/zen/liquid/redirect.rb +29 -6
  28. data/lib/zen/liquid/strip.rb +3 -1
  29. data/lib/zen/model/methods.rb +7 -5
  30. data/lib/zen/model/settings.rb +69 -18
  31. data/lib/zen/package/all.rb +7 -0
  32. data/lib/zen/{packages → package}/categories/lib/categories.rb +3 -3
  33. data/lib/zen/package/categories/lib/categories/controller/categories.rb +250 -0
  34. data/lib/zen/package/categories/lib/categories/controller/category_groups.rb +216 -0
  35. data/lib/zen/package/categories/lib/categories/language/en/categories.yml +35 -0
  36. data/lib/zen/package/categories/lib/categories/language/en/category_groups.yml +32 -0
  37. data/lib/zen/package/categories/lib/categories/liquid/categories.rb +16 -0
  38. data/lib/zen/{packages → package}/categories/lib/categories/model/category.rb +9 -9
  39. data/lib/zen/{packages → package}/categories/lib/categories/model/category_group.rb +6 -4
  40. data/lib/zen/package/categories/lib/categories/view/admin/categories/edit.xhtml +7 -0
  41. data/lib/zen/package/categories/lib/categories/view/admin/categories/form.xhtml +59 -0
  42. data/lib/zen/package/categories/lib/categories/view/admin/categories/index.xhtml +78 -0
  43. data/lib/zen/package/categories/lib/categories/view/admin/categories/new.xhtml +7 -0
  44. data/lib/zen/package/categories/lib/categories/view/admin/category-groups/edit.xhtml +7 -0
  45. data/lib/zen/package/categories/lib/categories/view/admin/category-groups/form.xhtml +31 -0
  46. data/lib/zen/package/categories/lib/categories/view/admin/category-groups/index.xhtml +85 -0
  47. data/lib/zen/package/categories/lib/categories/view/admin/category-groups/new.xhtml +7 -0
  48. data/lib/zen/{packages → package}/categories/migrations/.gitkeep +0 -0
  49. data/lib/zen/{packages → package}/categories/migrations/1295282303_create_schema.rb +3 -2
  50. data/lib/zen/{packages → package}/comments/lib/comments.rb +1 -1
  51. data/lib/zen/{packages → package}/comments/lib/comments/controller/comments.rb +81 -41
  52. data/lib/zen/{packages → package}/comments/lib/comments/controller/comments_form.rb +15 -13
  53. data/lib/zen/package/comments/lib/comments/language/en/comments.yml +42 -0
  54. data/lib/zen/{packages → package}/comments/lib/comments/liquid/comment_form.rb +43 -13
  55. data/lib/zen/{packages → package}/comments/lib/comments/liquid/comments.rb +10 -12
  56. data/lib/zen/{packages → package}/comments/lib/comments/model/comment.rb +24 -0
  57. data/lib/zen/package/comments/lib/comments/view/admin/comments/edit.xhtml +7 -0
  58. data/lib/zen/package/comments/lib/comments/view/admin/comments/form.xhtml +57 -0
  59. data/lib/zen/package/comments/lib/comments/view/admin/comments/index.xhtml +79 -0
  60. data/lib/zen/{packages → package}/comments/migrations/.gitkeep +0 -0
  61. data/lib/zen/{packages → package}/comments/migrations/1295282202_create_schema.rb +6 -4
  62. data/lib/zen/{packages → package}/custom_fields/lib/custom_fields.rb +2 -2
  63. data/lib/zen/package/custom_fields/lib/custom_fields/controller/custom_field_groups.rb +224 -0
  64. data/lib/zen/package/custom_fields/lib/custom_fields/controller/custom_fields.rb +259 -0
  65. data/lib/zen/package/custom_fields/lib/custom_fields/language/en/custom_field_groups.yml +32 -0
  66. data/lib/zen/package/custom_fields/lib/custom_fields/language/en/custom_fields.yml +52 -0
  67. data/lib/zen/{packages → package}/custom_fields/lib/custom_fields/model/custom_field.rb +12 -7
  68. data/lib/zen/{packages → package}/custom_fields/lib/custom_fields/model/custom_field_group.rb +14 -4
  69. data/lib/zen/{packages → package}/custom_fields/lib/custom_fields/model/custom_field_value.rb +4 -2
  70. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-groups/edit.xhtml +7 -0
  71. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-groups/form.xhtml +30 -0
  72. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-groups/index.xhtml +100 -0
  73. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-groups/new.xhtml +7 -0
  74. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-fields/edit.xhtml +7 -0
  75. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-fields/form.xhtml +107 -0
  76. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-fields/index.xhtml +84 -0
  77. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-fields/new.xhtml +7 -0
  78. data/lib/zen/{packages → package}/custom_fields/migrations/.gitkeep +0 -0
  79. data/lib/zen/{packages → package}/custom_fields/migrations/1295255665_create_schema.rb +8 -7
  80. data/lib/zen/package/menus/lib/menus.rb +59 -0
  81. data/lib/zen/package/menus/lib/menus/controller/menu_items.rb +244 -0
  82. data/lib/zen/package/menus/lib/menus/controller/menus.rb +231 -0
  83. data/lib/zen/package/menus/lib/menus/helper/menu_item.rb +93 -0
  84. data/lib/zen/package/menus/lib/menus/language/en/menu_items.yml +41 -0
  85. data/lib/zen/package/menus/lib/menus/language/en/menus.yml +39 -0
  86. data/lib/zen/package/menus/lib/menus/liquid/menus.rb +152 -0
  87. data/lib/zen/package/menus/lib/menus/model/menu.rb +38 -0
  88. data/lib/zen/package/menus/lib/menus/model/menu_item.rb +33 -0
  89. data/lib/zen/package/menus/lib/menus/view/admin/menu-items/edit.xhtml +7 -0
  90. data/lib/zen/package/menus/lib/menus/view/admin/menu-items/form.xhtml +64 -0
  91. data/lib/zen/package/menus/lib/menus/view/admin/menu-items/index.xhtml +84 -0
  92. data/lib/zen/package/menus/lib/menus/view/admin/menu-items/new.xhtml +7 -0
  93. data/lib/zen/package/menus/lib/menus/view/admin/menus/edit.xhtml +7 -0
  94. data/lib/zen/package/menus/lib/menus/view/admin/menus/form.xhtml +42 -0
  95. data/lib/zen/package/menus/lib/menus/view/admin/menus/index.xhtml +95 -0
  96. data/lib/zen/package/menus/lib/menus/view/admin/menus/new.xhtml +7 -0
  97. data/lib/zen/{packages/sections → package/menus}/migrations/.gitkeep +0 -0
  98. data/lib/zen/package/menus/migrations/1297184342_create_schema.rb +33 -0
  99. data/lib/zen/{packages → package}/sections/lib/sections.rb +0 -0
  100. data/lib/zen/{packages → package}/sections/lib/sections/controller/section_entries.rb +132 -68
  101. data/lib/zen/{packages → package}/sections/lib/sections/controller/sections.rb +96 -48
  102. data/lib/zen/package/sections/lib/sections/language/en/section_entries.yml +43 -0
  103. data/lib/zen/package/sections/lib/sections/language/en/sections.yml +48 -0
  104. data/lib/zen/{packages → package}/sections/lib/sections/liquid/section_entries.rb +55 -43
  105. data/lib/zen/{packages → package}/sections/lib/sections/liquid/sections.rb +9 -8
  106. data/lib/zen/package/sections/lib/sections/model/section.rb +62 -0
  107. data/lib/zen/package/sections/lib/sections/model/section_entry.rb +53 -0
  108. data/lib/zen/package/sections/lib/sections/view/admin/edit.xhtml +7 -0
  109. data/lib/zen/package/sections/lib/sections/view/admin/form.xhtml +107 -0
  110. data/lib/zen/package/sections/lib/sections/view/admin/index.xhtml +93 -0
  111. data/lib/zen/package/sections/lib/sections/view/admin/new.xhtml +7 -0
  112. data/lib/zen/package/sections/lib/sections/view/admin/section-entries/edit.xhtml +7 -0
  113. data/lib/zen/package/sections/lib/sections/view/admin/section-entries/form.xhtml +233 -0
  114. data/lib/zen/package/sections/lib/sections/view/admin/section-entries/index.xhtml +82 -0
  115. data/lib/zen/package/sections/lib/sections/view/admin/section-entries/new.xhtml +7 -0
  116. data/lib/zen/{packages/settings → package/sections}/migrations/.gitkeep +0 -0
  117. data/lib/zen/{packages → package}/sections/migrations/1295251836_create_schema.rb +6 -6
  118. data/lib/zen/{packages → package}/settings/lib/settings.rb +0 -0
  119. data/lib/zen/{packages → package}/settings/lib/settings/controller/settings.rb +33 -24
  120. data/lib/zen/package/settings/lib/settings/language/en/settings.yml +26 -0
  121. data/lib/zen/{packages → package}/settings/lib/settings/liquid/setting.rb +5 -3
  122. data/lib/zen/package/settings/lib/settings/model/setting.rb +113 -0
  123. data/lib/zen/package/settings/lib/settings/view/admin/settings/index.xhtml +111 -0
  124. data/lib/zen/{packages/users → package/settings}/migrations/.gitkeep +0 -0
  125. data/lib/zen/{packages → package}/settings/migrations/1295597111_create_schema.rb +2 -2
  126. data/lib/zen/package/settings/migrations/1299538742_add_language_key.rb +62 -0
  127. data/lib/zen/{packages → package}/users/lib/users.rb +6 -2
  128. data/lib/zen/package/users/lib/users/controller/access_rules.rb +238 -0
  129. data/lib/zen/package/users/lib/users/controller/user_groups.rb +217 -0
  130. data/lib/zen/{packages → package}/users/lib/users/controller/users.rb +115 -57
  131. data/lib/zen/package/users/lib/users/language/en/access_rules.yml +35 -0
  132. data/lib/zen/package/users/lib/users/language/en/user_groups.yml +31 -0
  133. data/lib/zen/package/users/lib/users/language/en/users.yml +50 -0
  134. data/lib/zen/{packages → package}/users/lib/users/liquid/user.rb +8 -6
  135. data/lib/zen/{packages → package}/users/lib/users/liquid/users.rb +5 -3
  136. data/lib/zen/{packages → package}/users/lib/users/model/access_rule.rb +11 -3
  137. data/lib/zen/{packages → package}/users/lib/users/model/user.rb +5 -1
  138. data/lib/zen/{packages → package}/users/lib/users/model/user_group.rb +6 -3
  139. data/lib/zen/package/users/lib/users/public/admin/js/users/access_rules.js +42 -0
  140. data/lib/zen/package/users/lib/users/view/admin/access-rules/edit.xhtml +7 -0
  141. data/lib/zen/package/users/lib/users/view/admin/access-rules/form.xhtml +108 -0
  142. data/lib/zen/package/users/lib/users/view/admin/access-rules/index.xhtml +93 -0
  143. data/lib/zen/package/users/lib/users/view/admin/access-rules/new.xhtml +7 -0
  144. data/lib/zen/package/users/lib/users/view/admin/user-groups/edit.xhtml +7 -0
  145. data/lib/zen/package/users/lib/users/view/admin/user-groups/form.xhtml +37 -0
  146. data/lib/zen/package/users/lib/users/view/admin/user-groups/index.xhtml +76 -0
  147. data/lib/zen/package/users/lib/users/view/admin/user-groups/new.xhtml +7 -0
  148. data/lib/zen/package/users/lib/users/view/admin/users/edit.xhtml +7 -0
  149. data/lib/zen/package/users/lib/users/view/admin/users/form.xhtml +53 -0
  150. data/lib/zen/package/users/lib/users/view/admin/users/index.xhtml +81 -0
  151. data/lib/zen/package/users/lib/users/view/admin/users/login.xhtml +27 -0
  152. data/lib/zen/package/users/lib/users/view/admin/users/new.xhtml +7 -0
  153. data/{pkg → lib/zen/package/users/migrations}/.gitkeep +0 -0
  154. data/lib/zen/{packages → package}/users/migrations/1295281013_create_schema.rb +2 -2
  155. data/lib/zen/public/admin/css/boilerplate.css +62 -60
  156. data/lib/zen/public/admin/css/buttons.css +46 -0
  157. data/lib/zen/public/admin/css/datepicker.css +163 -0
  158. data/lib/zen/public/admin/css/editor.css +91 -0
  159. data/lib/zen/public/admin/css/forms.css +68 -0
  160. data/lib/zen/public/admin/css/general.css +34 -419
  161. data/lib/zen/public/admin/css/grid.css +26 -26
  162. data/lib/zen/public/admin/css/layout.css +73 -62
  163. data/lib/zen/public/admin/css/modals.css +63 -0
  164. data/lib/zen/public/admin/css/notifications.css +84 -0
  165. data/lib/zen/public/admin/css/tables.css +71 -0
  166. data/lib/zen/public/admin/css/tabs.css +53 -0
  167. data/lib/zen/public/admin/js/mootools/more.js +139 -51
  168. data/lib/zen/public/admin/js/vendor/datepicker/Picker.Attach.js +137 -0
  169. data/lib/zen/public/admin/js/vendor/datepicker/Picker.Date.js +576 -0
  170. data/lib/zen/public/admin/js/vendor/datepicker/Picker.js +291 -0
  171. data/lib/zen/public/admin/js/vendor/datepicker/README.md +325 -0
  172. data/lib/zen/public/admin/js/vendor/datepicker/locale.js +16 -0
  173. data/lib/zen/public/admin/js/zen/editor/base.js +173 -183
  174. data/lib/zen/public/admin/js/zen/editor/drivers/html.js +74 -89
  175. data/lib/zen/public/admin/js/zen/editor/drivers/markdown.js +72 -87
  176. data/lib/zen/public/admin/js/zen/editor/drivers/textile.js +72 -87
  177. data/lib/zen/public/admin/js/zen/init.js +65 -51
  178. data/lib/zen/public/admin/js/zen/modal.js +108 -121
  179. data/lib/zen/public/admin/js/zen/notification.js +163 -165
  180. data/lib/zen/public/admin/js/zen/tabs.js +203 -210
  181. data/lib/zen/task/build.rb +123 -0
  182. data/lib/zen/task/clean.rb +46 -0
  183. data/lib/zen/task/db.rb +120 -0
  184. data/lib/zen/task/package.rb +82 -0
  185. data/lib/zen/task/proto.rb +116 -0
  186. data/{LICENSE → license.txt} +2 -2
  187. data/proto/app/Thorfile +4 -0
  188. data/proto/app/config/middlewares.rb +3 -3
  189. data/proto/app/config/requires.rb +1 -6
  190. data/proto/app/start.rb +5 -10
  191. data/{lib/zen/packages/settings → proto/package}/LICENSE +0 -0
  192. data/{lib/zen/packages/categories → proto/package}/README.textile +0 -0
  193. data/proto/package/lib/package.rb +41 -0
  194. data/proto/{module/lib/module → package/lib/package}/controller/controllers.rb +3 -2
  195. data/proto/{module/lib/module → package/lib/package}/language/en/languages.rb +0 -0
  196. data/proto/{module/lib/module → package/lib/package}/model/model.rb +0 -0
  197. data/proto/{module/lib/module/view/admin → package/lib/package/view/admin/package}/edit.xhtml +0 -0
  198. data/proto/{module/lib/module/view/admin → package/lib/package/view/admin/package}/form.xhtml +0 -0
  199. data/proto/{module/lib/module/view/admin → package/lib/package/view/admin/package}/index.xhtml +0 -0
  200. data/proto/{module/lib/module/view/admin → package/lib/package/view/admin/package}/new.xhtml +0 -0
  201. data/proto/{module → package}/migrations/.gitkeep +0 -0
  202. metadata +199 -280
  203. data/README.textile +0 -42
  204. data/Rakefile +0 -6
  205. data/doc/Categories.html +0 -93
  206. data/doc/Categories/Controllers.html +0 -93
  207. data/doc/Categories/Controllers/Categories.html +0 -995
  208. data/doc/Categories/Controllers/CategoryGroups.html +0 -878
  209. data/doc/Categories/Models.html +0 -97
  210. data/doc/Categories/Models/Category.html +0 -269
  211. data/doc/Categories/Models/CategoryGroup.html +0 -231
  212. data/doc/Comments.html +0 -93
  213. data/doc/Comments/Controllers.html +0 -93
  214. data/doc/Comments/Controllers/Comments.html +0 -797
  215. data/doc/Comments/Controllers/CommentsForm.html +0 -487
  216. data/doc/Comments/Liquid.html +0 -93
  217. data/doc/Comments/Liquid/CommentForm.html +0 -522
  218. data/doc/Comments/Liquid/Comments.html +0 -543
  219. data/doc/Comments/Models.html +0 -95
  220. data/doc/Comments/Models/Comment.html +0 -260
  221. data/doc/CustomFields.html +0 -93
  222. data/doc/CustomFields/Controllers.html +0 -93
  223. data/doc/CustomFields/Controllers/CustomFieldGroups.html +0 -902
  224. data/doc/CustomFields/Controllers/CustomFields.html +0 -974
  225. data/doc/CustomFields/Models.html +0 -97
  226. data/doc/CustomFields/Models/CustomField.html +0 -272
  227. data/doc/CustomFields/Models/CustomFieldGroup.html +0 -259
  228. data/doc/CustomFields/Models/CustomFieldValue.html +0 -154
  229. data/doc/Ramaze.html +0 -93
  230. data/doc/Ramaze/Helper.html +0 -93
  231. data/doc/Ramaze/Helper/ACL.html +0 -531
  232. data/doc/Ramaze/Helper/Asset.html +0 -617
  233. data/doc/Ramaze/Helper/Breadcrumb.html +0 -411
  234. data/doc/Ramaze/Helper/Common.html +0 -738
  235. data/doc/Sections.html +0 -93
  236. data/doc/Sections/Controllers.html +0 -93
  237. data/doc/Sections/Controllers/SectionEntries.html +0 -1100
  238. data/doc/Sections/Controllers/Sections.html +0 -953
  239. data/doc/Sections/Liquid.html +0 -93
  240. data/doc/Sections/Liquid/SectionEntries.html +0 -674
  241. data/doc/Sections/Liquid/Sections.html +0 -494
  242. data/doc/Sections/Models.html +0 -97
  243. data/doc/Sections/Models/Section.html +0 -272
  244. data/doc/Sections/Models/SectionEntry.html +0 -264
  245. data/doc/Sequel.html +0 -91
  246. data/doc/Sequel/Model.html +0 -243
  247. data/doc/Settings.html +0 -93
  248. data/doc/Settings/Controllers.html +0 -91
  249. data/doc/Settings/Controllers/Settings.html +0 -565
  250. data/doc/Settings/Liquid.html +0 -91
  251. data/doc/Settings/Liquid/Setting.html +0 -426
  252. data/doc/Settings/Models.html +0 -95
  253. data/doc/Settings/Models/Setting.html +0 -293
  254. data/doc/Users.html +0 -93
  255. data/doc/Users/Controllers.html +0 -93
  256. data/doc/Users/Controllers/AccessRules.html +0 -904
  257. data/doc/Users/Controllers/UserGroups.html +0 -879
  258. data/doc/Users/Controllers/Users.html +0 -1124
  259. data/doc/Users/Liquid.html +0 -93
  260. data/doc/Users/Liquid/User.html +0 -480
  261. data/doc/Users/Liquid/Users.html +0 -495
  262. data/doc/Users/Models.html +0 -97
  263. data/doc/Users/Models/AccessRule.html +0 -257
  264. data/doc/Users/Models/User.html +0 -649
  265. data/doc/Users/Models/UserGroup.html +0 -267
  266. data/doc/Zen.html +0 -391
  267. data/doc/Zen/Bin.html +0 -113
  268. data/doc/Zen/Bin/Base.html +0 -727
  269. data/doc/Zen/Controllers.html +0 -115
  270. data/doc/Zen/Controllers/AdminController.html +0 -298
  271. data/doc/Zen/Controllers/BaseController.html +0 -272
  272. data/doc/Zen/Controllers/FrontendController.html +0 -164
  273. data/doc/Zen/Controllers/MainController.html +0 -421
  274. data/doc/Zen/Database.html +0 -498
  275. data/doc/Zen/Language.html +0 -660
  276. data/doc/Zen/Liquid.html +0 -117
  277. data/doc/Zen/Liquid/ControllerBehavior.html +0 -448
  278. data/doc/Zen/Liquid/General.html +0 -444
  279. data/doc/Zen/Liquid/Redirect.html +0 -435
  280. data/doc/Zen/Liquid/Strip.html +0 -447
  281. data/doc/Zen/Logger.html +0 -393
  282. data/doc/Zen/Package.html +0 -909
  283. data/doc/_index.html +0 -724
  284. data/doc/class_list.html +0 -36
  285. data/doc/css/common.css +0 -1
  286. data/doc/css/full_list.css +0 -53
  287. data/doc/css/style.css +0 -310
  288. data/doc/file.README.html +0 -86
  289. data/doc/file_list.html +0 -38
  290. data/doc/frames.html +0 -13
  291. data/doc/index.html +0 -86
  292. data/doc/js/app.js +0 -203
  293. data/doc/js/full_list.js +0 -149
  294. data/doc/js/jquery.js +0 -154
  295. data/doc/method_list.html +0 -1139
  296. data/doc/top-level-namespace.html +0 -88
  297. data/lib/zen/language/en/zen_general.rb +0 -21
  298. data/lib/zen/language/en/zen_models.rb +0 -39
  299. data/lib/zen/packages/categories/LICENSE +0 -19
  300. data/lib/zen/packages/categories/lib/categories/controller/categories.rb +0 -202
  301. data/lib/zen/packages/categories/lib/categories/controller/category_groups.rb +0 -173
  302. data/lib/zen/packages/categories/lib/categories/language/en/categories.rb +0 -38
  303. data/lib/zen/packages/categories/lib/categories/language/en/category_groups.rb +0 -37
  304. data/lib/zen/packages/categories/lib/categories/view/admin/categories/edit.xhtml +0 -7
  305. data/lib/zen/packages/categories/lib/categories/view/admin/categories/form.xhtml +0 -36
  306. data/lib/zen/packages/categories/lib/categories/view/admin/categories/index.xhtml +0 -70
  307. data/lib/zen/packages/categories/lib/categories/view/admin/categories/new.xhtml +0 -7
  308. data/lib/zen/packages/categories/lib/categories/view/admin/category_groups/edit.xhtml +0 -7
  309. data/lib/zen/packages/categories/lib/categories/view/admin/category_groups/form.xhtml +0 -18
  310. data/lib/zen/packages/categories/lib/categories/view/admin/category_groups/index.xhtml +0 -72
  311. data/lib/zen/packages/categories/lib/categories/view/admin/category_groups/new.xhtml +0 -7
  312. data/lib/zen/packages/comments/LICENSE +0 -19
  313. data/lib/zen/packages/comments/README.textile +0 -0
  314. data/lib/zen/packages/comments/lib/comments/language/en/comments.rb +0 -52
  315. data/lib/zen/packages/comments/lib/comments/view/admin/comments/edit.xhtml +0 -7
  316. data/lib/zen/packages/comments/lib/comments/view/admin/comments/form.xhtml +0 -31
  317. data/lib/zen/packages/comments/lib/comments/view/admin/comments/index.xhtml +0 -74
  318. data/lib/zen/packages/comments/migrations/1296949631_add_defensio_signature.rb +0 -11
  319. data/lib/zen/packages/custom_fields/LICENSE +0 -19
  320. data/lib/zen/packages/custom_fields/README.textile +0 -0
  321. data/lib/zen/packages/custom_fields/lib/custom_fields/controller/custom_field_groups.rb +0 -179
  322. data/lib/zen/packages/custom_fields/lib/custom_fields/controller/custom_fields.rb +0 -194
  323. data/lib/zen/packages/custom_fields/lib/custom_fields/language/en/custom_field_groups.rb +0 -45
  324. data/lib/zen/packages/custom_fields/lib/custom_fields/language/en/custom_fields.rb +0 -64
  325. data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_field_groups/edit.xhtml +0 -7
  326. data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_field_groups/form.xhtml +0 -18
  327. data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_field_groups/index.xhtml +0 -88
  328. data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_field_groups/new.xhtml +0 -7
  329. data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_fields/edit.xhtml +0 -7
  330. data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_fields/form.xhtml +0 -50
  331. data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_fields/index.xhtml +0 -75
  332. data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_fields/new.xhtml +0 -7
  333. data/lib/zen/packages/sections/LICENSE +0 -19
  334. data/lib/zen/packages/sections/README.textile +0 -43
  335. data/lib/zen/packages/sections/lib/sections/language/en/section_entries.rb +0 -58
  336. data/lib/zen/packages/sections/lib/sections/language/en/sections.rb +0 -63
  337. data/lib/zen/packages/sections/lib/sections/model/section.rb +0 -43
  338. data/lib/zen/packages/sections/lib/sections/model/section_entry.rb +0 -43
  339. data/lib/zen/packages/sections/lib/sections/view/admin/edit.xhtml +0 -7
  340. data/lib/zen/packages/sections/lib/sections/view/admin/form.xhtml +0 -54
  341. data/lib/zen/packages/sections/lib/sections/view/admin/index.xhtml +0 -77
  342. data/lib/zen/packages/sections/lib/sections/view/admin/new.xhtml +0 -7
  343. data/lib/zen/packages/sections/lib/sections/view/admin/section_entries/edit.xhtml +0 -7
  344. data/lib/zen/packages/sections/lib/sections/view/admin/section_entries/form.xhtml +0 -147
  345. data/lib/zen/packages/sections/lib/sections/view/admin/section_entries/index.xhtml +0 -74
  346. data/lib/zen/packages/sections/lib/sections/view/admin/section_entries/new.xhtml +0 -7
  347. data/lib/zen/packages/sections/migrations/1296335671_userdata_section_entries.rb +0 -18
  348. data/lib/zen/packages/sections/migrations/1296936110_drop_comment_antispam.rb +0 -11
  349. data/lib/zen/packages/settings/README.textile +0 -0
  350. data/lib/zen/packages/settings/lib/settings/language/en/settings.rb +0 -56
  351. data/lib/zen/packages/settings/lib/settings/model/setting.rb +0 -38
  352. data/lib/zen/packages/settings/lib/settings/view/admin/settings/index.xhtml +0 -79
  353. data/lib/zen/packages/users/LICENSE +0 -19
  354. data/lib/zen/packages/users/README.textile +0 -0
  355. data/lib/zen/packages/users/lib/users/controller/access_rules.rb +0 -186
  356. data/lib/zen/packages/users/lib/users/controller/user_groups.rb +0 -171
  357. data/lib/zen/packages/users/lib/users/language/en/access_rules.rb +0 -49
  358. data/lib/zen/packages/users/lib/users/language/en/user_groups.rb +0 -42
  359. data/lib/zen/packages/users/lib/users/language/en/users.rb +0 -63
  360. data/lib/zen/packages/users/lib/users/public/admin/js/users/access_rules.js +0 -43
  361. data/lib/zen/packages/users/lib/users/view/admin/access_rules/edit.xhtml +0 -7
  362. data/lib/zen/packages/users/lib/users/view/admin/access_rules/form.xhtml +0 -68
  363. data/lib/zen/packages/users/lib/users/view/admin/access_rules/index.xhtml +0 -85
  364. data/lib/zen/packages/users/lib/users/view/admin/access_rules/new.xhtml +0 -7
  365. data/lib/zen/packages/users/lib/users/view/admin/user_groups/edit.xhtml +0 -7
  366. data/lib/zen/packages/users/lib/users/view/admin/user_groups/form.xhtml +0 -19
  367. data/lib/zen/packages/users/lib/users/view/admin/user_groups/index.xhtml +0 -69
  368. data/lib/zen/packages/users/lib/users/view/admin/user_groups/new.xhtml +0 -7
  369. data/lib/zen/packages/users/lib/users/view/admin/users/edit.xhtml +0 -7
  370. data/lib/zen/packages/users/lib/users/view/admin/users/form.xhtml +0 -25
  371. data/lib/zen/packages/users/lib/users/view/admin/users/index.xhtml +0 -73
  372. data/lib/zen/packages/users/lib/users/view/admin/users/login.xhtml +0 -22
  373. data/lib/zen/packages/users/lib/users/view/admin/users/new.xhtml +0 -7
  374. data/lib/zen/tasks.rb +0 -6
  375. data/proto/app/Rakefile +0 -2
  376. data/proto/module/LICENSE +0 -0
  377. data/proto/module/README.textile +0 -0
  378. data/proto/module/lib/module.rb +0 -15
  379. data/spec/javascript/css/base.css +0 -177
  380. data/spec/javascript/css/style.css +0 -204
  381. data/spec/javascript/css/typography.css +0 -70
  382. data/spec/javascript/editor/index.html +0 -65
  383. data/spec/javascript/images/close.png +0 -0
  384. data/spec/javascript/images/info.png +0 -0
  385. data/spec/javascript/js/editor.js +0 -16
  386. data/spec/javascript/js/modal.js +0 -12
  387. data/spec/javascript/js/namespace.js +0 -2
  388. data/spec/javascript/js/notification.js +0 -43
  389. data/spec/javascript/js/tabs.js +0 -8
  390. data/spec/javascript/modal/index.html +0 -45
  391. data/spec/javascript/notification/index.html +0 -48
  392. data/spec/javascript/tabs/index.html +0 -73
  393. data/spec/javascript/tabs/tab_1.html +0 -1
  394. data/spec/javascript/tabs/tab_2.html +0 -1
  395. data/spec/zen/base/language.rb +0 -31
  396. data/spec/zen/base/logger.rb +0 -34
  397. data/spec/zen/base/package.rb +0 -47
  398. data/spec/zen/config/database.rb +0 -8
  399. data/spec/zen/helper/asset.rb +0 -26
  400. data/spec/zen/helper/breadcrumb.rb +0 -24
  401. data/spec/zen/language/en/general.rb +0 -4
  402. data/spec/zen/language/nl/general.rb +0 -4
  403. data/spec/zen/liquid/general.rb +0 -42
  404. data/spec/zen/logs/.gitkeep +0 -0
  405. data/spec/zen/spec.rb +0 -9
  406. data/spec/zen/spec_database.db +0 -0
  407. data/tasks/bacon.rake +0 -99
  408. data/tasks/build.rake +0 -72
  409. data/tasks/clean.rake +0 -18
  410. data/tasks/db.rake +0 -81
  411. data/tasks/doc.rake +0 -5
  412. data/tasks/extension.rake +0 -65
  413. data/tasks/proto.rake +0 -37
  414. data/tasks/theme.rake +0 -63
@@ -1,4 +1,6 @@
1
+ #:nodoc:
1
2
  module Users
3
+ #:nodoc:
2
4
  module Controllers
3
5
  ##
4
6
  # Controller for managing users. Users in this case are people
@@ -13,18 +15,18 @@ module Users
13
15
  # @since 0.1
14
16
  #
15
17
  class Users < Zen::Controllers::AdminController
16
- map '/admin/users'
17
-
18
- trait :extension_identifier => 'com.zen.users'
19
18
  include ::Users::Models
19
+
20
+ map '/admin/users'
21
+ trait :extension_identifier => 'com.zen.users'
20
22
 
21
23
  before_all do
22
- csrf_protection :save, :delete do
23
- respond(@zen_general_lang.errors[:csrf], 401)
24
+ csrf_protection(:save, :delete) do
25
+ respond(lang('zen_general.errors.csrf'), 403)
24
26
  end
25
27
  end
26
28
 
27
- # Every action should use the admin layout except the "login" method,
29
+ # Every action should use the admin layout except the 'login' method,
28
30
  # that one will use a trimmed down version of the admin layout.
29
31
  layout do |path, format|
30
32
  if path == 'login'
@@ -37,40 +39,51 @@ module Users
37
39
  ##
38
40
  # Load our language packs, set the form URLs and define our page title.
39
41
  #
42
+ # This method loads the following language files:
43
+ #
44
+ # * users
45
+ #
40
46
  # @author Yorick Peterse
41
47
  # @since 0.1
42
48
  #
43
49
  def initialize
44
50
  super
45
51
 
46
- @form_save_url = '/admin/users/save'
47
- @form_delete_url = '/admin/users/delete'
48
- @form_login_url = '/admin/users/login'
49
- @users_lang = Zen::Language.load 'users'
52
+ @form_save_url = Users.r(:save)
53
+ @form_delete_url = Users.r(:delete)
54
+ @form_login_url = Users.r(:login)
55
+
56
+ Zen::Language.load('users')
50
57
 
51
58
  # Set the page title
52
59
  if !action.method.nil?
53
- method = action.method.to_sym
54
-
55
- if @users_lang.titles.key? method
56
- @page_title = @users_lang.titles[method]
57
- end
60
+ method = action.method.to_sym
61
+ @page_title = lang("users.titles.#{method}") rescue nil
58
62
  end
63
+
64
+ @status_hash = {
65
+ 'open' => lang('users.special.status_hash.open'),
66
+ 'closed' => lang('users.special.status_hash.closed')
67
+ }
59
68
  end
60
69
 
61
70
  ##
62
71
  # Show an overview of all users and allow the current user
63
72
  # to manage these users.
64
73
  #
74
+ # This method requires the following permissions:
75
+ #
76
+ # * read
77
+ #
65
78
  # @author Yorick Peterse
66
79
  # @since 0.1
67
80
  #
68
81
  def index
69
82
  if !user_authorized?([:read])
70
- respond(@zen_general_lang.errors[:not_authorized], 403)
83
+ respond(lang('zen_general.errors.not_authorized'), 403)
71
84
  end
72
85
 
73
- set_breadcrumbs @users_lang.titles[:index]
86
+ set_breadcrumbs(lang('users.titles.index'))
74
87
 
75
88
  @users = User.all
76
89
  end
@@ -78,32 +91,54 @@ module Users
78
91
  ##
79
92
  # Edit an existing user based on the ID.
80
93
  #
94
+ # This method requires the following permissions:
95
+ #
96
+ # * read
97
+ # * update
98
+ #
81
99
  # @author Yorick Peterse
100
+ # @param [Integer] id The ID of the user to edit.
82
101
  # @since 0.1
83
102
  #
84
- def edit id
103
+ def edit(id)
85
104
  if !user_authorized?([:read, :update])
86
- respond(@zen_general_lang.errors[:not_authorized], 403)
105
+ respond(lang('zen_general.errors.not_authorized'), 403)
87
106
  end
88
107
 
89
- set_breadcrumbs anchor_to(@users_lang.titles[:index], "admin/users"), @users_lang.titles[:edit]
108
+ set_breadcrumbs(
109
+ anchor_to(lang('users.titles.index'), Users.r(:index)),
110
+ lang('users.titles.edit')
111
+ )
90
112
 
91
- @user = User[id]
113
+ if flash[:form_data]
114
+ @user = flash[:form_data]
115
+ else
116
+ @user = User[id.to_i]
117
+ end
118
+
92
119
  @user_group_pks = UserGroup.pk_hash(:name)
93
120
  end
94
121
 
95
122
  ##
96
123
  # Create a new user.
97
124
  #
125
+ # This method requires the following permissions:
126
+ #
127
+ # * read
128
+ # * create
129
+ #
98
130
  # @author Yorick Peterse
99
131
  # @since 0.1
100
132
  #
101
133
  def new
102
134
  if !user_authorized?([:read, :create])
103
- respond(@zen_general_lang.errors[:not_authorized], 403)
135
+ respond(lang('zen_general.errors.not_authorized'), 403)
104
136
  end
105
137
 
106
- set_breadcrumbs anchor_to(@users_lang.titles[:index], "admin/users"), @users_lang.titles[:new]
138
+ set_breadcrumbs(
139
+ anchor_to(lang('users.titles.index'), Users.r(:index)),
140
+ lang('users.titles.new')
141
+ )
107
142
 
108
143
  @user = User.new
109
144
  @user_group_pks = UserGroup.pk_hash(:name)
@@ -122,10 +157,10 @@ module Users
122
157
  # Update the last time the user logged in
123
158
  User[:email => request.params['email']].update(:last_login => Time.new)
124
159
 
125
- notification :success, @users_lang.titles[:index], @users_lang.success[:login]
126
- redirect "admin"
160
+ notification(:success, lang('users.titles.index'), lang('users.success.login'))
161
+ redirect(::Sections::Controllers::Sections.r(:index))
127
162
  else
128
- notification :error, @users_lang.titles[:index], @users_lang.errors[:login]
163
+ notification(:error, lang('users.titles.index'), lang('users.errors.login'))
129
164
  end
130
165
  end
131
166
  end
@@ -138,30 +173,32 @@ module Users
138
173
  #
139
174
  def logout
140
175
  user_logout
176
+ session.clear
141
177
 
142
- notification :success, @users_lang.titles[:index], @users_lang.success[:logout]
143
- redirect "admin/users/login"
178
+ notification(:success, lang('users.titles.index'), lang('users.success.logout'))
179
+ redirect(Users.r(:login))
144
180
  end
145
181
 
146
182
  ##
147
- # Saves or creates a new user based on the POST data and a field named "id".
183
+ # Saves or creates a new user based on the POST data and a field named 'id'.
184
+ #
185
+ # This method requires the following permissions:
186
+ #
187
+ # * create
188
+ # * update
148
189
  #
149
190
  # @author Yorick Peterse
150
191
  # @since 0.1
151
192
  #
152
193
  def save
153
194
  if !user_authorized?([:update, :create])
154
- respond(@zen_general_lang.errors[:not_authorized], 403)
195
+ respond(lang('zen_general.errors.not_authorized'), 403)
155
196
  end
156
197
 
157
198
  post = request.params.dup
158
199
 
159
- post.each do |key, value|
160
- post.delete(key) if value.empty?
161
- end
162
-
163
- if post["id"] and !post["id"].empty?
164
- @user = User[post["id"]]
200
+ if post['id'] and !post['id'].empty?
201
+ @user = User[post['id']]
165
202
  save_action = :save
166
203
  else
167
204
  @user = User.new
@@ -170,37 +207,43 @@ module Users
170
207
 
171
208
  if !post['new_password'].nil? and !post['new_password'].empty?
172
209
  if post['new_password'] != post['confirm_password']
173
- notification :error, @users_lang.titles[:index], @users_lang.errors[:no_password_match]
210
+ notification(
211
+ :error,
212
+ lang('users.titles.index'),
213
+ lang('users.errors.no_password_match')
214
+ )
215
+
174
216
  redirect_referrer
175
217
  else
176
218
  post['password'] = post['new_password']
177
219
 
178
- post.delete 'new_password'
179
- post.delete 'confirm_password'
220
+ post.delete('new_password')
221
+ post.delete('confirm_password')
180
222
  end
181
223
  end
182
224
 
183
225
  # User group pks have to be integers
184
- if !post["user_group_pks"].nil?
185
- post["user_group_pks"].map! { |value| value.to_i }
226
+ if !post['user_group_pks'].nil?
227
+ post['user_group_pks'].map! { |value| value.to_i }
186
228
  else
187
- post["user_group_pks"] = []
229
+ post['user_group_pks'] = []
188
230
  end
189
231
 
190
- flash_success = @users_lang.success[save_action]
191
- flash_error = @users_lang.errors[save_action]
232
+ flash_success = lang("users.success.#{save_action}")
233
+ flash_error = lang("users.errors.#{save_action}")
192
234
 
193
235
  begin
194
236
  @user.update(post)
195
- notification(:success, @users_lang.titles[:index], flash_success)
237
+ notification(:success, lang('users.titles.index'), flash_success)
196
238
  rescue
197
- notification(:error, @users_lang.titles[:index], flash_error)
239
+ notification(:error, lang('users.titles.index'), flash_error)
198
240
 
241
+ flash[:form_data] = @user
199
242
  flash[:form_errors] = @user.errors
200
243
  end
201
244
 
202
245
  if @user.id
203
- redirect "/admin/users/edit/#{@user.id}"
246
+ redirect(Users.r(:edit, @user.id))
204
247
  else
205
248
  redirect_referrer
206
249
  end
@@ -209,27 +252,42 @@ module Users
209
252
  ##
210
253
  # Delete all specified users.
211
254
  #
255
+ # This method requires the following permissions:
256
+ #
257
+ # * delete
258
+ #
212
259
  # @author Yorick Peterse
213
260
  # @since 0.1
214
261
  #
215
262
  def delete
216
263
  if !user_authorized?([:delete])
217
- respond(@zen_general_lang.errors[:not_authorized], 403)
264
+ respond(lang('zen_general.errors.not_authorized'), 403)
218
265
  end
219
266
 
220
- if !request.params["user_ids"] or request.params["user_ids"].empty?
221
- notification(:error, @users_lang.titles[:index], @users_lang.errors[:no_delete])
267
+ if !request.params['user_ids'] or request.params['user_ids'].empty?
268
+ notification(
269
+ :error,
270
+ lang('users.titles.index'),
271
+ lang('users.errors.no_delete')
272
+ )
273
+
222
274
  redirect_referrer
223
275
  end
224
276
 
225
- request.params["user_ids"].each do |id|
226
- @user = User[id]
227
-
277
+ request.params['user_ids'].each do |id|
228
278
  begin
229
- @user.delete
230
- notification(:success, @users_lang.titles[:index], @users_lang.success[:delete] % id)
279
+ User[id.to_i].destroy
280
+ notification(
281
+ :success,
282
+ lang('users.titles.index'),
283
+ lang('users.success.delete')
284
+ )
231
285
  rescue
232
- notification(:error, @users_lang.titles[:index], @users_lang.errors[:delete] % id)
286
+ notification(
287
+ :error,
288
+ lang('users.titles.index'),
289
+ lang('users.errors.delete') % id
290
+ )
233
291
  end
234
292
  end
235
293
 
@@ -237,4 +295,4 @@ module Users
237
295
  end
238
296
  end
239
297
  end
240
- end
298
+ end
@@ -0,0 +1,35 @@
1
+ ---
2
+ titles:
3
+ index : 'Access Rules'
4
+ edit : 'Edit Access Rule'
5
+ new : 'Add Access Rule'
6
+
7
+ labels:
8
+ id : '#'
9
+ extension : 'Extension'
10
+ rule_applies : 'Rule applies to'
11
+ create : 'Create'
12
+ read : 'Read'
13
+ update : 'Update'
14
+ delete : 'Delete'
15
+ user : 'User'
16
+ user_group : 'User group'
17
+
18
+ messages:
19
+ no_rules: 'No access rules have been added yet.'
20
+
21
+ errors:
22
+ new : 'Failed to create a new access rule.'
23
+ save : 'Failed to save the access rule.'
24
+ delete : 'Failed to delete the access rule with ID #%s.'
25
+ no_delete : 'You have to specify at least one rule to delete.'
26
+
27
+ success:
28
+ new : 'The access rule has been created.'
29
+ save : 'The access rule has been modified.'
30
+ delete : 'The access rule with ID #%s has been deleted.'
31
+
32
+ buttons:
33
+ new : 'New rule'
34
+ delete : 'Delete selected rules'
35
+ save : 'Save rule'
@@ -0,0 +1,31 @@
1
+ ---
2
+ titles:
3
+ index : 'User Groups'
4
+ edit : 'Edit User Group'
5
+ new : 'Add User Group'
6
+
7
+ labels:
8
+ id : '#'
9
+ name : 'Name'
10
+ slug : 'Slug'
11
+ description : 'Description'
12
+ super_group : 'Super group'
13
+
14
+ messages:
15
+ no_groups: 'No user groups have been added yet.'
16
+
17
+ errors:
18
+ new : 'Failed to create a new user group.'
19
+ save : 'Failed to modify the user group.'
20
+ delete : 'Failed to delete the user group with ID #%s.'
21
+ no_delete : 'You have to specify at least one group to delete.'
22
+
23
+ success:
24
+ new : 'The new user group has been created.'
25
+ save : 'The user group has been modified.'
26
+ delete : 'All selected user groups have been deleted.'
27
+
28
+ buttons:
29
+ new : 'New group'
30
+ delete : 'Delete selected groups'
31
+ save : 'Save group'
@@ -0,0 +1,50 @@
1
+ ---
2
+ titles:
3
+ index : 'Users'
4
+ edit : 'Edit User'
5
+ new : 'Add User'
6
+ login : 'Login'
7
+
8
+ labels:
9
+ id : '#'
10
+ email : 'Email'
11
+ name : 'Name'
12
+ website : 'Website'
13
+ password : 'Password'
14
+ new_password : 'New password'
15
+ confirm_password : 'Confirm password'
16
+ status : 'Status'
17
+ created_at : 'Created'
18
+ updated_at : 'Updated'
19
+ last_login : 'Last login'
20
+ user_groups : 'User groups'
21
+
22
+ special:
23
+ status_hash:
24
+ open : 'Open'
25
+ closed : 'Closed'
26
+
27
+ messages:
28
+ no_users : 'No users have been added yet.'
29
+
30
+ errors:
31
+ new : 'Failed to create a new users.'
32
+ save : 'Failed to save the user.'
33
+ delete : 'Failed to delete the user with ID #%s.'
34
+ no_delete : 'You have to specify at least one user to delete.'
35
+ no_password_match : 'The specified passwords did not match.'
36
+ login : 'Failed to log in with the specified details.'
37
+ logout : 'Failed to log out, perhaps you are already logged out.'
38
+
39
+ success:
40
+ new : 'The new user has been created.'
41
+ save : 'The user has been modified.'
42
+ delete : 'All selected users have been deleted.'
43
+ login : 'You have been successfully logged in.'
44
+ logout : 'You have been successfully logged out.'
45
+
46
+ buttons:
47
+ login : 'Login'
48
+ new : 'Add user'
49
+ delete : 'Delete selected users'
50
+ save : 'Save user'
@@ -1,4 +1,6 @@
1
+ #:nodoc:
1
2
  module Users
3
+ #:nodoc:
2
4
  module Liquid
3
5
  ##
4
6
  # Tag that can be used to retrieve details about a single user. When using this
@@ -6,15 +8,15 @@ module Users
6
8
  # will result in multiple WHERE/AND clauses. In order to retrieve a user with
7
9
  # the Email address "me@awesome.com" you'd do the following:
8
10
  #
9
- # bc. {% user email="me@awesome.com" %}
10
- # {{name}}
11
- # {% enduser %}
11
+ # {% user email="me@awesome.com" %}
12
+ # {{name}}
13
+ # {% enduser %}
12
14
  #
13
15
  # If you want to add an extra condition simply do the following:
14
16
  #
15
- # bc. {% user email="me@awesome.com" status="open" %}
16
- # {{name}}
17
- # {% enduser %}
17
+ # {% user email="me@awesome.com" status="open" %}
18
+ # {{name}}
19
+ # {% enduser %}
18
20
  #
19
21
  # Note that this class is a Liquid block, not a tag. This means that you'll have to
20
22
  # specify the closing tag. The reason for this is that there are multiple columns