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
data/lib/zen/liquid/general.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
#:nodoc:
|
|
3
2
|
module Zen
|
|
3
|
+
#:nodoc:
|
|
4
4
|
module Liquid
|
|
5
5
|
##
|
|
6
6
|
# Module that provides several methods that can be used to ease the process of
|
|
@@ -17,14 +17,14 @@ module Zen
|
|
|
17
17
|
# and turns it into a key/value hash. This makes it easier to
|
|
18
18
|
# use tags with key/value variables such as the following:
|
|
19
19
|
#
|
|
20
|
-
#
|
|
20
|
+
# {% my_tag name="yorick" %}
|
|
21
21
|
#
|
|
22
22
|
# @author Yorick Peterse
|
|
23
23
|
# @since 0.1
|
|
24
24
|
# @param [String] string the raw string specified after the tag name.
|
|
25
|
-
# @return [Hash]
|
|
25
|
+
# @return [Hash] A key/value hash of all specified arguments.
|
|
26
26
|
#
|
|
27
|
-
def parse_key_values
|
|
27
|
+
def parse_key_values(string)
|
|
28
28
|
key_values = {}
|
|
29
29
|
|
|
30
30
|
# Thanks to Michael Trommer (https://github.com/entropie) for coming up with
|
|
@@ -36,21 +36,72 @@ module Zen
|
|
|
36
36
|
# Returns the data in the format of {'key' => 'value'}
|
|
37
37
|
return key_values
|
|
38
38
|
end
|
|
39
|
-
|
|
39
|
+
|
|
40
|
+
##
|
|
41
|
+
# Merges the values in the given context with the hash. This means that if the
|
|
42
|
+
# Liquid context has a key that matches a value in the hash that key's value
|
|
43
|
+
# will become the value of the key in the hash. Confused? Assume our context has
|
|
44
|
+
# a key of "username" which is set to "YorickPeterse". If our hash had a key
|
|
45
|
+
# who's value is "username" that value would be replaced with "YorickPeterse".
|
|
46
|
+
#
|
|
47
|
+
# If context was a hash (it's an object) this would result in something like the
|
|
48
|
+
# following:
|
|
49
|
+
#
|
|
50
|
+
# context = {'username' => 'YorickPeterse'}
|
|
51
|
+
# hash = {'selected_user' => 'username'}
|
|
52
|
+
#
|
|
53
|
+
# merge_context(hash, context) # => {'selected_user' => 'YorickPeterse'}
|
|
54
|
+
#
|
|
55
|
+
# This method will also automatically escape all variables using the h() method
|
|
56
|
+
# so you don't have to worry about nasty input.
|
|
57
|
+
#
|
|
58
|
+
# @author Yorick Peterse
|
|
59
|
+
# @since 0.2a
|
|
60
|
+
# @param [Hash] hash The input hash that may contain Liquid variables
|
|
61
|
+
# @param [Liquid::Context] context The Liquid context from which to extract any
|
|
62
|
+
# variables set in the hash.
|
|
63
|
+
# @return [Hash] The merged hash.
|
|
64
|
+
#
|
|
65
|
+
def merge_context(hash, context)
|
|
66
|
+
if hash.class != Hash
|
|
67
|
+
raise(
|
|
68
|
+
TypeError,
|
|
69
|
+
"The first argument of this method should be a hash instead of \"#{hash.class}\""
|
|
70
|
+
)
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
hash.each do |k, v|
|
|
74
|
+
v = v.to_s
|
|
75
|
+
|
|
76
|
+
# Check if the Liquid context has a matching key and extract the value of that key
|
|
77
|
+
# if this is the case.
|
|
78
|
+
if context.respond_to?('key?')
|
|
79
|
+
if context.key?(v)
|
|
80
|
+
hash[k] = h(context[v])
|
|
81
|
+
end
|
|
82
|
+
else
|
|
83
|
+
if context.has_key?(v)
|
|
84
|
+
hash[k] = h(context[v])
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
return hash
|
|
90
|
+
end
|
|
91
|
+
|
|
40
92
|
##
|
|
41
93
|
# Converts the given input data to HTML using the specified markup engine.
|
|
42
94
|
#
|
|
43
95
|
# @example
|
|
44
|
-
#
|
|
45
96
|
# markup_to_html("h2. Hello world!", :textile)
|
|
46
97
|
#
|
|
47
98
|
# @author Yorick Peterse
|
|
48
99
|
# @since 0.1
|
|
49
100
|
# @param [String] markup The raw markup that has to be converted to HTML.
|
|
50
101
|
# @param [Symbol] engine The markup engine to use such as Textile.
|
|
51
|
-
# @return [String]
|
|
102
|
+
# @return [String] The HTML generated by the markup engine.
|
|
52
103
|
#
|
|
53
|
-
def markup_to_html
|
|
104
|
+
def markup_to_html(markup, engine)
|
|
54
105
|
engine = engine.to_sym
|
|
55
106
|
|
|
56
107
|
case engine
|
data/lib/zen/liquid/redirect.rb
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
#:nodoc:
|
|
1
2
|
module Zen
|
|
3
|
+
#:nodoc:
|
|
2
4
|
module Liquid
|
|
3
5
|
##
|
|
4
6
|
# The Redirect tag can be used to redirect a user from one URL to another.
|
|
@@ -6,13 +8,20 @@ module Zen
|
|
|
6
8
|
# @example
|
|
7
9
|
# {% redirect "blog/index" %}
|
|
8
10
|
#
|
|
11
|
+
# Optionally you can redirect a user to a 404 page by doing the following:
|
|
12
|
+
#
|
|
13
|
+
# {% redirect "404" %}
|
|
14
|
+
#
|
|
15
|
+
# This will render the 404 template but without changing the current URL.
|
|
16
|
+
#
|
|
9
17
|
# @author Yorick Peterse
|
|
10
18
|
# @since 0.1
|
|
11
19
|
#
|
|
12
20
|
class Redirect < ::Liquid::Tag
|
|
13
21
|
include ::Ramaze::Helper::Redirect
|
|
14
22
|
include ::Zen::Liquid::ControllerBehavior
|
|
15
|
-
|
|
23
|
+
include ::Ramaze::Helper::Render
|
|
24
|
+
|
|
16
25
|
##
|
|
17
26
|
# Creates a new instance of this tag by passing the tag name, arguments and HTML
|
|
18
27
|
# tokens to the construct.
|
|
@@ -23,8 +32,10 @@ module Zen
|
|
|
23
32
|
# @param [String] arguments All additional arguments passed as a string.
|
|
24
33
|
# @param [String] tokens All tokens (HTML mostly) inside the tag block.
|
|
25
34
|
#
|
|
26
|
-
def initialize
|
|
27
|
-
|
|
35
|
+
def initialize(tag_name = 'redirect', arguments = '', tokens = '')
|
|
36
|
+
super
|
|
37
|
+
|
|
38
|
+
@url = arguments.gsub('"', '').gsub("'", '').strip
|
|
28
39
|
end
|
|
29
40
|
|
|
30
41
|
##
|
|
@@ -35,12 +46,24 @@ module Zen
|
|
|
35
46
|
# @since 0.1
|
|
36
47
|
# @param [Object] context The current Liquid context
|
|
37
48
|
#
|
|
38
|
-
def render
|
|
49
|
+
def render(context)
|
|
39
50
|
if @url.nil? or @url.empty?
|
|
40
|
-
raise
|
|
51
|
+
raise(ArgumentError, "You need to specify a URL in order to redirect a user")
|
|
41
52
|
end
|
|
42
53
|
|
|
43
|
-
|
|
54
|
+
# 404 URLs are treated differently than other URLs
|
|
55
|
+
if @url == '404'
|
|
56
|
+
theme = ::Zen::Package[session[:settings][:theme]]
|
|
57
|
+
not_found = theme.directory + "/templates/404.liquid"
|
|
58
|
+
|
|
59
|
+
if File.exist?(not_found)
|
|
60
|
+
respond(action.instance.render_file(not_found), 404)
|
|
61
|
+
else
|
|
62
|
+
respond("The requested page could not be found", 404)
|
|
63
|
+
end
|
|
64
|
+
else
|
|
65
|
+
redirect(@url)
|
|
66
|
+
end
|
|
44
67
|
end
|
|
45
68
|
end
|
|
46
69
|
end
|
data/lib/zen/liquid/strip.rb
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
#:nodoc:
|
|
1
2
|
module Zen
|
|
3
|
+
#:nodoc:
|
|
2
4
|
module Liquid
|
|
3
5
|
##
|
|
4
6
|
# Tag block that can be used to strip leading and trailing characters from
|
|
@@ -31,7 +33,7 @@ module Zen
|
|
|
31
33
|
# @param [String] html The HTML inside the block.
|
|
32
34
|
# @since 0.1
|
|
33
35
|
#
|
|
34
|
-
def initialize
|
|
36
|
+
def initialize(tag_name = 'strip', arguments = '', html = '')
|
|
35
37
|
super
|
|
36
38
|
|
|
37
39
|
@arguments = {'start' => '', 'end' => ''}
|
data/lib/zen/model/methods.rb
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
|
+
#:nodoc:
|
|
1
2
|
module Sequel
|
|
3
|
+
#:nodoc:
|
|
2
4
|
class Model
|
|
3
5
|
##
|
|
4
|
-
# Retrieves all primary values and an optional column and returns the results as
|
|
5
|
-
# which the keys of these hashes are the IDs and the values
|
|
6
|
-
# This array can be used when creating <select>
|
|
6
|
+
# Retrieves all primary values and an optional column and returns the results as
|
|
7
|
+
# an array of hashes in which the keys of these hashes are the IDs and the values
|
|
8
|
+
# the values of the specified column. This array can be used when creating <select>
|
|
9
|
+
# elements using the BlueForm helper.
|
|
7
10
|
#
|
|
8
11
|
# @example
|
|
9
|
-
#
|
|
10
12
|
# Sections::Models::Section.pk_hash(:name) # => {1 => 'Blog', 2 => 'General'}
|
|
11
13
|
#
|
|
12
14
|
# @author Yorick Peterse
|
|
@@ -23,4 +25,4 @@ module Sequel
|
|
|
23
25
|
return hash
|
|
24
26
|
end
|
|
25
27
|
end
|
|
26
|
-
end
|
|
28
|
+
end
|
data/lib/zen/model/settings.rb
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
lang = Zen::Language.load 'zen_models'
|
|
1
|
+
include Zen::Language
|
|
3
2
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
#
|
|
3
|
+
Zen::Language.load('zen_models')
|
|
4
|
+
|
|
5
|
+
# When passing a hash to update() or create() we'll ignore any keys that don't belong
|
|
6
|
+
# in the table. This allows you to directly pass request.params to these methods
|
|
7
|
+
# without having to filter the hash yourself.
|
|
7
8
|
Sequel::Model.strict_param_setting = false
|
|
8
9
|
|
|
9
10
|
# Load all the required plugins
|
|
@@ -12,16 +13,66 @@ Sequel::Model.plugin :association_pks
|
|
|
12
13
|
Sequel::Model.plugin :schema
|
|
13
14
|
|
|
14
15
|
Sequel::Plugins::ValidationHelpers::DEFAULT_OPTIONS.merge!(
|
|
15
|
-
|
|
16
|
-
:
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
:
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
:
|
|
27
|
-
|
|
16
|
+
{
|
|
17
|
+
:exact_length => {
|
|
18
|
+
:message => lambda do |length|
|
|
19
|
+
lang('zen_models.exact_length') & length
|
|
20
|
+
end
|
|
21
|
+
},
|
|
22
|
+
|
|
23
|
+
:format => {
|
|
24
|
+
:message => lang('zen_models.format')
|
|
25
|
+
},
|
|
26
|
+
|
|
27
|
+
:includes => {
|
|
28
|
+
:message => lambda do |arg|
|
|
29
|
+
lang('zen_models.includes') % arg.inspect
|
|
30
|
+
end,
|
|
31
|
+
:allow_nil => false
|
|
32
|
+
},
|
|
33
|
+
|
|
34
|
+
:integer => {
|
|
35
|
+
:message => lang('zen_models.integer'),
|
|
36
|
+
:allow_nil => true
|
|
37
|
+
},
|
|
38
|
+
|
|
39
|
+
:length_range =>
|
|
40
|
+
{
|
|
41
|
+
:message => lang('zen_models.length_range')
|
|
42
|
+
},
|
|
43
|
+
|
|
44
|
+
:max_length => {
|
|
45
|
+
:message => lambda do |length|
|
|
46
|
+
lang('zen_models.max_length') % length
|
|
47
|
+
end,
|
|
48
|
+
:allow_nil => true
|
|
49
|
+
},
|
|
50
|
+
|
|
51
|
+
:min_length => {
|
|
52
|
+
:message => lambda do |length|
|
|
53
|
+
lang('zen_models.min_length') % length
|
|
54
|
+
end
|
|
55
|
+
},
|
|
56
|
+
|
|
57
|
+
:not_string => {
|
|
58
|
+
:message => lang('zen_models.not_string')
|
|
59
|
+
},
|
|
60
|
+
|
|
61
|
+
:numeric => {
|
|
62
|
+
:message => lang('zen_models.numeric')
|
|
63
|
+
},
|
|
64
|
+
|
|
65
|
+
:type => {
|
|
66
|
+
:message => lambda do |type|
|
|
67
|
+
lang('zen_models.type') % type
|
|
68
|
+
end
|
|
69
|
+
},
|
|
70
|
+
|
|
71
|
+
:presence => {
|
|
72
|
+
:message => lang('zen_models.presence')
|
|
73
|
+
},
|
|
74
|
+
|
|
75
|
+
:unique => {
|
|
76
|
+
:message => lang('zen_models.unique')
|
|
77
|
+
}
|
|
78
|
+
})
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
require __DIR__('categories/lib/categories')
|
|
2
|
+
require __DIR__('comments/lib/comments')
|
|
3
|
+
require __DIR__('custom_fields/lib/custom_fields')
|
|
4
|
+
require __DIR__('menus/lib/menus')
|
|
5
|
+
require __DIR__('sections/lib/sections')
|
|
6
|
+
require __DIR__('settings/lib/settings')
|
|
7
|
+
require __DIR__('users/lib/users')
|
|
@@ -12,13 +12,13 @@ Zen::Package.add do |p|
|
|
|
12
12
|
p.name = 'Categories'
|
|
13
13
|
p.author = 'Yorick Peterse'
|
|
14
14
|
p.url = 'http://yorickpeterse.com/'
|
|
15
|
-
p.version = '0
|
|
15
|
+
p.version = '1.0'
|
|
16
16
|
p.about = "Module for managing categories. Categories can be used to organize section entries."
|
|
17
17
|
p.identifier = 'com.zen.categories'
|
|
18
18
|
p.directory = __DIR__('categories')
|
|
19
19
|
|
|
20
20
|
p.menu = [{
|
|
21
21
|
:title => "Categories",
|
|
22
|
-
:url => "admin/
|
|
22
|
+
:url => "admin/category-groups"
|
|
23
23
|
}]
|
|
24
|
-
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
#:nodoc:
|
|
2
|
+
module Categories
|
|
3
|
+
#:nodoc:
|
|
4
|
+
module Controllers
|
|
5
|
+
##
|
|
6
|
+
# Categories can be seen as "tags" for your section entries. They describe the
|
|
7
|
+
# type of entry just like tags except that categories generally cover larger elements.
|
|
8
|
+
# When adding a new entry categories aren't required so you're free to ignore
|
|
9
|
+
# them if you don't need them.
|
|
10
|
+
#
|
|
11
|
+
# @author Yorick Peterse
|
|
12
|
+
# @since 0.1
|
|
13
|
+
#
|
|
14
|
+
class Categories < Zen::Controllers::AdminController
|
|
15
|
+
include ::Categories::Models
|
|
16
|
+
|
|
17
|
+
map '/admin/categories'
|
|
18
|
+
trait :extension_identifier => 'com.zen.categories'
|
|
19
|
+
|
|
20
|
+
before_all do
|
|
21
|
+
csrf_protection(:save, :delete) do
|
|
22
|
+
respond(lang('zen_general.errors.csrf'), 403)
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
##
|
|
27
|
+
# The constructor is used to set various options such as the form URLs and load
|
|
28
|
+
# the language pack for the categories module.
|
|
29
|
+
#
|
|
30
|
+
# The following language files are loaded:
|
|
31
|
+
#
|
|
32
|
+
# * categories
|
|
33
|
+
# * category_groups
|
|
34
|
+
#
|
|
35
|
+
# @author Yorick Peterse
|
|
36
|
+
# @since 0.1
|
|
37
|
+
#
|
|
38
|
+
def initialize
|
|
39
|
+
super
|
|
40
|
+
|
|
41
|
+
@form_save_url = Categories.r(:save)
|
|
42
|
+
@form_delete_url = Categories.r(:delete)
|
|
43
|
+
|
|
44
|
+
Zen::Language.load('categories')
|
|
45
|
+
Zen::Language.load('category_groups')
|
|
46
|
+
|
|
47
|
+
# Set the page title
|
|
48
|
+
if !action.method.nil?
|
|
49
|
+
method = action.method.to_s
|
|
50
|
+
@page_title = lang("categories.titles.#{method}") rescue nil
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
##
|
|
55
|
+
# Show an overview of all existing categories and allow the user
|
|
56
|
+
# to create and manage these categories.
|
|
57
|
+
#
|
|
58
|
+
# This method requires the following permissions:
|
|
59
|
+
#
|
|
60
|
+
# * read
|
|
61
|
+
#
|
|
62
|
+
# @author Yorick Peterse
|
|
63
|
+
# @param [Integer] category_group_id The ID of the category group that's currently
|
|
64
|
+
# being managed by the user.
|
|
65
|
+
# @since 0.1
|
|
66
|
+
#
|
|
67
|
+
def index category_group_id
|
|
68
|
+
if !user_authorized?([:read])
|
|
69
|
+
respond(lang('zen_general.errors.not_authorized'), 403)
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
set_breadcrumbs(
|
|
73
|
+
anchor_to(lang('category_groups.titles.index'), CategoryGroups.r(:index)),
|
|
74
|
+
lang('categories.titles.index')
|
|
75
|
+
)
|
|
76
|
+
|
|
77
|
+
@category_group_id = category_group_id.to_i
|
|
78
|
+
@categories = CategoryGroup[@category_group_id].categories
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
##
|
|
82
|
+
# Edit an existing category based on the ID specified in the URL.
|
|
83
|
+
#
|
|
84
|
+
# This method requires the following permissions:
|
|
85
|
+
#
|
|
86
|
+
# * read
|
|
87
|
+
# * update
|
|
88
|
+
#
|
|
89
|
+
# @author Yorick Peterse
|
|
90
|
+
# @param [Integer] category_group_id The category group ID.
|
|
91
|
+
# @param [Integer] id The ID of the category to edit.
|
|
92
|
+
# @since 0.1
|
|
93
|
+
#
|
|
94
|
+
def edit category_group_id, id
|
|
95
|
+
if !user_authorized?([:read, :update])
|
|
96
|
+
respond(lang('zen_general.errors.not_authorized'), 403)
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
set_breadcrumbs(
|
|
100
|
+
anchor_to(lang('category_groups.titles.index'), CategoryGroups.r(:index)),
|
|
101
|
+
anchor_to(lang('categories.titles.index'), Categories.r(:index, category_group_id)),
|
|
102
|
+
lang('categories.titles.edit')
|
|
103
|
+
)
|
|
104
|
+
|
|
105
|
+
@category_group_id = category_group_id.to_i
|
|
106
|
+
|
|
107
|
+
if flash[:form_data]
|
|
108
|
+
@category = flash[:form_data]
|
|
109
|
+
else
|
|
110
|
+
@category = Category[id.to_i]
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
##
|
|
115
|
+
# Create a new category.
|
|
116
|
+
#
|
|
117
|
+
# This method requires the following permissions:
|
|
118
|
+
#
|
|
119
|
+
# * read
|
|
120
|
+
# * create
|
|
121
|
+
#
|
|
122
|
+
# @author Yorick Peterse
|
|
123
|
+
# @param [Integer] category_group_id The ID of the category group.
|
|
124
|
+
# @since 0.1
|
|
125
|
+
#
|
|
126
|
+
def new category_group_id
|
|
127
|
+
if !user_authorized?([:read, :create])
|
|
128
|
+
respond(lang('zen_general.errors.not_authorized'), 403)
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
set_breadcrumbs(
|
|
132
|
+
anchor_to(lang('category_groups.titles.index'), CategoryGroups.r(:index)),
|
|
133
|
+
anchor_to(lang('categories.titles.index'), Categories.r(:index, category_group_id)),
|
|
134
|
+
lang('categories.titles.new')
|
|
135
|
+
)
|
|
136
|
+
|
|
137
|
+
@category_group_id = category_group_id.to_i
|
|
138
|
+
@category = Category.new
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
##
|
|
142
|
+
# Save the changes made to an existing category or create a new one based
|
|
143
|
+
# on the current POST data.
|
|
144
|
+
#
|
|
145
|
+
# This method requires the following permissions:
|
|
146
|
+
#
|
|
147
|
+
# * create
|
|
148
|
+
# * update
|
|
149
|
+
#
|
|
150
|
+
# @author Yorick Peterse
|
|
151
|
+
# @since 0.1
|
|
152
|
+
#
|
|
153
|
+
def save
|
|
154
|
+
if !user_authorized?([:create, :update])
|
|
155
|
+
respond(lang('zen_general.errors.not_authorized'), 403)
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
post = request.params.dup
|
|
159
|
+
category_group_id = post['category_group_id']
|
|
160
|
+
|
|
161
|
+
post.delete('slug') if post['slug'].empty?
|
|
162
|
+
|
|
163
|
+
# Retrieve the category and set the notifications based on if the ID has
|
|
164
|
+
# been specified or not.
|
|
165
|
+
if post['id'] and !post['id'].empty?
|
|
166
|
+
@category = Category[post['id'].to_i]
|
|
167
|
+
save_action = :save
|
|
168
|
+
else
|
|
169
|
+
@category = Category.new
|
|
170
|
+
save_action = :new
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
flash_success = lang("categories.success.#{save_action}")
|
|
174
|
+
flash_error = lang("categories.errors.#{save_action}")
|
|
175
|
+
|
|
176
|
+
# Try to update the category
|
|
177
|
+
begin
|
|
178
|
+
@category.update(post)
|
|
179
|
+
notification(:success, lang('categories.titles.index'), flash_success)
|
|
180
|
+
rescue
|
|
181
|
+
notification(:error, lang('categories.titles.index'), flash_error)
|
|
182
|
+
|
|
183
|
+
flash[:form_errors] = @category.errors
|
|
184
|
+
flash[:form_data] = @category
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
if @category.id
|
|
188
|
+
redirect(Categories.r(:edit, category_group_id, @category.id))
|
|
189
|
+
else
|
|
190
|
+
redirect(Categories.r(:new, category_group_id))
|
|
191
|
+
end
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
##
|
|
195
|
+
# Delete all specified category groups and their categories. In
|
|
196
|
+
# order to delete a number of groups an array of fields, named "category_group_ids"
|
|
197
|
+
# is required. This array will contain all the primary values of each group that
|
|
198
|
+
# has to be deleted.
|
|
199
|
+
#
|
|
200
|
+
# This method requires the following permissions:
|
|
201
|
+
#
|
|
202
|
+
# * delete
|
|
203
|
+
#
|
|
204
|
+
# @author Yorick Peterse
|
|
205
|
+
# @since 0.1
|
|
206
|
+
#
|
|
207
|
+
def delete
|
|
208
|
+
if !user_authorized?([:delete])
|
|
209
|
+
respond(lang('zen_general.errors.not_authorized'), 403)
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
post = request.params.dup
|
|
213
|
+
category_group_id = post['category_group_id'].to_i
|
|
214
|
+
|
|
215
|
+
# Obviously we'll require some IDs
|
|
216
|
+
if !request.params['category_ids'] or request.params['category_ids'].empty?
|
|
217
|
+
notification(
|
|
218
|
+
:error,
|
|
219
|
+
lang('categories.titles.index'),
|
|
220
|
+
lang('categorieserrors.no_delete')
|
|
221
|
+
)
|
|
222
|
+
|
|
223
|
+
redirect(Categories.r(:index, category_group_id))
|
|
224
|
+
end
|
|
225
|
+
|
|
226
|
+
# Delete each section
|
|
227
|
+
request.params['category_ids'].each do |id|
|
|
228
|
+
begin
|
|
229
|
+
Category[id.to_i].destroy
|
|
230
|
+
notification(
|
|
231
|
+
:success,
|
|
232
|
+
lang('categories.titles.index'),
|
|
233
|
+
lang('categories.success.delete')
|
|
234
|
+
)
|
|
235
|
+
|
|
236
|
+
rescue
|
|
237
|
+
notification(
|
|
238
|
+
:error,
|
|
239
|
+
lang('categories.titles.index'),
|
|
240
|
+
lang('categories.errors.delete') % id
|
|
241
|
+
)
|
|
242
|
+
|
|
243
|
+
end
|
|
244
|
+
end
|
|
245
|
+
|
|
246
|
+
redirect(Categories.r(:index, category_group_id))
|
|
247
|
+
end
|
|
248
|
+
end
|
|
249
|
+
end
|
|
250
|
+
end
|