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,909 @@
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>Module: Zen::Package</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 (P)</a> &raquo;
27
+ <span class='title'><span class='object_link'><a href="../Zen.html" title="Zen (module)">Zen</a></span></span>
28
+ &raquo;
29
+ <span class="title">Package</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>Module: Zen::Package
47
+
48
+
49
+
50
+ </h1>
51
+
52
+ <dl class="box">
53
+
54
+
55
+
56
+
57
+
58
+
59
+
60
+
61
+ <dt class="r1 last">Defined in:</dt>
62
+ <dd class="r1 last">/Applications/MAMP/htdocs/ruby/zen/zen/lib/zen/base/package.rb</dd>
63
+
64
+ </dl>
65
+ <div class="clear"></div>
66
+
67
+ <h2>Overview</h2><div class="docstring">
68
+ <div class="discussion">
69
+ <p>Module used for registering extensions and themes, setting their details and the whole shebang.
70
+ Packages follow the same directory structure as Rubygems and can actually be installed
71
+ using either Rubygems or by storing them in a custom directory. As long as you require
72
+ the correct file you&#8217;re good to go.</p>
73
+ <p>Packages are added or &#8220;described&#8221; using a simple block and the add() method as following:</p>
74
+ <pre class="code"><span class='const'>Zen</span><span class='op'>::</span><span class='const'>Package</span><span class='period'>.</span><span class='id add'>add</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id ext'>ext</span><span class='op'>|</span>
75
+ <span class='comment'># ....
76
+ </span><span class='kw'>end</span></pre>
77
+ <p>When using this block you&#8217;re required to set the following attributes:</p>
78
+ <ul>
79
+ <li>type: the type of package, can either be &#8220;theme&#8221; or &#8220;extension&#8221;</li>
80
+ <li>name: the name of the package</li>
81
+ <li>author: the name of the person who made the package</li>
82
+ <li>version: the current version, either a string or a numeric value</li>
83
+ <li>about: a small description of the package</li>
84
+ <li>url: the <span class="caps">URL</span> to the package&#8217;s website</li>
85
+ <li>identifier: unique identifier for the package. The format is com.<span class="caps">AUTHOR</span>.<span class="caps">NAME</span> for
86
+ extensions and com.<span class="caps">AUTHOR</span>.themes.<span class="caps">NAME</span> for themes.</li>
87
+ <li>directory: the root directory of the package, set this using <i><span class="caps">DIR</span></i>(&#8216;path&#8217;)</li>
88
+ </ul>
89
+ <p>Optionally you can also specify the attribute &#8220;menu&#8221; (more on that later).</p>
90
+ <h2>Menu Items</h2>
91
+ <p>The package system easily allows modules to add navigation/sub-navigation elements
92
+ to the backend menu. Each extension can have an attribute named &#8220;menu&#8221;, this attribute
93
+ is an array of hashes. Each hash must have the following 2 keys (they&#8217;re symbols):</p>
94
+ <ul>
95
+ <li>title: the value used for both the title tag and the text of the anchor element</li>
96
+ <li>url: the <span class="caps">URI</span> the navigation item will point to. Leading slash isn&#8217;t required</li>
97
+ </ul>
98
+ <p>Optionally you can specify child elements using the &#8220;children&#8221; key. This key
99
+ will again contain an array of hashes just like regular navigation elements.
100
+ For example, one could do the following:</p>
101
+ <p><code>ext.menu = [{:title =&gt; "Dashboard", :url =&gt; "admin/dashboard"}]</code></p>
102
+ <p>Adding a number of child elements isn&#8217;t very difficult either:</p>
103
+ <pre class="code"><span class='id ext'>ext</span><span class='period'>.</span><span class='id menu'>menu</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='lbrace'>{</span>
104
+ <span class='symbol'>:title</span> <span class='op'>=&gt;</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Dashboard</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='symbol'>:url</span> <span class='op'>=&gt;</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>admin/dashboard</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
105
+ <span class='symbol'>:children</span> <span class='op'>=&gt;</span> <span class='lbracket'>[</span><span class='lbrace'>{</span><span class='symbol'>:title</span> <span class='op'>=&gt;</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Child</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='symbol'>:url</span> <span class='op'>=&gt;</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>admin/dashboard/child</span><span class='tstring_end'>&quot;</span></span><span class='rbrace'>}</span><span class='rbracket'>]</span>
106
+ <span class='rbrace'>}</span><span class='rbracket'>]</span></pre>
107
+ <p>Once a certain number of navigation elements have been added you can generate the
108
+ <span class="caps">HTML</span> for a fully fledged navigation menu using the build_menu() method. This method
109
+ uses Gestalt to build the <span class="caps">HTML</span> and also takes care of permissions for each user/module.</p>
110
+ <h2>Migrations</h2>
111
+ <p>If your package uses it&#8217;s own database tables it&#8217;s best to use migrations as these make
112
+ it very easy to install/uninstall the extension. Migrations should be put in the root
113
+ directory of your extension. For example, if your extension is in &#8220;foobar&#8221; the migrations
114
+ should be located in &#8220;foobar/migrations&#8221;, the lib directory in &#8220;foobar/lib&#8221;, etc.</p>
115
+ <p>Migrations can be executed using the Rake task &#8220;extension:migrate&#8221; or &#8220;db:migrate&#8221;,
116
+ the latter will install all extensions while the first one will only install the specified
117
+ extension. Migration prototypes can be generated by the Rake task
118
+ &#8220;proto:migration[<span class="caps">DIRECTORY</span>]&#8221; where <span class="caps">DIRECTORY</span> is the path to your migrations directory.</p>
119
+ <h2>Themes</h2>
120
+ <p>Themes are essentially packages like the sections or comments module except that they
121
+ have a few limitations and work a bit different. First of all themes can&#8217;t add navigation
122
+ items to the backend and second they should <em>always</em> have the following directories:</p>
123
+ <ul>
124
+ <li>theme/lib/theme/templates</li>
125
+ <li>theme/lib/theme/public</li>
126
+ </ul>
127
+ <p>The templates directory is used to store all Liquid templates and template groups, the public
128
+ directory is used for <span class="caps">CSS</span> files, images and so on. Themes can have migrations just
129
+ like extensions which makes it relatively easy to share a theme with somebody else.</p>
130
+
131
+ </div>
132
+ </div>
133
+ <div class="tags">
134
+ <h3>Author:</h3>
135
+ <ul class="author">
136
+
137
+ <li>
138
+
139
+
140
+
141
+
142
+
143
+ <div class='inline'><p>Yorick Peterse</p></div>
144
+
145
+ </li>
146
+
147
+ </ul>
148
+ <h3>Since:</h3>
149
+ <ul class="since">
150
+
151
+ <li>
152
+
153
+
154
+
155
+
156
+
157
+ <div class='inline'><p>0.1</p></div>
158
+
159
+ </li>
160
+
161
+ </ul>
162
+
163
+ </div>
164
+
165
+ <h2>Class Attribute Summary <small>(<a href="#" class="summary_toggle">collapse</a>)</small></h2>
166
+ <ul class="summary">
167
+
168
+ <li class="public ">
169
+ <span class="summary_signature">
170
+
171
+ <a href="#classes-class_method" title="classes (class method)">+ (Object) <strong>classes</strong> </a>
172
+
173
+
174
+
175
+ </span>
176
+
177
+
178
+
179
+
180
+
181
+
182
+
183
+
184
+
185
+
186
+
187
+ <span class="summary_desc"><div class='inline'><p>Returns the value of attribute classes.</p></div></span>
188
+
189
+ </li>
190
+
191
+
192
+ <li class="public ">
193
+ <span class="summary_signature">
194
+
195
+ <a href="#extensions-class_method" title="extensions (class method)">+ (Object) <strong>extensions</strong> </a>
196
+
197
+
198
+
199
+ </span>
200
+
201
+
202
+ <span class="note title readonly">readonly</span>
203
+
204
+
205
+
206
+
207
+
208
+
209
+
210
+
211
+ <span class="summary_desc"><div class='inline'><p>Returns the value of attribute extensions.</p></div></span>
212
+
213
+ </li>
214
+
215
+
216
+ <li class="public ">
217
+ <span class="summary_signature">
218
+
219
+ <a href="#themes-class_method" title="themes (class method)">+ (Object) <strong>themes</strong> </a>
220
+
221
+
222
+
223
+ </span>
224
+
225
+
226
+ <span class="note title readonly">readonly</span>
227
+
228
+
229
+
230
+
231
+
232
+
233
+
234
+
235
+ <span class="summary_desc"><div class='inline'><p>Returns the value of attribute themes.</p></div></span>
236
+
237
+ </li>
238
+
239
+
240
+ </ul>
241
+
242
+
243
+
244
+ <h2>
245
+ Class Method Summary
246
+ <small>(<a href="#" class="summary_toggle">collapse</a>)</small>
247
+ </h2>
248
+
249
+ <ul class="summary">
250
+
251
+ <li class="public ">
252
+ <span class="summary_signature">
253
+
254
+ <a href="#%5B%5D-class_method" title="[] (class method)">+ (Object) <strong>[]</strong>(ident) </a>
255
+
256
+
257
+
258
+ </span>
259
+
260
+
261
+
262
+
263
+
264
+
265
+
266
+
267
+ <span class="summary_desc"><div class='inline'><p>Shortcut method that can be used to retrieve an extension or theme based on the
268
+ given extension identifier.</p></div></span>
269
+
270
+ </li>
271
+
272
+
273
+ <li class="public ">
274
+ <span class="summary_signature">
275
+
276
+ <a href="#add-class_method" title="add (class method)">+ (Object) <strong>add</strong>(&amp;block) {|package| ... }</a>
277
+
278
+
279
+
280
+ </span>
281
+
282
+
283
+
284
+
285
+
286
+
287
+
288
+
289
+ <span class="summary_desc"><div class='inline'><p>Adds a new package along with all it&#8217;s details such as the name,
290
+ author, version and so on.</p></div></span>
291
+
292
+ </li>
293
+
294
+
295
+ <li class="public ">
296
+ <span class="summary_signature">
297
+
298
+ <a href="#build_menu-class_method" title="build_menu (class method)">+ (Object) <strong>build_menu</strong>(css_class = ''
299
+ ) </a>
300
+
301
+
302
+
303
+ </span>
304
+
305
+
306
+
307
+
308
+
309
+
310
+
311
+
312
+ <span class="summary_desc"><div class='inline'><p>Builds a navigation menu for all installed extensions.</p></div></span>
313
+
314
+ </li>
315
+
316
+
317
+ </ul>
318
+
319
+
320
+
321
+ <div id="class_attr_details" class="attr_details">
322
+ <h2>Class Attribute Details</h2>
323
+
324
+
325
+ <span id="classes=-class_method"></span>
326
+ <span id="classes-class_method"></span>
327
+ <div class="method_details first">
328
+ <p class="signature first" id="classes-class_method">
329
+
330
+ + (<tt>Object</tt>) <strong>classes</strong>
331
+
332
+
333
+
334
+ </p><div class="docstring">
335
+ <div class="discussion">
336
+ <p>Returns the value of attribute classes</p>
337
+
338
+ </div>
339
+ </div>
340
+ <div class="tags">
341
+ <h3>Since:</h3>
342
+ <ul class="since">
343
+
344
+ <li>
345
+
346
+
347
+
348
+
349
+
350
+ <div class='inline'><p>0.1</p></div>
351
+
352
+ </li>
353
+
354
+ </ul>
355
+
356
+ </div><table class="source_code">
357
+ <tr>
358
+ <td>
359
+ <pre class="lines">
360
+
361
+
362
+ 88
363
+ 89
364
+ 90</pre>
365
+ </td>
366
+ <td>
367
+ <pre class="code"><span class="info file"># File '/Applications/MAMP/htdocs/ruby/zen/zen/lib/zen/base/package.rb', line 88</span>
368
+
369
+ <span class='kw'>def</span> <span class='id classes'>classes</span>
370
+ <span class='ivar'>@classes</span>
371
+ <span class='kw'>end</span></pre>
372
+ </td>
373
+ </tr>
374
+ </table>
375
+ </div>
376
+
377
+
378
+ <span id=""></span>
379
+ <span id="extensions-class_method"></span>
380
+ <div class="method_details ">
381
+ <p class="signature " id="extensions-class_method">
382
+
383
+ + (<tt>Object</tt>) <strong>extensions</strong> <span class="extras">(readonly)</span>
384
+
385
+
386
+
387
+ </p><div class="docstring">
388
+ <div class="discussion">
389
+ <p>Returns the value of attribute extensions</p>
390
+
391
+ </div>
392
+ </div>
393
+ <div class="tags">
394
+ <h3>Since:</h3>
395
+ <ul class="since">
396
+
397
+ <li>
398
+
399
+
400
+
401
+
402
+
403
+ <div class='inline'><p>0.1</p></div>
404
+
405
+ </li>
406
+
407
+ </ul>
408
+
409
+ </div><table class="source_code">
410
+ <tr>
411
+ <td>
412
+ <pre class="lines">
413
+
414
+
415
+ 86
416
+ 87
417
+ 88</pre>
418
+ </td>
419
+ <td>
420
+ <pre class="code"><span class="info file"># File '/Applications/MAMP/htdocs/ruby/zen/zen/lib/zen/base/package.rb', line 86</span>
421
+
422
+ <span class='kw'>def</span> <span class='id extensions'>extensions</span>
423
+ <span class='ivar'>@extensions</span>
424
+ <span class='kw'>end</span></pre>
425
+ </td>
426
+ </tr>
427
+ </table>
428
+ </div>
429
+
430
+
431
+ <span id=""></span>
432
+ <span id="themes-class_method"></span>
433
+ <div class="method_details ">
434
+ <p class="signature " id="themes-class_method">
435
+
436
+ + (<tt>Object</tt>) <strong>themes</strong> <span class="extras">(readonly)</span>
437
+
438
+
439
+
440
+ </p><div class="docstring">
441
+ <div class="discussion">
442
+ <p>Returns the value of attribute themes</p>
443
+
444
+ </div>
445
+ </div>
446
+ <div class="tags">
447
+ <h3>Since:</h3>
448
+ <ul class="since">
449
+
450
+ <li>
451
+
452
+
453
+
454
+
455
+
456
+ <div class='inline'><p>0.1</p></div>
457
+
458
+ </li>
459
+
460
+ </ul>
461
+
462
+ </div><table class="source_code">
463
+ <tr>
464
+ <td>
465
+ <pre class="lines">
466
+
467
+
468
+ 87
469
+ 88
470
+ 89</pre>
471
+ </td>
472
+ <td>
473
+ <pre class="code"><span class="info file"># File '/Applications/MAMP/htdocs/ruby/zen/zen/lib/zen/base/package.rb', line 87</span>
474
+
475
+ <span class='kw'>def</span> <span class='id themes'>themes</span>
476
+ <span class='ivar'>@themes</span>
477
+ <span class='kw'>end</span></pre>
478
+ </td>
479
+ </tr>
480
+ </table>
481
+ </div>
482
+
483
+ </div>
484
+
485
+
486
+ <div id="class_method_details" class="method_details_list">
487
+ <h2>Class Method Details</h2>
488
+
489
+
490
+ <div class="method_details first">
491
+ <p class="signature first" id="[]-class_method">
492
+
493
+ + (<tt>Object</tt>) <strong>[]</strong>(ident)
494
+
495
+
496
+
497
+ </p><div class="docstring">
498
+ <div class="discussion">
499
+ <p>Shortcut method that can be used to retrieve an extension or theme based on the
500
+ given extension identifier.</p>
501
+
502
+ </div>
503
+ </div>
504
+ <div class="tags">
505
+ <h3>Parameters:</h3>
506
+ <ul class="param">
507
+
508
+ <li>
509
+
510
+ <span class='type'>(<tt>String</tt>)</span>
511
+
512
+
513
+ <span class='name'>ident</span>
514
+
515
+
516
+
517
+ &mdash;
518
+ <div class='inline'><p>The package&#8217;s identifier</p></div>
519
+
520
+ </li>
521
+
522
+ </ul>
523
+ <h3>Returns:</h3>
524
+ <ul class="return">
525
+
526
+ <li>
527
+
528
+ <span class='type'>(<tt>Object</tt>)</span>
529
+
530
+
531
+
532
+
533
+ </li>
534
+
535
+ </ul>
536
+ <h3>Author:</h3>
537
+ <ul class="author">
538
+
539
+ <li>
540
+
541
+
542
+
543
+
544
+
545
+ <div class='inline'><p>Yorick Peterse</p></div>
546
+
547
+ </li>
548
+
549
+ </ul>
550
+ <h3>Since:</h3>
551
+ <ul class="since">
552
+
553
+ <li>
554
+
555
+
556
+
557
+
558
+
559
+ <div class='inline'><p>0.1</p></div>
560
+
561
+ </li>
562
+
563
+ </ul>
564
+
565
+ </div><table class="source_code">
566
+ <tr>
567
+ <td>
568
+ <pre class="lines">
569
+
570
+
571
+ 155
572
+ 156
573
+ 157
574
+ 158
575
+ 159
576
+ 160
577
+ 161</pre>
578
+ </td>
579
+ <td>
580
+ <pre class="code"><span class="info file"># File '/Applications/MAMP/htdocs/ruby/zen/zen/lib/zen/base/package.rb', line 155</span>
581
+
582
+ <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='op'>[]</span><span class='lparen'>(</span><span class='id ident'>ident</span><span class='rparen'>)</span>
583
+ <span class='kw'>if</span> <span class='id ident'>ident</span><span class='period'>.</span><span class='id include?'>include?</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>.themes.</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
584
+ <span class='ivar'>@themes</span><span class='lbracket'>[</span><span class='id ident'>ident</span><span class='rbracket'>]</span>
585
+ <span class='kw'>else</span>
586
+ <span class='ivar'>@extensions</span><span class='lbracket'>[</span><span class='id ident'>ident</span><span class='rbracket'>]</span>
587
+ <span class='kw'>end</span>
588
+ <span class='kw'>end</span></pre>
589
+ </td>
590
+ </tr>
591
+ </table>
592
+ </div>
593
+
594
+ <div class="method_details ">
595
+ <p class="signature " id="add-class_method">
596
+
597
+ + (<tt>Object</tt>) <strong>add</strong>(&amp;block) {|package| ... }
598
+
599
+
600
+
601
+ </p><div class="docstring">
602
+ <div class="discussion">
603
+ <p>Adds a new package along with all it&#8217;s details such as the name,
604
+ author, version and so on. Extensions can be added using a simple
605
+ block as following:</p>
606
+ Zen::Package.add do |ext|
607
+ ext.name = &#8220;Name&#8221;
608
+ ext.author = &#8220;Author&#8221;
609
+ end
610
+ <p>When adding a new extension the following setters are required:</p>
611
+ <ul>
612
+ <li>type</li>
613
+ <li>name</li>
614
+ <li>author</li>
615
+ <li>version</li>
616
+ <li>about</li>
617
+ <li>url</li>
618
+ <li>identifier</li>
619
+ <li>directory</li>
620
+ </ul>
621
+
622
+ </div>
623
+ </div>
624
+ <div class="tags">
625
+ <h3>Parameters:</h3>
626
+ <ul class="param">
627
+
628
+ <li>
629
+
630
+ <span class='type'>(<tt>Block</tt>)</span>
631
+
632
+
633
+ <span class='name'>block</span>
634
+
635
+
636
+
637
+ &mdash;
638
+ <div class='inline'><p>Block containing information about the extension.</p></div>
639
+
640
+ </li>
641
+
642
+ </ul>
643
+ <h3>Yields:</h3>
644
+ <ul class="yield">
645
+
646
+ <li>
647
+
648
+ <span class='type'>(<tt>package</tt>)</span>
649
+
650
+
651
+
652
+
653
+ </li>
654
+
655
+ </ul>
656
+ <h3>Author:</h3>
657
+ <ul class="author">
658
+
659
+ <li>
660
+
661
+
662
+
663
+
664
+
665
+ <div class='inline'><p>Yorick Peterse</p></div>
666
+
667
+ </li>
668
+
669
+ </ul>
670
+ <h3>Since:</h3>
671
+ <ul class="since">
672
+
673
+ <li>
674
+
675
+
676
+
677
+
678
+
679
+ <div class='inline'><p>0.1</p></div>
680
+
681
+ </li>
682
+
683
+ </ul>
684
+
685
+ </div><table class="source_code">
686
+ <tr>
687
+ <td>
688
+ <pre class="lines">
689
+
690
+
691
+ 116
692
+ 117
693
+ 118
694
+ 119
695
+ 120
696
+ 121
697
+ 122
698
+ 123
699
+ 124
700
+ 125
701
+ 126
702
+ 127
703
+ 128
704
+ 129
705
+ 130
706
+ 131
707
+ 132
708
+ 133
709
+ 134
710
+ 135
711
+ 136
712
+ 137
713
+ 138
714
+ 139
715
+ 140
716
+ 141
717
+ 142
718
+ 143
719
+ 144
720
+ 145</pre>
721
+ </td>
722
+ <td>
723
+ <pre class="code"><span class="info file"># File '/Applications/MAMP/htdocs/ruby/zen/zen/lib/zen/base/package.rb', line 116</span>
724
+
725
+ <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id add'>add</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='id block'>block</span><span class='rparen'>)</span>
726
+ <span class='id package'>package</span> <span class='op'>=</span> <span class='const'>Struct</span><span class='period'>.</span><span class='id new'>new</span><span class='lparen'>(</span><span class='symbol'>:type</span><span class='comma'>,</span> <span class='symbol'>:name</span><span class='comma'>,</span> <span class='symbol'>:author</span><span class='comma'>,</span> <span class='symbol'>:version</span><span class='comma'>,</span> <span class='symbol'>:about</span><span class='comma'>,</span> <span class='symbol'>:url</span><span class='comma'>,</span>
727
+ <span class='symbol'>:identifier</span><span class='comma'>,</span> <span class='symbol'>:directory</span><span class='comma'>,</span> <span class='symbol'>:menu</span><span class='rparen'>)</span><span class='period'>.</span><span class='id new'>new</span>
728
+ <span class='id required'>required</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='symbol'>:type</span><span class='comma'>,</span> <span class='symbol'>:name</span><span class='comma'>,</span> <span class='symbol'>:author</span><span class='comma'>,</span> <span class='symbol'>:version</span><span class='comma'>,</span> <span class='symbol'>:about</span><span class='comma'>,</span> <span class='symbol'>:url</span><span class='comma'>,</span> <span class='symbol'>:identifier</span><span class='comma'>,</span> <span class='symbol'>:directory</span><span class='rbracket'>]</span>
729
+
730
+ <span class='kw'>yield</span> <span class='id package'>package</span>
731
+
732
+ <span class='id required'>required</span><span class='period'>.</span><span class='id each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id m'>m</span><span class='op'>|</span>
733
+ <span class='kw'>if</span> <span class='op'>!</span><span class='id package'>package</span><span class='period'>.</span><span class='id respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='id m'>m</span><span class='rparen'>)</span> <span class='kw'>or</span> <span class='id package'>package</span><span class='period'>.</span><span class='id send'>send</span><span class='lparen'>(</span><span class='id m'>m</span><span class='rparen'>)</span><span class='period'>.</span><span class='id nil?'>nil?</span>
734
+ <span class='id raise'>raise</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>A loaded package has no value set for the setter \&quot;</span><span class='embexpr_beg'>#{</span><span class='id m'>m</span><span class='rbrace'>}</span><span class='tstring_content'>\&quot;</span><span class='tstring_end'>&quot;</span></span>
735
+ <span class='kw'>end</span>
736
+ <span class='kw'>end</span>
737
+
738
+ <span class='comment'># Update the root but prevent duplicates
739
+ </span> <span class='kw'>if</span> <span class='op'>!</span><span class='const'>Ramaze</span><span class='period'>.</span><span class='id options'>options</span><span class='period'>.</span><span class='id roots'>roots</span><span class='period'>.</span><span class='id include?'>include?</span><span class='lparen'>(</span><span class='id package'>package</span><span class='period'>.</span><span class='id directory'>directory</span><span class='rparen'>)</span>
740
+ <span class='const'>Ramaze</span><span class='period'>.</span><span class='id options'>options</span><span class='period'>.</span><span class='id roots'>roots</span><span class='period'>.</span><span class='id push'>push</span><span class='lparen'>(</span><span class='id package'>package</span><span class='period'>.</span><span class='id directory'>directory</span><span class='rparen'>)</span>
741
+ <span class='kw'>end</span>
742
+
743
+ <span class='comment'># Themes and extensions each have a different accessor
744
+ </span> <span class='kw'>if</span> <span class='id package'>package</span><span class='period'>.</span><span class='id type'>type</span><span class='period'>.</span><span class='id to_s'>to_s</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>theme</span><span class='tstring_end'>'</span></span>
745
+ <span class='comment'># Remove the navigation menu
746
+ </span> <span class='id package'>package</span><span class='period'>.</span><span class='id menu'>menu</span> <span class='op'>=</span> <span class='kw'>nil</span> <span class='kw'>if</span> <span class='op'>!</span><span class='id package'>package</span><span class='period'>.</span><span class='id menu'>menu</span><span class='period'>.</span><span class='id nil?'>nil?</span>
747
+
748
+ <span class='ivar'>@themes</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span> <span class='kw'>if</span> <span class='ivar'>@themes</span><span class='period'>.</span><span class='id nil?'>nil?</span>
749
+ <span class='ivar'>@themes</span><span class='lbracket'>[</span><span class='id package'>package</span><span class='period'>.</span><span class='id identifier'>identifier</span><span class='period'>.</span><span class='id to_s'>to_s</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id package'>package</span>
750
+ <span class='kw'>else</span>
751
+ <span class='ivar'>@extensions</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span> <span class='kw'>if</span> <span class='ivar'>@extensions</span><span class='period'>.</span><span class='id nil?'>nil?</span>
752
+ <span class='ivar'>@extensions</span><span class='lbracket'>[</span><span class='id package'>package</span><span class='period'>.</span><span class='id identifier'>identifier</span><span class='period'>.</span><span class='id to_s'>to_s</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id package'>package</span>
753
+ <span class='kw'>end</span>
754
+ <span class='kw'>end</span></pre>
755
+ </td>
756
+ </tr>
757
+ </table>
758
+ </div>
759
+
760
+ <div class="method_details ">
761
+ <p class="signature " id="build_menu-class_method">
762
+
763
+ + (<tt>Object</tt>) <strong>build_menu</strong>(css_class = ''
764
+ )
765
+
766
+
767
+
768
+ </p><div class="docstring">
769
+ <div class="discussion">
770
+ <p>Builds a navigation menu for all installed extensions.
771
+ Extensions can have an infinite amount of sub-navigation
772
+ items. This method will generate an unordered list of items
773
+ of which each list item can contain N sub items.</p>
774
+ <p>main UL element.</p>
775
+
776
+ </div>
777
+ </div>
778
+ <div class="tags">
779
+ <h3>Parameters:</h3>
780
+ <ul class="param">
781
+
782
+ <li>
783
+
784
+ <span class='type'>(<tt>String</tt>)</span>
785
+
786
+
787
+ <span class='name'>css_class</span>
788
+
789
+
790
+ <em class="default">(defaults to: <tt>''
791
+ </tt>)</em>
792
+
793
+
794
+ &mdash;
795
+ <div class='inline'><p>A string of <span class="caps">CSS</span> classes to apply to the</p></div>
796
+
797
+ </li>
798
+
799
+ </ul>
800
+ <h3>Author:</h3>
801
+ <ul class="author">
802
+
803
+ <li>
804
+
805
+
806
+
807
+
808
+
809
+ <div class='inline'><p>Yorick Peterse</p></div>
810
+
811
+ </li>
812
+
813
+ </ul>
814
+ <h3>Since:</h3>
815
+ <ul class="since">
816
+
817
+ <li>
818
+
819
+
820
+
821
+
822
+
823
+ <div class='inline'><p>0.1</p></div>
824
+
825
+ </li>
826
+
827
+ </ul>
828
+
829
+ </div><table class="source_code">
830
+ <tr>
831
+ <td>
832
+ <pre class="lines">
833
+
834
+
835
+ 174
836
+ 175
837
+ 176
838
+ 177
839
+ 178
840
+ 179
841
+ 180
842
+ 181
843
+ 182
844
+ 183
845
+ 184
846
+ 185
847
+ 186
848
+ 187
849
+ 188
850
+ 189
851
+ 190
852
+ 191
853
+ 192
854
+ 193
855
+ 194
856
+ 195
857
+ 196
858
+ 197
859
+ 198
860
+ 199
861
+ 200</pre>
862
+ </td>
863
+ <td>
864
+ <pre class="code"><span class="info file"># File '/Applications/MAMP/htdocs/ruby/zen/zen/lib/zen/base/package.rb', line 174</span>
865
+
866
+ <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id build_menu'>build_menu</span> <span class='id css_class'>css_class</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_end'>'</span></span>
867
+ <span class='ivar'>@g</span> <span class='op'>=</span> <span class='const'>Ramaze</span><span class='op'>::</span><span class='const'>Gestalt</span><span class='period'>.</span><span class='id new'>new</span>
868
+ <span class='id menu_items'>menu_items</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
869
+
870
+ <span class='ivar'>@extensions</span><span class='period'>.</span><span class='id each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id ident'>ident</span><span class='comma'>,</span> <span class='id ext'>ext</span><span class='op'>|</span>
871
+ <span class='kw'>if</span> <span class='op'>!</span><span class='id ext'>ext</span><span class='period'>.</span><span class='id menu'>menu</span><span class='period'>.</span><span class='id nil?'>nil?</span>
872
+ <span class='id ext'>ext</span><span class='period'>.</span><span class='id menu'>menu</span><span class='period'>.</span><span class='id each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id m'>m</span><span class='op'>|</span>
873
+ <span class='id menu_items'>menu_items</span><span class='period'>.</span><span class='id push'>push</span><span class='lparen'>(</span><span class='id m'>m</span><span class='rparen'>)</span>
874
+ <span class='kw'>end</span>
875
+ <span class='kw'>end</span>
876
+ <span class='kw'>end</span>
877
+
878
+ <span class='comment'># Sort the menu alphabetical
879
+ </span> <span class='id menu_items'>menu_items</span> <span class='op'>=</span> <span class='id menu_items'>menu_items</span><span class='period'>.</span><span class='id sort_by'>sort_by</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id item'>item</span><span class='op'>|</span>
880
+ <span class='id item'>item</span><span class='lbracket'>[</span><span class='symbol'>:title</span><span class='rbracket'>]</span>
881
+ <span class='kw'>end</span>
882
+
883
+ <span class='ivar'>@g</span><span class='period'>.</span><span class='id ul'>ul</span> <span class='symbol'>:class</span> <span class='op'>=&gt;</span> <span class='id css_class'>css_class</span> <span class='kw'>do</span>
884
+ <span class='kw'>if</span> <span class='op'>!</span><span class='id menu_items'>menu_items</span><span class='period'>.</span><span class='id empty?'>empty?</span>
885
+ <span class='id menu_items'>menu_items</span><span class='period'>.</span><span class='id each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id m'>m</span><span class='op'>|</span>
886
+ <span class='kw'>self</span><span class='period'>.</span><span class='id nav_list'>nav_list</span><span class='lparen'>(</span><span class='id m'>m</span><span class='rparen'>)</span>
887
+ <span class='kw'>end</span>
888
+ <span class='kw'>end</span>
889
+ <span class='kw'>end</span>
890
+
891
+ <span class='kw'>return</span> <span class='ivar'>@g</span><span class='period'>.</span><span class='id to_s'>to_s</span>
892
+ <span class='kw'>end</span></pre>
893
+ </td>
894
+ </tr>
895
+ </table>
896
+ </div>
897
+
898
+ </div>
899
+
900
+ </div>
901
+
902
+ <div id="footer">
903
+ Generated on Sun Feb 6 21:24:00 2011 by
904
+ <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
905
+ 0.6.4 (ruby-1.9.2).
906
+ </div>
907
+
908
+ </body>
909
+ </html>