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,39 @@
1
+ module Zen
2
+ module Controllers
3
+ ##
4
+ # The BaseController is extended by both the FrontendController and the BackendController.
5
+ # This controller is mostly used to set and retrieve data that's used in both the
6
+ # backend and the frontend.
7
+ #
8
+ # @author Yorick Peterse
9
+ # @since 0.1
10
+ #
11
+ class BaseController < Ramaze::Controller
12
+ helper :csrf, :cgi
13
+
14
+ ##
15
+ # The initialize method is called upon class initalization and is used to process several
16
+ # items before loading the controller(s) for the current module.
17
+ #
18
+ # @author Yorick Peterse
19
+ # @since 1.0
20
+ #
21
+ def initialize
22
+ super
23
+
24
+ # The trait for the User helper has to be specified in the constructor as
25
+ # our user model is loaded after this class is loaded (but before it's initialized)
26
+ self.trait :user_model => ::Users::Models::User
27
+
28
+ # Get all settings
29
+ if !session[:settings]
30
+ session[:settings] = ::Settings::Models::Setting.get_settings
31
+ end
32
+
33
+ # Override the language
34
+ Zen.options.language = session[:settings][:language]
35
+ @zen_general_lang = Zen::Language.load('zen_general')
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,16 @@
1
+ module Zen
2
+ module Controllers
3
+ ##
4
+ # Controller that should be extended by other controllers that can be accessed from
5
+ # the web without having to log in. Frontend controllers don't have a layout and
6
+ # use the Liquid template engine for all views.
7
+ #
8
+ # @author Yorick Peterse
9
+ # @since 0.1
10
+ #
11
+ class FrontendController < Zen::Controllers::BaseController
12
+ engine :liquid
13
+ layout :none
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,93 @@
1
+ module Zen
2
+ module Controllers
3
+ ##
4
+ # The MainController controller is used to load the correct template files based
5
+ # on the current URI. If no section is specified the default section will be retrieved
6
+ # from the settings table.
7
+ #
8
+ # @author Yorick Peterse
9
+ # @since 0.1
10
+ #
11
+ class MainController < Zen::Controllers::FrontendController
12
+ map '/'
13
+
14
+ ##
15
+ # The index method acts as a catch-all method. Based on the requested URI
16
+ # the correct template group/file will be loaded. If no templates are found
17
+ # a 404 template will be loaded. If that's not found either a default error
18
+ # will be shown. If the website is offline we'll try to load the template
19
+ # "offline", if it isn't there a regular message will be displayed.
20
+ #
21
+ # @author Yorick Peterse
22
+ # @since 0.1
23
+ # @param [Array] uri Array containing all arguments (thus the URI).
24
+ #
25
+ def index(*uri)
26
+ settings = session[:settings]
27
+ @uri = []
28
+
29
+ # Clean the URI of nasty input
30
+ uri.each { |v| @uri.push(h(v)) }
31
+
32
+ if !@uri[0] or @uri[0].empty?
33
+ @uri[0] = settings[:default_section]
34
+ end
35
+
36
+ if !@uri[1] or @uri[1].empty?
37
+ @uri[1] = 'index'
38
+ end
39
+
40
+ # A theme is always required
41
+ if settings[:theme].nil?
42
+ respond(@zen_general_lang.errors[:no_theme])
43
+ end
44
+
45
+ theme = ::Zen::Package[settings[:theme]]
46
+ group = @uri[0]
47
+ template = @uri[1]
48
+
49
+ # Pre-create a few Liquid variables
50
+ @flash = {}
51
+ @current_user = {}
52
+ flash.each { |k, v| @flash[k.to_s] = v }
53
+
54
+ if !session[:user].nil?
55
+ session[:user].values.each { |k, v| @current_user[k.to_s] = v }
56
+ end
57
+
58
+ # Create the group, template and partial paths
59
+ theme_path = theme.directory + '/templates'
60
+ group_path = theme_path + "/#{group}"
61
+ template_path = theme_path + "/#{group}/#{template}.liquid"
62
+
63
+ # Register our partial path
64
+ partial_path = theme_path + "/partials"
65
+ ::Liquid::Template.file_system = ::Liquid::LocalFileSystem.new(partial_path)
66
+
67
+ # Is the website down?
68
+ if settings[:website_enabled] == '0'
69
+ offline_path = theme_path + "/offline.liquid"
70
+
71
+ if File.exist?(offline_path)
72
+ render_file offline_path
73
+ else
74
+ respond(@zen_general_lang.errors[:website_offline])
75
+ end
76
+ else
77
+ # Check if the group exists
78
+ if File.directory?(group_path) and File.exists?(template_path)
79
+ render_file template_path
80
+ else
81
+ not_found = theme_path + "/404.liquid"
82
+
83
+ if File.exist?(not_found)
84
+ render_file not_found
85
+ else
86
+ respond(@zen_general_lang.errors[:no_templates], 404)
87
+ end
88
+ end
89
+ end
90
+ end
91
+ end
92
+ end
93
+ end
@@ -0,0 +1,124 @@
1
+ module Ramaze
2
+ module Helper
3
+ ##
4
+ # This helper provides an easy way of working with the ACL system that
5
+ # ships with Zen. Using this helper you can restrict access to methods,
6
+ # view elements and pretty much everything else based on the user's
7
+ # permissions.
8
+ #
9
+ # In order to use the ACL helper you'll need to define a trait named
10
+ # "extension_identifier" in your classes. Once this trait have been set you
11
+ # can use the "user_authorized?" method to verify the permissions of the current user.
12
+ # The first parameter is an array of required permissions,
13
+ # the second a boolean that indicates if either all or just a single permission must be set.
14
+ #
15
+ # For more information about the ACL system you should read the documentation
16
+ # in the ACL controller, Users::Controllers::AccessRules().
17
+ #
18
+ # @author Yorick Peterse
19
+ # @since 0.1
20
+ # @see Users::Controllers::AccessRules()
21
+ #
22
+ module ACL
23
+ ##
24
+ # Retrieves all permissions for the current user
25
+ # along with the permissions set for all groups the user
26
+ # belongs to. Rather than loading a new instance of the User model
27
+ # we'll retrieve the model from the session variable set by the
28
+ # User helper provided by Ramaze. Doing this saves us a few queries.
29
+ #
30
+ # @author Yorick Peterse
31
+ # @since 0.1
32
+ # @return [Mixed] returns a hash containing all rules per identifier along
33
+ # with a boolean that indicates if the user is in a super group.
34
+ #
35
+ def extension_permissions
36
+ m = session[:user]
37
+ user_groups = m.user_groups
38
+ super_group = false
39
+ rules = []
40
+ ordered_rules = {}
41
+
42
+ user_groups.each do |group|
43
+ rules += group.access_rules
44
+
45
+ if group.super_group == true
46
+ super_group = true
47
+ end
48
+ end
49
+
50
+ m.access_rules.each do |rule|
51
+ rules.push(rule)
52
+ end
53
+
54
+ rules.each do |rule|
55
+ if !ordered_rules.key?(rule.extension)
56
+ ordered_rules[rule.extension] = []
57
+ end
58
+
59
+ [:create_access, :read_access, :update_access, :delete_access].each do |perm|
60
+ if rule.send(perm) === true or super_group == true
61
+ perm = perm.to_s.gsub!('_access', '').to_sym
62
+
63
+ if !ordered_rules[rule.extension].include?(perm)
64
+ ordered_rules[rule.extension].push(perm)
65
+ end
66
+ end
67
+ end
68
+ end
69
+
70
+ return ordered_rules, super_group
71
+ end
72
+
73
+ ##
74
+ # Checks if the user has the specified permissions for the current
75
+ # extension that was called. Returns true if this is the case and false
76
+ # otherwise.
77
+ #
78
+ # @author Yorick Peterse
79
+ # @param [Array] reqs Array of permissions that are required.
80
+ # @param [Boolean] require_all Boolean that specifies that the user
81
+ # should have ALL specified permissios. Setting this to false causes
82
+ # this method to return true if any of the permissions are set for the
83
+ # current user.
84
+ # @return [Boolean]
85
+ #
86
+ def user_authorized?(reqs, require_all = true)
87
+ identifier = ancestral_trait.values_at(:extension_identifier)
88
+ identifier = identifier[0]
89
+
90
+ if identifier.nil?
91
+ raise "You need to specify an extension identifier"
92
+ end
93
+
94
+ # Get the ACL list
95
+ rules = self.extension_permissions
96
+ super_group = rules[1]
97
+ rules = rules[0]
98
+
99
+ # Super groups have full access
100
+ if super_group == true
101
+ return true
102
+ end
103
+
104
+ # Deny access if the identifier is not found
105
+ if !rules.key?(identifier)
106
+ return false
107
+ end
108
+
109
+ # Verify the permissions
110
+ perms = rules[identifier]
111
+
112
+ reqs.each do |req|
113
+ if require_all == false and perms.include?(req)
114
+ return true
115
+ elsif !perms.include?(req)
116
+ return false
117
+ end
118
+ end
119
+
120
+ return true
121
+ end
122
+ end
123
+ end
124
+ end
@@ -0,0 +1,104 @@
1
+ require 'ramaze/gestalt'
2
+
3
+ module Ramaze
4
+ module Helper
5
+ ##
6
+ # The Asset helper can be used to load Javascript and CSS files without
7
+ # having to embedd them in your views. In order to tell the helper that
8
+ # a CSS or Javascript file has to be loaded you'll have to call the
9
+ # require_* method. For example, if we want to require a CSS file named
10
+ # "reset" we'd do the following:
11
+ #
12
+ # bc. register_css :reset
13
+ #
14
+ # Once you have your files required you can build the HTML by either calling
15
+ # build_css or build_js.
16
+ #
17
+ # @author Yorick Peterse
18
+ # @since 0.1
19
+ # @todo Add support for compressing Javascript and CSS files.
20
+ #
21
+ module Asset
22
+ @css = []
23
+ @js = []
24
+
25
+ ##
26
+ # Requires a new CSS file.
27
+ #
28
+ # @author Yorick Peterse
29
+ # @param [Symbol] files Paths to the CSS files to require.
30
+ # @since 0.1
31
+ #
32
+ def require_css *files
33
+ if @css.nil?
34
+ @css = []
35
+ end
36
+
37
+ files.each do |file|
38
+ file = file.to_sym
39
+
40
+ if !@css.include?(file)
41
+ @css.push(file)
42
+ end
43
+ end
44
+ end
45
+
46
+ ##
47
+ # Requires a new Javascript file.
48
+ #
49
+ # @author Yorick Peterse
50
+ # @param [Symbol] files Paths to the Javascript files to require.
51
+ # @since 0.1
52
+ #
53
+ def require_js *files
54
+ if @js.nil?
55
+ @js = []
56
+ end
57
+
58
+ files.each do |file|
59
+ file = file.to_sym
60
+
61
+ if !@js.include?(file)
62
+ @js.push(file)
63
+ end
64
+ end
65
+ end
66
+
67
+ ##
68
+ # Builds the HTML for all CSS tags using Gestalt.
69
+ #
70
+ # @author Yorick Peterse
71
+ # @since 0.1
72
+ # @return [String]
73
+ #
74
+ def build_css
75
+ g = Ramaze::Gestalt.new
76
+
77
+ @css.each do |css|
78
+ css = "/admin/css/#{css}.css"
79
+ g.link :rel => "stylesheet", :href => css, :media => "all", :type => "text/css"
80
+ end
81
+
82
+ return g.to_s
83
+ end
84
+
85
+ ##
86
+ # Builds the HTML for all Javascript tags using Gestalt.
87
+ #
88
+ # @author Yorick Peterse
89
+ # @since 0.1
90
+ # @return [String]
91
+ #
92
+ def build_js
93
+ g = Ramaze::Gestalt.new
94
+
95
+ @js.each do |js|
96
+ js = "/admin/js/#{js}.js"
97
+ g.script(:src => js) {}
98
+ end
99
+
100
+ return g.to_s
101
+ end
102
+ end
103
+ end
104
+ end
@@ -0,0 +1,71 @@
1
+ module Ramaze
2
+ module Helper
3
+ ##
4
+ # Helper that can be used to quickly generate breadcrumbs without having
5
+ # to manually write the HTML separators and formatting the output correctly.
6
+ # In order to create a set of breadcrumbs we first need to call the set_breadcrumbs
7
+ # method:
8
+ #
9
+ # bc. set_breadcrumbs segment1, segment2, segment3, etc
10
+ #
11
+ # Each argument will be a segment of the breadcrumbs, separated by a custom character.
12
+ # Retrieving the breadcrumbs is super easy:
13
+ #
14
+ # bc. get_breadcrumbs
15
+ #
16
+ # This will generate the correct HTML and return it, all you have to do is output it.
17
+ #
18
+ # @author Yorick Peterse
19
+ # @since 0.1
20
+ #
21
+ module Breadcrumb
22
+ @breadcrumbs = []
23
+
24
+ ##
25
+ # Appends each element to the list of breadcrumb segments.
26
+ #
27
+ # @example
28
+ # set_breadcrumbs "Articles", "Edit"
29
+ #
30
+ # Note that you'll have to manually specify anchor tags, this method won't automatically
31
+ # generate URLs.
32
+ #
33
+ # @author Yorick Peterse
34
+ # @param [Array] args Array of segments for the breadcrumbs.
35
+ # @since 0.1
36
+ #
37
+ def set_breadcrumbs *args
38
+ @breadcrumbs = args
39
+ end
40
+
41
+ ##
42
+ # Retrieves all breacrumbs and separates them either by "&raquo;" or a custom element
43
+ # set as the first argument of this method.
44
+ #
45
+ # @example
46
+ # get_breadcrumbs # => "Articles &raquo; Edit"
47
+ #
48
+ # @example
49
+ # get_breadcrumbs ">" # => "Articles > Edit"
50
+ #
51
+ # @author Yorick Peterse
52
+ # @param [String] separator The HTML character to use for separating each segment.
53
+ # @return [String]
54
+ #
55
+ def get_breadcrumbs separator = "&raquo;"
56
+ if !@breadcrumbs or @breadcrumbs.empty?
57
+ return
58
+ end
59
+
60
+ html = ''
61
+ separator = " #{separator} "
62
+
63
+ @breadcrumbs.each do |segment|
64
+ html += segment + separator
65
+ end
66
+
67
+ return html.chomp(separator)
68
+ end
69
+ end
70
+ end
71
+ end