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
|
@@ -1,113 +1,168 @@
|
|
|
1
|
-
|
|
1
|
+
##
|
|
2
|
+
# Package for managing users, user groups and the permissions of users and user
|
|
3
|
+
# groups.
|
|
4
|
+
#
|
|
5
|
+
# ## Controllers
|
|
6
|
+
#
|
|
7
|
+
# * {Users::Controller::Users}
|
|
8
|
+
# * {Users::Controller::UserGroups}
|
|
9
|
+
#
|
|
10
|
+
# ## Helpers
|
|
11
|
+
#
|
|
12
|
+
# * {Ramaze::Helper::Users}
|
|
13
|
+
# * {Ramaze::Helper::ACL}
|
|
14
|
+
#
|
|
15
|
+
# ## Models
|
|
16
|
+
#
|
|
17
|
+
# * {Users::Model::User}
|
|
18
|
+
# * {Users::Model::UserGroup}
|
|
19
|
+
# * {Users::Model::Permission}
|
|
20
|
+
#
|
|
2
21
|
module Users
|
|
3
22
|
#:nodoc:
|
|
4
23
|
module Controller
|
|
5
24
|
##
|
|
6
|
-
#
|
|
7
|
-
#
|
|
8
|
-
#
|
|
9
|
-
#
|
|
10
|
-
#
|
|
11
|
-
#
|
|
25
|
+
# Zen makes it easy for users to manage their own account as well as other
|
|
26
|
+
# users depending on their permissions. In Zen there's no special type of
|
|
27
|
+
# user such as an administrator or a contributor, instead users have access
|
|
28
|
+
# to various parts of your websites based on their permissions and the
|
|
29
|
+
# groups they have been assigned to (see {Users::Controller::UserGroups
|
|
30
|
+
# Managing User Groups} for more information).
|
|
31
|
+
#
|
|
32
|
+
# Users can be managed in the admin interface by going to ``/admin/users``.
|
|
33
|
+
# Just like other parts of the application you may not be able to manage
|
|
34
|
+
# users (or only partially) depending on your permissions.
|
|
35
|
+
#
|
|
36
|
+
# When navigating to the user overview (assuming you have the correct
|
|
37
|
+
# permissions) you should see a page that looks like the one shown in the
|
|
38
|
+
# image below.
|
|
39
|
+
#
|
|
40
|
+
# 
|
|
41
|
+
#
|
|
42
|
+
# This overview allows you to edit users (by clicking on their Email
|
|
43
|
+
# addresses), create new ones or delete existing users. When editing or
|
|
44
|
+
# creating a user you'll be presented a form as shown in the images below.
|
|
45
|
+
#
|
|
46
|
+
# 
|
|
47
|
+
# 
|
|
48
|
+
#
|
|
49
|
+
# In this form the following fields can be filled:
|
|
50
|
+
#
|
|
51
|
+
# * **Name** (required): the full name of the user.
|
|
52
|
+
# * **Email** (required): the Email address of the user, used for logging
|
|
53
|
+
# in.
|
|
54
|
+
# * **Website**: the website of the user (if he/she has any).
|
|
55
|
+
# * **Password** (required for new users): the raw password the user will
|
|
56
|
+
# use in order to log in.
|
|
57
|
+
# * **Confirm password** (required for new users): an extra field to confirm
|
|
58
|
+
# that the specified password is the right one. This field should match
|
|
59
|
+
# the password specified in the "Password" field.
|
|
60
|
+
# * **Status**: field that indicates if a user is active or not. If the
|
|
61
|
+
# status is set to "Closed" the user will not be able to log in.
|
|
62
|
+
# * **User Groups**: all the user groups the user belongs to.
|
|
63
|
+
# * **Language**: the language to use for the admin interface.
|
|
64
|
+
# * **Frontend language**: the language to use for the frontend of the
|
|
65
|
+
# application.
|
|
66
|
+
# * **Date format**: the date format to use in the admin interface.
|
|
67
|
+
#
|
|
68
|
+
# Besides these fields there's also the tab "Permissions". This tab contains
|
|
69
|
+
# a collection of all installed packages and their permissions. This makes
|
|
70
|
+
# it possible to fine tune the access of a certain user.
|
|
71
|
+
#
|
|
72
|
+
# ## Used Permissions
|
|
73
|
+
#
|
|
74
|
+
# This controller uses the following permissions:
|
|
75
|
+
#
|
|
76
|
+
# * show_user
|
|
77
|
+
# * new_user
|
|
78
|
+
# * edit_user
|
|
79
|
+
# * delete_user
|
|
80
|
+
#
|
|
81
|
+
# ## Events
|
|
82
|
+
#
|
|
83
|
+
# Events in this controller receive an instance of {Users::Model::User}, the
|
|
84
|
+
# ``after_delete_user`` event receives an instance that has already been
|
|
85
|
+
# destroyed. Keep in mind that changing the Email address or password of a
|
|
86
|
+
# user will cause their session to no longer be valid, requiring them to log
|
|
87
|
+
# in again.
|
|
88
|
+
#
|
|
89
|
+
# @example Sending an Email for a new user
|
|
90
|
+
# Zen::Event.listen(:after_new_user) do |user|
|
|
91
|
+
# Mail.deliver do
|
|
92
|
+
# from 'user@domain.tld'
|
|
93
|
+
# to user.email
|
|
94
|
+
# subject 'Your new account'
|
|
95
|
+
# body "Dear #{user.name}, your account has been created."
|
|
96
|
+
# end
|
|
97
|
+
# end
|
|
12
98
|
#
|
|
13
|
-
# @author Yorick Peterse
|
|
14
99
|
# @since 0.1
|
|
100
|
+
# @map /admin/users
|
|
101
|
+
# @event before_new_user
|
|
102
|
+
# @event after_new_user
|
|
103
|
+
# @event before_edit_user
|
|
104
|
+
# @event after_edit_user
|
|
105
|
+
# @event before_delete_user
|
|
106
|
+
# @event after_delete_user
|
|
107
|
+
# @event user_login
|
|
108
|
+
# @event before_register_user
|
|
109
|
+
# @event after_register_user
|
|
15
110
|
#
|
|
16
111
|
class Users < Zen::Controller::AdminController
|
|
17
|
-
|
|
112
|
+
helper :users, :layout
|
|
113
|
+
map '/admin/users'
|
|
114
|
+
title 'users.titles.%s'
|
|
115
|
+
allow [:login, :logout, :register]
|
|
18
116
|
|
|
19
|
-
|
|
20
|
-
map '/admin/users'
|
|
117
|
+
csrf_protection :save, :delete
|
|
21
118
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
respond(lang('zen_general.errors.csrf'), 403)
|
|
25
|
-
end
|
|
26
|
-
end
|
|
119
|
+
serve :javascript, ['/admin/js/users/permissions'], :minify => false
|
|
120
|
+
serve :css, ['/admin/css/users/permissions'], :minify => false
|
|
27
121
|
|
|
28
|
-
|
|
29
|
-
# that one will use a trimmed down version of the admin layout.
|
|
30
|
-
layout do |path, format|
|
|
31
|
-
if path == 'login'
|
|
32
|
-
:login
|
|
33
|
-
else
|
|
34
|
-
:admin
|
|
35
|
-
end
|
|
36
|
-
end
|
|
122
|
+
load_asset_group :tabs
|
|
37
123
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
#
|
|
41
|
-
# This method loads the following language files:
|
|
42
|
-
#
|
|
43
|
-
# * users
|
|
44
|
-
#
|
|
45
|
-
# @author Yorick Peterse
|
|
46
|
-
# @since 0.1
|
|
47
|
-
#
|
|
48
|
-
def initialize
|
|
49
|
-
super
|
|
50
|
-
|
|
51
|
-
Zen::Language.load('users')
|
|
52
|
-
|
|
53
|
-
# Set the page title
|
|
54
|
-
if !action.method.nil?
|
|
55
|
-
method = action.method.to_sym
|
|
56
|
-
@page_title = lang("users.titles.#{method}") rescue nil
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
@status_hash = {
|
|
60
|
-
'open' => lang('users.special.status_hash.open'),
|
|
61
|
-
'closed' => lang('users.special.status_hash.closed')
|
|
62
|
-
}
|
|
63
|
-
end
|
|
124
|
+
set_layout :admin => [:index, :edit, :new],
|
|
125
|
+
:login => [:login, :register]
|
|
64
126
|
|
|
65
127
|
##
|
|
66
128
|
# Show an overview of all users and allow the current user
|
|
67
129
|
# to manage these users.
|
|
68
130
|
#
|
|
69
|
-
#
|
|
70
|
-
#
|
|
71
|
-
# * read
|
|
72
|
-
#
|
|
73
|
-
# @author Yorick Peterse
|
|
74
|
-
# @since 0.1
|
|
131
|
+
# @since 0.1
|
|
132
|
+
# @permission show_user
|
|
75
133
|
#
|
|
76
134
|
def index
|
|
77
|
-
|
|
135
|
+
authorize_user!(:show_user)
|
|
78
136
|
|
|
79
137
|
set_breadcrumbs(lang('users.titles.index'))
|
|
80
138
|
|
|
81
|
-
@users =
|
|
139
|
+
@users = search do |query|
|
|
140
|
+
::Users::Model::User.search(query).order(:id.asc)
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
@users ||= ::Users::Model::User.order(:id.asc)
|
|
144
|
+
@users = @users.eager(:user_status)
|
|
145
|
+
@users = paginate(@users)
|
|
82
146
|
end
|
|
83
147
|
|
|
84
148
|
##
|
|
85
149
|
# Edit an existing user based on the ID.
|
|
86
150
|
#
|
|
87
|
-
#
|
|
88
|
-
#
|
|
89
|
-
#
|
|
90
|
-
# * update
|
|
91
|
-
#
|
|
92
|
-
# @author Yorick Peterse
|
|
93
|
-
# @param [Integer] id The ID of the user to edit.
|
|
94
|
-
# @since 0.1
|
|
151
|
+
# @param [Fixnum] id The ID of the user to edit.
|
|
152
|
+
# @since 0.1
|
|
153
|
+
# @permission edit_user
|
|
95
154
|
#
|
|
96
155
|
def edit(id)
|
|
97
|
-
|
|
156
|
+
authorize_user!(:edit_user)
|
|
98
157
|
|
|
99
158
|
set_breadcrumbs(
|
|
100
159
|
Users.a(lang('users.titles.index'), :index),
|
|
101
160
|
lang('users.titles.edit')
|
|
102
161
|
)
|
|
103
162
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
@user = validate_user(id)
|
|
108
|
-
end
|
|
109
|
-
|
|
110
|
-
@user_group_pks = UserGroup.pk_hash(:name)
|
|
163
|
+
@user = flash[:form_data] || validate_user(id)
|
|
164
|
+
@user_group_pks = ::Users::Model::UserGroup.pk_hash(:name).invert
|
|
165
|
+
@permissions = @user.permissions.map { |p| p.permission.to_sym }
|
|
111
166
|
|
|
112
167
|
render_view(:form)
|
|
113
168
|
end
|
|
@@ -115,24 +170,19 @@ module Users
|
|
|
115
170
|
##
|
|
116
171
|
# Create a new user.
|
|
117
172
|
#
|
|
118
|
-
#
|
|
119
|
-
#
|
|
120
|
-
# * read
|
|
121
|
-
# * create
|
|
122
|
-
#
|
|
123
|
-
# @author Yorick Peterse
|
|
124
|
-
# @since 0.1
|
|
173
|
+
# @since 0.1
|
|
174
|
+
# @permission new_user
|
|
125
175
|
#
|
|
126
176
|
def new
|
|
127
|
-
|
|
177
|
+
authorize_user!(:new_user)
|
|
128
178
|
|
|
129
179
|
set_breadcrumbs(
|
|
130
180
|
Users.a(lang('users.titles.index'), :index),
|
|
131
181
|
lang('users.titles.new')
|
|
132
182
|
)
|
|
133
183
|
|
|
134
|
-
@user = User.new
|
|
135
|
-
@user_group_pks = UserGroup.pk_hash(:name)
|
|
184
|
+
@user = flash[:form_data] || ::Users::Model::User.new
|
|
185
|
+
@user_group_pks = ::Users::Model::UserGroup.pk_hash(:name).invert
|
|
136
186
|
|
|
137
187
|
render_view(:form)
|
|
138
188
|
end
|
|
@@ -140,29 +190,29 @@ module Users
|
|
|
140
190
|
##
|
|
141
191
|
# Show a form that allows a user to log in.
|
|
142
192
|
#
|
|
143
|
-
# @author Yorick Peterse
|
|
144
193
|
# @since 0.1
|
|
194
|
+
# @event user_login
|
|
145
195
|
#
|
|
146
196
|
def login
|
|
147
197
|
if request.post?
|
|
148
198
|
# Let's see if we can authenticate
|
|
149
199
|
if user_login(request.subset(:email, :password))
|
|
150
|
-
|
|
151
|
-
User[:email => request.params['email']] \
|
|
152
|
-
.update(:last_login => Time.new)
|
|
200
|
+
user.update(:last_login => Time.new)
|
|
153
201
|
|
|
202
|
+
Zen::Event.call(:user_login, user)
|
|
154
203
|
message(:success, lang('users.success.login'))
|
|
155
204
|
redirect(::Sections::Controller::Sections.r(:index))
|
|
156
205
|
else
|
|
157
206
|
message(:error, lang('users.errors.login'))
|
|
158
207
|
end
|
|
208
|
+
|
|
209
|
+
redirect(r(:login))
|
|
159
210
|
end
|
|
160
211
|
end
|
|
161
212
|
|
|
162
213
|
##
|
|
163
214
|
# Logout and destroy the user's session.
|
|
164
215
|
#
|
|
165
|
-
# @author Yorick Peterse
|
|
166
216
|
# @since 0.1
|
|
167
217
|
#
|
|
168
218
|
def logout
|
|
@@ -170,19 +220,72 @@ module Users
|
|
|
170
220
|
session.clear
|
|
171
221
|
|
|
172
222
|
message(:success, lang('users.success.logout'))
|
|
173
|
-
redirect(
|
|
223
|
+
redirect(r(:login))
|
|
174
224
|
end
|
|
175
225
|
|
|
176
226
|
##
|
|
177
|
-
#
|
|
227
|
+
# Allows non registered users to create an account as long as the setting
|
|
228
|
+
# "allow_registration" allows this. In case of errors this method will
|
|
229
|
+
# redirect to itself, this works around those rather annoying "Do you want
|
|
230
|
+
# to resubmit this form?" messages most browsers give you.
|
|
178
231
|
#
|
|
179
|
-
#
|
|
232
|
+
# The events ``before_register_user`` and ``after_register_user`` will
|
|
233
|
+
# receive an instance of {Users::Model::User} as well as the raw password
|
|
234
|
+
# specified by the user.
|
|
180
235
|
#
|
|
181
|
-
#
|
|
182
|
-
#
|
|
236
|
+
# @since 0.3
|
|
237
|
+
# @event before_register_user
|
|
238
|
+
# @event after_register_user
|
|
183
239
|
#
|
|
184
|
-
|
|
185
|
-
|
|
240
|
+
def register
|
|
241
|
+
redirect(::Sections::Controller::Sections.r(:index)) if logged_in?
|
|
242
|
+
redirect(r(:login)) unless get_setting(:allow_registration).true?
|
|
243
|
+
|
|
244
|
+
if request.post?
|
|
245
|
+
post = request.subset(:name, :email, :password)
|
|
246
|
+
user = Model::User.new(post)
|
|
247
|
+
|
|
248
|
+
# Check if the passwords match.
|
|
249
|
+
if post['password'] != request.params['confirm_password']
|
|
250
|
+
flash[:form_data] = user
|
|
251
|
+
|
|
252
|
+
message(:error, lang('users.errors.no_password_match'))
|
|
253
|
+
redirect(r(:register))
|
|
254
|
+
end
|
|
255
|
+
|
|
256
|
+
Zen::Event.call(:before_register_user, user, post['password'])
|
|
257
|
+
|
|
258
|
+
begin
|
|
259
|
+
user.save
|
|
260
|
+
rescue => e
|
|
261
|
+
Ramaze::Log.error(e.inspect)
|
|
262
|
+
message(:error, lang('users.errors.register'))
|
|
263
|
+
|
|
264
|
+
flash[:form_errors] = user.errors
|
|
265
|
+
flash[:form_data] = user
|
|
266
|
+
|
|
267
|
+
redirect(r(:register))
|
|
268
|
+
end
|
|
269
|
+
|
|
270
|
+
Zen::Event.call(:after_register_user, user, post['password'])
|
|
271
|
+
message(:success, lang('users.success.register'))
|
|
272
|
+
|
|
273
|
+
redirect(r(:login))
|
|
274
|
+
end
|
|
275
|
+
|
|
276
|
+
@user = flash[:form_data] || Model::User.new
|
|
277
|
+
end
|
|
278
|
+
|
|
279
|
+
##
|
|
280
|
+
# Saves or creates a new user based on the POST data.
|
|
281
|
+
#
|
|
282
|
+
# @since 0.1
|
|
283
|
+
# @permission new_user (when creating a new user)
|
|
284
|
+
# @permission edit_user (when editing a user)
|
|
285
|
+
# @event before_new_user
|
|
286
|
+
# @event after_new_user
|
|
287
|
+
# @event before_edit_user
|
|
288
|
+
# @event after_edit_user
|
|
186
289
|
#
|
|
187
290
|
def save
|
|
188
291
|
post = request.subset(
|
|
@@ -190,9 +293,9 @@ module Users
|
|
|
190
293
|
:email,
|
|
191
294
|
:name,
|
|
192
295
|
:website,
|
|
193
|
-
:
|
|
296
|
+
:password,
|
|
194
297
|
:confirm_password,
|
|
195
|
-
:
|
|
298
|
+
:user_status_id,
|
|
196
299
|
:language,
|
|
197
300
|
:frontend_language,
|
|
198
301
|
:date_format,
|
|
@@ -200,43 +303,42 @@ module Users
|
|
|
200
303
|
)
|
|
201
304
|
|
|
202
305
|
if post['id'] and !post['id'].empty?
|
|
203
|
-
|
|
306
|
+
authorize_user!(:edit_user)
|
|
204
307
|
|
|
205
|
-
user
|
|
206
|
-
save_action
|
|
308
|
+
user = validate_user(post['id'])
|
|
309
|
+
save_action = :save
|
|
310
|
+
before_event = :before_edit_user
|
|
311
|
+
after_event = :after_edit_user
|
|
207
312
|
else
|
|
208
|
-
|
|
313
|
+
authorize_user!(:new_user)
|
|
209
314
|
|
|
210
|
-
user
|
|
211
|
-
save_action
|
|
315
|
+
user = ::Users::Model::User.new
|
|
316
|
+
save_action = :new
|
|
317
|
+
before_event = :before_new_user
|
|
318
|
+
after_event = :after_new_user
|
|
212
319
|
end
|
|
213
320
|
|
|
214
|
-
if
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
redirect_referrer
|
|
218
|
-
else
|
|
219
|
-
post['password'] = post['new_password']
|
|
220
|
-
|
|
221
|
-
post.delete('new_password')
|
|
222
|
-
post.delete('confirm_password')
|
|
223
|
-
end
|
|
321
|
+
if post['password'] != post['confirm_password']
|
|
322
|
+
message(:error, lang('users.errors.no_password_match'))
|
|
323
|
+
redirect_referrer
|
|
224
324
|
end
|
|
225
325
|
|
|
326
|
+
post.delete('confirm_password')
|
|
226
327
|
post.delete('id')
|
|
227
328
|
|
|
228
329
|
post['user_group_pks'] ||= []
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
flash_success = lang("users.success.#{save_action}")
|
|
232
|
-
flash_error = lang("users.errors.#{save_action}")
|
|
330
|
+
success = lang("users.success.#{save_action}")
|
|
331
|
+
error = lang("users.errors.#{save_action}")
|
|
233
332
|
|
|
234
333
|
begin
|
|
235
|
-
user.
|
|
236
|
-
|
|
334
|
+
post.each { |k, v| user.send("#{k}=", v) }
|
|
335
|
+
Zen::Event.call(before_event, user)
|
|
336
|
+
|
|
337
|
+
user.save
|
|
338
|
+
user.user_group_pks = post['user_group_pks'] if save_action == :new
|
|
237
339
|
rescue => e
|
|
238
340
|
Ramaze::Log.error(e.inspect)
|
|
239
|
-
message(:error,
|
|
341
|
+
message(:error, error)
|
|
240
342
|
|
|
241
343
|
flash[:form_data] = user
|
|
242
344
|
flash[:form_errors] = user.errors
|
|
@@ -244,25 +346,32 @@ module Users
|
|
|
244
346
|
redirect_referrer
|
|
245
347
|
end
|
|
246
348
|
|
|
247
|
-
if user.
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
349
|
+
# Add or update the permissions if the user is allowed to do so.
|
|
350
|
+
if user_authorized?(:edit_permission)
|
|
351
|
+
update_permissions(
|
|
352
|
+
:user_id,
|
|
353
|
+
user.id,
|
|
354
|
+
request.params['permissions'] || [],
|
|
355
|
+
user.permissions.map { |p| p.permission }
|
|
356
|
+
)
|
|
251
357
|
end
|
|
358
|
+
|
|
359
|
+
Zen::Event.call(after_event, user)
|
|
360
|
+
|
|
361
|
+
message(:success, success)
|
|
362
|
+
redirect(Users.r(:edit, user.id))
|
|
252
363
|
end
|
|
253
364
|
|
|
254
365
|
##
|
|
255
366
|
# Delete all specified users.
|
|
256
367
|
#
|
|
257
|
-
#
|
|
258
|
-
#
|
|
259
|
-
#
|
|
260
|
-
#
|
|
261
|
-
# @author Yorick Peterse
|
|
262
|
-
# @since 0.1
|
|
368
|
+
# @since 0.1
|
|
369
|
+
# @permission delete_user
|
|
370
|
+
# @event before_delete_user
|
|
371
|
+
# @event after_delete_user
|
|
263
372
|
#
|
|
264
373
|
def delete
|
|
265
|
-
|
|
374
|
+
authorize_user!(:delete_user)
|
|
266
375
|
|
|
267
376
|
if !request.params['user_ids'] or request.params['user_ids'].empty?
|
|
268
377
|
message(:error, lang('users.errors.no_delete'))
|
|
@@ -270,17 +379,25 @@ module Users
|
|
|
270
379
|
end
|
|
271
380
|
|
|
272
381
|
request.params['user_ids'].each do |id|
|
|
382
|
+
user = ::Users::Model::User[id]
|
|
383
|
+
|
|
384
|
+
next if user.nil?
|
|
385
|
+
Zen::Event.call(:before_delete_user, user)
|
|
386
|
+
|
|
273
387
|
begin
|
|
274
|
-
|
|
275
|
-
|
|
388
|
+
user.user_group_pks = []
|
|
389
|
+
user.destroy
|
|
276
390
|
rescue => e
|
|
277
391
|
Ramaze::Log.error(e.inspect)
|
|
278
|
-
message(:error,lang('users.errors.delete') % id)
|
|
392
|
+
message(:error, lang('users.errors.delete') % id)
|
|
279
393
|
|
|
280
394
|
redirect_referrer
|
|
281
395
|
end
|
|
396
|
+
|
|
397
|
+
Zen::Event.call(:after_delete_user, user)
|
|
282
398
|
end
|
|
283
399
|
|
|
400
|
+
message(:success, lang('users.success.delete'))
|
|
284
401
|
redirect_referrer
|
|
285
402
|
end
|
|
286
403
|
end # Users
|