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,80 @@
1
+ module Users
2
+ module Liquid
3
+ ##
4
+ # Block that can be used to retrieve a number of users and show their details.
5
+ # Basic usage of this tag is as following:
6
+ #
7
+ # bc. {% users limit="10" offset="5" %}
8
+ # {{email}}
9
+ # {% endusers %}
10
+ #
11
+ # Note that this tag will retrieve a list of users, if you want to only retrieve
12
+ # a single user it's best to use the tag "zen_user" defined under Users::Liquid::User.
13
+ #
14
+ # The following keys can be set:
15
+ #
16
+ # * limit
17
+ # * offset
18
+ #
19
+ # @author Yorick Peterse
20
+ # @since 0.1
21
+ #
22
+ class Users < ::Liquid::Block
23
+ include ::Zen::Liquid::General
24
+
25
+ ##
26
+ # Initializes the class, parses the tag and retrieves the users for the specified tag.
27
+ #
28
+ # @author Yorick Peterse
29
+ # @param [String] tag_name The name of the tag that was called.
30
+ # @param [String] arguments All additional arguments passed as a string.
31
+ # @param [String] html The HTML inside the block.
32
+ # @since 0.1
33
+ #
34
+ def initialize tag_name, arguments, markup
35
+ super
36
+
37
+ @arguments = {
38
+ 'limit' => nil,
39
+ 'offset' => nil
40
+ }
41
+
42
+ @arguments = @arguments.merge(parse_key_values(arguments))
43
+ @users = []
44
+ users = ::Users::Models::User.limit(@arguments['limit'], @arguments['offset'])
45
+
46
+ users.each do |u|
47
+ hash = {}
48
+
49
+ u.values.each do |k, v|
50
+ hash[k.to_s] = v
51
+ end
52
+
53
+ @users.push(hash)
54
+ end
55
+ end
56
+
57
+ ##
58
+ # Renders the tag
59
+ #
60
+ # @author Yorick Peterse
61
+ # @param [Object] context The Liquid context for the current tag.
62
+ # @return [Array]
63
+ #
64
+ def render context
65
+ result = []
66
+
67
+ @users.each do |user|
68
+ user.each do |k, v|
69
+ context[k] = v
70
+ end
71
+
72
+ result << render_all(@nodelist, context)
73
+ end
74
+
75
+ result << render_all(@nodelist, context) if result.empty?
76
+ return result
77
+ end
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,29 @@
1
+ module Users
2
+ module Models
3
+ ##
4
+ # Model that represents a single access rule. This model has the following
5
+ # relations:
6
+ #
7
+ # * users (many to one)
8
+ # * user groups (many to one)
9
+ #
10
+ # @author Yorick Peterse
11
+ # @since 0.1
12
+ #
13
+ class AccessRule < Sequel::Model
14
+ many_to_one :user, :class => "Users::Models::User"
15
+ many_to_one :user_group, :class => "Users::Models::UserGroup"
16
+
17
+ ##
18
+ # Validation rules used when creating or updating an access rule.
19
+ #
20
+ # @author Yorick Peterse
21
+ # @since 0.1
22
+ #
23
+ def validate
24
+ validates_presence [:extension, :create_access, :read_access, :update_access, :delete_access]
25
+ validates_type TrueClass, [:create_access, :read_access, :update_access, :delete_access]
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,96 @@
1
+ module Users
2
+ module Models
3
+ ##
4
+ # Model that represents the very important user. This model
5
+ # can be used for both CRUD actions as well as authenticating a user.
6
+ # Passwords are encrypted using Bcrypt using the Ruby Bcrypt gem.
7
+ #
8
+ # This model has the following relations:
9
+ #
10
+ # * user groups (many to many), eager loads all access rules
11
+ # * access rules (one to many)
12
+ #
13
+ # The following plugins are used by this model:
14
+ #
15
+ # * timestamps
16
+ #
17
+ # @author Yorick Peterse
18
+ # @since 0.1
19
+ #
20
+ class User < Sequel::Model
21
+ plugin :timestamps, :create => :created_at, :update => :updated_at
22
+
23
+ many_to_many :user_groups, :class => "Users::Models::UserGroup", :eager => [:access_rules]
24
+ one_to_many :access_rules, :class => "Users::Models::AccessRule"
25
+
26
+ ##
27
+ # Try to authenticate the user based on the specified credentials.
28
+ # If the user credentials were incorrect false will be returned,
29
+ # true otherwise.
30
+ #
31
+ # Note that this method will NOT perform any sanitizing, that should be handled
32
+ # by the controller instead.
33
+ #
34
+ # @author Yorick Peterse
35
+ # @since 0.1
36
+ # @param [Hash] creds The specified credentials
37
+ # @return [Object/Boolean] new instance of the given user.
38
+ #
39
+ def self.authenticate creds
40
+ email = creds['email']
41
+ password = creds['password']
42
+
43
+ if email.nil? or password.nil?
44
+ return false
45
+ end
46
+
47
+ user = self[:email => email]
48
+
49
+ if !user.nil? and user.password == password and user.status == 'open'
50
+ Ramaze::Controller.session[:user] = user
51
+ return user
52
+ else
53
+ return false
54
+ end
55
+ end
56
+
57
+ ##
58
+ # Generates a new hash based on the specified password. Each
59
+ # password is generated with a cost of 15, this makes the login
60
+ # process slower but also more secure.
61
+ #
62
+ # @author Yorick Peterse
63
+ # @since 0.1
64
+ # @param [String] raw_password The raw password
65
+ # @return [Void]
66
+ #
67
+ def password= raw_password
68
+ pwd = BCrypt::Password.create(raw_password, :cost => 10)
69
+ super(pwd)
70
+ end
71
+
72
+ ##
73
+ # Returns the current password
74
+ #
75
+ # @author Yorick Peterse
76
+ # @since 0.1
77
+ # @return [String]
78
+ #
79
+ def password
80
+ BCrypt::Password.new(super)
81
+ end
82
+
83
+ ##
84
+ # Specifies all validation rules
85
+ #
86
+ # @author Yorick Peterse
87
+ # @since 0.1
88
+ #
89
+ def validate
90
+ validates_presence [:email, :name]
91
+ validates_presence :status unless new?
92
+ validates_format(/[a-zA-Z0-9\.\_\%\+\-]+@[a-zA-Z0-9\.\-]+\.[a-zA-Z]{2,4}/, :email)
93
+ end
94
+ end
95
+ end
96
+ end
@@ -0,0 +1,38 @@
1
+ module Users
2
+ module Models
3
+ ##
4
+ # Model that represents a single user group. This model has the following
5
+ # relations:
6
+ #
7
+ # * users (many to many)
8
+ # * access rules (one to many)
9
+ #
10
+ # This model uses the following plugins:
11
+ #
12
+ # * sluggable
13
+ #
14
+ # @author Yorick Peterse
15
+ # @since 0.1
16
+ #
17
+ class UserGroup < Sequel::Model
18
+ many_to_many :users, :class => "Users::Models::User"
19
+ one_to_many :access_rules, :class => "Users::Models::AccessRule"
20
+
21
+ plugin :sluggable , :source => :name, :freeze => false
22
+
23
+ ##
24
+ # Validation rules for each user group used when
25
+ # creating or updating a group.
26
+ #
27
+ # @author Yorick Peterse
28
+ # @since 0.1
29
+ #
30
+ def validate
31
+ validates_presence [:name, :super_group]
32
+ validates_presence :slug unless new?
33
+ validates_unique :slug
34
+ validates_type TrueClass, :super_group
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,43 @@
1
+ window.addEvent('domready', function()
2
+ {
3
+ // Hide the fields that allow a user to pick a user or group
4
+ // for an access rule. Each field (and thus the select element)
5
+ // will be shown when the corresponding radio button is selected.
6
+ var radios = $$('input[name="rule_applies"]');
7
+ var divs = []
8
+
9
+ radios.each(function(radio)
10
+ {
11
+ var value = radio.get('value');
12
+
13
+ if ( value !== "0" )
14
+ {
15
+ value = $(value);
16
+
17
+ if ( radio.get('checked') == false )
18
+ {
19
+ value.setStyle('display', 'none');
20
+ }
21
+
22
+ divs.push(value);
23
+ }
24
+
25
+ radio.addEvent('click', function()
26
+ {
27
+ var radio_value = this.get('value');
28
+
29
+ divs.each(function(div)
30
+ {
31
+ if ( div.get('id') == radio_value )
32
+ {
33
+ div.setStyle('display', 'block');
34
+ }
35
+ else
36
+ {
37
+ div.setStyle('display', 'none');
38
+ }
39
+ });
40
+ });
41
+ });
42
+
43
+ });
@@ -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,68 @@
1
+ #{
2
+ form_for(@access_rule, :method => :post, :action => @form_save_url) do |f|
3
+
4
+ users = {}
5
+ groups = {}
6
+ extensions = {}
7
+ rule_applies = ''
8
+
9
+ if !@access_rule.user_id.nil?
10
+ rule_applies = 'div_user_id'
11
+ else
12
+ rule_applies = 'div_user_group_id'
13
+ end
14
+
15
+ Users::Models::User.select(:id, :name).each do |user|
16
+ users[user.id.to_s] = user.name
17
+ end
18
+
19
+ Zen::Package.extensions.each do |ident, ext|
20
+ extensions[ident] = ext.name
21
+ end
22
+
23
+ Users::Models::UserGroup.select(:id, :name).each do |group|
24
+ groups[group.id.to_s] = group.name
25
+ end
26
+
27
+ # ---------------------
28
+
29
+ f.input_hidden :id, @access_rule.id
30
+ f.input_hidden :csrf_token, get_csrf_token
31
+
32
+ f.input_radio @rules_lang.labels[:rule_applies], :rule_applies, rule_applies,
33
+ :values => @rules_lang.special[:rule_applies_hash]
34
+
35
+ f.g.div :id => 'div_user_id' do
36
+ f.select @rules_lang.labels[:user], :user_id, :values => users,
37
+ :selected => @access_rule.user_id, :size => 1
38
+ end
39
+
40
+ f.g.div :id => 'div_user_group_id' do
41
+ f.select @rules_lang.labels[:user_group], :user_group_id, :values => groups,
42
+ :selected => @access_rule.user_group_id, :size => 1
43
+ end
44
+
45
+ # ---------------------
46
+
47
+ f.select @rules_lang.labels[:extension], :extension, :values => extensions,
48
+ :selected => @access_rule.extension, :size => 1
49
+
50
+ f.input_radio @rules_lang.labels[:create], :create_access, @access_rule.create_access,
51
+ :values => @rules_lang.special[:boolean_hash].invert
52
+
53
+ f.input_radio @rules_lang.labels[:read], :read_access, @access_rule.read_access,
54
+ :values => @rules_lang.special[:boolean_hash].invert
55
+
56
+ f.input_radio @rules_lang.labels[:update], :update_access, @access_rule.update_access,
57
+ :values => @rules_lang.special[:boolean_hash].invert
58
+
59
+ f.input_radio @rules_lang.labels[:delete], :delete_access, @access_rule.delete_access,
60
+ :values => @rules_lang.special[:boolean_hash].invert
61
+
62
+ f.g.div :class => 'clearfix' do
63
+ f.g.div :class => 'button' do
64
+ f.g.input :type => 'submit', :value => @rules_lang.buttons[:save]
65
+ end
66
+ end
67
+ end
68
+ }
@@ -0,0 +1,85 @@
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 @access_rules and !@access_rules.empty? ?>
10
+
11
+ <table class="table">
12
+ <thead>
13
+ <tr>
14
+ <?r if user_authorized?([:delete]) ?>
15
+ <th>
16
+ <input type="checkbox" />
17
+ </th>
18
+ <?r end ?>
19
+
20
+ <th>#{@rules_lang.labels[:id]}</th>
21
+ <th>#{@rules_lang.labels[:extension]}</th>
22
+ <th>#{@rules_lang.labels[:create]}</th>
23
+ <th>#{@rules_lang.labels[:read]}</th>
24
+ <th>#{@rules_lang.labels[:update]}</th>
25
+ <th>#{@rules_lang.labels[:delete]}</th>
26
+ <th>#{@rules_lang.labels[:user]}</th>
27
+ <th>#{@rules_lang.labels[:user_group]}</th>
28
+ </tr>
29
+ </thead>
30
+ <tbody>
31
+ <?r @access_rules.each do |rule| ?>
32
+ <tr>
33
+ <?r if user_authorized?([:delete]) ?>
34
+ <td>
35
+ <input type="checkbox" name="access_rule_ids[]" value="#{rule.id}" />
36
+ </td>
37
+ <?r end ?>
38
+
39
+ <td>#{rule.id}</td>
40
+
41
+ <?r if user_authorized?([:update]) ?>
42
+ <td>#{anchor_to(rule.extension, "admin/access_rules/edit/#{rule.id}")}</td>
43
+ <?r else ?>
44
+ <td>#{rule.extension}</td>
45
+ <?r end ?>
46
+
47
+ <td>#{@rules_lang.special[:boolean_hash][rule.create_access]}</td>
48
+ <td>#{@rules_lang.special[:boolean_hash][rule.read_access]}</td>
49
+ <td>#{@rules_lang.special[:boolean_hash][rule.update_access]}</td>
50
+ <td>#{@rules_lang.special[:boolean_hash][rule.delete_access]}</td>
51
+ <td>
52
+ <?r if !rule.user_id.nil? ?>
53
+ #{rule.user.name}
54
+ <?r end ?>
55
+ </td>
56
+ <td>
57
+ <?r if !rule.user_group_id.nil? ?>
58
+ #{rule.user_group.name}
59
+ <?r end ?>
60
+ </td>
61
+ </tr>
62
+ <?r end ?>
63
+ </tbody>
64
+ </table>
65
+
66
+ <?r else ?>
67
+ <p>#{@rules_lang.messages[:no_rules]}</p>
68
+ <?r end ?>
69
+
70
+ <div class="clearfix">
71
+
72
+ <?r if user_authorized?([:create]) ?>
73
+ <div class="button">
74
+ #{anchor_to(@rules_lang.buttons[:new], "admin/access_rules/new")}
75
+ </div>
76
+ <?r end ?>
77
+
78
+ <?r if user_authorized?([:delete]) and @access_rules and !@access_rules.empty? ?>
79
+ <div class="button">
80
+ <input type="submit" value="#{@rules_lang.buttons[:delete]}" />
81
+ </div>
82
+ <?r end ?>
83
+ </div>
84
+ </form>
85
+ </article>