zen 0.2.7 → 0.2.8
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/.gitignore +15 -0
- data/.mailmap +2 -0
- data/.rvmrc +2 -0
- data/.travis.yml +8 -3
- data/AUTHORS +1 -2
- data/CHANGELOG.md +48 -17
- data/README.md +44 -39
- data/Rakefile +4 -0
- data/bin/zen +5 -30
- data/lib/zen.rb +13 -19
- data/lib/zen/asset.rb +99 -64
- data/lib/zen/bin/create.rb +94 -0
- data/lib/zen/bin/runner.rb +118 -0
- data/lib/zen/controller/admin_controller.rb +52 -36
- data/lib/zen/controller/base_controller.rb +5 -5
- data/lib/zen/controller/frontend_controller.rb +7 -7
- data/lib/zen/controller/main_controller.rb +12 -10
- data/lib/zen/controller/preview.rb +15 -11
- data/lib/zen/helper/acl.rb +73 -53
- data/lib/zen/helper/blue_form_vendor.rb +689 -0
- data/lib/zen/helper/breadcrumb.rb +23 -19
- data/lib/zen/helper/message.rb +3 -3
- data/lib/zen/helper/theme.rb +18 -13
- data/lib/zen/language.rb +62 -58
- data/lib/zen/language/en/zen_general.yml +2 -4
- data/lib/zen/language/nl/zen_general.yml +2 -4
- data/lib/zen/layout/admin.xhtml +3 -12
- data/lib/zen/layout/login.xhtml +1 -6
- data/lib/zen/model/methods.rb +6 -6
- data/lib/zen/model/settings.rb +5 -4
- data/lib/zen/package.rb +47 -38
- data/lib/zen/package/all.rb +3 -5
- data/lib/zen/package/base.rb +7 -7
- data/lib/zen/package/categories/lib/categories.rb +8 -3
- data/lib/zen/package/categories/lib/categories/controller/categories.rb +81 -55
- data/lib/zen/package/categories/lib/categories/controller/category_groups.rb +45 -44
- data/lib/zen/package/categories/lib/categories/helper/category.rb +88 -0
- data/lib/zen/package/categories/lib/categories/language/en/categories.yml +5 -4
- data/lib/zen/package/categories/lib/categories/language/en/category_groups.yml +5 -4
- data/lib/zen/package/categories/lib/categories/language/nl/categories.yml +5 -4
- data/lib/zen/package/categories/lib/categories/language/nl/category_groups.yml +5 -4
- data/lib/zen/package/categories/lib/categories/model/category.rb +15 -13
- data/lib/zen/package/categories/lib/categories/model/category_group.rb +3 -3
- data/lib/zen/package/categories/lib/categories/plugin/categories.rb +36 -25
- data/lib/zen/package/categories/lib/categories/view/admin/categories/form.xhtml +49 -56
- data/lib/zen/package/categories/lib/categories/view/admin/categories/index.xhtml +48 -35
- data/lib/zen/package/categories/lib/categories/view/admin/category-groups/form.xhtml +36 -29
- data/lib/zen/package/categories/lib/categories/view/admin/category-groups/index.xhtml +42 -37
- data/lib/zen/package/comments/lib/comments.rb +4 -1
- data/lib/zen/package/comments/lib/comments/controller/comments.rb +39 -32
- data/lib/zen/package/comments/lib/comments/controller/comments_form.rb +45 -26
- data/lib/zen/package/comments/lib/comments/helper/comment.rb +35 -0
- data/lib/zen/package/comments/lib/comments/language/en/comments.yml +9 -7
- data/lib/zen/package/comments/lib/comments/language/nl/comments.yml +10 -8
- data/lib/zen/package/comments/lib/comments/model/comment.rb +31 -17
- data/lib/zen/package/comments/lib/comments/model/comment_status.rb +15 -0
- data/lib/zen/package/comments/lib/comments/plugin/anti_spam.rb +27 -18
- data/lib/zen/package/comments/lib/comments/plugin/comments.rb +25 -20
- data/lib/zen/package/comments/lib/comments/view/admin/comments/form.xhtml +61 -54
- data/lib/zen/package/comments/lib/comments/view/admin/comments/index.xhtml +38 -23
- data/lib/zen/package/comments/migrations/1308774099_comment_status.rb +60 -0
- data/lib/zen/package/custom_fields/lib/custom_fields.rb +33 -7
- data/lib/zen/package/custom_fields/lib/custom_fields/blue_form_parameters.rb +209 -0
- data/lib/zen/package/custom_fields/lib/custom_fields/controller/custom_field_groups.rb +50 -47
- data/lib/zen/package/custom_fields/lib/custom_fields/controller/custom_field_types.rb +215 -0
- data/lib/zen/package/custom_fields/lib/custom_fields/controller/custom_fields.rb +111 -73
- data/lib/zen/package/custom_fields/lib/custom_fields/helper/custom_field.rb +79 -0
- data/lib/zen/package/custom_fields/lib/custom_fields/language/en/custom_field_groups.yml +20 -19
- data/lib/zen/package/custom_fields/lib/custom_fields/language/en/custom_field_types.yml +40 -0
- data/lib/zen/package/custom_fields/lib/custom_fields/language/en/custom_fields.yml +34 -32
- data/lib/zen/package/custom_fields/lib/custom_fields/language/nl/custom_field_groups.yml +5 -4
- data/lib/zen/package/custom_fields/lib/custom_fields/language/nl/custom_field_types.yml +40 -0
- data/lib/zen/package/custom_fields/lib/custom_fields/language/nl/custom_fields.yml +18 -16
- data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field.rb +31 -11
- data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field_method.rb +15 -0
- data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field_type.rb +50 -0
- data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field_value.rb +28 -7
- data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-groups/form.xhtml +33 -28
- data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-groups/index.xhtml +48 -46
- data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-types/form.xhtml +61 -0
- data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-types/index.xhtml +93 -0
- data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-fields/form.xhtml +105 -99
- data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-fields/index.xhtml +43 -39
- data/lib/zen/package/custom_fields/migrations/1295255665_create_schema.rb +47 -16
- data/lib/zen/package/custom_fields/migrations/1310659580_custom_field_types.rb +148 -0
- data/lib/zen/package/custom_fields/migrations/1311694920_rename_css_class.rb +11 -0
- data/lib/zen/package/menus/lib/menus/controller/menu_items.rb +40 -35
- data/lib/zen/package/menus/lib/menus/controller/menus.rb +47 -43
- data/lib/zen/package/menus/lib/menus/helper/{menu_item.rb → menu.rb} +42 -15
- data/lib/zen/package/menus/lib/menus/language/en/menu_items.yml +5 -5
- data/lib/zen/package/menus/lib/menus/language/en/menus.yml +9 -8
- data/lib/zen/package/menus/lib/menus/language/nl/menu_items.yml +8 -8
- data/lib/zen/package/menus/lib/menus/language/nl/menus.yml +11 -10
- data/lib/zen/package/menus/lib/menus/model/menu.rb +5 -5
- data/lib/zen/package/menus/lib/menus/model/menu_item.rb +6 -5
- data/lib/zen/package/menus/lib/menus/plugin/menus.rb +41 -43
- data/lib/zen/package/menus/lib/menus/view/admin/menu-items/form.xhtml +59 -63
- data/lib/zen/package/menus/lib/menus/view/admin/menu-items/index.xhtml +35 -30
- data/lib/zen/package/menus/lib/menus/view/admin/menus/form.xhtml +46 -37
- data/lib/zen/package/menus/lib/menus/view/admin/menus/index.xhtml +37 -37
- data/lib/zen/package/menus/migrations/1297184342_create_schema.rb +5 -5
- data/lib/zen/package/menus/migrations/1308671733_rename_order_column.rb +11 -0
- data/lib/zen/package/menus/migrations/1311695030_rename_css_class.rb +17 -0
- data/lib/zen/package/sections/lib/sections.rb +18 -11
- data/lib/zen/package/sections/lib/sections/controller/section_entries.rb +115 -109
- data/lib/zen/package/sections/lib/sections/controller/sections.rb +72 -50
- data/lib/zen/package/sections/lib/sections/helper/section.rb +53 -0
- data/lib/zen/package/sections/lib/sections/language/en/section_entries.yml +5 -4
- data/lib/zen/package/sections/lib/sections/language/en/sections.yml +5 -4
- data/lib/zen/package/sections/lib/sections/language/nl/section_entries.yml +5 -4
- data/lib/zen/package/sections/lib/sections/language/nl/sections.yml +5 -4
- data/lib/zen/package/sections/lib/sections/model/section.rb +17 -9
- data/lib/zen/package/sections/lib/sections/model/section_entry.rb +192 -13
- data/lib/zen/package/sections/lib/sections/model/section_entry_status.rb +13 -0
- data/lib/zen/package/sections/lib/sections/plugin/section_entries.rb +60 -39
- data/lib/zen/package/sections/lib/sections/plugin/sections.rb +14 -11
- data/lib/zen/package/sections/lib/sections/view/admin/form.xhtml +100 -97
- data/lib/zen/package/sections/lib/sections/view/admin/index.xhtml +41 -39
- data/lib/zen/package/sections/lib/sections/view/admin/section-entries/form.xhtml +95 -215
- data/lib/zen/package/sections/lib/sections/view/admin/section-entries/index.xhtml +48 -40
- data/lib/zen/package/sections/migrations/1308672298_use_id_for_default_section.rb +40 -0
- data/lib/zen/package/sections/migrations/1308813320_section_entry_statuses.rb +58 -0
- data/lib/zen/package/settings/lib/settings/controller/settings.rb +5 -8
- data/lib/zen/package/settings/lib/settings/model/setting.rb +2 -37
- data/lib/zen/package/settings/lib/settings/plugin/setting_base.rb +18 -1
- data/lib/zen/package/settings/lib/settings/plugin/settings.rb +13 -7
- data/lib/zen/package/settings/lib/settings/view/admin/settings/index.xhtml +2 -1
- data/lib/zen/package/users/lib/users.rb +3 -1
- data/lib/zen/package/users/lib/users/controller/access_rules.rb +77 -60
- data/lib/zen/package/users/lib/users/controller/user_groups.rb +41 -36
- data/lib/zen/package/users/lib/users/controller/users.rb +48 -42
- data/lib/zen/package/users/lib/users/helper/users.rb +72 -0
- data/lib/zen/package/users/lib/users/language/en/access_rules.yml +6 -5
- data/lib/zen/package/users/lib/users/language/en/user_groups.yml +5 -4
- data/lib/zen/package/users/lib/users/language/en/users.yml +1 -0
- data/lib/zen/package/users/lib/users/language/nl/access_rules.yml +5 -4
- data/lib/zen/package/users/lib/users/language/nl/user_groups.yml +5 -4
- data/lib/zen/package/users/lib/users/language/nl/users.yml +1 -0
- data/lib/zen/package/users/lib/users/model/access_rule.rb +5 -1
- data/lib/zen/package/users/lib/users/model/user.rb +17 -10
- data/lib/zen/package/users/lib/users/public/admin/js/users/access_rules.js +10 -37
- data/lib/zen/package/users/lib/users/public/admin/js/users/lib/access_rules.js +49 -0
- data/lib/zen/package/users/lib/users/view/admin/access-rules/form.xhtml +105 -96
- data/lib/zen/package/users/lib/users/view/admin/access-rules/index.xhtml +48 -41
- data/lib/zen/package/users/lib/users/view/admin/user-groups/form.xhtml +42 -32
- data/lib/zen/package/users/lib/users/view/admin/user-groups/index.xhtml +43 -38
- data/lib/zen/package/users/lib/users/view/admin/users/form.xhtml +76 -67
- data/lib/zen/package/users/lib/users/view/admin/users/index.xhtml +43 -41
- data/lib/zen/package/users/lib/users/view/admin/users/login.xhtml +12 -9
- data/lib/zen/package/users/migrations/1295281013_create_schema.rb +2 -2
- data/lib/zen/plugin.rb +56 -50
- data/lib/zen/plugin/markup/lib/markup/markup.rb +33 -21
- data/lib/zen/public/admin/css/zen/buttons.css +11 -7
- data/lib/zen/public/admin/css/zen/datepicker.css +6 -6
- data/lib/zen/public/admin/css/zen/forms.css +2 -1
- data/lib/zen/public/admin/css/zen/general.css +15 -10
- data/lib/zen/public/admin/css/zen/layout.css +51 -20
- data/lib/zen/public/admin/css/zen/tables.css +39 -11
- data/lib/zen/public/admin/css/zen/tabs.css +6 -4
- data/lib/zen/public/admin/css/zen/window.css +11 -11
- data/lib/zen/public/{favicon.ico → admin/favicon.ico} +0 -0
- data/lib/zen/public/admin/images/zen/icons/asc.png +0 -0
- data/lib/zen/public/admin/images/zen/icons/desc.png +0 -0
- data/lib/zen/public/admin/js/vendor/datepicker.js +0 -11
- data/lib/zen/public/admin/js/{mootools → vendor/mootools}/core.js +0 -1
- data/lib/zen/public/admin/js/{mootools → vendor/mootools}/more.js +100 -29
- data/lib/zen/public/admin/js/zen/index.js +48 -0
- data/lib/zen/public/admin/js/zen/lib/asset.js +111 -0
- data/lib/zen/public/admin/js/zen/{editor.js → lib/editor.js} +107 -127
- data/lib/zen/public/admin/js/zen/{editor → lib/editor}/markdown.js +7 -9
- data/lib/zen/public/admin/js/zen/{editor → lib/editor}/textile.js +7 -9
- data/lib/zen/public/admin/js/zen/lib/html_table.js +143 -0
- data/lib/zen/public/admin/js/zen/{tabs.js → lib/tabs.js} +40 -37
- data/lib/zen/public/admin/js/zen/{window.js → lib/window.js} +24 -20
- data/lib/zen/spec/bacon/color_output.rb +39 -0
- data/lib/zen/spec/helper.rb +152 -0
- data/lib/zen/spec/simplecov.rb +22 -0
- data/lib/zen/task/build.rake +20 -43
- data/lib/zen/task/clean.rake +2 -6
- data/lib/zen/task/db.rake +8 -12
- data/lib/zen/task/package.rake +4 -10
- data/lib/zen/task/plugin.rake +3 -9
- data/lib/zen/task/proto.rake +0 -62
- data/lib/zen/task/test.rake +6 -3
- data/lib/zen/task/theme.rake +4 -11
- data/lib/zen/theme.rb +22 -24
- data/lib/zen/validation.rb +34 -27
- data/lib/zen/version.rb +2 -8
- data/lib/zen/view/head.xhtml +7 -0
- data/lib/zen/view/main.xhtml +7 -22
- data/{proto/package/migrations → pkg}/.gitkeep +0 -0
- data/proto/app/app.rb +1 -0
- data/proto/app/config/config.rb +5 -4
- data/proto/app/config/database.rb +19 -41
- data/proto/app/config/middlewares.rb +32 -29
- data/proto/{package/lib/package/view/admin/package/index.xhtml → app/log/database/dev/.gitkeep} +0 -0
- data/proto/app/log/database/live/.gitkeep +0 -0
- data/spec/Rakefile +26 -0
- data/spec/fixtures/zen/asset.rb +18 -0
- data/spec/fixtures/zen/helper/acl.rb +39 -0
- data/spec/fixtures/zen/helper/message.rb +19 -0
- data/spec/fixtures/zen/language/en/spec.yml +10 -0
- data/spec/fixtures/zen/language/nl/spec.yml +7 -0
- data/spec/fixtures/zen/package.rb +17 -0
- data/spec/fixtures/zen/package/comments/controller/comments_form.rb +27 -0
- data/spec/fixtures/zen/package/settings/plugin/settings.rb +20 -0
- data/spec/fixtures/zen/plugin.rb +7 -0
- data/spec/fixtures/zen/theme/404.xhtml +1 -0
- data/spec/fixtures/zen/theme/default-section/index.xhtml +1 -0
- data/spec/fixtures/zen/theme/helper/404.xhtml +1 -0
- data/spec/fixtures/zen/theme/helper/partial.xhtml +1 -0
- data/spec/fixtures/zen/theme/helper/wrong_partial.xhtml +1 -0
- data/spec/fixtures/zen/theme/partials/partial.xhtml +1 -0
- data/spec/fixtures/zen/theme/theme.rb +11 -0
- data/spec/fixtures/zen/validation.rb +22 -0
- data/spec/helper.rb +41 -0
- data/spec/zen/all.rb +5 -0
- data/spec/zen/asset.rb +97 -0
- data/spec/zen/bin/create.rb +89 -0
- data/spec/zen/bin/runner.rb +47 -0
- data/spec/zen/controller/admin_controller.rb +26 -0
- data/spec/zen/controller/main_controller.rb +81 -0
- data/spec/zen/controller/preview.rb +33 -0
- data/spec/zen/helper/acl.rb +149 -0
- data/spec/zen/helper/breadcrumb.rb +38 -0
- data/spec/zen/helper/message.rb +31 -0
- data/spec/zen/helper/theme.rb +58 -0
- data/spec/zen/language.rb +55 -0
- data/spec/zen/package.rb +23 -0
- data/spec/zen/package/categories/controller/categories.rb +123 -0
- data/spec/zen/package/categories/controller/category_groups.rb +108 -0
- data/spec/zen/package/categories/helper/category.rb +75 -0
- data/spec/zen/package/categories/plugin/categories.rb +92 -0
- data/spec/zen/package/comments/controller/comments.rb +134 -0
- data/spec/zen/package/comments/controller/comments_form.rb +343 -0
- data/spec/zen/package/comments/helper/comment.rb +47 -0
- data/spec/zen/package/comments/plugin/anti_spam.rb +59 -0
- data/spec/zen/package/comments/plugin/comments.rb +107 -0
- data/spec/zen/package/custom_fields/blue_form_parameters.rb +183 -0
- data/spec/zen/package/custom_fields/controller/custom_field_groups.rb +120 -0
- data/spec/zen/package/custom_fields/controller/custom_field_types.rb +169 -0
- data/spec/zen/package/custom_fields/controller/custom_fields.rb +158 -0
- data/spec/zen/package/custom_fields/helper/custom_field.rb +86 -0
- data/spec/zen/package/menus/controller/menu_items.rb +110 -0
- data/spec/zen/package/menus/controller/menus.rb +110 -0
- data/spec/zen/package/menus/helper/menu.rb +75 -0
- data/spec/zen/package/menus/plugin/menus.rb +120 -0
- data/spec/zen/package/sections/controller/section_entries.rb +201 -0
- data/spec/zen/package/sections/controller/sections.rb +116 -0
- data/spec/zen/package/sections/helper/section.rb +74 -0
- data/spec/zen/package/sections/plugin/section_entries.rb +161 -0
- data/spec/zen/package/sections/plugin/sections.rb +75 -0
- data/spec/zen/package/settings/controller/settings.rb +36 -0
- data/spec/zen/package/settings/plugin/settings.rb +33 -0
- data/spec/zen/package/users/controller/access_rules.rb +90 -0
- data/spec/zen/package/users/controller/user_groups.rb +101 -0
- data/spec/zen/package/users/controller/users.rb +130 -0
- data/spec/zen/package/users/helper/users.rb +97 -0
- data/spec/zen/plugin.rb +64 -0
- data/spec/zen/plugin/helper.rb +11 -0
- data/spec/zen/plugin/markup.rb +44 -0
- data/spec/zen/theme.rb +41 -0
- data/spec/zen/validation.rb +63 -0
- data/zen.gemspec +36 -0
- metadata +159 -113
- data/MANIFEST +0 -266
- data/lib/zen/bin/app.rb +0 -40
- data/lib/zen/ext/string.rb +0 -185
- data/lib/zen/helper/common.rb +0 -106
- data/lib/zen/package/categories/lib/categories/view/admin/categories/edit.xhtml +0 -7
- data/lib/zen/package/categories/lib/categories/view/admin/categories/new.xhtml +0 -7
- data/lib/zen/package/categories/lib/categories/view/admin/category-groups/edit.xhtml +0 -7
- data/lib/zen/package/categories/lib/categories/view/admin/category-groups/new.xhtml +0 -7
- data/lib/zen/package/comments/lib/comments/view/admin/comments/edit.xhtml +0 -7
- data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-groups/edit.xhtml +0 -7
- data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-groups/new.xhtml +0 -7
- data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-fields/edit.xhtml +0 -7
- data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-fields/new.xhtml +0 -7
- data/lib/zen/package/menus/lib/menus/view/admin/menu-items/edit.xhtml +0 -7
- data/lib/zen/package/menus/lib/menus/view/admin/menu-items/new.xhtml +0 -7
- data/lib/zen/package/menus/lib/menus/view/admin/menus/edit.xhtml +0 -7
- data/lib/zen/package/menus/lib/menus/view/admin/menus/new.xhtml +0 -7
- data/lib/zen/package/sections/lib/sections/view/admin/edit.xhtml +0 -7
- data/lib/zen/package/sections/lib/sections/view/admin/new.xhtml +0 -7
- data/lib/zen/package/sections/lib/sections/view/admin/section-entries/edit.xhtml +0 -7
- data/lib/zen/package/sections/lib/sections/view/admin/section-entries/new.xhtml +0 -7
- data/lib/zen/package/users/lib/users/view/admin/access-rules/edit.xhtml +0 -7
- data/lib/zen/package/users/lib/users/view/admin/access-rules/new.xhtml +0 -7
- data/lib/zen/package/users/lib/users/view/admin/user-groups/edit.xhtml +0 -7
- data/lib/zen/package/users/lib/users/view/admin/user-groups/new.xhtml +0 -7
- data/lib/zen/package/users/lib/users/view/admin/users/edit.xhtml +0 -7
- data/lib/zen/package/users/lib/users/view/admin/users/new.xhtml +0 -7
- data/lib/zen/plugin/controller.rb +0 -59
- data/lib/zen/public/admin/css/zen/notifications.css +0 -84
- data/lib/zen/public/admin/images/zen/icons/large/error.png +0 -0
- data/lib/zen/public/admin/images/zen/icons/large/notice.png +0 -0
- data/lib/zen/public/admin/images/zen/icons/large/success.png +0 -0
- data/lib/zen/public/admin/js/zen/core.js +0 -73
- data/lib/zen/public/admin/js/zen/init.js +0 -80
- data/proto/package/lib/package.rb +0 -21
- data/proto/package/lib/package/controller/controllers.rb +0 -50
- data/proto/package/lib/package/language/en/languages.yml +0 -4
- data/proto/package/lib/package/model/model.rb +0 -12
data/lib/zen/layout/admin.xhtml
CHANGED
|
@@ -1,24 +1,15 @@
|
|
|
1
1
|
<!DOCTYPE html>
|
|
2
2
|
<html lang="#{plugin(:settings, :get, :language).value}">
|
|
3
3
|
<head>
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
<!-- Load all stylesheets -->
|
|
7
|
-
#{::Zen::Asset.build(:stylesheet)}
|
|
8
|
-
|
|
9
|
-
<title>#{@page_title}</title>
|
|
4
|
+
#{render_file(__DIR__('../view/head.xhtml'))}
|
|
10
5
|
</head>
|
|
11
6
|
|
|
12
7
|
<body id="admin">
|
|
13
8
|
<div id="top">
|
|
14
9
|
<header class="container">
|
|
15
|
-
<!--
|
|
16
|
-
Main navigation of the backend. Navigation items may be excluded if the user
|
|
17
|
-
doesn't have the required permissions for the extension that created it.
|
|
18
|
-
-->
|
|
19
10
|
<nav id="main_nav" class="grid_12">
|
|
20
11
|
#{Zen::Package.build_menu("left", extension_permissions)}
|
|
21
|
-
|
|
12
|
+
|
|
22
13
|
<ul class="right clearfix">
|
|
23
14
|
<li>
|
|
24
15
|
<a href="/admin/users/logout">
|
|
@@ -39,7 +30,7 @@
|
|
|
39
30
|
</nav>
|
|
40
31
|
</header>
|
|
41
32
|
</div>
|
|
42
|
-
|
|
33
|
+
|
|
43
34
|
#{render_file(__DIR__('../view/main.xhtml'))}
|
|
44
35
|
#{render_file(__DIR__('../view/bottom.xhtml'))}
|
|
45
36
|
</body>
|
data/lib/zen/layout/login.xhtml
CHANGED
|
@@ -1,12 +1,7 @@
|
|
|
1
1
|
<!DOCTYPE html>
|
|
2
2
|
<html lang="#{plugin(:settings, :get, :language).value}">
|
|
3
3
|
<head>
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
<!-- Load all stylesheets -->
|
|
7
|
-
#{::Zen::Asset.build(:stylesheet)}
|
|
8
|
-
|
|
9
|
-
<title>#{@page_title}</title>
|
|
4
|
+
#{render_file(__DIR__('../view/head.xhtml'))}
|
|
10
5
|
</head>
|
|
11
6
|
|
|
12
7
|
<body id="login">
|
data/lib/zen/model/methods.rb
CHANGED
|
@@ -3,10 +3,10 @@ module Sequel
|
|
|
3
3
|
#:nodoc:
|
|
4
4
|
class Model
|
|
5
5
|
##
|
|
6
|
-
# Retrieves all primary values and an optional column and returns the
|
|
7
|
-
# an array of hashes in which the keys of these hashes are the
|
|
8
|
-
# the values of the specified column. This array can be
|
|
9
|
-
# elements using the BlueForm helper.
|
|
6
|
+
# Retrieves all primary values and an optional column and returns the
|
|
7
|
+
# results as an array of hashes in which the keys of these hashes are the
|
|
8
|
+
# IDs and the values the values of the specified column. This array can be
|
|
9
|
+
# used when creating <select> elements using the BlueForm helper.
|
|
10
10
|
#
|
|
11
11
|
# @example
|
|
12
12
|
# Sections::Model::Section.pk_hash(:name) # => {1 => 'Blog', 2 => 'General'}
|
|
@@ -24,5 +24,5 @@ module Sequel
|
|
|
24
24
|
|
|
25
25
|
return hash
|
|
26
26
|
end
|
|
27
|
-
end
|
|
28
|
-
end
|
|
27
|
+
end # Model
|
|
28
|
+
end # Sequel
|
data/lib/zen/model/settings.rb
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
Zen::Language.load('zen_models')
|
|
2
2
|
|
|
3
|
-
# When passing a hash to update() or create() we'll ignore any keys that don't
|
|
4
|
-
# in the table. This allows you to directly pass request.params to these
|
|
5
|
-
# without having to filter the hash yourself.
|
|
3
|
+
# When passing a hash to update() or create() we'll ignore any keys that don't
|
|
4
|
+
# belong in the table. This allows you to directly pass request.params to these
|
|
5
|
+
# methods without having to filter the hash yourself.
|
|
6
6
|
Sequel::Model.strict_param_setting = false
|
|
7
7
|
|
|
8
8
|
# Load all the required plugins
|
|
9
9
|
Sequel::Model.plugin :validation_helpers
|
|
10
10
|
Sequel::Model.plugin :association_pks
|
|
11
11
|
|
|
12
|
-
Sequel.extension
|
|
12
|
+
Sequel.extension :migration
|
|
13
|
+
Sequel.extension :pagination
|
|
13
14
|
|
|
14
15
|
Sequel::Plugins::ValidationHelpers::DEFAULT_OPTIONS.merge!(
|
|
15
16
|
{
|
data/lib/zen/package.rb
CHANGED
|
@@ -5,13 +5,13 @@ require __DIR__('package/base')
|
|
|
5
5
|
#:nodoc:
|
|
6
6
|
module Zen
|
|
7
7
|
##
|
|
8
|
-
# Module used for registering extensions and themes, setting their details and
|
|
9
|
-
# whole shebang. Packages follow the same directory structure as Rubygems
|
|
10
|
-
# actually be installed using either Rubygems or by storing them in a
|
|
11
|
-
# As long as you require the correct file you're good to go.
|
|
8
|
+
# Module used for registering extensions and themes, setting their details and
|
|
9
|
+
# the whole shebang. Packages follow the same directory structure as Rubygems
|
|
10
|
+
# and can actually be installed using either Rubygems or by storing them in a
|
|
11
|
+
# custom directory. As long as you require the correct file you're good to go.
|
|
12
12
|
#
|
|
13
|
-
# Packages are added or "described" using a simple block and the add() method
|
|
14
|
-
# following:
|
|
13
|
+
# Packages are added or "described" using a simple block and the add() method
|
|
14
|
+
# as following:
|
|
15
15
|
#
|
|
16
16
|
# Zen::Package.add do |ext|
|
|
17
17
|
# # ....
|
|
@@ -29,12 +29,13 @@ module Zen
|
|
|
29
29
|
#
|
|
30
30
|
# ## ACL
|
|
31
31
|
#
|
|
32
|
-
# Packages allow developers to register controllers for the ACL system that
|
|
33
|
-
# Zen. Doing this means a user can set controller specific rules
|
|
34
|
-
# having to write any code. In order to register a set
|
|
35
|
-
# set the "controllers" attribute in the package
|
|
36
|
-
#
|
|
37
|
-
#
|
|
32
|
+
# Packages allow developers to register controllers for the ACL system that
|
|
33
|
+
# ships with Zen. Doing this means a user can set controller specific rules
|
|
34
|
+
# in the backend without having to write any code. In order to register a set
|
|
35
|
+
# of controllers you'll need to set the "controllers" attribute in the package
|
|
36
|
+
# block to a hash. The keys of this hash should be a human readable name of
|
|
37
|
+
# the controller and the values the full namespace of the controller as either
|
|
38
|
+
# a string or a constants:
|
|
38
39
|
#
|
|
39
40
|
# Zen::Package.add do |pkg|
|
|
40
41
|
# pkg.controllers = {
|
|
@@ -44,12 +45,15 @@ module Zen
|
|
|
44
45
|
#
|
|
45
46
|
# ## Menu Items
|
|
46
47
|
#
|
|
47
|
-
# The package system easily allows modules to add navigation/sub-navigation
|
|
48
|
-
# to the backend menu. Each extension can have an attribute named
|
|
49
|
-
# is an array of hashes. Each hash must have the
|
|
48
|
+
# The package system easily allows modules to add navigation/sub-navigation
|
|
49
|
+
# elements to the backend menu. Each extension can have an attribute named
|
|
50
|
+
# "menu", this attribute is an array of hashes. Each hash must have the
|
|
51
|
+
# following 2 keys (they're symbols):
|
|
50
52
|
#
|
|
51
|
-
# * title: the value used for both the title tag and the text of the anchor
|
|
52
|
-
#
|
|
53
|
+
# * title: the value used for both the title tag and the text of the anchor
|
|
54
|
+
# element
|
|
55
|
+
# * url: the URI the navigation item will point to. Leading slash isn't
|
|
56
|
+
# required
|
|
53
57
|
#
|
|
54
58
|
# Optionally you can specify child elements using the "children" key. This key
|
|
55
59
|
# will again contain an array of hashes just like regular navigation elements.
|
|
@@ -64,21 +68,23 @@ module Zen
|
|
|
64
68
|
# :children => [{:title => "Child", :url => "admin/dashboard/child"}]
|
|
65
69
|
# }]
|
|
66
70
|
#
|
|
67
|
-
# Once a certain number of navigation elements have been added you can
|
|
68
|
-
# HTML for a fully fledged navigation menu using the
|
|
69
|
-
# uses Gestalt to build the HTML and also
|
|
71
|
+
# Once a certain number of navigation elements have been added you can
|
|
72
|
+
# generate the HTML for a fully fledged navigation menu using the
|
|
73
|
+
# build_menu() method. This method uses Gestalt to build the HTML and also
|
|
74
|
+
# takes care of permissions for each user/module.
|
|
70
75
|
#
|
|
71
76
|
# ## Migrations
|
|
72
77
|
#
|
|
73
|
-
# If your package uses it's own database tables it's best to use migrations as
|
|
74
|
-
# it very easy to install/uninstall the extension. Migrations
|
|
75
|
-
# directory of your extension. For example, if your
|
|
76
|
-
#
|
|
77
|
-
# etc.
|
|
78
|
+
# If your package uses it's own database tables it's best to use migrations as
|
|
79
|
+
# these make it very easy to install/uninstall the extension. Migrations
|
|
80
|
+
# should be put in the root directory of your extension. For example, if your
|
|
81
|
+
# extension is in "foobar" the migrations should be located in
|
|
82
|
+
# "foobar/migrations", the lib directory in "foobar/lib", etc.
|
|
78
83
|
#
|
|
79
|
-
# Migrations can be executed using the Thor task "package:migrate" or
|
|
80
|
-
# the latter will install all packages while the first one will
|
|
81
|
-
# specified packages. For more information on these tasks
|
|
84
|
+
# Migrations can be executed using the Thor task "package:migrate" or
|
|
85
|
+
# "db:migrate", the latter will install all packages while the first one will
|
|
86
|
+
# only install the specified packages. For more information on these tasks
|
|
87
|
+
# execute the following command:
|
|
82
88
|
#
|
|
83
89
|
# $ rake -T
|
|
84
90
|
#
|
|
@@ -87,8 +93,8 @@ module Zen
|
|
|
87
93
|
#
|
|
88
94
|
module Package
|
|
89
95
|
##
|
|
90
|
-
# Hash containing all the registered packages. The keys of this hash are the
|
|
91
|
-
# of all packages and the values the instances of Zen::Package::Base.
|
|
96
|
+
# Hash containing all the registered packages. The keys of this hash are the
|
|
97
|
+
# names of all packages and the values the instances of Zen::Package::Base.
|
|
92
98
|
#
|
|
93
99
|
# @author Yorick Peterse
|
|
94
100
|
# @since 0.2.5
|
|
@@ -104,8 +110,9 @@ module Zen
|
|
|
104
110
|
Controllers = []
|
|
105
111
|
|
|
106
112
|
##
|
|
107
|
-
# Adds a new package along with all it's details such as the name, author,
|
|
108
|
-
# and so on. Extensions can be added using a simple block as
|
|
113
|
+
# Adds a new package along with all it's details such as the name, author,
|
|
114
|
+
# version and so on. Extensions can be added using a simple block as
|
|
115
|
+
# following:
|
|
109
116
|
#
|
|
110
117
|
# Zen::Package.add do |ext|
|
|
111
118
|
# ext.name = "name"
|
|
@@ -121,12 +128,13 @@ module Zen
|
|
|
121
128
|
# * url
|
|
122
129
|
# * directory
|
|
123
130
|
#
|
|
124
|
-
# You can also set "migration_dir" to a directory with all migrations. By
|
|
125
|
-
# Zen will assume that it's 2 levels above your root directory.
|
|
131
|
+
# You can also set "migration_dir" to a directory with all migrations. By
|
|
132
|
+
# default Zen will assume that it's 2 levels above your root directory.
|
|
126
133
|
#
|
|
127
134
|
# @author Yorick Peterse
|
|
128
135
|
# @since 0.1
|
|
129
|
-
# @yield [package] Object containing all setters and getters for each
|
|
136
|
+
# @yield [package] Object containing all setters and getters for each
|
|
137
|
+
# package.
|
|
130
138
|
#
|
|
131
139
|
def self.add
|
|
132
140
|
package = Zen::Package::Base.new
|
|
@@ -185,12 +193,13 @@ module Zen
|
|
|
185
193
|
# of which each list item can contain N sub items.
|
|
186
194
|
#
|
|
187
195
|
# @author Yorick Peterse
|
|
188
|
-
# @param [String]
|
|
196
|
+
# @param [String] html_class A string of CSS classes to apply to the main UL
|
|
197
|
+
# element.
|
|
189
198
|
# @param [Hash] permissions Hash containing the permissions as returned by
|
|
190
199
|
# Ramaze::Helper::ACL.extension_permissions
|
|
191
200
|
# @since 0.1
|
|
192
201
|
#
|
|
193
|
-
def self.build_menu(
|
|
202
|
+
def self.build_menu(html_class = '', permissions = {})
|
|
194
203
|
@g = Ramaze::Gestalt.new
|
|
195
204
|
@permissions = permissions
|
|
196
205
|
menu_items = []
|
|
@@ -209,7 +218,7 @@ module Zen
|
|
|
209
218
|
item[:title]
|
|
210
219
|
end
|
|
211
220
|
|
|
212
|
-
@g.ul :class =>
|
|
221
|
+
@g.ul :class => html_class do
|
|
213
222
|
if !menu_items.empty?
|
|
214
223
|
menu_items.each do |m|
|
|
215
224
|
self.nav_list(m)
|
data/lib/zen/package/all.rb
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
#
|
|
3
|
-
#
|
|
4
|
-
# not work.
|
|
5
|
-
#
|
|
1
|
+
# Loads all core packages that ship with Zen. Note that it's important to load
|
|
2
|
+
# these packages in the correct order as otherwise migrations that create
|
|
3
|
+
# foreign keys might not work.
|
|
6
4
|
require __DIR__('users/lib/users')
|
|
7
5
|
require __DIR__('settings/lib/settings')
|
|
8
6
|
require __DIR__('sections/lib/sections')
|
data/lib/zen/package/base.rb
CHANGED
|
@@ -3,7 +3,8 @@ module Zen
|
|
|
3
3
|
#:nodoc:
|
|
4
4
|
module Package
|
|
5
5
|
##
|
|
6
|
-
# Base class used to store the data about packages such as the name,
|
|
6
|
+
# Base class used to store the data about packages such as the name,
|
|
7
|
+
# directory, etc.
|
|
7
8
|
#
|
|
8
9
|
# @author Yorick Peterse
|
|
9
10
|
# @since 0.2.5
|
|
@@ -32,8 +33,8 @@ module Zen
|
|
|
32
33
|
# Path to the directory containing all migrations
|
|
33
34
|
attr_accessor :migration_dir
|
|
34
35
|
|
|
35
|
-
# Array containing all controllers for the package. These classes will be
|
|
36
|
-
# by the ACL system.
|
|
36
|
+
# Array containing all controllers for the package. These classes will be
|
|
37
|
+
# used by the ACL system.
|
|
37
38
|
attr_accessor :controllers
|
|
38
39
|
|
|
39
40
|
##
|
|
@@ -56,7 +57,6 @@ module Zen
|
|
|
56
57
|
raise(::Zen::ValidationError, "The package #{name} already exists.")
|
|
57
58
|
end
|
|
58
59
|
end
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
end
|
|
60
|
+
end # Base
|
|
61
|
+
end # Package
|
|
62
|
+
end # Zen
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
# Update the helper path before loading the controllers
|
|
2
|
+
Ramaze::HelpersHelper.options.paths.push(__DIR__('categories'))
|
|
3
|
+
|
|
1
4
|
require __DIR__('categories/model/category_group')
|
|
2
5
|
require __DIR__('categories/model/category')
|
|
3
6
|
require __DIR__('categories/controller/category_groups')
|
|
@@ -14,8 +17,8 @@ Zen::Package.add do |p|
|
|
|
14
17
|
p.name = 'categories'
|
|
15
18
|
p.author = 'Yorick Peterse'
|
|
16
19
|
p.url = 'http://yorickpeterse.com/'
|
|
17
|
-
p.about = "Module for managing categories. Categories can be used to
|
|
18
|
-
section entries."
|
|
20
|
+
p.about = "Module for managing categories. Categories can be used to
|
|
21
|
+
organize section entries."
|
|
19
22
|
|
|
20
23
|
p.directory = __DIR__('categories')
|
|
21
24
|
p.migration_dir = __DIR__('../migrations')
|
|
@@ -37,6 +40,8 @@ Zen::Plugin.add do |p|
|
|
|
37
40
|
p.name = 'categories'
|
|
38
41
|
p.author = 'Yorick Peterse'
|
|
39
42
|
p.url = 'http://yorickpeterse.com/'
|
|
40
|
-
p.about = 'Plugin that makes it easier to retrieve categories and category
|
|
43
|
+
p.about = 'Plugin that makes it easier to retrieve categories and category
|
|
44
|
+
groups.'
|
|
45
|
+
|
|
41
46
|
p.plugin = Categories::Plugin::Categories
|
|
42
47
|
end
|
|
@@ -3,10 +3,10 @@ module Categories
|
|
|
3
3
|
#:nodoc:
|
|
4
4
|
module Controller
|
|
5
5
|
##
|
|
6
|
-
# Categories can be seen as "tags" for your section entries. They describe
|
|
7
|
-
# type of entry just like tags except that categories generally cover
|
|
8
|
-
# When adding a new entry categories aren't required so
|
|
9
|
-
# them if you don't need them.
|
|
6
|
+
# Categories can be seen as "tags" for your section entries. They describe
|
|
7
|
+
# the type of entry just like tags except that categories generally cover
|
|
8
|
+
# larger elements. When adding a new entry categories aren't required so
|
|
9
|
+
# you're free to ignore them if you don't need them.
|
|
10
10
|
#
|
|
11
11
|
# @author Yorick Peterse
|
|
12
12
|
# @since 0.1
|
|
@@ -14,7 +14,8 @@ module Categories
|
|
|
14
14
|
class Categories < Zen::Controller::AdminController
|
|
15
15
|
include ::Categories::Model
|
|
16
16
|
|
|
17
|
-
map
|
|
17
|
+
map '/admin/categories'
|
|
18
|
+
helper :category
|
|
18
19
|
|
|
19
20
|
before_all do
|
|
20
21
|
csrf_protection(:save, :delete) do
|
|
@@ -23,8 +24,8 @@ module Categories
|
|
|
23
24
|
end
|
|
24
25
|
|
|
25
26
|
##
|
|
26
|
-
# The constructor is used to set various options such as the form URLs and
|
|
27
|
-
# the language pack for the categories module.
|
|
27
|
+
# The constructor is used to set various options such as the form URLs and
|
|
28
|
+
# load the language pack for the categories module.
|
|
28
29
|
#
|
|
29
30
|
# The following language files are loaded:
|
|
30
31
|
#
|
|
@@ -37,9 +38,6 @@ module Categories
|
|
|
37
38
|
def initialize
|
|
38
39
|
super
|
|
39
40
|
|
|
40
|
-
@form_save_url = Categories.r(:save)
|
|
41
|
-
@form_delete_url = Categories.r(:delete)
|
|
42
|
-
|
|
43
41
|
Zen::Language.load('categories')
|
|
44
42
|
Zen::Language.load('category_groups')
|
|
45
43
|
|
|
@@ -59,22 +57,26 @@ module Categories
|
|
|
59
57
|
# * read
|
|
60
58
|
#
|
|
61
59
|
# @author Yorick Peterse
|
|
62
|
-
# @param [
|
|
63
|
-
# being managed by the user.
|
|
60
|
+
# @param [Fixnum] category_group_id The ID of the category group that's
|
|
61
|
+
# currently being managed by the user.
|
|
64
62
|
# @since 0.1
|
|
65
63
|
#
|
|
66
|
-
def index
|
|
67
|
-
|
|
68
|
-
respond(lang('zen_general.errors.not_authorized'), 403)
|
|
69
|
-
end
|
|
64
|
+
def index(category_group_id)
|
|
65
|
+
require_permissions(:read)
|
|
70
66
|
|
|
71
67
|
set_breadcrumbs(
|
|
72
|
-
|
|
68
|
+
CategoryGroups.a(lang('category_groups.titles.index'), :index),
|
|
73
69
|
lang('categories.titles.index')
|
|
74
70
|
)
|
|
75
71
|
|
|
76
|
-
|
|
77
|
-
|
|
72
|
+
# Validate the category group
|
|
73
|
+
category_group = validate_category_group(category_group_id)
|
|
74
|
+
@category_group_id = category_group_id
|
|
75
|
+
@categories = Category.filter(
|
|
76
|
+
:category_group_id => category_group_id
|
|
77
|
+
)
|
|
78
|
+
|
|
79
|
+
@categories = paginate(@categories)
|
|
78
80
|
end
|
|
79
81
|
|
|
80
82
|
##
|
|
@@ -90,24 +92,30 @@ module Categories
|
|
|
90
92
|
# @param [Integer] id The ID of the category to edit.
|
|
91
93
|
# @since 0.1
|
|
92
94
|
#
|
|
93
|
-
def edit
|
|
94
|
-
|
|
95
|
-
respond(lang('zen_general.errors.not_authorized'), 403)
|
|
96
|
-
end
|
|
95
|
+
def edit(category_group_id, id)
|
|
96
|
+
require_permissions(:read, :update)
|
|
97
97
|
|
|
98
98
|
set_breadcrumbs(
|
|
99
|
-
|
|
100
|
-
|
|
99
|
+
CategoryGroups.a(
|
|
100
|
+
lang('category_groups.titles.index'), :index
|
|
101
|
+
),
|
|
102
|
+
Categories.a(
|
|
103
|
+
lang('categories.titles.index'), :index, category_group_id
|
|
104
|
+
),
|
|
101
105
|
lang('categories.titles.edit')
|
|
102
106
|
)
|
|
103
107
|
|
|
104
|
-
|
|
108
|
+
validate_category_group(category_group_id)
|
|
109
|
+
|
|
110
|
+
@category_group_id = category_group_id
|
|
105
111
|
|
|
106
112
|
if flash[:form_data]
|
|
107
113
|
@category = flash[:form_data]
|
|
108
114
|
else
|
|
109
|
-
@category =
|
|
115
|
+
@category = validate_category(id, category_group_id)
|
|
110
116
|
end
|
|
117
|
+
|
|
118
|
+
render_view(:form)
|
|
111
119
|
end
|
|
112
120
|
|
|
113
121
|
##
|
|
@@ -122,19 +130,25 @@ module Categories
|
|
|
122
130
|
# @param [Integer] category_group_id The ID of the category group.
|
|
123
131
|
# @since 0.1
|
|
124
132
|
#
|
|
125
|
-
def new
|
|
126
|
-
|
|
127
|
-
respond(lang('zen_general.errors.not_authorized'), 403)
|
|
128
|
-
end
|
|
133
|
+
def new(category_group_id)
|
|
134
|
+
require_permissions(:read, :create)
|
|
129
135
|
|
|
130
136
|
set_breadcrumbs(
|
|
131
|
-
|
|
132
|
-
|
|
137
|
+
CategoryGroups.a(
|
|
138
|
+
lang('category_groups.titles.index'), :index
|
|
139
|
+
),
|
|
140
|
+
Categories.a(
|
|
141
|
+
lang('categories.titles.index'), :index, category_group_id
|
|
142
|
+
),
|
|
133
143
|
lang('categories.titles.new')
|
|
134
144
|
)
|
|
135
145
|
|
|
136
|
-
|
|
146
|
+
validate_category_group(category_group_id)
|
|
147
|
+
|
|
148
|
+
@category_group_id = category_group_id
|
|
137
149
|
@category = Category.new
|
|
150
|
+
|
|
151
|
+
render_view(:form)
|
|
138
152
|
end
|
|
139
153
|
|
|
140
154
|
##
|
|
@@ -150,25 +164,33 @@ module Categories
|
|
|
150
164
|
# @since 0.1
|
|
151
165
|
#
|
|
152
166
|
def save
|
|
153
|
-
|
|
154
|
-
respond(lang('zen_general.errors.not_authorized'), 403)
|
|
155
|
-
end
|
|
156
|
-
|
|
167
|
+
# Fetch all the required fields
|
|
157
168
|
post = request.subset(
|
|
158
|
-
:id,
|
|
169
|
+
:id,
|
|
170
|
+
:parent_id,
|
|
171
|
+
:name,
|
|
172
|
+
:description,
|
|
173
|
+
:slug,
|
|
174
|
+
:category_group_id
|
|
159
175
|
)
|
|
160
176
|
|
|
177
|
+
# Validate the category group
|
|
178
|
+
validate_category_group(post['category_group_id'])
|
|
179
|
+
|
|
161
180
|
# Retrieve the category and set the notifications based on if the ID has
|
|
162
181
|
# been specified or not.
|
|
163
182
|
if post['id'] and !post['id'].empty?
|
|
164
|
-
|
|
183
|
+
require_permissions(:update)
|
|
184
|
+
|
|
185
|
+
category = validate_category(post['id'], post['category_group_id'])
|
|
165
186
|
save_action = :save
|
|
166
187
|
else
|
|
167
|
-
|
|
188
|
+
require_permissions(:create)
|
|
189
|
+
|
|
190
|
+
category = Category.new
|
|
168
191
|
save_action = :new
|
|
169
192
|
end
|
|
170
193
|
|
|
171
|
-
# Remove various keys
|
|
172
194
|
post.delete('slug') if post['slug'].empty?
|
|
173
195
|
post.delete('id')
|
|
174
196
|
|
|
@@ -178,17 +200,19 @@ module Categories
|
|
|
178
200
|
|
|
179
201
|
# Try to update the category
|
|
180
202
|
begin
|
|
181
|
-
|
|
203
|
+
category.update(post)
|
|
182
204
|
message(:success, flash_success)
|
|
183
205
|
rescue
|
|
184
206
|
message(:error, flash_error)
|
|
185
207
|
|
|
186
|
-
flash[:form_errors] =
|
|
187
|
-
flash[:form_data] =
|
|
208
|
+
flash[:form_errors] = category.errors
|
|
209
|
+
flash[:form_data] = category
|
|
210
|
+
|
|
211
|
+
redirect_referrer
|
|
188
212
|
end
|
|
189
213
|
|
|
190
|
-
if
|
|
191
|
-
redirect(Categories.r(:edit, post['category_group_id'],
|
|
214
|
+
if category.id
|
|
215
|
+
redirect(Categories.r(:edit, post['category_group_id'], category.id))
|
|
192
216
|
else
|
|
193
217
|
redirect(Categories.r(:new, post['category_group_id']))
|
|
194
218
|
end
|
|
@@ -196,9 +220,9 @@ module Categories
|
|
|
196
220
|
|
|
197
221
|
##
|
|
198
222
|
# Delete all specified category groups and their categories. In
|
|
199
|
-
# order to delete a number of groups an array of fields, named
|
|
200
|
-
# is required. This array will contain all the
|
|
201
|
-
# has to be deleted.
|
|
223
|
+
# order to delete a number of groups an array of fields, named
|
|
224
|
+
# "category_group_ids" is required. This array will contain all the
|
|
225
|
+
# primary values of each group that has to be deleted.
|
|
202
226
|
#
|
|
203
227
|
# This method requires the following permissions:
|
|
204
228
|
#
|
|
@@ -208,14 +232,13 @@ module Categories
|
|
|
208
232
|
# @since 0.1
|
|
209
233
|
#
|
|
210
234
|
def delete
|
|
211
|
-
|
|
212
|
-
respond(lang('zen_general.errors.not_authorized'), 403)
|
|
213
|
-
end
|
|
235
|
+
require_permissions(:delete)
|
|
214
236
|
|
|
215
237
|
post = request.subset(:category_ids, :category_group_id)
|
|
216
238
|
|
|
217
239
|
# Obviously we'll require some IDs
|
|
218
|
-
if !request.params['category_ids']
|
|
240
|
+
if !request.params['category_ids'] \
|
|
241
|
+
or request.params['category_ids'].empty?
|
|
219
242
|
message(:error, lang('categories.errors.no_delete'))
|
|
220
243
|
redirect(Categories.r(:index, post['category_group_id']))
|
|
221
244
|
end
|
|
@@ -225,8 +248,11 @@ module Categories
|
|
|
225
248
|
begin
|
|
226
249
|
Category[id].destroy
|
|
227
250
|
message(:success, lang('categories.success.delete'))
|
|
228
|
-
rescue
|
|
251
|
+
rescue => e
|
|
252
|
+
Ramaze::Log.error(e.inspect)
|
|
229
253
|
message(:error, lang('categories.errors.delete') % id)
|
|
254
|
+
|
|
255
|
+
redirect_referrer
|
|
230
256
|
end
|
|
231
257
|
end
|
|
232
258
|
|