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
data/lib/zen/theme.rb
CHANGED
|
@@ -1,87 +1,303 @@
|
|
|
1
|
-
require __DIR__('error/theme_error')
|
|
2
|
-
require __DIR__('theme/base')
|
|
3
1
|
require 'pathname'
|
|
4
2
|
|
|
5
|
-
#:nodoc:
|
|
6
3
|
module Zen
|
|
7
4
|
##
|
|
8
|
-
#
|
|
9
|
-
#
|
|
10
|
-
#
|
|
11
|
-
#
|
|
12
|
-
#
|
|
13
|
-
#
|
|
14
|
-
#
|
|
15
|
-
#
|
|
16
|
-
#
|
|
17
|
-
#
|
|
18
|
-
#
|
|
19
|
-
# *
|
|
20
|
-
#
|
|
21
|
-
#
|
|
22
|
-
#
|
|
23
|
-
#
|
|
24
|
-
#
|
|
25
|
-
#
|
|
26
|
-
#
|
|
27
|
-
#
|
|
28
|
-
#
|
|
29
|
-
#
|
|
30
|
-
#
|
|
5
|
+
# Zen allows you to create templates and package them as themes using the
|
|
6
|
+
# tools you already know such as Ruby, HTML and CSS. Once a theme has been
|
|
7
|
+
# created it can be distributed using Rubygems or by using an alternative
|
|
8
|
+
# method.
|
|
9
|
+
#
|
|
10
|
+
# Themes consist out of two elements: template groups and templates. Template
|
|
11
|
+
# groups are nothing more than directories of templates. Templates are files
|
|
12
|
+
# that can contain HTML and Ruby code required for the presentation layer of
|
|
13
|
+
# your application. These templates use Etanni, an engine that ships with
|
|
14
|
+
# Ramaze. Etanni is quite simple to use and only uses the following two tags:
|
|
15
|
+
#
|
|
16
|
+
# * ``<?r ?>``: used for code statements (if, while, etc).
|
|
17
|
+
# * ``#{}``: used for outputting the value of a variable, statement, method,
|
|
18
|
+
# and so on.
|
|
19
|
+
#
|
|
20
|
+
# A simple example of how to use these tags is the following:
|
|
21
|
+
#
|
|
22
|
+
# <?r if @username.nil? ?>
|
|
23
|
+
# <p>Hello #{@username}!</p>
|
|
24
|
+
# <?r else ?>
|
|
25
|
+
# <p>Hello unknown user!</p>
|
|
26
|
+
# <?r end ?>
|
|
27
|
+
#
|
|
28
|
+
# ## Theme Structure
|
|
29
|
+
#
|
|
30
|
+
# A typical theme has a structure similar to the one used for organizing
|
|
31
|
+
# Rubygems. This structure makes it easy to install themes via Rubygems and
|
|
32
|
+
# load them just like any other gem by using ``require()``. An example of this
|
|
33
|
+
# is the following:
|
|
34
|
+
#
|
|
35
|
+
# lib/
|
|
36
|
+
# |__ test.rb
|
|
37
|
+
# |__ test/
|
|
38
|
+
# |__ public/
|
|
39
|
+
# |__ templates/
|
|
40
|
+
# |__ partials/
|
|
41
|
+
# |__ pages/
|
|
42
|
+
# |__ foobar/
|
|
43
|
+
#
|
|
44
|
+
# Lets assume the theme is called "test" and is available on Rubygems (under
|
|
45
|
+
# the same name). In that case you can install it as following:
|
|
46
|
+
#
|
|
47
|
+
# $ gem install test
|
|
48
|
+
#
|
|
49
|
+
# Once installed all you have to do is put the following line in your app.rb
|
|
50
|
+
# file before calling ``Zen.start``:
|
|
51
|
+
#
|
|
52
|
+
# require 'test'
|
|
53
|
+
#
|
|
54
|
+
# Once loaded you can go to the admin panel and set it as the active theme.
|
|
55
|
+
#
|
|
56
|
+
# While the Rubygems structure is great if you want to share a theme there are
|
|
57
|
+
# a lot of cases where you don't want to do this. For example, if you're
|
|
58
|
+
# creating a custom theme for a client you may not want to share it with
|
|
59
|
+
# others. In that case the structure used by Rubygems is a bit complicated,
|
|
60
|
+
# especially if there's only one theme for the website. A much more simplistic
|
|
61
|
+
# way of organizing a theme would be to create a ``theme/`` directory in your
|
|
62
|
+
# application root and put your theme in there. In this case you'd end up with
|
|
63
|
+
# a file structure that looks like the following:
|
|
64
|
+
#
|
|
65
|
+
# ROOT/
|
|
66
|
+
# |__ public/
|
|
67
|
+
# |
|
|
68
|
+
# |__ theme/
|
|
69
|
+
# |__ partials/
|
|
70
|
+
# |__ pages/
|
|
71
|
+
# |__ foobar/
|
|
72
|
+
# |__ partials/
|
|
73
|
+
# |__ test.rb
|
|
74
|
+
#
|
|
75
|
+
# Because the theme is located in the application root, which isn't added to
|
|
76
|
+
# the load path, you'll have to load it in a slightly different way. Instead
|
|
77
|
+
# of ``require 'test'`` you'd have to put the following code in your app.rb
|
|
78
|
+
# file:
|
|
79
|
+
#
|
|
80
|
+
# require File.expand_path('../theme/test', __FILE__) # All Rubies
|
|
81
|
+
# require_relative('theme/test') # Ruby >= 1.9
|
|
82
|
+
#
|
|
83
|
+
# Do keep in mind that putting a theme directly in the ``theme/`` directory
|
|
84
|
+
# is only recommended if your application only has a single custom theme
|
|
85
|
+
# available. If there are multiple ones you should change it to the following
|
|
86
|
+
# instead:
|
|
87
|
+
#
|
|
88
|
+
# ROOT/
|
|
89
|
+
# |__ public/
|
|
90
|
+
# |
|
|
91
|
+
# |__ theme/
|
|
92
|
+
# |__ test/
|
|
93
|
+
# |__ partials/
|
|
94
|
+
# |__ pages/
|
|
95
|
+
# |__ foobar/
|
|
96
|
+
# |__ partials/
|
|
97
|
+
# |__ test.rb
|
|
98
|
+
#
|
|
99
|
+
# <div class="note deprecated">
|
|
100
|
+
# <p>
|
|
101
|
+
# <strong>Warning</strong>: Most likely your template will use files
|
|
102
|
+
# such as CSS and Javascript files. It's important to store these
|
|
103
|
+
# under their own namespace similar to assets used in the backend to
|
|
104
|
+
# prevent any collisions.
|
|
105
|
+
# </p>
|
|
106
|
+
# </div>
|
|
107
|
+
#
|
|
108
|
+
# ## Registering Themes
|
|
109
|
+
#
|
|
110
|
+
# In order to tell Zen about your themes, their templates, root directories
|
|
111
|
+
# and so on they have to be registered. Registering a theme is done using
|
|
112
|
+
# ``Zen::Theme.add``:
|
|
113
|
+
#
|
|
114
|
+
# Zen::Theme.add do |t|
|
|
115
|
+
#
|
|
116
|
+
# end
|
|
117
|
+
#
|
|
118
|
+
# This code should not go in files such as app.rb or configuration files,
|
|
119
|
+
# instead it should go in a theme specific file. It is recommended to give
|
|
120
|
+
# this file the same name as your theme as it makes it possible to load the
|
|
121
|
+
# theme using Rubygems. For example, if the theme is called "test" then the
|
|
122
|
+
# file would be called "test.rb".
|
|
123
|
+
#
|
|
124
|
+
# When registering a theme you can set the following setters:
|
|
125
|
+
#
|
|
126
|
+
# * name (required): the name of the theme (should be a symbol)
|
|
127
|
+
# * author (required): the name of the person who developed the theme.
|
|
128
|
+
# * about (required): a short description of the theme.
|
|
129
|
+
# * templates (required): a path to the directory containing the templates for
|
|
130
|
+
# all sections.
|
|
131
|
+
# * partials: a path to the directory containing all the partials that should
|
|
132
|
+
# be rendered when calling ``partial()``.
|
|
133
|
+
# * public: a path to an extra public directory to use, useful when you're
|
|
134
|
+
# distributing your theme using Rubygems and want to ship it with a few CSS
|
|
135
|
+
# files.
|
|
136
|
+
# * migrations: path to a directory containing all Sequel migrations for the
|
|
137
|
+
# theme. While not always needed this can be useful to automatically insert
|
|
138
|
+
# data into the database.
|
|
139
|
+
# * default_template_group: the name of the default template group to use in
|
|
140
|
+
# case no custom one has been specified in the URI.
|
|
141
|
+
#
|
|
142
|
+
# An example call to ``Zen::Theme.add`` using these options:
|
|
31
143
|
#
|
|
32
144
|
# Zen::Theme.add do |theme|
|
|
33
|
-
# theme.
|
|
34
|
-
# theme.
|
|
145
|
+
# theme.name = :test
|
|
146
|
+
# theme.author = 'Yorick Peterse'
|
|
147
|
+
# theme.about = 'An example template'
|
|
148
|
+
# theme.templates = __DIR__('path/to/application/theme')
|
|
35
149
|
# end
|
|
36
150
|
#
|
|
37
|
-
#
|
|
151
|
+
# ## URL Mapping
|
|
152
|
+
#
|
|
153
|
+
# Template groups and templates are directly mapped to URIs. The first segment
|
|
154
|
+
# is the template group to use, the second the template name and all following
|
|
155
|
+
# parameters are ignored (but still available in your templates). This means
|
|
156
|
+
# that if a user requests the URI ``/pages/entry/10`` this will map to the
|
|
157
|
+
# template group "pages" and the template "entry.xhtml". If a specified
|
|
158
|
+
# template group/template doesn't exist Zen will render a special template
|
|
159
|
+
# called "404.xhtml" (this template should be located in the same directory as
|
|
160
|
+
# your template groups).
|
|
161
|
+
#
|
|
162
|
+
# If only a template group is specified Zen will render the template
|
|
163
|
+
# "index.xhtml", therefor you should make sure this template always exists.
|
|
164
|
+
#
|
|
165
|
+
# Some examples:
|
|
166
|
+
#
|
|
167
|
+
# GET /pages/entry/hello-world => /pages/entry.xhtml
|
|
168
|
+
# GET /pages/foobar => /404.xhtml (if "foobar" doesn't exist)
|
|
169
|
+
# GET /pages => /pages/index.xhtml
|
|
170
|
+
#
|
|
171
|
+
# Templates have access to the special instance variable ``@request_uri``.
|
|
172
|
+
# This variable is an array that contains the template group, the template and
|
|
173
|
+
# all additional parameters. In the case of the examples above you'd end up
|
|
174
|
+
# with the following values for this array:
|
|
175
|
+
#
|
|
176
|
+
# GET /pages/entry/hello-world => ['pages', 'entry', 'hello-world']
|
|
177
|
+
# GET /pages/foobar => ['pages', 'foobar']
|
|
178
|
+
# GET /pages => ['pages', 'index']
|
|
179
|
+
#
|
|
180
|
+
# ## Retrieving Data
|
|
181
|
+
#
|
|
182
|
+
# Zen comes with a bunch of helpers that can be used to make it easy to
|
|
183
|
+
# retrieve data such as section entries and comments. On top of that you can
|
|
184
|
+
# also directly use all the classes provided by Zen since you're free to use
|
|
185
|
+
# any Ruby in your templates. For example, say you want to retrieve a list
|
|
186
|
+
# of entries in our ``index.xhtml`` template you could do something like the
|
|
187
|
+
# following:
|
|
188
|
+
#
|
|
189
|
+
# <?r entries = get_entries('blog', :limit => 50) ?>
|
|
190
|
+
#
|
|
191
|
+
# <?r entries.each do |entry| ?>
|
|
192
|
+
# <article>
|
|
193
|
+
# <header>
|
|
194
|
+
# <h1>#{entry.title}</h1>
|
|
195
|
+
# </header>
|
|
196
|
+
#
|
|
197
|
+
# #{entry.fields[:body]}
|
|
198
|
+
# </article>
|
|
199
|
+
# <?r end ?>
|
|
200
|
+
#
|
|
201
|
+
# <div class="note deprecated">
|
|
202
|
+
# <p>
|
|
203
|
+
# <strong>Warning</strong>: Don't run custom SQL queries inside your
|
|
204
|
+
# templates, create a helper, regular class or module if you want to
|
|
205
|
+
# retrieve custom data.
|
|
206
|
+
# </p>
|
|
207
|
+
# </div>
|
|
208
|
+
#
|
|
209
|
+
# ## Template Partials
|
|
210
|
+
#
|
|
211
|
+
# Often you'll need to re-use an existing template multiple times. For
|
|
212
|
+
# example, almost all templates will have some data inside the ``<head>`` tag
|
|
213
|
+
# that will have pretty much the same markup and/or content in different
|
|
214
|
+
# templates. Zen makes it possible this easy by using "partials". Partials are
|
|
215
|
+
# simply templates stored in a specific directory (which is specified in the
|
|
216
|
+
# "partials" option).
|
|
217
|
+
#
|
|
218
|
+
# There's no limitation as to what you can do with them except that they need
|
|
219
|
+
# to be put into a particular directory. Once a partial is in place it can be
|
|
220
|
+
# rendered using the ``partial()`` method. This method has the following
|
|
221
|
+
# syntax:
|
|
222
|
+
#
|
|
223
|
+
# partial(template[, :variable => value])
|
|
224
|
+
#
|
|
225
|
+
# The first parameter is simply the name of the partial to render, the second
|
|
226
|
+
# parameter is a hash containing data to copy into the partial. This hash can
|
|
227
|
+
# be used to set data inside a partial such as the page's title. Example:
|
|
228
|
+
#
|
|
229
|
+
# partial(:footer, :author => 'Yorick Peterse')
|
|
230
|
+
#
|
|
231
|
+
# In your ``footer.xhtml`` partial you can now do the following:
|
|
232
|
+
#
|
|
233
|
+
# <p>Author: #{@author}</p>
|
|
234
|
+
#
|
|
235
|
+
# <div class="note todo">
|
|
236
|
+
# <p>
|
|
237
|
+
# <strong>Note</strong>: The variables set in the partial method are
|
|
238
|
+
# available as instance variables, not regular variables.
|
|
239
|
+
# </p>
|
|
240
|
+
# </div>
|
|
241
|
+
#
|
|
38
242
|
# @since 0.2.4
|
|
39
243
|
#
|
|
40
|
-
|
|
244
|
+
class Theme
|
|
245
|
+
include Zen::Validation
|
|
246
|
+
|
|
247
|
+
# The name of the theme
|
|
248
|
+
attr_reader :name
|
|
249
|
+
|
|
250
|
+
# The author of the theme
|
|
251
|
+
attr_accessor :author
|
|
252
|
+
|
|
253
|
+
# A small description of the theme
|
|
254
|
+
attr_writer :about
|
|
255
|
+
|
|
256
|
+
# The URL to the theme's homepage
|
|
257
|
+
attr_accessor :url
|
|
258
|
+
|
|
259
|
+
# Path to the directory containing all the templates.
|
|
260
|
+
attr_accessor :templates
|
|
261
|
+
|
|
262
|
+
# Path to the directory containing all template partials.
|
|
263
|
+
attr_accessor :partials
|
|
264
|
+
|
|
265
|
+
# Path to the directory containing all migrations for the theme.
|
|
266
|
+
attr_accessor :migrations
|
|
267
|
+
|
|
268
|
+
# Path to the public directory containing assets and such.
|
|
269
|
+
attr_reader :public
|
|
270
|
+
|
|
271
|
+
# The name of the default template group to use.
|
|
272
|
+
attr_writer :default_template_group
|
|
273
|
+
|
|
41
274
|
##
|
|
42
275
|
# Hash containing all registered themes. The keys are the names of the
|
|
43
276
|
# themes and the values instances of Zen::Theme::Base.
|
|
44
277
|
#
|
|
45
|
-
# @author Yorick Peterse
|
|
46
278
|
# @since 0.2.5
|
|
47
279
|
#
|
|
48
|
-
|
|
280
|
+
REGISTERED = {}
|
|
49
281
|
|
|
50
282
|
##
|
|
51
283
|
# Adds a new theme to Zen. Note that the theme won't be used unless it has
|
|
52
284
|
# been set as the active theme in the settings package.
|
|
53
285
|
#
|
|
54
|
-
# @author Yorick Peterse
|
|
55
286
|
# @since 0.2.4
|
|
56
287
|
#
|
|
57
288
|
def self.add
|
|
58
|
-
theme =
|
|
289
|
+
theme = self.new
|
|
59
290
|
|
|
60
291
|
yield theme
|
|
61
292
|
|
|
62
|
-
# Validate the theme
|
|
63
293
|
theme.validate
|
|
64
|
-
theme.name = theme.name.to_sym
|
|
65
|
-
|
|
66
|
-
# Do we have a public directory?
|
|
67
|
-
if theme.respond_to?(:public_dir) and !theme.public_dir.nil?
|
|
68
|
-
if !Ramaze.options.publics.include?(theme.public_dir)
|
|
69
|
-
# Generate a relative path from ROOT to the theme
|
|
70
|
-
to = Pathname.new(theme.public_dir)
|
|
71
|
-
from = Pathname.new(Zen.root)
|
|
72
|
-
dir = to.relative_path_from(from.realpath).to_s
|
|
73
|
-
|
|
74
|
-
Ramaze.options.publics.push(dir)
|
|
75
|
-
end
|
|
76
|
-
end
|
|
77
294
|
|
|
78
|
-
|
|
295
|
+
REGISTERED[theme.name] = theme
|
|
79
296
|
end
|
|
80
297
|
|
|
81
298
|
##
|
|
82
299
|
# Retrieves a single theme for hte given identifier.
|
|
83
300
|
#
|
|
84
|
-
# @author Yorick Peterse
|
|
85
301
|
# @since 0.2.4
|
|
86
302
|
# @param [String/Symbol] name The name of the theme to retrieve.
|
|
87
303
|
# @return [Zen::Theme::Base]
|
|
@@ -89,11 +305,120 @@ module Zen
|
|
|
89
305
|
def self.[](name)
|
|
90
306
|
name = name.to_sym if name.class != Symbol
|
|
91
307
|
|
|
92
|
-
if !
|
|
308
|
+
if !REGISTERED.key?(name)
|
|
93
309
|
raise(Zen::ThemeError, "The theme #{name} doesn't exist.")
|
|
94
310
|
end
|
|
95
311
|
|
|
96
|
-
return
|
|
312
|
+
return REGISTERED[name]
|
|
313
|
+
end
|
|
314
|
+
|
|
315
|
+
##
|
|
316
|
+
# Sets the name of the theme.
|
|
317
|
+
#
|
|
318
|
+
# @since 0.3
|
|
319
|
+
# @param [#to_sym] name The name of the theme as a symbol.
|
|
320
|
+
#
|
|
321
|
+
def name=(name)
|
|
322
|
+
@name = name.to_sym
|
|
323
|
+
end
|
|
324
|
+
|
|
325
|
+
##
|
|
326
|
+
# Returns the name of the theme as either plain text or an anchor tag if the
|
|
327
|
+
# url attribute is set.
|
|
328
|
+
#
|
|
329
|
+
# @since 19-11-2011
|
|
330
|
+
# @return [String]
|
|
331
|
+
#
|
|
332
|
+
def formatted_name
|
|
333
|
+
if url
|
|
334
|
+
return '<a href="%s" title="%s">%s</a>' % [url, name, name]
|
|
335
|
+
else
|
|
336
|
+
return name
|
|
337
|
+
end
|
|
338
|
+
end
|
|
339
|
+
|
|
340
|
+
##
|
|
341
|
+
# Returns the description of the theme either in it's raw form or as a
|
|
342
|
+
# translation.
|
|
343
|
+
#
|
|
344
|
+
# @since 0.3
|
|
345
|
+
# @return [String]
|
|
346
|
+
#
|
|
347
|
+
def about
|
|
348
|
+
begin
|
|
349
|
+
return lang(@about)
|
|
350
|
+
rescue
|
|
351
|
+
return @about
|
|
352
|
+
end
|
|
97
353
|
end
|
|
354
|
+
|
|
355
|
+
##
|
|
356
|
+
# Returns the name of the default template group or "default" if no custom
|
|
357
|
+
# name is set.
|
|
358
|
+
#
|
|
359
|
+
# @since 22-11-2011
|
|
360
|
+
# @return [String]
|
|
361
|
+
#
|
|
362
|
+
def default_template_group
|
|
363
|
+
return @default_template_group || 'default'
|
|
364
|
+
end
|
|
365
|
+
|
|
366
|
+
##
|
|
367
|
+
# Sets the public directory of the theme.
|
|
368
|
+
#
|
|
369
|
+
# @since 0.3
|
|
370
|
+
# @param [String] dir The public directory.
|
|
371
|
+
#
|
|
372
|
+
def public=(dir)
|
|
373
|
+
@public = dir
|
|
374
|
+
|
|
375
|
+
if !Ramaze.options.publics.include?(@public)
|
|
376
|
+
# Generate a relative path from ROOT to the theme
|
|
377
|
+
to = Pathname.new(@public)
|
|
378
|
+
from = Pathname.new(Zen.root)
|
|
379
|
+
dir = to.relative_path_from(from.realpath).to_s
|
|
380
|
+
|
|
381
|
+
Ramaze.options.publics.push(dir)
|
|
382
|
+
end
|
|
383
|
+
end
|
|
384
|
+
|
|
385
|
+
##
|
|
386
|
+
# Validates all attributes of this class.
|
|
387
|
+
#
|
|
388
|
+
# @since 0.2.5
|
|
389
|
+
#
|
|
390
|
+
def validate
|
|
391
|
+
validates_presence([:name, :author, :about, :templates])
|
|
392
|
+
|
|
393
|
+
validates_filepath(:templates)
|
|
394
|
+
|
|
395
|
+
[:partials, :public, :migrations].each do |m|
|
|
396
|
+
if !send(m).nil?
|
|
397
|
+
validates_filepath(m)
|
|
398
|
+
end
|
|
399
|
+
end
|
|
400
|
+
|
|
401
|
+
# Check if the theme hasn't already been registered
|
|
402
|
+
if ::Zen::Theme::REGISTERED.key?(name.to_sym)
|
|
403
|
+
raise(
|
|
404
|
+
::Zen::ValidationError,
|
|
405
|
+
"The theme #{name} has already been registered."
|
|
406
|
+
)
|
|
407
|
+
end
|
|
408
|
+
end
|
|
409
|
+
|
|
410
|
+
# Aliases to keep Zen backwards compatible. These aliases will be removed in
|
|
411
|
+
# Zen 0.3.
|
|
412
|
+
alias :template_dir :templates
|
|
413
|
+
alias :template_dir= :templates=
|
|
414
|
+
|
|
415
|
+
alias :partial_dir :partials
|
|
416
|
+
alias :partial_dir= :partials=
|
|
417
|
+
|
|
418
|
+
alias :migration_dir :migrations
|
|
419
|
+
alias :migration_dir= :migrations=
|
|
420
|
+
|
|
421
|
+
alias :public_dir :public
|
|
422
|
+
alias :public_dir= :public=
|
|
98
423
|
end # Theme
|
|
99
424
|
end # Zen
|