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,88 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
+ <head>
5
+ <meta name="Content-Type" content="text/html; charset=utf-8" />
6
+ <title>Top Level Namespace</title>
7
+ <link rel="stylesheet" href="css/style.css" type="text/css" media="screen" charset="utf-8" />
8
+ <link rel="stylesheet" href="css/common.css" type="text/css" media="screen" charset="utf-8" />
9
+
10
+ <script type="text/javascript" charset="utf-8">
11
+ relpath = '';
12
+ if (relpath != '') relpath += '/';
13
+ </script>
14
+ <script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
15
+ <script type="text/javascript" charset="utf-8" src="js/app.js"></script>
16
+
17
+ </head>
18
+ <body>
19
+ <script type="text/javascript" charset="utf-8">
20
+ if (window.top.frames.main) document.body.className = 'frames';
21
+ </script>
22
+
23
+ <div id="header">
24
+ <div id="menu">
25
+
26
+ <a href="_index.html">Index</a> &raquo;
27
+
28
+
29
+ <span class="title">Top Level Namespace</span>
30
+
31
+
32
+ <div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
33
+ </div>
34
+
35
+ <div id="search">
36
+ <a id="class_list_link" href="#">Class List</a>
37
+ <a id="method_list_link" href="#">Method List</a>
38
+ <a id ="file_list_link" href="#">File List</a>
39
+ </div>
40
+
41
+ <div class="clear"></div>
42
+ </div>
43
+
44
+ <iframe id="search_frame"></iframe>
45
+
46
+ <div id="content"><h1>Top Level Namespace
47
+
48
+
49
+
50
+ </h1>
51
+
52
+ <dl class="box">
53
+
54
+
55
+
56
+
57
+
58
+
59
+
60
+
61
+ </dl>
62
+ <div class="clear"></div>
63
+
64
+ <h2>Defined Under Namespace</h2>
65
+ <p class="children">
66
+
67
+
68
+ <strong class="modules">Modules:</strong> <span class='object_link'><a href="Categories.html" title="Categories (module)">Categories</a></span>, <span class='object_link'><a href="Comments.html" title="Comments (module)">Comments</a></span>, <span class='object_link'><a href="CustomFields.html" title="CustomFields (module)">CustomFields</a></span>, <span class='object_link'><a href="Ramaze.html" title="Ramaze (module)">Ramaze</a></span>, <span class='object_link'><a href="Sections.html" title="Sections (module)">Sections</a></span>, <span class='object_link'><a href="Sequel.html" title="Sequel (module)">Sequel</a></span>, <span class='object_link'><a href="Settings.html" title="Settings (module)">Settings</a></span>, <span class='object_link'><a href="Users.html" title="Users (module)">Users</a></span>, <span class='object_link'><a href="Zen.html" title="Zen (module)">Zen</a></span>
69
+
70
+
71
+
72
+
73
+ </p>
74
+
75
+
76
+
77
+
78
+
79
+ </div>
80
+
81
+ <div id="footer">
82
+ Generated on Sun Feb 6 21:24:02 2011 by
83
+ <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
84
+ 0.6.4 (ruby-1.9.2).
85
+ </div>
86
+
87
+ </body>
88
+ </html>
@@ -0,0 +1,77 @@
1
+ ##
2
+ # Main module for Zen, all other modules and classes will be placed inside this module.
3
+ # This module loads all required classes and is used for starting the application.
4
+ #
5
+ # @author Yorick Peterse
6
+ # @since 0.1
7
+ #
8
+ module Zen
9
+ require 'sequel'
10
+ require 'ramaze'
11
+ require 'bcrypt'
12
+ require 'liquid'
13
+ require 'json'
14
+ require 'redcloth'
15
+ require 'rdiscount'
16
+ require 'defensio'
17
+ require __DIR__('zen/base/version')
18
+
19
+ include Innate::Optioned
20
+
21
+ # Update several paths so we can load helpers/layouts from the Zen gem
22
+ Innate::HelpersHelper.options.paths << __DIR__('zen')
23
+ Ramaze.options.roots << __DIR__('zen')
24
+
25
+ options.dsl do
26
+ # General configuration options
27
+ o 'The character encoding to use when dealing with data', :encoding, 'utf8'
28
+ o 'The system language', :language, 'en'
29
+ o 'The date format to use for log files and such.', :date_format, '%d-%m-%Y'
30
+ o 'The base directory of Zen.', :root, ''
31
+ end
32
+
33
+ # Load all classes/modules provided by Zen itself.
34
+ require __DIR__ 'zen/base/logger'
35
+ require __DIR__ 'zen/base/database'
36
+ require __DIR__ 'zen/base/package'
37
+ require __DIR__ 'zen/base/language'
38
+
39
+ # Load all the base controllers
40
+ require __DIR__ 'zen/controller/base_controller'
41
+ require __DIR__ 'zen/controller/frontend_controller'
42
+ require __DIR__ 'zen/controller/admin_controller'
43
+ require __DIR__ 'zen/controller/main_controller'
44
+
45
+ # Load all default Liquid tags
46
+ require __DIR__ 'zen/liquid/general'
47
+ require __DIR__ 'zen/liquid/controller_behavior'
48
+ require __DIR__ 'zen/liquid/redirect'
49
+ require __DIR__ 'zen/liquid/strip'
50
+
51
+ class << self
52
+ attr_accessor :logger
53
+ end
54
+
55
+ # Update the language paths
56
+ Zen::Language.language_paths << __DIR__('zen')
57
+
58
+ # Register our Liquid tags
59
+ ::Liquid::Template.register_tag('strip' , Liquid::Strip)
60
+ ::Liquid::Template.register_tag('redirect', Liquid::Redirect)
61
+
62
+ ##
63
+ # Intitializes Zen by connecting the database and setting up various other things.
64
+ #
65
+ # @author Yorick Peterse
66
+ #
67
+ def self.init
68
+ # Initialize the database
69
+ Zen::Database.init
70
+
71
+ require __DIR__ 'zen/model/settings'
72
+ require __DIR__ 'zen/model/methods'
73
+
74
+ # Initialize the logger
75
+ @logger = Zen::Logger.new("#{Zen.options.root}/logs/common")
76
+ end
77
+ end
@@ -0,0 +1,105 @@
1
+ module Zen
2
+ ##
3
+ # The database module is one of the most important classes in Zen (which is quite obvious).
4
+ # Without this module the application wouldn't exist. The database module is basically a small
5
+ # wrapper around the Sequel.connect method and allows developers to specify database
6
+ # settings for various environments (live, test, production, etc) using a simple block.
7
+ #
8
+ # h2. Database Configuration
9
+ #
10
+ # Connecting to a database is fairly easy and only requires a single configuration file.
11
+ # In this file, called "database.rb" you'll define all your database environments (live, dev, test, etc).
12
+ #
13
+ # bc.. Zen::Database.mode :dev do |db|
14
+ # db.adapter = 'mysql'
15
+ # db.host = 'localhost'
16
+ #
17
+ # db.username = 'root'
18
+ # db.password = 'root'
19
+ # db.database = 'database'
20
+ # end
21
+ #
22
+ # p. In this example we're connecting to "localhost" using the mysql adapter and selecting the database
23
+ # called "database". When placing multiple environments in the same file you don't have to worry about
24
+ # them overriding eachother, Zen will only load the environment settings of the block that matches
25
+ # the current environment set in Ramaze.options.mode.
26
+ #
27
+ # h2. Database Interaction
28
+ #
29
+ # Once your database configuration file has been loaded you can communicate with the database using
30
+ # models. Each model should extend the base model provided by Sequel:
31
+ #
32
+ # bc. class Comment < Sequel::Model
33
+ # end
34
+ #
35
+ # Models can be called like any other class and don't need to be initialized. For more information
36
+ # on how to use models using Sequel you should read Sequel's documentation: http://sequel.rubyforge.com/
37
+ #
38
+ # @author Yorick Peterse
39
+ # @since 0.1
40
+ #
41
+ module Database
42
+ include Innate::Optioned
43
+
44
+ class << self
45
+ attr_reader :handle
46
+ end
47
+
48
+ # Database related configuration options
49
+ options.dsl do
50
+ o 'The database adapter to use.', :adapter, ''
51
+ o 'The address of the SQL server.', :host, ''
52
+ o 'The database username', :username, ''
53
+ o 'The database password', :password, ''
54
+ o 'The database name', :database, ''
55
+ end
56
+
57
+ ##
58
+ # Initializes a new database connection based on the configuration options specified in
59
+ # Zen::Database.options. Sequel will trigger an error in case any of these settings
60
+ # are incorrect. For logging a custom logger will be used, this logger can be found in
61
+ # Zen::Logger().
62
+ #
63
+ # An extra notice for MySQL users, Zen uses InnoDB in order to use true foreign keys.
64
+ # Make sure that your MySQL installation comes with the InnoDB plugin.
65
+ #
66
+ # @author Yorick Peterse
67
+ # @since 0.1
68
+ #
69
+ def self.init
70
+ @handle = Sequel.connect(
71
+ :adapter => self.options.adapter,
72
+ :host => self.options.host,
73
+ :database => self.options.database,
74
+ :username => self.options.username,
75
+ :password => self.options.password,
76
+ :logger => Zen::Logger.new("#{Zen.options.root}/logs/database"),
77
+ :test => true,
78
+ :encoding => Zen.options.encoding)
79
+
80
+ # We'll need to use InnoDB for MySQL tables in order to provide proper foreign key support
81
+ if self.options.adapter === 'mysql' or self.options.adapter === 'mysql2'
82
+ Sequel::MySQL.default_engine = 'InnoDB'
83
+ end
84
+ end
85
+
86
+ ##
87
+ # Method that's used to provide the ability to use different database configurations for each
88
+ # mode. This method basically just sets the Zen.options.db parameters based on the provided variables
89
+ # in the block. If you don't want to use different database configurations you can just set the variables
90
+ # directly using Zen.options.db.
91
+ #
92
+ # @author Yorick Peterse
93
+ # @since 0.1
94
+ # @param [Symbol] mode The development mode for which the database settings should be used.
95
+ # @param [Block] &block Block containing all database settings.
96
+ #
97
+ def self.mode mode, &block
98
+ mode = mode.to_sym
99
+
100
+ if mode == Ramaze.options.mode
101
+ yield self.options
102
+ end
103
+ end
104
+ end
105
+ end
@@ -0,0 +1,132 @@
1
+ require 'ostruct'
2
+
3
+ module Zen
4
+ ##
5
+ # The Language module enables developers to create multi-lingual applications/extensions using
6
+ # nothing more than Ruby. While Ramaze already ships with multi-language support it relies on YAML
7
+ # for it's language files. While YAML is nice for config/language files my aim is to keep everything in Ruby
8
+ # as much as possible. Another problem with the language class provided by Ramaze is that at the time of writing
9
+ # (October 2011) it was completely undocumented and didn't make much sense.
10
+ #
11
+ # h2. Usage
12
+ #
13
+ # Using the language system provided by Zen is fairly straight forward. Create a directory named "language"
14
+ # and create a sub directory for each language. For example, if you're adding an English language pack this directory would be named "en".
15
+ # Language files can be named whatever you like as long as they contain the following block:
16
+ #
17
+ # bc. Zen::Language.translation 'translation_name' do |item|
18
+ # # ...
19
+ # end
20
+ #
21
+ # Inside this block you'll define your language items. For example, if we want a localized username and password we could
22
+ # do something like the following:
23
+ #
24
+ # bc. Zen::Language.translation 'example' do |item|
25
+ # item.username = 'Username'
26
+ # item.passowrd = 'Password'
27
+ # end
28
+ #
29
+ # This language file can then be loaded as following (assuming it's named "example.rb"):
30
+ #
31
+ # bc. lang = Zen::Language.load 'example'
32
+ # # We can now access our translation items from the lang variable
33
+ # lang.username
34
+ # lang.password
35
+ #
36
+ # Zen will use the setting Zen.options.language to determine what language should be loaded.
37
+ #
38
+ # h2. Sub Items
39
+ #
40
+ # Since language files are nothing more than Ruby blocks you can do everything you normally can. This makes
41
+ # it extremely easy to retrieve dynamic data for your language files (a list of installed extensions for example).
42
+ # Sub items are generally specified as a hash:
43
+ #
44
+ # bc. item.sub_items = {:name => 'Name'}
45
+ #
46
+ # Note that Zen won't convert the keys from format A to B, if you specify a symbol it will stay a symbol.
47
+ #
48
+ # @author Yorick Peterse
49
+ # @since 0.1
50
+ #
51
+ module Language
52
+ @language_keys = {}
53
+ @language_paths = []
54
+
55
+ class << self
56
+ attr_accessor :language_keys
57
+ attr_accessor :language_paths
58
+ end
59
+
60
+ ##
61
+ # Tries to load the specified language file from each directory specified in Ramaze.options.roots.
62
+ # After a language file has been loaded the OpenStruct object will be stored in a hash and returned
63
+ # in case the same language file is loaded multiple times.
64
+ #
65
+ # @example
66
+ # @user_lang = Zen::Language.load 'user'
67
+ # @user_lang.username
68
+ #
69
+ # @author Yorick Peterse
70
+ # @param [String] lang_name The name of the language file to load. This name should match both
71
+ # the filename and the name defined in Zen::Language.translation().
72
+ # @return [Object] An OpenStruct object containing all the language keys and their values.
73
+ #
74
+ def self.load lang_name
75
+ # Each language file is stored in the hash using a key with the following format:
76
+ # language-name_language-file
77
+ hash_key = Zen.options.language + '_' + lang_name
78
+ hash_key = hash_key.to_sym
79
+
80
+ # Let's see if the language file is already loaded
81
+ if @language_keys.key?(hash_key)
82
+ return @language_keys[hash_key]
83
+ end
84
+
85
+ # Time to load the file
86
+ paths = @language_paths + Ramaze.options.roots
87
+
88
+ paths.each do |dir|
89
+ lang_path = "#{dir}/language/#{Zen.options.language}/#{lang_name}.rb"
90
+
91
+ # Load the file if it exists
92
+ if File.exist?(lang_path)
93
+ require lang_path
94
+ return @language_keys[hash_key]
95
+ end
96
+ end
97
+
98
+ # No language file found
99
+ return false
100
+ end
101
+
102
+ ##
103
+ # Given a block this method will store all the keys in the language_keys instance variable.
104
+ # Using Zen::Language.load these variables will be returned as an OpenStruct object.
105
+ #
106
+ # @example
107
+ # Zen::Language.translation 'example' do |lang|
108
+ # lang.username = 'Username'
109
+ # lang.password = 'Password'
110
+ # end
111
+ #
112
+ # @author Yorick Peterse
113
+ # @param [Block] Block containing all the language items.
114
+ #
115
+ def self.translation lang_name, &block
116
+ # Each language file is stored in the hash using a key with the following format:
117
+ # language-name_language-file
118
+ hash_key = Zen.options.language + '_' + lang_name
119
+ hash_key = hash_key.to_sym
120
+
121
+ # Does the language key already exist?
122
+ if @language_keys.key?(hash_key)
123
+ raise "There already is a language file named \"#{lang_name}\" for the language \"#{Zen.options.language}\"."
124
+ end
125
+
126
+ # Process the language file
127
+ @language_keys[hash_key] = OpenStruct.new
128
+
129
+ yield @language_keys[hash_key]
130
+ end
131
+ end
132
+ end
@@ -0,0 +1,54 @@
1
+ require 'ramaze/log/rotatinginformer'
2
+
3
+ module Zen
4
+ ##
5
+ # The Logger class acts as a small wrapper around the RotatingInformer class provided
6
+ # by Ramaze. Before returning a new instance this logger will make sure the specified
7
+ # directory actually exists and create it if this isn't the case.
8
+ #
9
+ # @author Yorick Peterse
10
+ # @since 0.1
11
+ #
12
+ class Logger < Ramaze::Logger::RotatingInformer
13
+
14
+ trait :timestamp => Zen.options.date_format
15
+ trait :format => "[%time] %prefix %text"
16
+
17
+ ##
18
+ # Create a new instance of the logging class. The first parameter is the directory in which the log files
19
+ # should be stored. Based on this paramater and the current mode (specified in Ramaze.options.mode) the
20
+ # required directories will be created. When specifying a directory you should NOT add trailing slash.
21
+ #
22
+ # @example
23
+ # # When running in :dev mode this will result in the log files being stored in logs/database/dev
24
+ # Zen::Logger.new 'logs/database'
25
+ #
26
+ # @author Yorick Peterse
27
+ # @since 0.1
28
+ # @param [String] log_dir The relative path to the log directory.
29
+ # @return [Object]
30
+ #
31
+ def initialize log_dir
32
+ # Create the log directory if it doesn't exist
33
+ Dir.mkdir log_dir unless Dir.exist? log_dir
34
+
35
+ log_dir += "/#{Ramaze.options.mode}"
36
+ Dir.mkdir log_dir unless Dir.exist? log_dir
37
+
38
+ # Initialize the RotatingInformer class
39
+ super(log_dir, "#{Zen.options.date_format}.log")
40
+ end
41
+
42
+ ##
43
+ # The write method is called whenever a log message has to be written to a file.
44
+ # Note that this method will only be used by webservers such as WEBRick. Sequel ignores this method.
45
+ #
46
+ # @author Yorick Peterse
47
+ # @since 0.1
48
+ # @param [String] message The data that has to be logged.
49
+ #
50
+ def write message
51
+ self.log(:info, message)
52
+ end
53
+ end
54
+ end