zen 0.1a → 0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +17 -0
- data/MANIFEST +161 -264
- data/README.md +114 -0
- data/ROADMAP.md +31 -0
- data/Thorfile +8 -0
- data/lib/zen.rb +13 -10
- data/lib/zen/base/database.rb +34 -28
- data/lib/zen/base/language.rb +174 -92
- data/lib/zen/base/logger.rb +8 -6
- data/lib/zen/base/package.rb +36 -29
- data/lib/zen/base/version.rb +2 -1
- data/lib/zen/bin/zen_binary.rb +7 -71
- data/lib/zen/controller/admin_controller.rb +31 -11
- data/lib/zen/controller/base_controller.rb +13 -13
- data/lib/zen/controller/frontend_controller.rb +2 -0
- data/lib/zen/controller/main_controller.rb +9 -8
- data/lib/zen/helper/acl.rb +4 -1
- data/lib/zen/helper/asset.rb +5 -3
- data/lib/zen/helper/breadcrumb.rb +10 -8
- data/lib/zen/helper/common.rb +28 -13
- data/lib/zen/language/en/zen_general.yml +31 -0
- data/lib/zen/language/en/zen_models.yml +13 -0
- data/lib/zen/layout/admin.xhtml +76 -68
- data/lib/zen/layout/login.xhtml +48 -42
- data/lib/zen/liquid/controller_behavior.rb +2 -0
- data/lib/zen/liquid/general.rb +60 -9
- data/lib/zen/liquid/redirect.rb +29 -6
- data/lib/zen/liquid/strip.rb +3 -1
- data/lib/zen/model/methods.rb +7 -5
- data/lib/zen/model/settings.rb +69 -18
- data/lib/zen/package/all.rb +7 -0
- data/lib/zen/{packages → package}/categories/lib/categories.rb +3 -3
- data/lib/zen/package/categories/lib/categories/controller/categories.rb +250 -0
- data/lib/zen/package/categories/lib/categories/controller/category_groups.rb +216 -0
- data/lib/zen/package/categories/lib/categories/language/en/categories.yml +35 -0
- data/lib/zen/package/categories/lib/categories/language/en/category_groups.yml +32 -0
- data/lib/zen/package/categories/lib/categories/liquid/categories.rb +16 -0
- data/lib/zen/{packages → package}/categories/lib/categories/model/category.rb +9 -9
- data/lib/zen/{packages → package}/categories/lib/categories/model/category_group.rb +6 -4
- data/lib/zen/package/categories/lib/categories/view/admin/categories/edit.xhtml +7 -0
- data/lib/zen/package/categories/lib/categories/view/admin/categories/form.xhtml +59 -0
- data/lib/zen/package/categories/lib/categories/view/admin/categories/index.xhtml +78 -0
- data/lib/zen/package/categories/lib/categories/view/admin/categories/new.xhtml +7 -0
- data/lib/zen/package/categories/lib/categories/view/admin/category-groups/edit.xhtml +7 -0
- data/lib/zen/package/categories/lib/categories/view/admin/category-groups/form.xhtml +31 -0
- data/lib/zen/package/categories/lib/categories/view/admin/category-groups/index.xhtml +85 -0
- data/lib/zen/package/categories/lib/categories/view/admin/category-groups/new.xhtml +7 -0
- data/lib/zen/{packages → package}/categories/migrations/.gitkeep +0 -0
- data/lib/zen/{packages → package}/categories/migrations/1295282303_create_schema.rb +3 -2
- data/lib/zen/{packages → package}/comments/lib/comments.rb +1 -1
- data/lib/zen/{packages → package}/comments/lib/comments/controller/comments.rb +81 -41
- data/lib/zen/{packages → package}/comments/lib/comments/controller/comments_form.rb +15 -13
- data/lib/zen/package/comments/lib/comments/language/en/comments.yml +42 -0
- data/lib/zen/{packages → package}/comments/lib/comments/liquid/comment_form.rb +43 -13
- data/lib/zen/{packages → package}/comments/lib/comments/liquid/comments.rb +10 -12
- data/lib/zen/{packages → package}/comments/lib/comments/model/comment.rb +24 -0
- data/lib/zen/package/comments/lib/comments/view/admin/comments/edit.xhtml +7 -0
- data/lib/zen/package/comments/lib/comments/view/admin/comments/form.xhtml +57 -0
- data/lib/zen/package/comments/lib/comments/view/admin/comments/index.xhtml +79 -0
- data/lib/zen/{packages → package}/comments/migrations/.gitkeep +0 -0
- data/lib/zen/{packages → package}/comments/migrations/1295282202_create_schema.rb +6 -4
- data/lib/zen/{packages → package}/custom_fields/lib/custom_fields.rb +2 -2
- data/lib/zen/package/custom_fields/lib/custom_fields/controller/custom_field_groups.rb +224 -0
- data/lib/zen/package/custom_fields/lib/custom_fields/controller/custom_fields.rb +259 -0
- data/lib/zen/package/custom_fields/lib/custom_fields/language/en/custom_field_groups.yml +32 -0
- data/lib/zen/package/custom_fields/lib/custom_fields/language/en/custom_fields.yml +52 -0
- data/lib/zen/{packages → package}/custom_fields/lib/custom_fields/model/custom_field.rb +12 -7
- data/lib/zen/{packages → package}/custom_fields/lib/custom_fields/model/custom_field_group.rb +14 -4
- data/lib/zen/{packages → package}/custom_fields/lib/custom_fields/model/custom_field_value.rb +4 -2
- data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-groups/edit.xhtml +7 -0
- data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-groups/form.xhtml +30 -0
- data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-groups/index.xhtml +100 -0
- data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-groups/new.xhtml +7 -0
- data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-fields/edit.xhtml +7 -0
- data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-fields/form.xhtml +107 -0
- data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-fields/index.xhtml +84 -0
- data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-fields/new.xhtml +7 -0
- data/lib/zen/{packages → package}/custom_fields/migrations/.gitkeep +0 -0
- data/lib/zen/{packages → package}/custom_fields/migrations/1295255665_create_schema.rb +8 -7
- data/lib/zen/package/menus/lib/menus.rb +59 -0
- data/lib/zen/package/menus/lib/menus/controller/menu_items.rb +244 -0
- data/lib/zen/package/menus/lib/menus/controller/menus.rb +231 -0
- data/lib/zen/package/menus/lib/menus/helper/menu_item.rb +93 -0
- data/lib/zen/package/menus/lib/menus/language/en/menu_items.yml +41 -0
- data/lib/zen/package/menus/lib/menus/language/en/menus.yml +39 -0
- data/lib/zen/package/menus/lib/menus/liquid/menus.rb +152 -0
- data/lib/zen/package/menus/lib/menus/model/menu.rb +38 -0
- data/lib/zen/package/menus/lib/menus/model/menu_item.rb +33 -0
- data/lib/zen/package/menus/lib/menus/view/admin/menu-items/edit.xhtml +7 -0
- data/lib/zen/package/menus/lib/menus/view/admin/menu-items/form.xhtml +64 -0
- data/lib/zen/package/menus/lib/menus/view/admin/menu-items/index.xhtml +84 -0
- data/lib/zen/package/menus/lib/menus/view/admin/menu-items/new.xhtml +7 -0
- data/lib/zen/package/menus/lib/menus/view/admin/menus/edit.xhtml +7 -0
- data/lib/zen/package/menus/lib/menus/view/admin/menus/form.xhtml +42 -0
- data/lib/zen/package/menus/lib/menus/view/admin/menus/index.xhtml +95 -0
- data/lib/zen/package/menus/lib/menus/view/admin/menus/new.xhtml +7 -0
- data/lib/zen/{packages/sections → package/menus}/migrations/.gitkeep +0 -0
- data/lib/zen/package/menus/migrations/1297184342_create_schema.rb +33 -0
- data/lib/zen/{packages → package}/sections/lib/sections.rb +0 -0
- data/lib/zen/{packages → package}/sections/lib/sections/controller/section_entries.rb +132 -68
- data/lib/zen/{packages → package}/sections/lib/sections/controller/sections.rb +96 -48
- data/lib/zen/package/sections/lib/sections/language/en/section_entries.yml +43 -0
- data/lib/zen/package/sections/lib/sections/language/en/sections.yml +48 -0
- data/lib/zen/{packages → package}/sections/lib/sections/liquid/section_entries.rb +55 -43
- data/lib/zen/{packages → package}/sections/lib/sections/liquid/sections.rb +9 -8
- data/lib/zen/package/sections/lib/sections/model/section.rb +62 -0
- data/lib/zen/package/sections/lib/sections/model/section_entry.rb +53 -0
- data/lib/zen/package/sections/lib/sections/view/admin/edit.xhtml +7 -0
- data/lib/zen/package/sections/lib/sections/view/admin/form.xhtml +107 -0
- data/lib/zen/package/sections/lib/sections/view/admin/index.xhtml +93 -0
- data/lib/zen/package/sections/lib/sections/view/admin/new.xhtml +7 -0
- data/lib/zen/package/sections/lib/sections/view/admin/section-entries/edit.xhtml +7 -0
- data/lib/zen/package/sections/lib/sections/view/admin/section-entries/form.xhtml +233 -0
- data/lib/zen/package/sections/lib/sections/view/admin/section-entries/index.xhtml +82 -0
- data/lib/zen/package/sections/lib/sections/view/admin/section-entries/new.xhtml +7 -0
- data/lib/zen/{packages/settings → package/sections}/migrations/.gitkeep +0 -0
- data/lib/zen/{packages → package}/sections/migrations/1295251836_create_schema.rb +6 -6
- data/lib/zen/{packages → package}/settings/lib/settings.rb +0 -0
- data/lib/zen/{packages → package}/settings/lib/settings/controller/settings.rb +33 -24
- data/lib/zen/package/settings/lib/settings/language/en/settings.yml +26 -0
- data/lib/zen/{packages → package}/settings/lib/settings/liquid/setting.rb +5 -3
- data/lib/zen/package/settings/lib/settings/model/setting.rb +113 -0
- data/lib/zen/package/settings/lib/settings/view/admin/settings/index.xhtml +111 -0
- data/lib/zen/{packages/users → package/settings}/migrations/.gitkeep +0 -0
- data/lib/zen/{packages → package}/settings/migrations/1295597111_create_schema.rb +2 -2
- data/lib/zen/package/settings/migrations/1299538742_add_language_key.rb +62 -0
- data/lib/zen/{packages → package}/users/lib/users.rb +6 -2
- data/lib/zen/package/users/lib/users/controller/access_rules.rb +238 -0
- data/lib/zen/package/users/lib/users/controller/user_groups.rb +217 -0
- data/lib/zen/{packages → package}/users/lib/users/controller/users.rb +115 -57
- data/lib/zen/package/users/lib/users/language/en/access_rules.yml +35 -0
- data/lib/zen/package/users/lib/users/language/en/user_groups.yml +31 -0
- data/lib/zen/package/users/lib/users/language/en/users.yml +50 -0
- data/lib/zen/{packages → package}/users/lib/users/liquid/user.rb +8 -6
- data/lib/zen/{packages → package}/users/lib/users/liquid/users.rb +5 -3
- data/lib/zen/{packages → package}/users/lib/users/model/access_rule.rb +11 -3
- data/lib/zen/{packages → package}/users/lib/users/model/user.rb +5 -1
- data/lib/zen/{packages → package}/users/lib/users/model/user_group.rb +6 -3
- data/lib/zen/package/users/lib/users/public/admin/js/users/access_rules.js +42 -0
- data/lib/zen/package/users/lib/users/view/admin/access-rules/edit.xhtml +7 -0
- data/lib/zen/package/users/lib/users/view/admin/access-rules/form.xhtml +108 -0
- data/lib/zen/package/users/lib/users/view/admin/access-rules/index.xhtml +93 -0
- data/lib/zen/package/users/lib/users/view/admin/access-rules/new.xhtml +7 -0
- data/lib/zen/package/users/lib/users/view/admin/user-groups/edit.xhtml +7 -0
- data/lib/zen/package/users/lib/users/view/admin/user-groups/form.xhtml +37 -0
- data/lib/zen/package/users/lib/users/view/admin/user-groups/index.xhtml +76 -0
- data/lib/zen/package/users/lib/users/view/admin/user-groups/new.xhtml +7 -0
- data/lib/zen/package/users/lib/users/view/admin/users/edit.xhtml +7 -0
- data/lib/zen/package/users/lib/users/view/admin/users/form.xhtml +53 -0
- data/lib/zen/package/users/lib/users/view/admin/users/index.xhtml +81 -0
- data/lib/zen/package/users/lib/users/view/admin/users/login.xhtml +27 -0
- data/lib/zen/package/users/lib/users/view/admin/users/new.xhtml +7 -0
- data/{pkg → lib/zen/package/users/migrations}/.gitkeep +0 -0
- data/lib/zen/{packages → package}/users/migrations/1295281013_create_schema.rb +2 -2
- data/lib/zen/public/admin/css/boilerplate.css +62 -60
- data/lib/zen/public/admin/css/buttons.css +46 -0
- data/lib/zen/public/admin/css/datepicker.css +163 -0
- data/lib/zen/public/admin/css/editor.css +91 -0
- data/lib/zen/public/admin/css/forms.css +68 -0
- data/lib/zen/public/admin/css/general.css +34 -419
- data/lib/zen/public/admin/css/grid.css +26 -26
- data/lib/zen/public/admin/css/layout.css +73 -62
- data/lib/zen/public/admin/css/modals.css +63 -0
- data/lib/zen/public/admin/css/notifications.css +84 -0
- data/lib/zen/public/admin/css/tables.css +71 -0
- data/lib/zen/public/admin/css/tabs.css +53 -0
- data/lib/zen/public/admin/js/mootools/more.js +139 -51
- data/lib/zen/public/admin/js/vendor/datepicker/Picker.Attach.js +137 -0
- data/lib/zen/public/admin/js/vendor/datepicker/Picker.Date.js +576 -0
- data/lib/zen/public/admin/js/vendor/datepicker/Picker.js +291 -0
- data/lib/zen/public/admin/js/vendor/datepicker/README.md +325 -0
- data/lib/zen/public/admin/js/vendor/datepicker/locale.js +16 -0
- data/lib/zen/public/admin/js/zen/editor/base.js +173 -183
- data/lib/zen/public/admin/js/zen/editor/drivers/html.js +74 -89
- data/lib/zen/public/admin/js/zen/editor/drivers/markdown.js +72 -87
- data/lib/zen/public/admin/js/zen/editor/drivers/textile.js +72 -87
- data/lib/zen/public/admin/js/zen/init.js +65 -51
- data/lib/zen/public/admin/js/zen/modal.js +108 -121
- data/lib/zen/public/admin/js/zen/notification.js +163 -165
- data/lib/zen/public/admin/js/zen/tabs.js +203 -210
- data/lib/zen/task/build.rb +123 -0
- data/lib/zen/task/clean.rb +46 -0
- data/lib/zen/task/db.rb +120 -0
- data/lib/zen/task/package.rb +82 -0
- data/lib/zen/task/proto.rb +116 -0
- data/{LICENSE → license.txt} +2 -2
- data/proto/app/Thorfile +4 -0
- data/proto/app/config/middlewares.rb +3 -3
- data/proto/app/config/requires.rb +1 -6
- data/proto/app/start.rb +5 -10
- data/{lib/zen/packages/settings → proto/package}/LICENSE +0 -0
- data/{lib/zen/packages/categories → proto/package}/README.textile +0 -0
- data/proto/package/lib/package.rb +41 -0
- data/proto/{module/lib/module → package/lib/package}/controller/controllers.rb +3 -2
- data/proto/{module/lib/module → package/lib/package}/language/en/languages.rb +0 -0
- data/proto/{module/lib/module → package/lib/package}/model/model.rb +0 -0
- data/proto/{module/lib/module/view/admin → package/lib/package/view/admin/package}/edit.xhtml +0 -0
- data/proto/{module/lib/module/view/admin → package/lib/package/view/admin/package}/form.xhtml +0 -0
- data/proto/{module/lib/module/view/admin → package/lib/package/view/admin/package}/index.xhtml +0 -0
- data/proto/{module/lib/module/view/admin → package/lib/package/view/admin/package}/new.xhtml +0 -0
- data/proto/{module → package}/migrations/.gitkeep +0 -0
- metadata +199 -280
- data/README.textile +0 -42
- data/Rakefile +0 -6
- data/doc/Categories.html +0 -93
- data/doc/Categories/Controllers.html +0 -93
- data/doc/Categories/Controllers/Categories.html +0 -995
- data/doc/Categories/Controllers/CategoryGroups.html +0 -878
- data/doc/Categories/Models.html +0 -97
- data/doc/Categories/Models/Category.html +0 -269
- data/doc/Categories/Models/CategoryGroup.html +0 -231
- data/doc/Comments.html +0 -93
- data/doc/Comments/Controllers.html +0 -93
- data/doc/Comments/Controllers/Comments.html +0 -797
- data/doc/Comments/Controllers/CommentsForm.html +0 -487
- data/doc/Comments/Liquid.html +0 -93
- data/doc/Comments/Liquid/CommentForm.html +0 -522
- data/doc/Comments/Liquid/Comments.html +0 -543
- data/doc/Comments/Models.html +0 -95
- data/doc/Comments/Models/Comment.html +0 -260
- data/doc/CustomFields.html +0 -93
- data/doc/CustomFields/Controllers.html +0 -93
- data/doc/CustomFields/Controllers/CustomFieldGroups.html +0 -902
- data/doc/CustomFields/Controllers/CustomFields.html +0 -974
- data/doc/CustomFields/Models.html +0 -97
- data/doc/CustomFields/Models/CustomField.html +0 -272
- data/doc/CustomFields/Models/CustomFieldGroup.html +0 -259
- data/doc/CustomFields/Models/CustomFieldValue.html +0 -154
- data/doc/Ramaze.html +0 -93
- data/doc/Ramaze/Helper.html +0 -93
- data/doc/Ramaze/Helper/ACL.html +0 -531
- data/doc/Ramaze/Helper/Asset.html +0 -617
- data/doc/Ramaze/Helper/Breadcrumb.html +0 -411
- data/doc/Ramaze/Helper/Common.html +0 -738
- data/doc/Sections.html +0 -93
- data/doc/Sections/Controllers.html +0 -93
- data/doc/Sections/Controllers/SectionEntries.html +0 -1100
- data/doc/Sections/Controllers/Sections.html +0 -953
- data/doc/Sections/Liquid.html +0 -93
- data/doc/Sections/Liquid/SectionEntries.html +0 -674
- data/doc/Sections/Liquid/Sections.html +0 -494
- data/doc/Sections/Models.html +0 -97
- data/doc/Sections/Models/Section.html +0 -272
- data/doc/Sections/Models/SectionEntry.html +0 -264
- data/doc/Sequel.html +0 -91
- data/doc/Sequel/Model.html +0 -243
- data/doc/Settings.html +0 -93
- data/doc/Settings/Controllers.html +0 -91
- data/doc/Settings/Controllers/Settings.html +0 -565
- data/doc/Settings/Liquid.html +0 -91
- data/doc/Settings/Liquid/Setting.html +0 -426
- data/doc/Settings/Models.html +0 -95
- data/doc/Settings/Models/Setting.html +0 -293
- data/doc/Users.html +0 -93
- data/doc/Users/Controllers.html +0 -93
- data/doc/Users/Controllers/AccessRules.html +0 -904
- data/doc/Users/Controllers/UserGroups.html +0 -879
- data/doc/Users/Controllers/Users.html +0 -1124
- data/doc/Users/Liquid.html +0 -93
- data/doc/Users/Liquid/User.html +0 -480
- data/doc/Users/Liquid/Users.html +0 -495
- data/doc/Users/Models.html +0 -97
- data/doc/Users/Models/AccessRule.html +0 -257
- data/doc/Users/Models/User.html +0 -649
- data/doc/Users/Models/UserGroup.html +0 -267
- data/doc/Zen.html +0 -391
- data/doc/Zen/Bin.html +0 -113
- data/doc/Zen/Bin/Base.html +0 -727
- data/doc/Zen/Controllers.html +0 -115
- data/doc/Zen/Controllers/AdminController.html +0 -298
- data/doc/Zen/Controllers/BaseController.html +0 -272
- data/doc/Zen/Controllers/FrontendController.html +0 -164
- data/doc/Zen/Controllers/MainController.html +0 -421
- data/doc/Zen/Database.html +0 -498
- data/doc/Zen/Language.html +0 -660
- data/doc/Zen/Liquid.html +0 -117
- data/doc/Zen/Liquid/ControllerBehavior.html +0 -448
- data/doc/Zen/Liquid/General.html +0 -444
- data/doc/Zen/Liquid/Redirect.html +0 -435
- data/doc/Zen/Liquid/Strip.html +0 -447
- data/doc/Zen/Logger.html +0 -393
- data/doc/Zen/Package.html +0 -909
- data/doc/_index.html +0 -724
- data/doc/class_list.html +0 -36
- data/doc/css/common.css +0 -1
- data/doc/css/full_list.css +0 -53
- data/doc/css/style.css +0 -310
- data/doc/file.README.html +0 -86
- data/doc/file_list.html +0 -38
- data/doc/frames.html +0 -13
- data/doc/index.html +0 -86
- data/doc/js/app.js +0 -203
- data/doc/js/full_list.js +0 -149
- data/doc/js/jquery.js +0 -154
- data/doc/method_list.html +0 -1139
- data/doc/top-level-namespace.html +0 -88
- data/lib/zen/language/en/zen_general.rb +0 -21
- data/lib/zen/language/en/zen_models.rb +0 -39
- data/lib/zen/packages/categories/LICENSE +0 -19
- data/lib/zen/packages/categories/lib/categories/controller/categories.rb +0 -202
- data/lib/zen/packages/categories/lib/categories/controller/category_groups.rb +0 -173
- data/lib/zen/packages/categories/lib/categories/language/en/categories.rb +0 -38
- data/lib/zen/packages/categories/lib/categories/language/en/category_groups.rb +0 -37
- data/lib/zen/packages/categories/lib/categories/view/admin/categories/edit.xhtml +0 -7
- data/lib/zen/packages/categories/lib/categories/view/admin/categories/form.xhtml +0 -36
- data/lib/zen/packages/categories/lib/categories/view/admin/categories/index.xhtml +0 -70
- data/lib/zen/packages/categories/lib/categories/view/admin/categories/new.xhtml +0 -7
- data/lib/zen/packages/categories/lib/categories/view/admin/category_groups/edit.xhtml +0 -7
- data/lib/zen/packages/categories/lib/categories/view/admin/category_groups/form.xhtml +0 -18
- data/lib/zen/packages/categories/lib/categories/view/admin/category_groups/index.xhtml +0 -72
- data/lib/zen/packages/categories/lib/categories/view/admin/category_groups/new.xhtml +0 -7
- data/lib/zen/packages/comments/LICENSE +0 -19
- data/lib/zen/packages/comments/README.textile +0 -0
- data/lib/zen/packages/comments/lib/comments/language/en/comments.rb +0 -52
- data/lib/zen/packages/comments/lib/comments/view/admin/comments/edit.xhtml +0 -7
- data/lib/zen/packages/comments/lib/comments/view/admin/comments/form.xhtml +0 -31
- data/lib/zen/packages/comments/lib/comments/view/admin/comments/index.xhtml +0 -74
- data/lib/zen/packages/comments/migrations/1296949631_add_defensio_signature.rb +0 -11
- data/lib/zen/packages/custom_fields/LICENSE +0 -19
- data/lib/zen/packages/custom_fields/README.textile +0 -0
- data/lib/zen/packages/custom_fields/lib/custom_fields/controller/custom_field_groups.rb +0 -179
- data/lib/zen/packages/custom_fields/lib/custom_fields/controller/custom_fields.rb +0 -194
- data/lib/zen/packages/custom_fields/lib/custom_fields/language/en/custom_field_groups.rb +0 -45
- data/lib/zen/packages/custom_fields/lib/custom_fields/language/en/custom_fields.rb +0 -64
- data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_field_groups/edit.xhtml +0 -7
- data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_field_groups/form.xhtml +0 -18
- data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_field_groups/index.xhtml +0 -88
- data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_field_groups/new.xhtml +0 -7
- data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_fields/edit.xhtml +0 -7
- data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_fields/form.xhtml +0 -50
- data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_fields/index.xhtml +0 -75
- data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_fields/new.xhtml +0 -7
- data/lib/zen/packages/sections/LICENSE +0 -19
- data/lib/zen/packages/sections/README.textile +0 -43
- data/lib/zen/packages/sections/lib/sections/language/en/section_entries.rb +0 -58
- data/lib/zen/packages/sections/lib/sections/language/en/sections.rb +0 -63
- data/lib/zen/packages/sections/lib/sections/model/section.rb +0 -43
- data/lib/zen/packages/sections/lib/sections/model/section_entry.rb +0 -43
- data/lib/zen/packages/sections/lib/sections/view/admin/edit.xhtml +0 -7
- data/lib/zen/packages/sections/lib/sections/view/admin/form.xhtml +0 -54
- data/lib/zen/packages/sections/lib/sections/view/admin/index.xhtml +0 -77
- data/lib/zen/packages/sections/lib/sections/view/admin/new.xhtml +0 -7
- data/lib/zen/packages/sections/lib/sections/view/admin/section_entries/edit.xhtml +0 -7
- data/lib/zen/packages/sections/lib/sections/view/admin/section_entries/form.xhtml +0 -147
- data/lib/zen/packages/sections/lib/sections/view/admin/section_entries/index.xhtml +0 -74
- data/lib/zen/packages/sections/lib/sections/view/admin/section_entries/new.xhtml +0 -7
- data/lib/zen/packages/sections/migrations/1296335671_userdata_section_entries.rb +0 -18
- data/lib/zen/packages/sections/migrations/1296936110_drop_comment_antispam.rb +0 -11
- data/lib/zen/packages/settings/README.textile +0 -0
- data/lib/zen/packages/settings/lib/settings/language/en/settings.rb +0 -56
- data/lib/zen/packages/settings/lib/settings/model/setting.rb +0 -38
- data/lib/zen/packages/settings/lib/settings/view/admin/settings/index.xhtml +0 -79
- data/lib/zen/packages/users/LICENSE +0 -19
- data/lib/zen/packages/users/README.textile +0 -0
- data/lib/zen/packages/users/lib/users/controller/access_rules.rb +0 -186
- data/lib/zen/packages/users/lib/users/controller/user_groups.rb +0 -171
- data/lib/zen/packages/users/lib/users/language/en/access_rules.rb +0 -49
- data/lib/zen/packages/users/lib/users/language/en/user_groups.rb +0 -42
- data/lib/zen/packages/users/lib/users/language/en/users.rb +0 -63
- data/lib/zen/packages/users/lib/users/public/admin/js/users/access_rules.js +0 -43
- data/lib/zen/packages/users/lib/users/view/admin/access_rules/edit.xhtml +0 -7
- data/lib/zen/packages/users/lib/users/view/admin/access_rules/form.xhtml +0 -68
- data/lib/zen/packages/users/lib/users/view/admin/access_rules/index.xhtml +0 -85
- data/lib/zen/packages/users/lib/users/view/admin/access_rules/new.xhtml +0 -7
- data/lib/zen/packages/users/lib/users/view/admin/user_groups/edit.xhtml +0 -7
- data/lib/zen/packages/users/lib/users/view/admin/user_groups/form.xhtml +0 -19
- data/lib/zen/packages/users/lib/users/view/admin/user_groups/index.xhtml +0 -69
- data/lib/zen/packages/users/lib/users/view/admin/user_groups/new.xhtml +0 -7
- data/lib/zen/packages/users/lib/users/view/admin/users/edit.xhtml +0 -7
- data/lib/zen/packages/users/lib/users/view/admin/users/form.xhtml +0 -25
- data/lib/zen/packages/users/lib/users/view/admin/users/index.xhtml +0 -73
- data/lib/zen/packages/users/lib/users/view/admin/users/login.xhtml +0 -22
- data/lib/zen/packages/users/lib/users/view/admin/users/new.xhtml +0 -7
- data/lib/zen/tasks.rb +0 -6
- data/proto/app/Rakefile +0 -2
- data/proto/module/LICENSE +0 -0
- data/proto/module/README.textile +0 -0
- data/proto/module/lib/module.rb +0 -15
- data/spec/javascript/css/base.css +0 -177
- data/spec/javascript/css/style.css +0 -204
- data/spec/javascript/css/typography.css +0 -70
- data/spec/javascript/editor/index.html +0 -65
- data/spec/javascript/images/close.png +0 -0
- data/spec/javascript/images/info.png +0 -0
- data/spec/javascript/js/editor.js +0 -16
- data/spec/javascript/js/modal.js +0 -12
- data/spec/javascript/js/namespace.js +0 -2
- data/spec/javascript/js/notification.js +0 -43
- data/spec/javascript/js/tabs.js +0 -8
- data/spec/javascript/modal/index.html +0 -45
- data/spec/javascript/notification/index.html +0 -48
- data/spec/javascript/tabs/index.html +0 -73
- data/spec/javascript/tabs/tab_1.html +0 -1
- data/spec/javascript/tabs/tab_2.html +0 -1
- data/spec/zen/base/language.rb +0 -31
- data/spec/zen/base/logger.rb +0 -34
- data/spec/zen/base/package.rb +0 -47
- data/spec/zen/config/database.rb +0 -8
- data/spec/zen/helper/asset.rb +0 -26
- data/spec/zen/helper/breadcrumb.rb +0 -24
- data/spec/zen/language/en/general.rb +0 -4
- data/spec/zen/language/nl/general.rb +0 -4
- data/spec/zen/liquid/general.rb +0 -42
- data/spec/zen/logs/.gitkeep +0 -0
- data/spec/zen/spec.rb +0 -9
- data/spec/zen/spec_database.db +0 -0
- data/tasks/bacon.rake +0 -99
- data/tasks/build.rake +0 -72
- data/tasks/clean.rake +0 -18
- data/tasks/db.rake +0 -81
- data/tasks/doc.rake +0 -5
- data/tasks/extension.rake +0 -65
- data/tasks/proto.rake +0 -37
- data/tasks/theme.rake +0 -63
@@ -0,0 +1,53 @@
|
|
1
|
+
@charset "UTF-8";
|
2
|
+
|
3
|
+
/**
|
4
|
+
* Tab navigation.
|
5
|
+
*
|
6
|
+
* @author Yorick Peterse
|
7
|
+
* @since 0.1
|
8
|
+
*/
|
9
|
+
.tabs
|
10
|
+
{
|
11
|
+
border: 1px solid #aaa;
|
12
|
+
height: 40px;
|
13
|
+
margin-bottom: 20px;
|
14
|
+
}
|
15
|
+
.tabs ul
|
16
|
+
{
|
17
|
+
background: #ddd -webkit-gradient(linear, left bottom, left top, from(#ddd), to(#eee));
|
18
|
+
background: #ddd -moz-linear-gradient(bottom, top, #ddd, #eee);
|
19
|
+
border-top: 1px solid #fff;
|
20
|
+
height: 39px;
|
21
|
+
list-style-type: none;
|
22
|
+
margin: 0px;
|
23
|
+
}
|
24
|
+
.tabs ul:after
|
25
|
+
{
|
26
|
+
clear: both;
|
27
|
+
content: '.';
|
28
|
+
display: block;
|
29
|
+
height: 0;
|
30
|
+
visibility: hidden;
|
31
|
+
}
|
32
|
+
.tabs ul li
|
33
|
+
{
|
34
|
+
border-right: 1px solid #aaa;
|
35
|
+
float: left;
|
36
|
+
margin: 0px;
|
37
|
+
}
|
38
|
+
.tabs ul li.active a
|
39
|
+
{
|
40
|
+
background: #eee -webkit-gradient(linear, left bottom, left top, from(#eee), to(#ddd));
|
41
|
+
background: #eee -moz-linear-gradient(bottom, top, #eee, #ddd);
|
42
|
+
border-bottom: 1px solid #aaa;
|
43
|
+
height: 29px;
|
44
|
+
}
|
45
|
+
.tabs ul li a
|
46
|
+
{
|
47
|
+
color: #000;
|
48
|
+
display: block;
|
49
|
+
height: 30px;
|
50
|
+
padding: 10px 15px 0px 15px;
|
51
|
+
text-decoration: none;
|
52
|
+
text-shadow: 0px 1px #fff;
|
53
|
+
}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
// MooTools: the javascript framework.
|
2
|
-
// Load this file's selection again by visiting: http://mootools.net/more/
|
3
|
-
// Or build this file again with packager using: packager build More/More More/Events.Pseudos More/Class.Refactor More/Class.Binds More/Array.Extras More/Date More/Date.Extras More/Number.Format More/String.Extras More/Hash More/Hash.Extras More/Element.Forms More/Elements.From More/Element.Event.Pseudos More/Element.Event.Pseudos.Keys More/Element.Delegation More/Element.Measure More/Form.Request More/Request.Periodical More/Assets More/Color More/Keyboard More/Keyboard.Extras More/Tips
|
2
|
+
// Load this file's selection again by visiting: http://mootools.net/more/52739ae5fa5cb00b1edd04d55fc9f0da
|
3
|
+
// Or build this file again with packager using: packager build More/More More/Events.Pseudos More/Class.Refactor More/Class.Binds More/Class.Occlude More/Chain.Wait More/Array.Extras More/Date More/Date.Extras More/Number.Format More/Object.Extras More/String.Extras More/String.QueryString More/URI More/URI.Relative More/Hash More/Hash.Extras More/Element.Forms More/Elements.From More/Element.Event.Pseudos More/Element.Event.Pseudos.Keys More/Element.Delegation More/Element.Measure More/Element.Pin More/Element.Position More/Element.Shortcuts More/Form.Request More/Drag More/Drag.Move More/Sortables More/Request.Periodical More/Assets More/Color More/IframeShim More/Keyboard More/Keyboard.Extras More/Tips
|
4
4
|
/*
|
5
5
|
---
|
6
6
|
copyrights:
|
@@ -21,22 +21,27 @@ return this;}};};(function(){var b={once:function(d,e,c){e.apply(this,c);this.re
|
|
21
21
|
Events.implement(Events.Pseudos(b,a.addEvent,a.removeEvent));})();Class.refactor=function(b,a){Object.each(a,function(e,d){var c=b.prototype[d];if(c&&c.$origin){c=c.$origin;
|
22
22
|
}if(c&&typeof e=="function"){b.implement(d,function(){var f=this.previous;this.previous=c;var g=e.apply(this,arguments);this.previous=f;return g;});}else{b.implement(d,e);
|
23
23
|
}});return b;};Class.Mutators.Binds=function(a){return a;};Class.Mutators.initialize=function(a){return function(){Array.from(this.Binds).each(function(b){var c=this[b];
|
24
|
-
if(c){this[b]=c.bind(this);}},this);return a.apply(this,arguments);};};
|
25
|
-
|
26
|
-
}
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
}}return
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
if(
|
37
|
-
if(
|
38
|
-
}
|
39
|
-
}
|
24
|
+
if(c){this[b]=c.bind(this);}},this);return a.apply(this,arguments);};};Class.Occlude=new Class({occlude:function(c,b){b=document.id(b||this.element);var a=b.retrieve(c||this.property);
|
25
|
+
if(a&&this.occluded!=null){return this.occluded=a;}this.occluded=false;b.store(c||this.property,this);return this.occluded;}});(function(){var a={wait:function(b){return this.chain(function(){this.callChain.delay(b==null?500:b,this);
|
26
|
+
}.bind(this));}};Chain.implement(a);if(this.Fx){Fx.implement(a);["Css","Tween","Elements"].each(function(b){if(Fx[b]){Fx[b].implement(a);}});}if(this.Element&&this.Fx){Element.implement({chains:function(b){Array.from(b||["tween","morph","reveal"]).each(function(c){c=this.get(c);
|
27
|
+
if(!c){return;}c.setOptions({link:"chain"});},this);return this;},pauseFx:function(c,b){this.chains(b).get(b||"tween").wait(c);return this;}});}})();Array.implement({min:function(){return Math.min.apply(null,this);
|
28
|
+
},max:function(){return Math.max.apply(null,this);},average:function(){return this.length?this.sum()/this.length:0;},sum:function(){var a=0,b=this.length;
|
29
|
+
if(b){while(b--){a+=this[b];}}return a;},unique:function(){return[].combine(this);},shuffle:function(){for(var b=this.length;b&&--b;){var a=this[b],c=Math.floor(Math.random()*(b+1));
|
30
|
+
this[b]=this[c];this[c]=a;}return this;},reduce:function(c,d){var e;for(var b=0,a=this.length;b<a;b++){if(b in this){d=d===e?this[b]:c.call(null,d,this[b],b,this);
|
31
|
+
}}return d;},reduceRight:function(b,c){var a=this.length,d;while(a--){if(a in this){c=c===d?this[a]:b.call(null,c,this[a],a,this);}}return c;}});(function(){var a=function(b){return b!=null;
|
32
|
+
};Object.extend({getFromPath:function(e,d){var f=d.split(".");for(var c=0,b=f.length;c<b;c++){if(e.hasOwnProperty(f[c])){e=e[f[c]];}else{return null;}}return e;
|
33
|
+
},cleanValues:function(b,c){c=c||a;for(key in b){if(!c(b[key])){delete b[key];}}return b;},erase:function(b,c){if(b.hasOwnProperty(c)){delete b[c];}return b;
|
34
|
+
},run:function(c){var b=Array.slice(arguments,1);for(key in c){if(c[key].apply){c[key].apply(c,b);}}return c;}});})();(function(){var b=null,a={},e={};
|
35
|
+
var d=function(g){if(instanceOf(g,f.Set)){return g;}else{return a[g];}};var f=this.Locale={define:function(g,k,i,j){var h;if(instanceOf(g,f.Set)){h=g.name;
|
36
|
+
if(h){a[h]=g;}}else{h=g;if(!a[h]){a[h]=new f.Set(h);}g=a[h];}if(k){g.define(k,i,j);}if(k=="cascade"){return f.inherit(h,i);}if(!b){b=g;}return g;},use:function(g){g=d(g);
|
37
|
+
if(g){b=g;this.fireEvent("change",g);this.fireEvent("langChange",g.name);}return this;},getCurrent:function(){return b;},get:function(h,g){return(b)?b.get(h,g):"";
|
38
|
+
},inherit:function(g,h,i){g=d(g);if(g){g.inherit(h,i);}return this;},list:function(){return Object.keys(a);}};Object.append(f,new Events);f.Set=new Class({sets:{},inherits:{locales:[],sets:{}},initialize:function(g){this.name=g||"";
|
39
|
+
},define:function(j,h,i){var g=this.sets[j];if(!g){g={};}if(h){if(typeOf(h)=="object"){g=Object.merge(g,h);}else{g[h]=i;}}this.sets[j]=g;return this;},get:function(s,k,r){var q=Object.getFromPath(this.sets,s);
|
40
|
+
if(q!=null){var n=typeOf(q);if(n=="function"){q=q.apply(null,Array.from(k));}else{if(n=="object"){q=Object.clone(q);}}return q;}var j=s.indexOf("."),p=j<0?s:s.substr(0,j),m=(this.inherits.sets[p]||[]).combine(this.inherits.locales).include("en-US");
|
41
|
+
if(!r){r=[];}for(var h=0,g=m.length;h<g;h++){if(r.contains(m[h])){continue;}r.include(m[h]);var o=a[m[h]];if(!o){continue;}q=o.get(s,k,r);if(q!=null){return q;
|
42
|
+
}}return"";},inherit:function(h,i){h=Array.from(h);if(i&&!this.inherits.sets[i]){this.inherits.sets[i]=[];}var g=h.length;while(g--){(i?this.inherits.sets[i]:this.inherits.locales).unshift(h[g]);
|
43
|
+
}return this;}});var c=MooTools.lang={};Object.append(c,f,{setLanguage:f.use,getCurrentLanguage:function(){var g=f.getCurrent();return(g)?g.name:null;},set:function(){f.define.apply(this,arguments);
|
44
|
+
return this;},get:function(i,h,g){if(h){i+="."+h;}return f.get(i,g);}});})();Locale.define("en-US","Date",{months:["January","February","March","April","May","June","July","August","September","October","November","December"],months_abbr:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],days_abbr:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dateOrder:["month","date","year"],shortDate:"%m/%d/%Y",shortTime:"%I:%M%p",AM:"AM",PM:"PM",ordinal:function(a){return(a>3&&a<21)?"th":["th","st","nd","rd","th"][Math.min(a%10,4)];
|
40
45
|
},lessThanMinuteAgo:"less than a minute ago",minuteAgo:"about a minute ago",minutesAgo:"{delta} minutes ago",hourAgo:"about an hour ago",hoursAgo:"about {delta} hours ago",dayAgo:"1 day ago",daysAgo:"{delta} days ago",weekAgo:"1 week ago",weeksAgo:"{delta} weeks ago",monthAgo:"1 month ago",monthsAgo:"{delta} months ago",yearAgo:"1 year ago",yearsAgo:"{delta} years ago",lessThanMinuteUntil:"less than a minute from now",minuteUntil:"about a minute from now",minutesUntil:"{delta} minutes from now",hourUntil:"about an hour from now",hoursUntil:"about {delta} hours from now",dayUntil:"1 day from now",daysUntil:"{delta} days from now",weekUntil:"1 week from now",weeksUntil:"{delta} weeks from now",monthUntil:"1 month from now",monthsUntil:"{delta} months from now",yearUntil:"1 year from now",yearsUntil:"{delta} years from now"});
|
41
46
|
(function(){var i=this.Date;i.Methods={ms:"Milliseconds",year:"FullYear",min:"Minutes",mo:"Month",sec:"Seconds",hr:"Hours"};["Date","Day","FullYear","Hours","Milliseconds","Minutes","Month","Seconds","Time","TimezoneOffset","Week","Timezone","GMTOffset","DayOfYear","LastMonth","LastDayOfMonth","UTCDate","UTCDay","UTCFullYear","AMPM","Ordinal","UTCHours","UTCMilliseconds","UTCMinutes","UTCMonth","UTCSeconds","UTCMilliseconds"].each(function(p){i.Methods[p.toLowerCase()]=p;
|
42
47
|
});var d=function(r,q,p){if(!p){p="0";}return new Array(q-String(r).length+1).join(p)+r;};i.implement({set:function(r,q){r=r.toLowerCase();var p=i.Methods;
|
@@ -57,9 +62,9 @@ case"c":return q.format("%a %b %d %H:%m:%S %Y");case"d":return d(q.get("date"),2
|
|
57
62
|
case"I":return d((q.get("hr")%12)||12,2);case"j":return d(q.get("dayofyear"),3);case"k":return d(q.get("hr"),2," ");case"l":return d((q.get("hr")%12)||12,2," ");
|
58
63
|
case"L":return d(q.get("ms"),3);case"m":return d((q.get("mo")+1),2);case"M":return d(q.get("min"),2);case"o":return q.get("ordinal");case"p":return i.getMsg(q.get("ampm"));
|
59
64
|
case"s":return Math.round(q/1000);case"S":return d(q.get("seconds"),2);case"U":return d(q.get("week"),2);case"w":return q.get("day");case"x":return q.format(i.getMsg("shortDate"));
|
60
|
-
case"X":return q.format(i.getMsg("shortTime"));case"y":return q.get("year").toString().substr(2);case"Y":return q.get("year");case"
|
61
|
-
case"Z":return q.get("Timezone");}return r;});},toISOString:function(){return this.format("iso8601");}});i.alias("toJSON","toISOString");
|
62
|
-
i.alias("strftime","format");var k={db:"%Y-%m-%d %H:%M:%S",compact:"%Y%m%dT%H%M%S",iso8601:"%Y-%m-%dT%H:%M:%S%T",rfc822:"%a, %d %b %Y %H:%M:%S %Z","short":"%d %b %H:%M","long":"%B %d, %Y %H:%M"};
|
65
|
+
case"X":return q.format(i.getMsg("shortTime"));case"y":return q.get("year").toString().substr(2);case"Y":return q.get("year");case"T":return q.get("GMTOffset");
|
66
|
+
case"z":return q.get("GMTOffset");case"Z":return q.get("Timezone");}return r;});},toISOString:function(){return this.format("iso8601");}});i.alias("toJSON","toISOString");
|
67
|
+
i.alias("compare","diff");i.alias("strftime","format");var k={db:"%Y-%m-%d %H:%M:%S",compact:"%Y%m%dT%H%M%S",iso8601:"%Y-%m-%dT%H:%M:%S%T",rfc822:"%a, %d %b %Y %H:%M:%S %Z","short":"%d %b %H:%M","long":"%B %d, %Y %H:%M"};
|
63
68
|
var g=[];var e=i.parse;var n=function(s,u,r){var q=-1;var t=i.getMsg(s+"s");switch(typeOf(u)){case"object":q=t[u.get(s)];break;case"number":q=t[u];if(!q){throw new Error("Invalid "+s+" index: "+u);
|
64
69
|
}break;case"string":var p=t.filter(function(v){return this.test(v);},new RegExp("^"+u,"i"));if(!p.length){throw new Error("Invalid "+s+" string");}if(p.length>1){throw new Error("Ambiguous "+s);
|
65
70
|
}q=p[0];}return(r)?t.indexOf(q):q;};i.extend({getMsg:function(q,p){return Locale.get("Date."+q,p);},units:{ms:Function.from(1),second:Function.from(1000),minute:Function.from(60000),hour:Function.from(3600000),day:Function.from(86400000),week:Function.from(608400000),month:function(q,p){var r=new i;
|
@@ -69,7 +74,7 @@ return i.daysInMonth(q!=null?q:r.get("mo"),p!=null?p:r.get("year"))*86400000;},y
|
|
69
74
|
return(s)?(p=t.handler(s)):false;});return p||new i(e(r));},parseDay:function(p,q){return n("day",p,q);},parseMonth:function(q,p){return n("month",q,p);
|
70
75
|
},parseUTC:function(q){var p=new i(q);var r=i.UTC(p.get("year"),p.get("mo"),p.get("date"),p.get("hr"),p.get("min"),p.get("sec"),p.get("ms"));return new i(r);
|
71
76
|
},orderIndex:function(p){return i.getMsg("dateOrder").indexOf(p)+1;},defineFormat:function(p,q){k[p]=q;},defineFormats:function(p){for(var q in p){i.defineFormat(q,p[q]);
|
72
|
-
}},defineParser:function(p){g.push((p.re&&p.handler)?p:l(p));},defineParsers:function(){Array.flatten(arguments).each(i.defineParser);},define2DigitYearStart:function(p){h=p%100;
|
77
|
+
}},parsePatterns:g,defineParser:function(p){g.push((p.re&&p.handler)?p:l(p));},defineParsers:function(){Array.flatten(arguments).each(i.defineParser);},define2DigitYearStart:function(p){h=p%100;
|
73
78
|
m=p-h;}});var m=1900;var h=70;var j=function(p){return new RegExp("(?:"+i.getMsg(p).map(function(q){return q.substr(0,3);}).join("|")+")[a-z]*");};var a=function(p){switch(p){case"x":return((i.orderIndex("month")==1)?"%m[-./]%d":"%d[-./]%m")+"([-./]%y)?";
|
74
79
|
case"X":return"%H([.:]%M)?([.:]%S([.:]%s)?)? ?%p? ?%T?";}return null;};var o={d:/[0-2]?[0-9]|3[01]/,H:/[01]?[0-9]|2[0-3]/,I:/0?[1-9]|1[0-2]/,M:/[0-5]?\d/,s:/\d+/,o:/[a-z]*/,p:/[ap]\.?m\.?/,y:/\d{2}|\d{4}/,Y:/\d{4}/,T:/Z|[+-]\d{2}(?::?\d{2})?/};
|
75
80
|
o.m=o.I;o.S=o.M;var c;var b=function(p){c=p;o.a=o.A=j("days");o.b=o.B=j("months");g.each(function(r,q){if(r.format){g[q]=l(r.format);}});};var l=function(r){if(!c){return{format:r};
|
@@ -100,7 +105,27 @@ var a=function(f,g){var e=f;for(key in g){e=e.replace(g[key],key);}return e;};va
|
|
100
105
|
reg=new RegExp(g,"gi");return reg;};String.implement({standardize:function(){return a(this,c);},repeat:function(e){return new Array(e+1).join(this);},pad:function(e,h,g){if(this.length>=e){return this;
|
101
106
|
}var f=(h==null?" ":""+h).repeat(e-this.length).substr(0,e-this.length);if(!g||g=="right"){return this+f;}if(g=="left"){return f+this;}return f.substr(0,(f.length/2).floor())+this+f.substr(0,(f.length/2).ceil());
|
102
107
|
},getTags:function(e,f){return this.match(d(e,f))||[];},stripTags:function(e,f){return this.replace(d(e,f),"");},tidy:function(){return a(this,b);}});})();
|
103
|
-
(function(){if(
|
108
|
+
String.implement({parseQueryString:function(d,a){if(d==null){d=true;}if(a==null){a=true;}var c=this.split(/[&;]/),b={};if(!c.length){return b;}c.each(function(i){var e=i.indexOf("="),g=i.substr(e+1),f=e<0?[""]:i.substr(0,e).match(/([^\]\[]+|(\B)(?=\]))/g),h=b;
|
109
|
+
if(a){g=decodeURIComponent(g);}f.each(function(k,j){if(d){k=decodeURIComponent(k);}var l=h[k];if(j<f.length-1){h=h[k]=l||{};}else{if(typeOf(l)=="array"){l.push(g);
|
110
|
+
}else{h[k]=l!=null?[l,g]:g;}}});});return b;},cleanQueryString:function(a){return this.split("&").filter(function(e){var b=e.indexOf("="),c=b<0?"":e.substr(0,b),d=e.substr(b+1);
|
111
|
+
return a?a.call(null,c,d):(d||d===0);}).join("&");}});(function(){var b=function(){return this.get("value");};var a=this.URI=new Class({Implements:Options,options:{},regex:/^(?:(\w+):)?(?:\/\/(?:(?:([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?)?(\.\.?$|(?:[^?#\/]*\/)*)([^?#]*)(?:\?([^#]*))?(?:#(.*))?/,parts:["scheme","user","password","host","port","directory","file","query","fragment"],schemes:{http:80,https:443,ftp:21,rtsp:554,mms:1755,file:0},initialize:function(d,c){this.setOptions(c);
|
112
|
+
var e=this.options.base||a.base;if(!d){d=e;}if(d&&d.parsed){this.parsed=Object.clone(d.parsed);}else{this.set("value",d.href||d.toString(),e?new a(e):false);
|
113
|
+
}},parse:function(e,d){var c=e.match(this.regex);if(!c){return false;}c.shift();return this.merge(c.associate(this.parts),d);},merge:function(d,c){if((!d||!d.scheme)&&(!c||!c.scheme)){return false;
|
114
|
+
}if(c){this.parts.every(function(e){if(d[e]){return false;}d[e]=c[e]||"";return true;});}d.port=d.port||this.schemes[d.scheme.toLowerCase()];d.directory=d.directory?this.parseDirectory(d.directory,c?c.directory:""):"/";
|
115
|
+
return d;},parseDirectory:function(d,e){d=(d.substr(0,1)=="/"?"":(e||"/"))+d;if(!d.test(a.regs.directoryDot)){return d;}var c=[];d.replace(a.regs.endSlash,"").split("/").each(function(f){if(f==".."&&c.length>0){c.pop();
|
116
|
+
}else{if(f!="."){c.push(f);}}});return c.join("/")+"/";},combine:function(c){return c.value||c.scheme+"://"+(c.user?c.user+(c.password?":"+c.password:"")+"@":"")+(c.host||"")+(c.port&&c.port!=this.schemes[c.scheme]?":"+c.port:"")+(c.directory||"/")+(c.file||"")+(c.query?"?"+c.query:"")+(c.fragment?"#"+c.fragment:"");
|
117
|
+
},set:function(d,f,e){if(d=="value"){var c=f.match(a.regs.scheme);if(c){c=c[1];}if(c&&this.schemes[c.toLowerCase()]==null){this.parsed={scheme:c,value:f};
|
118
|
+
}else{this.parsed=this.parse(f,(e||this).parsed)||(c?{scheme:c,value:f}:{value:f});}}else{if(d=="data"){this.setData(f);}else{this.parsed[d]=f;}}return this;
|
119
|
+
},get:function(c,d){switch(c){case"value":return this.combine(this.parsed,d?d.parsed:false);case"data":return this.getData();}return this.parsed[c]||"";
|
120
|
+
},go:function(){document.location.href=this.toString();},toURI:function(){return this;},getData:function(e,d){var c=this.get(d||"query");if(!(c||c===0)){return e?null:{};
|
121
|
+
}var f=c.parseQueryString();return e?f[e]:f;},setData:function(c,f,d){if(typeof c=="string"){var e=this.getData();e[arguments[0]]=arguments[1];c=e;}else{if(f){c=Object.merge(this.getData(),c);
|
122
|
+
}}return this.set(d||"query",Object.toQueryString(c));},clearData:function(c){return this.set(c||"query","");},toString:b,valueOf:b});a.regs={endSlash:/\/$/,scheme:/^(\w+):/,directoryDot:/\.\/|\.$/};
|
123
|
+
a.base=new a(Array.from(document.getElements("base[href]",true)).getLast(),{base:document.location});String.implement({toURI:function(c){return new a(this,c);
|
124
|
+
}});})();URI=Class.refactor(URI,{combine:function(f,e){if(!e||f.scheme!=e.scheme||f.host!=e.host||f.port!=e.port){return this.previous.apply(this,arguments);
|
125
|
+
}var a=f.file+(f.query?"?"+f.query:"")+(f.fragment?"#"+f.fragment:"");if(!e.directory){return(f.directory||(f.file?"":"./"))+a;}var d=e.directory.split("/"),c=f.directory.split("/"),g="",h;
|
126
|
+
var b=0;for(h=0;h<d.length&&h<c.length&&d[h]==c[h];h++){}for(b=0;b<d.length-h-1;b++){g+="../";}for(b=h;b<c.length-1;b++){g+=c[b]+"/";}return(g||(f.file?"":"./"))+a;
|
127
|
+
},toAbsolute:function(a){a=new URI(a);if(a){a.set("directory","").set("file","");}return this.toRelative(a);},toRelative:function(a){return this.get("value",new URI(a));
|
128
|
+
}});(function(){if(this.Hash){return;}var a=this.Hash=new Type("Hash",function(b){if(typeOf(b)=="hash"){b=Object.clone(b.getClean());}for(var c in b){this[c]=b[c];
|
104
129
|
}return this;});this.$H=function(b){return new a(b);};a.implement({forEach:function(b,c){Object.forEach(this,b,c);},getClean:function(){var c={};for(var b in this){if(this.hasOwnProperty(b)){c[b]=this[b];
|
105
130
|
}}return c;},getLength:function(){var c=0;for(var b in this){if(this.hasOwnProperty(b)){c++;}}return c;}});a.alias("each","forEach");a.implement({has:Object.prototype.hasOwnProperty,keyOf:function(b){return Object.keyOf(this,b);
|
106
131
|
},hasValue:function(b){return Object.contains(this,b);},extend:function(b){a.each(b||{},function(d,c){a.set(this,c,d);},this);return this;},combine:function(b){a.each(b||{},function(d,c){a.include(this,c,d);
|
@@ -138,28 +163,40 @@ if(Slick.match(h,d.value)&&(!a||a.call(g,f))){if(g){e.call(g,f,g);}return;}}},{m
|
|
138
163
|
var c=h.apply(this);f();e.each(function(j){j();});return c;},expose:function(){if(this.getStyle("display")!="none"){return function(){};}var c=this.style.cssText;
|
139
164
|
this.setStyles({display:"block",position:"absolute",visibility:"hidden"});return function(){this.style.cssText=c;}.bind(this);},getDimensions:function(c){c=Object.merge({computeSize:false},c);
|
140
165
|
var h={x:0,y:0};var g=function(i,e){return(e.computeSize)?i.getComputedSize(e):i.getSize();};var d=this.getParent("body");if(d&&this.getStyle("display")=="none"){h=this.measure(function(){return g(this,c);
|
141
|
-
});}else{if(d){try{h=g(this,c);}catch(f){}}}return Object.append(h,(h.x||h.x===0)?{width:h.x,height:h.y}:{x:h.width,y:h.height});},getComputedSize:function(c){c
|
142
|
-
var e={},d={width:0,height:0};if(c.mode=="vertical"){delete d.width;
|
143
|
-
|
144
|
-
d["total"+h]=e[f];g.each(function(j){var i=b(j,e);d["computed"+j.capitalize()]=i;
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
}
|
150
|
-
|
151
|
-
}
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
166
|
+
});}else{if(d){try{h=g(this,c);}catch(f){}}}return Object.append(h,(h.x||h.x===0)?{width:h.x,height:h.y}:{x:h.width,y:h.height});},getComputedSize:function(c){if(c&&c.plains){c.planes=c.plains;
|
167
|
+
}c=Object.merge({styles:["padding","border"],planes:{height:["top","bottom"],width:["left","right"]},mode:"both"},c);var e={},d={width:0,height:0};if(c.mode=="vertical"){delete d.width;
|
168
|
+
delete c.planes.width;}else{if(c.mode=="horizontal"){delete d.height;delete c.planes.height;}}a(c.styles,c.planes).each(function(f){e[f]=this.getStyle(f).toInt();
|
169
|
+
},this);Object.each(c.planes,function(g,f){var h=f.capitalize();e[f]=this.getStyle(f).toInt();d["total"+h]=e[f];g.each(function(j){var i=b(j,e);d["computed"+j.capitalize()]=i;
|
170
|
+
d["total"+h]+=i;});},this);return Object.append(d,e);}});})();(function(){var a=false,b=false;var c=function(){var d=new Element("div").setStyles({position:"fixed",top:0,right:0}).inject(document.body);
|
171
|
+
a=(d.offsetTop===0);d.dispose();b=true;};Element.implement({pin:function(h,f){if(!b){c();}if(this.getStyle("display")=="none"){return this;}var j,k=window.getScroll();
|
172
|
+
if(h!==false){j=this.getPosition(a?document.body:this.getOffsetParent());if(!this.retrieve("pin:_pinned")){var g={top:j.y-k.y,left:j.x-k.x};if(a&&!f){this.setStyle("position","fixed").setStyles(g);
|
173
|
+
}else{var l=this.getOffsetParent(),i=this.getPosition(l),m=this.getStyles("left","top");if(l&&m.left=="auto"||m.top=="auto"){this.setPosition(i);}if(this.getStyle("position")=="static"){this.setStyle("position","absolute");
|
174
|
+
}i={x:m.left.toInt()-k.x,y:m.top.toInt()-k.y};var e=function(){if(!this.retrieve("pin:_pinned")){return;}var n=window.getScroll();this.setStyles({left:i.x+n.x,top:i.y+n.y});
|
175
|
+
}.bind(this);this.store("pin:_scrollFixer",e);window.addEvent("scroll",e);}this.store("pin:_pinned",true);}}else{if(!this.retrieve("pin:_pinned")){return this;
|
176
|
+
}var l=this.getParent(),d=(l.getComputedStyle("position")!="static"?l:l.getOffsetParent());j=this.getPosition(d);this.store("pin:_pinned",false);var e=this.retrieve("pin:_scrollFixer");
|
177
|
+
if(!e){this.setStyles({position:"absolute",top:j.y+k.y,left:j.x+k.x});}else{this.store("pin:_scrollFixer",null);window.removeEvent("scroll",e);}this.removeClass("isPinned");
|
178
|
+
}return this;},unpin:function(){return this.pin(false);},togglepin:function(){return this.pin(!this.retrieve("pin:_pinned"));}});})();(function(){var a=Element.prototype.position;
|
179
|
+
Element.implement({position:function(g){if(g&&(g.x!=null||g.y!=null)){return a?a.apply(this,arguments):this;}Object.each(g||{},function(u,t){if(u==null){delete g[t];
|
180
|
+
}});g=Object.merge({relativeTo:document.body,position:{x:"center",y:"center"},offset:{x:0,y:0}},g);var r={x:0,y:0},e=false;var c=this.measure(function(){return document.id(this.getOffsetParent());
|
181
|
+
});if(c&&c!=this.getDocument().body){r=c.measure(function(){return this.getPosition();});e=c!=document.id(g.relativeTo);g.offset.x=g.offset.x-r.x;g.offset.y=g.offset.y-r.y;
|
182
|
+
}var s=function(t){if(typeOf(t)!="string"){return t;}t=t.toLowerCase();var u={};if(t.test("left")){u.x="left";}else{if(t.test("right")){u.x="right";}else{u.x="center";
|
183
|
+
}}if(t.test("upper")||t.test("top")){u.y="top";}else{if(t.test("bottom")){u.y="bottom";}else{u.y="center";}}return u;};g.edge=s(g.edge);g.position=s(g.position);
|
184
|
+
if(!g.edge){if(g.position.x=="center"&&g.position.y=="center"){g.edge={x:"center",y:"center"};}else{g.edge={x:"left",y:"top"};}}this.setStyle("position","absolute");
|
185
|
+
var f=document.id(g.relativeTo)||document.body,d=f==document.body?window.getScroll():f.getPosition(),l=d.y,h=d.x;var n=this.getDimensions({computeSize:true,styles:["padding","border","margin"]});
|
186
|
+
var j={},o=g.offset.y,q=g.offset.x,k=window.getSize();switch(g.position.x){case"left":j.x=h+q;break;case"right":j.x=h+q+f.offsetWidth;break;default:j.x=h+((f==document.body?k.x:f.offsetWidth)/2)+q;
|
187
|
+
break;}switch(g.position.y){case"top":j.y=l+o;break;case"bottom":j.y=l+o+f.offsetHeight;break;default:j.y=l+((f==document.body?k.y:f.offsetHeight)/2)+o;
|
188
|
+
break;}if(g.edge){var b={};switch(g.edge.x){case"left":b.x=0;break;case"right":b.x=-n.x-n.computedRight-n.computedLeft;break;default:b.x=-(n.totalWidth/2);
|
189
|
+
break;}switch(g.edge.y){case"top":b.y=0;break;case"bottom":b.y=-n.y-n.computedTop-n.computedBottom;break;default:b.y=-(n.totalHeight/2);break;}j.x+=b.x;
|
190
|
+
j.y+=b.y;}j={left:((j.x>=0||e||g.allowNegative)?j.x:0).toInt(),top:((j.y>=0||e||g.allowNegative)?j.y:0).toInt()};var i={left:"x",top:"y"};["minimum","maximum"].each(function(t){["left","top"].each(function(u){var v=g[t]?g[t][i[u]]:null;
|
191
|
+
if(v!=null&&((t=="minimum")?j[u]<v:j[u]>v)){j[u]=v;}});});if(f.getStyle("position")=="fixed"||g.relFixedPosition){var m=window.getScroll();j.top+=m.y;j.left+=m.x;
|
192
|
+
}if(g.ignoreScroll){var p=f.getScroll();j.top-=p.y;j.left-=p.x;}if(g.ignoreMargins){j.left+=(g.edge.x=="right"?n["margin-right"]:g.edge.x=="center"?-n["margin-left"]+((n["margin-right"]+n["margin-left"])/2):-n["margin-left"]);
|
161
193
|
j.top+=(g.edge.y=="bottom"?n["margin-bottom"]:g.edge.y=="center"?-n["margin-top"]+((n["margin-bottom"]+n["margin-top"])/2):-n["margin-top"]);}j.left=Math.ceil(j.left);
|
162
|
-
j.top=Math.ceil(j.top);if(g.returnPos){return j;}else{this.setStyles(j);}return this;}});})();
|
194
|
+
j.top=Math.ceil(j.top);if(g.returnPos){return j;}else{this.setStyles(j);}return this;}});})();Element.implement({isDisplayed:function(){return this.getStyle("display")!="none";
|
195
|
+
},isVisible:function(){var a=this.offsetWidth,b=this.offsetHeight;return(a==0&&b==0)?false:(a>0&&b>0)?true:this.style.display!="none";},toggle:function(){return this[this.isDisplayed()?"hide":"show"]();
|
196
|
+
},hide:function(){var b;try{b=this.getStyle("display");}catch(a){}if(b=="none"){return this;}return this.store("element:_originalDisplay",b||"").setStyle("display","none");
|
197
|
+
},show:function(a){if(!a&&this.isDisplayed()){return this;}a=a||this.retrieve("element:_originalDisplay")||"block";return this.setStyle("display",(a=="none")?"block":a);
|
198
|
+
},swapClass:function(a,b){return this.removeClass(a).addClass(b);}});Document.implement({clearSelection:function(){if(document.selection&&document.selection.empty){document.selection.empty();
|
199
|
+
}else{if(window.getSelection){var a=window.getSelection();if(a&&a.removeAllRanges){a.removeAllRanges();}}}}});var IframeShim=new Class({Implements:[Options,Events,Class.Occlude],options:{className:"iframeShim",src:'javascript:false;document.write("");',display:false,zIndex:null,margin:0,offset:{x:0,y:0},browsers:((Browser.ie&&Browser.version==6)||(Browser.firefox&&Browser.version<3&&Browser.Platform.mac))},property:"IframeShim",initialize:function(b,a){this.element=document.id(b);
|
163
200
|
if(this.occlude()){return this.occluded;}this.setOptions(a);this.makeShim();return this;},makeShim:function(){if(this.options.browsers){var c=this.element.getStyle("zIndex").toInt();
|
164
201
|
if(!c){c=1;var b=this.element.getStyle("position");if(b=="static"||!b){this.element.setStyle("position","relative");}this.element.setStyle("zIndex",c);
|
165
202
|
}c=((this.options.zIndex!=null||this.options.zIndex===0)&&c>this.options.zIndex)?this.options.zIndex:c-1;if(c<0){c=1;}this.shim=new Element("iframe",{src:this.options.src,scrolling:"no",frameborder:0,styles:{zIndex:c,position:"absolute",border:"none",filter:"progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)"},"class":this.options.className}).store("IframeShim",this);
|
@@ -199,11 +236,7 @@ if(c){c.chain(this._send.pass(b,this)).show();}else{this._send(b);}return this;}
|
|
199
236
|
if(this.options.useSpinner&&b){b.set("spinner",this.options.spinnerOptions);var a=this.spinner=b.get("spinner");["complete","exception","cancel"].each(function(c){this.addEvent(c,a.hide.bind(a));
|
200
237
|
},this);}}return this.spinner;}});Element.Properties.spinner={set:function(a){var b=this.retrieve("spinner");if(b){b.destroy();}return this.eliminate("spinner").store("spinner:options",a);
|
201
238
|
},get:function(){var a=this.retrieve("spinner");if(!a){a=new Spinner(this,this.retrieve("spinner:options"));this.store("spinner",a);}return a;}};Element.implement({spin:function(a){if(a){this.set("spinner",a);
|
202
|
-
}this.get("spinner").show();return this;},unspin:function(){this.get("spinner").hide();return this;}});
|
203
|
-
}if(a==null){a=true;}var c=this.split(/[&;]/),b={};if(!c.length){return b;}c.each(function(i){var e=i.indexOf("="),g=i.substr(e+1),f=e<0?[""]:i.substr(0,e).match(/([^\]\[]+|(\B)(?=\]))/g),h=b;
|
204
|
-
if(a){g=decodeURIComponent(g);}f.each(function(k,j){if(d){k=decodeURIComponent(k);}var l=h[k];if(j<f.length-1){h=h[k]=l||{};}else{if(typeOf(l)=="array"){l.push(g);
|
205
|
-
}else{h[k]=l!=null?[l,g]:g;}}});});return b;},cleanQueryString:function(a){return this.split("&").filter(function(e){var b=e.indexOf("="),c=b<0?"":e.substr(0,b),d=e.substr(b+1);
|
206
|
-
return a?a.call(null,c,d):(d||d===0);}).join("&");}});if(!window.Form){window.Form={};}(function(){Form.Request=new Class({Binds:["onSubmit","onFormValidate"],Implements:[Options,Events,Class.Occlude],options:{requestOptions:{evalScripts:true,useSpinner:true,emulation:false,link:"ignore"},sendButtonClicked:true,extraData:{},resetForm:true},property:"form.request",initialize:function(b,c,a){this.element=document.id(b);
|
239
|
+
}this.get("spinner").show();return this;},unspin:function(){this.get("spinner").hide();return this;}});if(!window.Form){window.Form={};}(function(){Form.Request=new Class({Binds:["onSubmit","onFormValidate"],Implements:[Options,Events,Class.Occlude],options:{requestOptions:{evalScripts:true,useSpinner:true,emulation:false,link:"ignore"},sendButtonClicked:true,extraData:{},resetForm:true},property:"form.request",initialize:function(b,c,a){this.element=document.id(b);
|
207
240
|
if(this.occlude()){return this.occluded;}this.update=document.id(c);this.setOptions(a);this.makeRequest();if(this.options.resetForm){this.request.addEvent("success",function(){Function.attempt(function(){this.element.reset();
|
208
241
|
}.bind(this));if(window.OverText){OverText.update();}}.bind(this));}this.attach();},toElement:function(){return this.element;},makeRequest:function(){this.request=new Request.HTML(Object.merge({update:this.update,emulation:false,spinnerTarget:this.element,method:this.element.get("method")||"post"},this.options.requestOptions)).addEvents({success:function(b,d,c,a){["complete","success"].each(function(e){this.fireEvent(e,[this.update,b,d,c,a]);
|
209
242
|
},this);}.bind(this),failure:function(){this.fireEvent("complete",arguments).fireEvent("failure",arguments);}.bind(this),exception:function(){this.fireEvent("failure",arguments);
|
@@ -220,7 +253,61 @@ var c=a.update||a.updateId;var b=this.retrieve("form.request");if(c){if(b){b.upd
|
|
220
253
|
}this.store("form.request:options",a.options);}return this;},get:function(){var a=Array.link(arguments,{options:Type.isObject,update:Type.isElement,updateId:Type.isString});
|
221
254
|
var b=a.update||a.updateId;if(a.options||b||!this.retrieve("form.request")){if(a.options||!this.retrieve("form.request:options")){this.set("form.request",a.options);
|
222
255
|
}if(b){this.set("form.request",b);}this.store("form.request",new Form.Request(this,this.retrieve("form.request:update"),this.retrieve("form.request:options")));
|
223
|
-
}return this.retrieve("form.request");}};Element.implement({formUpdate:function(b,a){this.get("formRequest",b,a).send();return this;}});})();
|
256
|
+
}return this.retrieve("form.request");}};Element.implement({formUpdate:function(b,a){this.get("formRequest",b,a).send();return this;}});})();var Drag=new Class({Implements:[Events,Options],options:{snap:6,unit:"px",grid:false,style:true,limit:false,handle:false,invert:false,preventDefault:false,stopPropagation:false,modifiers:{x:"left",y:"top"}},initialize:function(){var b=Array.link(arguments,{options:Type.isObject,element:function(c){return c!=null;
|
257
|
+
}});this.element=document.id(b.element);this.document=this.element.getDocument();this.setOptions(b.options||{});var a=typeOf(this.options.handle);this.handles=((a=="array"||a=="collection")?$$(this.options.handle):document.id(this.options.handle))||this.element;
|
258
|
+
this.mouse={now:{},pos:{}};this.value={start:{},now:{}};this.selection=(Browser.ie)?"selectstart":"mousedown";if(Browser.ie&&!Drag.ondragstartFixed){document.ondragstart=Function.from(false);
|
259
|
+
Drag.ondragstartFixed=true;}this.bound={start:this.start.bind(this),check:this.check.bind(this),drag:this.drag.bind(this),stop:this.stop.bind(this),cancel:this.cancel.bind(this),eventStop:Function.from(false)};
|
260
|
+
this.attach();},attach:function(){this.handles.addEvent("mousedown",this.bound.start);return this;},detach:function(){this.handles.removeEvent("mousedown",this.bound.start);
|
261
|
+
return this;},start:function(a){var k=this.options;if(a.rightClick){return;}if(k.preventDefault){a.preventDefault();}if(k.stopPropagation){a.stopPropagation();
|
262
|
+
}this.mouse.start=a.page;this.fireEvent("beforeStart",this.element);var c=k.limit;this.limit={x:[],y:[]};var j=this.element.getStyles("left","right","top","bottom");
|
263
|
+
this._invert={x:k.modifiers.x=="left"&&j.left=="auto"&&!isNaN(j.right.toInt())&&(k.modifiers.x="right"),y:k.modifiers.y=="top"&&j.top=="auto"&&!isNaN(j.bottom.toInt())&&(k.modifiers.y="bottom")};
|
264
|
+
var e,g;for(e in k.modifiers){if(!k.modifiers[e]){continue;}var b=this.element.getStyle(k.modifiers[e]);if(b&&!b.match(/px$/)){if(!g){g=this.element.getCoordinates(this.element.getOffsetParent());
|
265
|
+
}b=g[k.modifiers[e]];}if(k.style){this.value.now[e]=(b||0).toInt();}else{this.value.now[e]=this.element[k.modifiers[e]];}if(k.invert){this.value.now[e]*=-1;
|
266
|
+
}if(this._invert[e]){this.value.now[e]*=-1;}this.mouse.pos[e]=a.page[e]-this.value.now[e];if(c&&c[e]){var d=2;while(d--){var f=c[e][d];if(f||f===0){this.limit[e][d]=(typeof f=="function")?f():f;
|
267
|
+
}}}}if(typeOf(this.options.grid)=="number"){this.options.grid={x:this.options.grid,y:this.options.grid};}var h={mousemove:this.bound.check,mouseup:this.bound.cancel};
|
268
|
+
h[this.selection]=this.bound.eventStop;this.document.addEvents(h);},check:function(a){if(this.options.preventDefault){a.preventDefault();}var b=Math.round(Math.sqrt(Math.pow(a.page.x-this.mouse.start.x,2)+Math.pow(a.page.y-this.mouse.start.y,2)));
|
269
|
+
if(b>this.options.snap){this.cancel();this.document.addEvents({mousemove:this.bound.drag,mouseup:this.bound.stop});this.fireEvent("start",[this.element,a]).fireEvent("snap",this.element);
|
270
|
+
}},drag:function(b){var a=this.options;if(a.preventDefault){b.preventDefault();}this.mouse.now=b.page;for(var c in a.modifiers){if(!a.modifiers[c]){continue;
|
271
|
+
}this.value.now[c]=this.mouse.now[c]-this.mouse.pos[c];if(a.invert){this.value.now[c]*=-1;}if(this._invert[c]){this.value.now[c]*=-1;}if(a.limit&&this.limit[c]){if((this.limit[c][1]||this.limit[c][1]===0)&&(this.value.now[c]>this.limit[c][1])){this.value.now[c]=this.limit[c][1];
|
272
|
+
}else{if((this.limit[c][0]||this.limit[c][0]===0)&&(this.value.now[c]<this.limit[c][0])){this.value.now[c]=this.limit[c][0];}}}if(a.grid[c]){this.value.now[c]-=((this.value.now[c]-(this.limit[c][0]||0))%a.grid[c]);
|
273
|
+
}if(a.style){this.element.setStyle(a.modifiers[c],this.value.now[c]+a.unit);}else{this.element[a.modifiers[c]]=this.value.now[c];}}this.fireEvent("drag",[this.element,b]);
|
274
|
+
},cancel:function(a){this.document.removeEvents({mousemove:this.bound.check,mouseup:this.bound.cancel});if(a){this.document.removeEvent(this.selection,this.bound.eventStop);
|
275
|
+
this.fireEvent("cancel",this.element);}},stop:function(b){var a={mousemove:this.bound.drag,mouseup:this.bound.stop};a[this.selection]=this.bound.eventStop;
|
276
|
+
this.document.removeEvents(a);if(b){this.fireEvent("complete",[this.element,b]);}}});Element.implement({makeResizable:function(a){var b=new Drag(this,Object.merge({modifiers:{x:"width",y:"height"}},a));
|
277
|
+
this.store("resizer",b);return b.addEvent("drag",function(){this.fireEvent("resize",b);}.bind(this));}});Drag.Move=new Class({Extends:Drag,options:{droppables:[],container:false,precalculate:false,includeMargins:true,checkDroppables:true},initialize:function(b,a){this.parent(b,a);
|
278
|
+
b=this.element;this.droppables=$$(this.options.droppables);this.container=document.id(this.options.container);if(this.container&&typeOf(this.container)!="element"){this.container=document.id(this.container.getDocument().body);
|
279
|
+
}if(this.options.style){if(this.options.modifiers.x=="left"&&this.options.modifiers.y=="top"){var e,c=b.getOffsetParent();var d=b.getStyles("left","top");
|
280
|
+
if(c&&(d.left=="auto"||d.top=="auto")){b.setPosition(b.getPosition(c));}}if(b.getStyle("position")=="static"){b.setStyle("position","absolute");}}this.addEvent("start",this.checkDroppables,true);
|
281
|
+
this.overed=null;},start:function(a){if(this.container){this.options.limit=this.calculateLimit();}if(this.options.precalculate){this.positions=this.droppables.map(function(b){return b.getCoordinates();
|
282
|
+
});}this.parent(a);},calculateLimit:function(){var j=this.element,e=this.container,d=document.id(j.getOffsetParent())||document.body,h=e.getCoordinates(d),c={},b={},k={},g={},m={};
|
283
|
+
["top","right","bottom","left"].each(function(q){c[q]=j.getStyle("margin-"+q).toInt();b[q]=j.getStyle("border-"+q).toInt();k[q]=e.getStyle("margin-"+q).toInt();
|
284
|
+
g[q]=e.getStyle("border-"+q).toInt();m[q]=d.getStyle("padding-"+q).toInt();},this);var f=j.offsetWidth+c.left+c.right,p=j.offsetHeight+c.top+c.bottom,i=0,l=0,o=h.right-g.right-f,a=h.bottom-g.bottom-p;
|
285
|
+
if(this.options.includeMargins){i+=c.left;l+=c.top;}else{o+=c.right;a+=c.bottom;}if(j.getStyle("position")=="relative"){var n=j.getCoordinates(d);n.left-=j.getStyle("left").toInt();
|
286
|
+
n.top-=j.getStyle("top").toInt();i-=n.left;l-=n.top;if(e.getStyle("position")!="relative"){i+=g.left;l+=g.top;}o+=c.left-n.left;a+=c.top-n.top;if(e!=d){i+=k.left+m.left;
|
287
|
+
l+=((Browser.ie6||Browser.ie7)?0:k.top)+m.top;}}else{i-=c.left;l-=c.top;if(e!=d){i+=h.left+g.left;l+=h.top+g.top;}}return{x:[i,o],y:[l,a]};},checkDroppables:function(){var a=this.droppables.filter(function(d,c){d=this.positions?this.positions[c]:d.getCoordinates();
|
288
|
+
var b=this.mouse.now;return(b.x>d.left&&b.x<d.right&&b.y<d.bottom&&b.y>d.top);},this).getLast();if(this.overed!=a){if(this.overed){this.fireEvent("leave",[this.element,this.overed]);
|
289
|
+
}if(a){this.fireEvent("enter",[this.element,a]);}this.overed=a;}},drag:function(a){this.parent(a);if(this.options.checkDroppables&&this.droppables.length){this.checkDroppables();
|
290
|
+
}},stop:function(a){this.checkDroppables();this.fireEvent("drop",[this.element,this.overed,a]);this.overed=null;return this.parent(a);}});Element.implement({makeDraggable:function(a){var b=new Drag.Move(this,a);
|
291
|
+
this.store("dragger",b);return b;}});var Sortables=new Class({Implements:[Events,Options],options:{snap:4,opacity:1,clone:false,revert:false,handle:false,constrain:false,preventDefault:false},initialize:function(a,b){this.setOptions(b);
|
292
|
+
this.elements=[];this.lists=[];this.idle=true;this.addLists($$(document.id(a)||a));if(!this.options.clone){this.options.revert=false;}if(this.options.revert){this.effect=new Fx.Morph(null,Object.merge({duration:250,link:"cancel"},this.options.revert));
|
293
|
+
}},attach:function(){this.addLists(this.lists);return this;},detach:function(){this.lists=this.removeLists(this.lists);return this;},addItems:function(){Array.flatten(arguments).each(function(a){this.elements.push(a);
|
294
|
+
var b=a.retrieve("sortables:start",function(c){this.start.call(this,c,a);}.bind(this));(this.options.handle?a.getElement(this.options.handle)||a:a).addEvent("mousedown",b);
|
295
|
+
},this);return this;},addLists:function(){Array.flatten(arguments).each(function(a){this.lists.push(a);this.addItems(a.getChildren());},this);return this;
|
296
|
+
},removeItems:function(){return $$(Array.flatten(arguments).map(function(a){this.elements.erase(a);var b=a.retrieve("sortables:start");(this.options.handle?a.getElement(this.options.handle)||a:a).removeEvent("mousedown",b);
|
297
|
+
return a;},this));},removeLists:function(){return $$(Array.flatten(arguments).map(function(a){this.lists.erase(a);this.removeItems(a.getChildren());return a;
|
298
|
+
},this));},getClone:function(b,a){if(!this.options.clone){return new Element(a.tagName).inject(document.body);}if(typeOf(this.options.clone)=="function"){return this.options.clone.call(this,b,a,this.list);
|
299
|
+
}var c=a.clone(true).setStyles({margin:0,position:"absolute",visibility:"hidden",width:a.getStyle("width")});if(c.get("html").test("radio")){c.getElements("input[type=radio]").each(function(d,e){d.set("name","clone_"+e);
|
300
|
+
if(d.get("checked")){a.getElements("input[type=radio]")[e].set("checked",true);}});}return c.inject(this.list).setPosition(a.getPosition(a.getOffsetParent()));
|
301
|
+
},getDroppables:function(){var a=this.list.getChildren().erase(this.clone).erase(this.element);if(!this.options.constrain){a.append(this.lists).erase(this.list);
|
302
|
+
}return a;},insert:function(c,b){var a="inside";if(this.lists.contains(b)){this.list=b;this.drag.droppables=this.getDroppables();}else{a=this.element.getAllPrevious().contains(b)?"before":"after";
|
303
|
+
}this.element.inject(b,a);this.fireEvent("sort",[this.element,this.clone]);},start:function(b,a){if(!this.idle||b.rightClick||["button","input"].contains(b.target.get("tag"))){return;
|
304
|
+
}this.idle=false;this.element=a;this.opacity=a.get("opacity");this.list=a.getParent();this.clone=this.getClone(b,a);this.drag=new Drag.Move(this.clone,{preventDefault:this.options.preventDefault,snap:this.options.snap,container:this.options.constrain&&this.element.getParent(),droppables:this.getDroppables(),onSnap:function(){b.stop();
|
305
|
+
this.clone.setStyle("visibility","visible");this.element.set("opacity",this.options.opacity||0);this.fireEvent("start",[this.element,this.clone]);}.bind(this),onEnter:this.insert.bind(this),onCancel:this.reset.bind(this),onComplete:this.end.bind(this)});
|
306
|
+
this.clone.inject(this.element,"before");this.drag.start(b);},end:function(){this.drag.detach();this.element.set("opacity",this.opacity);if(this.effect){var a=this.element.getStyles("width","height");
|
307
|
+
var b=this.clone.computePosition(this.element.getPosition(this.clone.getOffsetParent()));this.effect.element=this.clone;this.effect.start({top:b.top,left:b.left,width:a.width,height:a.height,opacity:0.25}).chain(this.reset.bind(this));
|
308
|
+
}else{this.reset();}},reset:function(){this.idle=true;this.clone.destroy();this.fireEvent("complete",this.element);},serialize:function(){var c=Array.link(arguments,{modifier:Type.isFunction,index:function(d){return d!=null;
|
309
|
+
}});var b=this.lists.map(function(d){return d.getChildren().map(c.modifier||function(e){return e.get("id");},this);},this);var a=c.index;if(this.lists.length==1){a=0;
|
310
|
+
}return(a||a===0)&&a>=0&&a<this.lists.length?b[a]:b;}});Request.implement({options:{initialDelay:5000,delay:5000,limit:60000},startTimer:function(b){var a=function(){if(!this.running){this.send({data:b});
|
224
311
|
}};this.lastDelay=this.options.initialDelay;this.timer=a.delay(this.lastDelay,this);this.completeCheck=function(c){clearTimeout(this.timer);this.lastDelay=(c)?this.options.delay:(this.lastDelay+this.options.delay).min(this.options.limit);
|
225
312
|
this.timer=a.delay(this.lastDelay,this);};return this.addEvent("complete",this.completeCheck);},stopTimer:function(){clearTimeout(this.timer);return this.removeEvent("complete",this.completeCheck);
|
226
313
|
}});var Asset={javascript:function(d,b){b=Object.append({document:document},b);if(b.onLoad){b.onload=b.onLoad;delete b.onLoad;}var a=new Element("script",{src:d,type:"text/javascript"});
|
@@ -285,4 +372,5 @@ this.timer=this.hide.delay(this.options.hideDelay,this,b);this.fireForParent(c,b
|
|
285
372
|
for(var i in d){h[d[i]]=f.page[i]+this.options.offset[i];if(h[d[i]]<0){e[i]=true;}if((h[d[i]]+g[i]-b[i])>c[i]-this.options.windowPadding[i]){h[d[i]]=f.page[i]-this.options.offset[i]-g[i];
|
286
373
|
e[i+"2"]=true;}}this.fireEvent("bound",e);this.tip.setStyles(h);},fill:function(b,c){if(typeof c=="string"){b.set("html",c);}else{b.adopt(c);}},show:function(b){if(!this.tip){document.id(this);
|
287
374
|
}if(!this.tip.getParent()){this.tip.inject(document.body);}this.fireEvent("show",[this.tip,b]);},hide:function(b){if(!this.tip){document.id(this);}this.fireEvent("hide",[this.tip,b]);
|
288
|
-
}});})();
|
375
|
+
}});})();
|
376
|
+
|
@@ -0,0 +1,137 @@
|
|
1
|
+
/*
|
2
|
+
---
|
3
|
+
name: Picker.Attach
|
4
|
+
description: Adds attach and detach methods to the Picker, to attach it to element events
|
5
|
+
authors: Arian Stolwijk
|
6
|
+
requires: [Picker, Core/Element.Event]
|
7
|
+
provides: Picker.Attach
|
8
|
+
...
|
9
|
+
*/
|
10
|
+
|
11
|
+
|
12
|
+
Picker.Attach = new Class({
|
13
|
+
|
14
|
+
Extends: Picker,
|
15
|
+
|
16
|
+
options: {/*
|
17
|
+
onAttachedEvent: function(event){},
|
18
|
+
|
19
|
+
toggleElements: null, // deprecated
|
20
|
+
toggle: null, // When set it deactivate toggling by clicking on the input */
|
21
|
+
showOnInit: false
|
22
|
+
},
|
23
|
+
|
24
|
+
initialize: function(attachTo, options){
|
25
|
+
this.parent(options);
|
26
|
+
|
27
|
+
this.attachedEvents = [];
|
28
|
+
this.attachedElements = [];
|
29
|
+
this.toggles = [];
|
30
|
+
this.inputs = [];
|
31
|
+
|
32
|
+
var documentEvent = function(event){
|
33
|
+
if (this.attachedElements.contains(event.target)) return null;
|
34
|
+
this.close();
|
35
|
+
}.bind(this);
|
36
|
+
var document = this.picker.getDocument().addEvent('click', documentEvent);
|
37
|
+
|
38
|
+
var preventPickerClick = function(event){
|
39
|
+
event.stopPropagation();
|
40
|
+
return false;
|
41
|
+
};
|
42
|
+
this.picker.addEvent('click', preventPickerClick);
|
43
|
+
|
44
|
+
// Support for deprecated toggleElements
|
45
|
+
if (this.options.toggleElements) this.options.toggle = document.getElements(this.options.toggleElements);
|
46
|
+
|
47
|
+
this.attach(attachTo, this.options.toggle);
|
48
|
+
},
|
49
|
+
|
50
|
+
attach: function(attachTo, toggle){
|
51
|
+
if (typeOf(attachTo) == 'string') attachTo = document.id(attachTo);
|
52
|
+
if (typeOf(toggle) == 'string') toggle = document.id(toggle);
|
53
|
+
|
54
|
+
var elements = Array.from(attachTo),
|
55
|
+
toggles = Array.from(toggle),
|
56
|
+
allElements = [].append(elements).combine(toggles),
|
57
|
+
self = this;
|
58
|
+
|
59
|
+
var eventWrapper = function(fn, element){
|
60
|
+
return function(event){
|
61
|
+
if (event.type == 'keydown' && ['tab', 'esc'].contains(event.key) == false) return false;
|
62
|
+
if (event.target.get('tag') == 'a') event.stop();
|
63
|
+
self.fireEvent('attachedEvent', [event, element]);
|
64
|
+
self.position(element);
|
65
|
+
fn();
|
66
|
+
};
|
67
|
+
};
|
68
|
+
|
69
|
+
allElements.each(function(element, i){
|
70
|
+
|
71
|
+
// The events are already attached!
|
72
|
+
if (self.attachedElements.contains(element)) return null;
|
73
|
+
|
74
|
+
var tag = element.get('tag');
|
75
|
+
|
76
|
+
var events = {};
|
77
|
+
if (tag == 'input'){
|
78
|
+
// Fix in order to use togglers only
|
79
|
+
if (!toggles.length){
|
80
|
+
events = {
|
81
|
+
focus: eventWrapper(self.open.bind(self), element),
|
82
|
+
keydown: eventWrapper(self.close.bind(self), element),
|
83
|
+
click: eventWrapper(self.open.bind(self), element)
|
84
|
+
};
|
85
|
+
}
|
86
|
+
self.inputs.push(element);
|
87
|
+
} else {
|
88
|
+
if (toggles.contains(element)){
|
89
|
+
self.toggles.push(element);
|
90
|
+
events.click = eventWrapper(self.toggle.bind(self), element);
|
91
|
+
} else {
|
92
|
+
events.click = eventWrapper(self.open.bind(self), element);
|
93
|
+
}
|
94
|
+
}
|
95
|
+
element.addEvents(events);
|
96
|
+
self.attachedElements.push(element);
|
97
|
+
self.attachedEvents.push(events);
|
98
|
+
});
|
99
|
+
return this;
|
100
|
+
},
|
101
|
+
|
102
|
+
detach: function(attachTo, toggle){
|
103
|
+
if (typeOf(attachTo) == 'string') attachTo = document.id(attachTo);
|
104
|
+
if (typeOf(toggle) == 'string') toggle = document.id(toggle);
|
105
|
+
|
106
|
+
var elements = Array.from(attachTo),
|
107
|
+
toggles = Array.from(toggle),
|
108
|
+
allElements = [].append(elements).combine(toggles),
|
109
|
+
self = this;
|
110
|
+
|
111
|
+
if (!allElements.length) allElements = self.attachedElements;
|
112
|
+
|
113
|
+
allElements.each(function(element){
|
114
|
+
var i = self.attachedElements.indexOf(element);
|
115
|
+
if (i < 0) return null;
|
116
|
+
|
117
|
+
var events = self.attachedEvents[i];
|
118
|
+
element.removeEvents(events);
|
119
|
+
delete self.attachedEvents[i];
|
120
|
+
delete self.attachedElements[i];
|
121
|
+
|
122
|
+
var toggleIndex = self.toggles.indexOf(element);
|
123
|
+
if (toggleIndex != -1) delete self.toggles[toggleIndex];
|
124
|
+
|
125
|
+
var inputIndex = self.inputs.indexOf(element);
|
126
|
+
if (toggleIndex != -1) delete self.inputs[inputIndex];
|
127
|
+
|
128
|
+
});
|
129
|
+
return this;
|
130
|
+
},
|
131
|
+
|
132
|
+
destroy: function(){
|
133
|
+
this.detach();
|
134
|
+
this.parent();
|
135
|
+
}
|
136
|
+
|
137
|
+
});
|
@@ -0,0 +1,576 @@
|
|
1
|
+
/*
|
2
|
+
---
|
3
|
+
name: Picker.Date
|
4
|
+
description: Creates a DatePicker, can be used for picking years/months/days and time, or all of them
|
5
|
+
authors: Arian Stolwijk
|
6
|
+
requires: [Picker, Picker.Attach, Locale.en-US.DatePicker, More/Locale, More/Date]
|
7
|
+
provides: Picker.Date
|
8
|
+
...
|
9
|
+
*/
|
10
|
+
|
11
|
+
|
12
|
+
(function(){
|
13
|
+
|
14
|
+
this.DatePicker = Picker.Date = new Class({
|
15
|
+
|
16
|
+
Extends: Picker.Attach,
|
17
|
+
|
18
|
+
options: {/*
|
19
|
+
onSelect: function(date){},
|
20
|
+
|
21
|
+
minDate: new Date('3/4/2010'), // Date object or a string
|
22
|
+
maxDate: new Date('3/4/2011'), // same as minDate
|
23
|
+
availableDates: {}, //
|
24
|
+
format: null,*/
|
25
|
+
|
26
|
+
timePicker: false,
|
27
|
+
timePickerOnly: false, // deprecated, use onlyView = 'time'
|
28
|
+
timeWheelStep: 1, // 10,15,20,30
|
29
|
+
|
30
|
+
yearPicker: true,
|
31
|
+
yearsPerPage: 20,
|
32
|
+
|
33
|
+
startDay: 1, // Sunday (0) through Saturday (6) - be aware that this may affect your layout, since the days on the right might have a different margin
|
34
|
+
|
35
|
+
startView: 'days', // allowed values: {time, days, months, years}
|
36
|
+
pickOnly: false, // 'years', 'months', 'days', 'time'
|
37
|
+
canAlwaysGoUp: ['months', 'days'],
|
38
|
+
|
39
|
+
// if you like to use your own translations
|
40
|
+
months_abbr: null,
|
41
|
+
days_abbr: null,
|
42
|
+
years_title: function(date, options){
|
43
|
+
var year = date.get('year');
|
44
|
+
return year + '-' + (year + options.yearsPerPage - 1);
|
45
|
+
},
|
46
|
+
months_title: function(date, options){
|
47
|
+
return date.get('year');
|
48
|
+
},
|
49
|
+
days_title: function(date, options){
|
50
|
+
return date.format('%b %Y');
|
51
|
+
},
|
52
|
+
time_title: function(date, options){
|
53
|
+
return (options.pickOnly == 'time') ? Locale.get('DatePicker.select_a_time') : date.format('%d %B, %Y');
|
54
|
+
}
|
55
|
+
},
|
56
|
+
|
57
|
+
initialize: function(attachTo, options){
|
58
|
+
this.parent(attachTo, options);
|
59
|
+
|
60
|
+
this.setOptions(options);
|
61
|
+
var options = this.options;
|
62
|
+
|
63
|
+
// If we only want to use one picker / backwards compatibility
|
64
|
+
['year', 'month', 'day', 'time'].some(function(what){
|
65
|
+
if (options[what + 'PickerOnly']) return options.pickOnly = what;
|
66
|
+
});
|
67
|
+
if (options.pickOnly){
|
68
|
+
options[options.pickOnly + 'Picker'] = true;
|
69
|
+
options.startView = options.pickOnly;
|
70
|
+
}
|
71
|
+
|
72
|
+
// backward compatibility for startView
|
73
|
+
var newViews = ['days', 'months', 'years'];
|
74
|
+
['month', 'year', 'decades'].some(function(what, i){
|
75
|
+
if (options.startView == what){
|
76
|
+
options.startView = newViews[i];
|
77
|
+
return true;
|
78
|
+
}
|
79
|
+
});
|
80
|
+
|
81
|
+
options.canAlwaysGoUp = options.canAlwaysGoUp ? Array.from(options.canAlwaysGoUp) : [];
|
82
|
+
|
83
|
+
// Set the min and max dates as Date objects
|
84
|
+
if (options.minDate){
|
85
|
+
if (!(options.minDate instanceof Date)) options.minDate = Date.parse(options.minDate);
|
86
|
+
options.minDate.clearTime();
|
87
|
+
}
|
88
|
+
if (options.maxDate){
|
89
|
+
if (!(options.maxDate instanceof Date)) options.maxDate = Date.parse(options.maxDate);
|
90
|
+
options.maxDate.clearTime();
|
91
|
+
}
|
92
|
+
|
93
|
+
if (!options.format){
|
94
|
+
options.format = (options.pickOnly != 'time') ? Locale.get('Date.shortDate') : '';
|
95
|
+
if (options.timePicker) options.format = (options.format) + (options.format ? ' ' : '') + Locale.get('Date.shortTime');
|
96
|
+
}
|
97
|
+
|
98
|
+
// This is where we store the selected date
|
99
|
+
this.date = limitDate(new Date(), options.minDate, options.maxDate);
|
100
|
+
|
101
|
+
// Some link or input has fired an event!
|
102
|
+
this.addEvent('attachedEvent', function(event, element){
|
103
|
+
var tag = element.get('tag'), input;
|
104
|
+
if (tag == 'input'){
|
105
|
+
input = element;
|
106
|
+
} else {
|
107
|
+
var index = this.toggles.indexOf(element);
|
108
|
+
if (this.inputs[index]) input = this.inputs[index];
|
109
|
+
}
|
110
|
+
this.date = new Date()
|
111
|
+
if (input){
|
112
|
+
var date = Date.parse(input.get('value'));
|
113
|
+
if (date == null || !date.isValid()){
|
114
|
+
var storeDate = input.retrieve('datepicker:value');
|
115
|
+
if (storeDate) date = Date.parse(storeDate);
|
116
|
+
}
|
117
|
+
if (date != null && date.isValid()) this.date = date;
|
118
|
+
}
|
119
|
+
this.input = input;
|
120
|
+
}.bind(this), true);
|
121
|
+
|
122
|
+
|
123
|
+
// Start rendering the default view.
|
124
|
+
this.currentView = options.startView;
|
125
|
+
this.addEvent('open', function(){
|
126
|
+
var view = this.currentView,
|
127
|
+
cap = view.capitalize();
|
128
|
+
if (this['render' + cap]){
|
129
|
+
this['render' + cap](this.date.clone());
|
130
|
+
this.currentView = view;
|
131
|
+
}
|
132
|
+
}.bind(this));
|
133
|
+
|
134
|
+
},
|
135
|
+
|
136
|
+
// Control the previous and next elements
|
137
|
+
|
138
|
+
constructPicker: function(){
|
139
|
+
this.parent();
|
140
|
+
|
141
|
+
this.previous = new Element('div.previous[html=«]').inject(this.header);
|
142
|
+
this.next = new Element('div.next[html=»]').inject(this.header);
|
143
|
+
},
|
144
|
+
|
145
|
+
hidePrevious: function($next, $show){
|
146
|
+
this[$next ? 'next' : 'previous'].setStyle('display', $show ? 'block' : 'none');
|
147
|
+
return this;
|
148
|
+
},
|
149
|
+
|
150
|
+
showPrevious: function($next){
|
151
|
+
return this.hidePrevious($next, true);
|
152
|
+
},
|
153
|
+
|
154
|
+
setPreviousEvent: function(fn, $next){
|
155
|
+
this[$next ? 'next' : 'previous'].removeEvents('click');
|
156
|
+
if (fn) this[$next ? 'next' : 'previous'].addEvent('click', fn);
|
157
|
+
return this;
|
158
|
+
},
|
159
|
+
|
160
|
+
hideNext: function(){
|
161
|
+
return this.hidePrevious(true);
|
162
|
+
},
|
163
|
+
|
164
|
+
showNext: function(){
|
165
|
+
return this.showPrevious(true);
|
166
|
+
},
|
167
|
+
|
168
|
+
setNextEvent: function(fn){
|
169
|
+
return this.setPreviousEvent(fn, true);
|
170
|
+
},
|
171
|
+
|
172
|
+
// Render the Pickers
|
173
|
+
|
174
|
+
renderYears: function(date, fx){
|
175
|
+
|
176
|
+
var options = this.options;
|
177
|
+
|
178
|
+
// start neatly at interval (eg. 1980 instead of 1987)
|
179
|
+
while (date.get('year') % options.yearsPerPage > 0) date.decrement('year', 1);
|
180
|
+
|
181
|
+
this.setTitle(options.years_title(date, options));
|
182
|
+
|
183
|
+
this.setContent(renderers.years(
|
184
|
+
options,
|
185
|
+
date.clone(),
|
186
|
+
this.date.clone(),
|
187
|
+
function(date){
|
188
|
+
if (options.pickOnly == 'years') this.select(date);
|
189
|
+
else this.renderMonths(date, 'fade');
|
190
|
+
}.bind(this)
|
191
|
+
), fx);
|
192
|
+
|
193
|
+
// Set limits
|
194
|
+
var limitLeft = (options.minDate && date.get('year') <= options.minDate.get('year')),
|
195
|
+
limitRight = (options.maxDate && (date.get('year') + options.yearsPerPage) >= options.maxDate.get('year'));
|
196
|
+
this[(limitLeft ? 'hide' : 'show') + 'Previous']();
|
197
|
+
this[(limitRight ? 'hide' : 'show') + 'Next']();
|
198
|
+
|
199
|
+
this.setPreviousEvent(function(){
|
200
|
+
this.renderYears(date.decrement('year', options.yearsPerPage), 'left');
|
201
|
+
}.bind(this));
|
202
|
+
|
203
|
+
this.setNextEvent(function(){
|
204
|
+
this.renderYears(date.increment('year', options.yearsPerPage), 'right');
|
205
|
+
}.bind(this));
|
206
|
+
|
207
|
+
// We can't go up!
|
208
|
+
this.setTitleEvent(null);
|
209
|
+
},
|
210
|
+
|
211
|
+
renderMonths: function(date, fx){
|
212
|
+
var options = this.options;
|
213
|
+
this.setTitle(options.months_title(date, options));
|
214
|
+
|
215
|
+
this.setContent(renderers.months(
|
216
|
+
options,
|
217
|
+
date.clone(),
|
218
|
+
this.date.clone(),
|
219
|
+
function(date){
|
220
|
+
if (options.pickOnly == 'months') this.select(date);
|
221
|
+
else this.renderDays(date, 'fade');
|
222
|
+
}.bind(this)
|
223
|
+
), fx);
|
224
|
+
|
225
|
+
// Set limits
|
226
|
+
var year = date.get('year'),
|
227
|
+
limitLeft = (options.minDate && year <= options.minDate.get('year')),
|
228
|
+
limitRight = (options.maxDate && year >= options.maxDate.get('year'));
|
229
|
+
this[(limitLeft ? 'hide' : 'show') + 'Previous']();
|
230
|
+
this[(limitRight ? 'hide' : 'show') + 'Next']();
|
231
|
+
|
232
|
+
this.setPreviousEvent(function(){
|
233
|
+
this.renderMonths(date.decrement('year', 1), 'left');
|
234
|
+
}.bind(this));
|
235
|
+
|
236
|
+
this.setNextEvent(function(){
|
237
|
+
this.renderMonths(date.increment('year', 1), 'right');
|
238
|
+
}.bind(this));
|
239
|
+
|
240
|
+
var canGoUp = options.yearPicker && (options.pickOnly != 'months' || options.canAlwaysGoUp.contains('months'));
|
241
|
+
var titleEvent = (canGoUp) ? function(){
|
242
|
+
this.renderYears(date, 'fade');
|
243
|
+
}.bind(this) : null;
|
244
|
+
this.setTitleEvent(titleEvent);
|
245
|
+
},
|
246
|
+
|
247
|
+
renderDays: function(date, fx){
|
248
|
+
var options = this.options;
|
249
|
+
this.setTitle(options.days_title(date, options));
|
250
|
+
|
251
|
+
this.setContent(renderers.days(
|
252
|
+
options,
|
253
|
+
date.clone(),
|
254
|
+
this.date.clone(),
|
255
|
+
function(date){
|
256
|
+
if (options.pickOnly == 'days' || !options.timePicker) this.select(date)
|
257
|
+
else this.renderTime(date, 'fade');
|
258
|
+
}.bind(this)
|
259
|
+
), fx);
|
260
|
+
|
261
|
+
var yearmonth = date.format('%Y%m').toInt(),
|
262
|
+
limitLeft = (options.minDate && yearmonth <= options.minDate.format('%Y%m')),
|
263
|
+
limitRight = (options.maxDate && yearmonth >= options.maxDate.format('%Y%m'));
|
264
|
+
this[(limitLeft ? 'hide' : 'show') + 'Previous']();
|
265
|
+
this[(limitRight ? 'hide' : 'show') + 'Next']();
|
266
|
+
|
267
|
+
this.setPreviousEvent(function(){
|
268
|
+
this.renderDays(date.decrement('month', 1), 'left');
|
269
|
+
}.bind(this));
|
270
|
+
|
271
|
+
this.setNextEvent(function(){
|
272
|
+
this.renderDays(date.increment('month', 1), 'right');
|
273
|
+
}.bind(this));
|
274
|
+
|
275
|
+
var canGoUp = options.pickOnly != 'days' || options.canAlwaysGoUp.contains('days');
|
276
|
+
var titleEvent = (canGoUp) ? function(){
|
277
|
+
this.renderMonths(date, 'fade');
|
278
|
+
}.bind(this) : null;
|
279
|
+
this.setTitleEvent(titleEvent);
|
280
|
+
},
|
281
|
+
|
282
|
+
renderTime: function(date, fx){
|
283
|
+
var options = this.options;
|
284
|
+
this.setTitle(options.time_title(date, options));
|
285
|
+
|
286
|
+
this.setContent(renderers.time(
|
287
|
+
options,
|
288
|
+
date.clone(),
|
289
|
+
this.date.clone(),
|
290
|
+
function(date){
|
291
|
+
this.select(date);
|
292
|
+
}.bind(this)
|
293
|
+
), fx);
|
294
|
+
|
295
|
+
// Hide « and » buttons
|
296
|
+
this.hidePrevious()
|
297
|
+
.hideNext()
|
298
|
+
.setPreviousEvent(null)
|
299
|
+
.setNextEvent(null);
|
300
|
+
|
301
|
+
var canGoUp = options.pickOnly != 'time' || options.canAlwaysGoUp.contains('time');
|
302
|
+
var titleEvent = (canGoUp) ? function(){
|
303
|
+
this.renderDays(date, 'fade');
|
304
|
+
}.bind(this) : null;
|
305
|
+
this.setTitleEvent(titleEvent);
|
306
|
+
},
|
307
|
+
|
308
|
+
select: function(date){
|
309
|
+
this.date = date;
|
310
|
+
if (this.input){
|
311
|
+
this.input.set('value', date.format(this.options.format))
|
312
|
+
.store('datepicker:value', date.strftime())
|
313
|
+
}
|
314
|
+
this.fireEvent('select', date);
|
315
|
+
this.close();
|
316
|
+
}
|
317
|
+
|
318
|
+
});
|
319
|
+
|
320
|
+
|
321
|
+
// Renderers only output elements and calculate the limits!
|
322
|
+
|
323
|
+
var renderers = {
|
324
|
+
|
325
|
+
years: function(options, date, currentDate, fn){
|
326
|
+
var limit = {left: false, right: false},
|
327
|
+
container = new Element('div.years'),
|
328
|
+
today = new Date(),
|
329
|
+
year, element, classes;
|
330
|
+
|
331
|
+
for (var i = 0; i < options.yearsPerPage; i++){
|
332
|
+
year = date.get('year');
|
333
|
+
|
334
|
+
classes = '.year.year' + i;
|
335
|
+
if (year == today.get('year')) classes += '.today';
|
336
|
+
if (year == currentDate.get('year')) classes += '.selected';
|
337
|
+
element = new Element('div' + classes, {text: year}).inject(container);
|
338
|
+
|
339
|
+
if (isUnavailable('year', date, options)) element.addClass('unavailable');
|
340
|
+
else element.addEvent('click', fn.pass(date.clone()));
|
341
|
+
|
342
|
+
date.increment('year', 1);
|
343
|
+
}
|
344
|
+
|
345
|
+
return container;
|
346
|
+
},
|
347
|
+
|
348
|
+
months: function(options, date, currentDate, fn){
|
349
|
+
var today = new Date(),
|
350
|
+
month = today.get('month'),
|
351
|
+
limit = {left: false, right: false},
|
352
|
+
thisyear = (date.get('year') == today.get('year')),
|
353
|
+
selectedyear = (date.get('year') == currentDate.get('year')),
|
354
|
+
container = new Element('div.months'),
|
355
|
+
months = options.months_abbr || Locale.get('Date.months_abbr'),
|
356
|
+
elelement, classes;
|
357
|
+
|
358
|
+
date.set('month', 0);
|
359
|
+
if (options.minDate){
|
360
|
+
date.decrement('month', 1);
|
361
|
+
date.set('date', date.get('lastdayofmonth'));
|
362
|
+
date.increment('month', 1);
|
363
|
+
}
|
364
|
+
|
365
|
+
date.set('date', date.get('lastdayofmonth'));
|
366
|
+
|
367
|
+
for (var i = 0; i <= 11; i++){
|
368
|
+
|
369
|
+
classes = '.month.month' + (i + 1);
|
370
|
+
if (i == month && thisyear) classes += '.today';
|
371
|
+
if (i == currentDate.get('month') && selectedyear) classes += '.selected';
|
372
|
+
element = new Element('div' + classes, {text: months[i]}).inject(container);
|
373
|
+
|
374
|
+
if (isUnavailable('month', date, options)) element.addClass('unavailable');
|
375
|
+
else element.addEvent('click', fn.pass(date.clone()));
|
376
|
+
|
377
|
+
date.increment('month', 1);
|
378
|
+
date.set('date', date.get('lastdayofmonth'));
|
379
|
+
}
|
380
|
+
|
381
|
+
return container;
|
382
|
+
},
|
383
|
+
|
384
|
+
days: function(options, date, currentDate, fn){
|
385
|
+
var month = date.get('month'),
|
386
|
+
limit = {left: false, right: false},
|
387
|
+
todayString = new Date().toDateString(),
|
388
|
+
currentString = currentDate.toDateString(),
|
389
|
+
container = new Element('div.days'),
|
390
|
+
titles = new Element('div.titles').inject(container),
|
391
|
+
localeDaysShort = options.days_abbr || Locale.get('Date.days_abbr'),
|
392
|
+
day, classes, element, weekcontainer, dateString;
|
393
|
+
|
394
|
+
date.setDate(1);
|
395
|
+
while (date.getDay() != options.startDay) date.setDate(date.getDate() - 1);
|
396
|
+
|
397
|
+
for (day = options.startDay; day < (options.startDay + 7); day++){
|
398
|
+
new Element('div.title.day.day' + (day % 7), {
|
399
|
+
text: localeDaysShort[(day % 7)]
|
400
|
+
}).inject(titles);
|
401
|
+
}
|
402
|
+
|
403
|
+
for (var i = 0; i < 42; i++){
|
404
|
+
|
405
|
+
if (i % 7 == 0){
|
406
|
+
weekcontainer = new Element('div.week.week' + (Math.floor(i / 7))).inject(container);
|
407
|
+
}
|
408
|
+
|
409
|
+
dateString = date.toDateString();
|
410
|
+
classes = '.day.day' + date.get('day');
|
411
|
+
if (dateString == todayString) classes += '.today';
|
412
|
+
if (dateString == currentString) classes += '.selected';
|
413
|
+
if (date.get('month') != month) classes += '.otherMonth';
|
414
|
+
|
415
|
+
element = new Element('div' + classes, {text: date.getDate()}).inject(weekcontainer);
|
416
|
+
|
417
|
+
if (isUnavailable('date', date, options)) element.addClass('unavailable');
|
418
|
+
else element.addEvent('click', fn.pass(date.clone()));
|
419
|
+
|
420
|
+
date.increment('day', 1);
|
421
|
+
}
|
422
|
+
|
423
|
+
return container;
|
424
|
+
},
|
425
|
+
|
426
|
+
time: function(options, date, currentDate, fn){
|
427
|
+
var container = new Element('div.time'),
|
428
|
+
// make sure that the minutes are timeWheelStep * k
|
429
|
+
initMinutes = (date.get('minutes') / options.timeWheelStep).round() * options.timeWheelStep
|
430
|
+
|
431
|
+
if (initMinutes >= 60) initMinutes = 0;
|
432
|
+
date.set('minutes', initMinutes);
|
433
|
+
|
434
|
+
var hoursInput = new Element('input.hour[type=text]', {
|
435
|
+
title: Locale.get('DatePicker.use_mouse_wheel'),
|
436
|
+
value: date.format('%H'),
|
437
|
+
events: {
|
438
|
+
click: function(event){
|
439
|
+
event.target.focus();
|
440
|
+
event.stop();
|
441
|
+
},
|
442
|
+
mousewheel: function(event){
|
443
|
+
event.stop();
|
444
|
+
hoursInput.focus();
|
445
|
+
var value = hoursInput.get('value').toInt();
|
446
|
+
value = (event.wheel > 0) ? ((value < 23) ? value + 1 : 0)
|
447
|
+
: ((value > 0) ? value - 1 : 23)
|
448
|
+
date.set('hours', value);
|
449
|
+
hoursInput.set('value', date.format('%H'));
|
450
|
+
}.bind(this)
|
451
|
+
},
|
452
|
+
maxlength: 2
|
453
|
+
}).inject(container);
|
454
|
+
|
455
|
+
var minutesInput = new Element('input.minutes[type=text]', {
|
456
|
+
title: Locale.get('DatePicker.use_mouse_wheel'),
|
457
|
+
value: date.format('%M'),
|
458
|
+
events: {
|
459
|
+
click: function(event){
|
460
|
+
event.target.focus();
|
461
|
+
event.stop();
|
462
|
+
},
|
463
|
+
mousewheel: function(event){
|
464
|
+
event.stop();
|
465
|
+
minutesInput.focus();
|
466
|
+
var value = minutesInput.get('value').toInt();
|
467
|
+
value = (event.wheel > 0) ? ((value < 59) ? (value + options.timeWheelStep) : 0)
|
468
|
+
: ((value > 0) ? (value - options.timeWheelStep) : (60 - options.timeWheelStep));
|
469
|
+
if (value >= 60) value = 0;
|
470
|
+
date.set('minutes', value);
|
471
|
+
minutesInput.set('value', date.format('%M'));
|
472
|
+
}.bind(this)
|
473
|
+
},
|
474
|
+
maxlength: 2
|
475
|
+
}).inject(container);
|
476
|
+
|
477
|
+
new Element('div.separator[text=:]').inject(container);
|
478
|
+
|
479
|
+
new Element('input.ok[type=submit]', {
|
480
|
+
value: Locale.get('DatePicker.time_confirm_button'),
|
481
|
+
events: {click: function(event){
|
482
|
+
event.stop();
|
483
|
+
date.set({
|
484
|
+
hours: hoursInput.get('value').toInt(),
|
485
|
+
minutes: minutesInput.get('value').toInt()
|
486
|
+
});
|
487
|
+
fn(date.clone());
|
488
|
+
}}
|
489
|
+
}).inject(container);
|
490
|
+
|
491
|
+
return container;
|
492
|
+
}
|
493
|
+
|
494
|
+
};
|
495
|
+
|
496
|
+
|
497
|
+
Picker.Date.defineRenderer = function(name, fn){
|
498
|
+
renderers[name] = fn;
|
499
|
+
return this;
|
500
|
+
};
|
501
|
+
|
502
|
+
|
503
|
+
var limitDate = function(date, min, max){
|
504
|
+
if (min && date < min) return min;
|
505
|
+
if (max && date > max) return max;
|
506
|
+
return date;
|
507
|
+
};
|
508
|
+
|
509
|
+
var isUnavailable = function(type, date, options){
|
510
|
+
var minDate = options.minDate,
|
511
|
+
maxDate = options.maxDate,
|
512
|
+
availableDates = options.availableDates;
|
513
|
+
|
514
|
+
if (!minDate && !maxDate && !availableDates) return false;
|
515
|
+
date.clearTime();
|
516
|
+
|
517
|
+
if (type == 'year'){
|
518
|
+
var year = date.get('year');
|
519
|
+
return (
|
520
|
+
(minDate && year < minDate.get('year')) ||
|
521
|
+
(maxDate && year > maxDate.get('year')) ||
|
522
|
+
(
|
523
|
+
(availableDates != null) && (
|
524
|
+
availableDates[year] == null ||
|
525
|
+
Object.getLength(availableDates[year]) == 0 ||
|
526
|
+
Object.getLength(
|
527
|
+
Object.filter(availableDates[year], function(days){
|
528
|
+
return (days.length > 0);
|
529
|
+
})
|
530
|
+
) == 0
|
531
|
+
)
|
532
|
+
)
|
533
|
+
);
|
534
|
+
}
|
535
|
+
|
536
|
+
if (type == 'month'){
|
537
|
+
var year = date.get('year'),
|
538
|
+
month = date.get('month') + 1,
|
539
|
+
ms = date.format('%Y%m').toInt();
|
540
|
+
return (
|
541
|
+
(minDate && ms < minDate.format('%Y%m').toInt()) ||
|
542
|
+
(maxDate && ms > maxDate.format('%Y%m').toInt()) ||
|
543
|
+
(
|
544
|
+
(availableDates != null) && (
|
545
|
+
availableDates[year] == null ||
|
546
|
+
availableDates[year][month] == null ||
|
547
|
+
availableDates[year][month].length == 0
|
548
|
+
)
|
549
|
+
)
|
550
|
+
);
|
551
|
+
}
|
552
|
+
|
553
|
+
// type == 'date'
|
554
|
+
var year = date.get('year'),
|
555
|
+
month = date.get('month') + 1,
|
556
|
+
day = date.get('date');
|
557
|
+
return (
|
558
|
+
(minDate && date < minDate) ||
|
559
|
+
(maxDate && date > maxDate) ||
|
560
|
+
(
|
561
|
+
(availableDates != null) && (
|
562
|
+
availableDates[year] == null ||
|
563
|
+
availableDates[year][month] == null ||
|
564
|
+
!availableDates[year][month].contains(day)
|
565
|
+
)
|
566
|
+
)
|
567
|
+
);
|
568
|
+
};
|
569
|
+
|
570
|
+
|
571
|
+
// Parse times
|
572
|
+
Date.defineParsers(
|
573
|
+
'%H:%M( ?%p)?' // "11:05pm", "11:05 am" and "11:05"
|
574
|
+
);
|
575
|
+
|
576
|
+
})();
|