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,74 @@
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 @entries and !@entries.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>#{@entries_lang.labels[:id]}</th>
21
+ <th>#{@entries_lang.labels[:title]}</th>
22
+ <th>#{@entries_lang.labels[:slug]}</th>
23
+ <th>#{@entries_lang.labels[:status]}</th>
24
+ <th>#{@entries_lang.labels[:created]}</th>
25
+ <th>#{@entries_lang.labels[:updated]}</th>
26
+ </tr>
27
+ </thead>
28
+ <tbody>
29
+ <?r @entries.each do |entry| ?>
30
+ <tr>
31
+ <?r if user_authorized?([:delete]) ?>
32
+ <td>
33
+ <input type="checkbox" name="section_entry_ids[]" value="#{entry.id}" />
34
+ </td>
35
+ <?r end ?>
36
+
37
+ <td>#{entry.id}</td>
38
+
39
+ <?r if user_authorized?([:update]) ?>
40
+ <td>#{anchor_to(entry.title, "admin/section_entries/edit/#{@section_id}/#{entry.id}")}</td>
41
+ <?r else ?>
42
+ <td>#{entry.title}</td>
43
+ <?r end ?>
44
+
45
+ <td>#{entry.slug}</td>
46
+ <td>#{@entries_lang.special[:status_hash][entry.status]}</td>
47
+ <td>#{entry.created_at}</td>
48
+ <td>#{entry.updated_at}</td>
49
+ </tr>
50
+ <?r end ?>
51
+ </tbody>
52
+ </table>
53
+
54
+ <?r else ?>
55
+ <p>#{@entries_lang.messages[:no_entries]}</p>
56
+ <?r end ?>
57
+
58
+ <div class="clearfix">
59
+
60
+ <?r if user_authorized?([:create]) ?>
61
+ <div class="button">
62
+ #{anchor_to(@entries_lang.buttons[:new_entry], "admin/section_entries/new/#{@section_id}")}
63
+ </div>
64
+ <?r end ?>
65
+
66
+ <?r if user_authorized?([:delete]) and @entries and !@entries.empty? ?>
67
+ <div class="button">
68
+ <input type="submit" value="#{@entries_lang.buttons[:delete_entries]}" />
69
+ </div>
70
+ <?r end ?>
71
+ </div>
72
+ </form>
73
+
74
+ </article>
@@ -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,35 @@
1
+ Sequel.migration do
2
+
3
+ up do
4
+ create_table :sections do
5
+ primary_key :id
6
+
7
+ String :name, :null => false
8
+ String :slug, :null => false, :unique => true
9
+ String :description, :text => true
10
+ TrueClass :comment_allow, :null => false, :default => true
11
+ TrueClass :comment_require_account, :null => false, :default => false
12
+ TrueClass :comment_moderate, :null => false, :default => false
13
+ TrueClass :comment_antispam, :null => false, :default => true
14
+ Enum :comment_format, :elements => ['plain', 'html', 'textile', 'markdown'], :null => false, :default => 'plain'
15
+ end
16
+
17
+ create_table :section_entries do
18
+ primary_key :id
19
+
20
+ String :title , :default => 'Untitled'
21
+ String :slug , :null => false, :unique => true
22
+ Enum :status, :elements => ['published', 'draft'], :null => false, :default => 'draft'
23
+ Time :created_at
24
+ Time :updated_at
25
+
26
+ foreign_key :section_id, :sections, :on_delete => :cascade, :on_update => :cascade, :key => :id
27
+ end
28
+ end
29
+
30
+ down do
31
+ drop_table :section_entries
32
+ drop_table :sections
33
+ end
34
+
35
+ end
@@ -0,0 +1,18 @@
1
+ Sequel.migration do
2
+
3
+ up do
4
+ alter_table :section_entries do
5
+ add_column :user_id, Integer
6
+ add_foreign_key [:user_id], :users, :on_delete => :cascade,
7
+ :on_update => :cascade, :key => :id, :name => 'fk_section_entries_user_id'
8
+ end
9
+ end
10
+
11
+ down do
12
+ #alter_table :section_entries do
13
+ # drop_constraint 'fk_section_entries_user_id'
14
+ # drop_column :user_id
15
+ #end
16
+ end
17
+
18
+ end
@@ -0,0 +1,11 @@
1
+ Sequel.migration do
2
+
3
+ up do
4
+ drop_column :sections, :comment_antispam
5
+ end
6
+
7
+ down do
8
+ add_column :sections, :comment_antispam, TrueClass, :default => true, :null => false
9
+ end
10
+
11
+ end
File without changes
@@ -0,0 +1,22 @@
1
+
2
+ require __DIR__ 'settings/model/setting'
3
+ require __DIR__ 'settings/controller/settings'
4
+ require __DIR__ 'settings/liquid/setting'
5
+
6
+ Liquid::Template.register_tag('setting', Settings::Liquid::Setting)
7
+
8
+ Zen::Package.add do |p|
9
+ p.type = 'extension'
10
+ p.name = 'Settings'
11
+ p.author = 'Yorick Peterse'
12
+ p.url = 'http://yorickpeterse.com/'
13
+ p.version = 1.0
14
+ p.about = 'Module for managing settings such as the default module, whether or not to allow registration, etc.'
15
+ p.identifier = 'com.zen.settings'
16
+ p.directory = __DIR__('settings')
17
+
18
+ p.menu = [{
19
+ :title => "Settings",
20
+ :url => "admin/settings"
21
+ }]
22
+ end
@@ -0,0 +1,113 @@
1
+ module Settings
2
+ module Controllers
3
+ ##
4
+ # Controller for managing settings. Each setting is saved as a separate
5
+ # row in the database, making management and retrieving them easier.
6
+ #
7
+ # @author Yorick Peterse
8
+ # @since 0.1
9
+ #
10
+ class Settings < Zen::Controllers::AdminController
11
+ map "/admin/settings"
12
+
13
+ trait :extension_identifier => 'com.zen.settings'
14
+ include ::Settings::Models
15
+
16
+ before_all do
17
+ csrf_protection :save, :delete do
18
+ respond(@zen_general_lang.errors[:csrf], 401)
19
+ end
20
+ end
21
+
22
+ ##
23
+ # Load our language packs, set the form URLs and define our page title.
24
+ #
25
+ # @author Yorick Peterse
26
+ # @since 0.1
27
+ #
28
+ def initialize
29
+ super
30
+
31
+ @form_save_url = '/admin/settings/save'
32
+ @settings_lang = Zen::Language.load 'settings'
33
+
34
+ # Set the page title
35
+ if !action.method.nil?
36
+ method = action.method.to_sym
37
+
38
+ if @settings_lang.titles.key? method
39
+ @page_title = @settings_lang.titles[method]
40
+ end
41
+ end
42
+ end
43
+
44
+ ##
45
+ # Show all settings and allow the user to change them.
46
+ # The values of each setting item are stored in the database,
47
+ # the descriptions, names and possible values are stored in
48
+ # the language packs that come with this module.
49
+ #
50
+ # @author Yorick Peterse
51
+ # @since 0.1
52
+ #
53
+ def index
54
+ if !user_authorized?([:read, :update])
55
+ respond(@zen_general_lang.errors[:not_authorized], 403)
56
+ end
57
+
58
+ set_breadcrumbs @settings_lang.titles[:index]
59
+
60
+ settings = Setting.all
61
+ @settings = {}
62
+
63
+ # Organize the settings so that each item is a child
64
+ # item of it's group.
65
+ settings.each do |s|
66
+ if !@settings.key?(s.group_key)
67
+ @settings[s.group_key.to_s] = []
68
+ end
69
+
70
+ @settings[s.group_key.to_s].push(s)
71
+ end
72
+ end
73
+
74
+ ##
75
+ # Saves the values of each setting. Since each setting
76
+ # is a new row we'll have to loop through them and execute quite
77
+ # a few queries.
78
+ #
79
+ # @author Yorick Peterse
80
+ # @since 0.1
81
+ #
82
+ def save
83
+ if !user_authorized?([:update])
84
+ respond(@zen_general_lang.errors[:not_authorized], 403)
85
+ end
86
+
87
+ post = request.params.dup
88
+ post.delete('csrf_token')
89
+
90
+ post.each do |key, value|
91
+ post.delete(key) if value.empty?
92
+ end
93
+
94
+ flash_success = @settings_lang.success[:save]
95
+ flash_error = @settings_lang.errors[:save]
96
+
97
+ begin
98
+ post.each do |key, value|
99
+ @setting = Setting[:key => key].update(:value => value)
100
+ end
101
+
102
+ notification(:success, @settings_lang.titles[:index], flash_success)
103
+ rescue
104
+ notification(:error, @settings_lang.titles[:index], flash_error)
105
+
106
+ flash[:form_errors] = @setting.errors
107
+ end
108
+
109
+ redirect_referrer
110
+ end
111
+ end
112
+ end
113
+ end
@@ -0,0 +1,56 @@
1
+ Zen::Language.translation 'settings' do |item|
2
+
3
+ boolean_hash = {"Yes" => '1', "No" => '0'}
4
+ section_hash = {}
5
+ theme_hash = {}
6
+
7
+ Sections::Models::Section.select(:name, :slug).each do |s|
8
+ section_hash[s.slug] = s.name
9
+ end
10
+
11
+ Zen::Package.themes.each do |ident, theme|
12
+ theme_hash[ident] = theme.name
13
+ end
14
+
15
+ # -----------------
16
+
17
+ item.titles = {
18
+ :index => 'Settings'
19
+ }
20
+
21
+ item.labels = {
22
+ :website_name => 'Website name',
23
+ :website_description => 'Website description',
24
+ :website_enabled => 'Website enabled',
25
+ :language => 'Language',
26
+ :default_section => 'Default section',
27
+ :theme => 'Theme',
28
+ :enable_antispam => 'Enable anti-spam',
29
+ :defensio_key => 'Defensio API key'
30
+ }
31
+
32
+ item.tabs = {
33
+ :general => 'General',
34
+ :security => 'Security'
35
+ }
36
+
37
+ item.buttons = {
38
+ :save => "Save"
39
+ }
40
+
41
+ item.success = {
42
+ :save => "The settings have been saved"
43
+ }
44
+
45
+ item.errors = {
46
+ :save => "The settings could not be saved"
47
+ }
48
+
49
+ item.values = {
50
+ :website_enabled => boolean_hash,
51
+ :language => {"en" => "English"},
52
+ :enable_antispam => boolean_hash,
53
+ :default_section => section_hash,
54
+ :theme => theme_hash
55
+ }
56
+ end
@@ -0,0 +1,56 @@
1
+ module Settings
2
+ module Liquid
3
+ ##
4
+ # Tag that can be used to retrieve the values of the given setting.
5
+ # Using this tag couldn't be easier:
6
+ #
7
+ # bc. {% settings "website_name" %}
8
+ #
9
+ # It's not required to specify quotes as setting keys don't contain
10
+ # spaces but it's generally considered a good practice to do so anyway.
11
+ #
12
+ # @author Yorick Peterse
13
+ # @since 0.1
14
+ #
15
+ class Setting < ::Liquid::Tag
16
+ include ::Zen::Liquid::General
17
+
18
+ ##
19
+ # Constructor method is called when a new instance of this tag
20
+ # is created. The variable "key" is the key name of the setting
21
+ # who's value should be retrieved. This argument is always required.
22
+ #
23
+ # @author Yorick Peterse
24
+ # @param [String] tag_name The name of the tag that was called.
25
+ # @param [String] arguments All additional arguments passed as a string.
26
+ # @param [String] html The HTML inside the block.
27
+ # @since 0.1
28
+ #
29
+ def initialize tag_name, key, markup
30
+ super
31
+
32
+ @key = key.gsub('"', '').gsub("'", '')
33
+ end
34
+
35
+ ##
36
+ # Renders the tag.
37
+ #
38
+ # @author Yorick Peterse
39
+ # @since 0.1
40
+ #
41
+ def render context
42
+ setting = ::Settings::Models::Setting[:key => @key]
43
+
44
+ if !setting.nil?
45
+ if setting.value.nil? or setting.value.empty?
46
+ @setting_value = setting.default
47
+ else
48
+ @setting_value = setting.value
49
+ end
50
+ end
51
+
52
+ return @setting_value.to_s
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,38 @@
1
+ module Settings
2
+ module Models
3
+ ##
4
+ # Model that represents a single setting. The Setting model
5
+ # has to additional relations and doesn't use any plugins,
6
+ # it only provides an additional method namely the get_settings()
7
+ # method.
8
+ #
9
+ # @author Yorick Peterse
10
+ # @since 0.1
11
+ #
12
+ class Setting < Sequel::Model
13
+ ##
14
+ # Retrieves all settings and returns them as a key/value hash.
15
+ #
16
+ # @author Yorick Peterse
17
+ # @since 0.1
18
+ # @return [Hash] key/value hash containing all settings and their values.
19
+ #
20
+ def self.get_settings
21
+ settings = {}
22
+
23
+ self.all.each do |s|
24
+ if s.value.nil?
25
+ value = s.default
26
+ else
27
+ value = s.value
28
+ end
29
+
30
+ settings[s.key.to_sym] = value
31
+ end
32
+
33
+ return settings
34
+ end
35
+ end
36
+
37
+ end
38
+ end