zen 0.1a
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/LICENSE +19 -0
- data/MANIFEST +337 -0
- data/README.textile +42 -0
- data/Rakefile +6 -0
- data/bin/zen +9 -0
- data/doc/Categories.html +93 -0
- data/doc/Categories/Controllers.html +93 -0
- data/doc/Categories/Controllers/Categories.html +995 -0
- data/doc/Categories/Controllers/CategoryGroups.html +878 -0
- data/doc/Categories/Models.html +97 -0
- data/doc/Categories/Models/Category.html +269 -0
- data/doc/Categories/Models/CategoryGroup.html +231 -0
- data/doc/Comments.html +93 -0
- data/doc/Comments/Controllers.html +93 -0
- data/doc/Comments/Controllers/Comments.html +797 -0
- data/doc/Comments/Controllers/CommentsForm.html +487 -0
- data/doc/Comments/Liquid.html +93 -0
- data/doc/Comments/Liquid/CommentForm.html +522 -0
- data/doc/Comments/Liquid/Comments.html +543 -0
- data/doc/Comments/Models.html +95 -0
- data/doc/Comments/Models/Comment.html +260 -0
- data/doc/CustomFields.html +93 -0
- data/doc/CustomFields/Controllers.html +93 -0
- data/doc/CustomFields/Controllers/CustomFieldGroups.html +902 -0
- data/doc/CustomFields/Controllers/CustomFields.html +974 -0
- data/doc/CustomFields/Models.html +97 -0
- data/doc/CustomFields/Models/CustomField.html +272 -0
- data/doc/CustomFields/Models/CustomFieldGroup.html +259 -0
- data/doc/CustomFields/Models/CustomFieldValue.html +154 -0
- data/doc/Ramaze.html +93 -0
- data/doc/Ramaze/Helper.html +93 -0
- data/doc/Ramaze/Helper/ACL.html +531 -0
- data/doc/Ramaze/Helper/Asset.html +617 -0
- data/doc/Ramaze/Helper/Breadcrumb.html +411 -0
- data/doc/Ramaze/Helper/Common.html +738 -0
- data/doc/Sections.html +93 -0
- data/doc/Sections/Controllers.html +93 -0
- data/doc/Sections/Controllers/SectionEntries.html +1100 -0
- data/doc/Sections/Controllers/Sections.html +953 -0
- data/doc/Sections/Liquid.html +93 -0
- data/doc/Sections/Liquid/SectionEntries.html +674 -0
- data/doc/Sections/Liquid/Sections.html +494 -0
- data/doc/Sections/Models.html +97 -0
- data/doc/Sections/Models/Section.html +272 -0
- data/doc/Sections/Models/SectionEntry.html +264 -0
- data/doc/Sequel.html +91 -0
- data/doc/Sequel/Model.html +243 -0
- data/doc/Settings.html +93 -0
- data/doc/Settings/Controllers.html +91 -0
- data/doc/Settings/Controllers/Settings.html +565 -0
- data/doc/Settings/Liquid.html +91 -0
- data/doc/Settings/Liquid/Setting.html +426 -0
- data/doc/Settings/Models.html +95 -0
- data/doc/Settings/Models/Setting.html +293 -0
- data/doc/Users.html +93 -0
- data/doc/Users/Controllers.html +93 -0
- data/doc/Users/Controllers/AccessRules.html +904 -0
- data/doc/Users/Controllers/UserGroups.html +879 -0
- data/doc/Users/Controllers/Users.html +1124 -0
- data/doc/Users/Liquid.html +93 -0
- data/doc/Users/Liquid/User.html +480 -0
- data/doc/Users/Liquid/Users.html +495 -0
- data/doc/Users/Models.html +97 -0
- data/doc/Users/Models/AccessRule.html +257 -0
- data/doc/Users/Models/User.html +649 -0
- data/doc/Users/Models/UserGroup.html +267 -0
- data/doc/Zen.html +391 -0
- data/doc/Zen/Bin.html +113 -0
- data/doc/Zen/Bin/Base.html +727 -0
- data/doc/Zen/Controllers.html +115 -0
- data/doc/Zen/Controllers/AdminController.html +298 -0
- data/doc/Zen/Controllers/BaseController.html +272 -0
- data/doc/Zen/Controllers/FrontendController.html +164 -0
- data/doc/Zen/Controllers/MainController.html +421 -0
- data/doc/Zen/Database.html +498 -0
- data/doc/Zen/Language.html +660 -0
- data/doc/Zen/Liquid.html +117 -0
- data/doc/Zen/Liquid/ControllerBehavior.html +448 -0
- data/doc/Zen/Liquid/General.html +444 -0
- data/doc/Zen/Liquid/Redirect.html +435 -0
- data/doc/Zen/Liquid/Strip.html +447 -0
- data/doc/Zen/Logger.html +393 -0
- data/doc/Zen/Package.html +909 -0
- data/doc/_index.html +724 -0
- data/doc/class_list.html +36 -0
- data/doc/css/common.css +1 -0
- data/doc/css/full_list.css +53 -0
- data/doc/css/style.css +310 -0
- data/doc/file.README.html +86 -0
- data/doc/file_list.html +38 -0
- data/doc/frames.html +13 -0
- data/doc/index.html +86 -0
- data/doc/js/app.js +203 -0
- data/doc/js/full_list.js +149 -0
- data/doc/js/jquery.js +154 -0
- data/doc/method_list.html +1139 -0
- data/doc/top-level-namespace.html +88 -0
- data/lib/zen.rb +77 -0
- data/lib/zen/base/database.rb +105 -0
- data/lib/zen/base/language.rb +132 -0
- data/lib/zen/base/logger.rb +54 -0
- data/lib/zen/base/package.rb +233 -0
- data/lib/zen/base/version.rb +11 -0
- data/lib/zen/bin/zen_binary.rb +173 -0
- data/lib/zen/controller/admin_controller.rb +60 -0
- data/lib/zen/controller/base_controller.rb +39 -0
- data/lib/zen/controller/frontend_controller.rb +16 -0
- data/lib/zen/controller/main_controller.rb +93 -0
- data/lib/zen/helper/acl.rb +124 -0
- data/lib/zen/helper/asset.rb +104 -0
- data/lib/zen/helper/breadcrumb.rb +71 -0
- data/lib/zen/helper/common.rb +157 -0
- data/lib/zen/language/en/zen_general.rb +21 -0
- data/lib/zen/language/en/zen_models.rb +39 -0
- data/lib/zen/layout/admin.xhtml +72 -0
- data/lib/zen/layout/login.xhtml +44 -0
- data/lib/zen/liquid/controller_behavior.rb +55 -0
- data/lib/zen/liquid/general.rb +69 -0
- data/lib/zen/liquid/redirect.rb +47 -0
- data/lib/zen/liquid/strip.rb +58 -0
- data/lib/zen/model/methods.rb +26 -0
- data/lib/zen/model/settings.rb +27 -0
- data/lib/zen/packages/categories/LICENSE +19 -0
- data/lib/zen/packages/categories/README.textile +0 -0
- data/lib/zen/packages/categories/lib/categories.rb +24 -0
- data/lib/zen/packages/categories/lib/categories/controller/categories.rb +202 -0
- data/lib/zen/packages/categories/lib/categories/controller/category_groups.rb +173 -0
- data/lib/zen/packages/categories/lib/categories/language/en/categories.rb +38 -0
- data/lib/zen/packages/categories/lib/categories/language/en/category_groups.rb +37 -0
- data/lib/zen/packages/categories/lib/categories/model/category.rb +42 -0
- data/lib/zen/packages/categories/lib/categories/model/category_group.rb +29 -0
- data/lib/zen/packages/categories/lib/categories/view/admin/categories/edit.xhtml +7 -0
- data/lib/zen/packages/categories/lib/categories/view/admin/categories/form.xhtml +36 -0
- data/lib/zen/packages/categories/lib/categories/view/admin/categories/index.xhtml +70 -0
- data/lib/zen/packages/categories/lib/categories/view/admin/categories/new.xhtml +7 -0
- data/lib/zen/packages/categories/lib/categories/view/admin/category_groups/edit.xhtml +7 -0
- data/lib/zen/packages/categories/lib/categories/view/admin/category_groups/form.xhtml +18 -0
- data/lib/zen/packages/categories/lib/categories/view/admin/category_groups/index.xhtml +72 -0
- data/lib/zen/packages/categories/lib/categories/view/admin/category_groups/new.xhtml +7 -0
- data/lib/zen/packages/categories/migrations/.gitkeep +0 -0
- data/lib/zen/packages/categories/migrations/1295282303_create_schema.rb +40 -0
- data/lib/zen/packages/comments/LICENSE +19 -0
- data/lib/zen/packages/comments/README.textile +0 -0
- data/lib/zen/packages/comments/lib/comments.rb +26 -0
- data/lib/zen/packages/comments/lib/comments/controller/comments.rb +157 -0
- data/lib/zen/packages/comments/lib/comments/controller/comments_form.rb +135 -0
- data/lib/zen/packages/comments/lib/comments/language/en/comments.rb +52 -0
- data/lib/zen/packages/comments/lib/comments/liquid/comment_form.rb +97 -0
- data/lib/zen/packages/comments/lib/comments/liquid/comments.rb +115 -0
- data/lib/zen/packages/comments/lib/comments/model/comment.rb +34 -0
- data/lib/zen/packages/comments/lib/comments/view/admin/comments/edit.xhtml +7 -0
- data/lib/zen/packages/comments/lib/comments/view/admin/comments/form.xhtml +31 -0
- data/lib/zen/packages/comments/lib/comments/view/admin/comments/index.xhtml +74 -0
- data/lib/zen/packages/comments/migrations/.gitkeep +0 -0
- data/lib/zen/packages/comments/migrations/1295282202_create_schema.rb +24 -0
- data/lib/zen/packages/comments/migrations/1296949631_add_defensio_signature.rb +11 -0
- data/lib/zen/packages/custom_fields/LICENSE +19 -0
- data/lib/zen/packages/custom_fields/README.textile +0 -0
- data/lib/zen/packages/custom_fields/lib/custom_fields.rb +24 -0
- data/lib/zen/packages/custom_fields/lib/custom_fields/controller/custom_field_groups.rb +179 -0
- data/lib/zen/packages/custom_fields/lib/custom_fields/controller/custom_fields.rb +194 -0
- data/lib/zen/packages/custom_fields/lib/custom_fields/language/en/custom_field_groups.rb +45 -0
- data/lib/zen/packages/custom_fields/lib/custom_fields/language/en/custom_fields.rb +64 -0
- data/lib/zen/packages/custom_fields/lib/custom_fields/model/custom_field.rb +41 -0
- data/lib/zen/packages/custom_fields/lib/custom_fields/model/custom_field_group.rb +32 -0
- data/lib/zen/packages/custom_fields/lib/custom_fields/model/custom_field_value.rb +20 -0
- data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_field_groups/edit.xhtml +7 -0
- data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_field_groups/form.xhtml +18 -0
- data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_field_groups/index.xhtml +88 -0
- data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_field_groups/new.xhtml +7 -0
- data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_fields/edit.xhtml +7 -0
- data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_fields/form.xhtml +50 -0
- data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_fields/index.xhtml +75 -0
- data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_fields/new.xhtml +7 -0
- data/lib/zen/packages/custom_fields/migrations/.gitkeep +0 -0
- data/lib/zen/packages/custom_fields/migrations/1295255665_create_schema.rb +53 -0
- data/lib/zen/packages/sections/LICENSE +19 -0
- data/lib/zen/packages/sections/README.textile +43 -0
- data/lib/zen/packages/sections/lib/sections.rb +33 -0
- data/lib/zen/packages/sections/lib/sections/controller/section_entries.rb +251 -0
- data/lib/zen/packages/sections/lib/sections/controller/sections.rb +205 -0
- data/lib/zen/packages/sections/lib/sections/language/en/section_entries.rb +58 -0
- data/lib/zen/packages/sections/lib/sections/language/en/sections.rb +63 -0
- data/lib/zen/packages/sections/lib/sections/liquid/section_entries.rb +209 -0
- data/lib/zen/packages/sections/lib/sections/liquid/sections.rb +76 -0
- data/lib/zen/packages/sections/lib/sections/model/section.rb +43 -0
- data/lib/zen/packages/sections/lib/sections/model/section_entry.rb +43 -0
- data/lib/zen/packages/sections/lib/sections/view/admin/edit.xhtml +7 -0
- data/lib/zen/packages/sections/lib/sections/view/admin/form.xhtml +54 -0
- data/lib/zen/packages/sections/lib/sections/view/admin/index.xhtml +77 -0
- data/lib/zen/packages/sections/lib/sections/view/admin/new.xhtml +7 -0
- data/lib/zen/packages/sections/lib/sections/view/admin/section_entries/edit.xhtml +7 -0
- data/lib/zen/packages/sections/lib/sections/view/admin/section_entries/form.xhtml +147 -0
- data/lib/zen/packages/sections/lib/sections/view/admin/section_entries/index.xhtml +74 -0
- data/lib/zen/packages/sections/lib/sections/view/admin/section_entries/new.xhtml +7 -0
- data/lib/zen/packages/sections/migrations/.gitkeep +0 -0
- data/lib/zen/packages/sections/migrations/1295251836_create_schema.rb +35 -0
- data/lib/zen/packages/sections/migrations/1296335671_userdata_section_entries.rb +18 -0
- data/lib/zen/packages/sections/migrations/1296936110_drop_comment_antispam.rb +11 -0
- data/lib/zen/packages/settings/LICENSE +0 -0
- data/lib/zen/packages/settings/README.textile +0 -0
- data/lib/zen/packages/settings/lib/settings.rb +22 -0
- data/lib/zen/packages/settings/lib/settings/controller/settings.rb +113 -0
- data/lib/zen/packages/settings/lib/settings/language/en/settings.rb +56 -0
- data/lib/zen/packages/settings/lib/settings/liquid/setting.rb +56 -0
- data/lib/zen/packages/settings/lib/settings/model/setting.rb +38 -0
- data/lib/zen/packages/settings/lib/settings/view/admin/settings/index.xhtml +79 -0
- data/lib/zen/packages/settings/migrations/.gitkeep +0 -0
- data/lib/zen/packages/settings/migrations/1295597111_create_schema.rb +31 -0
- data/lib/zen/packages/users/LICENSE +19 -0
- data/lib/zen/packages/users/README.textile +0 -0
- data/lib/zen/packages/users/lib/users.rb +35 -0
- data/lib/zen/packages/users/lib/users/controller/access_rules.rb +186 -0
- data/lib/zen/packages/users/lib/users/controller/user_groups.rb +171 -0
- data/lib/zen/packages/users/lib/users/controller/users.rb +240 -0
- data/lib/zen/packages/users/lib/users/language/en/access_rules.rb +49 -0
- data/lib/zen/packages/users/lib/users/language/en/user_groups.rb +42 -0
- data/lib/zen/packages/users/lib/users/language/en/users.rb +63 -0
- data/lib/zen/packages/users/lib/users/liquid/user.rb +75 -0
- data/lib/zen/packages/users/lib/users/liquid/users.rb +80 -0
- data/lib/zen/packages/users/lib/users/model/access_rule.rb +29 -0
- data/lib/zen/packages/users/lib/users/model/user.rb +96 -0
- data/lib/zen/packages/users/lib/users/model/user_group.rb +38 -0
- data/lib/zen/packages/users/lib/users/public/admin/js/users/access_rules.js +43 -0
- data/lib/zen/packages/users/lib/users/view/admin/access_rules/edit.xhtml +7 -0
- data/lib/zen/packages/users/lib/users/view/admin/access_rules/form.xhtml +68 -0
- data/lib/zen/packages/users/lib/users/view/admin/access_rules/index.xhtml +85 -0
- data/lib/zen/packages/users/lib/users/view/admin/access_rules/new.xhtml +7 -0
- data/lib/zen/packages/users/lib/users/view/admin/user_groups/edit.xhtml +7 -0
- data/lib/zen/packages/users/lib/users/view/admin/user_groups/form.xhtml +19 -0
- data/lib/zen/packages/users/lib/users/view/admin/user_groups/index.xhtml +69 -0
- data/lib/zen/packages/users/lib/users/view/admin/user_groups/new.xhtml +7 -0
- data/lib/zen/packages/users/lib/users/view/admin/users/edit.xhtml +7 -0
- data/lib/zen/packages/users/lib/users/view/admin/users/form.xhtml +25 -0
- data/lib/zen/packages/users/lib/users/view/admin/users/index.xhtml +73 -0
- data/lib/zen/packages/users/lib/users/view/admin/users/login.xhtml +22 -0
- data/lib/zen/packages/users/lib/users/view/admin/users/new.xhtml +7 -0
- data/lib/zen/packages/users/migrations/.gitkeep +0 -0
- data/lib/zen/packages/users/migrations/1295281013_create_schema.rb +54 -0
- data/lib/zen/public/admin/css/boilerplate.css +174 -0
- data/lib/zen/public/admin/css/general.css +485 -0
- data/lib/zen/public/admin/css/grid.css +119 -0
- data/lib/zen/public/admin/css/layout.css +111 -0
- data/lib/zen/public/admin/images/general/noise.jpg +0 -0
- data/lib/zen/public/admin/images/icons/accept.png +0 -0
- data/lib/zen/public/admin/images/icons/add.png +0 -0
- data/lib/zen/public/admin/images/icons/back.png +0 -0
- data/lib/zen/public/admin/images/icons/bold.png +0 -0
- data/lib/zen/public/admin/images/icons/close.png +0 -0
- data/lib/zen/public/admin/images/icons/delete.png +0 -0
- data/lib/zen/public/admin/images/icons/edit.png +0 -0
- data/lib/zen/public/admin/images/icons/error.png +0 -0
- data/lib/zen/public/admin/images/icons/help.png +0 -0
- data/lib/zen/public/admin/images/icons/info.png +0 -0
- data/lib/zen/public/admin/images/icons/italic.png +0 -0
- data/lib/zen/public/admin/images/icons/large/error.png +0 -0
- data/lib/zen/public/admin/images/icons/large/notice.png +0 -0
- data/lib/zen/public/admin/images/icons/large/success.png +0 -0
- data/lib/zen/public/admin/images/icons/link.png +0 -0
- data/lib/zen/public/admin/images/icons/logout.png +0 -0
- data/lib/zen/public/admin/images/icons/ol.png +0 -0
- data/lib/zen/public/admin/images/icons/pdf.png +0 -0
- data/lib/zen/public/admin/images/icons/ul.png +0 -0
- data/lib/zen/public/admin/images/icons/user.png +0 -0
- data/lib/zen/public/admin/images/icons/view.png +0 -0
- data/lib/zen/public/admin/js/mootools/core.js +436 -0
- data/lib/zen/public/admin/js/mootools/more.js +288 -0
- data/lib/zen/public/admin/js/zen/editor/base.js +265 -0
- data/lib/zen/public/admin/js/zen/editor/drivers/html.js +104 -0
- data/lib/zen/public/admin/js/zen/editor/drivers/markdown.js +102 -0
- data/lib/zen/public/admin/js/zen/editor/drivers/textile.js +102 -0
- data/lib/zen/public/admin/js/zen/init.js +57 -0
- data/lib/zen/public/admin/js/zen/modal.js +159 -0
- data/lib/zen/public/admin/js/zen/notification.js +213 -0
- data/lib/zen/public/admin/js/zen/tabs.js +263 -0
- data/lib/zen/tasks.rb +6 -0
- data/pkg/.gitkeep +0 -0
- data/proto/app/Rakefile +2 -0
- data/proto/app/app.rb +20 -0
- data/proto/app/config.ru +18 -0
- data/proto/app/config/config.rb +17 -0
- data/proto/app/config/database.rb +18 -0
- data/proto/app/config/middlewares.rb +23 -0
- data/proto/app/config/requires.rb +8 -0
- data/proto/app/logs/.gitkeep +0 -0
- data/proto/app/public/.gitkeep +0 -0
- data/proto/app/start.rb +22 -0
- data/proto/app/vendor/.gitkeep +0 -0
- data/proto/app/vendor/themes/.gitkeep +0 -0
- data/proto/migration.rb +11 -0
- data/proto/module/LICENSE +0 -0
- data/proto/module/README.textile +0 -0
- data/proto/module/lib/module.rb +15 -0
- data/proto/module/lib/module/controller/controllers.rb +86 -0
- data/proto/module/lib/module/language/en/languages.rb +3 -0
- data/proto/module/lib/module/model/model.rb +12 -0
- data/proto/module/lib/module/view/admin/edit.xhtml +0 -0
- data/proto/module/lib/module/view/admin/form.xhtml +0 -0
- data/proto/module/lib/module/view/admin/index.xhtml +0 -0
- data/proto/module/lib/module/view/admin/new.xhtml +0 -0
- data/proto/module/migrations/.gitkeep +0 -0
- data/spec/javascript/css/base.css +177 -0
- data/spec/javascript/css/style.css +204 -0
- data/spec/javascript/css/typography.css +70 -0
- data/spec/javascript/editor/index.html +65 -0
- data/spec/javascript/images/close.png +0 -0
- data/spec/javascript/images/info.png +0 -0
- data/spec/javascript/js/editor.js +16 -0
- data/spec/javascript/js/modal.js +12 -0
- data/spec/javascript/js/namespace.js +2 -0
- data/spec/javascript/js/notification.js +43 -0
- data/spec/javascript/js/tabs.js +8 -0
- data/spec/javascript/modal/index.html +45 -0
- data/spec/javascript/notification/index.html +48 -0
- data/spec/javascript/tabs/index.html +73 -0
- data/spec/javascript/tabs/tab_1.html +1 -0
- data/spec/javascript/tabs/tab_2.html +1 -0
- data/spec/zen/base/language.rb +31 -0
- data/spec/zen/base/logger.rb +34 -0
- data/spec/zen/base/package.rb +47 -0
- data/spec/zen/config/database.rb +8 -0
- data/spec/zen/helper/asset.rb +26 -0
- data/spec/zen/helper/breadcrumb.rb +24 -0
- data/spec/zen/language/en/general.rb +4 -0
- data/spec/zen/language/nl/general.rb +4 -0
- data/spec/zen/liquid/general.rb +42 -0
- data/spec/zen/logs/.gitkeep +0 -0
- data/spec/zen/spec.rb +9 -0
- data/spec/zen/spec_database.db +0 -0
- data/tasks/bacon.rake +99 -0
- data/tasks/build.rake +72 -0
- data/tasks/clean.rake +18 -0
- data/tasks/db.rake +81 -0
- data/tasks/doc.rake +5 -0
- data/tasks/extension.rake +65 -0
- data/tasks/proto.rake +37 -0
- data/tasks/theme.rake +63 -0
- metadata +512 -0
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
module Zen
|
|
2
|
+
module Liquid
|
|
3
|
+
##
|
|
4
|
+
# The Redirect tag can be used to redirect a user from one URL to another.
|
|
5
|
+
#
|
|
6
|
+
# @example
|
|
7
|
+
# {% redirect "blog/index" %}
|
|
8
|
+
#
|
|
9
|
+
# @author Yorick Peterse
|
|
10
|
+
# @since 0.1
|
|
11
|
+
#
|
|
12
|
+
class Redirect < ::Liquid::Tag
|
|
13
|
+
include ::Ramaze::Helper::Redirect
|
|
14
|
+
include ::Zen::Liquid::ControllerBehavior
|
|
15
|
+
|
|
16
|
+
##
|
|
17
|
+
# Creates a new instance of this tag by passing the tag name, arguments and HTML
|
|
18
|
+
# tokens to the construct.
|
|
19
|
+
#
|
|
20
|
+
# @author Yorick Peterse
|
|
21
|
+
# @since 0.1
|
|
22
|
+
# @param [String] tag_name The name of the tag that was called.
|
|
23
|
+
# @param [String] arguments All additional arguments passed as a string.
|
|
24
|
+
# @param [String] tokens All tokens (HTML mostly) inside the tag block.
|
|
25
|
+
#
|
|
26
|
+
def initialize tag_name, arguments, tokens
|
|
27
|
+
@url = arguments.gsub('"', '').gsub("'", '')
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
##
|
|
31
|
+
# Redirects the user to a certain page based on the arguments specified in the
|
|
32
|
+
# constructor method.
|
|
33
|
+
#
|
|
34
|
+
# @author Yorick Peterse
|
|
35
|
+
# @since 0.1
|
|
36
|
+
# @param [Object] context The current Liquid context
|
|
37
|
+
#
|
|
38
|
+
def render context
|
|
39
|
+
if @url.nil? or @url.empty?
|
|
40
|
+
raise ArgumentError, "You need to specify a URL in order to redirect a user"
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
redirect(@url)
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
module Zen
|
|
2
|
+
module Liquid
|
|
3
|
+
##
|
|
4
|
+
# Tag block that can be used to strip leading and trailing characters from
|
|
5
|
+
# the text inside of the block. This tag can be extremely useful when you're
|
|
6
|
+
# displaying elements seperated by a comma and want to remove the last comma.
|
|
7
|
+
#
|
|
8
|
+
# @example
|
|
9
|
+
# {% strip end=", " %}
|
|
10
|
+
# Hello, world,
|
|
11
|
+
# {% endstrip %}
|
|
12
|
+
#
|
|
13
|
+
# This tag has the following options:
|
|
14
|
+
#
|
|
15
|
+
# * start
|
|
16
|
+
# * end
|
|
17
|
+
#
|
|
18
|
+
# @author Yorick Peterse
|
|
19
|
+
# @since 0.1
|
|
20
|
+
#
|
|
21
|
+
class Strip < ::Liquid::Block
|
|
22
|
+
include ::Zen::Liquid::General
|
|
23
|
+
|
|
24
|
+
##
|
|
25
|
+
# Creates a new instance of the block and passes the tag name,
|
|
26
|
+
# all additional arguments and the HTML to the constructor method.
|
|
27
|
+
#
|
|
28
|
+
# @author Yorick Peterse
|
|
29
|
+
# @param [String] tag_name The name of the tag that was called.
|
|
30
|
+
# @param [String] arguments All additional arguments passed as a string.
|
|
31
|
+
# @param [String] html The HTML inside the block.
|
|
32
|
+
# @since 0.1
|
|
33
|
+
#
|
|
34
|
+
def initialize tag_name, arguments, html
|
|
35
|
+
super
|
|
36
|
+
|
|
37
|
+
@arguments = {'start' => '', 'end' => ''}
|
|
38
|
+
@arguments = @arguments.merge(parse_key_values(arguments))
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
##
|
|
42
|
+
# Renders the tag block. We'll retrieve the content inside the block,
|
|
43
|
+
# trim it and return it.
|
|
44
|
+
#
|
|
45
|
+
# @author Yorick Peterse
|
|
46
|
+
# @since 0.1
|
|
47
|
+
# @param [Object] context The Liquid context for the current tag
|
|
48
|
+
#
|
|
49
|
+
def render context
|
|
50
|
+
html = super
|
|
51
|
+
html = html.join
|
|
52
|
+
html = html.gsub(/^#{@arguments['start']}/, '').gsub(/#{@arguments['end']}$/, '')
|
|
53
|
+
|
|
54
|
+
return html
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
module Sequel
|
|
2
|
+
class Model
|
|
3
|
+
##
|
|
4
|
+
# Retrieves all primary values and an optional column and returns the results as an array of hashes in
|
|
5
|
+
# which the keys of these hashes are the IDs and the values the values of the specified column.
|
|
6
|
+
# This array can be used when creating <select> elements using the BlueForm helper.
|
|
7
|
+
#
|
|
8
|
+
# @example
|
|
9
|
+
#
|
|
10
|
+
# Sections::Models::Section.pk_hash(:name) # => {1 => 'Blog', 2 => 'General'}
|
|
11
|
+
#
|
|
12
|
+
# @author Yorick Peterse
|
|
13
|
+
# @param [Symbol] column The name of the optional column to select.
|
|
14
|
+
# @return [Hash]
|
|
15
|
+
#
|
|
16
|
+
def self.pk_hash column
|
|
17
|
+
hash = {}
|
|
18
|
+
|
|
19
|
+
self.select(:id, column.to_sym).each do |row|
|
|
20
|
+
hash[row.id] = row.send(column)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
return hash
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Load the language pack and configure Sequel to use that pack
|
|
2
|
+
lang = Zen::Language.load 'zen_models'
|
|
3
|
+
|
|
4
|
+
# When passing a hash to update() or create() we'll ignore any keys that don't belong in the table.
|
|
5
|
+
# This allows you to directly pass request.params to these methods without having to filter the hash
|
|
6
|
+
# yourself.
|
|
7
|
+
Sequel::Model.strict_param_setting = false
|
|
8
|
+
|
|
9
|
+
# Load all the required plugins
|
|
10
|
+
Sequel::Model.plugin :validation_helpers
|
|
11
|
+
Sequel::Model.plugin :association_pks
|
|
12
|
+
Sequel::Model.plugin :schema
|
|
13
|
+
|
|
14
|
+
Sequel::Plugins::ValidationHelpers::DEFAULT_OPTIONS.merge!(
|
|
15
|
+
:exact_length => {:message => lang.exact_length},
|
|
16
|
+
:format => {:message => lang.format},
|
|
17
|
+
:includes => {:message => lang.includes, :allow_nil => false},
|
|
18
|
+
:integer => {:message => lang.integer, :allow_nil => true},
|
|
19
|
+
:length_range => {:message => lang.length_range},
|
|
20
|
+
:max_length => {:message => lang.max_length, :allow_nil => true},
|
|
21
|
+
:min_length => {:message => lang.min_length, :allow_nil => true},
|
|
22
|
+
:not_string => {:message => lang.not_string},
|
|
23
|
+
:numeric => {:message => lang.numeric},
|
|
24
|
+
:type => {:message => lang.type},
|
|
25
|
+
:presence => {:message => lang.presence},
|
|
26
|
+
:unique => {:message => lang.unique}
|
|
27
|
+
)
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
Copyright (c) 2011, Yorick Peterse
|
|
2
|
+
|
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
4
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
5
|
+
in the Software without restriction, including without limitation the rights
|
|
6
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
7
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
8
|
+
furnished to do so, subject to the following conditions:
|
|
9
|
+
|
|
10
|
+
The above copyright notice and this permission notice shall be included in
|
|
11
|
+
all copies or substantial portions of the Software.
|
|
12
|
+
|
|
13
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
14
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
15
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
16
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
17
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
18
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
19
|
+
THE SOFTWARE.
|
|
File without changes
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
|
|
2
|
+
# Load all the classes such as controllers, models and so on.
|
|
3
|
+
require __DIR__ 'categories/model/category_group'
|
|
4
|
+
require __DIR__ 'categories/model/category'
|
|
5
|
+
|
|
6
|
+
require __DIR__ 'categories/controller/category_groups'
|
|
7
|
+
require __DIR__ 'categories/controller/categories'
|
|
8
|
+
|
|
9
|
+
# Describe what this package is all about
|
|
10
|
+
Zen::Package.add do |p|
|
|
11
|
+
p.type = 'extension'
|
|
12
|
+
p.name = 'Categories'
|
|
13
|
+
p.author = 'Yorick Peterse'
|
|
14
|
+
p.url = 'http://yorickpeterse.com/'
|
|
15
|
+
p.version = '0.1'
|
|
16
|
+
p.about = "Module for managing categories. Categories can be used to organize section entries."
|
|
17
|
+
p.identifier = 'com.zen.categories'
|
|
18
|
+
p.directory = __DIR__('categories')
|
|
19
|
+
|
|
20
|
+
p.menu = [{
|
|
21
|
+
:title => "Categories",
|
|
22
|
+
:url => "admin/category_groups"
|
|
23
|
+
}]
|
|
24
|
+
end
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
module Categories
|
|
2
|
+
module Controllers
|
|
3
|
+
##
|
|
4
|
+
# Categories can be seen as "tags" for your section entries. They describe the
|
|
5
|
+
# type of entry just like tags except that categories generally cover larger elements.
|
|
6
|
+
# When adding a new entry categories aren't required so you're free to ignore them if you
|
|
7
|
+
# don't need them.
|
|
8
|
+
#
|
|
9
|
+
# @author Yorick Peterse
|
|
10
|
+
# @since 0.1
|
|
11
|
+
#
|
|
12
|
+
class Categories < Zen::Controllers::AdminController
|
|
13
|
+
map '/admin/categories'
|
|
14
|
+
|
|
15
|
+
trait :extension_identifier => 'com.zen.categories'
|
|
16
|
+
|
|
17
|
+
include ::Categories::Models
|
|
18
|
+
|
|
19
|
+
before_all do
|
|
20
|
+
csrf_protection :save, :delete do
|
|
21
|
+
respond(@zen_general_lang.errors[:csrf], 401)
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
##
|
|
26
|
+
# The constructor is used to set various options such as the form URLs and load
|
|
27
|
+
# the language pack for the categories module.
|
|
28
|
+
#
|
|
29
|
+
# @author Yorick Peterse
|
|
30
|
+
# @since 0.1
|
|
31
|
+
#
|
|
32
|
+
def initialize
|
|
33
|
+
super
|
|
34
|
+
|
|
35
|
+
@form_save_url = '/admin/categories/save'
|
|
36
|
+
@form_delete_url = '/admin/categories/delete'
|
|
37
|
+
@categories_lang = Zen::Language.load 'categories'
|
|
38
|
+
@groups_lang = Zen::Language.load 'category_groups'
|
|
39
|
+
|
|
40
|
+
# Set the page title
|
|
41
|
+
if !action.method.nil?
|
|
42
|
+
method = action.method.to_sym
|
|
43
|
+
|
|
44
|
+
if @categories_lang.titles.key? method
|
|
45
|
+
@page_title = @categories_lang.titles[method]
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
##
|
|
51
|
+
# Show an overview of all existing categories and allow the user
|
|
52
|
+
# to create and manage these categories.
|
|
53
|
+
#
|
|
54
|
+
# @author Yorick Peterse
|
|
55
|
+
# @param [Integer] category_group_id The ID of the category group that's currently
|
|
56
|
+
# being managed by the user.
|
|
57
|
+
# @since 0.1
|
|
58
|
+
#
|
|
59
|
+
def index category_group_id
|
|
60
|
+
if !user_authorized?([:read])
|
|
61
|
+
respond(@zen_general_lang.errors[:not_authorized], 403)
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
set_breadcrumbs anchor_to(@groups_lang.titles[:index], "admin/category_groups/"),
|
|
65
|
+
@categories_lang.titles[:index]
|
|
66
|
+
|
|
67
|
+
@category_group_id = category_group_id
|
|
68
|
+
@categories = CategoryGroup[category_group_id].categories
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
##
|
|
72
|
+
# Edit an existing category based on the ID specified in the URL.
|
|
73
|
+
#
|
|
74
|
+
# @author Yorick Peterse
|
|
75
|
+
# @param [Integer] category_group_id The category group ID.
|
|
76
|
+
# @param [Integer] id The ID of the category to edit.
|
|
77
|
+
# @since 0.1
|
|
78
|
+
#
|
|
79
|
+
def edit category_group_id, id
|
|
80
|
+
if !user_authorized?([:read, :update])
|
|
81
|
+
respond(@zen_general_lang.errors[:not_authorized], 403)
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
set_breadcrumbs anchor_to(@groups_lang.titles[:index], "admin/category_groups/"),
|
|
85
|
+
anchor_to(@categories_lang.titles[:index], "admin/categories/index/#{category_group_id}"),
|
|
86
|
+
@categories_lang.titles[:edit]
|
|
87
|
+
|
|
88
|
+
@category_group_id = category_group_id
|
|
89
|
+
@category = Category[id]
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
##
|
|
93
|
+
# Create a new category.
|
|
94
|
+
#
|
|
95
|
+
# @author Yorick Peterse
|
|
96
|
+
# @param [Integer] category_group_id The ID of the category group.
|
|
97
|
+
# @since 0.1
|
|
98
|
+
#
|
|
99
|
+
def new category_group_id
|
|
100
|
+
if !user_authorized?([:read, :create])
|
|
101
|
+
respond(@zen_general_lang.errors[:not_authorized], 403)
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
set_breadcrumbs anchor_to(@groups_lang.titles[:index], "admin/category_groups/"),
|
|
105
|
+
anchor_to(@categories_lang.titles[:index], "admin/categories/index/#{category_group_id}"),
|
|
106
|
+
@categories_lang.titles[:new]
|
|
107
|
+
|
|
108
|
+
@category_group_id = category_group_id
|
|
109
|
+
@category = Category.new
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
##
|
|
113
|
+
# Save the changes made to an existing category or create a new one based
|
|
114
|
+
# on the current POST data.
|
|
115
|
+
#
|
|
116
|
+
# @author Yorick Peterse
|
|
117
|
+
# @since 0.1
|
|
118
|
+
#
|
|
119
|
+
def save
|
|
120
|
+
if !user_authorized?([:create, :update])
|
|
121
|
+
respond(@zen_general_lang.errors[:not_authorized], 403)
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
post = request.params.dup
|
|
125
|
+
category_group_id = post["category_group_id"]
|
|
126
|
+
|
|
127
|
+
# Remove all empty values
|
|
128
|
+
post.each do |key, value|
|
|
129
|
+
post.delete(key) if value.empty?
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
post.delete("parent_id") if post["parent_id"] == '--'
|
|
133
|
+
|
|
134
|
+
# Retrieve the category and set the notifications based on if the ID has
|
|
135
|
+
# been specified or not.
|
|
136
|
+
if post["id"] and !post["id"].empty?
|
|
137
|
+
@category = Category[post["id"]]
|
|
138
|
+
save_action = :save
|
|
139
|
+
else
|
|
140
|
+
@category = Category.new
|
|
141
|
+
save_action = :new
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
flash_success = @categories_lang.success[save_action]
|
|
145
|
+
flash_error = @categories_lang.errors[save_action]
|
|
146
|
+
|
|
147
|
+
# Try to update the category
|
|
148
|
+
begin
|
|
149
|
+
@category.update(post)
|
|
150
|
+
notification(:success, @categories_lang.titles[:index], flash_success)
|
|
151
|
+
rescue
|
|
152
|
+
notification(:error, @categories_lang.titles[:index], flash_error)
|
|
153
|
+
flash[:form_errors] = @categories_lang.errors
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
if @category.id
|
|
157
|
+
redirect "/admin/categories/edit/#{category_group_id}/#{@category.id}"
|
|
158
|
+
else
|
|
159
|
+
redirect "/admin/categories/new/#{category_group_id}"
|
|
160
|
+
end
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
##
|
|
164
|
+
# Delete all specified category groups and their categories. In
|
|
165
|
+
# order to delete a number of groups an array of fields, named "category_group_ids"
|
|
166
|
+
# is required. This array will contain all the primary values of each group that
|
|
167
|
+
# has to be deleted.
|
|
168
|
+
#
|
|
169
|
+
# @author Yorick Peterse
|
|
170
|
+
# @since 0.1
|
|
171
|
+
#
|
|
172
|
+
def delete
|
|
173
|
+
if !user_authorized?([:delete])
|
|
174
|
+
respond(@zen_general_lang.errors[:not_authorized], 403)
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
post = request.params.dup
|
|
178
|
+
category_group_id = post["category_group_id"]
|
|
179
|
+
|
|
180
|
+
# Obviously we'll require some IDs
|
|
181
|
+
if !request.params["category_ids"] or request.params["category_ids"].empty?
|
|
182
|
+
notification(:error, @categories_lang.titles[:index], @categories_lang.errors[:no_delete])
|
|
183
|
+
redirect "/admin/categories/index/#{category_group_id}"
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
# Delete each section
|
|
187
|
+
request.params["category_ids"].each do |id|
|
|
188
|
+
@category = Category[id]
|
|
189
|
+
|
|
190
|
+
begin
|
|
191
|
+
@category.delete
|
|
192
|
+
notification(:success, @categories_lang.titles[:index], @categories_lang.success[:delete] % id)
|
|
193
|
+
rescue
|
|
194
|
+
notification(:error, @categories_lang.titles[:index], @categories_lang.errors[:delete] % id)
|
|
195
|
+
end
|
|
196
|
+
end
|
|
197
|
+
|
|
198
|
+
redirect "/admin/categories/index/#{category_group_id}"
|
|
199
|
+
end
|
|
200
|
+
end
|
|
201
|
+
end
|
|
202
|
+
end
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
module Categories
|
|
2
|
+
module Controllers
|
|
3
|
+
##
|
|
4
|
+
# Category groups can be used to group a number of categories into a single container.
|
|
5
|
+
# These groups are assigned to a section (rather than individual categories). It's
|
|
6
|
+
# important to remember that a section entry can't use a category group until it has
|
|
7
|
+
# been added to a section.
|
|
8
|
+
#
|
|
9
|
+
# @author Yorick Peterse
|
|
10
|
+
# @since 0.1
|
|
11
|
+
#
|
|
12
|
+
class CategoryGroups < Zen::Controllers::AdminController
|
|
13
|
+
map '/admin/category_groups'
|
|
14
|
+
|
|
15
|
+
trait :extension_identifier => 'com.zen.categories'
|
|
16
|
+
|
|
17
|
+
include ::Categories::Models
|
|
18
|
+
|
|
19
|
+
before_all do
|
|
20
|
+
csrf_protection :save, :delete do
|
|
21
|
+
respond(@zen_general_lang.errors[:csrf], 401)
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
##
|
|
26
|
+
# The constructor is used to set various options such as the form URLs and load
|
|
27
|
+
# the language pack for the categories module.
|
|
28
|
+
#
|
|
29
|
+
# @author Yorick Peterse
|
|
30
|
+
# @since 0.1
|
|
31
|
+
#
|
|
32
|
+
def initialize
|
|
33
|
+
super
|
|
34
|
+
|
|
35
|
+
@form_save_url = '/admin/category_groups/save'
|
|
36
|
+
@form_delete_url = '/admin/category_groups/delete'
|
|
37
|
+
@groups_lang = Zen::Language.load 'category_groups'
|
|
38
|
+
|
|
39
|
+
# Set the page title
|
|
40
|
+
if !action.method.nil?
|
|
41
|
+
method = action.method.to_sym
|
|
42
|
+
|
|
43
|
+
if @groups_lang.titles.key? method
|
|
44
|
+
@page_title = @groups_lang.titles[method]
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
##
|
|
50
|
+
# Show an overview of all existing category groups and allow the user
|
|
51
|
+
# to create new category groups or manage individual categories.
|
|
52
|
+
#
|
|
53
|
+
# @author Yorick Peterse
|
|
54
|
+
# @since 0.1
|
|
55
|
+
#
|
|
56
|
+
def index
|
|
57
|
+
if !user_authorized?([:read])
|
|
58
|
+
respond(@zen_general_lang.errors[:not_authorized], 403)
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
set_breadcrumbs @groups_lang.titles[:index]
|
|
62
|
+
|
|
63
|
+
@category_groups = CategoryGroup.all
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
##
|
|
67
|
+
# Edit an existing category group based on the ID specified in the URL.
|
|
68
|
+
#
|
|
69
|
+
# @author Yorick Peterse
|
|
70
|
+
# @since 0.1
|
|
71
|
+
#
|
|
72
|
+
def edit id
|
|
73
|
+
if !user_authorized?([:read, :update])
|
|
74
|
+
respond(@zen_general_lang.errors[:not_authorized], 403)
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
set_breadcrumbs anchor_to(@groups_lang.titles[:index], "admin/category_groups"),
|
|
78
|
+
@groups_lang.titles[:edit]
|
|
79
|
+
|
|
80
|
+
@category_group = CategoryGroup[id]
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
##
|
|
84
|
+
# Create a new category group.
|
|
85
|
+
#
|
|
86
|
+
# @author Yorick Peterse
|
|
87
|
+
# @since 0.1
|
|
88
|
+
#
|
|
89
|
+
def new
|
|
90
|
+
if !user_authorized?([:create, :read])
|
|
91
|
+
respond(@zen_general_lang.errors[:not_authorized], 403)
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
set_breadcrumbs anchor_to(@groups_lang.titles[:index], "admin/category_groups"),
|
|
95
|
+
@groups_lang.titles[:new ]
|
|
96
|
+
|
|
97
|
+
@category_group = CategoryGroup.new
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
##
|
|
101
|
+
# Save or create a new category group based on the current POST data.
|
|
102
|
+
#
|
|
103
|
+
# @author Yorick Peterse
|
|
104
|
+
# @since 0.1
|
|
105
|
+
#
|
|
106
|
+
def save
|
|
107
|
+
if !user_authorized?([:create, :update])
|
|
108
|
+
respond(@zen_general_lang.errors[:not_authorized], 403)
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
post = request.params.dup
|
|
112
|
+
|
|
113
|
+
if post["id"] and !post["id"].empty?
|
|
114
|
+
@category_group = CategoryGroup[post["id"]]
|
|
115
|
+
save_action = :save
|
|
116
|
+
else
|
|
117
|
+
@category_group = CategoryGroup.new
|
|
118
|
+
save_action = :new
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
flash_success = @groups_lang.success[save_action]
|
|
122
|
+
flash_error = @groups_lang.errors[save_action]
|
|
123
|
+
|
|
124
|
+
begin
|
|
125
|
+
@category_group.update(post)
|
|
126
|
+
notification(:success, @groups_lang.titles[:index], flash_success)
|
|
127
|
+
rescue
|
|
128
|
+
notification(:error, @groups_lang.titles[:index], flash_error)
|
|
129
|
+
flash[:form_errors] = @groups_lang.errors
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
if @category_group.id
|
|
133
|
+
redirect "/admin/category_groups/edit/#{@category_group.id}"
|
|
134
|
+
else
|
|
135
|
+
redirect "/admin/cateogry_groups/new"
|
|
136
|
+
end
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
##
|
|
140
|
+
# Delete all specified category groups and their categories. In
|
|
141
|
+
# order to delete a number of groups an array of fields, named "category_group_ids"
|
|
142
|
+
# is required. This array will contain all the primary values of each group that
|
|
143
|
+
# has to be deleted.
|
|
144
|
+
#
|
|
145
|
+
# @author Yorick Peterse
|
|
146
|
+
# @since 0.1
|
|
147
|
+
#
|
|
148
|
+
def delete
|
|
149
|
+
if !user_authorized?([:delete])
|
|
150
|
+
respond(@zen_general_lang.errors[:not_authorized], 403)
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
if !request.params["category_group_ids"] or request.params["category_group_ids"].empty?
|
|
154
|
+
notification(:error, @groups_lang.titles[:index], @groups_lang.errors[:no_delete])
|
|
155
|
+
redirect "/admin/category_groups"
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
request.params["category_group_ids"].each do |id|
|
|
159
|
+
@category_group = CategoryGroup[id]
|
|
160
|
+
|
|
161
|
+
begin
|
|
162
|
+
@cateogry_group.delete
|
|
163
|
+
notification(:success, @groups_lang.titles[:index], @groups_lang.success[:delete] % id)
|
|
164
|
+
rescue
|
|
165
|
+
notification(:error, @groups_lang.titles[:index], @groups_lang.errors[:delete] % id)
|
|
166
|
+
end
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
redirect "/admin/category_groups"
|
|
170
|
+
end
|
|
171
|
+
end
|
|
172
|
+
end
|
|
173
|
+
end
|