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.
- data/CHANGELOG.md +17 -0
- data/MANIFEST +161 -264
- data/README.md +114 -0
- data/ROADMAP.md +31 -0
- data/Thorfile +8 -0
- data/lib/zen.rb +13 -10
- data/lib/zen/base/database.rb +34 -28
- data/lib/zen/base/language.rb +174 -92
- data/lib/zen/base/logger.rb +8 -6
- data/lib/zen/base/package.rb +36 -29
- data/lib/zen/base/version.rb +2 -1
- data/lib/zen/bin/zen_binary.rb +7 -71
- data/lib/zen/controller/admin_controller.rb +31 -11
- data/lib/zen/controller/base_controller.rb +13 -13
- data/lib/zen/controller/frontend_controller.rb +2 -0
- data/lib/zen/controller/main_controller.rb +9 -8
- data/lib/zen/helper/acl.rb +4 -1
- data/lib/zen/helper/asset.rb +5 -3
- data/lib/zen/helper/breadcrumb.rb +10 -8
- data/lib/zen/helper/common.rb +28 -13
- data/lib/zen/language/en/zen_general.yml +31 -0
- data/lib/zen/language/en/zen_models.yml +13 -0
- data/lib/zen/layout/admin.xhtml +76 -68
- data/lib/zen/layout/login.xhtml +48 -42
- data/lib/zen/liquid/controller_behavior.rb +2 -0
- data/lib/zen/liquid/general.rb +60 -9
- data/lib/zen/liquid/redirect.rb +29 -6
- data/lib/zen/liquid/strip.rb +3 -1
- data/lib/zen/model/methods.rb +7 -5
- data/lib/zen/model/settings.rb +69 -18
- data/lib/zen/package/all.rb +7 -0
- data/lib/zen/{packages → package}/categories/lib/categories.rb +3 -3
- data/lib/zen/package/categories/lib/categories/controller/categories.rb +250 -0
- data/lib/zen/package/categories/lib/categories/controller/category_groups.rb +216 -0
- data/lib/zen/package/categories/lib/categories/language/en/categories.yml +35 -0
- data/lib/zen/package/categories/lib/categories/language/en/category_groups.yml +32 -0
- data/lib/zen/package/categories/lib/categories/liquid/categories.rb +16 -0
- data/lib/zen/{packages → package}/categories/lib/categories/model/category.rb +9 -9
- data/lib/zen/{packages → package}/categories/lib/categories/model/category_group.rb +6 -4
- data/lib/zen/package/categories/lib/categories/view/admin/categories/edit.xhtml +7 -0
- data/lib/zen/package/categories/lib/categories/view/admin/categories/form.xhtml +59 -0
- data/lib/zen/package/categories/lib/categories/view/admin/categories/index.xhtml +78 -0
- data/lib/zen/package/categories/lib/categories/view/admin/categories/new.xhtml +7 -0
- data/lib/zen/package/categories/lib/categories/view/admin/category-groups/edit.xhtml +7 -0
- data/lib/zen/package/categories/lib/categories/view/admin/category-groups/form.xhtml +31 -0
- data/lib/zen/package/categories/lib/categories/view/admin/category-groups/index.xhtml +85 -0
- data/lib/zen/package/categories/lib/categories/view/admin/category-groups/new.xhtml +7 -0
- data/lib/zen/{packages → package}/categories/migrations/.gitkeep +0 -0
- data/lib/zen/{packages → package}/categories/migrations/1295282303_create_schema.rb +3 -2
- data/lib/zen/{packages → package}/comments/lib/comments.rb +1 -1
- data/lib/zen/{packages → package}/comments/lib/comments/controller/comments.rb +81 -41
- data/lib/zen/{packages → package}/comments/lib/comments/controller/comments_form.rb +15 -13
- data/lib/zen/package/comments/lib/comments/language/en/comments.yml +42 -0
- data/lib/zen/{packages → package}/comments/lib/comments/liquid/comment_form.rb +43 -13
- data/lib/zen/{packages → package}/comments/lib/comments/liquid/comments.rb +10 -12
- data/lib/zen/{packages → package}/comments/lib/comments/model/comment.rb +24 -0
- data/lib/zen/package/comments/lib/comments/view/admin/comments/edit.xhtml +7 -0
- data/lib/zen/package/comments/lib/comments/view/admin/comments/form.xhtml +57 -0
- data/lib/zen/package/comments/lib/comments/view/admin/comments/index.xhtml +79 -0
- data/lib/zen/{packages → package}/comments/migrations/.gitkeep +0 -0
- data/lib/zen/{packages → package}/comments/migrations/1295282202_create_schema.rb +6 -4
- data/lib/zen/{packages → package}/custom_fields/lib/custom_fields.rb +2 -2
- data/lib/zen/package/custom_fields/lib/custom_fields/controller/custom_field_groups.rb +224 -0
- data/lib/zen/package/custom_fields/lib/custom_fields/controller/custom_fields.rb +259 -0
- data/lib/zen/package/custom_fields/lib/custom_fields/language/en/custom_field_groups.yml +32 -0
- data/lib/zen/package/custom_fields/lib/custom_fields/language/en/custom_fields.yml +52 -0
- data/lib/zen/{packages → package}/custom_fields/lib/custom_fields/model/custom_field.rb +12 -7
- data/lib/zen/{packages → package}/custom_fields/lib/custom_fields/model/custom_field_group.rb +14 -4
- data/lib/zen/{packages → package}/custom_fields/lib/custom_fields/model/custom_field_value.rb +4 -2
- data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-groups/edit.xhtml +7 -0
- data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-groups/form.xhtml +30 -0
- data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-groups/index.xhtml +100 -0
- data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-groups/new.xhtml +7 -0
- data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-fields/edit.xhtml +7 -0
- data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-fields/form.xhtml +107 -0
- data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-fields/index.xhtml +84 -0
- data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-fields/new.xhtml +7 -0
- data/lib/zen/{packages → package}/custom_fields/migrations/.gitkeep +0 -0
- data/lib/zen/{packages → package}/custom_fields/migrations/1295255665_create_schema.rb +8 -7
- data/lib/zen/package/menus/lib/menus.rb +59 -0
- data/lib/zen/package/menus/lib/menus/controller/menu_items.rb +244 -0
- data/lib/zen/package/menus/lib/menus/controller/menus.rb +231 -0
- data/lib/zen/package/menus/lib/menus/helper/menu_item.rb +93 -0
- data/lib/zen/package/menus/lib/menus/language/en/menu_items.yml +41 -0
- data/lib/zen/package/menus/lib/menus/language/en/menus.yml +39 -0
- data/lib/zen/package/menus/lib/menus/liquid/menus.rb +152 -0
- data/lib/zen/package/menus/lib/menus/model/menu.rb +38 -0
- data/lib/zen/package/menus/lib/menus/model/menu_item.rb +33 -0
- data/lib/zen/package/menus/lib/menus/view/admin/menu-items/edit.xhtml +7 -0
- data/lib/zen/package/menus/lib/menus/view/admin/menu-items/form.xhtml +64 -0
- data/lib/zen/package/menus/lib/menus/view/admin/menu-items/index.xhtml +84 -0
- data/lib/zen/package/menus/lib/menus/view/admin/menu-items/new.xhtml +7 -0
- data/lib/zen/package/menus/lib/menus/view/admin/menus/edit.xhtml +7 -0
- data/lib/zen/package/menus/lib/menus/view/admin/menus/form.xhtml +42 -0
- data/lib/zen/package/menus/lib/menus/view/admin/menus/index.xhtml +95 -0
- data/lib/zen/package/menus/lib/menus/view/admin/menus/new.xhtml +7 -0
- data/lib/zen/{packages/sections → package/menus}/migrations/.gitkeep +0 -0
- data/lib/zen/package/menus/migrations/1297184342_create_schema.rb +33 -0
- data/lib/zen/{packages → package}/sections/lib/sections.rb +0 -0
- data/lib/zen/{packages → package}/sections/lib/sections/controller/section_entries.rb +132 -68
- data/lib/zen/{packages → package}/sections/lib/sections/controller/sections.rb +96 -48
- data/lib/zen/package/sections/lib/sections/language/en/section_entries.yml +43 -0
- data/lib/zen/package/sections/lib/sections/language/en/sections.yml +48 -0
- data/lib/zen/{packages → package}/sections/lib/sections/liquid/section_entries.rb +55 -43
- data/lib/zen/{packages → package}/sections/lib/sections/liquid/sections.rb +9 -8
- data/lib/zen/package/sections/lib/sections/model/section.rb +62 -0
- data/lib/zen/package/sections/lib/sections/model/section_entry.rb +53 -0
- data/lib/zen/package/sections/lib/sections/view/admin/edit.xhtml +7 -0
- data/lib/zen/package/sections/lib/sections/view/admin/form.xhtml +107 -0
- data/lib/zen/package/sections/lib/sections/view/admin/index.xhtml +93 -0
- data/lib/zen/package/sections/lib/sections/view/admin/new.xhtml +7 -0
- data/lib/zen/package/sections/lib/sections/view/admin/section-entries/edit.xhtml +7 -0
- data/lib/zen/package/sections/lib/sections/view/admin/section-entries/form.xhtml +233 -0
- data/lib/zen/package/sections/lib/sections/view/admin/section-entries/index.xhtml +82 -0
- data/lib/zen/package/sections/lib/sections/view/admin/section-entries/new.xhtml +7 -0
- data/lib/zen/{packages/settings → package/sections}/migrations/.gitkeep +0 -0
- data/lib/zen/{packages → package}/sections/migrations/1295251836_create_schema.rb +6 -6
- data/lib/zen/{packages → package}/settings/lib/settings.rb +0 -0
- data/lib/zen/{packages → package}/settings/lib/settings/controller/settings.rb +33 -24
- data/lib/zen/package/settings/lib/settings/language/en/settings.yml +26 -0
- data/lib/zen/{packages → package}/settings/lib/settings/liquid/setting.rb +5 -3
- data/lib/zen/package/settings/lib/settings/model/setting.rb +113 -0
- data/lib/zen/package/settings/lib/settings/view/admin/settings/index.xhtml +111 -0
- data/lib/zen/{packages/users → package/settings}/migrations/.gitkeep +0 -0
- data/lib/zen/{packages → package}/settings/migrations/1295597111_create_schema.rb +2 -2
- data/lib/zen/package/settings/migrations/1299538742_add_language_key.rb +62 -0
- data/lib/zen/{packages → package}/users/lib/users.rb +6 -2
- data/lib/zen/package/users/lib/users/controller/access_rules.rb +238 -0
- data/lib/zen/package/users/lib/users/controller/user_groups.rb +217 -0
- data/lib/zen/{packages → package}/users/lib/users/controller/users.rb +115 -57
- data/lib/zen/package/users/lib/users/language/en/access_rules.yml +35 -0
- data/lib/zen/package/users/lib/users/language/en/user_groups.yml +31 -0
- data/lib/zen/package/users/lib/users/language/en/users.yml +50 -0
- data/lib/zen/{packages → package}/users/lib/users/liquid/user.rb +8 -6
- data/lib/zen/{packages → package}/users/lib/users/liquid/users.rb +5 -3
- data/lib/zen/{packages → package}/users/lib/users/model/access_rule.rb +11 -3
- data/lib/zen/{packages → package}/users/lib/users/model/user.rb +5 -1
- data/lib/zen/{packages → package}/users/lib/users/model/user_group.rb +6 -3
- data/lib/zen/package/users/lib/users/public/admin/js/users/access_rules.js +42 -0
- data/lib/zen/package/users/lib/users/view/admin/access-rules/edit.xhtml +7 -0
- data/lib/zen/package/users/lib/users/view/admin/access-rules/form.xhtml +108 -0
- data/lib/zen/package/users/lib/users/view/admin/access-rules/index.xhtml +93 -0
- data/lib/zen/package/users/lib/users/view/admin/access-rules/new.xhtml +7 -0
- data/lib/zen/package/users/lib/users/view/admin/user-groups/edit.xhtml +7 -0
- data/lib/zen/package/users/lib/users/view/admin/user-groups/form.xhtml +37 -0
- data/lib/zen/package/users/lib/users/view/admin/user-groups/index.xhtml +76 -0
- data/lib/zen/package/users/lib/users/view/admin/user-groups/new.xhtml +7 -0
- data/lib/zen/package/users/lib/users/view/admin/users/edit.xhtml +7 -0
- data/lib/zen/package/users/lib/users/view/admin/users/form.xhtml +53 -0
- data/lib/zen/package/users/lib/users/view/admin/users/index.xhtml +81 -0
- data/lib/zen/package/users/lib/users/view/admin/users/login.xhtml +27 -0
- data/lib/zen/package/users/lib/users/view/admin/users/new.xhtml +7 -0
- data/{pkg → lib/zen/package/users/migrations}/.gitkeep +0 -0
- data/lib/zen/{packages → package}/users/migrations/1295281013_create_schema.rb +2 -2
- data/lib/zen/public/admin/css/boilerplate.css +62 -60
- data/lib/zen/public/admin/css/buttons.css +46 -0
- data/lib/zen/public/admin/css/datepicker.css +163 -0
- data/lib/zen/public/admin/css/editor.css +91 -0
- data/lib/zen/public/admin/css/forms.css +68 -0
- data/lib/zen/public/admin/css/general.css +34 -419
- data/lib/zen/public/admin/css/grid.css +26 -26
- data/lib/zen/public/admin/css/layout.css +73 -62
- data/lib/zen/public/admin/css/modals.css +63 -0
- data/lib/zen/public/admin/css/notifications.css +84 -0
- data/lib/zen/public/admin/css/tables.css +71 -0
- data/lib/zen/public/admin/css/tabs.css +53 -0
- data/lib/zen/public/admin/js/mootools/more.js +139 -51
- data/lib/zen/public/admin/js/vendor/datepicker/Picker.Attach.js +137 -0
- data/lib/zen/public/admin/js/vendor/datepicker/Picker.Date.js +576 -0
- data/lib/zen/public/admin/js/vendor/datepicker/Picker.js +291 -0
- data/lib/zen/public/admin/js/vendor/datepicker/README.md +325 -0
- data/lib/zen/public/admin/js/vendor/datepicker/locale.js +16 -0
- data/lib/zen/public/admin/js/zen/editor/base.js +173 -183
- data/lib/zen/public/admin/js/zen/editor/drivers/html.js +74 -89
- data/lib/zen/public/admin/js/zen/editor/drivers/markdown.js +72 -87
- data/lib/zen/public/admin/js/zen/editor/drivers/textile.js +72 -87
- data/lib/zen/public/admin/js/zen/init.js +65 -51
- data/lib/zen/public/admin/js/zen/modal.js +108 -121
- data/lib/zen/public/admin/js/zen/notification.js +163 -165
- data/lib/zen/public/admin/js/zen/tabs.js +203 -210
- data/lib/zen/task/build.rb +123 -0
- data/lib/zen/task/clean.rb +46 -0
- data/lib/zen/task/db.rb +120 -0
- data/lib/zen/task/package.rb +82 -0
- data/lib/zen/task/proto.rb +116 -0
- data/{LICENSE → license.txt} +2 -2
- data/proto/app/Thorfile +4 -0
- data/proto/app/config/middlewares.rb +3 -3
- data/proto/app/config/requires.rb +1 -6
- data/proto/app/start.rb +5 -10
- data/{lib/zen/packages/settings → proto/package}/LICENSE +0 -0
- data/{lib/zen/packages/categories → proto/package}/README.textile +0 -0
- data/proto/package/lib/package.rb +41 -0
- data/proto/{module/lib/module → package/lib/package}/controller/controllers.rb +3 -2
- data/proto/{module/lib/module → package/lib/package}/language/en/languages.rb +0 -0
- data/proto/{module/lib/module → package/lib/package}/model/model.rb +0 -0
- data/proto/{module/lib/module/view/admin → package/lib/package/view/admin/package}/edit.xhtml +0 -0
- data/proto/{module/lib/module/view/admin → package/lib/package/view/admin/package}/form.xhtml +0 -0
- data/proto/{module/lib/module/view/admin → package/lib/package/view/admin/package}/index.xhtml +0 -0
- data/proto/{module/lib/module/view/admin → package/lib/package/view/admin/package}/new.xhtml +0 -0
- data/proto/{module → package}/migrations/.gitkeep +0 -0
- metadata +199 -280
- data/README.textile +0 -42
- data/Rakefile +0 -6
- data/doc/Categories.html +0 -93
- data/doc/Categories/Controllers.html +0 -93
- data/doc/Categories/Controllers/Categories.html +0 -995
- data/doc/Categories/Controllers/CategoryGroups.html +0 -878
- data/doc/Categories/Models.html +0 -97
- data/doc/Categories/Models/Category.html +0 -269
- data/doc/Categories/Models/CategoryGroup.html +0 -231
- data/doc/Comments.html +0 -93
- data/doc/Comments/Controllers.html +0 -93
- data/doc/Comments/Controllers/Comments.html +0 -797
- data/doc/Comments/Controllers/CommentsForm.html +0 -487
- data/doc/Comments/Liquid.html +0 -93
- data/doc/Comments/Liquid/CommentForm.html +0 -522
- data/doc/Comments/Liquid/Comments.html +0 -543
- data/doc/Comments/Models.html +0 -95
- data/doc/Comments/Models/Comment.html +0 -260
- data/doc/CustomFields.html +0 -93
- data/doc/CustomFields/Controllers.html +0 -93
- data/doc/CustomFields/Controllers/CustomFieldGroups.html +0 -902
- data/doc/CustomFields/Controllers/CustomFields.html +0 -974
- data/doc/CustomFields/Models.html +0 -97
- data/doc/CustomFields/Models/CustomField.html +0 -272
- data/doc/CustomFields/Models/CustomFieldGroup.html +0 -259
- data/doc/CustomFields/Models/CustomFieldValue.html +0 -154
- data/doc/Ramaze.html +0 -93
- data/doc/Ramaze/Helper.html +0 -93
- data/doc/Ramaze/Helper/ACL.html +0 -531
- data/doc/Ramaze/Helper/Asset.html +0 -617
- data/doc/Ramaze/Helper/Breadcrumb.html +0 -411
- data/doc/Ramaze/Helper/Common.html +0 -738
- data/doc/Sections.html +0 -93
- data/doc/Sections/Controllers.html +0 -93
- data/doc/Sections/Controllers/SectionEntries.html +0 -1100
- data/doc/Sections/Controllers/Sections.html +0 -953
- data/doc/Sections/Liquid.html +0 -93
- data/doc/Sections/Liquid/SectionEntries.html +0 -674
- data/doc/Sections/Liquid/Sections.html +0 -494
- data/doc/Sections/Models.html +0 -97
- data/doc/Sections/Models/Section.html +0 -272
- data/doc/Sections/Models/SectionEntry.html +0 -264
- data/doc/Sequel.html +0 -91
- data/doc/Sequel/Model.html +0 -243
- data/doc/Settings.html +0 -93
- data/doc/Settings/Controllers.html +0 -91
- data/doc/Settings/Controllers/Settings.html +0 -565
- data/doc/Settings/Liquid.html +0 -91
- data/doc/Settings/Liquid/Setting.html +0 -426
- data/doc/Settings/Models.html +0 -95
- data/doc/Settings/Models/Setting.html +0 -293
- data/doc/Users.html +0 -93
- data/doc/Users/Controllers.html +0 -93
- data/doc/Users/Controllers/AccessRules.html +0 -904
- data/doc/Users/Controllers/UserGroups.html +0 -879
- data/doc/Users/Controllers/Users.html +0 -1124
- data/doc/Users/Liquid.html +0 -93
- data/doc/Users/Liquid/User.html +0 -480
- data/doc/Users/Liquid/Users.html +0 -495
- data/doc/Users/Models.html +0 -97
- data/doc/Users/Models/AccessRule.html +0 -257
- data/doc/Users/Models/User.html +0 -649
- data/doc/Users/Models/UserGroup.html +0 -267
- data/doc/Zen.html +0 -391
- data/doc/Zen/Bin.html +0 -113
- data/doc/Zen/Bin/Base.html +0 -727
- data/doc/Zen/Controllers.html +0 -115
- data/doc/Zen/Controllers/AdminController.html +0 -298
- data/doc/Zen/Controllers/BaseController.html +0 -272
- data/doc/Zen/Controllers/FrontendController.html +0 -164
- data/doc/Zen/Controllers/MainController.html +0 -421
- data/doc/Zen/Database.html +0 -498
- data/doc/Zen/Language.html +0 -660
- data/doc/Zen/Liquid.html +0 -117
- data/doc/Zen/Liquid/ControllerBehavior.html +0 -448
- data/doc/Zen/Liquid/General.html +0 -444
- data/doc/Zen/Liquid/Redirect.html +0 -435
- data/doc/Zen/Liquid/Strip.html +0 -447
- data/doc/Zen/Logger.html +0 -393
- data/doc/Zen/Package.html +0 -909
- data/doc/_index.html +0 -724
- data/doc/class_list.html +0 -36
- data/doc/css/common.css +0 -1
- data/doc/css/full_list.css +0 -53
- data/doc/css/style.css +0 -310
- data/doc/file.README.html +0 -86
- data/doc/file_list.html +0 -38
- data/doc/frames.html +0 -13
- data/doc/index.html +0 -86
- data/doc/js/app.js +0 -203
- data/doc/js/full_list.js +0 -149
- data/doc/js/jquery.js +0 -154
- data/doc/method_list.html +0 -1139
- data/doc/top-level-namespace.html +0 -88
- data/lib/zen/language/en/zen_general.rb +0 -21
- data/lib/zen/language/en/zen_models.rb +0 -39
- data/lib/zen/packages/categories/LICENSE +0 -19
- data/lib/zen/packages/categories/lib/categories/controller/categories.rb +0 -202
- data/lib/zen/packages/categories/lib/categories/controller/category_groups.rb +0 -173
- data/lib/zen/packages/categories/lib/categories/language/en/categories.rb +0 -38
- data/lib/zen/packages/categories/lib/categories/language/en/category_groups.rb +0 -37
- data/lib/zen/packages/categories/lib/categories/view/admin/categories/edit.xhtml +0 -7
- data/lib/zen/packages/categories/lib/categories/view/admin/categories/form.xhtml +0 -36
- data/lib/zen/packages/categories/lib/categories/view/admin/categories/index.xhtml +0 -70
- data/lib/zen/packages/categories/lib/categories/view/admin/categories/new.xhtml +0 -7
- data/lib/zen/packages/categories/lib/categories/view/admin/category_groups/edit.xhtml +0 -7
- data/lib/zen/packages/categories/lib/categories/view/admin/category_groups/form.xhtml +0 -18
- data/lib/zen/packages/categories/lib/categories/view/admin/category_groups/index.xhtml +0 -72
- data/lib/zen/packages/categories/lib/categories/view/admin/category_groups/new.xhtml +0 -7
- data/lib/zen/packages/comments/LICENSE +0 -19
- data/lib/zen/packages/comments/README.textile +0 -0
- data/lib/zen/packages/comments/lib/comments/language/en/comments.rb +0 -52
- data/lib/zen/packages/comments/lib/comments/view/admin/comments/edit.xhtml +0 -7
- data/lib/zen/packages/comments/lib/comments/view/admin/comments/form.xhtml +0 -31
- data/lib/zen/packages/comments/lib/comments/view/admin/comments/index.xhtml +0 -74
- data/lib/zen/packages/comments/migrations/1296949631_add_defensio_signature.rb +0 -11
- data/lib/zen/packages/custom_fields/LICENSE +0 -19
- data/lib/zen/packages/custom_fields/README.textile +0 -0
- data/lib/zen/packages/custom_fields/lib/custom_fields/controller/custom_field_groups.rb +0 -179
- data/lib/zen/packages/custom_fields/lib/custom_fields/controller/custom_fields.rb +0 -194
- data/lib/zen/packages/custom_fields/lib/custom_fields/language/en/custom_field_groups.rb +0 -45
- data/lib/zen/packages/custom_fields/lib/custom_fields/language/en/custom_fields.rb +0 -64
- data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_field_groups/edit.xhtml +0 -7
- data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_field_groups/form.xhtml +0 -18
- data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_field_groups/index.xhtml +0 -88
- data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_field_groups/new.xhtml +0 -7
- data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_fields/edit.xhtml +0 -7
- data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_fields/form.xhtml +0 -50
- data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_fields/index.xhtml +0 -75
- data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_fields/new.xhtml +0 -7
- data/lib/zen/packages/sections/LICENSE +0 -19
- data/lib/zen/packages/sections/README.textile +0 -43
- data/lib/zen/packages/sections/lib/sections/language/en/section_entries.rb +0 -58
- data/lib/zen/packages/sections/lib/sections/language/en/sections.rb +0 -63
- data/lib/zen/packages/sections/lib/sections/model/section.rb +0 -43
- data/lib/zen/packages/sections/lib/sections/model/section_entry.rb +0 -43
- data/lib/zen/packages/sections/lib/sections/view/admin/edit.xhtml +0 -7
- data/lib/zen/packages/sections/lib/sections/view/admin/form.xhtml +0 -54
- data/lib/zen/packages/sections/lib/sections/view/admin/index.xhtml +0 -77
- data/lib/zen/packages/sections/lib/sections/view/admin/new.xhtml +0 -7
- data/lib/zen/packages/sections/lib/sections/view/admin/section_entries/edit.xhtml +0 -7
- data/lib/zen/packages/sections/lib/sections/view/admin/section_entries/form.xhtml +0 -147
- data/lib/zen/packages/sections/lib/sections/view/admin/section_entries/index.xhtml +0 -74
- data/lib/zen/packages/sections/lib/sections/view/admin/section_entries/new.xhtml +0 -7
- data/lib/zen/packages/sections/migrations/1296335671_userdata_section_entries.rb +0 -18
- data/lib/zen/packages/sections/migrations/1296936110_drop_comment_antispam.rb +0 -11
- data/lib/zen/packages/settings/README.textile +0 -0
- data/lib/zen/packages/settings/lib/settings/language/en/settings.rb +0 -56
- data/lib/zen/packages/settings/lib/settings/model/setting.rb +0 -38
- data/lib/zen/packages/settings/lib/settings/view/admin/settings/index.xhtml +0 -79
- data/lib/zen/packages/users/LICENSE +0 -19
- data/lib/zen/packages/users/README.textile +0 -0
- data/lib/zen/packages/users/lib/users/controller/access_rules.rb +0 -186
- data/lib/zen/packages/users/lib/users/controller/user_groups.rb +0 -171
- data/lib/zen/packages/users/lib/users/language/en/access_rules.rb +0 -49
- data/lib/zen/packages/users/lib/users/language/en/user_groups.rb +0 -42
- data/lib/zen/packages/users/lib/users/language/en/users.rb +0 -63
- data/lib/zen/packages/users/lib/users/public/admin/js/users/access_rules.js +0 -43
- data/lib/zen/packages/users/lib/users/view/admin/access_rules/edit.xhtml +0 -7
- data/lib/zen/packages/users/lib/users/view/admin/access_rules/form.xhtml +0 -68
- data/lib/zen/packages/users/lib/users/view/admin/access_rules/index.xhtml +0 -85
- data/lib/zen/packages/users/lib/users/view/admin/access_rules/new.xhtml +0 -7
- data/lib/zen/packages/users/lib/users/view/admin/user_groups/edit.xhtml +0 -7
- data/lib/zen/packages/users/lib/users/view/admin/user_groups/form.xhtml +0 -19
- data/lib/zen/packages/users/lib/users/view/admin/user_groups/index.xhtml +0 -69
- data/lib/zen/packages/users/lib/users/view/admin/user_groups/new.xhtml +0 -7
- data/lib/zen/packages/users/lib/users/view/admin/users/edit.xhtml +0 -7
- data/lib/zen/packages/users/lib/users/view/admin/users/form.xhtml +0 -25
- data/lib/zen/packages/users/lib/users/view/admin/users/index.xhtml +0 -73
- data/lib/zen/packages/users/lib/users/view/admin/users/login.xhtml +0 -22
- data/lib/zen/packages/users/lib/users/view/admin/users/new.xhtml +0 -7
- data/lib/zen/tasks.rb +0 -6
- data/proto/app/Rakefile +0 -2
- data/proto/module/LICENSE +0 -0
- data/proto/module/README.textile +0 -0
- data/proto/module/lib/module.rb +0 -15
- data/spec/javascript/css/base.css +0 -177
- data/spec/javascript/css/style.css +0 -204
- data/spec/javascript/css/typography.css +0 -70
- data/spec/javascript/editor/index.html +0 -65
- data/spec/javascript/images/close.png +0 -0
- data/spec/javascript/images/info.png +0 -0
- data/spec/javascript/js/editor.js +0 -16
- data/spec/javascript/js/modal.js +0 -12
- data/spec/javascript/js/namespace.js +0 -2
- data/spec/javascript/js/notification.js +0 -43
- data/spec/javascript/js/tabs.js +0 -8
- data/spec/javascript/modal/index.html +0 -45
- data/spec/javascript/notification/index.html +0 -48
- data/spec/javascript/tabs/index.html +0 -73
- data/spec/javascript/tabs/tab_1.html +0 -1
- data/spec/javascript/tabs/tab_2.html +0 -1
- data/spec/zen/base/language.rb +0 -31
- data/spec/zen/base/logger.rb +0 -34
- data/spec/zen/base/package.rb +0 -47
- data/spec/zen/config/database.rb +0 -8
- data/spec/zen/helper/asset.rb +0 -26
- data/spec/zen/helper/breadcrumb.rb +0 -24
- data/spec/zen/language/en/general.rb +0 -4
- data/spec/zen/language/nl/general.rb +0 -4
- data/spec/zen/liquid/general.rb +0 -42
- data/spec/zen/logs/.gitkeep +0 -0
- data/spec/zen/spec.rb +0 -9
- data/spec/zen/spec_database.db +0 -0
- data/tasks/bacon.rake +0 -99
- data/tasks/build.rake +0 -72
- data/tasks/clean.rake +0 -18
- data/tasks/db.rake +0 -81
- data/tasks/doc.rake +0 -5
- data/tasks/extension.rake +0 -65
- data/tasks/proto.rake +0 -37
- data/tasks/theme.rake +0 -63
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
#:nodoc:
|
|
2
|
+
module Menus
|
|
3
|
+
#:nodoc:
|
|
4
|
+
module Controllers
|
|
5
|
+
##
|
|
6
|
+
# Controller for managing menu groups. Individual navigation items are managed using
|
|
7
|
+
# the menu items controller, simply named "menu_items".
|
|
8
|
+
#
|
|
9
|
+
# @author Yorick Peterse
|
|
10
|
+
# @since 0.2a
|
|
11
|
+
#
|
|
12
|
+
class Menus < Zen::Controllers::AdminController
|
|
13
|
+
include ::Menus::Models
|
|
14
|
+
|
|
15
|
+
map '/admin/menus'
|
|
16
|
+
trait :extension_identifier => 'com.zen.menus'
|
|
17
|
+
|
|
18
|
+
before_all do
|
|
19
|
+
csrf_protection(:save, :delete) do
|
|
20
|
+
respond(lang('zen_general.errors.csrf'), 403)
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
##
|
|
25
|
+
# Initializes the class and loads all required language packs.
|
|
26
|
+
#
|
|
27
|
+
# This method loads the following language files:
|
|
28
|
+
#
|
|
29
|
+
# * menus
|
|
30
|
+
#
|
|
31
|
+
# @author Yorick Peterse
|
|
32
|
+
# @since 0.2a
|
|
33
|
+
#
|
|
34
|
+
def initialize
|
|
35
|
+
super
|
|
36
|
+
|
|
37
|
+
@form_save_url = Menus.r(:save)
|
|
38
|
+
@form_delete_url = Menus.r(:delete)
|
|
39
|
+
|
|
40
|
+
Zen::Language.load('menus')
|
|
41
|
+
|
|
42
|
+
# Set the page title
|
|
43
|
+
if !action.method.nil?
|
|
44
|
+
method = action.method.to_sym
|
|
45
|
+
@page_title = lang("menus.titles.#{method}") rescue nil
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
##
|
|
50
|
+
# Shows an overview of all exisitng menus and a few properties of these
|
|
51
|
+
# groups such as the name, slug and the amount of items in that group.
|
|
52
|
+
#
|
|
53
|
+
# This method requires the following permissions:
|
|
54
|
+
#
|
|
55
|
+
# * read
|
|
56
|
+
#
|
|
57
|
+
# @author Yorick Peterse
|
|
58
|
+
# @since 0.2a
|
|
59
|
+
#
|
|
60
|
+
def index
|
|
61
|
+
if !user_authorized?([:read])
|
|
62
|
+
respond(lang('zen_general.errors.not_authorized'), 403)
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
# Set our breadcrumbs
|
|
66
|
+
set_breadcrumbs(lang('menus.titles.index'))
|
|
67
|
+
|
|
68
|
+
# Get all menus
|
|
69
|
+
@menus = Menu.all
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
##
|
|
73
|
+
# Show a form that allows the user to edit the details (such as the name and slug)
|
|
74
|
+
# of a menu group. This method can not be used to manage all menu items for this
|
|
75
|
+
# group.
|
|
76
|
+
#
|
|
77
|
+
# This method requires the following permissions:
|
|
78
|
+
#
|
|
79
|
+
# * read
|
|
80
|
+
# * update
|
|
81
|
+
#
|
|
82
|
+
# @author Yorick Peterse
|
|
83
|
+
# @since 0.2a
|
|
84
|
+
#
|
|
85
|
+
def edit(id)
|
|
86
|
+
if !user_authorized?([:read, :update])
|
|
87
|
+
respond(lang('zen_general.errors.not_authorized'), 403)
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
set_breadcrumbs(
|
|
91
|
+
anchor_to(lang('menus.titles.index'), Menus.r(:index)),
|
|
92
|
+
@page_title
|
|
93
|
+
)
|
|
94
|
+
|
|
95
|
+
if flash[:form_data]
|
|
96
|
+
@menu = flash[:form_data]
|
|
97
|
+
else
|
|
98
|
+
@menu = Menu[id]
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
##
|
|
103
|
+
# Show a form that can be used to create a new menu group. Once a menu group has
|
|
104
|
+
# been created users can start adding navigation items to the group.
|
|
105
|
+
#
|
|
106
|
+
# This method requires the following permissions:
|
|
107
|
+
#
|
|
108
|
+
# * create
|
|
109
|
+
# * read
|
|
110
|
+
#
|
|
111
|
+
# @author Yorick Peterse
|
|
112
|
+
# @since 0.2a
|
|
113
|
+
#
|
|
114
|
+
def new
|
|
115
|
+
if !user_authorized?([:create, :read])
|
|
116
|
+
respond(lang('zen_general.errors.not_authorized'), 403)
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
# Breadcrumbs, om nom nom!
|
|
120
|
+
set_breadcrumbs(
|
|
121
|
+
anchor_to(lang('menus.titles.index'), Menus.r(:index)),
|
|
122
|
+
@page_title
|
|
123
|
+
)
|
|
124
|
+
|
|
125
|
+
@menu = Menu.new
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
##
|
|
129
|
+
# Saves the changes made to an existing menu group or creates a new group using the
|
|
130
|
+
# supplied POST data. In order to detect this forms that contain data of an existing
|
|
131
|
+
# group should have a hidden field named "id", the value of this field is the primary
|
|
132
|
+
# value of the menu group of which the changes should be saved.
|
|
133
|
+
#
|
|
134
|
+
# This method requires the following permissions:
|
|
135
|
+
#
|
|
136
|
+
# * create
|
|
137
|
+
# * update
|
|
138
|
+
#
|
|
139
|
+
# @author Yorick Peterse
|
|
140
|
+
# @since 0.2a
|
|
141
|
+
#
|
|
142
|
+
def save
|
|
143
|
+
if !user_authorized?([:create, :update])
|
|
144
|
+
respond(lang('zen_general.errors.not_authorized'), 403)
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
# Fetch the POST data and store it in a variable so it's a bit easier to work with
|
|
148
|
+
post = request.params.dup
|
|
149
|
+
|
|
150
|
+
# Determine if we're creating a new group or modifying an existing one.
|
|
151
|
+
if !post['id'].empty?
|
|
152
|
+
@menu = Menu[post['id'].to_i]
|
|
153
|
+
save_action = :save
|
|
154
|
+
else
|
|
155
|
+
@menu = Menu.new
|
|
156
|
+
save_action = :new
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
# Set our notifications
|
|
160
|
+
flash_success = lang("menus.success.#{save_action}")
|
|
161
|
+
flash_error = lang("menus.errors.#{save_action}")
|
|
162
|
+
|
|
163
|
+
# Let's see if we can insert/update the data
|
|
164
|
+
begin
|
|
165
|
+
@menu.update(post)
|
|
166
|
+
notification(:success, lang('menus.titles.index'), flash_success)
|
|
167
|
+
rescue
|
|
168
|
+
notification(:error, lang('menus.titles.index'), flash_error)
|
|
169
|
+
|
|
170
|
+
flash[:form_data] = @menu
|
|
171
|
+
flash[:form_errors] = @menu.errors
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
# Redrect the user to the proper page
|
|
175
|
+
if @menu.id
|
|
176
|
+
redirect(Menus.r(:edit, @menu.id))
|
|
177
|
+
else
|
|
178
|
+
redirect_referrer
|
|
179
|
+
end
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
##
|
|
183
|
+
# Deletes a number of navigation menus based on the supplied primary values.
|
|
184
|
+
# These primary values should be stored in a POST array called "menu_ids".
|
|
185
|
+
#
|
|
186
|
+
# This method requires the following permissions:
|
|
187
|
+
#
|
|
188
|
+
# * delete
|
|
189
|
+
#
|
|
190
|
+
# @author Yorick Peterse
|
|
191
|
+
# @since 0.2a
|
|
192
|
+
#
|
|
193
|
+
def delete
|
|
194
|
+
if !user_authorized?([:delete])
|
|
195
|
+
respond(lang('zen_general.errors.not_authorized'), 403)
|
|
196
|
+
end
|
|
197
|
+
|
|
198
|
+
post = request.params.dup
|
|
199
|
+
|
|
200
|
+
# We always require a set of IDs
|
|
201
|
+
if !post['menu_ids'] or post['menu_ids'].empty?
|
|
202
|
+
notification(
|
|
203
|
+
:error,
|
|
204
|
+
lang('menus.titles.index'),
|
|
205
|
+
lang('menus.errors.no_delete')
|
|
206
|
+
)
|
|
207
|
+
|
|
208
|
+
redirect_referrer
|
|
209
|
+
end
|
|
210
|
+
|
|
211
|
+
# Time to delete all menus
|
|
212
|
+
post['menu_ids'].each do |id|
|
|
213
|
+
begin
|
|
214
|
+
Menu[id.to_i].destroy
|
|
215
|
+
rescue
|
|
216
|
+
notification(
|
|
217
|
+
:error,
|
|
218
|
+
lang('menus.titles.index'),
|
|
219
|
+
lang('menus.errors.delete') % id
|
|
220
|
+
)
|
|
221
|
+
|
|
222
|
+
redirect_referrer
|
|
223
|
+
end
|
|
224
|
+
end
|
|
225
|
+
|
|
226
|
+
notification(:success, lang('menus.titles.index'), lang('menus.success.delete'))
|
|
227
|
+
redirect_referrer
|
|
228
|
+
end
|
|
229
|
+
end
|
|
230
|
+
end
|
|
231
|
+
end
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
#:nodoc:
|
|
2
|
+
module Ramaze
|
|
3
|
+
#:nodoc:
|
|
4
|
+
module Helper
|
|
5
|
+
##
|
|
6
|
+
# Small helper for the Menus package mainly used to reduce the amount of code
|
|
7
|
+
# in controllers.
|
|
8
|
+
#
|
|
9
|
+
# @author Yorick Peterse
|
|
10
|
+
# @since 0.2a
|
|
11
|
+
#
|
|
12
|
+
module MenuItem
|
|
13
|
+
##
|
|
14
|
+
# Checks if there is a menu for the given ID. If this isn't the case the user
|
|
15
|
+
# will be redirected back to the index page of the menus controller.
|
|
16
|
+
#
|
|
17
|
+
# @author Yorick Peterse
|
|
18
|
+
# @since 0.2a
|
|
19
|
+
# @param [Integer] menu_id The ID of the menu to validate.
|
|
20
|
+
#
|
|
21
|
+
def validate_menu(menu_id = nil)
|
|
22
|
+
if !menu_id or ::Menus::Models::Menu[menu_id].nil?
|
|
23
|
+
notification(
|
|
24
|
+
:error,
|
|
25
|
+
@menu_items_lang.titles[:index],
|
|
26
|
+
@menu_items_lang.errors[:invalid_menu]
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
redirect(::Menus::Controllers::Menus.r(:index))
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
##
|
|
34
|
+
# Builds a hierarchy of navigation items and all their sub items. The generated
|
|
35
|
+
# structure looks like the following:
|
|
36
|
+
#
|
|
37
|
+
# Root
|
|
38
|
+
# |
|
|
39
|
+
# |_ Sub
|
|
40
|
+
# | |
|
|
41
|
+
# | |_ Sub sub
|
|
42
|
+
# |
|
|
43
|
+
# |_ Sub 1
|
|
44
|
+
#
|
|
45
|
+
# @author Yorick Peterse
|
|
46
|
+
# @since 0.2a
|
|
47
|
+
# @param [Integer] menu_id The ID of the current menu group.
|
|
48
|
+
# @return [Hash]
|
|
49
|
+
#
|
|
50
|
+
def menu_item_tree(menu_id)
|
|
51
|
+
menu_items = ::Menus::Models::MenuItem.filter(
|
|
52
|
+
:menu_id => menu_id,
|
|
53
|
+
:parent_id => nil
|
|
54
|
+
)
|
|
55
|
+
|
|
56
|
+
@menu_items_hash = {nil => '--'}
|
|
57
|
+
|
|
58
|
+
menu_items.each do |item|
|
|
59
|
+
@menu_items_hash[item.id] = item.name
|
|
60
|
+
|
|
61
|
+
item.descendants.each do |i|
|
|
62
|
+
self.descendant_items(i, 2)
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
return @menu_items_hash
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
##
|
|
70
|
+
# Helper method for retrieving descendant navigation items.
|
|
71
|
+
#
|
|
72
|
+
# @author Yorick Peterse
|
|
73
|
+
# @since 0.2a
|
|
74
|
+
# @param [Menus::Models::MenuItem] item A MenuItem instance
|
|
75
|
+
# @param [Integer] spaces The amount of unbreakable spaces to use.
|
|
76
|
+
#
|
|
77
|
+
def descendant_items(item, spaces)
|
|
78
|
+
return if @menu_items_hash.key?(item.id)
|
|
79
|
+
|
|
80
|
+
nbsps = ''
|
|
81
|
+
spaces.times { nbsps += " " }
|
|
82
|
+
@menu_items_hash[item.id] = nbsps + item.name
|
|
83
|
+
descendants = item.descendants
|
|
84
|
+
|
|
85
|
+
if !descendants.empty?
|
|
86
|
+
descendants.each do |i|
|
|
87
|
+
self.descendant_items(i, spaces + 2)
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
end
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
---
|
|
2
|
+
titles:
|
|
3
|
+
index : 'Menu Items'
|
|
4
|
+
edit : 'Edit Menu Item'
|
|
5
|
+
new : 'Create Menu Item'
|
|
6
|
+
|
|
7
|
+
labels:
|
|
8
|
+
id : '#'
|
|
9
|
+
parent_id : 'Parent'
|
|
10
|
+
name : 'Name'
|
|
11
|
+
url : 'URL'
|
|
12
|
+
order : 'Order'
|
|
13
|
+
css_class : 'CSS class'
|
|
14
|
+
css_id : 'CSS ID'
|
|
15
|
+
|
|
16
|
+
placeholders:
|
|
17
|
+
name : 'The text that will be displayed in the link.'
|
|
18
|
+
url : 'The location to which the link will point.'
|
|
19
|
+
order : 'A number that indicates the sort order.'
|
|
20
|
+
css_class : 'Specify a class name to use for stylesheets.'
|
|
21
|
+
css_id : 'Specify an ID to use for stylesheets.'
|
|
22
|
+
|
|
23
|
+
messages:
|
|
24
|
+
no_items : 'No menu items have been added yet.'
|
|
25
|
+
|
|
26
|
+
buttons:
|
|
27
|
+
new : 'Add menu item'
|
|
28
|
+
save : 'Save menu item'
|
|
29
|
+
delete : 'Delete selected menu items'
|
|
30
|
+
|
|
31
|
+
success:
|
|
32
|
+
new : 'The menu item has been created.'
|
|
33
|
+
save : 'The menu item has been modified.'
|
|
34
|
+
delete : 'The selected menu items have been deleted.'
|
|
35
|
+
|
|
36
|
+
errors:
|
|
37
|
+
new : 'The menu item could not be created.'
|
|
38
|
+
save : 'The menu item could not be modified.'
|
|
39
|
+
delete : 'The menu item with ID #%s could not be deleted.'
|
|
40
|
+
no_delete : 'You need to specify at least one item to delete.'
|
|
41
|
+
invalid_menu : 'The specified menu was invalid or no longer exists.'
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
---
|
|
2
|
+
titles:
|
|
3
|
+
index : 'Menus'
|
|
4
|
+
edit : 'Edit Menu'
|
|
5
|
+
new : 'Add Menu'
|
|
6
|
+
|
|
7
|
+
labels:
|
|
8
|
+
id : '#'
|
|
9
|
+
name : 'Name'
|
|
10
|
+
slug : 'Slug'
|
|
11
|
+
description : 'Description'
|
|
12
|
+
css_class : 'CSS class'
|
|
13
|
+
css_id : 'CSS ID'
|
|
14
|
+
manage_items : 'Manage menu items'
|
|
15
|
+
|
|
16
|
+
placeholders:
|
|
17
|
+
name : 'Specify the name of the menu.'
|
|
18
|
+
slug : 'Specify the URL friendly name of the menu.'
|
|
19
|
+
css_class : 'Specify a class to use in stylesheets.'
|
|
20
|
+
css_id : 'Specify an ID to use in stylesheets.'
|
|
21
|
+
|
|
22
|
+
messages:
|
|
23
|
+
no_menus: 'No menus have been added yet.'
|
|
24
|
+
|
|
25
|
+
buttons:
|
|
26
|
+
new : 'Add menu'
|
|
27
|
+
save : 'Save menu'
|
|
28
|
+
delete : 'Delete selected menus'
|
|
29
|
+
|
|
30
|
+
success:
|
|
31
|
+
new : 'The menu has been created.'
|
|
32
|
+
save : 'The menu has been modified.'
|
|
33
|
+
delete : 'The selected menus have been deleted.'
|
|
34
|
+
|
|
35
|
+
errors:
|
|
36
|
+
new : 'The menu could not be created.'
|
|
37
|
+
save : 'The menu could not be modified.'
|
|
38
|
+
delete : 'The menu with ID #%s could not be deleted.'
|
|
39
|
+
no_delete : 'You need to specify at least one menu to delete.'
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
require 'ramaze/gestalt'
|
|
2
|
+
|
|
3
|
+
#:nodoc:
|
|
4
|
+
module Menus
|
|
5
|
+
#:nodoc:
|
|
6
|
+
module Liquid
|
|
7
|
+
##
|
|
8
|
+
# The menus tag can be used to display all menu items for a given menu slug or ID.
|
|
9
|
+
# Basic usage of this tag is as following:
|
|
10
|
+
#
|
|
11
|
+
# {% menus slug="main" %}
|
|
12
|
+
#
|
|
13
|
+
# Given we had a menu of which the slug is "main" the output would look like the this:
|
|
14
|
+
#
|
|
15
|
+
# <ul>
|
|
16
|
+
# <li>
|
|
17
|
+
# <a href="http://zen-cms.com/" title="Zen CMS">Zen CMS</a>
|
|
18
|
+
# </li>
|
|
19
|
+
# </ul>
|
|
20
|
+
#
|
|
21
|
+
# This tag takes the following arguments:
|
|
22
|
+
#
|
|
23
|
+
# * slug: the slug of the menu for which to retrieve all items.
|
|
24
|
+
# * id: the ID of the menu for which to retrieve all items.
|
|
25
|
+
# * order: string (either "asc" or "desc") that will be used to order the menu items.
|
|
26
|
+
#
|
|
27
|
+
# If both the slug and ID are specified the ID will be used instead of the slug.
|
|
28
|
+
#
|
|
29
|
+
# @example
|
|
30
|
+
# {% menus slug="main" order="asc" %}
|
|
31
|
+
#
|
|
32
|
+
# @author Yorick Peterse
|
|
33
|
+
# @since 0.2a
|
|
34
|
+
#
|
|
35
|
+
class Menus < ::Liquid::Tag
|
|
36
|
+
include ::Zen::Liquid::General
|
|
37
|
+
|
|
38
|
+
##
|
|
39
|
+
# Initializes the tag class and converts the arguments string into a key/value
|
|
40
|
+
# hash.
|
|
41
|
+
#
|
|
42
|
+
# @author Yorick Peterse
|
|
43
|
+
# @since 0.2a
|
|
44
|
+
# @param [String] tag_name The name of the tag ("menus").
|
|
45
|
+
# @param [String] arguments All arguments passed as key="value" combinations.
|
|
46
|
+
# @param [String] tokens All tokens passed to the tag.
|
|
47
|
+
#
|
|
48
|
+
def initialize(tag_name = 'menus', arguments = '', tokens = '')
|
|
49
|
+
super
|
|
50
|
+
|
|
51
|
+
@arguments = {
|
|
52
|
+
'order' => 'desc'
|
|
53
|
+
}.merge(parse_key_values(arguments))
|
|
54
|
+
|
|
55
|
+
@args_parsed = false
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
##
|
|
59
|
+
# Retrieves the specified menu, generates the HTML and renders the Liquid template.
|
|
60
|
+
#
|
|
61
|
+
# @author Yorick Peterse
|
|
62
|
+
# @since 0.2a
|
|
63
|
+
# @param [Liquid::Context] context The current Liquid instance.
|
|
64
|
+
# @return [String] The HTML for the specified navigation menu.
|
|
65
|
+
#
|
|
66
|
+
def render(context)
|
|
67
|
+
if @args_parsed == false
|
|
68
|
+
@arguments = merge_context(@arguments, context)
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
@args_parsed = true
|
|
72
|
+
menu_items = []
|
|
73
|
+
|
|
74
|
+
if @arguments.key?('id')
|
|
75
|
+
menu = ::Menus::Models::Menu[@arguments['slug'].to_i]
|
|
76
|
+
|
|
77
|
+
elsif @arguments.key?('slug')
|
|
78
|
+
menu = ::Menus::Models::Menu[:slug => @arguments['slug']]
|
|
79
|
+
|
|
80
|
+
else
|
|
81
|
+
raise(
|
|
82
|
+
ArgumentError,
|
|
83
|
+
"You need to specify either the ID or the slug in order to retrieve a menu."
|
|
84
|
+
)
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
return if menu.nil?
|
|
88
|
+
|
|
89
|
+
menu_items = ::Menus::Models::MenuItem.filter(:menu_id => menu.id)
|
|
90
|
+
.order(:order.send(@arguments['order']))
|
|
91
|
+
|
|
92
|
+
# Build the navigation menu
|
|
93
|
+
@g = ::Ramaze::Gestalt.new
|
|
94
|
+
attributes = {}
|
|
95
|
+
attributes[:class] = menu.css_class if !menu.css_class.nil?
|
|
96
|
+
attributes[:id] = menu.css_id if !menu.css_id.nil?
|
|
97
|
+
|
|
98
|
+
# Organize all menu items in a parent/child hierachy
|
|
99
|
+
items_ordered = {}
|
|
100
|
+
|
|
101
|
+
@g.ul(attributes) do
|
|
102
|
+
menu_items.each do |item|
|
|
103
|
+
if item.parent_id.nil?
|
|
104
|
+
self.menu_item(item)
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
return @g.to_s
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
##
|
|
113
|
+
# Helper method used for generating a <li> and <a> tag for the current navigation
|
|
114
|
+
# item. If the item has any sub items those will be generated as well.
|
|
115
|
+
#
|
|
116
|
+
# @author Yorick Peterse
|
|
117
|
+
# @since 0.2a
|
|
118
|
+
# @param [Object] item The current navigation item
|
|
119
|
+
#
|
|
120
|
+
def menu_item(item)
|
|
121
|
+
attributes = {}
|
|
122
|
+
|
|
123
|
+
if !item.css_class.nil? and !item.css_class.empty?
|
|
124
|
+
attributes[:class] = item.css_class
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
if !item.css_id.nil? and !item.css_id.empty?
|
|
128
|
+
attributes[:id] = item.css_id
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
children = item.children
|
|
132
|
+
|
|
133
|
+
@g.li(attributes) do
|
|
134
|
+
if !item.url.nil? and !item.url.empty?
|
|
135
|
+
@g.a(:href => item.url, :title => item.name) { item.name }
|
|
136
|
+
else
|
|
137
|
+
@g.span { item.name }
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
if !children.empty?
|
|
141
|
+
@g.ul(:class => :children) do
|
|
142
|
+
item.children.each do |i|
|
|
143
|
+
self.menu_item(i)
|
|
144
|
+
end
|
|
145
|
+
end
|
|
146
|
+
end
|
|
147
|
+
end # end of @g.li(attributes) do
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
end
|
|
151
|
+
end
|
|
152
|
+
end
|