zen 0.1a → 0.2

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 (414) hide show
  1. data/CHANGELOG.md +17 -0
  2. data/MANIFEST +161 -264
  3. data/README.md +114 -0
  4. data/ROADMAP.md +31 -0
  5. data/Thorfile +8 -0
  6. data/lib/zen.rb +13 -10
  7. data/lib/zen/base/database.rb +34 -28
  8. data/lib/zen/base/language.rb +174 -92
  9. data/lib/zen/base/logger.rb +8 -6
  10. data/lib/zen/base/package.rb +36 -29
  11. data/lib/zen/base/version.rb +2 -1
  12. data/lib/zen/bin/zen_binary.rb +7 -71
  13. data/lib/zen/controller/admin_controller.rb +31 -11
  14. data/lib/zen/controller/base_controller.rb +13 -13
  15. data/lib/zen/controller/frontend_controller.rb +2 -0
  16. data/lib/zen/controller/main_controller.rb +9 -8
  17. data/lib/zen/helper/acl.rb +4 -1
  18. data/lib/zen/helper/asset.rb +5 -3
  19. data/lib/zen/helper/breadcrumb.rb +10 -8
  20. data/lib/zen/helper/common.rb +28 -13
  21. data/lib/zen/language/en/zen_general.yml +31 -0
  22. data/lib/zen/language/en/zen_models.yml +13 -0
  23. data/lib/zen/layout/admin.xhtml +76 -68
  24. data/lib/zen/layout/login.xhtml +48 -42
  25. data/lib/zen/liquid/controller_behavior.rb +2 -0
  26. data/lib/zen/liquid/general.rb +60 -9
  27. data/lib/zen/liquid/redirect.rb +29 -6
  28. data/lib/zen/liquid/strip.rb +3 -1
  29. data/lib/zen/model/methods.rb +7 -5
  30. data/lib/zen/model/settings.rb +69 -18
  31. data/lib/zen/package/all.rb +7 -0
  32. data/lib/zen/{packages → package}/categories/lib/categories.rb +3 -3
  33. data/lib/zen/package/categories/lib/categories/controller/categories.rb +250 -0
  34. data/lib/zen/package/categories/lib/categories/controller/category_groups.rb +216 -0
  35. data/lib/zen/package/categories/lib/categories/language/en/categories.yml +35 -0
  36. data/lib/zen/package/categories/lib/categories/language/en/category_groups.yml +32 -0
  37. data/lib/zen/package/categories/lib/categories/liquid/categories.rb +16 -0
  38. data/lib/zen/{packages → package}/categories/lib/categories/model/category.rb +9 -9
  39. data/lib/zen/{packages → package}/categories/lib/categories/model/category_group.rb +6 -4
  40. data/lib/zen/package/categories/lib/categories/view/admin/categories/edit.xhtml +7 -0
  41. data/lib/zen/package/categories/lib/categories/view/admin/categories/form.xhtml +59 -0
  42. data/lib/zen/package/categories/lib/categories/view/admin/categories/index.xhtml +78 -0
  43. data/lib/zen/package/categories/lib/categories/view/admin/categories/new.xhtml +7 -0
  44. data/lib/zen/package/categories/lib/categories/view/admin/category-groups/edit.xhtml +7 -0
  45. data/lib/zen/package/categories/lib/categories/view/admin/category-groups/form.xhtml +31 -0
  46. data/lib/zen/package/categories/lib/categories/view/admin/category-groups/index.xhtml +85 -0
  47. data/lib/zen/package/categories/lib/categories/view/admin/category-groups/new.xhtml +7 -0
  48. data/lib/zen/{packages → package}/categories/migrations/.gitkeep +0 -0
  49. data/lib/zen/{packages → package}/categories/migrations/1295282303_create_schema.rb +3 -2
  50. data/lib/zen/{packages → package}/comments/lib/comments.rb +1 -1
  51. data/lib/zen/{packages → package}/comments/lib/comments/controller/comments.rb +81 -41
  52. data/lib/zen/{packages → package}/comments/lib/comments/controller/comments_form.rb +15 -13
  53. data/lib/zen/package/comments/lib/comments/language/en/comments.yml +42 -0
  54. data/lib/zen/{packages → package}/comments/lib/comments/liquid/comment_form.rb +43 -13
  55. data/lib/zen/{packages → package}/comments/lib/comments/liquid/comments.rb +10 -12
  56. data/lib/zen/{packages → package}/comments/lib/comments/model/comment.rb +24 -0
  57. data/lib/zen/package/comments/lib/comments/view/admin/comments/edit.xhtml +7 -0
  58. data/lib/zen/package/comments/lib/comments/view/admin/comments/form.xhtml +57 -0
  59. data/lib/zen/package/comments/lib/comments/view/admin/comments/index.xhtml +79 -0
  60. data/lib/zen/{packages → package}/comments/migrations/.gitkeep +0 -0
  61. data/lib/zen/{packages → package}/comments/migrations/1295282202_create_schema.rb +6 -4
  62. data/lib/zen/{packages → package}/custom_fields/lib/custom_fields.rb +2 -2
  63. data/lib/zen/package/custom_fields/lib/custom_fields/controller/custom_field_groups.rb +224 -0
  64. data/lib/zen/package/custom_fields/lib/custom_fields/controller/custom_fields.rb +259 -0
  65. data/lib/zen/package/custom_fields/lib/custom_fields/language/en/custom_field_groups.yml +32 -0
  66. data/lib/zen/package/custom_fields/lib/custom_fields/language/en/custom_fields.yml +52 -0
  67. data/lib/zen/{packages → package}/custom_fields/lib/custom_fields/model/custom_field.rb +12 -7
  68. data/lib/zen/{packages → package}/custom_fields/lib/custom_fields/model/custom_field_group.rb +14 -4
  69. data/lib/zen/{packages → package}/custom_fields/lib/custom_fields/model/custom_field_value.rb +4 -2
  70. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-groups/edit.xhtml +7 -0
  71. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-groups/form.xhtml +30 -0
  72. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-groups/index.xhtml +100 -0
  73. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-groups/new.xhtml +7 -0
  74. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-fields/edit.xhtml +7 -0
  75. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-fields/form.xhtml +107 -0
  76. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-fields/index.xhtml +84 -0
  77. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-fields/new.xhtml +7 -0
  78. data/lib/zen/{packages → package}/custom_fields/migrations/.gitkeep +0 -0
  79. data/lib/zen/{packages → package}/custom_fields/migrations/1295255665_create_schema.rb +8 -7
  80. data/lib/zen/package/menus/lib/menus.rb +59 -0
  81. data/lib/zen/package/menus/lib/menus/controller/menu_items.rb +244 -0
  82. data/lib/zen/package/menus/lib/menus/controller/menus.rb +231 -0
  83. data/lib/zen/package/menus/lib/menus/helper/menu_item.rb +93 -0
  84. data/lib/zen/package/menus/lib/menus/language/en/menu_items.yml +41 -0
  85. data/lib/zen/package/menus/lib/menus/language/en/menus.yml +39 -0
  86. data/lib/zen/package/menus/lib/menus/liquid/menus.rb +152 -0
  87. data/lib/zen/package/menus/lib/menus/model/menu.rb +38 -0
  88. data/lib/zen/package/menus/lib/menus/model/menu_item.rb +33 -0
  89. data/lib/zen/package/menus/lib/menus/view/admin/menu-items/edit.xhtml +7 -0
  90. data/lib/zen/package/menus/lib/menus/view/admin/menu-items/form.xhtml +64 -0
  91. data/lib/zen/package/menus/lib/menus/view/admin/menu-items/index.xhtml +84 -0
  92. data/lib/zen/package/menus/lib/menus/view/admin/menu-items/new.xhtml +7 -0
  93. data/lib/zen/package/menus/lib/menus/view/admin/menus/edit.xhtml +7 -0
  94. data/lib/zen/package/menus/lib/menus/view/admin/menus/form.xhtml +42 -0
  95. data/lib/zen/package/menus/lib/menus/view/admin/menus/index.xhtml +95 -0
  96. data/lib/zen/package/menus/lib/menus/view/admin/menus/new.xhtml +7 -0
  97. data/lib/zen/{packages/sections → package/menus}/migrations/.gitkeep +0 -0
  98. data/lib/zen/package/menus/migrations/1297184342_create_schema.rb +33 -0
  99. data/lib/zen/{packages → package}/sections/lib/sections.rb +0 -0
  100. data/lib/zen/{packages → package}/sections/lib/sections/controller/section_entries.rb +132 -68
  101. data/lib/zen/{packages → package}/sections/lib/sections/controller/sections.rb +96 -48
  102. data/lib/zen/package/sections/lib/sections/language/en/section_entries.yml +43 -0
  103. data/lib/zen/package/sections/lib/sections/language/en/sections.yml +48 -0
  104. data/lib/zen/{packages → package}/sections/lib/sections/liquid/section_entries.rb +55 -43
  105. data/lib/zen/{packages → package}/sections/lib/sections/liquid/sections.rb +9 -8
  106. data/lib/zen/package/sections/lib/sections/model/section.rb +62 -0
  107. data/lib/zen/package/sections/lib/sections/model/section_entry.rb +53 -0
  108. data/lib/zen/package/sections/lib/sections/view/admin/edit.xhtml +7 -0
  109. data/lib/zen/package/sections/lib/sections/view/admin/form.xhtml +107 -0
  110. data/lib/zen/package/sections/lib/sections/view/admin/index.xhtml +93 -0
  111. data/lib/zen/package/sections/lib/sections/view/admin/new.xhtml +7 -0
  112. data/lib/zen/package/sections/lib/sections/view/admin/section-entries/edit.xhtml +7 -0
  113. data/lib/zen/package/sections/lib/sections/view/admin/section-entries/form.xhtml +233 -0
  114. data/lib/zen/package/sections/lib/sections/view/admin/section-entries/index.xhtml +82 -0
  115. data/lib/zen/package/sections/lib/sections/view/admin/section-entries/new.xhtml +7 -0
  116. data/lib/zen/{packages/settings → package/sections}/migrations/.gitkeep +0 -0
  117. data/lib/zen/{packages → package}/sections/migrations/1295251836_create_schema.rb +6 -6
  118. data/lib/zen/{packages → package}/settings/lib/settings.rb +0 -0
  119. data/lib/zen/{packages → package}/settings/lib/settings/controller/settings.rb +33 -24
  120. data/lib/zen/package/settings/lib/settings/language/en/settings.yml +26 -0
  121. data/lib/zen/{packages → package}/settings/lib/settings/liquid/setting.rb +5 -3
  122. data/lib/zen/package/settings/lib/settings/model/setting.rb +113 -0
  123. data/lib/zen/package/settings/lib/settings/view/admin/settings/index.xhtml +111 -0
  124. data/lib/zen/{packages/users → package/settings}/migrations/.gitkeep +0 -0
  125. data/lib/zen/{packages → package}/settings/migrations/1295597111_create_schema.rb +2 -2
  126. data/lib/zen/package/settings/migrations/1299538742_add_language_key.rb +62 -0
  127. data/lib/zen/{packages → package}/users/lib/users.rb +6 -2
  128. data/lib/zen/package/users/lib/users/controller/access_rules.rb +238 -0
  129. data/lib/zen/package/users/lib/users/controller/user_groups.rb +217 -0
  130. data/lib/zen/{packages → package}/users/lib/users/controller/users.rb +115 -57
  131. data/lib/zen/package/users/lib/users/language/en/access_rules.yml +35 -0
  132. data/lib/zen/package/users/lib/users/language/en/user_groups.yml +31 -0
  133. data/lib/zen/package/users/lib/users/language/en/users.yml +50 -0
  134. data/lib/zen/{packages → package}/users/lib/users/liquid/user.rb +8 -6
  135. data/lib/zen/{packages → package}/users/lib/users/liquid/users.rb +5 -3
  136. data/lib/zen/{packages → package}/users/lib/users/model/access_rule.rb +11 -3
  137. data/lib/zen/{packages → package}/users/lib/users/model/user.rb +5 -1
  138. data/lib/zen/{packages → package}/users/lib/users/model/user_group.rb +6 -3
  139. data/lib/zen/package/users/lib/users/public/admin/js/users/access_rules.js +42 -0
  140. data/lib/zen/package/users/lib/users/view/admin/access-rules/edit.xhtml +7 -0
  141. data/lib/zen/package/users/lib/users/view/admin/access-rules/form.xhtml +108 -0
  142. data/lib/zen/package/users/lib/users/view/admin/access-rules/index.xhtml +93 -0
  143. data/lib/zen/package/users/lib/users/view/admin/access-rules/new.xhtml +7 -0
  144. data/lib/zen/package/users/lib/users/view/admin/user-groups/edit.xhtml +7 -0
  145. data/lib/zen/package/users/lib/users/view/admin/user-groups/form.xhtml +37 -0
  146. data/lib/zen/package/users/lib/users/view/admin/user-groups/index.xhtml +76 -0
  147. data/lib/zen/package/users/lib/users/view/admin/user-groups/new.xhtml +7 -0
  148. data/lib/zen/package/users/lib/users/view/admin/users/edit.xhtml +7 -0
  149. data/lib/zen/package/users/lib/users/view/admin/users/form.xhtml +53 -0
  150. data/lib/zen/package/users/lib/users/view/admin/users/index.xhtml +81 -0
  151. data/lib/zen/package/users/lib/users/view/admin/users/login.xhtml +27 -0
  152. data/lib/zen/package/users/lib/users/view/admin/users/new.xhtml +7 -0
  153. data/{pkg → lib/zen/package/users/migrations}/.gitkeep +0 -0
  154. data/lib/zen/{packages → package}/users/migrations/1295281013_create_schema.rb +2 -2
  155. data/lib/zen/public/admin/css/boilerplate.css +62 -60
  156. data/lib/zen/public/admin/css/buttons.css +46 -0
  157. data/lib/zen/public/admin/css/datepicker.css +163 -0
  158. data/lib/zen/public/admin/css/editor.css +91 -0
  159. data/lib/zen/public/admin/css/forms.css +68 -0
  160. data/lib/zen/public/admin/css/general.css +34 -419
  161. data/lib/zen/public/admin/css/grid.css +26 -26
  162. data/lib/zen/public/admin/css/layout.css +73 -62
  163. data/lib/zen/public/admin/css/modals.css +63 -0
  164. data/lib/zen/public/admin/css/notifications.css +84 -0
  165. data/lib/zen/public/admin/css/tables.css +71 -0
  166. data/lib/zen/public/admin/css/tabs.css +53 -0
  167. data/lib/zen/public/admin/js/mootools/more.js +139 -51
  168. data/lib/zen/public/admin/js/vendor/datepicker/Picker.Attach.js +137 -0
  169. data/lib/zen/public/admin/js/vendor/datepicker/Picker.Date.js +576 -0
  170. data/lib/zen/public/admin/js/vendor/datepicker/Picker.js +291 -0
  171. data/lib/zen/public/admin/js/vendor/datepicker/README.md +325 -0
  172. data/lib/zen/public/admin/js/vendor/datepicker/locale.js +16 -0
  173. data/lib/zen/public/admin/js/zen/editor/base.js +173 -183
  174. data/lib/zen/public/admin/js/zen/editor/drivers/html.js +74 -89
  175. data/lib/zen/public/admin/js/zen/editor/drivers/markdown.js +72 -87
  176. data/lib/zen/public/admin/js/zen/editor/drivers/textile.js +72 -87
  177. data/lib/zen/public/admin/js/zen/init.js +65 -51
  178. data/lib/zen/public/admin/js/zen/modal.js +108 -121
  179. data/lib/zen/public/admin/js/zen/notification.js +163 -165
  180. data/lib/zen/public/admin/js/zen/tabs.js +203 -210
  181. data/lib/zen/task/build.rb +123 -0
  182. data/lib/zen/task/clean.rb +46 -0
  183. data/lib/zen/task/db.rb +120 -0
  184. data/lib/zen/task/package.rb +82 -0
  185. data/lib/zen/task/proto.rb +116 -0
  186. data/{LICENSE → license.txt} +2 -2
  187. data/proto/app/Thorfile +4 -0
  188. data/proto/app/config/middlewares.rb +3 -3
  189. data/proto/app/config/requires.rb +1 -6
  190. data/proto/app/start.rb +5 -10
  191. data/{lib/zen/packages/settings → proto/package}/LICENSE +0 -0
  192. data/{lib/zen/packages/categories → proto/package}/README.textile +0 -0
  193. data/proto/package/lib/package.rb +41 -0
  194. data/proto/{module/lib/module → package/lib/package}/controller/controllers.rb +3 -2
  195. data/proto/{module/lib/module → package/lib/package}/language/en/languages.rb +0 -0
  196. data/proto/{module/lib/module → package/lib/package}/model/model.rb +0 -0
  197. data/proto/{module/lib/module/view/admin → package/lib/package/view/admin/package}/edit.xhtml +0 -0
  198. data/proto/{module/lib/module/view/admin → package/lib/package/view/admin/package}/form.xhtml +0 -0
  199. data/proto/{module/lib/module/view/admin → package/lib/package/view/admin/package}/index.xhtml +0 -0
  200. data/proto/{module/lib/module/view/admin → package/lib/package/view/admin/package}/new.xhtml +0 -0
  201. data/proto/{module → package}/migrations/.gitkeep +0 -0
  202. metadata +199 -280
  203. data/README.textile +0 -42
  204. data/Rakefile +0 -6
  205. data/doc/Categories.html +0 -93
  206. data/doc/Categories/Controllers.html +0 -93
  207. data/doc/Categories/Controllers/Categories.html +0 -995
  208. data/doc/Categories/Controllers/CategoryGroups.html +0 -878
  209. data/doc/Categories/Models.html +0 -97
  210. data/doc/Categories/Models/Category.html +0 -269
  211. data/doc/Categories/Models/CategoryGroup.html +0 -231
  212. data/doc/Comments.html +0 -93
  213. data/doc/Comments/Controllers.html +0 -93
  214. data/doc/Comments/Controllers/Comments.html +0 -797
  215. data/doc/Comments/Controllers/CommentsForm.html +0 -487
  216. data/doc/Comments/Liquid.html +0 -93
  217. data/doc/Comments/Liquid/CommentForm.html +0 -522
  218. data/doc/Comments/Liquid/Comments.html +0 -543
  219. data/doc/Comments/Models.html +0 -95
  220. data/doc/Comments/Models/Comment.html +0 -260
  221. data/doc/CustomFields.html +0 -93
  222. data/doc/CustomFields/Controllers.html +0 -93
  223. data/doc/CustomFields/Controllers/CustomFieldGroups.html +0 -902
  224. data/doc/CustomFields/Controllers/CustomFields.html +0 -974
  225. data/doc/CustomFields/Models.html +0 -97
  226. data/doc/CustomFields/Models/CustomField.html +0 -272
  227. data/doc/CustomFields/Models/CustomFieldGroup.html +0 -259
  228. data/doc/CustomFields/Models/CustomFieldValue.html +0 -154
  229. data/doc/Ramaze.html +0 -93
  230. data/doc/Ramaze/Helper.html +0 -93
  231. data/doc/Ramaze/Helper/ACL.html +0 -531
  232. data/doc/Ramaze/Helper/Asset.html +0 -617
  233. data/doc/Ramaze/Helper/Breadcrumb.html +0 -411
  234. data/doc/Ramaze/Helper/Common.html +0 -738
  235. data/doc/Sections.html +0 -93
  236. data/doc/Sections/Controllers.html +0 -93
  237. data/doc/Sections/Controllers/SectionEntries.html +0 -1100
  238. data/doc/Sections/Controllers/Sections.html +0 -953
  239. data/doc/Sections/Liquid.html +0 -93
  240. data/doc/Sections/Liquid/SectionEntries.html +0 -674
  241. data/doc/Sections/Liquid/Sections.html +0 -494
  242. data/doc/Sections/Models.html +0 -97
  243. data/doc/Sections/Models/Section.html +0 -272
  244. data/doc/Sections/Models/SectionEntry.html +0 -264
  245. data/doc/Sequel.html +0 -91
  246. data/doc/Sequel/Model.html +0 -243
  247. data/doc/Settings.html +0 -93
  248. data/doc/Settings/Controllers.html +0 -91
  249. data/doc/Settings/Controllers/Settings.html +0 -565
  250. data/doc/Settings/Liquid.html +0 -91
  251. data/doc/Settings/Liquid/Setting.html +0 -426
  252. data/doc/Settings/Models.html +0 -95
  253. data/doc/Settings/Models/Setting.html +0 -293
  254. data/doc/Users.html +0 -93
  255. data/doc/Users/Controllers.html +0 -93
  256. data/doc/Users/Controllers/AccessRules.html +0 -904
  257. data/doc/Users/Controllers/UserGroups.html +0 -879
  258. data/doc/Users/Controllers/Users.html +0 -1124
  259. data/doc/Users/Liquid.html +0 -93
  260. data/doc/Users/Liquid/User.html +0 -480
  261. data/doc/Users/Liquid/Users.html +0 -495
  262. data/doc/Users/Models.html +0 -97
  263. data/doc/Users/Models/AccessRule.html +0 -257
  264. data/doc/Users/Models/User.html +0 -649
  265. data/doc/Users/Models/UserGroup.html +0 -267
  266. data/doc/Zen.html +0 -391
  267. data/doc/Zen/Bin.html +0 -113
  268. data/doc/Zen/Bin/Base.html +0 -727
  269. data/doc/Zen/Controllers.html +0 -115
  270. data/doc/Zen/Controllers/AdminController.html +0 -298
  271. data/doc/Zen/Controllers/BaseController.html +0 -272
  272. data/doc/Zen/Controllers/FrontendController.html +0 -164
  273. data/doc/Zen/Controllers/MainController.html +0 -421
  274. data/doc/Zen/Database.html +0 -498
  275. data/doc/Zen/Language.html +0 -660
  276. data/doc/Zen/Liquid.html +0 -117
  277. data/doc/Zen/Liquid/ControllerBehavior.html +0 -448
  278. data/doc/Zen/Liquid/General.html +0 -444
  279. data/doc/Zen/Liquid/Redirect.html +0 -435
  280. data/doc/Zen/Liquid/Strip.html +0 -447
  281. data/doc/Zen/Logger.html +0 -393
  282. data/doc/Zen/Package.html +0 -909
  283. data/doc/_index.html +0 -724
  284. data/doc/class_list.html +0 -36
  285. data/doc/css/common.css +0 -1
  286. data/doc/css/full_list.css +0 -53
  287. data/doc/css/style.css +0 -310
  288. data/doc/file.README.html +0 -86
  289. data/doc/file_list.html +0 -38
  290. data/doc/frames.html +0 -13
  291. data/doc/index.html +0 -86
  292. data/doc/js/app.js +0 -203
  293. data/doc/js/full_list.js +0 -149
  294. data/doc/js/jquery.js +0 -154
  295. data/doc/method_list.html +0 -1139
  296. data/doc/top-level-namespace.html +0 -88
  297. data/lib/zen/language/en/zen_general.rb +0 -21
  298. data/lib/zen/language/en/zen_models.rb +0 -39
  299. data/lib/zen/packages/categories/LICENSE +0 -19
  300. data/lib/zen/packages/categories/lib/categories/controller/categories.rb +0 -202
  301. data/lib/zen/packages/categories/lib/categories/controller/category_groups.rb +0 -173
  302. data/lib/zen/packages/categories/lib/categories/language/en/categories.rb +0 -38
  303. data/lib/zen/packages/categories/lib/categories/language/en/category_groups.rb +0 -37
  304. data/lib/zen/packages/categories/lib/categories/view/admin/categories/edit.xhtml +0 -7
  305. data/lib/zen/packages/categories/lib/categories/view/admin/categories/form.xhtml +0 -36
  306. data/lib/zen/packages/categories/lib/categories/view/admin/categories/index.xhtml +0 -70
  307. data/lib/zen/packages/categories/lib/categories/view/admin/categories/new.xhtml +0 -7
  308. data/lib/zen/packages/categories/lib/categories/view/admin/category_groups/edit.xhtml +0 -7
  309. data/lib/zen/packages/categories/lib/categories/view/admin/category_groups/form.xhtml +0 -18
  310. data/lib/zen/packages/categories/lib/categories/view/admin/category_groups/index.xhtml +0 -72
  311. data/lib/zen/packages/categories/lib/categories/view/admin/category_groups/new.xhtml +0 -7
  312. data/lib/zen/packages/comments/LICENSE +0 -19
  313. data/lib/zen/packages/comments/README.textile +0 -0
  314. data/lib/zen/packages/comments/lib/comments/language/en/comments.rb +0 -52
  315. data/lib/zen/packages/comments/lib/comments/view/admin/comments/edit.xhtml +0 -7
  316. data/lib/zen/packages/comments/lib/comments/view/admin/comments/form.xhtml +0 -31
  317. data/lib/zen/packages/comments/lib/comments/view/admin/comments/index.xhtml +0 -74
  318. data/lib/zen/packages/comments/migrations/1296949631_add_defensio_signature.rb +0 -11
  319. data/lib/zen/packages/custom_fields/LICENSE +0 -19
  320. data/lib/zen/packages/custom_fields/README.textile +0 -0
  321. data/lib/zen/packages/custom_fields/lib/custom_fields/controller/custom_field_groups.rb +0 -179
  322. data/lib/zen/packages/custom_fields/lib/custom_fields/controller/custom_fields.rb +0 -194
  323. data/lib/zen/packages/custom_fields/lib/custom_fields/language/en/custom_field_groups.rb +0 -45
  324. data/lib/zen/packages/custom_fields/lib/custom_fields/language/en/custom_fields.rb +0 -64
  325. data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_field_groups/edit.xhtml +0 -7
  326. data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_field_groups/form.xhtml +0 -18
  327. data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_field_groups/index.xhtml +0 -88
  328. data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_field_groups/new.xhtml +0 -7
  329. data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_fields/edit.xhtml +0 -7
  330. data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_fields/form.xhtml +0 -50
  331. data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_fields/index.xhtml +0 -75
  332. data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_fields/new.xhtml +0 -7
  333. data/lib/zen/packages/sections/LICENSE +0 -19
  334. data/lib/zen/packages/sections/README.textile +0 -43
  335. data/lib/zen/packages/sections/lib/sections/language/en/section_entries.rb +0 -58
  336. data/lib/zen/packages/sections/lib/sections/language/en/sections.rb +0 -63
  337. data/lib/zen/packages/sections/lib/sections/model/section.rb +0 -43
  338. data/lib/zen/packages/sections/lib/sections/model/section_entry.rb +0 -43
  339. data/lib/zen/packages/sections/lib/sections/view/admin/edit.xhtml +0 -7
  340. data/lib/zen/packages/sections/lib/sections/view/admin/form.xhtml +0 -54
  341. data/lib/zen/packages/sections/lib/sections/view/admin/index.xhtml +0 -77
  342. data/lib/zen/packages/sections/lib/sections/view/admin/new.xhtml +0 -7
  343. data/lib/zen/packages/sections/lib/sections/view/admin/section_entries/edit.xhtml +0 -7
  344. data/lib/zen/packages/sections/lib/sections/view/admin/section_entries/form.xhtml +0 -147
  345. data/lib/zen/packages/sections/lib/sections/view/admin/section_entries/index.xhtml +0 -74
  346. data/lib/zen/packages/sections/lib/sections/view/admin/section_entries/new.xhtml +0 -7
  347. data/lib/zen/packages/sections/migrations/1296335671_userdata_section_entries.rb +0 -18
  348. data/lib/zen/packages/sections/migrations/1296936110_drop_comment_antispam.rb +0 -11
  349. data/lib/zen/packages/settings/README.textile +0 -0
  350. data/lib/zen/packages/settings/lib/settings/language/en/settings.rb +0 -56
  351. data/lib/zen/packages/settings/lib/settings/model/setting.rb +0 -38
  352. data/lib/zen/packages/settings/lib/settings/view/admin/settings/index.xhtml +0 -79
  353. data/lib/zen/packages/users/LICENSE +0 -19
  354. data/lib/zen/packages/users/README.textile +0 -0
  355. data/lib/zen/packages/users/lib/users/controller/access_rules.rb +0 -186
  356. data/lib/zen/packages/users/lib/users/controller/user_groups.rb +0 -171
  357. data/lib/zen/packages/users/lib/users/language/en/access_rules.rb +0 -49
  358. data/lib/zen/packages/users/lib/users/language/en/user_groups.rb +0 -42
  359. data/lib/zen/packages/users/lib/users/language/en/users.rb +0 -63
  360. data/lib/zen/packages/users/lib/users/public/admin/js/users/access_rules.js +0 -43
  361. data/lib/zen/packages/users/lib/users/view/admin/access_rules/edit.xhtml +0 -7
  362. data/lib/zen/packages/users/lib/users/view/admin/access_rules/form.xhtml +0 -68
  363. data/lib/zen/packages/users/lib/users/view/admin/access_rules/index.xhtml +0 -85
  364. data/lib/zen/packages/users/lib/users/view/admin/access_rules/new.xhtml +0 -7
  365. data/lib/zen/packages/users/lib/users/view/admin/user_groups/edit.xhtml +0 -7
  366. data/lib/zen/packages/users/lib/users/view/admin/user_groups/form.xhtml +0 -19
  367. data/lib/zen/packages/users/lib/users/view/admin/user_groups/index.xhtml +0 -69
  368. data/lib/zen/packages/users/lib/users/view/admin/user_groups/new.xhtml +0 -7
  369. data/lib/zen/packages/users/lib/users/view/admin/users/edit.xhtml +0 -7
  370. data/lib/zen/packages/users/lib/users/view/admin/users/form.xhtml +0 -25
  371. data/lib/zen/packages/users/lib/users/view/admin/users/index.xhtml +0 -73
  372. data/lib/zen/packages/users/lib/users/view/admin/users/login.xhtml +0 -22
  373. data/lib/zen/packages/users/lib/users/view/admin/users/new.xhtml +0 -7
  374. data/lib/zen/tasks.rb +0 -6
  375. data/proto/app/Rakefile +0 -2
  376. data/proto/module/LICENSE +0 -0
  377. data/proto/module/README.textile +0 -0
  378. data/proto/module/lib/module.rb +0 -15
  379. data/spec/javascript/css/base.css +0 -177
  380. data/spec/javascript/css/style.css +0 -204
  381. data/spec/javascript/css/typography.css +0 -70
  382. data/spec/javascript/editor/index.html +0 -65
  383. data/spec/javascript/images/close.png +0 -0
  384. data/spec/javascript/images/info.png +0 -0
  385. data/spec/javascript/js/editor.js +0 -16
  386. data/spec/javascript/js/modal.js +0 -12
  387. data/spec/javascript/js/namespace.js +0 -2
  388. data/spec/javascript/js/notification.js +0 -43
  389. data/spec/javascript/js/tabs.js +0 -8
  390. data/spec/javascript/modal/index.html +0 -45
  391. data/spec/javascript/notification/index.html +0 -48
  392. data/spec/javascript/tabs/index.html +0 -73
  393. data/spec/javascript/tabs/tab_1.html +0 -1
  394. data/spec/javascript/tabs/tab_2.html +0 -1
  395. data/spec/zen/base/language.rb +0 -31
  396. data/spec/zen/base/logger.rb +0 -34
  397. data/spec/zen/base/package.rb +0 -47
  398. data/spec/zen/config/database.rb +0 -8
  399. data/spec/zen/helper/asset.rb +0 -26
  400. data/spec/zen/helper/breadcrumb.rb +0 -24
  401. data/spec/zen/language/en/general.rb +0 -4
  402. data/spec/zen/language/nl/general.rb +0 -4
  403. data/spec/zen/liquid/general.rb +0 -42
  404. data/spec/zen/logs/.gitkeep +0 -0
  405. data/spec/zen/spec.rb +0 -9
  406. data/spec/zen/spec_database.db +0 -0
  407. data/tasks/bacon.rake +0 -99
  408. data/tasks/build.rake +0 -72
  409. data/tasks/clean.rake +0 -18
  410. data/tasks/db.rake +0 -81
  411. data/tasks/doc.rake +0 -5
  412. data/tasks/extension.rake +0 -65
  413. data/tasks/proto.rake +0 -37
  414. data/tasks/theme.rake +0 -63
@@ -0,0 +1,259 @@
1
+ #:nodoc:
2
+ module CustomFields
3
+ #:nodoc:
4
+ module Controllers
5
+ ##
6
+ # Controller for managing custom fields. Custom fields are one of
7
+ # the most important elements in Zen. Custom fields can be used to
8
+ # create radio buttons, textareas, the whole shebang. Before
9
+ # being able to use a custom field you'll need to add it to a group
10
+ # and bind that group to a section.
11
+ #
12
+ # @author Yorick Peterse
13
+ # @since 0.1
14
+ #
15
+ class CustomFields < Zen::Controllers::AdminController
16
+ include ::CustomFields::Models
17
+
18
+ map '/admin/custom-fields'
19
+ trait :extension_identifier => 'com.zen.custom_fields'
20
+
21
+ before_all do
22
+ csrf_protection(:save, :delete) do
23
+ respond(lang('zen_general.errors.csrf'), 403)
24
+ end
25
+ end
26
+
27
+ ##
28
+ # Constructor method, called upon initialization. It's used to set the
29
+ # URL to which forms send their data and load the language pack.
30
+ #
31
+ # This method loads the following language files:
32
+ #
33
+ # * custom_fields
34
+ # * custom_field_groups
35
+ #
36
+ # @author Yorick Peterse
37
+ # @since 0.1
38
+ #
39
+ def initialize
40
+ super
41
+
42
+ @form_save_url = CustomFields.r(:save)
43
+ @form_delete_url = CustomFields.r(:delete)
44
+
45
+ Zen::Language.load('custom_fields')
46
+ Zen::Language.load('custom_field_groups')
47
+
48
+ # Set the page title
49
+ if !action.method.nil?
50
+ method = action.method.to_sym
51
+ @page_title = lang("custom_fields.titles.#{method}") rescue nil
52
+ end
53
+
54
+ # Build our array containing all custom field formats
55
+ @field_type_hash = {
56
+ 'textbox' => lang('custom_fields.special.type_hash.textbox'),
57
+ 'textarea' => lang('custom_fields.special.type_hash.textarea'),
58
+ 'radio' => lang('custom_fields.special.type_hash.radio'),
59
+ 'checkbox' => lang('custom_fields.special.type_hash.checkbox'),
60
+ 'date' => lang('custom_fields.special.type_hash.date'),
61
+ 'select' => lang('custom_fields.special.type_hash.select'),
62
+ 'select_multiple' => lang('custom_fields.special.type_hash.select_multiple')
63
+ }
64
+ end
65
+
66
+ ##
67
+ # Show an overview of all existing custom fields. Using this overview a user
68
+ # can manage an existing field, delete it or create a new one.
69
+ #
70
+ # This method requires the following permissions:
71
+ #
72
+ # * read
73
+ #
74
+ # @author Yorick Peterse
75
+ # @param [Integer] custom_field_group_id The ID of the custom field group to
76
+ # which all fields belong.
77
+ # @since 0.1
78
+ #
79
+ def index custom_field_group_id
80
+ if !user_authorized?([:read])
81
+ respond(lang('zen_general.errors.not_authorized'), 403)
82
+ end
83
+
84
+ set_breadcrumbs(
85
+ anchor_to(lang('custom_field_groups.titles.index'), CustomFieldGroups.r(:index)),
86
+ lang('custom_fields.titles.index')
87
+ )
88
+
89
+ @custom_field_group_id = custom_field_group_id.to_i
90
+ @custom_fields = CustomFieldGroup[@custom_field_group_id].custom_fields
91
+ end
92
+
93
+ ##
94
+ # Show a form that lets the user edit an existing custom field group.
95
+ #
96
+ # This method requires the following permissions:
97
+ #
98
+ # * read
99
+ # * update
100
+ #
101
+ # @author Yorick Peterse
102
+ # @param [Integer] custom_field_group_id The ID of the custom field group to
103
+ # which all fields belong.
104
+ # @param [Integer] id The ID of the custom field to retrieve so that we can edit it.
105
+ # @since 0.1
106
+ #
107
+ def edit custom_field_group_id, id
108
+ if !user_authorized?([:read, :update])
109
+ respond(lang('zen_general.errors.not_authorized'), 403)
110
+ end
111
+
112
+ set_breadcrumbs(
113
+ anchor_to(lang('custom_field_groups.titles.index'), CustomFieldGroups.r(:index)),
114
+ anchor_to(lang('custom_fields.titles.index'), CustomFields.r(:index, custom_field_group_id)),
115
+ lang('custom_fields.titles.edit')
116
+ )
117
+
118
+ @custom_field_group_id = custom_field_group_id
119
+
120
+ if flash[:form_data]
121
+ @custom_field = flash[:form_data]
122
+ else
123
+ @custom_field = CustomField[id.to_i]
124
+ end
125
+ end
126
+
127
+ ##
128
+ # Show a form that lets the user create a new custom field group.
129
+ #
130
+ # This method requires the following permissions:
131
+ #
132
+ # * create
133
+ # * read
134
+ #
135
+ # @author Yorick Peterse
136
+ # @param [Integer] custom_field_group_id The ID of the custom field group to
137
+ # which all fields belong.
138
+ # @since 0.1
139
+ #
140
+ def new custom_field_group_id
141
+ if !user_authorized?([:read, :create])
142
+ respond(lang('zen_general.errors.not_authorized'), 403)
143
+ end
144
+
145
+ set_breadcrumbs(
146
+ anchor_to(lang('custom_field_groups.titles.index'), CustomFieldGroups.r(:index)),
147
+ anchor_to(lang('custom_fields.titles.index'), CustomFields.r(:index, custom_field_group_id)),
148
+ lang('custom_fields.titles.index')
149
+ )
150
+
151
+ @custom_field_group_id = custom_field_group_id
152
+ @custom_field = CustomField.new
153
+ end
154
+
155
+ ##
156
+ # Method used for processing the form data and redirecting the user back to
157
+ # the proper URL. Based on the value of a hidden field named 'id' we'll determine
158
+ # if the data will be used to create a new custom field or to update an existing one.
159
+ #
160
+ # This method requires the following permissions:
161
+ #
162
+ # * create
163
+ # * update
164
+ #
165
+ # @author Yorick Peterse
166
+ # @since 0.1
167
+ #
168
+ def save
169
+ if !user_authorized?([:create, :update])
170
+ respond(lang('zen_general.errors.not_authorized'), 403)
171
+ end
172
+
173
+ post = request.params.dup
174
+ custom_field_group_id = post['custom_field_group_id']
175
+
176
+ post.delete('slug') if post['slug'].empty?
177
+
178
+ # Get or create a custom field group based on the ID from the hidden field.
179
+ if post['id'] and !post['id'].empty?
180
+ @custom_field = CustomField[post['id'].to_i]
181
+ save_action = :save
182
+ else
183
+ @custom_field = CustomField.new
184
+ save_action = :new
185
+ end
186
+
187
+ flash_success = lang("custom_fields.success.#{save_action}")
188
+ flash_error = lang("custom_fields.errors.#{save_action}")
189
+
190
+ begin
191
+ @custom_field.update(post)
192
+ notification(:success, lang('custom_fields.titles.index'), flash_success)
193
+ rescue
194
+ notification(:error, lang('custom_fields.titles.index'), flash_error)
195
+
196
+ flash[:form_data] = @custom_field
197
+ flash[:form_errors] = @custom_field.errors
198
+ end
199
+
200
+ if @custom_field.id
201
+ redirect(CustomFields.r(:edit, custom_field_group_id, @custom_field.id))
202
+ else
203
+ redirect(CustomFields.r(:new, custom_field_group_id))
204
+ end
205
+ end
206
+
207
+ ##
208
+ # Delete an existing custom field.
209
+ #
210
+ # In order to delete a custom field group you'll need to send a POST request that
211
+ # contains a field named 'custom_field_ids[]'. This field should contain the
212
+ # primary values of each field that has to be deleted.
213
+ #
214
+ # This method requires the following permissions:
215
+ #
216
+ # * delete
217
+ #
218
+ # @author Yorick Peterse
219
+ # @since 0.1
220
+ #
221
+ def delete
222
+ if !user_authorized?([:delete])
223
+ respond(lang('zen_general.errors.not_authorized'), 403)
224
+ end
225
+
226
+ post = request.params.dup
227
+
228
+ if !request.params['custom_field_ids'] or request.params['custom_field_ids'].empty?
229
+ notification(
230
+ :error,
231
+ lang('custom_fields.titles.index'),
232
+ lang('custom_fields.errors.no_delete')
233
+ )
234
+
235
+ redirect(CustomFields.r(:index, post['custom_field_group_id']))
236
+ end
237
+
238
+ request.params['custom_field_ids'].each do |id|
239
+ begin
240
+ CustomField[id.to_i].destroy
241
+ notification(
242
+ :success,
243
+ lang('custom_fields.titles.index'),
244
+ lang('custom_fields.success.delete')
245
+ )
246
+ rescue
247
+ notification(
248
+ :error,
249
+ lang('custom_fields.titles.index'),
250
+ lang('custom_fields.errors.delete') % id
251
+ )
252
+ end
253
+ end
254
+
255
+ redirect_referrer
256
+ end
257
+ end
258
+ end
259
+ end
@@ -0,0 +1,32 @@
1
+ ---
2
+ titles:
3
+ index: 'Custom Field Groups'
4
+ edit: 'Edit Custom Field Group'
5
+ new: 'Add Custom Field Group'
6
+
7
+ labels:
8
+ id : '#'
9
+ name : 'Name'
10
+ description : 'Description'
11
+ sections : 'Sections'
12
+ manage_fields : 'Manage custom fields'
13
+ none : 'None'
14
+
15
+ messages:
16
+ no_groups : 'No custom field groups have been created yet.'
17
+
18
+ errors:
19
+ new : 'Failed to create a new custom field group.'
20
+ save : 'Failed to modify the custom field group.'
21
+ delete : 'Failed to delete the custom field group with ID #%s'
22
+ no_delete : "You haven't specified any custom field groups to delete"
23
+
24
+ success:
25
+ new : 'The custom field group has been created.'
26
+ save : 'The custom field group has been modified.'
27
+ delete : 'The selected custom field groups have been deleted.'
28
+
29
+ buttons:
30
+ new : 'Add group'
31
+ delete : 'Delete selected groups'
32
+ save : 'Save group'
@@ -0,0 +1,52 @@
1
+ ---
2
+ titles:
3
+ index : 'Custom Fields'
4
+ edit : 'Edit Custom Field'
5
+ new : 'Add Custom Field'
6
+
7
+ labels:
8
+ id : '#'
9
+ name : 'Name'
10
+ slug : 'Slug'
11
+ type : 'Type'
12
+ format : 'Format'
13
+ description : 'Description'
14
+ possible_values : 'Possible values (one value per line)'
15
+ required : 'Requires a value'
16
+ visual_editor : 'Enable the visual editor'
17
+ textarea_rows : 'Textarea rows'
18
+ text_limit : 'Character limit'
19
+ sort_order : 'Sort order'
20
+
21
+ tabs:
22
+ general : 'General'
23
+ settings : 'Settings'
24
+
25
+ messages:
26
+ no_fields : 'No custom fields have been added yet.'
27
+
28
+ errors:
29
+ new : 'Failed to create a new custom field.'
30
+ save : 'Failed to modify the custom field.'
31
+ delete : 'Failed to delete the custom field with ID #%s.'
32
+ no_delete : "You haven't specified any custom fields to delete."
33
+
34
+ success:
35
+ new : 'The new custom field has been created.'
36
+ save : 'The custom field has been modified.'
37
+ delete : 'The selected custom fields have been deleted.'
38
+
39
+ special:
40
+ type_hash:
41
+ textbox : 'Textbox'
42
+ textarea : 'Textarea'
43
+ radio : 'Radio button'
44
+ checkbox : 'Checkboxe'
45
+ date : 'Date'
46
+ select : 'Select dropdown'
47
+ select_multiple : 'Multi select'
48
+
49
+ buttons:
50
+ new : 'Add custom field'
51
+ delete : 'Delete selected fields'
52
+ save : 'Save custom field'
@@ -1,4 +1,6 @@
1
+ #:nodoc:
1
2
  module CustomFields
3
+ #:nodoc:
2
4
  module Models
3
5
  ##
4
6
  # Model that represents a single custom field. This model has the following
@@ -17,7 +19,10 @@ module CustomFields
17
19
  # @since 0.1
18
20
  #
19
21
  class CustomField < Sequel::Model
20
- one_to_many :custom_field_values, :class => "CustomFields::Models::CustomFieldValue"
22
+ one_to_many(
23
+ :custom_field_values,
24
+ :class => "CustomFields::Models::CustomFieldValue"
25
+ )
21
26
 
22
27
  plugin :sluggable, :source => :name, :freeze => false
23
28
 
@@ -28,13 +33,13 @@ module CustomFields
28
33
  # @since 0.1
29
34
  #
30
35
  def validate
31
- validates_presence [:name, :type, :format, :required, :visual_editor]
32
- validates_presence :slug unless new?
33
- validates_max_length 255 , [:name]
34
- validates_type TrueClass , [:required, :visual_editor]
35
- validates_integer [:sort_order, :textarea_rows, :text_limit]
36
+ validates_presence [:name, :type, :format, :required, :visual_editor]
37
+ validates_max_length 255 , [:name]
38
+ validates_type TrueClass, [:required, :visual_editor]
39
+ validates_integer [:sort_order, :textarea_rows, :text_limit]
36
40
 
37
- validates_unique :slug
41
+ validates_presence :slug unless new?
42
+ validates_unique :slug
38
43
  end
39
44
  end
40
45
  end
@@ -1,4 +1,6 @@
1
+ #:nodoc:
1
2
  module CustomFields
3
+ #:nodoc:
2
4
  module Models
3
5
  ##
4
6
  # Model that represents a single custom field group. This model has
@@ -14,8 +16,16 @@ module CustomFields
14
16
  # @since 0.1
15
17
  #
16
18
  class CustomFieldGroup < Sequel::Model
17
- one_to_many :custom_fields, :class => "CustomFields::Models::CustomField", :order => :sort_order
18
- many_to_many :sections , :class => "Sections::Models::Section"
19
+ one_to_many(
20
+ :custom_fields,
21
+ :class => "CustomFields::Models::CustomField",
22
+ :order => :sort_order
23
+ )
24
+
25
+ many_to_many(
26
+ :sections,
27
+ :class => "Sections::Models::Section"
28
+ )
19
29
 
20
30
  ##
21
31
  # Validates rules used whenever the model is created or saved.
@@ -24,8 +34,8 @@ module CustomFields
24
34
  # @since 0.1
25
35
  #
26
36
  def validate
27
- validates_presence [:name]
28
- validates_max_length 255, [:name]
37
+ validates_presence :name
38
+ validates_max_length 255, :name
29
39
  end
30
40
  end
31
41
  end
@@ -1,4 +1,6 @@
1
+ #:nodoc:
1
2
  module CustomFields
3
+ #:nodoc:
2
4
  module Models
3
5
  ##
4
6
  # Model that represents a single custom field value. This model
@@ -13,8 +15,8 @@ module CustomFields
13
15
  # @since 0.1
14
16
  #
15
17
  class CustomFieldValue < Sequel::Model
16
- many_to_one :custom_field , :class => "CustomFields::Models::CustomField"
17
- many_to_one :section_entry, :class => "Sections::Models::SectionEntry"
18
+ many_to_one(:custom_field , :class => "CustomFields::Models::CustomField")
19
+ many_to_one(:section_entry, :class => "Sections::Models::SectionEntry")
18
20
  end
19
21
  end
20
22
  end
@@ -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,30 @@
1
+ #{
2
+ form_for(
3
+ @field_group, :method => :post, :action => @form_save_url,
4
+ :id => :custom_field_group_form
5
+ ) do |f|
6
+
7
+ f.input_hidden(:id, @field_group.id)
8
+ f.input_hidden(:csrf_token, get_csrf_token)
9
+
10
+ f.g.div(:id => 'general') do
11
+ f.input_text(
12
+ lang('custom_field_groups.labels.name'),
13
+ :name
14
+ )
15
+
16
+ f.textarea(
17
+ lang('custom_field_groups.labels.description'),
18
+ :description,
19
+ :rows => 8
20
+ )
21
+ end
22
+
23
+ f.g.div(:class => 'clearfix') do
24
+ f.g.div(:class => 'button') do
25
+ f.g.input(:type => 'submit', :value => lang('custom_field_groups.buttons.save'))
26
+ end
27
+ end
28
+
29
+ end
30
+ }