zen 0.1a

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 (338) hide show
  1. data/LICENSE +19 -0
  2. data/MANIFEST +337 -0
  3. data/README.textile +42 -0
  4. data/Rakefile +6 -0
  5. data/bin/zen +9 -0
  6. data/doc/Categories.html +93 -0
  7. data/doc/Categories/Controllers.html +93 -0
  8. data/doc/Categories/Controllers/Categories.html +995 -0
  9. data/doc/Categories/Controllers/CategoryGroups.html +878 -0
  10. data/doc/Categories/Models.html +97 -0
  11. data/doc/Categories/Models/Category.html +269 -0
  12. data/doc/Categories/Models/CategoryGroup.html +231 -0
  13. data/doc/Comments.html +93 -0
  14. data/doc/Comments/Controllers.html +93 -0
  15. data/doc/Comments/Controllers/Comments.html +797 -0
  16. data/doc/Comments/Controllers/CommentsForm.html +487 -0
  17. data/doc/Comments/Liquid.html +93 -0
  18. data/doc/Comments/Liquid/CommentForm.html +522 -0
  19. data/doc/Comments/Liquid/Comments.html +543 -0
  20. data/doc/Comments/Models.html +95 -0
  21. data/doc/Comments/Models/Comment.html +260 -0
  22. data/doc/CustomFields.html +93 -0
  23. data/doc/CustomFields/Controllers.html +93 -0
  24. data/doc/CustomFields/Controllers/CustomFieldGroups.html +902 -0
  25. data/doc/CustomFields/Controllers/CustomFields.html +974 -0
  26. data/doc/CustomFields/Models.html +97 -0
  27. data/doc/CustomFields/Models/CustomField.html +272 -0
  28. data/doc/CustomFields/Models/CustomFieldGroup.html +259 -0
  29. data/doc/CustomFields/Models/CustomFieldValue.html +154 -0
  30. data/doc/Ramaze.html +93 -0
  31. data/doc/Ramaze/Helper.html +93 -0
  32. data/doc/Ramaze/Helper/ACL.html +531 -0
  33. data/doc/Ramaze/Helper/Asset.html +617 -0
  34. data/doc/Ramaze/Helper/Breadcrumb.html +411 -0
  35. data/doc/Ramaze/Helper/Common.html +738 -0
  36. data/doc/Sections.html +93 -0
  37. data/doc/Sections/Controllers.html +93 -0
  38. data/doc/Sections/Controllers/SectionEntries.html +1100 -0
  39. data/doc/Sections/Controllers/Sections.html +953 -0
  40. data/doc/Sections/Liquid.html +93 -0
  41. data/doc/Sections/Liquid/SectionEntries.html +674 -0
  42. data/doc/Sections/Liquid/Sections.html +494 -0
  43. data/doc/Sections/Models.html +97 -0
  44. data/doc/Sections/Models/Section.html +272 -0
  45. data/doc/Sections/Models/SectionEntry.html +264 -0
  46. data/doc/Sequel.html +91 -0
  47. data/doc/Sequel/Model.html +243 -0
  48. data/doc/Settings.html +93 -0
  49. data/doc/Settings/Controllers.html +91 -0
  50. data/doc/Settings/Controllers/Settings.html +565 -0
  51. data/doc/Settings/Liquid.html +91 -0
  52. data/doc/Settings/Liquid/Setting.html +426 -0
  53. data/doc/Settings/Models.html +95 -0
  54. data/doc/Settings/Models/Setting.html +293 -0
  55. data/doc/Users.html +93 -0
  56. data/doc/Users/Controllers.html +93 -0
  57. data/doc/Users/Controllers/AccessRules.html +904 -0
  58. data/doc/Users/Controllers/UserGroups.html +879 -0
  59. data/doc/Users/Controllers/Users.html +1124 -0
  60. data/doc/Users/Liquid.html +93 -0
  61. data/doc/Users/Liquid/User.html +480 -0
  62. data/doc/Users/Liquid/Users.html +495 -0
  63. data/doc/Users/Models.html +97 -0
  64. data/doc/Users/Models/AccessRule.html +257 -0
  65. data/doc/Users/Models/User.html +649 -0
  66. data/doc/Users/Models/UserGroup.html +267 -0
  67. data/doc/Zen.html +391 -0
  68. data/doc/Zen/Bin.html +113 -0
  69. data/doc/Zen/Bin/Base.html +727 -0
  70. data/doc/Zen/Controllers.html +115 -0
  71. data/doc/Zen/Controllers/AdminController.html +298 -0
  72. data/doc/Zen/Controllers/BaseController.html +272 -0
  73. data/doc/Zen/Controllers/FrontendController.html +164 -0
  74. data/doc/Zen/Controllers/MainController.html +421 -0
  75. data/doc/Zen/Database.html +498 -0
  76. data/doc/Zen/Language.html +660 -0
  77. data/doc/Zen/Liquid.html +117 -0
  78. data/doc/Zen/Liquid/ControllerBehavior.html +448 -0
  79. data/doc/Zen/Liquid/General.html +444 -0
  80. data/doc/Zen/Liquid/Redirect.html +435 -0
  81. data/doc/Zen/Liquid/Strip.html +447 -0
  82. data/doc/Zen/Logger.html +393 -0
  83. data/doc/Zen/Package.html +909 -0
  84. data/doc/_index.html +724 -0
  85. data/doc/class_list.html +36 -0
  86. data/doc/css/common.css +1 -0
  87. data/doc/css/full_list.css +53 -0
  88. data/doc/css/style.css +310 -0
  89. data/doc/file.README.html +86 -0
  90. data/doc/file_list.html +38 -0
  91. data/doc/frames.html +13 -0
  92. data/doc/index.html +86 -0
  93. data/doc/js/app.js +203 -0
  94. data/doc/js/full_list.js +149 -0
  95. data/doc/js/jquery.js +154 -0
  96. data/doc/method_list.html +1139 -0
  97. data/doc/top-level-namespace.html +88 -0
  98. data/lib/zen.rb +77 -0
  99. data/lib/zen/base/database.rb +105 -0
  100. data/lib/zen/base/language.rb +132 -0
  101. data/lib/zen/base/logger.rb +54 -0
  102. data/lib/zen/base/package.rb +233 -0
  103. data/lib/zen/base/version.rb +11 -0
  104. data/lib/zen/bin/zen_binary.rb +173 -0
  105. data/lib/zen/controller/admin_controller.rb +60 -0
  106. data/lib/zen/controller/base_controller.rb +39 -0
  107. data/lib/zen/controller/frontend_controller.rb +16 -0
  108. data/lib/zen/controller/main_controller.rb +93 -0
  109. data/lib/zen/helper/acl.rb +124 -0
  110. data/lib/zen/helper/asset.rb +104 -0
  111. data/lib/zen/helper/breadcrumb.rb +71 -0
  112. data/lib/zen/helper/common.rb +157 -0
  113. data/lib/zen/language/en/zen_general.rb +21 -0
  114. data/lib/zen/language/en/zen_models.rb +39 -0
  115. data/lib/zen/layout/admin.xhtml +72 -0
  116. data/lib/zen/layout/login.xhtml +44 -0
  117. data/lib/zen/liquid/controller_behavior.rb +55 -0
  118. data/lib/zen/liquid/general.rb +69 -0
  119. data/lib/zen/liquid/redirect.rb +47 -0
  120. data/lib/zen/liquid/strip.rb +58 -0
  121. data/lib/zen/model/methods.rb +26 -0
  122. data/lib/zen/model/settings.rb +27 -0
  123. data/lib/zen/packages/categories/LICENSE +19 -0
  124. data/lib/zen/packages/categories/README.textile +0 -0
  125. data/lib/zen/packages/categories/lib/categories.rb +24 -0
  126. data/lib/zen/packages/categories/lib/categories/controller/categories.rb +202 -0
  127. data/lib/zen/packages/categories/lib/categories/controller/category_groups.rb +173 -0
  128. data/lib/zen/packages/categories/lib/categories/language/en/categories.rb +38 -0
  129. data/lib/zen/packages/categories/lib/categories/language/en/category_groups.rb +37 -0
  130. data/lib/zen/packages/categories/lib/categories/model/category.rb +42 -0
  131. data/lib/zen/packages/categories/lib/categories/model/category_group.rb +29 -0
  132. data/lib/zen/packages/categories/lib/categories/view/admin/categories/edit.xhtml +7 -0
  133. data/lib/zen/packages/categories/lib/categories/view/admin/categories/form.xhtml +36 -0
  134. data/lib/zen/packages/categories/lib/categories/view/admin/categories/index.xhtml +70 -0
  135. data/lib/zen/packages/categories/lib/categories/view/admin/categories/new.xhtml +7 -0
  136. data/lib/zen/packages/categories/lib/categories/view/admin/category_groups/edit.xhtml +7 -0
  137. data/lib/zen/packages/categories/lib/categories/view/admin/category_groups/form.xhtml +18 -0
  138. data/lib/zen/packages/categories/lib/categories/view/admin/category_groups/index.xhtml +72 -0
  139. data/lib/zen/packages/categories/lib/categories/view/admin/category_groups/new.xhtml +7 -0
  140. data/lib/zen/packages/categories/migrations/.gitkeep +0 -0
  141. data/lib/zen/packages/categories/migrations/1295282303_create_schema.rb +40 -0
  142. data/lib/zen/packages/comments/LICENSE +19 -0
  143. data/lib/zen/packages/comments/README.textile +0 -0
  144. data/lib/zen/packages/comments/lib/comments.rb +26 -0
  145. data/lib/zen/packages/comments/lib/comments/controller/comments.rb +157 -0
  146. data/lib/zen/packages/comments/lib/comments/controller/comments_form.rb +135 -0
  147. data/lib/zen/packages/comments/lib/comments/language/en/comments.rb +52 -0
  148. data/lib/zen/packages/comments/lib/comments/liquid/comment_form.rb +97 -0
  149. data/lib/zen/packages/comments/lib/comments/liquid/comments.rb +115 -0
  150. data/lib/zen/packages/comments/lib/comments/model/comment.rb +34 -0
  151. data/lib/zen/packages/comments/lib/comments/view/admin/comments/edit.xhtml +7 -0
  152. data/lib/zen/packages/comments/lib/comments/view/admin/comments/form.xhtml +31 -0
  153. data/lib/zen/packages/comments/lib/comments/view/admin/comments/index.xhtml +74 -0
  154. data/lib/zen/packages/comments/migrations/.gitkeep +0 -0
  155. data/lib/zen/packages/comments/migrations/1295282202_create_schema.rb +24 -0
  156. data/lib/zen/packages/comments/migrations/1296949631_add_defensio_signature.rb +11 -0
  157. data/lib/zen/packages/custom_fields/LICENSE +19 -0
  158. data/lib/zen/packages/custom_fields/README.textile +0 -0
  159. data/lib/zen/packages/custom_fields/lib/custom_fields.rb +24 -0
  160. data/lib/zen/packages/custom_fields/lib/custom_fields/controller/custom_field_groups.rb +179 -0
  161. data/lib/zen/packages/custom_fields/lib/custom_fields/controller/custom_fields.rb +194 -0
  162. data/lib/zen/packages/custom_fields/lib/custom_fields/language/en/custom_field_groups.rb +45 -0
  163. data/lib/zen/packages/custom_fields/lib/custom_fields/language/en/custom_fields.rb +64 -0
  164. data/lib/zen/packages/custom_fields/lib/custom_fields/model/custom_field.rb +41 -0
  165. data/lib/zen/packages/custom_fields/lib/custom_fields/model/custom_field_group.rb +32 -0
  166. data/lib/zen/packages/custom_fields/lib/custom_fields/model/custom_field_value.rb +20 -0
  167. data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_field_groups/edit.xhtml +7 -0
  168. data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_field_groups/form.xhtml +18 -0
  169. data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_field_groups/index.xhtml +88 -0
  170. data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_field_groups/new.xhtml +7 -0
  171. data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_fields/edit.xhtml +7 -0
  172. data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_fields/form.xhtml +50 -0
  173. data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_fields/index.xhtml +75 -0
  174. data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_fields/new.xhtml +7 -0
  175. data/lib/zen/packages/custom_fields/migrations/.gitkeep +0 -0
  176. data/lib/zen/packages/custom_fields/migrations/1295255665_create_schema.rb +53 -0
  177. data/lib/zen/packages/sections/LICENSE +19 -0
  178. data/lib/zen/packages/sections/README.textile +43 -0
  179. data/lib/zen/packages/sections/lib/sections.rb +33 -0
  180. data/lib/zen/packages/sections/lib/sections/controller/section_entries.rb +251 -0
  181. data/lib/zen/packages/sections/lib/sections/controller/sections.rb +205 -0
  182. data/lib/zen/packages/sections/lib/sections/language/en/section_entries.rb +58 -0
  183. data/lib/zen/packages/sections/lib/sections/language/en/sections.rb +63 -0
  184. data/lib/zen/packages/sections/lib/sections/liquid/section_entries.rb +209 -0
  185. data/lib/zen/packages/sections/lib/sections/liquid/sections.rb +76 -0
  186. data/lib/zen/packages/sections/lib/sections/model/section.rb +43 -0
  187. data/lib/zen/packages/sections/lib/sections/model/section_entry.rb +43 -0
  188. data/lib/zen/packages/sections/lib/sections/view/admin/edit.xhtml +7 -0
  189. data/lib/zen/packages/sections/lib/sections/view/admin/form.xhtml +54 -0
  190. data/lib/zen/packages/sections/lib/sections/view/admin/index.xhtml +77 -0
  191. data/lib/zen/packages/sections/lib/sections/view/admin/new.xhtml +7 -0
  192. data/lib/zen/packages/sections/lib/sections/view/admin/section_entries/edit.xhtml +7 -0
  193. data/lib/zen/packages/sections/lib/sections/view/admin/section_entries/form.xhtml +147 -0
  194. data/lib/zen/packages/sections/lib/sections/view/admin/section_entries/index.xhtml +74 -0
  195. data/lib/zen/packages/sections/lib/sections/view/admin/section_entries/new.xhtml +7 -0
  196. data/lib/zen/packages/sections/migrations/.gitkeep +0 -0
  197. data/lib/zen/packages/sections/migrations/1295251836_create_schema.rb +35 -0
  198. data/lib/zen/packages/sections/migrations/1296335671_userdata_section_entries.rb +18 -0
  199. data/lib/zen/packages/sections/migrations/1296936110_drop_comment_antispam.rb +11 -0
  200. data/lib/zen/packages/settings/LICENSE +0 -0
  201. data/lib/zen/packages/settings/README.textile +0 -0
  202. data/lib/zen/packages/settings/lib/settings.rb +22 -0
  203. data/lib/zen/packages/settings/lib/settings/controller/settings.rb +113 -0
  204. data/lib/zen/packages/settings/lib/settings/language/en/settings.rb +56 -0
  205. data/lib/zen/packages/settings/lib/settings/liquid/setting.rb +56 -0
  206. data/lib/zen/packages/settings/lib/settings/model/setting.rb +38 -0
  207. data/lib/zen/packages/settings/lib/settings/view/admin/settings/index.xhtml +79 -0
  208. data/lib/zen/packages/settings/migrations/.gitkeep +0 -0
  209. data/lib/zen/packages/settings/migrations/1295597111_create_schema.rb +31 -0
  210. data/lib/zen/packages/users/LICENSE +19 -0
  211. data/lib/zen/packages/users/README.textile +0 -0
  212. data/lib/zen/packages/users/lib/users.rb +35 -0
  213. data/lib/zen/packages/users/lib/users/controller/access_rules.rb +186 -0
  214. data/lib/zen/packages/users/lib/users/controller/user_groups.rb +171 -0
  215. data/lib/zen/packages/users/lib/users/controller/users.rb +240 -0
  216. data/lib/zen/packages/users/lib/users/language/en/access_rules.rb +49 -0
  217. data/lib/zen/packages/users/lib/users/language/en/user_groups.rb +42 -0
  218. data/lib/zen/packages/users/lib/users/language/en/users.rb +63 -0
  219. data/lib/zen/packages/users/lib/users/liquid/user.rb +75 -0
  220. data/lib/zen/packages/users/lib/users/liquid/users.rb +80 -0
  221. data/lib/zen/packages/users/lib/users/model/access_rule.rb +29 -0
  222. data/lib/zen/packages/users/lib/users/model/user.rb +96 -0
  223. data/lib/zen/packages/users/lib/users/model/user_group.rb +38 -0
  224. data/lib/zen/packages/users/lib/users/public/admin/js/users/access_rules.js +43 -0
  225. data/lib/zen/packages/users/lib/users/view/admin/access_rules/edit.xhtml +7 -0
  226. data/lib/zen/packages/users/lib/users/view/admin/access_rules/form.xhtml +68 -0
  227. data/lib/zen/packages/users/lib/users/view/admin/access_rules/index.xhtml +85 -0
  228. data/lib/zen/packages/users/lib/users/view/admin/access_rules/new.xhtml +7 -0
  229. data/lib/zen/packages/users/lib/users/view/admin/user_groups/edit.xhtml +7 -0
  230. data/lib/zen/packages/users/lib/users/view/admin/user_groups/form.xhtml +19 -0
  231. data/lib/zen/packages/users/lib/users/view/admin/user_groups/index.xhtml +69 -0
  232. data/lib/zen/packages/users/lib/users/view/admin/user_groups/new.xhtml +7 -0
  233. data/lib/zen/packages/users/lib/users/view/admin/users/edit.xhtml +7 -0
  234. data/lib/zen/packages/users/lib/users/view/admin/users/form.xhtml +25 -0
  235. data/lib/zen/packages/users/lib/users/view/admin/users/index.xhtml +73 -0
  236. data/lib/zen/packages/users/lib/users/view/admin/users/login.xhtml +22 -0
  237. data/lib/zen/packages/users/lib/users/view/admin/users/new.xhtml +7 -0
  238. data/lib/zen/packages/users/migrations/.gitkeep +0 -0
  239. data/lib/zen/packages/users/migrations/1295281013_create_schema.rb +54 -0
  240. data/lib/zen/public/admin/css/boilerplate.css +174 -0
  241. data/lib/zen/public/admin/css/general.css +485 -0
  242. data/lib/zen/public/admin/css/grid.css +119 -0
  243. data/lib/zen/public/admin/css/layout.css +111 -0
  244. data/lib/zen/public/admin/images/general/noise.jpg +0 -0
  245. data/lib/zen/public/admin/images/icons/accept.png +0 -0
  246. data/lib/zen/public/admin/images/icons/add.png +0 -0
  247. data/lib/zen/public/admin/images/icons/back.png +0 -0
  248. data/lib/zen/public/admin/images/icons/bold.png +0 -0
  249. data/lib/zen/public/admin/images/icons/close.png +0 -0
  250. data/lib/zen/public/admin/images/icons/delete.png +0 -0
  251. data/lib/zen/public/admin/images/icons/edit.png +0 -0
  252. data/lib/zen/public/admin/images/icons/error.png +0 -0
  253. data/lib/zen/public/admin/images/icons/help.png +0 -0
  254. data/lib/zen/public/admin/images/icons/info.png +0 -0
  255. data/lib/zen/public/admin/images/icons/italic.png +0 -0
  256. data/lib/zen/public/admin/images/icons/large/error.png +0 -0
  257. data/lib/zen/public/admin/images/icons/large/notice.png +0 -0
  258. data/lib/zen/public/admin/images/icons/large/success.png +0 -0
  259. data/lib/zen/public/admin/images/icons/link.png +0 -0
  260. data/lib/zen/public/admin/images/icons/logout.png +0 -0
  261. data/lib/zen/public/admin/images/icons/ol.png +0 -0
  262. data/lib/zen/public/admin/images/icons/pdf.png +0 -0
  263. data/lib/zen/public/admin/images/icons/ul.png +0 -0
  264. data/lib/zen/public/admin/images/icons/user.png +0 -0
  265. data/lib/zen/public/admin/images/icons/view.png +0 -0
  266. data/lib/zen/public/admin/js/mootools/core.js +436 -0
  267. data/lib/zen/public/admin/js/mootools/more.js +288 -0
  268. data/lib/zen/public/admin/js/zen/editor/base.js +265 -0
  269. data/lib/zen/public/admin/js/zen/editor/drivers/html.js +104 -0
  270. data/lib/zen/public/admin/js/zen/editor/drivers/markdown.js +102 -0
  271. data/lib/zen/public/admin/js/zen/editor/drivers/textile.js +102 -0
  272. data/lib/zen/public/admin/js/zen/init.js +57 -0
  273. data/lib/zen/public/admin/js/zen/modal.js +159 -0
  274. data/lib/zen/public/admin/js/zen/notification.js +213 -0
  275. data/lib/zen/public/admin/js/zen/tabs.js +263 -0
  276. data/lib/zen/tasks.rb +6 -0
  277. data/pkg/.gitkeep +0 -0
  278. data/proto/app/Rakefile +2 -0
  279. data/proto/app/app.rb +20 -0
  280. data/proto/app/config.ru +18 -0
  281. data/proto/app/config/config.rb +17 -0
  282. data/proto/app/config/database.rb +18 -0
  283. data/proto/app/config/middlewares.rb +23 -0
  284. data/proto/app/config/requires.rb +8 -0
  285. data/proto/app/logs/.gitkeep +0 -0
  286. data/proto/app/public/.gitkeep +0 -0
  287. data/proto/app/start.rb +22 -0
  288. data/proto/app/vendor/.gitkeep +0 -0
  289. data/proto/app/vendor/themes/.gitkeep +0 -0
  290. data/proto/migration.rb +11 -0
  291. data/proto/module/LICENSE +0 -0
  292. data/proto/module/README.textile +0 -0
  293. data/proto/module/lib/module.rb +15 -0
  294. data/proto/module/lib/module/controller/controllers.rb +86 -0
  295. data/proto/module/lib/module/language/en/languages.rb +3 -0
  296. data/proto/module/lib/module/model/model.rb +12 -0
  297. data/proto/module/lib/module/view/admin/edit.xhtml +0 -0
  298. data/proto/module/lib/module/view/admin/form.xhtml +0 -0
  299. data/proto/module/lib/module/view/admin/index.xhtml +0 -0
  300. data/proto/module/lib/module/view/admin/new.xhtml +0 -0
  301. data/proto/module/migrations/.gitkeep +0 -0
  302. data/spec/javascript/css/base.css +177 -0
  303. data/spec/javascript/css/style.css +204 -0
  304. data/spec/javascript/css/typography.css +70 -0
  305. data/spec/javascript/editor/index.html +65 -0
  306. data/spec/javascript/images/close.png +0 -0
  307. data/spec/javascript/images/info.png +0 -0
  308. data/spec/javascript/js/editor.js +16 -0
  309. data/spec/javascript/js/modal.js +12 -0
  310. data/spec/javascript/js/namespace.js +2 -0
  311. data/spec/javascript/js/notification.js +43 -0
  312. data/spec/javascript/js/tabs.js +8 -0
  313. data/spec/javascript/modal/index.html +45 -0
  314. data/spec/javascript/notification/index.html +48 -0
  315. data/spec/javascript/tabs/index.html +73 -0
  316. data/spec/javascript/tabs/tab_1.html +1 -0
  317. data/spec/javascript/tabs/tab_2.html +1 -0
  318. data/spec/zen/base/language.rb +31 -0
  319. data/spec/zen/base/logger.rb +34 -0
  320. data/spec/zen/base/package.rb +47 -0
  321. data/spec/zen/config/database.rb +8 -0
  322. data/spec/zen/helper/asset.rb +26 -0
  323. data/spec/zen/helper/breadcrumb.rb +24 -0
  324. data/spec/zen/language/en/general.rb +4 -0
  325. data/spec/zen/language/nl/general.rb +4 -0
  326. data/spec/zen/liquid/general.rb +42 -0
  327. data/spec/zen/logs/.gitkeep +0 -0
  328. data/spec/zen/spec.rb +9 -0
  329. data/spec/zen/spec_database.db +0 -0
  330. data/tasks/bacon.rake +99 -0
  331. data/tasks/build.rake +72 -0
  332. data/tasks/clean.rake +18 -0
  333. data/tasks/db.rake +81 -0
  334. data/tasks/doc.rake +5 -0
  335. data/tasks/extension.rake +65 -0
  336. data/tasks/proto.rake +37 -0
  337. data/tasks/theme.rake +63 -0
  338. metadata +512 -0
@@ -0,0 +1,79 @@
1
+ <article>
2
+ <header>
3
+ <h1>#{get_breadcrumbs}</h1>
4
+ </header>
5
+
6
+ <div class="tabs">
7
+ <ul>
8
+ <?r @settings.each do |group, items| ?>
9
+ <?r
10
+ if @settings_lang.tabs.key?(group.to_sym)
11
+ group_label = @settings_lang.tabs[group.to_sym]
12
+ else
13
+ group_label = group
14
+ end
15
+ ?>
16
+ <li>
17
+ <a href="#group_#{group}">#{group_label}</a>
18
+ </li>
19
+ <?r end ?>
20
+ </ul>
21
+ </div>
22
+
23
+ #{
24
+ form_for(@settings, :method => :post, :action => @form_save_url) do |f|
25
+ f.input_hidden :csrf_token, get_csrf_token
26
+
27
+ @settings.each do |group, items|
28
+
29
+ f.g.div :id => "group_#{group}" do
30
+ items.each do |s|
31
+ # Get the label from the language pack
32
+ name = s.key.to_sym
33
+
34
+ if @settings_lang.labels.key?(s.key.to_sym)
35
+ label = @settings_lang.labels[s.key.to_sym]
36
+ else
37
+ label = s.key.to_s
38
+ end
39
+
40
+ # Get the value from either the value or default getter
41
+ if s.value.nil?
42
+ value = s.default
43
+ else
44
+ value = s.value
45
+ end
46
+
47
+ # Get all possible values for the current setting from the language pack
48
+ if @settings_lang.values.key?(name)
49
+ values = @settings_lang.values[name]
50
+ else
51
+ values = {}
52
+ end
53
+
54
+ case s.type
55
+ when 'textbox'
56
+ f.input_text label, name, :value => value
57
+ when 'textarea'
58
+ f.textarea label, name, :value => value, :rows => 8
59
+ when 'radio'
60
+ f.input_radio label, name, value, :values => values
61
+ when 'checkbox'
62
+ f.input_checkbox label, name, value, :values => values
63
+ when 'select'
64
+ f.select label, name, :values => values, :size => 1, :selected => value
65
+ end
66
+ end
67
+ end
68
+
69
+ end
70
+
71
+ f.g.div :class => 'clearfix' do
72
+ f.g.div :class => 'button' do
73
+ f.g.input :type => 'submit', :value => @settings_lang.buttons[:save]
74
+ end
75
+ end
76
+ end
77
+ }
78
+
79
+ </article>
@@ -0,0 +1,31 @@
1
+ Sequel.migration do
2
+
3
+ up do
4
+ create_table :settings do
5
+ primary_key :id
6
+
7
+ String :key , :null => false, :unique => true
8
+ String :group_key, :null => false
9
+ String :default , :text => true
10
+ Enum :type , :elements => ['textbox', 'textarea', 'radio', 'checkbox', 'select']
11
+ String :value , :text => true
12
+ end
13
+
14
+ # Insert our default settings
15
+ Zen::Database.handle[:settings].insert_multiple([
16
+ {:key => 'website_name' , :group_key => 'general' , :default => 'Zen', :type => 'textbox'},
17
+ {:key => 'website_description', :group_key => 'general' , :type => 'textarea'},
18
+ {:key => 'website_enabled' , :group_key => 'general' , :default => '1', :type => 'radio'},
19
+ {:key => 'language' , :group_key => 'general' , :default => 'en', :type => 'select'},
20
+ {:key => 'default_section' , :group_key => 'general' , :type => 'select'},
21
+ {:key => 'theme' , :group_key => 'general' , :type => 'select'},
22
+ {:key => 'enable_antispam' , :group_key => 'security', :default => true, :type => 'radio'},
23
+ {:key => 'defensio_key' , :group_key => 'security', :type => 'textbox'}
24
+ ])
25
+ end
26
+
27
+ down do
28
+ drop_table :settings
29
+ end
30
+
31
+ end
@@ -0,0 +1,19 @@
1
+ Copyright (c) 2011, Yorick Peterse
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ of this software and associated documentation files (the "Software"), to deal
5
+ in the Software without restriction, including without limitation the rights
6
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ copies of the Software, and to permit persons to whom the Software is
8
+ furnished to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in
11
+ all copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
+ THE SOFTWARE.
File without changes
@@ -0,0 +1,35 @@
1
+
2
+ require __DIR__('users/model/user')
3
+ require __DIR__('users/model/user_group')
4
+ require __DIR__('users/model/access_rule')
5
+
6
+ require __DIR__('users/controller/users')
7
+ require __DIR__('users/controller/user_groups')
8
+ require __DIR__('users/controller/access_rules')
9
+
10
+ require __DIR__('users/liquid/users')
11
+ require __DIR__('users/liquid/user')
12
+
13
+ Liquid::Template.register_tag('users', Users::Liquid::Users)
14
+ Liquid::Template.register_tag('user' , Users::Liquid::User)
15
+
16
+ Zen::Package.add do |p|
17
+ p.type = 'extension'
18
+ p.name = 'Users'
19
+ p.author = 'Yorick Peterse'
20
+ p.url = 'http://yorickpeterse.com/'
21
+ p.version = '1.0'
22
+ p.about = "Module for managing users along with handling authentication and authorization."
23
+
24
+ p.identifier = 'com.zen.users'
25
+ p.directory = __DIR__('users')
26
+
27
+ p.menu = [{
28
+ :title => "Users",
29
+ :url => "admin/users",
30
+ :children => [
31
+ {:title => "User Groups" , :url => "admin/user_groups"},
32
+ {:title => "Access Rules", :url => "admin/access_rules"}
33
+ ]
34
+ }]
35
+ end
@@ -0,0 +1,186 @@
1
+ module Users
2
+ module Controllers
3
+ ##
4
+ # Controller for managing access rules. Each access rule can be used
5
+ # to specify whether or not a user can edit or create something.
6
+ #
7
+ # The following permissions are available:
8
+ #
9
+ # * create
10
+ # * read
11
+ # * update
12
+ # * delete
13
+ #
14
+ # @author Yorick Peterse
15
+ # @since 0.1
16
+ #
17
+ class AccessRules < Zen::Controllers::AdminController
18
+ map '/admin/access_rules'
19
+
20
+ trait :extension_identifier => 'com.zen.users'
21
+ include ::Users::Models
22
+
23
+ before_all do
24
+ csrf_protection :save, :delete do
25
+ respond(@zen_general_lang.errors[:csrf], 401)
26
+ end
27
+ end
28
+
29
+ ##
30
+ # Load our language packs, set the form URLs and define our page title.
31
+ #
32
+ # @author Yorick Peterse
33
+ # @since 0.1
34
+ #
35
+ def initialize
36
+ super
37
+
38
+ @form_save_url = '/admin/access_rules/save'
39
+ @form_delete_url = '/admin/access_rules/delete'
40
+ @rules_lang = Zen::Language.load 'access_rules'
41
+
42
+ # Set the page title
43
+ if !action.method.nil?
44
+ method = action.method.to_sym
45
+
46
+ if @rules_lang.titles.key? method
47
+ @page_title = @rules_lang.titles[method]
48
+ end
49
+ end
50
+
51
+ require_js 'users/access_rules'
52
+ end
53
+
54
+ ##
55
+ # Show an overview of all access rules and allow the current user
56
+ # to manage these groups.
57
+ #
58
+ # @author Yorick Peterse
59
+ # @since 0.1
60
+ #
61
+ def index
62
+ if !user_authorized?([:read])
63
+ respond(@zen_general_lang.errors[:not_authorized], 403)
64
+ end
65
+
66
+ set_breadcrumbs @rules_lang.titles[:index]
67
+
68
+ @access_rules = AccessRule.all
69
+ end
70
+
71
+ ##
72
+ # Edit an existing access rule.
73
+ #
74
+ # @author Yorick Peterse
75
+ # @since 0.1
76
+ #
77
+ def edit id
78
+ if !user_authorized?([:read, :update])
79
+ respond(@zen_general_lang.errors[:not_authorized], 403)
80
+ end
81
+
82
+ set_breadcrumbs anchor_to(@rules_lang.titles[:index], "admin/access_rules"), @rules_lang.titles[:edit]
83
+
84
+ @access_rule = AccessRule[id]
85
+ end
86
+
87
+ ##
88
+ # Create a new access rule.
89
+ #
90
+ # @author Yorick Peterse
91
+ # @since 0.1
92
+ #
93
+ def new
94
+ if !user_authorized?([:read, :create])
95
+ respond(@zen_general_lang.errors[:not_authorized], 403)
96
+ end
97
+
98
+ set_breadcrumbs anchor_to(@rules_lang.titles[:index], "admin/access_rules"), @rules_lang.titles[:new]
99
+
100
+ @access_rule = AccessRule.new
101
+ end
102
+
103
+ ##
104
+ # Saves or creates a new access rule based on the POST data and a field named "id".
105
+ #
106
+ # @author Yorick Peterse
107
+ # @since 0.1
108
+ #
109
+ def save
110
+ if !user_authorized?([:create, :update])
111
+ respond(@zen_general_lang.errors[:not_authorized], 403)
112
+ end
113
+
114
+ post = request.params.dup
115
+
116
+ post.each do |key, value|
117
+ post.delete(key) if value.empty?
118
+ end
119
+
120
+ if post['rule_applies'] == 'div_user_id'
121
+ post['user_group_id'] = nil
122
+ else
123
+ post['user_id'] = nil
124
+ end
125
+
126
+ post.delete('rule_applies')
127
+
128
+ if post["id"] and !post["id"].empty?
129
+ @access_rule = AccessRule[post["id"]]
130
+ save_action = :save
131
+ else
132
+ @access_rule = AccessRule.new
133
+ save_action = :new
134
+ end
135
+
136
+ flash_success = @rules_lang.success[save_action]
137
+ flash_error = @rules_lang.errors[save_action]
138
+
139
+ begin
140
+ @access_rule.update(post)
141
+ notification(:success, @rules_lang.titles[:index], flash_success)
142
+ rescue
143
+ notification(:error, @rules_lang.titles[:index], flash_error)
144
+
145
+ flash[:form_errors] = @access_rule.errors
146
+ end
147
+
148
+ if @access_rule.id
149
+ redirect "/admin/access_rules/edit/#{@access_rule.id}"
150
+ else
151
+ redirect_referrer
152
+ end
153
+ end
154
+
155
+ ##
156
+ # Delete all specified access rules.
157
+ #
158
+ # @author Yorick Peterse
159
+ # @since 0.1
160
+ #
161
+ def delete
162
+ if !user_authorized?([:delete])
163
+ respond(@zen_general_lang.errors[:not_authorized], 403)
164
+ end
165
+
166
+ if !request.params["access_rule_ids"] or request.params["access_rule_ids"].empty?
167
+ notification(:error, @rules_lang.titles[:index], @rules_lang.errors[:no_delete])
168
+ redirect_referrer
169
+ end
170
+
171
+ request.params["access_rule_ids"].each do |id|
172
+ @access_rule = AccessRule[id]
173
+
174
+ begin
175
+ @access_rule.delete
176
+ notification(:success, @rules_lang.titles[:index], @rules_lang.success[:delete] % id)
177
+ rescue
178
+ notification(:error, @rules_lang.titles[:index], @rules_lang.errors[:delete] % id)
179
+ end
180
+ end
181
+
182
+ redirect_referrer
183
+ end
184
+ end
185
+ end
186
+ end
@@ -0,0 +1,171 @@
1
+ module Users
2
+ module Controllers
3
+ ##
4
+ # Controller for managing all user groups. It's not
5
+ # required to add a user to a group but it can certainly
6
+ # make it easier when adding custom permissions or
7
+ # granting a user full access to the backend.
8
+ #
9
+ # @author Yorick Peterse
10
+ # @since 0.1
11
+ #
12
+ class UserGroups < Zen::Controllers::AdminController
13
+ map '/admin/user_groups'
14
+
15
+ trait :extension_identifier => 'com.zen.users'
16
+ include ::Users::Models
17
+
18
+ before_all do
19
+ csrf_protection :save, :delete do
20
+ respond(@zen_general_lang.errors[:csrf], 401)
21
+ end
22
+ end
23
+
24
+ ##
25
+ # Load our language packs, set the form URLs and define our page title.
26
+ #
27
+ # @author Yorick Peterse
28
+ # @since 0.1
29
+ #
30
+ def initialize
31
+ super
32
+
33
+ @form_save_url = '/admin/user_groups/save'
34
+ @form_delete_url = '/admin/user_groups/delete'
35
+ @groups_lang = Zen::Language.load 'user_groups'
36
+
37
+ # Set the page title
38
+ if !action.method.nil?
39
+ method = action.method.to_sym
40
+
41
+ if @groups_lang.titles.key? method
42
+ @page_title = @groups_lang.titles[method]
43
+ end
44
+ end
45
+ end
46
+
47
+ ##
48
+ # Show an overview of all user groups and allow the current user
49
+ # to manage these groups
50
+ #
51
+ # @author Yorick Peterse
52
+ # @since 0.1
53
+ #
54
+ def index
55
+ if !user_authorized?([:read])
56
+ respond(@zen_general_lang.errors[:not_authorized], 403)
57
+ end
58
+
59
+ set_breadcrumbs @groups_lang.titles[:index]
60
+
61
+ @user_groups = UserGroup.all
62
+ end
63
+
64
+ ##
65
+ # Edit an existing user group
66
+ #
67
+ # @author Yorick Peterse
68
+ # @since 0.1
69
+ #
70
+ def edit id
71
+ if !user_authorized?([:read, :update])
72
+ respond(@zen_general_lang.errors[:not_authorized], 403)
73
+ end
74
+
75
+ set_breadcrumbs anchor_to(@groups_lang.titles[:index], "admin/user_groups"), @groups_lang.titles[:edit]
76
+
77
+ @user_group = UserGroup[id]
78
+ end
79
+
80
+ ##
81
+ # Create a new user group
82
+ #
83
+ # @author Yorick Peterse
84
+ # @since 0.1
85
+ #
86
+ def new
87
+ if !user_authorized?([:read, :create])
88
+ respond(@zen_general_lang.errors[:not_authorized], 403)
89
+ end
90
+
91
+ set_breadcrumbs anchor_to(@groups_lang.titles[:index], "admin/user_groups"), @groups_lang.titles[:new]
92
+
93
+ @user_group = UserGroup.new
94
+ end
95
+
96
+ ##
97
+ # Saves or creates a new user group based on the POST data and a field named "id".
98
+ #
99
+ # @author Yorick Peterse
100
+ # @since 0.1
101
+ #
102
+ def save
103
+ if !user_authorized?([:create, :update])
104
+ respond(@zen_general_lang.errors[:not_authorized], 403)
105
+ end
106
+
107
+ post = request.params.dup
108
+
109
+ post.each do |key, value|
110
+ post.delete(key) if value.empty?
111
+ end
112
+
113
+ if post["id"] and !post["id"].empty?
114
+ @user_group = UserGroup[post["id"]]
115
+ save_action = :save
116
+ else
117
+ @user_group = UserGroup.new
118
+ save_action = :new
119
+ end
120
+
121
+ flash_success = @groups_lang.success[save_action]
122
+ flash_error = @groups_lang.errors[save_action]
123
+
124
+ begin
125
+ @user_group.update(post)
126
+ notification(:success, @groups_lang.titles[:index], flash_success)
127
+ rescue
128
+ notification(:error, @groups_lang.titles[:index], flash_error)
129
+
130
+ flash[:form_errors] = @user.errors
131
+ end
132
+
133
+ if @user_group.id
134
+ redirect "/admin/user_groups/edit/#{@user_group.id}"
135
+ else
136
+ redirect_referrer
137
+ end
138
+ end
139
+
140
+ ##
141
+ # Delete all specified user groups.
142
+ #
143
+ # @author Yorick Peterse
144
+ # @since 0.1
145
+ #
146
+ def delete
147
+ if !user_authorized?([:delete])
148
+ respond(@zen_general_lang.errors[:not_authorized], 403)
149
+ end
150
+
151
+ if !request.params["user_group_ids"] or request.params["user_group_ids"].empty?
152
+ notification(:error, @groups_lang.titles[:index], @groups_lang.errors[:no_delete])
153
+ redirect_referrer
154
+ end
155
+
156
+ request.params["user_group_ids"].each do |id|
157
+ @user_group = UserGroup[id]
158
+
159
+ begin
160
+ @user_group.delete
161
+ notification(:success, @groups_lang.titles[:index], @groups_lang.success[:delete] % id)
162
+ rescue
163
+ notification(:error, @groups_lang.titles[:index], @groups_lang.errors[:delete] % id)
164
+ end
165
+ end
166
+
167
+ redirect_referrer
168
+ end
169
+ end
170
+ end
171
+ end