zen 0.2.8 → 0.3b
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/.gems +20 -0
- data/.mailmap +3 -2
- data/.rvmrc +1 -1
- data/.travis.yml +13 -2
- data/.yardopts +13 -0
- data/AUTHORS +1 -1
- data/README.md +115 -77
- data/Rakefile +6 -7
- data/bin/zen +12 -5
- data/guide/_static/categories/categories.png +0 -0
- data/guide/_static/categories/category_groups.png +0 -0
- data/guide/_static/categories/new_category.png +0 -0
- data/guide/_static/categories/new_category_group.png +0 -0
- data/guide/_static/comments/comments.png +0 -0
- data/guide/_static/comments/edit_comment.png +0 -0
- data/guide/_static/custom_fields/custom_field_groups.png +0 -0
- data/guide/_static/custom_fields/custom_field_types.png +0 -0
- data/guide/_static/custom_fields/custom_fields.png +0 -0
- data/guide/_static/custom_fields/edit_custom_field_general.png +0 -0
- data/guide/_static/custom_fields/edit_custom_field_group.png +0 -0
- data/guide/_static/custom_fields/edit_custom_field_settings.png +0 -0
- data/guide/_static/custom_fields/edit_custom_field_type.png +0 -0
- data/guide/_static/menus/edit_menu.png +0 -0
- data/guide/_static/menus/edit_menu_item.png +0 -0
- data/guide/_static/menus/menu_items.png +0 -0
- data/guide/_static/menus/menus.png +0 -0
- data/guide/_static/sections/edit_entry.png +0 -0
- data/guide/_static/sections/edit_entry_categories.png +0 -0
- data/guide/_static/sections/edit_entry_general.png +0 -0
- data/guide/_static/sections/edit_entry_meta.png +0 -0
- data/guide/_static/sections/edit_section_comments.png +0 -0
- data/guide/_static/sections/edit_section_general.png +0 -0
- data/guide/_static/sections/edit_section_groups.png +0 -0
- data/guide/_static/sections/entries.png +0 -0
- data/guide/_static/sections/sections.png +0 -0
- data/guide/_static/settings/overview_general.png +0 -0
- data/guide/_static/settings/overview_security.png +0 -0
- data/guide/_static/settings/overview_user.png +0 -0
- data/guide/_static/users/edit_user.png +0 -0
- data/guide/_static/users/edit_user_group.png +0 -0
- data/guide/_static/users/edit_user_group_permissions.png +0 -0
- data/guide/_static/users/edit_user_permissions.png +0 -0
- data/guide/_static/users/overview.png +0 -0
- data/guide/_static/users/user_groups_overview.png +0 -0
- data/guide/asset_management.md +117 -0
- data/{CHANGELOG.md → guide/changelog.md} +42 -0
- data/guide/css/common.css +20 -0
- data/guide/getting_started.md +61 -0
- data/guide/hacking.md +52 -0
- data/guide/installation.md +44 -0
- data/guide/javascript.md +352 -0
- data/lib/vendor/sequel_sluggable.rb +137 -0
- data/lib/yard/tags.rb +13 -0
- data/lib/zen.rb +148 -78
- data/lib/zen/asset_groups.rb +85 -0
- data/lib/zen/bin/create.rb +267 -56
- data/lib/zen/bin/default.rb +84 -0
- data/lib/zen/controller/admin_controller.rb +1 -82
- data/lib/zen/controller/base_controller.rb +9 -5
- data/lib/zen/controller/frontend_controller.rb +0 -1
- data/lib/zen/controller/main_controller.rb +30 -42
- data/lib/zen/controller/preview.rb +9 -8
- data/lib/zen/controller/translations.rb +49 -0
- data/lib/zen/error.rb +17 -0
- data/lib/zen/event.rb +118 -0
- data/lib/zen/helper/asset.rb +63 -0
- data/lib/zen/helper/breadcrumb.rb +1 -4
- data/lib/zen/helper/controller.rb +73 -0
- data/lib/zen/helper/locale.rb +42 -0
- data/lib/zen/helper/message.rb +0 -3
- data/lib/zen/helper/search.rb +54 -0
- data/lib/zen/helper/stacked_aspect.rb +249 -0
- data/lib/zen/helper/theme.rb +3 -10
- data/lib/zen/language.rb +356 -181
- data/lib/zen/language/en/zen_general.rb +52 -0
- data/lib/zen/language/en/zen_models.rb +19 -0
- data/lib/zen/language/nl/zen_general.rb +57 -0
- data/lib/zen/language/nl/zen_models.rb +22 -0
- data/lib/zen/language/translation.rb +132 -0
- data/lib/zen/languages.rb +9 -0
- data/lib/zen/layout/admin.xhtml +3 -3
- data/lib/zen/layout/login.xhtml +1 -1
- data/lib/zen/markup.rb +189 -0
- data/lib/zen/model/helper.rb +65 -0
- data/lib/zen/model/init.rb +62 -0
- data/lib/zen/model/methods.rb +6 -7
- data/lib/zen/package.rb +312 -201
- data/lib/zen/package/all.rb +4 -3
- data/lib/zen/package/categories/lib/categories.rb +29 -41
- data/lib/zen/package/categories/lib/categories/controller/categories.rb +185 -130
- data/lib/zen/package/categories/lib/categories/controller/category_groups.rb +172 -102
- data/lib/zen/package/categories/lib/categories/helper/category.rb +4 -9
- data/lib/zen/package/categories/lib/categories/helper/category_frontend.rb +86 -0
- data/lib/zen/package/categories/lib/categories/language/en/categories.rb +40 -0
- data/lib/zen/package/categories/lib/categories/language/en/category_groups.rb +39 -0
- data/lib/zen/package/categories/lib/categories/language/nl/categories.rb +42 -0
- data/lib/zen/package/categories/lib/categories/language/nl/category_groups.rb +42 -0
- data/lib/zen/package/categories/lib/categories/model/category.rb +21 -25
- data/lib/zen/package/categories/lib/categories/model/category_group.rb +21 -15
- data/lib/zen/package/categories/lib/categories/view/admin/categories/form.xhtml +25 -26
- data/lib/zen/package/categories/lib/categories/view/admin/categories/index.xhtml +24 -24
- data/lib/zen/package/categories/lib/categories/view/admin/category-groups/form.xhtml +18 -20
- data/lib/zen/package/categories/lib/categories/view/admin/category-groups/index.xhtml +21 -18
- data/lib/zen/package/comments/lib/comments.rb +30 -50
- data/lib/zen/package/comments/lib/comments/anti_spam.rb +138 -0
- data/lib/zen/package/comments/lib/comments/controller/comments.rb +159 -92
- data/lib/zen/package/comments/lib/comments/controller/comments_form.rb +122 -34
- data/lib/zen/package/comments/lib/comments/helper/comment.rb +0 -3
- data/lib/zen/package/comments/lib/comments/helper/comment_frontend.rb +90 -0
- data/lib/zen/package/comments/lib/comments/language/en/comments.rb +57 -0
- data/lib/zen/package/comments/lib/comments/language/nl/comments.rb +61 -0
- data/lib/zen/package/comments/lib/comments/model/comment.rb +147 -49
- data/lib/zen/package/comments/lib/comments/model/comment_status.rb +0 -2
- data/lib/zen/package/comments/lib/comments/view/admin/comments/form.xhtml +37 -40
- data/lib/zen/package/comments/lib/comments/view/admin/comments/index.xhtml +23 -42
- data/lib/zen/package/comments/migrations/1308774099_comment_status.rb +12 -4
- data/lib/zen/package/comments/migrations/1313851786_remove_defensio_signature.rb +11 -0
- data/lib/zen/package/custom_fields/lib/custom_fields.rb +40 -43
- data/lib/zen/package/custom_fields/lib/custom_fields/blue_form_parameters.rb +72 -17
- data/lib/zen/package/custom_fields/lib/custom_fields/controller/custom_field_groups.rb +154 -118
- data/lib/zen/package/custom_fields/lib/custom_fields/controller/custom_field_types.rb +147 -90
- data/lib/zen/package/custom_fields/lib/custom_fields/controller/custom_fields.rb +161 -131
- data/lib/zen/package/custom_fields/lib/custom_fields/helper/custom_field.rb +4 -9
- data/lib/zen/package/custom_fields/lib/custom_fields/language/en/custom_field_groups.rb +42 -0
- data/lib/zen/package/custom_fields/lib/custom_fields/language/en/custom_field_types.rb +51 -0
- data/lib/zen/package/custom_fields/lib/custom_fields/language/en/custom_fields.rb +60 -0
- data/lib/zen/package/custom_fields/lib/custom_fields/language/nl/custom_field_groups.rb +41 -0
- data/lib/zen/package/custom_fields/lib/custom_fields/language/nl/custom_field_types.rb +49 -0
- data/lib/zen/package/custom_fields/lib/custom_fields/language/nl/custom_fields.rb +61 -0
- data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field.rb +18 -23
- data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field_group.rb +20 -19
- data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field_method.rb +1 -3
- data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field_type.rb +19 -9
- data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field_value.rb +18 -15
- data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-groups/form.xhtml +18 -18
- data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-groups/index.xhtml +30 -24
- data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-types/form.xhtml +15 -10
- data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-types/index.xhtml +24 -19
- data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-fields/form.xhtml +18 -13
- data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-fields/index.xhtml +30 -20
- data/lib/zen/package/extensions/lib/extensions.rb +20 -0
- data/lib/zen/package/extensions/lib/extensions/controller/extensions.rb +41 -0
- data/lib/zen/package/extensions/lib/extensions/language/en/extensions.rb +23 -0
- data/lib/zen/package/extensions/lib/extensions/language/nl/extensions.rb +25 -0
- data/lib/zen/package/extensions/lib/extensions/view/admin/extensions/index.xhtml +86 -0
- data/lib/zen/package/menu.rb +109 -0
- data/lib/zen/package/menus/lib/menus.rb +25 -34
- data/lib/zen/package/menus/lib/menus/controller/menu_items.rb +143 -107
- data/lib/zen/package/menus/lib/menus/controller/menus.rb +166 -115
- data/lib/zen/package/menus/lib/menus/helper/menu.rb +2 -8
- data/lib/zen/package/menus/lib/menus/helper/menu_frontend.rb +114 -0
- data/lib/zen/package/menus/lib/menus/language/en/menu_items.rb +48 -0
- data/lib/zen/package/menus/lib/menus/language/en/menus.rb +48 -0
- data/lib/zen/package/menus/lib/menus/language/nl/menu_items.rb +48 -0
- data/lib/zen/package/menus/lib/menus/language/nl/menus.rb +50 -0
- data/lib/zen/package/menus/lib/menus/model/menu.rb +24 -17
- data/lib/zen/package/menus/lib/menus/model/menu_item.rb +37 -13
- data/lib/zen/package/menus/lib/menus/view/admin/menu-items/form.xhtml +32 -25
- data/lib/zen/package/menus/lib/menus/view/admin/menu-items/index.xhtml +23 -17
- data/lib/zen/package/menus/lib/menus/view/admin/menus/form.xhtml +31 -26
- data/lib/zen/package/menus/lib/menus/view/admin/menus/index.xhtml +20 -22
- data/lib/zen/package/sections/lib/sections.rb +25 -68
- data/lib/zen/package/sections/lib/sections/controller/section_entries.rb +178 -138
- data/lib/zen/package/sections/lib/sections/controller/sections.rb +173 -140
- data/lib/zen/package/sections/lib/sections/helper/section.rb +3 -6
- data/lib/zen/package/sections/lib/sections/helper/section_frontend.rb +146 -0
- data/lib/zen/package/sections/lib/sections/language/en/section_entries.rb +50 -0
- data/lib/zen/package/sections/lib/sections/language/en/sections.rb +55 -0
- data/lib/zen/package/sections/lib/sections/language/nl/section_entries.rb +50 -0
- data/lib/zen/package/sections/lib/sections/language/nl/sections.rb +55 -0
- data/lib/zen/package/sections/lib/sections/model/section.rb +36 -36
- data/lib/zen/package/sections/lib/sections/model/section_entry.rb +52 -59
- data/lib/zen/package/sections/lib/sections/model/section_entry_status.rb +2 -2
- data/lib/zen/package/sections/lib/sections/view/admin/form.xhtml +24 -21
- data/lib/zen/package/sections/lib/sections/view/admin/index.xhtml +24 -26
- data/lib/zen/package/sections/lib/sections/view/admin/section-entries/form.xhtml +33 -31
- data/lib/zen/package/sections/lib/sections/view/admin/section-entries/index.xhtml +24 -25
- data/lib/zen/package/sections/migrations/1308672298_use_id_for_default_section.rb +14 -10
- data/lib/zen/package/sections/migrations/1308813320_section_entry_statuses.rb +12 -6
- data/lib/zen/package/settings/lib/settings.rb +25 -120
- data/lib/zen/package/settings/lib/settings/blue_form_parameters.rb +157 -0
- data/lib/zen/package/settings/lib/settings/controller/settings.rb +94 -69
- data/lib/zen/package/settings/lib/settings/language/en/settings.rb +41 -0
- data/lib/zen/package/settings/lib/settings/language/nl/settings.rb +41 -0
- data/lib/zen/package/settings/lib/settings/model/setting.rb +0 -2
- data/lib/zen/package/settings/lib/settings/setting.rb +379 -0
- data/lib/zen/package/settings/lib/settings/setting_groups.rb +11 -0
- data/lib/zen/package/settings/lib/settings/settings.rb +83 -0
- data/lib/zen/package/settings/lib/settings/settings_group.rb +84 -0
- data/lib/zen/package/settings/lib/settings/singleton_methods.rb +35 -0
- data/lib/zen/package/settings/lib/settings/view/admin/settings/index.xhtml +15 -57
- data/lib/zen/package/settings/migrations/1321197919_remove_unused_columns.rb +17 -0
- data/lib/zen/package/users/lib/users.rb +51 -36
- data/lib/zen/package/users/lib/users/controller/user_groups.rb +133 -98
- data/lib/zen/package/users/lib/users/controller/users.rb +253 -136
- data/lib/zen/package/users/lib/users/helper/access.rb +102 -0
- data/lib/zen/package/users/lib/users/helper/acl.rb +113 -0
- data/lib/zen/package/users/lib/users/helper/users.rb +41 -24
- data/lib/zen/package/users/lib/users/language/en/permissions.rb +16 -0
- data/lib/zen/package/users/lib/users/language/en/user_groups.rb +39 -0
- data/lib/zen/package/users/lib/users/language/en/users.rb +73 -0
- data/lib/zen/package/users/lib/users/language/nl/permissions.rb +16 -0
- data/lib/zen/package/users/lib/users/language/nl/user_groups.rb +41 -0
- data/lib/zen/package/users/lib/users/language/nl/users.rb +74 -0
- data/lib/zen/package/users/lib/users/model/permission.rb +28 -0
- data/lib/zen/package/users/lib/users/model/user.rb +104 -65
- data/lib/zen/package/users/lib/users/model/user_group.rb +28 -24
- data/lib/zen/package/users/lib/users/model/user_status.rb +27 -0
- data/lib/zen/package/users/lib/users/public/admin/css/users/permissions.css +22 -0
- data/lib/zen/package/users/lib/users/public/admin/js/users/permissions.js +33 -0
- data/lib/zen/package/users/lib/users/settings.rb +19 -0
- data/lib/zen/package/users/lib/users/view/admin/user-groups/form.xhtml +58 -28
- data/lib/zen/package/users/lib/users/view/admin/user-groups/index.xhtml +19 -15
- data/lib/zen/package/users/lib/users/view/admin/users/form.xhtml +93 -62
- data/lib/zen/package/users/lib/users/view/admin/users/index.xhtml +23 -36
- data/lib/zen/package/users/lib/users/view/admin/users/login.xhtml +13 -6
- data/lib/zen/package/users/lib/users/view/admin/users/permissions.xhtml +33 -0
- data/lib/zen/package/users/lib/users/view/admin/users/register.xhtml +52 -0
- data/lib/zen/package/users/migrations/1313786058_update_default_date.rb +41 -0
- data/lib/zen/package/users/migrations/1316432327_permissions.rb +36 -0
- data/lib/zen/package/users/migrations/1320272365_status_ids.rb +67 -0
- data/lib/zen/public/admin/css/zen/buttons.css +3 -11
- data/lib/zen/public/admin/css/zen/datepicker.css +23 -13
- data/lib/zen/public/admin/css/zen/editor.css +6 -14
- data/lib/zen/public/admin/css/zen/forms.css +19 -12
- data/lib/zen/public/admin/css/zen/general.css +22 -18
- data/lib/zen/public/admin/css/zen/grid.css +1 -20
- data/lib/zen/public/admin/css/zen/layout.css +26 -11
- data/lib/zen/public/admin/css/zen/messages.css +3 -10
- data/lib/zen/public/admin/css/zen/reset.css +13 -15
- data/lib/zen/public/admin/css/zen/tables.css +8 -10
- data/lib/zen/public/admin/css/zen/tabs.css +2 -10
- data/lib/zen/public/admin/css/zen/window.css +2 -8
- data/lib/zen/public/admin/js/vendor/datepicker.js +540 -240
- data/lib/zen/public/admin/js/vendor/mootools/core.js +273 -283
- data/lib/zen/public/admin/js/vendor/mootools/more.js +131 -136
- data/lib/zen/public/admin/js/zen/index.js +8 -14
- data/lib/zen/public/admin/js/zen/lib/editor.js +36 -33
- data/lib/zen/public/admin/js/zen/lib/editor/markdown.js +0 -6
- data/lib/zen/public/admin/js/zen/lib/editor/textile.js +0 -6
- data/lib/zen/public/admin/js/zen/lib/html_table.js +0 -5
- data/lib/zen/public/admin/js/zen/lib/tabs.js +22 -79
- data/lib/zen/public/admin/js/zen/lib/window.js +12 -22
- data/lib/zen/spec/bacon/color_output.rb +1 -1
- data/lib/zen/spec/helper.rb +6 -11
- data/lib/zen/spec/simplecov.rb +3 -3
- data/lib/zen/task.rb +0 -1
- data/lib/zen/task/build.rake +46 -26
- data/lib/zen/task/clean.rake +14 -7
- data/lib/zen/task/db.rake +31 -29
- data/lib/zen/task/package.rake +19 -23
- data/lib/zen/task/proto.rake +3 -5
- data/lib/zen/task/setup.rake +4 -0
- data/lib/zen/task/test.rake +31 -6
- data/lib/zen/task/theme.rake +13 -19
- data/lib/zen/theme.rb +377 -52
- data/lib/zen/validation.rb +22 -30
- data/lib/zen/version.rb +1 -2
- data/lib/zen/view/bottom.xhtml +9 -1
- data/lib/zen/view/head.xhtml +1 -1
- data/lib/zen/view/main.xhtml +1 -1
- data/lib/zen/view/search.xhtml +9 -0
- data/proto/app/Rakefile +0 -1
- data/proto/app/app.rb +21 -16
- data/proto/app/config/config.rb.erb +41 -0
- data/proto/app/config/{database.rb → database.rb.erb} +17 -14
- data/proto/app/config/middlewares.rb +1 -1
- data/proto/app/theme/default/index.xhtml +25 -0
- data/proto/app/theme/theme.rb +19 -0
- data/proto/app/{log/database/dev → tmp}/.gitkeep +0 -0
- data/proto/migration.rb +3 -5
- data/proto/rack/thin.yml +41 -0
- data/proto/rack/unicorn.rb +38 -0
- data/spec/Rakefile +15 -11
- data/spec/fixtures/zen/helper/controller.rb +13 -0
- data/spec/fixtures/zen/helper/locale.rb +7 -0
- data/spec/fixtures/zen/helper/message.rb +0 -4
- data/spec/fixtures/zen/language.rb +31 -0
- data/spec/fixtures/zen/language/en/spec.rb +11 -0
- data/spec/fixtures/zen/language/nl/spec.rb +11 -0
- data/spec/fixtures/zen/package.rb +0 -10
- data/spec/fixtures/zen/package/categories/helper/category_frontend.rb +16 -0
- data/spec/fixtures/zen/package/comments/helper/comment_frontend.rb +16 -0
- data/spec/fixtures/zen/package/sections/helper/section_frontend.rb +16 -0
- data/spec/fixtures/zen/package/settings/controller/settings.rb +17 -0
- data/spec/fixtures/zen/package/users/helper/access.rb +18 -0
- data/spec/fixtures/zen/package/users/helper/acl.rb +23 -0
- data/spec/fixtures/zen/theme/{default-section → default}/index.xhtml +0 -0
- data/spec/helper.rb +12 -27
- data/{proto/app/log/database/live → spec/public}/.gitkeep +0 -0
- data/spec/zen/controller/admin_controller.rb +5 -6
- data/spec/zen/controller/main_controller.rb +29 -35
- data/spec/zen/controller/preview.rb +9 -10
- data/spec/zen/event.rb +44 -0
- data/spec/zen/helper/breadcrumb.rb +4 -5
- data/spec/zen/helper/controller.rb +21 -0
- data/spec/zen/helper/locale.rb +25 -0
- data/spec/zen/helper/message.rb +4 -11
- data/spec/zen/helper/theme.rb +11 -14
- data/spec/zen/language.rb +48 -22
- data/spec/zen/markup.rb +39 -0
- data/spec/zen/package.rb +48 -11
- data/spec/zen/package/categories/controller/categories.rb +99 -45
- data/spec/zen/package/categories/controller/category_groups.rb +109 -33
- data/spec/zen/package/categories/helper/category.rb +19 -32
- data/spec/zen/package/categories/helper/category_frontend.rb +61 -0
- data/spec/zen/package/comments/anti_spam.rb +50 -0
- data/spec/zen/package/comments/controller/comments.rb +121 -61
- data/spec/zen/package/comments/controller/comments_form.rb +120 -94
- data/spec/zen/package/comments/helper/comment.rb +13 -13
- data/spec/zen/package/comments/helper/comment_frontend.rb +92 -0
- data/spec/zen/package/custom_fields/blue_form_parameters.rb +50 -50
- data/spec/zen/package/custom_fields/controller/custom_field_groups.rb +135 -43
- data/spec/zen/package/custom_fields/controller/custom_field_types.rb +153 -48
- data/spec/zen/package/custom_fields/controller/custom_fields.rb +130 -51
- data/spec/zen/package/custom_fields/helper/custom_field.rb +8 -8
- data/spec/zen/package/extensions/controller/extensions.rb +38 -0
- data/spec/zen/package/menus/controller/menu_items.rb +121 -42
- data/spec/zen/package/menus/controller/menus.rb +125 -38
- data/spec/zen/package/menus/helper/menu.rb +26 -26
- data/spec/zen/package/menus/helper/menu_frontend.rb +104 -0
- data/spec/zen/package/sections/controller/section_entries.rb +145 -89
- data/spec/zen/package/sections/controller/sections.rb +130 -35
- data/spec/zen/package/sections/helper/section.rb +27 -38
- data/spec/zen/package/sections/helper/section_frontend.rb +160 -0
- data/spec/zen/package/settings/controller/settings.rb +73 -8
- data/spec/zen/package/settings/settings.rb +119 -0
- data/spec/zen/package/users/controller/user_groups.rb +134 -34
- data/spec/zen/package/users/controller/users.rb +189 -44
- data/spec/zen/package/users/helper/access.rb +29 -0
- data/spec/zen/package/users/helper/acl.rb +46 -0
- data/spec/zen/package/users/helper/users.rb +20 -64
- data/spec/zen/theme.rb +7 -9
- data/spec/zen/validation.rb +1 -2
- data/zen.gemspec +25 -22
- metadata +303 -222
- data/lib/zen/asset.rb +0 -292
- data/lib/zen/bin/runner.rb +0 -118
- data/lib/zen/error/language_error.rb +0 -10
- data/lib/zen/error/package_error.rb +0 -10
- data/lib/zen/error/plugin_error.rb +0 -10
- data/lib/zen/error/theme_error.rb +0 -10
- data/lib/zen/error/validation_error.rb +0 -10
- data/lib/zen/helper/acl.rb +0 -182
- data/lib/zen/helper/blue_form_vendor.rb +0 -689
- data/lib/zen/language/en/zen_general.yml +0 -25
- data/lib/zen/language/en/zen_models.yml +0 -13
- data/lib/zen/language/nl/zen_general.yml +0 -25
- data/lib/zen/language/nl/zen_models.yml +0 -13
- data/lib/zen/model/settings.rb +0 -78
- data/lib/zen/package/base.rb +0 -62
- data/lib/zen/package/categories/lib/categories/language/en/categories.yml +0 -36
- data/lib/zen/package/categories/lib/categories/language/en/category_groups.yml +0 -34
- data/lib/zen/package/categories/lib/categories/language/nl/categories.yml +0 -40
- data/lib/zen/package/categories/lib/categories/language/nl/category_groups.yml +0 -34
- data/lib/zen/package/categories/lib/categories/plugin/categories.rb +0 -141
- data/lib/zen/package/comments/lib/comments/language/en/comments.yml +0 -48
- data/lib/zen/package/comments/lib/comments/language/nl/comments.yml +0 -50
- data/lib/zen/package/comments/lib/comments/plugin/anti_spam.rb +0 -156
- data/lib/zen/package/comments/lib/comments/plugin/comments.rb +0 -115
- data/lib/zen/package/custom_fields/lib/custom_fields/language/en/custom_field_groups.yml +0 -33
- data/lib/zen/package/custom_fields/lib/custom_fields/language/en/custom_field_types.yml +0 -40
- data/lib/zen/package/custom_fields/lib/custom_fields/language/en/custom_fields.yml +0 -54
- data/lib/zen/package/custom_fields/lib/custom_fields/language/nl/custom_field_groups.yml +0 -33
- data/lib/zen/package/custom_fields/lib/custom_fields/language/nl/custom_field_types.yml +0 -40
- data/lib/zen/package/custom_fields/lib/custom_fields/language/nl/custom_fields.yml +0 -54
- data/lib/zen/package/menus/lib/menus/language/en/menu_items.yml +0 -41
- data/lib/zen/package/menus/lib/menus/language/en/menus.yml +0 -40
- data/lib/zen/package/menus/lib/menus/language/nl/menu_items.yml +0 -41
- data/lib/zen/package/menus/lib/menus/language/nl/menus.yml +0 -40
- data/lib/zen/package/menus/lib/menus/plugin/menus.rb +0 -152
- data/lib/zen/package/sections/lib/sections/language/en/section_entries.yml +0 -44
- data/lib/zen/package/sections/lib/sections/language/en/sections.yml +0 -48
- data/lib/zen/package/sections/lib/sections/language/nl/section_entries.yml +0 -44
- data/lib/zen/package/sections/lib/sections/language/nl/sections.yml +0 -48
- data/lib/zen/package/sections/lib/sections/plugin/section_entries.rb +0 -244
- data/lib/zen/package/sections/lib/sections/plugin/sections.rb +0 -87
- data/lib/zen/package/settings/lib/settings/language/en/settings.yml +0 -36
- data/lib/zen/package/settings/lib/settings/language/nl/settings.yml +0 -37
- data/lib/zen/package/settings/lib/settings/plugin/group_base.rb +0 -39
- data/lib/zen/package/settings/lib/settings/plugin/setting_base.rb +0 -133
- data/lib/zen/package/settings/lib/settings/plugin/settings.rb +0 -251
- data/lib/zen/package/users/lib/users/controller/access_rules.rb +0 -284
- data/lib/zen/package/users/lib/users/language/en/access_rules.yml +0 -38
- data/lib/zen/package/users/lib/users/language/en/user_groups.yml +0 -32
- data/lib/zen/package/users/lib/users/language/en/users.yml +0 -57
- data/lib/zen/package/users/lib/users/language/nl/access_rules.yml +0 -38
- data/lib/zen/package/users/lib/users/language/nl/user_groups.yml +0 -32
- data/lib/zen/package/users/lib/users/language/nl/users.yml +0 -57
- data/lib/zen/package/users/lib/users/model/access_rule.rb +0 -42
- data/lib/zen/package/users/lib/users/public/admin/js/users/access_rules.js +0 -65
- data/lib/zen/package/users/lib/users/public/admin/js/users/lib/access_rules.js +0 -49
- data/lib/zen/package/users/lib/users/view/admin/access-rules/form.xhtml +0 -120
- data/lib/zen/package/users/lib/users/view/admin/access-rules/index.xhtml +0 -102
- data/lib/zen/plugin.rb +0 -182
- data/lib/zen/plugin/base.rb +0 -46
- data/lib/zen/plugin/helper.rb +0 -47
- data/lib/zen/plugin/markup/lib/markup.rb +0 -14
- data/lib/zen/plugin/markup/lib/markup/language/en/markup.yml +0 -6
- data/lib/zen/plugin/markup/lib/markup/markup.rb +0 -165
- data/lib/zen/public/admin/js/zen/lib/asset.js +0 -111
- data/lib/zen/task/plugin.rake +0 -18
- data/lib/zen/theme/base.rb +0 -65
- data/proto/app/config/config.rb +0 -18
- data/spec/fixtures/zen/language/en/spec.yml +0 -10
- data/spec/fixtures/zen/language/nl/spec.yml +0 -7
- data/spec/fixtures/zen/package/settings/plugin/settings.rb +0 -20
- data/spec/zen/asset.rb +0 -97
- data/spec/zen/bin/create.rb +0 -89
- data/spec/zen/bin/runner.rb +0 -47
- data/spec/zen/helper/acl.rb +0 -149
- data/spec/zen/package/categories/plugin/categories.rb +0 -92
- data/spec/zen/package/comments/plugin/anti_spam.rb +0 -59
- data/spec/zen/package/comments/plugin/comments.rb +0 -107
- data/spec/zen/package/menus/plugin/menus.rb +0 -120
- data/spec/zen/package/sections/plugin/section_entries.rb +0 -161
- data/spec/zen/package/sections/plugin/sections.rb +0 -75
- data/spec/zen/package/settings/plugin/settings.rb +0 -33
- data/spec/zen/package/users/controller/access_rules.rb +0 -90
- data/spec/zen/plugin.rb +0 -64
- data/spec/zen/plugin/helper.rb +0 -11
- data/spec/zen/plugin/markup.rb +0 -44
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Settings group for various settings that don't belong in any other group.
|
|
2
|
+
Settings::SettingsGroup.add do |group|
|
|
3
|
+
group.title = 'settings.tabs.general'
|
|
4
|
+
group.name = :general
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
# Settings group for security related settings such as the Defensio API key.
|
|
8
|
+
Settings::SettingsGroup.add do |group|
|
|
9
|
+
group.title = 'settings.tabs.security'
|
|
10
|
+
group.name = :security
|
|
11
|
+
end
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
Settings::Setting.add do |setting|
|
|
2
|
+
setting.title = 'settings.labels.website_name'
|
|
3
|
+
setting.description = 'settings.descriptions.website_name'
|
|
4
|
+
setting.name = :website_name
|
|
5
|
+
setting.group = :general
|
|
6
|
+
setting.default = 'Zen'
|
|
7
|
+
setting.type = 'textbox'
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
Settings::Setting.add do |setting|
|
|
11
|
+
setting.title = 'settings.labels.website_description'
|
|
12
|
+
setting.description = 'settings.descriptions.website_description'
|
|
13
|
+
setting.name = :website_description
|
|
14
|
+
setting.group = :general
|
|
15
|
+
setting.type = 'textarea'
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
Settings::Setting.add do |setting|
|
|
19
|
+
setting.title = 'settings.labels.language'
|
|
20
|
+
setting.description = 'settings.descriptions.language'
|
|
21
|
+
setting.name = :language
|
|
22
|
+
setting.group = :general
|
|
23
|
+
setting.default = 'en'
|
|
24
|
+
setting.type = 'select'
|
|
25
|
+
setting.values = Zen::Language.to_hash
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
Settings::Setting.add do |setting|
|
|
29
|
+
setting.title = 'settings.labels.frontend_language'
|
|
30
|
+
setting.description = 'settings.descriptions.frontend_language'
|
|
31
|
+
setting.name = :frontend_language
|
|
32
|
+
setting.group = :general
|
|
33
|
+
setting.default = 'en'
|
|
34
|
+
setting.type = 'select'
|
|
35
|
+
setting.values = Zen::Language.to_hash
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
Settings::Setting.add do |setting|
|
|
39
|
+
setting.title = 'settings.labels.theme'
|
|
40
|
+
setting.description = 'settings.descriptions.theme'
|
|
41
|
+
setting.name = :theme
|
|
42
|
+
setting.group = :general
|
|
43
|
+
setting.type = 'select'
|
|
44
|
+
setting.default = 'default'
|
|
45
|
+
setting.values = lambda do
|
|
46
|
+
theme_hash = {}
|
|
47
|
+
|
|
48
|
+
Zen::Theme::REGISTERED.each do |name, theme|
|
|
49
|
+
name = name.to_s
|
|
50
|
+
theme_hash[name] = name
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
return theme_hash
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
Settings::Setting.add do |setting|
|
|
58
|
+
setting.title = 'settings.labels.date_format'
|
|
59
|
+
setting.description = 'settings.descriptions.date_format'
|
|
60
|
+
setting.name = :date_format
|
|
61
|
+
setting.group = :general
|
|
62
|
+
setting.type = 'select'
|
|
63
|
+
setting.default = '%Y-%m-%d %H:%M:%S'
|
|
64
|
+
setting.values = {
|
|
65
|
+
'%Y-%m-%d %H:%M:%S' => '2011-05-10 13:30:12',
|
|
66
|
+
'%d-%m-%Y %H:%M:%S' => '10-05-2011 13:30:12',
|
|
67
|
+
'%A, %B %d, %Y' => 'Tuesday, May 10, 2011'
|
|
68
|
+
}
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
Settings::Setting.add do |setting|
|
|
72
|
+
setting.title = 'settings.labels.enable_antispam'
|
|
73
|
+
setting.description = 'settings.descriptions.enable_antispam'
|
|
74
|
+
setting.name = :enable_antispam
|
|
75
|
+
setting.group = :security
|
|
76
|
+
setting.type = 'radio'
|
|
77
|
+
setting.values = lambda do
|
|
78
|
+
return {
|
|
79
|
+
lang('zen_general.special.boolean_hash.true') => '1',
|
|
80
|
+
lang('zen_general.special.boolean_hash.false') => '0'
|
|
81
|
+
}
|
|
82
|
+
end
|
|
83
|
+
end
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
module Settings
|
|
2
|
+
##
|
|
3
|
+
# Base class used for setting groups.
|
|
4
|
+
#
|
|
5
|
+
# @since 0.2.5
|
|
6
|
+
#
|
|
7
|
+
class SettingsGroup
|
|
8
|
+
include ::Zen::Validation
|
|
9
|
+
|
|
10
|
+
##
|
|
11
|
+
# Hash containing all registered setting groups.
|
|
12
|
+
#
|
|
13
|
+
# @since 0.3
|
|
14
|
+
#
|
|
15
|
+
REGISTERED = {}
|
|
16
|
+
|
|
17
|
+
# The name of the group
|
|
18
|
+
attr_reader :name
|
|
19
|
+
|
|
20
|
+
# The title of the group, displayed in the GUI
|
|
21
|
+
attr_writer :title
|
|
22
|
+
|
|
23
|
+
##
|
|
24
|
+
# Registers a new setting group using the specified block.
|
|
25
|
+
#
|
|
26
|
+
# @example
|
|
27
|
+
# Settings::SettingsGroup.add do |group|
|
|
28
|
+
# group.name = 'example'
|
|
29
|
+
# group.title = 'Example group'
|
|
30
|
+
# end
|
|
31
|
+
#
|
|
32
|
+
# @since 0.2.5
|
|
33
|
+
#
|
|
34
|
+
def self.add
|
|
35
|
+
group = self.new
|
|
36
|
+
|
|
37
|
+
yield group
|
|
38
|
+
|
|
39
|
+
group.validate
|
|
40
|
+
|
|
41
|
+
REGISTERED[group.name] = group
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
##
|
|
45
|
+
# Sets the name of the group and converts it to a symbol.
|
|
46
|
+
#
|
|
47
|
+
# @since 0.3
|
|
48
|
+
# @param [#to_sym] name The name of the settings group.
|
|
49
|
+
#
|
|
50
|
+
def name=(name)
|
|
51
|
+
@name = name.to_sym
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
##
|
|
55
|
+
# Returns the title of the setting and tries to translate it.
|
|
56
|
+
#
|
|
57
|
+
# @since 0.3
|
|
58
|
+
# @return [String]
|
|
59
|
+
#
|
|
60
|
+
def title
|
|
61
|
+
begin
|
|
62
|
+
return lang(@title)
|
|
63
|
+
rescue
|
|
64
|
+
return @title
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
##
|
|
69
|
+
# Validates all attributes of this class.
|
|
70
|
+
#
|
|
71
|
+
# @since 0.2.5
|
|
72
|
+
#
|
|
73
|
+
def validate
|
|
74
|
+
validates_presence([:name, :title])
|
|
75
|
+
|
|
76
|
+
if REGISTERED.key?(name)
|
|
77
|
+
raise(
|
|
78
|
+
::Zen::ValidationError,
|
|
79
|
+
"The setting group \"#{name}\" has already been registered."
|
|
80
|
+
)
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end # SettingsGroup
|
|
84
|
+
end # Settings
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
module Settings
|
|
2
|
+
##
|
|
3
|
+
# Module that's injected into the global namespace allowing developers to
|
|
4
|
+
# retrieve settings without having to use the full namespace of
|
|
5
|
+
# {Settings::Setting::REGISTERED}.
|
|
6
|
+
#
|
|
7
|
+
# @since 0.3
|
|
8
|
+
#
|
|
9
|
+
module SingletonMethods
|
|
10
|
+
##
|
|
11
|
+
# Retrieves the setting for the given name. This method returns an instance
|
|
12
|
+
# of {Settings::Setting}, this means that in order to retrieve the actual
|
|
13
|
+
# value you'll have to invoke ``#value()`` on the return value.
|
|
14
|
+
#
|
|
15
|
+
# @example
|
|
16
|
+
# get_setting(:website_name) # => #<Settings::Setting>
|
|
17
|
+
#
|
|
18
|
+
# @example Retrieving the value
|
|
19
|
+
# get_setting(:website_name) # => "Example"
|
|
20
|
+
#
|
|
21
|
+
# @since 0.3
|
|
22
|
+
# @param [#to_sym] name The name of the setting to retrieve.
|
|
23
|
+
# @return [Settings::Setting]
|
|
24
|
+
#
|
|
25
|
+
def get_setting(name)
|
|
26
|
+
name = name.to_sym
|
|
27
|
+
|
|
28
|
+
if !Settings::Setting::REGISTERED.key?(name)
|
|
29
|
+
raise(ArgumentError, "The setting \"#{name}\" doesn't exist.")
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
return Settings::Setting::REGISTERED[name]
|
|
33
|
+
end
|
|
34
|
+
end # SingletonMethods
|
|
35
|
+
end # Settings
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
<
|
|
1
|
+
<section>
|
|
2
2
|
<header>
|
|
3
3
|
<h1>#{get_breadcrumbs}</h1>
|
|
4
4
|
</header>
|
|
5
|
-
|
|
5
|
+
|
|
6
6
|
<div class="tabs">
|
|
7
7
|
<ul>
|
|
8
8
|
<?r @groups.each do |name, group| ?>
|
|
@@ -12,67 +12,25 @@
|
|
|
12
12
|
<?r end ?>
|
|
13
13
|
</ul>
|
|
14
14
|
</div>
|
|
15
|
-
|
|
16
|
-
#{
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
|
|
16
|
+
#{form_for(
|
|
17
|
+
@settings_ordered,
|
|
18
|
+
:method => :post,
|
|
19
|
+
:action => ::Settings::Controller::Settings.r(:save),
|
|
20
|
+
:id => :setting_form
|
|
21
|
+
) do |f|
|
|
19
22
|
f.input_hidden(:csrf_token, get_csrf_token)
|
|
20
23
|
|
|
21
24
|
@settings_ordered.each do |group, items|
|
|
22
25
|
f.g.div(:id => "group_#{group}") do
|
|
23
26
|
items.each do |s|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
case s.type
|
|
27
|
-
when 'textbox'
|
|
28
|
-
f.input_text(
|
|
29
|
-
s.title,
|
|
30
|
-
s.name,
|
|
31
|
-
:value => value
|
|
32
|
-
)
|
|
33
|
-
|
|
34
|
-
when 'textarea'
|
|
35
|
-
f.textarea(
|
|
36
|
-
s.title,
|
|
37
|
-
s.name,
|
|
38
|
-
:value => value,
|
|
39
|
-
:rows => 8
|
|
40
|
-
)
|
|
41
|
-
|
|
42
|
-
when 'radio'
|
|
43
|
-
f.input_radio(
|
|
44
|
-
s.title,
|
|
45
|
-
s.name,
|
|
46
|
-
value,
|
|
47
|
-
:values => s.values
|
|
48
|
-
)
|
|
49
|
-
|
|
50
|
-
when 'checkbox'
|
|
51
|
-
f.input_checkbox(
|
|
52
|
-
s.title,
|
|
53
|
-
s.name,
|
|
54
|
-
value,
|
|
55
|
-
:values => s.values
|
|
56
|
-
)
|
|
57
|
-
|
|
58
|
-
when 'select'
|
|
59
|
-
f.select(
|
|
60
|
-
s.title,
|
|
61
|
-
s.name,
|
|
62
|
-
:values => s.values,
|
|
63
|
-
:size => 1,
|
|
64
|
-
:selected => value
|
|
65
|
-
)
|
|
66
|
-
end
|
|
27
|
+
f.send(*get_setting(s.name).form_parameters)
|
|
67
28
|
end
|
|
68
29
|
end
|
|
69
30
|
end
|
|
70
|
-
|
|
71
|
-
f.g.div(:class => '
|
|
72
|
-
f.g.
|
|
73
|
-
f.g.input(:type => 'submit', :value => lang('settings.buttons.save'))
|
|
74
|
-
end
|
|
31
|
+
|
|
32
|
+
f.g.div(:class => 'button') do
|
|
33
|
+
f.g.input(:type => 'submit', :value => lang('settings.buttons.save'))
|
|
75
34
|
end
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
</article>
|
|
35
|
+
end}
|
|
36
|
+
</section>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
Sequel.migration do
|
|
2
|
+
up do
|
|
3
|
+
alter_table(:settings) do
|
|
4
|
+
drop_column(:group)
|
|
5
|
+
drop_column(:default)
|
|
6
|
+
drop_column(:type)
|
|
7
|
+
end
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
down do
|
|
11
|
+
alter_table(:settings) do
|
|
12
|
+
add_column(:group, String)
|
|
13
|
+
add_column(:default, String)
|
|
14
|
+
add_column(:type, String)
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -1,43 +1,58 @@
|
|
|
1
|
-
|
|
1
|
+
Zen::Package.add do |p|
|
|
2
|
+
p.name = :users
|
|
3
|
+
p.title = 'users.titles.index'
|
|
4
|
+
p.author = 'Yorick Peterse'
|
|
5
|
+
p.url = 'http://zen-cms.com/'
|
|
6
|
+
p.about = 'users.description'
|
|
7
|
+
p.root = __DIR__('users')
|
|
8
|
+
p.migrations = __DIR__('../migrations')
|
|
2
9
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
10
|
+
p.menu(
|
|
11
|
+
'users.titles.index',
|
|
12
|
+
'/admin/users',
|
|
13
|
+
:permission => :show_user
|
|
14
|
+
) do |sub|
|
|
15
|
+
sub.menu(
|
|
16
|
+
'user_groups.titles.index',
|
|
17
|
+
'/admin/user-groups',
|
|
18
|
+
:permission => :show_user_group
|
|
19
|
+
)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
p.permission :show_user_group , 'user_groups.permissions.show'
|
|
23
|
+
p.permission :edit_user_group , 'user_groups.permissions.edit'
|
|
24
|
+
p.permission :new_user_group , 'user_groups.permissions.new'
|
|
25
|
+
p.permission :delete_user_group, 'user_groups.permissions.delete'
|
|
26
|
+
|
|
27
|
+
p.permission :show_user , 'users.permissions.show'
|
|
28
|
+
p.permission :edit_user , 'users.permissions.edit'
|
|
29
|
+
p.permission :new_user , 'users.permissions.new'
|
|
30
|
+
p.permission :delete_user, 'users.permissions.delete'
|
|
31
|
+
|
|
32
|
+
p.permission :show_permission, 'permissions.permissions.show'
|
|
33
|
+
p.permission :edit_permission, 'permissions.permissions.edit'
|
|
34
|
+
end
|
|
9
35
|
|
|
10
|
-
Zen::Language.options.paths.push(__DIR__('users'))
|
|
11
36
|
Zen::Language.load('users')
|
|
12
37
|
Zen::Language.load('user_groups')
|
|
13
|
-
Zen::Language.load('
|
|
38
|
+
Zen::Language.load('permissions')
|
|
14
39
|
|
|
15
|
-
|
|
16
|
-
|
|
40
|
+
require __DIR__('users/settings')
|
|
41
|
+
require __DIR__('users/model/user')
|
|
42
|
+
require __DIR__('users/model/user_group')
|
|
43
|
+
require __DIR__('users/model/permission')
|
|
44
|
+
require __DIR__('users/model/user_status')
|
|
45
|
+
|
|
46
|
+
# The trait for the User helper has to be specified in the constructor as our
|
|
47
|
+
# user model is loaded after this class is loaded (but before it's
|
|
48
|
+
# initialized)
|
|
17
49
|
Zen::Controller::BaseController.trait(:user_model => Users::Model::User)
|
|
50
|
+
Zen::Controller::AdminController.helper(:acl, :access)
|
|
18
51
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
p.directory = __DIR__('users')
|
|
27
|
-
p.migration_dir = __DIR__('../migrations')
|
|
28
|
-
|
|
29
|
-
p.menu = [{
|
|
30
|
-
:title => lang('users.titles.index'),
|
|
31
|
-
:url => 'admin/users',
|
|
32
|
-
:children => [
|
|
33
|
-
{:title => lang('user_groups.titles.index') , :url => 'admin/user-groups'},
|
|
34
|
-
{:title => lang('access_rules.titles.index'), :url => 'admin/access-rules'}
|
|
35
|
-
]
|
|
36
|
-
}]
|
|
37
|
-
|
|
38
|
-
p.controllers = {
|
|
39
|
-
lang('users.titles.index') => Users::Controller::Users,
|
|
40
|
-
lang('user_groups.titles.index') => Users::Controller::UserGroups,
|
|
41
|
-
lang('access_rules.titles.index') => Users::Controller::AccessRules
|
|
42
|
-
}
|
|
43
|
-
end
|
|
52
|
+
# The settings controller is already loaded so that one has to be updated as
|
|
53
|
+
# well.
|
|
54
|
+
Ramaze::Helper::Access.add_block(Settings::Controller::Settings)
|
|
55
|
+
|
|
56
|
+
# Load the controllers after the helpers have been loaded.
|
|
57
|
+
require __DIR__('users/controller/users')
|
|
58
|
+
require __DIR__('users/controller/user_groups')
|
|
@@ -1,48 +1,78 @@
|
|
|
1
|
-
#:nodoc:
|
|
2
1
|
module Users
|
|
3
2
|
#:nodoc:
|
|
4
3
|
module Controller
|
|
5
4
|
##
|
|
6
|
-
#
|
|
7
|
-
# to
|
|
8
|
-
#
|
|
5
|
+
# User groups allow you to group types of users together and assign
|
|
6
|
+
# permissions to the entire group of users without having to modify each
|
|
7
|
+
# individual user.
|
|
8
|
+
#
|
|
9
|
+
# User groups can be managed by going to ``/admin/user-groups``. This page
|
|
10
|
+
# will show an overview of all existing groups or a message saying no groups
|
|
11
|
+
# have been added yet.
|
|
12
|
+
#
|
|
13
|
+
# 
|
|
14
|
+
#
|
|
15
|
+
# Editing a user group can be done by clicking on the name of the group,
|
|
16
|
+
# creating a new one can be done by clicking the button "New group". When
|
|
17
|
+
# creating or editing a group you'll be presented with the form shown in the
|
|
18
|
+
# images below.
|
|
19
|
+
#
|
|
20
|
+
# 
|
|
21
|
+
# 
|
|
22
|
+
#
|
|
23
|
+
# In this form you can fill in the following fields:
|
|
24
|
+
#
|
|
25
|
+
# * **Name** (required): the name of the user group.
|
|
26
|
+
# * **Slug**: a URL friendly version of the name. If no name is specified
|
|
27
|
+
# one will be generated automatically.
|
|
28
|
+
# * **Super group** (required): when set to "Yes" all users that are
|
|
29
|
+
# assigned to this group will have access to *everything* regardless of
|
|
30
|
+
# their individual settings.
|
|
31
|
+
# * **Description**: a description of the user group.
|
|
32
|
+
#
|
|
33
|
+
# Besides these fields you can also specify all the permissions o the user
|
|
34
|
+
# group similar to how they're managed for individual users. Note that user
|
|
35
|
+
# specific rules will only overwrite group based rules if a group blocks
|
|
36
|
+
# something while a user specific rules allows something. Simply said, rules
|
|
37
|
+
# are added to the list but aren't removed based on their source.
|
|
38
|
+
#
|
|
39
|
+
# ## Used Permissions
|
|
40
|
+
#
|
|
41
|
+
# This controller uses the following permissions:
|
|
42
|
+
#
|
|
43
|
+
# * show_user_group
|
|
44
|
+
# * edit_user_group
|
|
45
|
+
# * new_user_group
|
|
46
|
+
# * delete_user_group
|
|
47
|
+
#
|
|
48
|
+
# ## Events
|
|
49
|
+
#
|
|
50
|
+
# All events in this controller receive an instance of
|
|
51
|
+
# {Users::Model::UserGroup}. Just like other controllers the event
|
|
52
|
+
# ``after_delete_user_group`` will receive a user group that has already
|
|
53
|
+
# been destroyed using ``#destroy()``.
|
|
9
54
|
#
|
|
10
|
-
# @author Yorick Peterse
|
|
11
55
|
# @since 0.1
|
|
56
|
+
# @map /admin/user-groups
|
|
57
|
+
# @event before_new_user_group
|
|
58
|
+
# @event after_new_user_user
|
|
59
|
+
# @event before_edit_user_group
|
|
60
|
+
# @event after_edit_user_group
|
|
61
|
+
# @event before_delete_user_group
|
|
62
|
+
# @event after_delete_user_group
|
|
12
63
|
#
|
|
13
64
|
class UserGroups < Zen::Controller::AdminController
|
|
14
|
-
include ::Users::Model
|
|
15
|
-
|
|
16
65
|
helper :users
|
|
17
|
-
map
|
|
66
|
+
map '/admin/user-groups'
|
|
67
|
+
title 'user_groups.titles.%s'
|
|
18
68
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
respond(lang('zen_general.errors.csrf'), 403)
|
|
22
|
-
end
|
|
23
|
-
end
|
|
69
|
+
csrf_protection :save, :delete
|
|
70
|
+
load_asset_group :tabs
|
|
24
71
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
#
|
|
28
|
-
# This method loads the following language files:
|
|
29
|
-
#
|
|
30
|
-
# * user_groups
|
|
31
|
-
#
|
|
32
|
-
# @author Yorick Peterse
|
|
33
|
-
# @since 0.1
|
|
34
|
-
#
|
|
35
|
-
def initialize
|
|
36
|
-
super
|
|
37
|
-
|
|
38
|
-
Zen::Language.load('user_groups')
|
|
39
|
-
|
|
40
|
-
# Set the page title
|
|
41
|
-
if !action.method.nil?
|
|
42
|
-
method = action.method.to_sym
|
|
43
|
-
@page_title = lang("user_groups.titles.#{method}") rescue nil
|
|
44
|
-
end
|
|
72
|
+
serve :javascript, ['/admin/js/users/permissions'], :minify => false
|
|
73
|
+
serve :css, ['/admin/css/users/permissions.css'], :minify => false
|
|
45
74
|
|
|
75
|
+
before(:index, :edit, :new) do
|
|
46
76
|
@boolean_hash = {
|
|
47
77
|
true => lang('zen_general.special.boolean_hash.true'),
|
|
48
78
|
false => lang('zen_general.special.boolean_hash.false')
|
|
@@ -53,46 +83,39 @@ module Users
|
|
|
53
83
|
# Show an overview of all user groups and allow the current user
|
|
54
84
|
# to manage these groups
|
|
55
85
|
#
|
|
56
|
-
#
|
|
57
|
-
#
|
|
58
|
-
# * read
|
|
59
|
-
#
|
|
60
|
-
# @author Yorick Peterse
|
|
61
|
-
# @since 0.1
|
|
86
|
+
# @since 0.1
|
|
87
|
+
# @permission show_user_group
|
|
62
88
|
#
|
|
63
89
|
def index
|
|
64
|
-
|
|
90
|
+
authorize_user!(:show_user_group)
|
|
65
91
|
|
|
66
92
|
set_breadcrumbs(lang('user_groups.titles.index'))
|
|
67
93
|
|
|
68
|
-
@user_groups =
|
|
94
|
+
@user_groups = search do |query|
|
|
95
|
+
::Users::Model::UserGroup.search(query).order(:id.asc)
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
@user_groups ||= ::Users::Model::UserGroup.order(:id.asc)
|
|
99
|
+
@user_groups = paginate(@user_groups)
|
|
69
100
|
end
|
|
70
101
|
|
|
71
102
|
##
|
|
72
103
|
# Edit an existing user group.
|
|
73
104
|
#
|
|
74
|
-
#
|
|
75
|
-
#
|
|
76
|
-
#
|
|
77
|
-
# * update
|
|
78
|
-
#
|
|
79
|
-
# @author Yorick Peterse
|
|
80
|
-
# @param [Integer] id The ID of the user group to edit.
|
|
81
|
-
# @since 0.1
|
|
105
|
+
# @param [Fixnum] id The ID of the user group to edit.
|
|
106
|
+
# @since 0.1
|
|
107
|
+
# @permission edit_user_group
|
|
82
108
|
#
|
|
83
109
|
def edit(id)
|
|
84
|
-
|
|
110
|
+
authorize_user!(:edit_user_group)
|
|
85
111
|
|
|
86
112
|
set_breadcrumbs(
|
|
87
113
|
UserGroups.a(lang('user_groups.titles.index'), :index),
|
|
88
114
|
lang('user_groups.titles.edit')
|
|
89
115
|
)
|
|
90
116
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
else
|
|
94
|
-
@user_group = validate_user_group(id)
|
|
95
|
-
end
|
|
117
|
+
@user_group = flash[:form_data] || validate_user_group(id)
|
|
118
|
+
@permissions = @user_group.permissions.map { |p| p.permission.to_sym }
|
|
96
119
|
|
|
97
120
|
render_view(:form)
|
|
98
121
|
end
|
|
@@ -100,23 +123,18 @@ module Users
|
|
|
100
123
|
##
|
|
101
124
|
# Create a new user group.
|
|
102
125
|
#
|
|
103
|
-
#
|
|
104
|
-
#
|
|
105
|
-
# * read
|
|
106
|
-
# * create
|
|
107
|
-
#
|
|
108
|
-
# @author Yorick Peterse
|
|
109
|
-
# @since 0.1
|
|
126
|
+
# @since 0.1
|
|
127
|
+
# @permission new_user_group
|
|
110
128
|
#
|
|
111
129
|
def new
|
|
112
|
-
|
|
130
|
+
authorize_user!(:new_user_group)
|
|
113
131
|
|
|
114
132
|
set_breadcrumbs(
|
|
115
133
|
UserGroups.a(lang('user_groups.titles.index'), :index),
|
|
116
134
|
lang('user_groups.titles.new')
|
|
117
135
|
)
|
|
118
136
|
|
|
119
|
-
@user_group = UserGroup.new
|
|
137
|
+
@user_group = flash[:form_data] || ::Users::Model::UserGroup.new
|
|
120
138
|
|
|
121
139
|
render_view(:form)
|
|
122
140
|
end
|
|
@@ -125,42 +143,46 @@ module Users
|
|
|
125
143
|
# Saves or creates a new user group based on the POST data and a field
|
|
126
144
|
# named 'id'.
|
|
127
145
|
#
|
|
128
|
-
#
|
|
129
|
-
#
|
|
130
|
-
#
|
|
131
|
-
#
|
|
132
|
-
#
|
|
133
|
-
# @
|
|
134
|
-
# @
|
|
146
|
+
# @since 0.1
|
|
147
|
+
# @permission new_user_group (when creating a new group)
|
|
148
|
+
# @permission edit_user_group (when editing a group)
|
|
149
|
+
# @event before_new_user_group
|
|
150
|
+
# @event after_new_user_group
|
|
151
|
+
# @event before_edit_user_group
|
|
152
|
+
# @event after_edit_user_group
|
|
135
153
|
#
|
|
136
154
|
def save
|
|
137
155
|
post = request.subset(:id, :name, :slug, :description, :super_group)
|
|
138
156
|
|
|
139
157
|
if post['id'] and !post['id'].empty?
|
|
140
|
-
|
|
158
|
+
authorize_user!(:edit_user_group)
|
|
141
159
|
|
|
142
|
-
user_group
|
|
143
|
-
save_action
|
|
160
|
+
user_group = validate_user_group(post['id'])
|
|
161
|
+
save_action = :save
|
|
162
|
+
before_event = :before_edit_user_group
|
|
163
|
+
after_event = :after_edit_user_group
|
|
144
164
|
else
|
|
145
|
-
|
|
165
|
+
authorize_user!(:new_user_group)
|
|
146
166
|
|
|
147
|
-
user_group
|
|
148
|
-
save_action
|
|
149
|
-
|
|
150
|
-
|
|
167
|
+
user_group = ::Users::Model::UserGroup.new
|
|
168
|
+
save_action = :new
|
|
169
|
+
before_event = :before_new_user_group
|
|
170
|
+
after_event = :after_new_user_group
|
|
151
171
|
end
|
|
152
172
|
|
|
153
173
|
post.delete('id')
|
|
154
174
|
|
|
155
|
-
|
|
156
|
-
|
|
175
|
+
success = lang("user_groups.success.#{save_action}")
|
|
176
|
+
error = lang("user_groups.errors.#{save_action}")
|
|
157
177
|
|
|
158
178
|
begin
|
|
159
|
-
user_group.
|
|
160
|
-
|
|
179
|
+
post.each { |k, v| user_group.send("#{k}=", v) }
|
|
180
|
+
Zen::Event.call(before_event, user_group)
|
|
181
|
+
|
|
182
|
+
user_group.save
|
|
161
183
|
rescue => e
|
|
162
184
|
Ramaze::Log.error(e.inspect)
|
|
163
|
-
message(:error,
|
|
185
|
+
message(:error, error)
|
|
164
186
|
|
|
165
187
|
flash[:form_data] = user_group
|
|
166
188
|
flash[:form_errors] = user_group.errors
|
|
@@ -168,25 +190,31 @@ module Users
|
|
|
168
190
|
redirect_referrer
|
|
169
191
|
end
|
|
170
192
|
|
|
171
|
-
if
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
193
|
+
if user_authorized?(:edit_permission)
|
|
194
|
+
update_permissions(
|
|
195
|
+
:user_group_id,
|
|
196
|
+
user_group.id,
|
|
197
|
+
request.params['permissions'] || [],
|
|
198
|
+
user_group.permissions.map { |p| p.permission }
|
|
199
|
+
)
|
|
175
200
|
end
|
|
201
|
+
|
|
202
|
+
Zen::Event.call(after_event, user_group)
|
|
203
|
+
|
|
204
|
+
message(:success, success)
|
|
205
|
+
redirect(UserGroups.r(:edit, user_group.id))
|
|
176
206
|
end
|
|
177
207
|
|
|
178
208
|
##
|
|
179
|
-
#
|
|
209
|
+
# Deletes all specified user groups.
|
|
180
210
|
#
|
|
181
|
-
#
|
|
182
|
-
#
|
|
183
|
-
#
|
|
184
|
-
#
|
|
185
|
-
# @author Yorick Peterse
|
|
186
|
-
# @since 0.1
|
|
211
|
+
# @since 0.1
|
|
212
|
+
# @permission delete_user_group
|
|
213
|
+
# @event before_delete_user_group
|
|
214
|
+
# @event after_delete_user_group
|
|
187
215
|
#
|
|
188
216
|
def delete
|
|
189
|
-
|
|
217
|
+
authorize_user!(:delete_user_group)
|
|
190
218
|
|
|
191
219
|
if !request.params['user_group_ids'] \
|
|
192
220
|
or request.params['user_group_ids'].empty?
|
|
@@ -195,17 +223,24 @@ module Users
|
|
|
195
223
|
end
|
|
196
224
|
|
|
197
225
|
request.params['user_group_ids'].each do |id|
|
|
226
|
+
group = ::Users::Model::UserGroup[id]
|
|
227
|
+
|
|
228
|
+
next if group.nil?
|
|
229
|
+
Zen::Event.call(:before_delete_user_group, group)
|
|
230
|
+
|
|
198
231
|
begin
|
|
199
|
-
|
|
200
|
-
message(:success, lang('user_groups.success.delete'))
|
|
232
|
+
group.destroy
|
|
201
233
|
rescue => e
|
|
202
234
|
Ramaze::Log.error(e.inspect)
|
|
203
235
|
message(:error, lang('user_groups.errors.delete') % id)
|
|
204
236
|
|
|
205
237
|
redirect_referrer
|
|
206
238
|
end
|
|
239
|
+
|
|
240
|
+
Zen::Event.call(:after_delete_user_group, group)
|
|
207
241
|
end
|
|
208
242
|
|
|
243
|
+
message(:success, lang('user_groups.success.delete'))
|
|
209
244
|
redirect_referrer
|
|
210
245
|
end
|
|
211
246
|
end # UserGroups
|