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,41 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
Zen::Language::Translation.add do |trans|
|
|
4
|
+
trans.language = 'nl'
|
|
5
|
+
trans.name = 'user_groups'
|
|
6
|
+
|
|
7
|
+
trans.translate do |t|
|
|
8
|
+
t['titles.index'] = 'Gebruikers groepen'
|
|
9
|
+
t['titles.edit'] = 'Gebruikers groep aanpassen'
|
|
10
|
+
t['titles.new'] = 'Gebruikers groep aanmaken'
|
|
11
|
+
|
|
12
|
+
t['labels.id'] = '#'
|
|
13
|
+
t['labels.name'] = 'Naam'
|
|
14
|
+
t['labels.slug'] = 'Slug'
|
|
15
|
+
t['labels.description'] = 'Beschrijving'
|
|
16
|
+
t['labels.super_group'] = 'Beheerders groep'
|
|
17
|
+
|
|
18
|
+
t['messages.no_groups'] = 'Er zijn geen gebruikers groepen gevonden.'
|
|
19
|
+
|
|
20
|
+
t['success.new'] = 'De gebruikers groep is aangemaakt.'
|
|
21
|
+
t['success.save'] = 'De gebruikers groep is aangepast.'
|
|
22
|
+
t['success.delete'] = 'De geselecteerde groepen zijn verwijderd.'
|
|
23
|
+
|
|
24
|
+
t['errors.new'] = 'De gebruikers groep kon niet worden aangemaakt.'
|
|
25
|
+
t['errors.save'] = 'De gebruikers groep kon niet worden aangepast.'
|
|
26
|
+
t['errors.delete'] = 'De gebruikers groep met ID #%s kon niet ' \
|
|
27
|
+
'worden verwijderd.'
|
|
28
|
+
t['errors.no_delete'] = 'U moet ten minste 1 groep specificeren ' \
|
|
29
|
+
'om te verwijderen.'
|
|
30
|
+
t['errors.invalid_group'] = 'De opgegeven gebruikers groep is ongeldig.'
|
|
31
|
+
|
|
32
|
+
t['buttons.new'] = 'Groep toevoegen'
|
|
33
|
+
t['buttons.delete'] = 'Geselecteerde groepen verwijderen'
|
|
34
|
+
t['buttons.save'] = 'Groep opslaan'
|
|
35
|
+
|
|
36
|
+
t['permissions.show'] = 'Groep weergeven'
|
|
37
|
+
t['permissions.edit'] = 'Groep aanpassen'
|
|
38
|
+
t['permissions.new'] = 'Groep aanmaken'
|
|
39
|
+
t['permissions.delete'] = 'Groep verwijderen'
|
|
40
|
+
end
|
|
41
|
+
end
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
Zen::Language::Translation.add do |trans|
|
|
4
|
+
trans.language = 'nl'
|
|
5
|
+
trans.name = 'users'
|
|
6
|
+
|
|
7
|
+
trans.translate do |t|
|
|
8
|
+
t['titles.index'] = 'Gebruikers'
|
|
9
|
+
t['titles.edit'] = 'Gebruiker aanpassen'
|
|
10
|
+
t['titles.new'] = 'Gebruiker aanmaken'
|
|
11
|
+
t['titles.login'] = 'Inloggen'
|
|
12
|
+
t['titles.register'] = 'Registreren'
|
|
13
|
+
|
|
14
|
+
t['labels.id'] = '#'
|
|
15
|
+
t['labels.email'] = 'Email'
|
|
16
|
+
t['labels.name'] = 'Naam'
|
|
17
|
+
t['labels.website'] = 'Website'
|
|
18
|
+
t['labels.password'] = 'Wachtwoord'
|
|
19
|
+
t['labels.confirm_password'] = 'Bevestig wachtwoord'
|
|
20
|
+
t['labels.status'] = 'Status'
|
|
21
|
+
t['labels.created_at'] = 'Aanmaak datum'
|
|
22
|
+
t['labels.updated_at'] = 'Aanpas datum'
|
|
23
|
+
t['labels.last_login'] = 'Login datum'
|
|
24
|
+
t['labels.user_groups'] = 'Gebruikers groepen'
|
|
25
|
+
t['labels.language'] = 'Taal'
|
|
26
|
+
t['labels.frontend_language'] = 'Bezoekers taal'
|
|
27
|
+
t['labels.date_format'] = 'Datum formaat'
|
|
28
|
+
t['labels.allow_registration'] = 'Registratie toegestaan'
|
|
29
|
+
|
|
30
|
+
t['descriptions.date_format'] = 'Het formaat van de datums in het ' \
|
|
31
|
+
'admin gedeelte.'
|
|
32
|
+
t['descriptions.allow_registration'] = 'Sta niet geregistreerde gebruikers ' \
|
|
33
|
+
'toe om een account te registreren.'
|
|
34
|
+
|
|
35
|
+
t['special.status_hash.active'] = 'Actief'
|
|
36
|
+
t['special.status_hash.closed'] = 'Gesloten'
|
|
37
|
+
|
|
38
|
+
t['messages.no_users'] = 'Er zijn geen gebruikers gevonden.'
|
|
39
|
+
|
|
40
|
+
t['success.new'] = 'De gebruiker is aangemaakt.'
|
|
41
|
+
t['success.save'] = 'De gebruiker is aangepast.'
|
|
42
|
+
t['success.delete'] = 'Alle gespecificeerde gebruikers zijn verwijderd.'
|
|
43
|
+
t['success.login'] = 'U bent nu ingelogd.'
|
|
44
|
+
t['success.logout'] = 'U bent nu uitgelogd.'
|
|
45
|
+
t['success.success'] = 'De account is geregistreerd.'
|
|
46
|
+
|
|
47
|
+
t['errors.new'] = 'De gebruiker kon niet worden aangemaakt.'
|
|
48
|
+
t['errors.save'] = 'De gebruiker kon niet worden aangepast.'
|
|
49
|
+
t['errors.delete'] = 'De gebruiker met ID #%s kon niet worden verwijderd.'
|
|
50
|
+
t['errors.no_delete'] = 'U moet ten minste 1 gebruiker specificeren ' \
|
|
51
|
+
'om te verwijderen.'
|
|
52
|
+
t['errors.no_password_match'] = 'De opgegeven wachtwoorden komen niet overeen.'
|
|
53
|
+
t['errors.login'] = 'U kon niet worden ingelogd.'
|
|
54
|
+
t['errors.logout'] = 'U kon niet worden uitgelogd, misschien bent ' \
|
|
55
|
+
'u al uitgelogd.'
|
|
56
|
+
t['errors.invalid_user'] = 'De opgegeven gebruiker is ongeldig.'
|
|
57
|
+
t['errors.register'] = 'De account kon niet worden geregistreerd.'
|
|
58
|
+
|
|
59
|
+
t['buttons.login'] = 'Inloggen'
|
|
60
|
+
t['buttons.new'] = 'Gebruiker toevoegen'
|
|
61
|
+
t['buttons.save'] = 'Gebruiker opslaan'
|
|
62
|
+
t['buttons.delete'] = 'Geselecteerde gebruikers verwijderen'
|
|
63
|
+
t['buttons.register'] = 'Registreer'
|
|
64
|
+
|
|
65
|
+
t['description'] = 'Beheer gebruikers, gebruikers groepen en rechten.'
|
|
66
|
+
|
|
67
|
+
t['permissions.show'] = 'Rechten weergeven'
|
|
68
|
+
t['permissions.edit'] = 'Rechten aanpassen'
|
|
69
|
+
t['permissions.new'] = 'Rechten aanmaken'
|
|
70
|
+
t['permissions.delete'] = 'Rechten verwijderen'
|
|
71
|
+
|
|
72
|
+
t['tabs.settings'] = 'Gebruikers instellingen'
|
|
73
|
+
end
|
|
74
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
module Users
|
|
2
|
+
module Model
|
|
3
|
+
##
|
|
4
|
+
# Model for managing permissions.
|
|
5
|
+
#
|
|
6
|
+
# @since 0.3
|
|
7
|
+
#
|
|
8
|
+
class Permission < Sequel::Model
|
|
9
|
+
many_to_one :user , :class => 'Users::Model::User'
|
|
10
|
+
many_to_one :user_group, :class => 'Users::Model::UserGroup'
|
|
11
|
+
|
|
12
|
+
##
|
|
13
|
+
# Validates the model's attributes before saving it.
|
|
14
|
+
#
|
|
15
|
+
# @since 0.3
|
|
16
|
+
#
|
|
17
|
+
def validate
|
|
18
|
+
validates_presence(:permission)
|
|
19
|
+
|
|
20
|
+
if self.user_id.nil?
|
|
21
|
+
validates_presence(:user_group_id)
|
|
22
|
+
else
|
|
23
|
+
validates_presence(:user_id)
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end # Permission
|
|
27
|
+
end # Model
|
|
28
|
+
end # Users
|
|
@@ -1,75 +1,72 @@
|
|
|
1
|
-
#:nodoc:
|
|
2
1
|
module Users
|
|
3
2
|
#:nodoc:
|
|
4
3
|
module Model
|
|
5
4
|
##
|
|
6
|
-
# Model that represents
|
|
7
|
-
# can be used for both CRUD actions as well as authenticating a user.
|
|
8
|
-
# Passwords are encrypted using Bcrypt using the Ruby Bcrypt gem.
|
|
5
|
+
# Model that represents a single user.
|
|
9
6
|
#
|
|
10
|
-
# This model has the following relations:
|
|
11
|
-
#
|
|
12
|
-
# * user groups (many to many), eager loads all access rules
|
|
13
|
-
# * access rules (one to many)
|
|
14
|
-
#
|
|
15
|
-
# The following plugins are used by this model:
|
|
16
|
-
#
|
|
17
|
-
# * timestamps
|
|
18
|
-
#
|
|
19
|
-
# @author Yorick Peterse
|
|
20
7
|
# @since 0.1
|
|
21
8
|
#
|
|
22
9
|
class User < Sequel::Model
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
10
|
+
# Regex to do some basic Email validation. Emails such as foo@bar,
|
|
11
|
+
# foo@bar.com and foo@bar.a.b are all valid but foo bar@bar.com isn't.
|
|
12
|
+
EMAIL_REGEX = '^[^@]\S+@\S+(\.[a-z]+)*[^.]$'
|
|
13
|
+
|
|
14
|
+
include Zen::Model::Helper
|
|
15
|
+
|
|
16
|
+
many_to_many :user_groups, :class => 'Users::Model::UserGroup',
|
|
17
|
+
:eager => [:permissions]
|
|
18
|
+
|
|
19
|
+
many_to_one :user_status, :class => 'Users::Model::UserStatus'
|
|
20
|
+
one_to_many :permissions, :class => 'Users::Model::Permission'
|
|
26
21
|
|
|
27
22
|
plugin :timestamps, :create => :created_at, :update => :updated_at
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
:user_groups,
|
|
31
|
-
:class => "Users::Model::UserGroup",
|
|
32
|
-
:eager => [:access_rules]
|
|
33
|
-
)
|
|
34
|
-
|
|
35
|
-
one_to_many(:access_rules, :class => "Users::Model::AccessRule")
|
|
36
|
-
|
|
23
|
+
plugin :association_dependencies, :permissions => :delete
|
|
24
|
+
|
|
37
25
|
##
|
|
38
|
-
#
|
|
39
|
-
# If the user credentials were incorrect false will be returned,
|
|
40
|
-
# true otherwise.
|
|
26
|
+
# Searches for a set of users that match the given query.
|
|
41
27
|
#
|
|
42
|
-
#
|
|
43
|
-
#
|
|
28
|
+
# @since 16-10-2011
|
|
29
|
+
# @param [String] query The search query.
|
|
30
|
+
# @return [Mixed]
|
|
31
|
+
#
|
|
32
|
+
def self.search(query)
|
|
33
|
+
return filter(
|
|
34
|
+
search_column(:name, query) | search_column(:email, query)
|
|
35
|
+
)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
##
|
|
39
|
+
# Try to authenticate the user based on the specified credentials..
|
|
44
40
|
#
|
|
45
|
-
# @author Yorick Peterse
|
|
46
41
|
# @since 0.1
|
|
47
42
|
# @param [Hash] creds The specified credentials
|
|
48
|
-
# @return [
|
|
43
|
+
# @return [Users::Model::User|FalseClass]
|
|
49
44
|
#
|
|
50
45
|
def self.authenticate(creds)
|
|
51
46
|
email = creds['email']
|
|
52
47
|
password = creds['password']
|
|
53
48
|
|
|
54
|
-
|
|
49
|
+
if email.nil? or password.nil?
|
|
50
|
+
return false
|
|
51
|
+
end
|
|
55
52
|
|
|
56
53
|
user = self[:email => email]
|
|
57
54
|
|
|
58
|
-
if !user.nil? and user.password == password
|
|
55
|
+
if !user.nil? and user.password == password \
|
|
56
|
+
and user.user_status.allow_login == true
|
|
59
57
|
# Overwrite all the global settings with the user specific ones
|
|
60
58
|
[:language, :frontend_language, :date_format].each do |setting|
|
|
61
|
-
value =
|
|
59
|
+
value = get_setting(setting).value
|
|
62
60
|
|
|
63
61
|
if user.respond_to?(setting)
|
|
64
62
|
got = user.send(setting)
|
|
65
|
-
|
|
63
|
+
|
|
66
64
|
if got.nil? or got.empty?
|
|
67
65
|
user.send("#{setting}=", value)
|
|
68
66
|
end
|
|
69
67
|
end
|
|
70
68
|
end
|
|
71
69
|
|
|
72
|
-
action.node.session[:user] = user
|
|
73
70
|
return user
|
|
74
71
|
else
|
|
75
72
|
return false
|
|
@@ -77,48 +74,90 @@ module Users
|
|
|
77
74
|
end
|
|
78
75
|
|
|
79
76
|
##
|
|
80
|
-
# Generates a new hash
|
|
81
|
-
#
|
|
82
|
-
# process slower but also more secure.
|
|
77
|
+
# Generates a new BCrypt hash and saves it in the model. The hash is
|
|
78
|
+
# *only* generated when the password isn't nil or empty.
|
|
83
79
|
#
|
|
84
|
-
# @author Yorick Peterse
|
|
85
80
|
# @since 0.1
|
|
86
|
-
# @param [String]
|
|
87
|
-
# @return [Void]
|
|
81
|
+
# @param [String] password The raw password
|
|
88
82
|
#
|
|
89
|
-
def password=
|
|
90
|
-
|
|
91
|
-
|
|
83
|
+
def password=(password)
|
|
84
|
+
return if password.nil? or password.empty?
|
|
85
|
+
|
|
86
|
+
password = BCrypt::Password.create(password, :cost => 10)
|
|
87
|
+
|
|
88
|
+
super(password)
|
|
92
89
|
end
|
|
93
|
-
|
|
90
|
+
|
|
94
91
|
##
|
|
95
|
-
# Returns the current password
|
|
92
|
+
# Returns the current password.
|
|
96
93
|
#
|
|
97
|
-
# @author Yorick Peterse
|
|
98
94
|
# @since 0.1
|
|
99
|
-
# @return [
|
|
95
|
+
# @return [BCrypt::Password|NilClass]
|
|
100
96
|
#
|
|
101
97
|
def password
|
|
102
|
-
|
|
98
|
+
val = super
|
|
99
|
+
|
|
100
|
+
return BCrypt::Password.new(val) unless val.nil?
|
|
103
101
|
end
|
|
104
|
-
|
|
102
|
+
|
|
103
|
+
##
|
|
104
|
+
# Hook run before creating or updating an object.
|
|
105
|
+
#
|
|
106
|
+
# @since 0.3
|
|
107
|
+
#
|
|
108
|
+
def before_save
|
|
109
|
+
if self.user_status_id.nil?
|
|
110
|
+
self.user_status_id = Users::Model::UserStatus[:name => 'closed'].id
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
super
|
|
114
|
+
end
|
|
115
|
+
|
|
105
116
|
##
|
|
106
117
|
# Specifies all validation rules
|
|
107
118
|
#
|
|
108
|
-
# @author Yorick Peterse
|
|
109
119
|
# @since 0.1
|
|
110
|
-
# @todo Email validation using regular expressions is bad, a DNS call
|
|
111
|
-
# would be much better.
|
|
112
120
|
#
|
|
113
121
|
def validate
|
|
114
|
-
validates_presence
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
122
|
+
validates_presence([:email, :name])
|
|
123
|
+
validates_unique(:email)
|
|
124
|
+
validates_format(Regexp.new(EMAIL_REGEX), :email)
|
|
125
|
+
validates_presence(:password) if new?
|
|
126
|
+
validates_max_length(255, [:email, :name, :website])
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
##
|
|
130
|
+
# Gets the name of the user's status and returns it in the current
|
|
131
|
+
# language.
|
|
132
|
+
#
|
|
133
|
+
# @since 03-11-2011
|
|
134
|
+
# @return [String]
|
|
135
|
+
#
|
|
136
|
+
def user_status_name
|
|
137
|
+
return lang("users.special.status_hash.#{user_status.name}")
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
##
|
|
141
|
+
# Activates the user.
|
|
142
|
+
#
|
|
143
|
+
# @since 03-11-2011
|
|
144
|
+
#
|
|
145
|
+
def activate!
|
|
146
|
+
update(
|
|
147
|
+
:user_status_id => Users::Model::UserStatus[:name => 'active'].id
|
|
148
|
+
)
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
##
|
|
152
|
+
# Closes the user account.
|
|
153
|
+
#
|
|
154
|
+
# @since 03-11-2011
|
|
155
|
+
#
|
|
156
|
+
def close!
|
|
157
|
+
update(
|
|
158
|
+
:user_status_id => Users::Model::UserStatus[:name => 'closed'].id
|
|
120
159
|
)
|
|
121
160
|
end
|
|
122
|
-
end
|
|
123
|
-
end
|
|
124
|
-
end
|
|
161
|
+
end # User
|
|
162
|
+
end # Model
|
|
163
|
+
end # Users
|
|
@@ -1,41 +1,45 @@
|
|
|
1
|
-
#:nodoc:
|
|
2
1
|
module Users
|
|
3
2
|
#:nodoc:
|
|
4
3
|
module Model
|
|
5
4
|
##
|
|
6
|
-
# Model that represents a single user group.
|
|
7
|
-
# relations:
|
|
5
|
+
# Model that represents a single user group.
|
|
8
6
|
#
|
|
9
|
-
# * users (many to many)
|
|
10
|
-
# * access rules (one to many)
|
|
11
|
-
#
|
|
12
|
-
# This model uses the following plugins:
|
|
13
|
-
#
|
|
14
|
-
# * sluggable
|
|
15
|
-
#
|
|
16
|
-
# @author Yorick Peterse
|
|
17
7
|
# @since 0.1
|
|
18
8
|
#
|
|
19
9
|
class UserGroup < Sequel::Model
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
10
|
+
include Zen::Model::Helper
|
|
11
|
+
|
|
12
|
+
many_to_many :users , :class => 'Users::Model::User'
|
|
13
|
+
one_to_many :permissions, :class => 'Users::Model::Permission'
|
|
14
|
+
|
|
15
|
+
plugin :sluggable, :source => :name, :freeze => false
|
|
16
|
+
plugin :association_dependencies, :permissions => :delete,
|
|
17
|
+
:users => :nullify
|
|
18
|
+
|
|
19
|
+
##
|
|
20
|
+
# Searches for a set of users that match the given query.
|
|
21
|
+
#
|
|
22
|
+
# @since 16-10-2011
|
|
23
|
+
# @param [String] query The search query.
|
|
24
|
+
# @return [Mixed]
|
|
25
|
+
#
|
|
26
|
+
def self.search(query)
|
|
27
|
+
return filter(search_column(:name, query))
|
|
28
|
+
end
|
|
29
|
+
|
|
25
30
|
##
|
|
26
31
|
# Validation rules for each user group used when
|
|
27
32
|
# creating or updating a group.
|
|
28
33
|
#
|
|
29
|
-
# @author Yorick Peterse
|
|
30
34
|
# @since 0.1
|
|
31
35
|
#
|
|
32
36
|
def validate
|
|
33
|
-
validates_presence
|
|
34
|
-
|
|
35
|
-
validates_unique
|
|
37
|
+
validates_presence([:name, :super_group])
|
|
38
|
+
validates_max_length(255, :name)
|
|
39
|
+
validates_unique(:slug)
|
|
36
40
|
|
|
37
|
-
validates_type
|
|
41
|
+
validates_type(TrueClass, :super_group)
|
|
38
42
|
end
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
end
|
|
43
|
+
end # UserGroup
|
|
44
|
+
end # Model
|
|
45
|
+
end # Users
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
module Users
|
|
2
|
+
module Model
|
|
3
|
+
##
|
|
4
|
+
# Model used for user statuses such as "Open" and "Unconfirmed".
|
|
5
|
+
#
|
|
6
|
+
# @since 03-11-2011
|
|
7
|
+
#
|
|
8
|
+
class UserStatus < Sequel::Model
|
|
9
|
+
##
|
|
10
|
+
# Returns a hash where the keys are the IDs of the various statuses and
|
|
11
|
+
# the values the translations.
|
|
12
|
+
#
|
|
13
|
+
# @since 03-11-2011
|
|
14
|
+
# @return [Hash]
|
|
15
|
+
#
|
|
16
|
+
def self.dropdown
|
|
17
|
+
hash = {}
|
|
18
|
+
|
|
19
|
+
select(:id, :name).each do |row|
|
|
20
|
+
hash[row.id] = lang("users.special.status_hash.#{row.name}")
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
return hash
|
|
24
|
+
end
|
|
25
|
+
end # UserStatus
|
|
26
|
+
end # Model
|
|
27
|
+
end # Users
|