typo 4.0.3 → 4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGES-4.1 +83 -0
- data/MAINTAINERS +3 -7
- data/README +1 -1
- data/{components/sidebars/README → README.SIDEBARS} +3 -0
- data/Rakefile +1 -1
- data/TODO-4.1 +16 -0
- data/app/apis/blogger_service.rb +3 -3
- data/app/apis/meta_weblog_service.rb +4 -21
- data/app/apis/movable_type_service.rb +5 -5
- data/app/controllers/accounts_controller.rb +6 -3
- data/app/controllers/admin/blacklist_controller.rb +1 -1
- data/app/controllers/admin/cache_controller.rb +3 -7
- data/app/controllers/admin/content_controller.rb +46 -24
- data/app/controllers/admin/feedback_controller.rb +3 -3
- data/app/controllers/admin/general_controller.rb +3 -3
- data/app/controllers/admin/pages_controller.rb +7 -3
- data/app/controllers/admin/sidebar_controller.rb +19 -26
- data/app/controllers/admin/textfilters_controller.rb +3 -1
- data/app/controllers/admin/themes_controller.rb +1 -1
- data/app/controllers/admin/users_controller.rb +1 -1
- data/app/controllers/application.rb +25 -27
- data/app/controllers/articles_controller.rb +14 -18
- data/app/controllers/content_controller.rb +7 -7
- data/app/controllers/live_controller.rb +1 -1
- data/app/controllers/redirect_controller.rb +2 -0
- data/app/controllers/textfilter_controller.rb +0 -3
- data/app/controllers/theme_controller.rb +10 -5
- data/app/controllers/xml_controller.rb +7 -9
- data/app/helpers/admin/base_helper.rb +10 -5
- data/app/helpers/admin/content_helper.rb +6 -0
- data/app/helpers/admin/feedback_helper.rb +1 -1
- data/app/helpers/admin/pages_helper.rb +5 -0
- data/app/helpers/application_helper.rb +84 -51
- data/app/helpers/articles_helper.rb +29 -29
- data/app/helpers/mail_helper.rb +3 -2
- data/app/helpers/sidebar_helper.rb +25 -16
- data/app/helpers/xml_helper.rb +0 -16
- data/app/models/article.rb +90 -32
- data/app/models/blog.rb +82 -74
- data/app/models/blog_sweeper.rb +33 -8
- data/app/models/categorization.rb +4 -0
- data/app/models/category.rb +21 -4
- data/app/models/comment.rb +23 -21
- data/app/models/content.rb +106 -64
- data/app/models/content_state/base.rb +12 -3
- data/app/models/content_state/draft.rb +2 -3
- data/app/models/content_state/factory.rb +1 -1
- data/app/models/content_state/ham.rb +0 -1
- data/app/models/content_state/just_marked_as_ham.rb +8 -1
- data/app/models/content_state/just_marked_as_spam.rb +4 -1
- data/app/models/content_state/just_presumed_ham.rb +14 -14
- data/app/models/content_state/just_published.rb +11 -18
- data/app/models/content_state/just_withdrawn.rb +11 -0
- data/app/models/content_state/new.rb +0 -1
- data/app/models/content_state/presumed_ham.rb +9 -3
- data/app/models/content_state/presumed_spam.rb +4 -1
- data/app/models/content_state/publication_pending.rb +4 -4
- data/app/models/content_state/published.rb +7 -8
- data/app/models/content_state/spam.rb +0 -1
- data/app/models/content_state/unclassified.rb +12 -3
- data/app/models/content_state/withdrawn.rb +5 -6
- data/app/models/email_notifier.rb +1 -1
- data/app/models/feedback.rb +31 -11
- data/app/models/notification.rb +4 -0
- data/app/models/notification_mailer.rb +8 -8
- data/app/models/page.rb +19 -5
- data/app/models/ping.rb +27 -40
- data/app/models/sidebar.rb +241 -11
- data/app/models/tag.rb +12 -1
- data/app/models/text_filter.rb +33 -39
- data/app/models/theme.rb +9 -0
- data/app/models/trackback.rb +1 -5
- data/app/models/user.rb +7 -5
- data/app/views/accounts/login.rhtml +19 -15
- data/app/views/accounts/logout.rhtml +4 -4
- data/app/views/accounts/signup.rhtml +9 -9
- data/app/views/admin/base/_recent_comments.rhtml +2 -2
- data/app/views/admin/base/_recent_trackbacks.rhtml +2 -2
- data/app/views/admin/blacklist/_blacklist_patterns.rhtml +4 -4
- data/app/views/admin/blacklist/_form.rhtml +3 -3
- data/app/views/admin/blacklist/_quick_post.rhtml +7 -6
- data/app/views/admin/blacklist/destroy.rhtml +5 -5
- data/app/views/admin/blacklist/edit.rhtml +7 -7
- data/app/views/admin/blacklist/list.rhtml +2 -2
- data/app/views/admin/cache/list.rhtml +2 -2
- data/app/views/admin/categories/_categories.rhtml +3 -3
- data/app/views/admin/categories/_form.rhtml +1 -1
- data/app/views/admin/categories/_quick_post.rhtml +5 -5
- data/app/views/admin/categories/destroy.rhtml +7 -7
- data/app/views/admin/categories/edit.rhtml +6 -6
- data/app/views/admin/categories/list.rhtml +7 -4
- data/app/views/admin/categories/reorder.rhtml +1 -1
- data/app/views/admin/categories/show.rhtml +6 -6
- data/app/views/admin/comments/_form.rhtml +4 -4
- data/app/views/admin/comments/comments.rhtml +1 -1
- data/app/views/admin/comments/destroy.rhtml +6 -6
- data/app/views/admin/comments/edit.rhtml +8 -8
- data/app/views/admin/comments/list.rhtml +11 -11
- data/app/views/admin/comments/new.rhtml +7 -7
- data/app/views/admin/comments/show.rhtml +7 -7
- data/app/views/admin/content/_articles.rhtml +12 -10
- data/app/views/admin/content/_attachment.rhtml +15 -17
- data/app/views/admin/content/_form.rhtml +68 -45
- data/app/views/admin/content/_pages.rhtml +2 -2
- data/app/views/admin/content/_quick_post.rhtml +6 -6
- data/app/views/admin/content/_show_categories.rhtml +2 -2
- data/app/views/admin/content/_show_resources.rhtml +2 -2
- data/app/views/admin/content/destroy.rhtml +8 -8
- data/app/views/admin/content/edit.rhtml +8 -26
- data/app/views/admin/content/list.rhtml +4 -4
- data/app/views/admin/content/new.rhtml +5 -25
- data/app/views/admin/content/preview.rhtml +9 -2
- data/app/views/admin/content/show.rhtml +10 -9
- data/app/views/admin/feedback/_item.rhtml +2 -2
- data/app/views/admin/feedback/list.rhtml +21 -20
- data/app/views/admin/general/index.rhtml +261 -239
- data/app/views/admin/general/update_database.rhtml +15 -15
- data/app/views/admin/pages/_form.rhtml +32 -15
- data/app/views/admin/pages/_pages.rhtml +9 -8
- data/app/views/admin/pages/_quick_post.rhtml +2 -2
- data/app/views/admin/pages/destroy.rhtml +7 -7
- data/app/views/admin/pages/edit.rhtml +7 -26
- data/app/views/admin/pages/list.rhtml +4 -3
- data/app/views/admin/pages/new.rhtml +5 -22
- data/app/views/admin/pages/preview.rhtml +1 -1
- data/app/views/admin/pages/show.rhtml +5 -5
- data/app/views/admin/resources/_itunes_category_edit.rhtml +2 -2
- data/app/views/admin/resources/_metadata_add.rhtml +13 -13
- data/app/views/admin/resources/_metadata_edit.rhtml +14 -14
- data/app/views/admin/resources/_mime_edit.rhtml +5 -5
- data/app/views/admin/resources/_pages.rhtml +2 -2
- data/app/views/admin/resources/_resources.rhtml +8 -8
- data/app/views/admin/resources/destroy.rhtml +7 -7
- data/app/views/admin/resources/list.rhtml +6 -3
- data/app/views/admin/resources/new.rhtml +7 -3
- data/app/views/admin/shared/_edit.rhtml +17 -0
- data/app/views/admin/sidebar/_active.rhtml +5 -5
- data/app/views/admin/sidebar/_availables.rhtml +1 -1
- data/app/views/admin/sidebar/_publish.rhtml +1 -1
- data/app/views/admin/sidebar/_target.rhtml +1 -1
- data/app/views/admin/sidebar/index.rhtml +9 -5
- data/app/views/admin/textfilters/_form.rhtml +13 -5
- data/app/views/admin/textfilters/_macros.rhtml +4 -4
- data/app/views/admin/textfilters/_textfilters.rhtml +6 -6
- data/app/views/admin/textfilters/destroy.rhtml +5 -8
- data/app/views/admin/textfilters/edit.rhtml +2 -5
- data/app/views/admin/textfilters/list.rhtml +4 -2
- data/app/views/admin/textfilters/macro_help.rhtml +1 -1
- data/app/views/admin/textfilters/new.rhtml +9 -7
- data/app/views/admin/textfilters/show.rhtml +5 -5
- data/app/views/admin/textfilters/show_help.rhtml +3 -3
- data/app/views/admin/themes/index.rhtml +8 -2
- data/app/views/admin/trackbacks/_form.rhtml +4 -4
- data/app/views/admin/trackbacks/destroy.rhtml +4 -4
- data/app/views/admin/trackbacks/edit.rhtml +6 -6
- data/app/views/admin/trackbacks/list.rhtml +10 -10
- data/app/views/admin/trackbacks/new.rhtml +6 -6
- data/app/views/admin/trackbacks/show.rhtml +8 -8
- data/app/views/admin/users/_form.rhtml +10 -10
- data/app/views/admin/users/_user.rhtml +6 -6
- data/app/views/admin/users/destroy.rhtml +7 -7
- data/app/views/admin/users/edit.rhtml +9 -5
- data/app/views/admin/users/list.rhtml +2 -2
- data/app/views/admin/users/new.rhtml +9 -7
- data/app/views/admin/users/show.rhtml +10 -10
- data/app/views/articles/_article.rhtml +3 -3
- data/app/views/articles/_comment.rhtml +3 -3
- data/app/views/articles/_comment_box.rhtml +6 -6
- data/app/views/articles/_trackback.rhtml +1 -1
- data/app/views/articles/archives.rhtml +3 -3
- data/app/views/articles/comment_preview.rhtml +2 -2
- data/app/views/articles/groupings.rhtml +1 -1
- data/app/views/articles/index.rhtml +2 -2
- data/app/views/articles/read.rhtml +15 -15
- data/app/views/articles/view_page.rhtml +1 -1
- data/app/views/layouts/administration.rhtml +11 -17
- data/app/views/layouts/minimal.rhtml +13 -0
- data/app/views/live/search.rhtml +1 -1
- data/app/views/notification_mailer/_mail_footer.rhtml +2 -2
- data/app/views/notification_mailer/article.rhtml +1 -1
- data/app/views/notification_mailer/comment.rhtml +4 -4
- data/app/views/settings/done.rhtml +1 -1
- data/app/views/settings/install.rhtml +3 -3
- data/app/views/shared/_search.rhtml +4 -4
- data/app/views/xml/_atom10_item_article.rxml +9 -7
- data/app/views/xml/_atom10_item_comment.rxml +2 -3
- data/app/views/xml/_atom10_item_trackback.rxml +1 -1
- data/app/views/xml/_googlesitemap_item_article.rxml +2 -2
- data/app/views/xml/_googlesitemap_item_category.rxml +1 -1
- data/app/views/xml/_googlesitemap_item_page.rxml +2 -2
- data/app/views/xml/_googlesitemap_item_tag.rxml +2 -2
- data/app/views/xml/_itunes_item_resource.rxml +2 -4
- data/app/views/xml/_rss20_item_article.rxml +4 -10
- data/app/views/xml/_rss20_item_comment.rxml +2 -2
- data/app/views/xml/rsd.rxml +4 -4
- data/bin/typo +0 -1
- data/config/boot.rb +4 -3
- data/config/environment.rb +37 -28
- data/config/environments/test.rb +1 -1
- data/config/routes.rb +6 -5
- data/db/migrate/051_fix_canonical_server_url.rb +17 -0
- data/db/migrate/052_remove_cached_html.rb +11 -0
- data/db/migrate/053_promote_canonical_server_url.rb +22 -0
- data/db/migrate/054_upgrade_sidebar_objects.rb +26 -0
- data/db/migrate/055_link_sidebars_to_blog.rb +17 -0
- data/db/migrate/056_create_notifications.rb +32 -0
- data/db/migrate/057_add_categorization_model.rb +45 -0
- data/db/migrate/058_separate_entries_and_feedback.rb +68 -0
- data/db/migrate/059_cleanup_feedback_table.rb +25 -0
- data/db/migrate/060_cleanup_contents_table.rb +29 -0
- data/db/migrate/061_convert_title_prefix_setting.rb +25 -0
- data/db/schema.mysql.sql +139 -108
- data/db/schema.postgresql.sql +140 -108
- data/db/schema.rb +97 -75
- data/db/schema.sqlite.sql +140 -108
- data/db/schema.sqlserver.sql +144 -109
- data/db/schema_version +1 -1
- data/lang/fr_FR.rb +469 -0
- data/lib/email_notify.rb +4 -4
- data/lib/generators/sidebar/sidebar_generator.rb +15 -6
- data/lib/generators/sidebar/templates/Rakefile +22 -0
- data/lib/generators/sidebar/templates/content.rhtml +10 -0
- data/lib/generators/sidebar/templates/init.rb +4 -0
- data/lib/generators/sidebar/templates/sidebar.rb +16 -0
- data/lib/generators/sidebar/templates/unit_test.rb +8 -0
- data/lib/jabber_notify.rb +8 -7
- data/lib/memory_profiler.rb +60 -0
- data/lib/rails_patch/active_record.rb +0 -27
- data/lib/route_cache.rb +15 -0
- data/lib/sidebars/component_plugin.rb +3 -0
- data/lib/sidebars/consolidated_plugin.rb +26 -0
- data/lib/sidebars/plugin.rb +8 -13
- data/lib/spam_protection.rb +35 -23
- data/lib/tasks/release.rake +7 -7
- data/lib/text_filter_plugin.rb +55 -15
- data/lib/typo_deprecated.rb +19 -0
- data/lib/typo_version.rb +1 -1
- data/public/images/bracket.gif +0 -0
- data/public/images/cancel.png +0 -0
- data/public/images/checked.png +0 -0
- data/public/images/delete.png +0 -0
- data/public/images/edit.png +0 -0
- data/public/images/help.png +0 -0
- data/public/images/show.png +0 -0
- data/public/javascripts/codecollapse.js +8 -0
- data/public/javascripts/controls.js +41 -23
- data/public/javascripts/dragdrop.js +105 -76
- data/public/javascripts/effects.js +293 -163
- data/public/javascripts/prototype.js +900 -391
- data/public/stylesheets/administration.css +390 -318
- data/public/stylesheets/codecollapse.css +3 -0
- data/public/stylesheets/minimal.css +142 -0
- data/public/stylesheets/textmate/dawn.css +209 -0
- data/public/stylesheets/textmate/iplastic.css +142 -0
- data/public/stylesheets/textmate/space_cadet.css +99 -0
- data/public/stylesheets/textmate/textmate.css +48 -0
- data/public/stylesheets/textmate/twilight.css +227 -0
- data/script/process/inspector +3 -0
- data/spec/controllers/accounts_controller_spec.rb +184 -0
- data/spec/controllers/articles_controller_spec.rb +47 -0
- data/spec/fixtures/articles_tags.yml +19 -0
- data/spec/fixtures/blacklist_patterns.yml +10 -0
- data/spec/fixtures/blogs.yml +77 -0
- data/spec/fixtures/categories.yml +35 -0
- data/{test/fixtures/articles_categories.yml → spec/fixtures/categorizations.yml} +0 -0
- data/spec/fixtures/contents.yml +215 -0
- data/spec/fixtures/feedback.yml +159 -0
- data/spec/fixtures/notifications.yml +0 -0
- data/spec/fixtures/page_caches.yml +7 -0
- data/spec/fixtures/redirects.yml +13 -0
- data/spec/fixtures/resources.yml +24 -0
- data/spec/fixtures/sidebars.yml +12 -0
- data/spec/fixtures/tags.yml +13 -0
- data/spec/fixtures/text_filters.yml +42 -0
- data/spec/fixtures/triggers.yml +1 -0
- data/spec/fixtures/users.yml +56 -0
- data/spec/fixtures/whiteboards.yml +13 -0
- data/spec/helpers/admin_base_helper_spec.rb +13 -0
- data/spec/models/amazon_sidebar_spec.rb +40 -0
- data/spec/models/audioscrobbler_spec.rb +134 -0
- data/spec/models/blog_spec.rb +28 -0
- data/spec/models/cache_support_spec.rb +55 -0
- data/spec/models/category_spec.rb +48 -0
- data/spec/models/configuration_spec.rb +108 -0
- data/spec/models/content_state_spec.rb +1010 -0
- data/spec/models/delegate_to_content_state_spec.rb +126 -0
- data/spec/models/delicious_spec.rb +101 -0
- data/spec/models/flickr_spec.rb +128 -0
- data/spec/models/metafragment_spec.rb +65 -0
- data/spec/models/page_cache_spec.rb +35 -0
- data/spec/models/page_spec.rb +88 -0
- data/spec/models/ping_spec.rb +133 -0
- data/spec/models/redirect_spec.rb +17 -0
- data/spec/models/resource_spec.rb +43 -0
- data/spec/models/static_sidebar_spec.rb +17 -0
- data/spec/models/tag_spec.rb +54 -0
- data/spec/models/text_filter_spec.rb +38 -0
- data/spec/models/theme_spec.rb +45 -0
- data/spec/models/trackback_spec.rb +60 -0
- data/spec/models/trigger_spec.rb +41 -0
- data/spec/models/user_spec.rb +105 -0
- data/test/fixtures/blogs.yml +5 -4
- data/test/fixtures/categorizations.yml +31 -0
- data/test/fixtures/contents.yml +2 -160
- data/test/fixtures/feedback.yml +159 -0
- data/test/fixtures/sidebars.yml +11 -4
- data/test/functional/accounts_controller_test.rb +6 -10
- data/test/functional/admin/article_preview_test.rb +21 -6
- data/test/functional/admin/blacklist_controller_test.rb +11 -11
- data/test/functional/admin/categories_controller_test.rb +13 -13
- data/test/functional/admin/comments_controller_test.rb +21 -21
- data/test/functional/admin/content_controller_test.rb +30 -38
- data/test/functional/admin/feedback_controller_test.rb +12 -12
- data/test/functional/admin/general_controller_test.rb +2 -2
- data/test/functional/admin/pages_controller_test.rb +3 -18
- data/test/functional/admin/resources_controller_test.rb +7 -7
- data/test/functional/admin/textfilters_controller_test.rb +2 -2
- data/test/functional/admin/themes_controller_test.rb +1 -1
- data/test/functional/admin/trackbacks_controller_test.rb +21 -21
- data/test/functional/admin/users_controller_test.rb +21 -18
- data/test/functional/articles_controller_test.rb +62 -46
- data/test/functional/backend_controller_test.rb +6 -6
- data/test/functional/redirect_controller_test.rb +3 -3
- data/test/functional/textfilter_controller_test.rb +10 -12
- data/test/functional/theme_controller_test.rb +1 -1
- data/test/functional/xml_controller_test.rb +7 -5
- data/test/mocks/themes/azure/layouts/default.rhtml +2 -2
- data/test/test_helper.rb +75 -0
- data/test/unit/amazon_sidebar_test.rb +36 -0
- data/test/unit/article_test.rb +36 -4
- data/test/unit/blog_test.rb +5 -36
- data/test/unit/cache_support_test.rb +62 -0
- data/test/unit/category_test.rb +6 -1
- data/test/unit/comment_test.rb +34 -9
- data/test/unit/content_state/factory_test.rb +8 -0
- data/test/unit/content_state/feedback_states_test.rb +71 -0
- data/test/unit/magnolia_test.rb +1 -1
- data/test/unit/notification_test.rb +10 -0
- data/test/unit/page_test.rb +20 -0
- data/test/unit/ping_test.rb +1 -1
- data/test/unit/sidebar_test.rb +2 -7
- data/test/unit/static_sidebar_test.rb +19 -0
- data/test/unit/tag_test.rb +6 -1
- data/test/unit/text_filter_test.rb +21 -21
- data/test/unit/theme_test.rb +1 -1
- data/test/unit/trackback_test.rb +16 -1
- data/themes/azure/layouts/default.rhtml +2 -2
- data/themes/scribbish/layouts/default.rhtml +2 -2
- data/themes/scribbish/stylesheets/content.css +6 -8
- data/themes/scribbish/views/articles/_article.rhtml +10 -10
- data/themes/scribbish/views/articles/_comment.rhtml +16 -12
- data/themes/scribbish/views/articles/_comment_form.rhtml +25 -22
- data/themes/scribbish/views/articles/_search.rhtml +14 -13
- data/themes/scribbish/views/articles/comment_preview.rhtml +3 -3
- data/themes/scribbish/views/articles/index.rhtml +1 -1
- data/themes/scribbish/views/articles/read.rhtml +8 -8
- data/vendor/cached_model/History.txt +30 -0
- data/vendor/cached_model/LICENSE.txt +30 -0
- data/vendor/cached_model/Manifest.txt +7 -0
- data/vendor/cached_model/README.txt +96 -0
- data/vendor/cached_model/Rakefile +25 -0
- data/vendor/cached_model/lib/cached_model.rb +287 -0
- data/vendor/cached_model/test/test_cached_model.rb +593 -0
- data/vendor/flickr/flickr.rb +1 -1
- data/vendor/memcache-client/History.txt +25 -0
- data/vendor/memcache-client/LICENSE.txt +30 -0
- data/vendor/memcache-client/Manifest.txt +8 -0
- data/vendor/memcache-client/README.txt +46 -0
- data/vendor/memcache-client/Rakefile +23 -0
- data/vendor/memcache-client/lib/memcache.rb +491 -0
- data/vendor/memcache-client/lib/memcache_util.rb +71 -0
- data/vendor/memcache-client/test/test_mem_cache.rb +284 -0
- data/vendor/plugins/action_view_patch/Rakefile +22 -0
- data/vendor/plugins/action_view_patch/init.rb +1 -0
- data/vendor/plugins/action_view_patch/lib/action_view_patch.rb +18 -0
- data/vendor/plugins/action_view_patch/test/action_view_patch_test.rb +56 -0
- data/vendor/plugins/aimpresence_sidebar/Rakefile +22 -0
- data/vendor/plugins/aimpresence_sidebar/init.rb +4 -0
- data/vendor/plugins/aimpresence_sidebar/lib/aimpresence_sidebar.rb +21 -0
- data/vendor/plugins/aimpresence_sidebar/test/aimpresence_sidebar_test.rb +33 -0
- data/vendor/plugins/aimpresence_sidebar/views/content.rhtml +4 -0
- data/vendor/plugins/amazon_sidebar/init.rb +5 -0
- data/vendor/plugins/amazon_sidebar/lib/amazon_sidebar.rb +16 -0
- data/vendor/plugins/amazon_sidebar/views/content.rhtml +4 -0
- data/vendor/plugins/archives_sidebar/Rakefile +22 -0
- data/vendor/plugins/archives_sidebar/init.rb +5 -0
- data/{components/plugins/sidebars/archives_controller.rb → vendor/plugins/archives_sidebar/lib/archives_sidebar.rb} +7 -6
- data/vendor/plugins/archives_sidebar/test/archives_sidebar_test.rb +8 -0
- data/{components/plugins/sidebars/archives → vendor/plugins/archives_sidebar/views}/content.rhtml +2 -2
- data/vendor/plugins/audioscrobbler_sidebar/Rakefile +22 -0
- data/vendor/plugins/audioscrobbler_sidebar/init.rb +5 -0
- data/{app/models/aggregations → vendor/plugins/audioscrobbler_sidebar/lib}/audioscrobbler.rb +0 -0
- data/{components/plugins/sidebars/audioscrobbler_controller.rb → vendor/plugins/audioscrobbler_sidebar/lib/audioscrobbler_sidebar.rb} +7 -4
- data/vendor/plugins/audioscrobbler_sidebar/test/audioscrobbler_sidebar_test.rb +8 -0
- data/{components/plugins/sidebars/audioscrobbler → vendor/plugins/audioscrobbler_sidebar/views}/content.rhtml +4 -4
- data/vendor/plugins/backpack_sidebar/Rakefile +22 -0
- data/vendor/plugins/backpack_sidebar/init.rb +5 -0
- data/{app/models/aggregations → vendor/plugins/backpack_sidebar/lib}/backpack.rb +0 -0
- data/{components/plugins/sidebars/backpack_controller.rb → vendor/plugins/backpack_sidebar/lib/backpack_sidebar.rb} +6 -3
- data/vendor/plugins/backpack_sidebar/test/backpack_sidebar_test.rb +8 -0
- data/{components/plugins/sidebars/backpack → vendor/plugins/backpack_sidebar/views}/content.rhtml +4 -4
- data/vendor/plugins/category_sidebar/Rakefile +22 -0
- data/vendor/plugins/category_sidebar/init.rb +5 -0
- data/{components/plugins/sidebars/category_controller.rb → vendor/plugins/category_sidebar/lib/category_sidebar.rb} +3 -5
- data/vendor/plugins/category_sidebar/test/category_sidebar_test.rb +8 -0
- data/vendor/plugins/category_sidebar/views/content.rhtml +10 -0
- data/vendor/plugins/delicious_sidebar/Rakefile +22 -0
- data/vendor/plugins/delicious_sidebar/init.rb +5 -0
- data/{app/models/aggregations → vendor/plugins/delicious_sidebar/lib}/delicious.rb +0 -0
- data/{components/plugins/sidebars/delicious_controller.rb → vendor/plugins/delicious_sidebar/lib/delicious_sidebar.rb} +16 -10
- data/vendor/plugins/delicious_sidebar/test/delicious_sidebar_test.rb +8 -0
- data/vendor/plugins/delicious_sidebar/views/content.rhtml +20 -0
- data/vendor/plugins/flickr_sidebar/Rakefile +22 -0
- data/vendor/plugins/flickr_sidebar/init.rb +5 -0
- data/{app/models/aggregations → vendor/plugins/flickr_sidebar/lib}/flickr.rb +1 -1
- data/vendor/plugins/flickr_sidebar/lib/flickr_sidebar.rb +15 -0
- data/vendor/plugins/flickr_sidebar/test/flickr_sidebar_test.rb +8 -0
- data/{components/plugins/sidebars/flickr → vendor/plugins/flickr_sidebar/views}/content.rhtml +5 -5
- data/vendor/plugins/fortythree_sidebar/Rakefile +22 -0
- data/vendor/plugins/fortythree_sidebar/init.rb +5 -0
- data/{app/models/aggregations → vendor/plugins/fortythree_sidebar/lib}/fortythree.rb +0 -0
- data/{components/plugins/sidebars/fortythree_controller.rb → vendor/plugins/fortythree_sidebar/lib/fortythree_sidebar.rb} +5 -4
- data/vendor/plugins/fortythree_sidebar/test/fortythree_sidebar_test.rb +8 -0
- data/vendor/plugins/fortythree_sidebar/views/content.rhtml +8 -0
- data/vendor/plugins/fortythreeplaces_sidebar/Rakefile +22 -0
- data/vendor/plugins/fortythreeplaces_sidebar/init.rb +5 -0
- data/vendor/plugins/fortythreeplaces_sidebar/lib/fortythree.rb +62 -0
- data/{components/plugins/sidebars/fortythreeplaces_controller.rb → vendor/plugins/fortythreeplaces_sidebar/lib/fortythreeplaces_sidebar.rb} +5 -4
- data/vendor/plugins/fortythreeplaces_sidebar/test/fortythreeplaces_sidebar_test.rb +8 -0
- data/vendor/plugins/fortythreeplaces_sidebar/views/content.rhtml +8 -0
- data/vendor/plugins/haml/MIT-LICENSE +20 -0
- data/vendor/plugins/haml/REFERENCE +662 -0
- data/vendor/plugins/haml/Rakefile +171 -0
- data/vendor/plugins/haml/VERSION +1 -0
- data/vendor/plugins/haml/bin/haml +18 -0
- data/vendor/plugins/haml/init.rb +3 -0
- data/vendor/plugins/haml/lib/haml/buffer.rb +224 -0
- data/vendor/plugins/haml/lib/haml/engine.rb +557 -0
- data/vendor/plugins/haml/lib/haml/helpers.rb +220 -0
- data/vendor/plugins/haml/lib/haml/helpers/action_view_mods.rb +54 -0
- data/vendor/plugins/haml/lib/haml/template.rb +138 -0
- data/vendor/plugins/haml/test/benchmark.rb +62 -0
- data/vendor/plugins/haml/test/engine_test.rb +93 -0
- data/vendor/plugins/haml/test/helper_test.rb +105 -0
- data/vendor/plugins/haml/test/mocks/article.rb +6 -0
- data/vendor/plugins/haml/test/profile.rb +45 -0
- data/vendor/plugins/haml/test/results/content_for_layout.xhtml +16 -0
- data/vendor/plugins/haml/test/results/eval_suppressed.xhtml +2 -0
- data/vendor/plugins/haml/test/results/helpers.xhtml +50 -0
- data/vendor/plugins/haml/test/results/helpful.xhtml +5 -0
- data/vendor/plugins/haml/test/results/just_stuff.xhtml +38 -0
- data/vendor/plugins/haml/test/results/list.xhtml +12 -0
- data/vendor/plugins/haml/test/results/original_engine.xhtml +24 -0
- data/vendor/plugins/haml/test/results/partials.xhtml +20 -0
- data/vendor/plugins/haml/test/results/silent_script.xhtml +74 -0
- data/vendor/plugins/haml/test/results/standard.xhtml +42 -0
- data/vendor/plugins/haml/test/results/tag_parsing.xhtml +28 -0
- data/vendor/plugins/haml/test/results/very_basic.xhtml +7 -0
- data/vendor/plugins/haml/test/results/whitespace_handling.xhtml +51 -0
- data/vendor/plugins/haml/test/rhtml/standard.rhtml +51 -0
- data/vendor/plugins/haml/test/runner.rb +15 -0
- data/vendor/plugins/haml/test/template_test.rb +137 -0
- data/vendor/plugins/haml/test/templates/_partial.haml +7 -0
- data/vendor/plugins/haml/test/templates/_text_area.haml +3 -0
- data/vendor/plugins/haml/test/templates/content_for_layout.haml +10 -0
- data/vendor/plugins/haml/test/templates/eval_suppressed.haml +5 -0
- data/vendor/plugins/haml/test/templates/helpers.haml +39 -0
- data/vendor/plugins/haml/test/templates/helpful.haml +6 -0
- data/vendor/plugins/haml/test/templates/just_stuff.haml +34 -0
- data/vendor/plugins/haml/test/templates/list.haml +12 -0
- data/vendor/plugins/haml/test/templates/original_engine.haml +17 -0
- data/vendor/plugins/haml/test/templates/partialize.haml +1 -0
- data/vendor/plugins/haml/test/templates/partials.haml +12 -0
- data/vendor/plugins/haml/test/templates/silent_script.haml +40 -0
- data/vendor/plugins/haml/test/templates/standard.haml +40 -0
- data/vendor/plugins/haml/test/templates/tag_parsing.haml +24 -0
- data/vendor/plugins/haml/test/templates/very_basic.haml +4 -0
- data/vendor/plugins/haml/test/templates/whitespace_handling.haml +66 -0
- data/vendor/plugins/localization/CHANGELOG +1 -0
- data/vendor/plugins/localization/README +85 -0
- data/vendor/plugins/localization/init.rb +3 -0
- data/vendor/plugins/localization/lib/localization.rb +46 -0
- data/vendor/plugins/magnolia_sidebar/Rakefile +22 -0
- data/vendor/plugins/magnolia_sidebar/init.rb +5 -0
- data/{app/models/aggregations/magnolia.rb → vendor/plugins/magnolia_sidebar/lib/magnolia_aggregation.rb} +0 -0
- data/vendor/plugins/magnolia_sidebar/lib/magnolia_sidebar.rb +16 -0
- data/vendor/plugins/magnolia_sidebar/test/magnolia_sidebar_test.rb +8 -0
- data/vendor/plugins/magnolia_sidebar/views/content.rhtml +12 -0
- data/vendor/plugins/recent_comments_sidebar/Rakefile +22 -0
- data/vendor/plugins/recent_comments_sidebar/init.rb +5 -0
- data/vendor/plugins/recent_comments_sidebar/lib/recent_comments_sidebar.rb +16 -0
- data/vendor/plugins/recent_comments_sidebar/test/recent_comments_sidebar_test.rb +8 -0
- data/{components/plugins/sidebars/recent_comments → vendor/plugins/recent_comments_sidebar/views}/content.rhtml +2 -2
- data/vendor/plugins/static_sidebar/init.rb +4 -0
- data/{components/plugins/sidebars/static_controller.rb → vendor/plugins/static_sidebar/lib/static_sidebar.rb} +4 -7
- data/vendor/plugins/static_sidebar/views/content.rhtml +2 -0
- data/vendor/plugins/tada_sidebar/Rakefile +22 -0
- data/vendor/plugins/tada_sidebar/init.rb +5 -0
- data/{app/models/aggregations → vendor/plugins/tada_sidebar/lib}/tada.rb +0 -0
- data/{components/plugins/sidebars/tada_controller.rb → vendor/plugins/tada_sidebar/lib/tada_sidebar.rb} +8 -4
- data/vendor/plugins/tada_sidebar/test/tada_sidebar_test.rb +8 -0
- data/{components/plugins/sidebars/tada → vendor/plugins/tada_sidebar/views}/content.rhtml +4 -4
- data/vendor/plugins/tag_sidebar/Rakefile +22 -0
- data/vendor/plugins/tag_sidebar/init.rb +5 -0
- data/vendor/plugins/tag_sidebar/lib/tag_sidebar.rb +24 -0
- data/vendor/plugins/tag_sidebar/test/tag_sidebar_test.rb +8 -0
- data/vendor/plugins/tag_sidebar/views/content.rhtml +8 -0
- data/vendor/plugins/technorati_sidebar/Rakefile +22 -0
- data/vendor/plugins/technorati_sidebar/init.rb +5 -0
- data/{app/models/aggregations → vendor/plugins/technorati_sidebar/lib}/technorati.rb +0 -0
- data/{components/plugins/sidebars/technorati_controller.rb → vendor/plugins/technorati_sidebar/lib/technorati_sidebar.rb} +8 -4
- data/vendor/plugins/technorati_sidebar/test/technorati_sidebar_test.rb +8 -0
- data/vendor/plugins/technorati_sidebar/views/content.rhtml +8 -0
- data/vendor/plugins/typo_textfilter_amazon/README +5 -0
- data/vendor/plugins/typo_textfilter_amazon/Rakefile +22 -0
- data/vendor/plugins/typo_textfilter_amazon/init.rb +4 -0
- data/vendor/plugins/typo_textfilter_amazon/install.rb +1 -0
- data/vendor/plugins/typo_textfilter_amazon/lib/typo_textfilter_amazon.rb +45 -0
- data/vendor/plugins/typo_textfilter_amazon/tasks/typo_textfilter_amazon_tasks.rake +4 -0
- data/vendor/plugins/typo_textfilter_amazon/test/typo_textfilter_amazon_test.rb +8 -0
- data/vendor/plugins/typo_textfilter_code/README +4 -0
- data/vendor/plugins/typo_textfilter_code/Rakefile +22 -0
- data/vendor/plugins/typo_textfilter_code/init.rb +4 -0
- data/vendor/plugins/typo_textfilter_code/install.rb +1 -0
- data/vendor/plugins/typo_textfilter_code/lib/typo_textfilter_code.rb +62 -0
- data/vendor/plugins/typo_textfilter_code/tasks/typo_textfilter_code_tasks.rake +4 -0
- data/vendor/plugins/typo_textfilter_code/test/typo_textfilter_code_test.rb +8 -0
- data/vendor/plugins/typo_textfilter_flickr/README +4 -0
- data/vendor/plugins/typo_textfilter_flickr/Rakefile +22 -0
- data/vendor/plugins/typo_textfilter_flickr/init.rb +4 -0
- data/vendor/plugins/typo_textfilter_flickr/install.rb +1 -0
- data/vendor/plugins/typo_textfilter_flickr/lib/typo_textfilter_flickr.rb +79 -0
- data/vendor/plugins/typo_textfilter_flickr/tasks/typo_textfilter_flickr_tasks.rake +4 -0
- data/vendor/plugins/typo_textfilter_flickr/test/typo_textfilter_flickr_test.rb +8 -0
- data/vendor/plugins/typo_textfilter_htmlfilter/README +4 -0
- data/vendor/plugins/typo_textfilter_htmlfilter/Rakefile +22 -0
- data/vendor/plugins/typo_textfilter_htmlfilter/init.rb +2 -0
- data/vendor/plugins/typo_textfilter_htmlfilter/install.rb +1 -0
- data/vendor/plugins/typo_textfilter_htmlfilter/lib/typo_textfilter_htmlfilter.rb +12 -0
- data/vendor/plugins/typo_textfilter_htmlfilter/tasks/typo_textfilter_htmlfilter_tasks.rake +4 -0
- data/vendor/plugins/typo_textfilter_htmlfilter/test/typo_textfilter_htmlfilter_test.rb +8 -0
- data/vendor/plugins/typo_textfilter_lightbox/README +4 -0
- data/vendor/plugins/typo_textfilter_lightbox/Rakefile +22 -0
- data/vendor/plugins/typo_textfilter_lightbox/init.rb +2 -0
- data/vendor/plugins/typo_textfilter_lightbox/install.rb +1 -0
- data/{components/plugins/textfilters/lightbox_controller.rb → vendor/plugins/typo_textfilter_lightbox/lib/typo_textfilter_lightbox.rb} +64 -61
- data/vendor/plugins/typo_textfilter_lightbox/tasks/typo_textfilter_lightbox_tasks.rake +4 -0
- data/vendor/plugins/typo_textfilter_lightbox/test/typo_textfilter_lightbox_test.rb +8 -0
- data/vendor/plugins/typo_textfilter_markdown/README +4 -0
- data/vendor/plugins/typo_textfilter_markdown/Rakefile +22 -0
- data/vendor/plugins/typo_textfilter_markdown/init.rb +2 -0
- data/vendor/plugins/typo_textfilter_markdown/install.rb +1 -0
- data/{components/plugins/textfilters/markdown_controller.rb → vendor/plugins/typo_textfilter_markdown/lib/typo_textfilter_markdown.rb} +13 -9
- data/vendor/plugins/typo_textfilter_markdown/tasks/typo_textfilter_markdown_tasks.rake +4 -0
- data/vendor/plugins/typo_textfilter_markdown/test/typo_textfilter_markdown_test.rb +8 -0
- data/vendor/plugins/typo_textfilter_none/README +4 -0
- data/vendor/plugins/typo_textfilter_none/Rakefile +22 -0
- data/vendor/plugins/typo_textfilter_none/init.rb +2 -0
- data/vendor/plugins/typo_textfilter_none/install.rb +1 -0
- data/vendor/plugins/typo_textfilter_none/lib/typo_textfilter_none.rb +12 -0
- data/vendor/plugins/typo_textfilter_none/tasks/typo_textfilter_none_tasks.rake +4 -0
- data/vendor/plugins/typo_textfilter_none/test/typo_textfilter_none_test.rb +8 -0
- data/vendor/plugins/typo_textfilter_smartypants/README +4 -0
- data/vendor/plugins/typo_textfilter_smartypants/Rakefile +22 -0
- data/vendor/plugins/typo_textfilter_smartypants/init.rb +2 -0
- data/vendor/plugins/typo_textfilter_smartypants/install.rb +1 -0
- data/vendor/plugins/typo_textfilter_smartypants/lib/typo_textfilter_smartypants.rb +12 -0
- data/vendor/plugins/typo_textfilter_smartypants/tasks/typo_textfilter_smartypants_tasks.rake +4 -0
- data/vendor/plugins/typo_textfilter_smartypants/test/typo_textfilter_smartypants_test.rb +8 -0
- data/vendor/plugins/typo_textfilter_sparkline/README +4 -0
- data/vendor/plugins/typo_textfilter_sparkline/Rakefile +22 -0
- data/vendor/plugins/typo_textfilter_sparkline/init.rb +2 -0
- data/vendor/plugins/typo_textfilter_sparkline/install.rb +1 -0
- data/vendor/plugins/typo_textfilter_sparkline/lib/typo_textfilter_sparkline.rb +92 -0
- data/vendor/plugins/typo_textfilter_sparkline/tasks/typo_textfilter_sparkline_tasks.rake +4 -0
- data/vendor/plugins/typo_textfilter_sparkline/test/typo_textfilter_sparkline_test.rb +8 -0
- data/vendor/plugins/typo_textfilter_textile/README +4 -0
- data/vendor/plugins/typo_textfilter_textile/Rakefile +22 -0
- data/vendor/plugins/typo_textfilter_textile/init.rb +2 -0
- data/vendor/plugins/typo_textfilter_textile/install.rb +1 -0
- data/vendor/plugins/typo_textfilter_textile/lib/typo_textfilter_textile.rb +18 -0
- data/vendor/plugins/typo_textfilter_textile/tasks/typo_textfilter_textile_tasks.rake +4 -0
- data/vendor/plugins/typo_textfilter_textile/test/typo_textfilter_textile_test.rb +8 -0
- data/vendor/plugins/typo_textfilter_textile_and_markdown/README +4 -0
- data/vendor/plugins/typo_textfilter_textile_and_markdown/Rakefile +22 -0
- data/vendor/plugins/typo_textfilter_textile_and_markdown/init.rb +2 -0
- data/vendor/plugins/typo_textfilter_textile_and_markdown/install.rb +1 -0
- data/vendor/plugins/typo_textfilter_textile_and_markdown/lib/typo_textfilter_textile_and_markdown.rb +12 -0
- data/vendor/plugins/typo_textfilter_textile_and_markdown/tasks/typo_textfilter_textile_and_markdown_tasks.rake +4 -0
- data/vendor/plugins/typo_textfilter_textile_and_markdown/test/typo_textfilter_textile_and_markdown_test.rb +8 -0
- data/vendor/plugins/typo_textfilter_tmcode/README +4 -0
- data/vendor/plugins/typo_textfilter_tmcode/Rakefile +22 -0
- data/vendor/plugins/typo_textfilter_tmcode/init.rb +3 -0
- data/vendor/plugins/typo_textfilter_tmcode/install.rb +1 -0
- data/vendor/plugins/typo_textfilter_tmcode/lib/typo_textfilter_tmcode.rb +86 -0
- data/vendor/plugins/typo_textfilter_tmcode/tasks/typo_textfilter_tmcode_tasks.rake +4 -0
- data/vendor/plugins/typo_textfilter_tmcode/test/typo_textfilter_tmcode_test.rb +8 -0
- data/vendor/plugins/upcoming_sidebar/Rakefile +22 -0
- data/vendor/plugins/upcoming_sidebar/init.rb +5 -0
- data/{app/models/aggregations → vendor/plugins/upcoming_sidebar/lib}/upcoming.rb +0 -0
- data/vendor/plugins/upcoming_sidebar/lib/upcoming_sidebar.rb +15 -0
- data/vendor/plugins/upcoming_sidebar/test/upcoming_sidebar_test.rb +8 -0
- data/{components/plugins/sidebars/upcoming → vendor/plugins/upcoming_sidebar/views}/content.rhtml +3 -3
- data/vendor/plugins/xbox_sidebar/Rakefile +22 -0
- data/vendor/plugins/xbox_sidebar/init.rb +5 -0
- data/{components/plugins/sidebars/xbox_controller.rb → vendor/plugins/xbox_sidebar/lib/xbox_sidebar.rb} +1 -1
- data/vendor/plugins/xbox_sidebar/test/xbox_sidebar_test.rb +8 -0
- data/vendor/plugins/xbox_sidebar/views/content.rhtml +2 -0
- data/vendor/plugins/xml_sidebar/Rakefile +22 -0
- data/vendor/plugins/xml_sidebar/init.rb +5 -0
- data/{components/plugins/sidebars/xml_controller.rb → vendor/plugins/xml_sidebar/lib/xml_sidebar.rb} +1 -1
- data/vendor/plugins/xml_sidebar/test/xml_sidebar_test.rb +8 -0
- data/vendor/plugins/xml_sidebar/views/content.rhtml +12 -0
- metadata +505 -101
- data/app/controllers/sidebar_controller.rb +0 -50
- data/app/models/content_observer.rb +0 -5
- data/components/plugins/sidebars/aimpresence/content.rhtml +0 -4
- data/components/plugins/sidebars/aimpresence_controller.rb +0 -10
- data/components/plugins/sidebars/amazon/content.rhtml +0 -4
- data/components/plugins/sidebars/amazon_controller.rb +0 -17
- data/components/plugins/sidebars/category/content.rhtml +0 -10
- data/components/plugins/sidebars/delicious/content.rhtml +0 -20
- data/components/plugins/sidebars/flickr_controller.rb +0 -16
- data/components/plugins/sidebars/fortythree/content.rhtml +0 -8
- data/components/plugins/sidebars/fortythreeplaces/content.rhtml +0 -8
- data/components/plugins/sidebars/magnolia/content.rhtml +0 -12
- data/components/plugins/sidebars/magnolia_controller.rb +0 -17
- data/components/plugins/sidebars/recent_comments_controller.rb +0 -23
- data/components/plugins/sidebars/static/content.rhtml +0 -2
- data/components/plugins/sidebars/tag/content.rhtml +0 -8
- data/components/plugins/sidebars/tag_controller.rb +0 -18
- data/components/plugins/sidebars/technorati/content.rhtml +0 -8
- data/components/plugins/sidebars/upcoming_controller.rb +0 -11
- data/components/plugins/sidebars/xbox/content.rhtml +0 -2
- data/components/plugins/sidebars/xml/content.rhtml +0 -12
- data/components/plugins/textfilters/amazon_controller.rb +0 -39
- data/components/plugins/textfilters/code_controller.rb +0 -59
- data/components/plugins/textfilters/flickr_controller.rb +0 -75
- data/components/plugins/textfilters/htmlfilter_controller.rb +0 -8
- data/components/plugins/textfilters/macropost_controller.rb +0 -14
- data/components/plugins/textfilters/macropre_controller.rb +0 -14
- data/components/plugins/textfilters/none_controller.rb +0 -8
- data/components/plugins/textfilters/smartypants_controller.rb +0 -8
- data/components/plugins/textfilters/sparkline_controller.rb +0 -88
- data/components/plugins/textfilters/textile_and_markdown_controller.rb +0 -8
- data/components/plugins/textfilters/textile_controller.rb +0 -14
- data/db/schema.mysql-v3.sql +0 -218
- data/lib/generators/sidebar/templates/components/plugins/sidebars/controller_template.rb +0 -20
- data/lib/generators/sidebar/templates/components/plugins/sidebars/views/content_template.rhtml +0 -4
- data/lib/rails_patch/components.rb +0 -14
- data/public/images/checked.gif +0 -0
- data/test/unit/observer_test.rb +0 -40
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
/* Prototype JavaScript framework, version 1.5.
|
|
2
|
-
* (c) 2005 Sam Stephenson
|
|
1
|
+
/* Prototype JavaScript framework, version 1.5.0
|
|
2
|
+
* (c) 2005-2007 Sam Stephenson
|
|
3
3
|
*
|
|
4
4
|
* Prototype is freely distributable under the terms of an MIT-style license.
|
|
5
5
|
* For details, see the Prototype web site: http://prototype.conio.net/
|
|
@@ -7,11 +7,14 @@
|
|
|
7
7
|
/*--------------------------------------------------------------------------*/
|
|
8
8
|
|
|
9
9
|
var Prototype = {
|
|
10
|
-
Version: '1.5.
|
|
11
|
-
|
|
10
|
+
Version: '1.5.0',
|
|
11
|
+
BrowserFeatures: {
|
|
12
|
+
XPath: !!document.evaluate
|
|
13
|
+
},
|
|
12
14
|
|
|
15
|
+
ScriptFragment: '(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)',
|
|
13
16
|
emptyFunction: function() {},
|
|
14
|
-
K: function(x) {return x}
|
|
17
|
+
K: function(x) { return x }
|
|
15
18
|
}
|
|
16
19
|
|
|
17
20
|
var Class = {
|
|
@@ -31,16 +34,36 @@ Object.extend = function(destination, source) {
|
|
|
31
34
|
return destination;
|
|
32
35
|
}
|
|
33
36
|
|
|
34
|
-
Object.
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
37
|
+
Object.extend(Object, {
|
|
38
|
+
inspect: function(object) {
|
|
39
|
+
try {
|
|
40
|
+
if (object === undefined) return 'undefined';
|
|
41
|
+
if (object === null) return 'null';
|
|
42
|
+
return object.inspect ? object.inspect() : object.toString();
|
|
43
|
+
} catch (e) {
|
|
44
|
+
if (e instanceof RangeError) return '...';
|
|
45
|
+
throw e;
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
|
|
49
|
+
keys: function(object) {
|
|
50
|
+
var keys = [];
|
|
51
|
+
for (var property in object)
|
|
52
|
+
keys.push(property);
|
|
53
|
+
return keys;
|
|
54
|
+
},
|
|
55
|
+
|
|
56
|
+
values: function(object) {
|
|
57
|
+
var values = [];
|
|
58
|
+
for (var property in object)
|
|
59
|
+
values.push(object[property]);
|
|
60
|
+
return values;
|
|
61
|
+
},
|
|
62
|
+
|
|
63
|
+
clone: function(object) {
|
|
64
|
+
return Object.extend({}, object);
|
|
42
65
|
}
|
|
43
|
-
}
|
|
66
|
+
});
|
|
44
67
|
|
|
45
68
|
Function.prototype.bind = function() {
|
|
46
69
|
var __method = this, args = $A(arguments), object = args.shift();
|
|
@@ -50,9 +73,9 @@ Function.prototype.bind = function() {
|
|
|
50
73
|
}
|
|
51
74
|
|
|
52
75
|
Function.prototype.bindAsEventListener = function(object) {
|
|
53
|
-
var __method = this;
|
|
76
|
+
var __method = this, args = $A(arguments), object = args.shift();
|
|
54
77
|
return function(event) {
|
|
55
|
-
return __method.
|
|
78
|
+
return __method.apply(object, [( event || window.event)].concat(args).concat($A(arguments)));
|
|
56
79
|
}
|
|
57
80
|
}
|
|
58
81
|
|
|
@@ -77,7 +100,7 @@ var Try = {
|
|
|
77
100
|
these: function() {
|
|
78
101
|
var returnValue;
|
|
79
102
|
|
|
80
|
-
for (var i = 0; i <
|
|
103
|
+
for (var i = 0, length = arguments.length; i < length; i++) {
|
|
81
104
|
var lambda = arguments[i];
|
|
82
105
|
try {
|
|
83
106
|
returnValue = lambda();
|
|
@@ -102,20 +125,30 @@ PeriodicalExecuter.prototype = {
|
|
|
102
125
|
},
|
|
103
126
|
|
|
104
127
|
registerCallback: function() {
|
|
105
|
-
setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);
|
|
128
|
+
this.timer = setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);
|
|
129
|
+
},
|
|
130
|
+
|
|
131
|
+
stop: function() {
|
|
132
|
+
if (!this.timer) return;
|
|
133
|
+
clearInterval(this.timer);
|
|
134
|
+
this.timer = null;
|
|
106
135
|
},
|
|
107
136
|
|
|
108
137
|
onTimerEvent: function() {
|
|
109
138
|
if (!this.currentlyExecuting) {
|
|
110
139
|
try {
|
|
111
140
|
this.currentlyExecuting = true;
|
|
112
|
-
this.callback();
|
|
141
|
+
this.callback(this);
|
|
113
142
|
} finally {
|
|
114
143
|
this.currentlyExecuting = false;
|
|
115
144
|
}
|
|
116
145
|
}
|
|
117
146
|
}
|
|
118
147
|
}
|
|
148
|
+
String.interpret = function(value){
|
|
149
|
+
return value == null ? '' : String(value);
|
|
150
|
+
}
|
|
151
|
+
|
|
119
152
|
Object.extend(String.prototype, {
|
|
120
153
|
gsub: function(pattern, replacement) {
|
|
121
154
|
var result = '', source = this, match;
|
|
@@ -124,7 +157,7 @@ Object.extend(String.prototype, {
|
|
|
124
157
|
while (source.length > 0) {
|
|
125
158
|
if (match = source.match(pattern)) {
|
|
126
159
|
result += source.slice(0, match.index);
|
|
127
|
-
result += (replacement(match)
|
|
160
|
+
result += String.interpret(replacement(match));
|
|
128
161
|
source = source.slice(match.index + match[0].length);
|
|
129
162
|
} else {
|
|
130
163
|
result += source, source = '';
|
|
@@ -189,15 +222,28 @@ Object.extend(String.prototype, {
|
|
|
189
222
|
unescapeHTML: function() {
|
|
190
223
|
var div = document.createElement('div');
|
|
191
224
|
div.innerHTML = this.stripTags();
|
|
192
|
-
return div.childNodes[0] ? div.childNodes
|
|
225
|
+
return div.childNodes[0] ? (div.childNodes.length > 1 ?
|
|
226
|
+
$A(div.childNodes).inject('',function(memo,node){ return memo+node.nodeValue }) :
|
|
227
|
+
div.childNodes[0].nodeValue) : '';
|
|
193
228
|
},
|
|
194
229
|
|
|
195
|
-
toQueryParams: function() {
|
|
196
|
-
var
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
230
|
+
toQueryParams: function(separator) {
|
|
231
|
+
var match = this.strip().match(/([^?#]*)(#.*)?$/);
|
|
232
|
+
if (!match) return {};
|
|
233
|
+
|
|
234
|
+
return match[1].split(separator || '&').inject({}, function(hash, pair) {
|
|
235
|
+
if ((pair = pair.split('='))[0]) {
|
|
236
|
+
var name = decodeURIComponent(pair[0]);
|
|
237
|
+
var value = pair[1] ? decodeURIComponent(pair[1]) : undefined;
|
|
238
|
+
|
|
239
|
+
if (hash[name] !== undefined) {
|
|
240
|
+
if (hash[name].constructor != Array)
|
|
241
|
+
hash[name] = [hash[name]];
|
|
242
|
+
if (value) hash[name].push(value);
|
|
243
|
+
}
|
|
244
|
+
else hash[name] = value;
|
|
245
|
+
}
|
|
246
|
+
return hash;
|
|
201
247
|
});
|
|
202
248
|
},
|
|
203
249
|
|
|
@@ -205,24 +251,43 @@ Object.extend(String.prototype, {
|
|
|
205
251
|
return this.split('');
|
|
206
252
|
},
|
|
207
253
|
|
|
254
|
+
succ: function() {
|
|
255
|
+
return this.slice(0, this.length - 1) +
|
|
256
|
+
String.fromCharCode(this.charCodeAt(this.length - 1) + 1);
|
|
257
|
+
},
|
|
258
|
+
|
|
208
259
|
camelize: function() {
|
|
209
|
-
var
|
|
210
|
-
if (
|
|
260
|
+
var parts = this.split('-'), len = parts.length;
|
|
261
|
+
if (len == 1) return parts[0];
|
|
211
262
|
|
|
212
|
-
var
|
|
213
|
-
?
|
|
214
|
-
:
|
|
263
|
+
var camelized = this.charAt(0) == '-'
|
|
264
|
+
? parts[0].charAt(0).toUpperCase() + parts[0].substring(1)
|
|
265
|
+
: parts[0];
|
|
215
266
|
|
|
216
|
-
for (var i = 1
|
|
217
|
-
|
|
218
|
-
camelizedString += s.charAt(0).toUpperCase() + s.substring(1);
|
|
219
|
-
}
|
|
267
|
+
for (var i = 1; i < len; i++)
|
|
268
|
+
camelized += parts[i].charAt(0).toUpperCase() + parts[i].substring(1);
|
|
220
269
|
|
|
221
|
-
return
|
|
270
|
+
return camelized;
|
|
222
271
|
},
|
|
223
272
|
|
|
224
|
-
|
|
225
|
-
return
|
|
273
|
+
capitalize: function(){
|
|
274
|
+
return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase();
|
|
275
|
+
},
|
|
276
|
+
|
|
277
|
+
underscore: function() {
|
|
278
|
+
return this.gsub(/::/, '/').gsub(/([A-Z]+)([A-Z][a-z])/,'#{1}_#{2}').gsub(/([a-z\d])([A-Z])/,'#{1}_#{2}').gsub(/-/,'_').toLowerCase();
|
|
279
|
+
},
|
|
280
|
+
|
|
281
|
+
dasherize: function() {
|
|
282
|
+
return this.gsub(/_/,'-');
|
|
283
|
+
},
|
|
284
|
+
|
|
285
|
+
inspect: function(useDoubleQuotes) {
|
|
286
|
+
var escapedString = this.replace(/\\/g, '\\\\');
|
|
287
|
+
if (useDoubleQuotes)
|
|
288
|
+
return '"' + escapedString.replace(/"/g, '\\"') + '"';
|
|
289
|
+
else
|
|
290
|
+
return "'" + escapedString.replace(/'/g, '\\\'') + "'";
|
|
226
291
|
}
|
|
227
292
|
});
|
|
228
293
|
|
|
@@ -246,7 +311,7 @@ Template.prototype = {
|
|
|
246
311
|
return this.template.gsub(this.pattern, function(match) {
|
|
247
312
|
var before = match[1];
|
|
248
313
|
if (before == '\\') return match[2];
|
|
249
|
-
return before + (object[match[3]]
|
|
314
|
+
return before + String.interpret(object[match[3]]);
|
|
250
315
|
});
|
|
251
316
|
}
|
|
252
317
|
}
|
|
@@ -268,6 +333,14 @@ var Enumerable = {
|
|
|
268
333
|
} catch (e) {
|
|
269
334
|
if (e != $break) throw e;
|
|
270
335
|
}
|
|
336
|
+
return this;
|
|
337
|
+
},
|
|
338
|
+
|
|
339
|
+
eachSlice: function(number, iterator) {
|
|
340
|
+
var index = -number, slices = [], array = this.toArray();
|
|
341
|
+
while ((index += number) < array.length)
|
|
342
|
+
slices.push(array.slice(index, index+number));
|
|
343
|
+
return slices.map(iterator);
|
|
271
344
|
},
|
|
272
345
|
|
|
273
346
|
all: function(iterator) {
|
|
@@ -280,7 +353,7 @@ var Enumerable = {
|
|
|
280
353
|
},
|
|
281
354
|
|
|
282
355
|
any: function(iterator) {
|
|
283
|
-
var result =
|
|
356
|
+
var result = false;
|
|
284
357
|
this.each(function(value, index) {
|
|
285
358
|
if (result = !!(iterator || Prototype.K)(value, index))
|
|
286
359
|
throw $break;
|
|
@@ -291,12 +364,12 @@ var Enumerable = {
|
|
|
291
364
|
collect: function(iterator) {
|
|
292
365
|
var results = [];
|
|
293
366
|
this.each(function(value, index) {
|
|
294
|
-
results.push(iterator(value, index));
|
|
367
|
+
results.push((iterator || Prototype.K)(value, index));
|
|
295
368
|
});
|
|
296
369
|
return results;
|
|
297
370
|
},
|
|
298
371
|
|
|
299
|
-
detect: function
|
|
372
|
+
detect: function(iterator) {
|
|
300
373
|
var result;
|
|
301
374
|
this.each(function(value, index) {
|
|
302
375
|
if (iterator(value, index)) {
|
|
@@ -337,6 +410,14 @@ var Enumerable = {
|
|
|
337
410
|
return found;
|
|
338
411
|
},
|
|
339
412
|
|
|
413
|
+
inGroupsOf: function(number, fillWith) {
|
|
414
|
+
fillWith = fillWith === undefined ? null : fillWith;
|
|
415
|
+
return this.eachSlice(number, function(slice) {
|
|
416
|
+
while(slice.length < number) slice.push(fillWith);
|
|
417
|
+
return slice;
|
|
418
|
+
});
|
|
419
|
+
},
|
|
420
|
+
|
|
340
421
|
inject: function(memo, iterator) {
|
|
341
422
|
this.each(function(value, index) {
|
|
342
423
|
memo = iterator(memo, value, index);
|
|
@@ -346,7 +427,7 @@ var Enumerable = {
|
|
|
346
427
|
|
|
347
428
|
invoke: function(method) {
|
|
348
429
|
var args = $A(arguments).slice(1);
|
|
349
|
-
return this.
|
|
430
|
+
return this.map(function(value) {
|
|
350
431
|
return value[method].apply(value, args);
|
|
351
432
|
});
|
|
352
433
|
},
|
|
@@ -398,7 +479,7 @@ var Enumerable = {
|
|
|
398
479
|
},
|
|
399
480
|
|
|
400
481
|
sortBy: function(iterator) {
|
|
401
|
-
return this.
|
|
482
|
+
return this.map(function(value, index) {
|
|
402
483
|
return {value: value, criteria: iterator(value, index)};
|
|
403
484
|
}).sort(function(left, right) {
|
|
404
485
|
var a = left.criteria, b = right.criteria;
|
|
@@ -407,7 +488,7 @@ var Enumerable = {
|
|
|
407
488
|
},
|
|
408
489
|
|
|
409
490
|
toArray: function() {
|
|
410
|
-
return this.
|
|
491
|
+
return this.map();
|
|
411
492
|
},
|
|
412
493
|
|
|
413
494
|
zip: function() {
|
|
@@ -421,6 +502,10 @@ var Enumerable = {
|
|
|
421
502
|
});
|
|
422
503
|
},
|
|
423
504
|
|
|
505
|
+
size: function() {
|
|
506
|
+
return this.toArray().length;
|
|
507
|
+
},
|
|
508
|
+
|
|
424
509
|
inspect: function() {
|
|
425
510
|
return '#<Enumerable:' + this.toArray().inspect() + '>';
|
|
426
511
|
}
|
|
@@ -439,7 +524,7 @@ var $A = Array.from = function(iterable) {
|
|
|
439
524
|
return iterable.toArray();
|
|
440
525
|
} else {
|
|
441
526
|
var results = [];
|
|
442
|
-
for (var i = 0; i <
|
|
527
|
+
for (var i = 0, length = iterable.length; i < length; i++)
|
|
443
528
|
results.push(iterable[i]);
|
|
444
529
|
return results;
|
|
445
530
|
}
|
|
@@ -452,7 +537,7 @@ if (!Array.prototype._reverse)
|
|
|
452
537
|
|
|
453
538
|
Object.extend(Array.prototype, {
|
|
454
539
|
_each: function(iterator) {
|
|
455
|
-
for (var i = 0; i <
|
|
540
|
+
for (var i = 0, length = this.length; i < length; i++)
|
|
456
541
|
iterator(this[i]);
|
|
457
542
|
},
|
|
458
543
|
|
|
@@ -471,7 +556,7 @@ Object.extend(Array.prototype, {
|
|
|
471
556
|
|
|
472
557
|
compact: function() {
|
|
473
558
|
return this.select(function(value) {
|
|
474
|
-
return value !=
|
|
559
|
+
return value != null;
|
|
475
560
|
});
|
|
476
561
|
},
|
|
477
562
|
|
|
@@ -490,7 +575,7 @@ Object.extend(Array.prototype, {
|
|
|
490
575
|
},
|
|
491
576
|
|
|
492
577
|
indexOf: function(object) {
|
|
493
|
-
for (var i = 0; i <
|
|
578
|
+
for (var i = 0, length = this.length; i < length; i++)
|
|
494
579
|
if (this[i] == object) return i;
|
|
495
580
|
return -1;
|
|
496
581
|
},
|
|
@@ -499,15 +584,88 @@ Object.extend(Array.prototype, {
|
|
|
499
584
|
return (inline !== false ? this : this.toArray())._reverse();
|
|
500
585
|
},
|
|
501
586
|
|
|
587
|
+
reduce: function() {
|
|
588
|
+
return this.length > 1 ? this : this[0];
|
|
589
|
+
},
|
|
590
|
+
|
|
591
|
+
uniq: function() {
|
|
592
|
+
return this.inject([], function(array, value) {
|
|
593
|
+
return array.include(value) ? array : array.concat([value]);
|
|
594
|
+
});
|
|
595
|
+
},
|
|
596
|
+
|
|
597
|
+
clone: function() {
|
|
598
|
+
return [].concat(this);
|
|
599
|
+
},
|
|
600
|
+
|
|
601
|
+
size: function() {
|
|
602
|
+
return this.length;
|
|
603
|
+
},
|
|
604
|
+
|
|
502
605
|
inspect: function() {
|
|
503
606
|
return '[' + this.map(Object.inspect).join(', ') + ']';
|
|
504
607
|
}
|
|
505
608
|
});
|
|
506
|
-
|
|
609
|
+
|
|
610
|
+
Array.prototype.toArray = Array.prototype.clone;
|
|
611
|
+
|
|
612
|
+
function $w(string){
|
|
613
|
+
string = string.strip();
|
|
614
|
+
return string ? string.split(/\s+/) : [];
|
|
615
|
+
}
|
|
616
|
+
|
|
617
|
+
if(window.opera){
|
|
618
|
+
Array.prototype.concat = function(){
|
|
619
|
+
var array = [];
|
|
620
|
+
for(var i = 0, length = this.length; i < length; i++) array.push(this[i]);
|
|
621
|
+
for(var i = 0, length = arguments.length; i < length; i++) {
|
|
622
|
+
if(arguments[i].constructor == Array) {
|
|
623
|
+
for(var j = 0, arrayLength = arguments[i].length; j < arrayLength; j++)
|
|
624
|
+
array.push(arguments[i][j]);
|
|
625
|
+
} else {
|
|
626
|
+
array.push(arguments[i]);
|
|
627
|
+
}
|
|
628
|
+
}
|
|
629
|
+
return array;
|
|
630
|
+
}
|
|
631
|
+
}
|
|
632
|
+
var Hash = function(obj) {
|
|
633
|
+
Object.extend(this, obj || {});
|
|
634
|
+
};
|
|
635
|
+
|
|
636
|
+
Object.extend(Hash, {
|
|
637
|
+
toQueryString: function(obj) {
|
|
638
|
+
var parts = [];
|
|
639
|
+
|
|
640
|
+
this.prototype._each.call(obj, function(pair) {
|
|
641
|
+
if (!pair.key) return;
|
|
642
|
+
|
|
643
|
+
if (pair.value && pair.value.constructor == Array) {
|
|
644
|
+
var values = pair.value.compact();
|
|
645
|
+
if (values.length < 2) pair.value = values.reduce();
|
|
646
|
+
else {
|
|
647
|
+
key = encodeURIComponent(pair.key);
|
|
648
|
+
values.each(function(value) {
|
|
649
|
+
value = value != undefined ? encodeURIComponent(value) : '';
|
|
650
|
+
parts.push(key + '=' + encodeURIComponent(value));
|
|
651
|
+
});
|
|
652
|
+
return;
|
|
653
|
+
}
|
|
654
|
+
}
|
|
655
|
+
if (pair.value == undefined) pair[1] = '';
|
|
656
|
+
parts.push(pair.map(encodeURIComponent).join('='));
|
|
657
|
+
});
|
|
658
|
+
|
|
659
|
+
return parts.join('&');
|
|
660
|
+
}
|
|
661
|
+
});
|
|
662
|
+
|
|
663
|
+
Object.extend(Hash.prototype, Enumerable);
|
|
664
|
+
Object.extend(Hash.prototype, {
|
|
507
665
|
_each: function(iterator) {
|
|
508
666
|
for (var key in this) {
|
|
509
667
|
var value = this[key];
|
|
510
|
-
if (
|
|
668
|
+
if (value && value == Hash.prototype[key]) continue;
|
|
511
669
|
|
|
512
670
|
var pair = [key, value];
|
|
513
671
|
pair.key = key;
|
|
@@ -525,16 +683,30 @@ var Hash = {
|
|
|
525
683
|
},
|
|
526
684
|
|
|
527
685
|
merge: function(hash) {
|
|
528
|
-
return $H(hash).inject(
|
|
686
|
+
return $H(hash).inject(this, function(mergedHash, pair) {
|
|
529
687
|
mergedHash[pair.key] = pair.value;
|
|
530
688
|
return mergedHash;
|
|
531
689
|
});
|
|
532
690
|
},
|
|
533
691
|
|
|
692
|
+
remove: function() {
|
|
693
|
+
var result;
|
|
694
|
+
for(var i = 0, length = arguments.length; i < length; i++) {
|
|
695
|
+
var value = this[arguments[i]];
|
|
696
|
+
if (value !== undefined){
|
|
697
|
+
if (result === undefined) result = value;
|
|
698
|
+
else {
|
|
699
|
+
if (result.constructor != Array) result = [result];
|
|
700
|
+
result.push(value)
|
|
701
|
+
}
|
|
702
|
+
}
|
|
703
|
+
delete this[arguments[i]];
|
|
704
|
+
}
|
|
705
|
+
return result;
|
|
706
|
+
},
|
|
707
|
+
|
|
534
708
|
toQueryString: function() {
|
|
535
|
-
return
|
|
536
|
-
return pair.map(encodeURIComponent).join('=');
|
|
537
|
-
}).join('&');
|
|
709
|
+
return Hash.toQueryString(this);
|
|
538
710
|
},
|
|
539
711
|
|
|
540
712
|
inspect: function() {
|
|
@@ -542,14 +714,12 @@ var Hash = {
|
|
|
542
714
|
return pair.map(Object.inspect).join(': ');
|
|
543
715
|
}).join(', ') + '}>';
|
|
544
716
|
}
|
|
545
|
-
}
|
|
717
|
+
});
|
|
546
718
|
|
|
547
719
|
function $H(object) {
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
return hash;
|
|
552
|
-
}
|
|
720
|
+
if (object && object.constructor == Hash) return object;
|
|
721
|
+
return new Hash(object);
|
|
722
|
+
};
|
|
553
723
|
ObjectRange = Class.create();
|
|
554
724
|
Object.extend(ObjectRange.prototype, Enumerable);
|
|
555
725
|
Object.extend(ObjectRange.prototype, {
|
|
@@ -561,10 +731,10 @@ Object.extend(ObjectRange.prototype, {
|
|
|
561
731
|
|
|
562
732
|
_each: function(iterator) {
|
|
563
733
|
var value = this.start;
|
|
564
|
-
|
|
734
|
+
while (this.include(value)) {
|
|
565
735
|
iterator(value);
|
|
566
736
|
value = value.succ();
|
|
567
|
-
}
|
|
737
|
+
}
|
|
568
738
|
},
|
|
569
739
|
|
|
570
740
|
include: function(value) {
|
|
@@ -599,18 +769,18 @@ Ajax.Responders = {
|
|
|
599
769
|
this.responders._each(iterator);
|
|
600
770
|
},
|
|
601
771
|
|
|
602
|
-
register: function(
|
|
603
|
-
if (!this.include(
|
|
604
|
-
this.responders.push(
|
|
772
|
+
register: function(responder) {
|
|
773
|
+
if (!this.include(responder))
|
|
774
|
+
this.responders.push(responder);
|
|
605
775
|
},
|
|
606
776
|
|
|
607
|
-
unregister: function(
|
|
608
|
-
this.responders = this.responders.without(
|
|
777
|
+
unregister: function(responder) {
|
|
778
|
+
this.responders = this.responders.without(responder);
|
|
609
779
|
},
|
|
610
780
|
|
|
611
781
|
dispatch: function(callback, request, transport, json) {
|
|
612
782
|
this.each(function(responder) {
|
|
613
|
-
if (
|
|
783
|
+
if (typeof responder[callback] == 'function') {
|
|
614
784
|
try {
|
|
615
785
|
responder[callback].apply(responder, [request, transport, json]);
|
|
616
786
|
} catch (e) {}
|
|
@@ -625,7 +795,6 @@ Ajax.Responders.register({
|
|
|
625
795
|
onCreate: function() {
|
|
626
796
|
Ajax.activeRequestCount++;
|
|
627
797
|
},
|
|
628
|
-
|
|
629
798
|
onComplete: function() {
|
|
630
799
|
Ajax.activeRequestCount--;
|
|
631
800
|
}
|
|
@@ -638,19 +807,14 @@ Ajax.Base.prototype = {
|
|
|
638
807
|
method: 'post',
|
|
639
808
|
asynchronous: true,
|
|
640
809
|
contentType: 'application/x-www-form-urlencoded',
|
|
810
|
+
encoding: 'UTF-8',
|
|
641
811
|
parameters: ''
|
|
642
812
|
}
|
|
643
813
|
Object.extend(this.options, options || {});
|
|
644
|
-
},
|
|
645
|
-
|
|
646
|
-
responseIsSuccess: function() {
|
|
647
|
-
return this.transport.status == undefined
|
|
648
|
-
|| this.transport.status == 0
|
|
649
|
-
|| (this.transport.status >= 200 && this.transport.status < 300);
|
|
650
|
-
},
|
|
651
814
|
|
|
652
|
-
|
|
653
|
-
|
|
815
|
+
this.options.method = this.options.method.toLowerCase();
|
|
816
|
+
if (typeof this.options.parameters == 'string')
|
|
817
|
+
this.options.parameters = this.options.parameters.toQueryParams();
|
|
654
818
|
}
|
|
655
819
|
}
|
|
656
820
|
|
|
@@ -659,6 +823,8 @@ Ajax.Request.Events =
|
|
|
659
823
|
['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];
|
|
660
824
|
|
|
661
825
|
Ajax.Request.prototype = Object.extend(new Ajax.Base(), {
|
|
826
|
+
_complete: false,
|
|
827
|
+
|
|
662
828
|
initialize: function(url, options) {
|
|
663
829
|
this.transport = Ajax.getTransport();
|
|
664
830
|
this.setOptions(options);
|
|
@@ -666,111 +832,146 @@ Ajax.Request.prototype = Object.extend(new Ajax.Base(), {
|
|
|
666
832
|
},
|
|
667
833
|
|
|
668
834
|
request: function(url) {
|
|
669
|
-
|
|
670
|
-
|
|
835
|
+
this.url = url;
|
|
836
|
+
this.method = this.options.method;
|
|
837
|
+
var params = this.options.parameters;
|
|
671
838
|
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
839
|
+
if (!['get', 'post'].include(this.method)) {
|
|
840
|
+
// simulate other verbs over post
|
|
841
|
+
params['_method'] = this.method;
|
|
842
|
+
this.method = 'post';
|
|
843
|
+
}
|
|
676
844
|
|
|
845
|
+
params = Hash.toQueryString(params);
|
|
846
|
+
if (params && /Konqueror|Safari|KHTML/.test(navigator.userAgent)) params += '&_='
|
|
847
|
+
|
|
848
|
+
// when GET, append parameters to URL
|
|
849
|
+
if (this.method == 'get' && params)
|
|
850
|
+
this.url += (this.url.indexOf('?') > -1 ? '&' : '?') + params;
|
|
851
|
+
|
|
852
|
+
try {
|
|
677
853
|
Ajax.Responders.dispatch('onCreate', this, this.transport);
|
|
678
854
|
|
|
679
|
-
this.transport.open(this.
|
|
855
|
+
this.transport.open(this.method.toUpperCase(), this.url,
|
|
680
856
|
this.options.asynchronous);
|
|
681
857
|
|
|
682
|
-
if (this.options.asynchronous)
|
|
683
|
-
|
|
684
|
-
setTimeout((function() {this.respondToReadyState(1)}).bind(this), 10);
|
|
685
|
-
}
|
|
858
|
+
if (this.options.asynchronous)
|
|
859
|
+
setTimeout(function() { this.respondToReadyState(1) }.bind(this), 10);
|
|
686
860
|
|
|
861
|
+
this.transport.onreadystatechange = this.onStateChange.bind(this);
|
|
687
862
|
this.setRequestHeaders();
|
|
688
863
|
|
|
689
|
-
var body = this.
|
|
690
|
-
this.transport.send(this.options.method == 'post' ? body : null);
|
|
864
|
+
var body = this.method == 'post' ? (this.options.postBody || params) : null;
|
|
691
865
|
|
|
692
|
-
|
|
693
|
-
this.dispatchException(e);
|
|
694
|
-
}
|
|
695
|
-
},
|
|
696
|
-
|
|
697
|
-
setRequestHeaders: function() {
|
|
698
|
-
var requestHeaders =
|
|
699
|
-
['X-Requested-With', 'XMLHttpRequest',
|
|
700
|
-
'X-Prototype-Version', Prototype.Version,
|
|
701
|
-
'Accept', 'text/javascript, text/html, application/xml, text/xml, */*'];
|
|
866
|
+
this.transport.send(body);
|
|
702
867
|
|
|
703
|
-
|
|
704
|
-
|
|
868
|
+
/* Force Firefox to handle ready state 4 for synchronous requests */
|
|
869
|
+
if (!this.options.asynchronous && this.transport.overrideMimeType)
|
|
870
|
+
this.onStateChange();
|
|
705
871
|
|
|
706
|
-
/* Force "Connection: close" for Mozilla browsers to work around
|
|
707
|
-
* a bug where XMLHttpReqeuest sends an incorrect Content-length
|
|
708
|
-
* header. See Mozilla Bugzilla #246651.
|
|
709
|
-
*/
|
|
710
|
-
if (this.transport.overrideMimeType)
|
|
711
|
-
requestHeaders.push('Connection', 'close');
|
|
712
872
|
}
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
for (var i = 0; i < requestHeaders.length; i += 2)
|
|
718
|
-
this.transport.setRequestHeader(requestHeaders[i], requestHeaders[i+1]);
|
|
873
|
+
catch (e) {
|
|
874
|
+
this.dispatchException(e);
|
|
875
|
+
}
|
|
719
876
|
},
|
|
720
877
|
|
|
721
878
|
onStateChange: function() {
|
|
722
879
|
var readyState = this.transport.readyState;
|
|
723
|
-
if (readyState
|
|
880
|
+
if (readyState > 1 && !((readyState == 4) && this._complete))
|
|
724
881
|
this.respondToReadyState(this.transport.readyState);
|
|
725
882
|
},
|
|
726
883
|
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
884
|
+
setRequestHeaders: function() {
|
|
885
|
+
var headers = {
|
|
886
|
+
'X-Requested-With': 'XMLHttpRequest',
|
|
887
|
+
'X-Prototype-Version': Prototype.Version,
|
|
888
|
+
'Accept': 'text/javascript, text/html, application/xml, text/xml, */*'
|
|
889
|
+
};
|
|
890
|
+
|
|
891
|
+
if (this.method == 'post') {
|
|
892
|
+
headers['Content-type'] = this.options.contentType +
|
|
893
|
+
(this.options.encoding ? '; charset=' + this.options.encoding : '');
|
|
894
|
+
|
|
895
|
+
/* Force "Connection: close" for older Mozilla browsers to work
|
|
896
|
+
* around a bug where XMLHttpRequest sends an incorrect
|
|
897
|
+
* Content-length header. See Mozilla Bugzilla #246651.
|
|
898
|
+
*/
|
|
899
|
+
if (this.transport.overrideMimeType &&
|
|
900
|
+
(navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 2005)
|
|
901
|
+
headers['Connection'] = 'close';
|
|
902
|
+
}
|
|
732
903
|
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
} catch (e) {}
|
|
737
|
-
},
|
|
904
|
+
// user-defined headers
|
|
905
|
+
if (typeof this.options.requestHeaders == 'object') {
|
|
906
|
+
var extras = this.options.requestHeaders;
|
|
738
907
|
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
908
|
+
if (typeof extras.push == 'function')
|
|
909
|
+
for (var i = 0, length = extras.length; i < length; i += 2)
|
|
910
|
+
headers[extras[i]] = extras[i+1];
|
|
911
|
+
else
|
|
912
|
+
$H(extras).each(function(pair) { headers[pair.key] = pair.value });
|
|
744
913
|
}
|
|
914
|
+
|
|
915
|
+
for (var name in headers)
|
|
916
|
+
this.transport.setRequestHeader(name, headers[name]);
|
|
917
|
+
},
|
|
918
|
+
|
|
919
|
+
success: function() {
|
|
920
|
+
return !this.transport.status
|
|
921
|
+
|| (this.transport.status >= 200 && this.transport.status < 300);
|
|
745
922
|
},
|
|
746
923
|
|
|
747
924
|
respondToReadyState: function(readyState) {
|
|
748
|
-
var
|
|
925
|
+
var state = Ajax.Request.Events[readyState];
|
|
749
926
|
var transport = this.transport, json = this.evalJSON();
|
|
750
927
|
|
|
751
|
-
if (
|
|
928
|
+
if (state == 'Complete') {
|
|
752
929
|
try {
|
|
930
|
+
this._complete = true;
|
|
753
931
|
(this.options['on' + this.transport.status]
|
|
754
|
-
|| this.options['on' + (this.
|
|
932
|
+
|| this.options['on' + (this.success() ? 'Success' : 'Failure')]
|
|
755
933
|
|| Prototype.emptyFunction)(transport, json);
|
|
756
934
|
} catch (e) {
|
|
757
935
|
this.dispatchException(e);
|
|
758
936
|
}
|
|
759
937
|
|
|
760
|
-
if ((this.
|
|
761
|
-
|
|
938
|
+
if ((this.getHeader('Content-type') || 'text/javascript').strip().
|
|
939
|
+
match(/^(text|application)\/(x-)?(java|ecma)script(;.*)?$/i))
|
|
940
|
+
this.evalResponse();
|
|
762
941
|
}
|
|
763
942
|
|
|
764
943
|
try {
|
|
765
|
-
(this.options['on' +
|
|
766
|
-
Ajax.Responders.dispatch('on' +
|
|
944
|
+
(this.options['on' + state] || Prototype.emptyFunction)(transport, json);
|
|
945
|
+
Ajax.Responders.dispatch('on' + state, this, transport, json);
|
|
767
946
|
} catch (e) {
|
|
768
947
|
this.dispatchException(e);
|
|
769
948
|
}
|
|
770
949
|
|
|
771
|
-
|
|
772
|
-
|
|
950
|
+
if (state == 'Complete') {
|
|
951
|
+
// avoid memory leak in MSIE: clean up
|
|
773
952
|
this.transport.onreadystatechange = Prototype.emptyFunction;
|
|
953
|
+
}
|
|
954
|
+
},
|
|
955
|
+
|
|
956
|
+
getHeader: function(name) {
|
|
957
|
+
try {
|
|
958
|
+
return this.transport.getResponseHeader(name);
|
|
959
|
+
} catch (e) { return null }
|
|
960
|
+
},
|
|
961
|
+
|
|
962
|
+
evalJSON: function() {
|
|
963
|
+
try {
|
|
964
|
+
var json = this.getHeader('X-JSON');
|
|
965
|
+
return json ? eval('(' + json + ')') : null;
|
|
966
|
+
} catch (e) { return null }
|
|
967
|
+
},
|
|
968
|
+
|
|
969
|
+
evalResponse: function() {
|
|
970
|
+
try {
|
|
971
|
+
return eval(this.transport.responseText);
|
|
972
|
+
} catch (e) {
|
|
973
|
+
this.dispatchException(e);
|
|
974
|
+
}
|
|
774
975
|
},
|
|
775
976
|
|
|
776
977
|
dispatchException: function(exception) {
|
|
@@ -783,41 +984,37 @@ Ajax.Updater = Class.create();
|
|
|
783
984
|
|
|
784
985
|
Object.extend(Object.extend(Ajax.Updater.prototype, Ajax.Request.prototype), {
|
|
785
986
|
initialize: function(container, url, options) {
|
|
786
|
-
this.
|
|
787
|
-
success:
|
|
788
|
-
failure: container.failure
|
|
789
|
-
(container.success ? null : $(container))
|
|
987
|
+
this.container = {
|
|
988
|
+
success: (container.success || container),
|
|
989
|
+
failure: (container.failure || (container.success ? null : container))
|
|
790
990
|
}
|
|
791
991
|
|
|
792
992
|
this.transport = Ajax.getTransport();
|
|
793
993
|
this.setOptions(options);
|
|
794
994
|
|
|
795
995
|
var onComplete = this.options.onComplete || Prototype.emptyFunction;
|
|
796
|
-
this.options.onComplete = (function(transport,
|
|
996
|
+
this.options.onComplete = (function(transport, param) {
|
|
797
997
|
this.updateContent();
|
|
798
|
-
onComplete(transport,
|
|
998
|
+
onComplete(transport, param);
|
|
799
999
|
}).bind(this);
|
|
800
1000
|
|
|
801
1001
|
this.request(url);
|
|
802
1002
|
},
|
|
803
1003
|
|
|
804
1004
|
updateContent: function() {
|
|
805
|
-
var receiver = this.
|
|
806
|
-
this.containers.success : this.containers.failure;
|
|
1005
|
+
var receiver = this.container[this.success() ? 'success' : 'failure'];
|
|
807
1006
|
var response = this.transport.responseText;
|
|
808
1007
|
|
|
809
|
-
if (!this.options.evalScripts)
|
|
810
|
-
response = response.stripScripts();
|
|
1008
|
+
if (!this.options.evalScripts) response = response.stripScripts();
|
|
811
1009
|
|
|
812
|
-
if (receiver) {
|
|
813
|
-
if (this.options.insertion)
|
|
1010
|
+
if (receiver = $(receiver)) {
|
|
1011
|
+
if (this.options.insertion)
|
|
814
1012
|
new this.options.insertion(receiver, response);
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
}
|
|
1013
|
+
else
|
|
1014
|
+
receiver.update(response);
|
|
818
1015
|
}
|
|
819
1016
|
|
|
820
|
-
if (this.
|
|
1017
|
+
if (this.success()) {
|
|
821
1018
|
if (this.onComplete)
|
|
822
1019
|
setTimeout(this.onComplete.bind(this), 10);
|
|
823
1020
|
}
|
|
@@ -846,7 +1043,7 @@ Ajax.PeriodicalUpdater.prototype = Object.extend(new Ajax.Base(), {
|
|
|
846
1043
|
},
|
|
847
1044
|
|
|
848
1045
|
stop: function() {
|
|
849
|
-
this.updater.onComplete = undefined;
|
|
1046
|
+
this.updater.options.onComplete = undefined;
|
|
850
1047
|
clearTimeout(this.timer);
|
|
851
1048
|
(this.onComplete || Prototype.emptyFunction).apply(this, arguments);
|
|
852
1049
|
},
|
|
@@ -866,25 +1063,43 @@ Ajax.PeriodicalUpdater.prototype = Object.extend(new Ajax.Base(), {
|
|
|
866
1063
|
this.updater = new Ajax.Updater(this.container, this.url, this.options);
|
|
867
1064
|
}
|
|
868
1065
|
});
|
|
869
|
-
function $() {
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
element = document.getElementById(element);
|
|
875
|
-
results.push(Element.extend(element));
|
|
1066
|
+
function $(element) {
|
|
1067
|
+
if (arguments.length > 1) {
|
|
1068
|
+
for (var i = 0, elements = [], length = arguments.length; i < length; i++)
|
|
1069
|
+
elements.push($(arguments[i]));
|
|
1070
|
+
return elements;
|
|
876
1071
|
}
|
|
877
|
-
|
|
1072
|
+
if (typeof element == 'string')
|
|
1073
|
+
element = document.getElementById(element);
|
|
1074
|
+
return Element.extend(element);
|
|
1075
|
+
}
|
|
1076
|
+
|
|
1077
|
+
if (Prototype.BrowserFeatures.XPath) {
|
|
1078
|
+
document._getElementsByXPath = function(expression, parentElement) {
|
|
1079
|
+
var results = [];
|
|
1080
|
+
var query = document.evaluate(expression, $(parentElement) || document,
|
|
1081
|
+
null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
|
|
1082
|
+
for (var i = 0, length = query.snapshotLength; i < length; i++)
|
|
1083
|
+
results.push(query.snapshotItem(i));
|
|
1084
|
+
return results;
|
|
1085
|
+
};
|
|
878
1086
|
}
|
|
879
1087
|
|
|
880
1088
|
document.getElementsByClassName = function(className, parentElement) {
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
1089
|
+
if (Prototype.BrowserFeatures.XPath) {
|
|
1090
|
+
var q = ".//*[contains(concat(' ', @class, ' '), ' " + className + " ')]";
|
|
1091
|
+
return document._getElementsByXPath(q, parentElement);
|
|
1092
|
+
} else {
|
|
1093
|
+
var children = ($(parentElement) || document.body).getElementsByTagName('*');
|
|
1094
|
+
var elements = [], child;
|
|
1095
|
+
for (var i = 0, length = children.length; i < length; i++) {
|
|
1096
|
+
child = children[i];
|
|
1097
|
+
if (Element.hasClassName(child, className))
|
|
1098
|
+
elements.push(Element.extend(child));
|
|
1099
|
+
}
|
|
885
1100
|
return elements;
|
|
886
|
-
}
|
|
887
|
-
}
|
|
1101
|
+
}
|
|
1102
|
+
};
|
|
888
1103
|
|
|
889
1104
|
/*--------------------------------------------------------------------------*/
|
|
890
1105
|
|
|
@@ -892,21 +1107,28 @@ if (!window.Element)
|
|
|
892
1107
|
var Element = new Object();
|
|
893
1108
|
|
|
894
1109
|
Element.extend = function(element) {
|
|
895
|
-
if (!element) return;
|
|
896
|
-
if (_nativeExtensions) return element;
|
|
1110
|
+
if (!element || _nativeExtensions || element.nodeType == 3) return element;
|
|
897
1111
|
|
|
898
1112
|
if (!element._extended && element.tagName && element != window) {
|
|
899
|
-
var methods = Element.Methods, cache = Element.extend.cache;
|
|
900
|
-
|
|
1113
|
+
var methods = Object.clone(Element.Methods), cache = Element.extend.cache;
|
|
1114
|
+
|
|
1115
|
+
if (element.tagName == 'FORM')
|
|
1116
|
+
Object.extend(methods, Form.Methods);
|
|
1117
|
+
if (['INPUT', 'TEXTAREA', 'SELECT'].include(element.tagName))
|
|
1118
|
+
Object.extend(methods, Form.Element.Methods);
|
|
1119
|
+
|
|
1120
|
+
Object.extend(methods, Element.Methods.Simulated);
|
|
1121
|
+
|
|
1122
|
+
for (var property in methods) {
|
|
901
1123
|
var value = methods[property];
|
|
902
|
-
if (typeof value == 'function')
|
|
1124
|
+
if (typeof value == 'function' && !(property in element))
|
|
903
1125
|
element[property] = cache.findOrStore(value);
|
|
904
1126
|
}
|
|
905
1127
|
}
|
|
906
1128
|
|
|
907
1129
|
element._extended = true;
|
|
908
1130
|
return element;
|
|
909
|
-
}
|
|
1131
|
+
};
|
|
910
1132
|
|
|
911
1133
|
Element.extend.cache = {
|
|
912
1134
|
findOrStore: function(value) {
|
|
@@ -914,46 +1136,45 @@ Element.extend.cache = {
|
|
|
914
1136
|
return value.apply(null, [this].concat($A(arguments)));
|
|
915
1137
|
}
|
|
916
1138
|
}
|
|
917
|
-
}
|
|
1139
|
+
};
|
|
918
1140
|
|
|
919
1141
|
Element.Methods = {
|
|
920
1142
|
visible: function(element) {
|
|
921
1143
|
return $(element).style.display != 'none';
|
|
922
1144
|
},
|
|
923
1145
|
|
|
924
|
-
toggle: function() {
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
}
|
|
1146
|
+
toggle: function(element) {
|
|
1147
|
+
element = $(element);
|
|
1148
|
+
Element[Element.visible(element) ? 'hide' : 'show'](element);
|
|
1149
|
+
return element;
|
|
929
1150
|
},
|
|
930
1151
|
|
|
931
|
-
hide: function() {
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
element.style.display = 'none';
|
|
935
|
-
}
|
|
1152
|
+
hide: function(element) {
|
|
1153
|
+
$(element).style.display = 'none';
|
|
1154
|
+
return element;
|
|
936
1155
|
},
|
|
937
1156
|
|
|
938
|
-
show: function() {
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
element.style.display = '';
|
|
942
|
-
}
|
|
1157
|
+
show: function(element) {
|
|
1158
|
+
$(element).style.display = '';
|
|
1159
|
+
return element;
|
|
943
1160
|
},
|
|
944
1161
|
|
|
945
1162
|
remove: function(element) {
|
|
946
1163
|
element = $(element);
|
|
947
1164
|
element.parentNode.removeChild(element);
|
|
1165
|
+
return element;
|
|
948
1166
|
},
|
|
949
1167
|
|
|
950
1168
|
update: function(element, html) {
|
|
1169
|
+
html = typeof html == 'undefined' ? '' : html.toString();
|
|
951
1170
|
$(element).innerHTML = html.stripScripts();
|
|
952
1171
|
setTimeout(function() {html.evalScripts()}, 10);
|
|
1172
|
+
return element;
|
|
953
1173
|
},
|
|
954
1174
|
|
|
955
1175
|
replace: function(element, html) {
|
|
956
1176
|
element = $(element);
|
|
1177
|
+
html = typeof html == 'undefined' ? '' : html.toString();
|
|
957
1178
|
if (element.outerHTML) {
|
|
958
1179
|
element.outerHTML = html.stripScripts();
|
|
959
1180
|
} else {
|
|
@@ -963,11 +1184,106 @@ Element.Methods = {
|
|
|
963
1184
|
range.createContextualFragment(html.stripScripts()), element);
|
|
964
1185
|
}
|
|
965
1186
|
setTimeout(function() {html.evalScripts()}, 10);
|
|
1187
|
+
return element;
|
|
966
1188
|
},
|
|
967
1189
|
|
|
968
|
-
|
|
1190
|
+
inspect: function(element) {
|
|
1191
|
+
element = $(element);
|
|
1192
|
+
var result = '<' + element.tagName.toLowerCase();
|
|
1193
|
+
$H({'id': 'id', 'className': 'class'}).each(function(pair) {
|
|
1194
|
+
var property = pair.first(), attribute = pair.last();
|
|
1195
|
+
var value = (element[property] || '').toString();
|
|
1196
|
+
if (value) result += ' ' + attribute + '=' + value.inspect(true);
|
|
1197
|
+
});
|
|
1198
|
+
return result + '>';
|
|
1199
|
+
},
|
|
1200
|
+
|
|
1201
|
+
recursivelyCollect: function(element, property) {
|
|
1202
|
+
element = $(element);
|
|
1203
|
+
var elements = [];
|
|
1204
|
+
while (element = element[property])
|
|
1205
|
+
if (element.nodeType == 1)
|
|
1206
|
+
elements.push(Element.extend(element));
|
|
1207
|
+
return elements;
|
|
1208
|
+
},
|
|
1209
|
+
|
|
1210
|
+
ancestors: function(element) {
|
|
1211
|
+
return $(element).recursivelyCollect('parentNode');
|
|
1212
|
+
},
|
|
1213
|
+
|
|
1214
|
+
descendants: function(element) {
|
|
1215
|
+
return $A($(element).getElementsByTagName('*'));
|
|
1216
|
+
},
|
|
1217
|
+
|
|
1218
|
+
immediateDescendants: function(element) {
|
|
1219
|
+
if (!(element = $(element).firstChild)) return [];
|
|
1220
|
+
while (element && element.nodeType != 1) element = element.nextSibling;
|
|
1221
|
+
if (element) return [element].concat($(element).nextSiblings());
|
|
1222
|
+
return [];
|
|
1223
|
+
},
|
|
1224
|
+
|
|
1225
|
+
previousSiblings: function(element) {
|
|
1226
|
+
return $(element).recursivelyCollect('previousSibling');
|
|
1227
|
+
},
|
|
1228
|
+
|
|
1229
|
+
nextSiblings: function(element) {
|
|
1230
|
+
return $(element).recursivelyCollect('nextSibling');
|
|
1231
|
+
},
|
|
1232
|
+
|
|
1233
|
+
siblings: function(element) {
|
|
969
1234
|
element = $(element);
|
|
970
|
-
return element.
|
|
1235
|
+
return element.previousSiblings().reverse().concat(element.nextSiblings());
|
|
1236
|
+
},
|
|
1237
|
+
|
|
1238
|
+
match: function(element, selector) {
|
|
1239
|
+
if (typeof selector == 'string')
|
|
1240
|
+
selector = new Selector(selector);
|
|
1241
|
+
return selector.match($(element));
|
|
1242
|
+
},
|
|
1243
|
+
|
|
1244
|
+
up: function(element, expression, index) {
|
|
1245
|
+
return Selector.findElement($(element).ancestors(), expression, index);
|
|
1246
|
+
},
|
|
1247
|
+
|
|
1248
|
+
down: function(element, expression, index) {
|
|
1249
|
+
return Selector.findElement($(element).descendants(), expression, index);
|
|
1250
|
+
},
|
|
1251
|
+
|
|
1252
|
+
previous: function(element, expression, index) {
|
|
1253
|
+
return Selector.findElement($(element).previousSiblings(), expression, index);
|
|
1254
|
+
},
|
|
1255
|
+
|
|
1256
|
+
next: function(element, expression, index) {
|
|
1257
|
+
return Selector.findElement($(element).nextSiblings(), expression, index);
|
|
1258
|
+
},
|
|
1259
|
+
|
|
1260
|
+
getElementsBySelector: function() {
|
|
1261
|
+
var args = $A(arguments), element = $(args.shift());
|
|
1262
|
+
return Selector.findChildElements(element, args);
|
|
1263
|
+
},
|
|
1264
|
+
|
|
1265
|
+
getElementsByClassName: function(element, className) {
|
|
1266
|
+
return document.getElementsByClassName(className, element);
|
|
1267
|
+
},
|
|
1268
|
+
|
|
1269
|
+
readAttribute: function(element, name) {
|
|
1270
|
+
element = $(element);
|
|
1271
|
+
if (document.all && !window.opera) {
|
|
1272
|
+
var t = Element._attributeTranslations;
|
|
1273
|
+
if (t.values[name]) return t.values[name](element, name);
|
|
1274
|
+
if (t.names[name]) name = t.names[name];
|
|
1275
|
+
var attribute = element.attributes[name];
|
|
1276
|
+
if(attribute) return attribute.nodeValue;
|
|
1277
|
+
}
|
|
1278
|
+
return element.getAttribute(name);
|
|
1279
|
+
},
|
|
1280
|
+
|
|
1281
|
+
getHeight: function(element) {
|
|
1282
|
+
return $(element).getDimensions().height;
|
|
1283
|
+
},
|
|
1284
|
+
|
|
1285
|
+
getWidth: function(element) {
|
|
1286
|
+
return $(element).getDimensions().width;
|
|
971
1287
|
},
|
|
972
1288
|
|
|
973
1289
|
classNames: function(element) {
|
|
@@ -976,34 +1292,60 @@ Element.Methods = {
|
|
|
976
1292
|
|
|
977
1293
|
hasClassName: function(element, className) {
|
|
978
1294
|
if (!(element = $(element))) return;
|
|
979
|
-
|
|
1295
|
+
var elementClassName = element.className;
|
|
1296
|
+
if (elementClassName.length == 0) return false;
|
|
1297
|
+
if (elementClassName == className ||
|
|
1298
|
+
elementClassName.match(new RegExp("(^|\\s)" + className + "(\\s|$)")))
|
|
1299
|
+
return true;
|
|
1300
|
+
return false;
|
|
980
1301
|
},
|
|
981
1302
|
|
|
982
1303
|
addClassName: function(element, className) {
|
|
983
1304
|
if (!(element = $(element))) return;
|
|
984
|
-
|
|
1305
|
+
Element.classNames(element).add(className);
|
|
1306
|
+
return element;
|
|
985
1307
|
},
|
|
986
1308
|
|
|
987
1309
|
removeClassName: function(element, className) {
|
|
988
1310
|
if (!(element = $(element))) return;
|
|
989
|
-
|
|
1311
|
+
Element.classNames(element).remove(className);
|
|
1312
|
+
return element;
|
|
1313
|
+
},
|
|
1314
|
+
|
|
1315
|
+
toggleClassName: function(element, className) {
|
|
1316
|
+
if (!(element = $(element))) return;
|
|
1317
|
+
Element.classNames(element)[element.hasClassName(className) ? 'remove' : 'add'](className);
|
|
1318
|
+
return element;
|
|
1319
|
+
},
|
|
1320
|
+
|
|
1321
|
+
observe: function() {
|
|
1322
|
+
Event.observe.apply(Event, arguments);
|
|
1323
|
+
return $A(arguments).first();
|
|
1324
|
+
},
|
|
1325
|
+
|
|
1326
|
+
stopObserving: function() {
|
|
1327
|
+
Event.stopObserving.apply(Event, arguments);
|
|
1328
|
+
return $A(arguments).first();
|
|
990
1329
|
},
|
|
991
1330
|
|
|
992
1331
|
// removes whitespace-only text node children
|
|
993
1332
|
cleanWhitespace: function(element) {
|
|
994
1333
|
element = $(element);
|
|
995
|
-
|
|
996
|
-
|
|
1334
|
+
var node = element.firstChild;
|
|
1335
|
+
while (node) {
|
|
1336
|
+
var nextNode = node.nextSibling;
|
|
997
1337
|
if (node.nodeType == 3 && !/\S/.test(node.nodeValue))
|
|
998
|
-
|
|
1338
|
+
element.removeChild(node);
|
|
1339
|
+
node = nextNode;
|
|
999
1340
|
}
|
|
1341
|
+
return element;
|
|
1000
1342
|
},
|
|
1001
1343
|
|
|
1002
1344
|
empty: function(element) {
|
|
1003
1345
|
return $(element).innerHTML.match(/^\s*$/);
|
|
1004
1346
|
},
|
|
1005
1347
|
|
|
1006
|
-
|
|
1348
|
+
descendantOf: function(element, ancestor) {
|
|
1007
1349
|
element = $(element), ancestor = $(ancestor);
|
|
1008
1350
|
while (element = element.parentNode)
|
|
1009
1351
|
if (element == ancestor) return true;
|
|
@@ -1012,38 +1354,69 @@ Element.Methods = {
|
|
|
1012
1354
|
|
|
1013
1355
|
scrollTo: function(element) {
|
|
1014
1356
|
element = $(element);
|
|
1015
|
-
var
|
|
1016
|
-
|
|
1017
|
-
|
|
1357
|
+
var pos = Position.cumulativeOffset(element);
|
|
1358
|
+
window.scrollTo(pos[0], pos[1]);
|
|
1359
|
+
return element;
|
|
1018
1360
|
},
|
|
1019
1361
|
|
|
1020
1362
|
getStyle: function(element, style) {
|
|
1021
1363
|
element = $(element);
|
|
1022
|
-
|
|
1364
|
+
if (['float','cssFloat'].include(style))
|
|
1365
|
+
style = (typeof element.style.styleFloat != 'undefined' ? 'styleFloat' : 'cssFloat');
|
|
1366
|
+
style = style.camelize();
|
|
1367
|
+
var value = element.style[style];
|
|
1023
1368
|
if (!value) {
|
|
1024
1369
|
if (document.defaultView && document.defaultView.getComputedStyle) {
|
|
1025
1370
|
var css = document.defaultView.getComputedStyle(element, null);
|
|
1026
|
-
value = css ? css
|
|
1371
|
+
value = css ? css[style] : null;
|
|
1027
1372
|
} else if (element.currentStyle) {
|
|
1028
|
-
value = element.currentStyle[style
|
|
1373
|
+
value = element.currentStyle[style];
|
|
1029
1374
|
}
|
|
1030
1375
|
}
|
|
1031
1376
|
|
|
1377
|
+
if((value == 'auto') && ['width','height'].include(style) && (element.getStyle('display') != 'none'))
|
|
1378
|
+
value = element['offset'+style.capitalize()] + 'px';
|
|
1379
|
+
|
|
1032
1380
|
if (window.opera && ['left', 'top', 'right', 'bottom'].include(style))
|
|
1033
1381
|
if (Element.getStyle(element, 'position') == 'static') value = 'auto';
|
|
1034
|
-
|
|
1382
|
+
if(style == 'opacity') {
|
|
1383
|
+
if(value) return parseFloat(value);
|
|
1384
|
+
if(value = (element.getStyle('filter') || '').match(/alpha\(opacity=(.*)\)/))
|
|
1385
|
+
if(value[1]) return parseFloat(value[1]) / 100;
|
|
1386
|
+
return 1.0;
|
|
1387
|
+
}
|
|
1035
1388
|
return value == 'auto' ? null : value;
|
|
1036
1389
|
},
|
|
1037
1390
|
|
|
1038
1391
|
setStyle: function(element, style) {
|
|
1039
1392
|
element = $(element);
|
|
1040
|
-
for (var name in style)
|
|
1041
|
-
|
|
1393
|
+
for (var name in style) {
|
|
1394
|
+
var value = style[name];
|
|
1395
|
+
if(name == 'opacity') {
|
|
1396
|
+
if (value == 1) {
|
|
1397
|
+
value = (/Gecko/.test(navigator.userAgent) &&
|
|
1398
|
+
!/Konqueror|Safari|KHTML/.test(navigator.userAgent)) ? 0.999999 : 1.0;
|
|
1399
|
+
if(/MSIE/.test(navigator.userAgent) && !window.opera)
|
|
1400
|
+
element.style.filter = element.getStyle('filter').replace(/alpha\([^\)]*\)/gi,'');
|
|
1401
|
+
} else if(value == '') {
|
|
1402
|
+
if(/MSIE/.test(navigator.userAgent) && !window.opera)
|
|
1403
|
+
element.style.filter = element.getStyle('filter').replace(/alpha\([^\)]*\)/gi,'');
|
|
1404
|
+
} else {
|
|
1405
|
+
if(value < 0.00001) value = 0;
|
|
1406
|
+
if(/MSIE/.test(navigator.userAgent) && !window.opera)
|
|
1407
|
+
element.style.filter = element.getStyle('filter').replace(/alpha\([^\)]*\)/gi,'') +
|
|
1408
|
+
'alpha(opacity='+value*100+')';
|
|
1409
|
+
}
|
|
1410
|
+
} else if(['float','cssFloat'].include(name)) name = (typeof element.style.styleFloat != 'undefined') ? 'styleFloat' : 'cssFloat';
|
|
1411
|
+
element.style[name.camelize()] = value;
|
|
1412
|
+
}
|
|
1413
|
+
return element;
|
|
1042
1414
|
},
|
|
1043
1415
|
|
|
1044
1416
|
getDimensions: function(element) {
|
|
1045
1417
|
element = $(element);
|
|
1046
|
-
|
|
1418
|
+
var display = $(element).getStyle('display');
|
|
1419
|
+
if (display != 'none' && display != null) // Safari bug
|
|
1047
1420
|
return {width: element.offsetWidth, height: element.offsetHeight};
|
|
1048
1421
|
|
|
1049
1422
|
// All *Width and *Height properties give 0 on elements with display none,
|
|
@@ -1051,12 +1424,13 @@ Element.Methods = {
|
|
|
1051
1424
|
var els = element.style;
|
|
1052
1425
|
var originalVisibility = els.visibility;
|
|
1053
1426
|
var originalPosition = els.position;
|
|
1427
|
+
var originalDisplay = els.display;
|
|
1054
1428
|
els.visibility = 'hidden';
|
|
1055
1429
|
els.position = 'absolute';
|
|
1056
|
-
els.display = '';
|
|
1430
|
+
els.display = 'block';
|
|
1057
1431
|
var originalWidth = element.clientWidth;
|
|
1058
1432
|
var originalHeight = element.clientHeight;
|
|
1059
|
-
els.display =
|
|
1433
|
+
els.display = originalDisplay;
|
|
1060
1434
|
els.position = originalPosition;
|
|
1061
1435
|
els.visibility = originalVisibility;
|
|
1062
1436
|
return {width: originalWidth, height: originalHeight};
|
|
@@ -1075,6 +1449,7 @@ Element.Methods = {
|
|
|
1075
1449
|
element.style.left = 0;
|
|
1076
1450
|
}
|
|
1077
1451
|
}
|
|
1452
|
+
return element;
|
|
1078
1453
|
},
|
|
1079
1454
|
|
|
1080
1455
|
undoPositioned: function(element) {
|
|
@@ -1087,49 +1462,153 @@ Element.Methods = {
|
|
|
1087
1462
|
element.style.bottom =
|
|
1088
1463
|
element.style.right = '';
|
|
1089
1464
|
}
|
|
1465
|
+
return element;
|
|
1090
1466
|
},
|
|
1091
1467
|
|
|
1092
1468
|
makeClipping: function(element) {
|
|
1093
1469
|
element = $(element);
|
|
1094
|
-
if (element._overflow) return;
|
|
1095
|
-
element._overflow = element.style.overflow;
|
|
1470
|
+
if (element._overflow) return element;
|
|
1471
|
+
element._overflow = element.style.overflow || 'auto';
|
|
1096
1472
|
if ((Element.getStyle(element, 'overflow') || 'visible') != 'hidden')
|
|
1097
1473
|
element.style.overflow = 'hidden';
|
|
1474
|
+
return element;
|
|
1098
1475
|
},
|
|
1099
1476
|
|
|
1100
1477
|
undoClipping: function(element) {
|
|
1101
1478
|
element = $(element);
|
|
1102
|
-
if (element._overflow) return;
|
|
1103
|
-
element.style.overflow = element._overflow;
|
|
1104
|
-
element._overflow =
|
|
1479
|
+
if (!element._overflow) return element;
|
|
1480
|
+
element.style.overflow = element._overflow == 'auto' ? '' : element._overflow;
|
|
1481
|
+
element._overflow = null;
|
|
1482
|
+
return element;
|
|
1105
1483
|
}
|
|
1106
|
-
}
|
|
1484
|
+
};
|
|
1485
|
+
|
|
1486
|
+
Object.extend(Element.Methods, {childOf: Element.Methods.descendantOf});
|
|
1487
|
+
|
|
1488
|
+
Element._attributeTranslations = {};
|
|
1489
|
+
|
|
1490
|
+
Element._attributeTranslations.names = {
|
|
1491
|
+
colspan: "colSpan",
|
|
1492
|
+
rowspan: "rowSpan",
|
|
1493
|
+
valign: "vAlign",
|
|
1494
|
+
datetime: "dateTime",
|
|
1495
|
+
accesskey: "accessKey",
|
|
1496
|
+
tabindex: "tabIndex",
|
|
1497
|
+
enctype: "encType",
|
|
1498
|
+
maxlength: "maxLength",
|
|
1499
|
+
readonly: "readOnly",
|
|
1500
|
+
longdesc: "longDesc"
|
|
1501
|
+
};
|
|
1502
|
+
|
|
1503
|
+
Element._attributeTranslations.values = {
|
|
1504
|
+
_getAttr: function(element, attribute) {
|
|
1505
|
+
return element.getAttribute(attribute, 2);
|
|
1506
|
+
},
|
|
1507
|
+
|
|
1508
|
+
_flag: function(element, attribute) {
|
|
1509
|
+
return $(element).hasAttribute(attribute) ? attribute : null;
|
|
1510
|
+
},
|
|
1511
|
+
|
|
1512
|
+
style: function(element) {
|
|
1513
|
+
return element.style.cssText.toLowerCase();
|
|
1514
|
+
},
|
|
1515
|
+
|
|
1516
|
+
title: function(element) {
|
|
1517
|
+
var node = element.getAttributeNode('title');
|
|
1518
|
+
return node.specified ? node.nodeValue : null;
|
|
1519
|
+
}
|
|
1520
|
+
};
|
|
1521
|
+
|
|
1522
|
+
Object.extend(Element._attributeTranslations.values, {
|
|
1523
|
+
href: Element._attributeTranslations.values._getAttr,
|
|
1524
|
+
src: Element._attributeTranslations.values._getAttr,
|
|
1525
|
+
disabled: Element._attributeTranslations.values._flag,
|
|
1526
|
+
checked: Element._attributeTranslations.values._flag,
|
|
1527
|
+
readonly: Element._attributeTranslations.values._flag,
|
|
1528
|
+
multiple: Element._attributeTranslations.values._flag
|
|
1529
|
+
});
|
|
1530
|
+
|
|
1531
|
+
Element.Methods.Simulated = {
|
|
1532
|
+
hasAttribute: function(element, attribute) {
|
|
1533
|
+
var t = Element._attributeTranslations;
|
|
1534
|
+
attribute = t.names[attribute] || attribute;
|
|
1535
|
+
return $(element).getAttributeNode(attribute).specified;
|
|
1536
|
+
}
|
|
1537
|
+
};
|
|
1538
|
+
|
|
1539
|
+
// IE is missing .innerHTML support for TABLE-related elements
|
|
1540
|
+
if (document.all && !window.opera){
|
|
1541
|
+
Element.Methods.update = function(element, html) {
|
|
1542
|
+
element = $(element);
|
|
1543
|
+
html = typeof html == 'undefined' ? '' : html.toString();
|
|
1544
|
+
var tagName = element.tagName.toUpperCase();
|
|
1545
|
+
if (['THEAD','TBODY','TR','TD'].include(tagName)) {
|
|
1546
|
+
var div = document.createElement('div');
|
|
1547
|
+
switch (tagName) {
|
|
1548
|
+
case 'THEAD':
|
|
1549
|
+
case 'TBODY':
|
|
1550
|
+
div.innerHTML = '<table><tbody>' + html.stripScripts() + '</tbody></table>';
|
|
1551
|
+
depth = 2;
|
|
1552
|
+
break;
|
|
1553
|
+
case 'TR':
|
|
1554
|
+
div.innerHTML = '<table><tbody><tr>' + html.stripScripts() + '</tr></tbody></table>';
|
|
1555
|
+
depth = 3;
|
|
1556
|
+
break;
|
|
1557
|
+
case 'TD':
|
|
1558
|
+
div.innerHTML = '<table><tbody><tr><td>' + html.stripScripts() + '</td></tr></tbody></table>';
|
|
1559
|
+
depth = 4;
|
|
1560
|
+
}
|
|
1561
|
+
$A(element.childNodes).each(function(node){
|
|
1562
|
+
element.removeChild(node)
|
|
1563
|
+
});
|
|
1564
|
+
depth.times(function(){ div = div.firstChild });
|
|
1565
|
+
|
|
1566
|
+
$A(div.childNodes).each(
|
|
1567
|
+
function(node){ element.appendChild(node) });
|
|
1568
|
+
} else {
|
|
1569
|
+
element.innerHTML = html.stripScripts();
|
|
1570
|
+
}
|
|
1571
|
+
setTimeout(function() {html.evalScripts()}, 10);
|
|
1572
|
+
return element;
|
|
1573
|
+
}
|
|
1574
|
+
};
|
|
1107
1575
|
|
|
1108
1576
|
Object.extend(Element, Element.Methods);
|
|
1109
1577
|
|
|
1110
1578
|
var _nativeExtensions = false;
|
|
1111
1579
|
|
|
1112
|
-
if(
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1580
|
+
if(/Konqueror|Safari|KHTML/.test(navigator.userAgent))
|
|
1581
|
+
['', 'Form', 'Input', 'TextArea', 'Select'].each(function(tag) {
|
|
1582
|
+
var className = 'HTML' + tag + 'Element';
|
|
1583
|
+
if(window[className]) return;
|
|
1584
|
+
var klass = window[className] = {};
|
|
1585
|
+
klass.prototype = document.createElement(tag ? tag.toLowerCase() : 'div').__proto__;
|
|
1586
|
+
});
|
|
1116
1587
|
|
|
1117
1588
|
Element.addMethods = function(methods) {
|
|
1118
1589
|
Object.extend(Element.Methods, methods || {});
|
|
1119
1590
|
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1591
|
+
function copy(methods, destination, onlyIfAbsent) {
|
|
1592
|
+
onlyIfAbsent = onlyIfAbsent || false;
|
|
1593
|
+
var cache = Element.extend.cache;
|
|
1594
|
+
for (var property in methods) {
|
|
1123
1595
|
var value = methods[property];
|
|
1124
|
-
if (
|
|
1125
|
-
|
|
1596
|
+
if (!onlyIfAbsent || !(property in destination))
|
|
1597
|
+
destination[property] = cache.findOrStore(value);
|
|
1126
1598
|
}
|
|
1599
|
+
}
|
|
1600
|
+
|
|
1601
|
+
if (typeof HTMLElement != 'undefined') {
|
|
1602
|
+
copy(Element.Methods, HTMLElement.prototype);
|
|
1603
|
+
copy(Element.Methods.Simulated, HTMLElement.prototype, true);
|
|
1604
|
+
copy(Form.Methods, HTMLFormElement.prototype);
|
|
1605
|
+
[HTMLInputElement, HTMLTextAreaElement, HTMLSelectElement].each(function(klass) {
|
|
1606
|
+
copy(Form.Element.Methods, klass.prototype);
|
|
1607
|
+
});
|
|
1127
1608
|
_nativeExtensions = true;
|
|
1128
1609
|
}
|
|
1129
1610
|
}
|
|
1130
1611
|
|
|
1131
|
-
Element.addMethods();
|
|
1132
|
-
|
|
1133
1612
|
var Toggle = new Object();
|
|
1134
1613
|
Toggle.display = Element.toggle;
|
|
1135
1614
|
|
|
@@ -1148,8 +1627,8 @@ Abstract.Insertion.prototype = {
|
|
|
1148
1627
|
try {
|
|
1149
1628
|
this.element.insertAdjacentHTML(this.adjacency, this.content);
|
|
1150
1629
|
} catch (e) {
|
|
1151
|
-
var tagName = this.element.tagName.
|
|
1152
|
-
if (
|
|
1630
|
+
var tagName = this.element.tagName.toUpperCase();
|
|
1631
|
+
if (['TBODY', 'TR'].include(tagName)) {
|
|
1153
1632
|
this.insertContent(this.contentFromAnonymousTable());
|
|
1154
1633
|
} else {
|
|
1155
1634
|
throw e;
|
|
@@ -1248,20 +1727,18 @@ Element.ClassNames.prototype = {
|
|
|
1248
1727
|
|
|
1249
1728
|
add: function(classNameToAdd) {
|
|
1250
1729
|
if (this.include(classNameToAdd)) return;
|
|
1251
|
-
this.set(this
|
|
1730
|
+
this.set($A(this).concat(classNameToAdd).join(' '));
|
|
1252
1731
|
},
|
|
1253
1732
|
|
|
1254
1733
|
remove: function(classNameToRemove) {
|
|
1255
1734
|
if (!this.include(classNameToRemove)) return;
|
|
1256
|
-
this.set(this.
|
|
1257
|
-
return className != classNameToRemove;
|
|
1258
|
-
}).join(' '));
|
|
1735
|
+
this.set($A(this).without(classNameToRemove).join(' '));
|
|
1259
1736
|
},
|
|
1260
1737
|
|
|
1261
1738
|
toString: function() {
|
|
1262
|
-
return this
|
|
1739
|
+
return $A(this).join(' ');
|
|
1263
1740
|
}
|
|
1264
|
-
}
|
|
1741
|
+
};
|
|
1265
1742
|
|
|
1266
1743
|
Object.extend(Element.ClassNames.prototype, Enumerable);
|
|
1267
1744
|
var Selector = Class.create();
|
|
@@ -1308,15 +1785,15 @@ Selector.prototype = {
|
|
|
1308
1785
|
if (params.wildcard)
|
|
1309
1786
|
conditions.push('true');
|
|
1310
1787
|
if (clause = params.id)
|
|
1311
|
-
conditions.push('element.id == ' + clause.inspect());
|
|
1788
|
+
conditions.push('element.readAttribute("id") == ' + clause.inspect());
|
|
1312
1789
|
if (clause = params.tagName)
|
|
1313
1790
|
conditions.push('element.tagName.toUpperCase() == ' + clause.inspect());
|
|
1314
1791
|
if ((clause = params.classNames).length > 0)
|
|
1315
|
-
for (var i = 0; i <
|
|
1316
|
-
conditions.push('
|
|
1792
|
+
for (var i = 0, length = clause.length; i < length; i++)
|
|
1793
|
+
conditions.push('element.hasClassName(' + clause[i].inspect() + ')');
|
|
1317
1794
|
if (clause = params.attributes) {
|
|
1318
1795
|
clause.each(function(attribute) {
|
|
1319
|
-
var value = 'element.
|
|
1796
|
+
var value = 'element.readAttribute(' + attribute.name.inspect() + ')';
|
|
1320
1797
|
var splitValueBy = function(delimiter) {
|
|
1321
1798
|
return value + ' && ' + value + '.split(' + delimiter.inspect() + ')';
|
|
1322
1799
|
}
|
|
@@ -1329,7 +1806,7 @@ Selector.prototype = {
|
|
|
1329
1806
|
); break;
|
|
1330
1807
|
case '!=': conditions.push(value + ' != ' + attribute.value.inspect()); break;
|
|
1331
1808
|
case '':
|
|
1332
|
-
case undefined: conditions.push(
|
|
1809
|
+
case undefined: conditions.push('element.hasAttribute(' + attribute.name.inspect() + ')'); break;
|
|
1333
1810
|
default: throw 'Unknown operator ' + attribute.operator + ' in selector';
|
|
1334
1811
|
}
|
|
1335
1812
|
});
|
|
@@ -1340,6 +1817,7 @@ Selector.prototype = {
|
|
|
1340
1817
|
|
|
1341
1818
|
compileMatcher: function() {
|
|
1342
1819
|
this.match = new Function('element', 'if (!element.tagName) return false; \
|
|
1820
|
+
element = $(element); \
|
|
1343
1821
|
return ' + this.buildMatchExpression());
|
|
1344
1822
|
},
|
|
1345
1823
|
|
|
@@ -1354,7 +1832,7 @@ Selector.prototype = {
|
|
|
1354
1832
|
scope = (scope || document).getElementsByTagName(this.params.tagName || '*');
|
|
1355
1833
|
|
|
1356
1834
|
var results = [];
|
|
1357
|
-
for (var i = 0; i <
|
|
1835
|
+
for (var i = 0, length = scope.length; i < length; i++)
|
|
1358
1836
|
if (this.match(element = scope[i]))
|
|
1359
1837
|
results.push(Element.extend(element));
|
|
1360
1838
|
|
|
@@ -1366,206 +1844,241 @@ Selector.prototype = {
|
|
|
1366
1844
|
}
|
|
1367
1845
|
}
|
|
1368
1846
|
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
return results.map(selector.findElements.bind(selector)).flatten();
|
|
1374
|
-
});
|
|
1375
|
-
}).flatten();
|
|
1376
|
-
}
|
|
1377
|
-
var Field = {
|
|
1378
|
-
clear: function() {
|
|
1379
|
-
for (var i = 0; i < arguments.length; i++)
|
|
1380
|
-
$(arguments[i]).value = '';
|
|
1381
|
-
},
|
|
1382
|
-
|
|
1383
|
-
focus: function(element) {
|
|
1384
|
-
$(element).focus();
|
|
1385
|
-
},
|
|
1386
|
-
|
|
1387
|
-
present: function() {
|
|
1388
|
-
for (var i = 0; i < arguments.length; i++)
|
|
1389
|
-
if ($(arguments[i]).value == '') return false;
|
|
1390
|
-
return true;
|
|
1847
|
+
Object.extend(Selector, {
|
|
1848
|
+
matchElements: function(elements, expression) {
|
|
1849
|
+
var selector = new Selector(expression);
|
|
1850
|
+
return elements.select(selector.match.bind(selector)).map(Element.extend);
|
|
1391
1851
|
},
|
|
1392
1852
|
|
|
1393
|
-
|
|
1394
|
-
|
|
1853
|
+
findElement: function(elements, expression, index) {
|
|
1854
|
+
if (typeof expression == 'number') index = expression, expression = false;
|
|
1855
|
+
return Selector.matchElements(elements, expression || '*')[index || 0];
|
|
1395
1856
|
},
|
|
1396
1857
|
|
|
1397
|
-
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
|
|
1401
|
-
|
|
1858
|
+
findChildElements: function(element, expressions) {
|
|
1859
|
+
return expressions.map(function(expression) {
|
|
1860
|
+
return expression.match(/[^\s"]+(?:"[^"]*"[^\s"]+)*/g).inject([null], function(results, expr) {
|
|
1861
|
+
var selector = new Selector(expr);
|
|
1862
|
+
return results.inject([], function(elements, result) {
|
|
1863
|
+
return elements.concat(selector.findElements(result || element));
|
|
1864
|
+
});
|
|
1865
|
+
});
|
|
1866
|
+
}).flatten();
|
|
1402
1867
|
}
|
|
1403
|
-
}
|
|
1404
|
-
|
|
1405
|
-
/*--------------------------------------------------------------------------*/
|
|
1868
|
+
});
|
|
1406
1869
|
|
|
1870
|
+
function $$() {
|
|
1871
|
+
return Selector.findChildElements(document, $A(arguments));
|
|
1872
|
+
}
|
|
1407
1873
|
var Form = {
|
|
1408
|
-
|
|
1409
|
-
|
|
1410
|
-
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
|
|
1874
|
+
reset: function(form) {
|
|
1875
|
+
$(form).reset();
|
|
1876
|
+
return form;
|
|
1877
|
+
},
|
|
1878
|
+
|
|
1879
|
+
serializeElements: function(elements, getHash) {
|
|
1880
|
+
var data = elements.inject({}, function(result, element) {
|
|
1881
|
+
if (!element.disabled && element.name) {
|
|
1882
|
+
var key = element.name, value = $(element).getValue();
|
|
1883
|
+
if (value != undefined) {
|
|
1884
|
+
if (result[key]) {
|
|
1885
|
+
if (result[key].constructor != Array) result[key] = [result[key]];
|
|
1886
|
+
result[key].push(value);
|
|
1887
|
+
}
|
|
1888
|
+
else result[key] = value;
|
|
1889
|
+
}
|
|
1890
|
+
}
|
|
1891
|
+
return result;
|
|
1892
|
+
});
|
|
1893
|
+
|
|
1894
|
+
return getHash ? data : Hash.toQueryString(data);
|
|
1895
|
+
}
|
|
1896
|
+
};
|
|
1417
1897
|
|
|
1418
|
-
|
|
1898
|
+
Form.Methods = {
|
|
1899
|
+
serialize: function(form, getHash) {
|
|
1900
|
+
return Form.serializeElements(Form.getElements(form), getHash);
|
|
1419
1901
|
},
|
|
1420
1902
|
|
|
1421
1903
|
getElements: function(form) {
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
}
|
|
1430
|
-
return elements;
|
|
1904
|
+
return $A($(form).getElementsByTagName('*')).inject([],
|
|
1905
|
+
function(elements, child) {
|
|
1906
|
+
if (Form.Element.Serializers[child.tagName.toLowerCase()])
|
|
1907
|
+
elements.push(Element.extend(child));
|
|
1908
|
+
return elements;
|
|
1909
|
+
}
|
|
1910
|
+
);
|
|
1431
1911
|
},
|
|
1432
1912
|
|
|
1433
1913
|
getInputs: function(form, typeName, name) {
|
|
1434
1914
|
form = $(form);
|
|
1435
1915
|
var inputs = form.getElementsByTagName('input');
|
|
1436
1916
|
|
|
1437
|
-
if (!typeName && !name)
|
|
1438
|
-
return inputs;
|
|
1917
|
+
if (!typeName && !name) return $A(inputs).map(Element.extend);
|
|
1439
1918
|
|
|
1440
|
-
var matchingInputs =
|
|
1441
|
-
for (var i = 0; i < inputs.length; i++) {
|
|
1919
|
+
for (var i = 0, matchingInputs = [], length = inputs.length; i < length; i++) {
|
|
1442
1920
|
var input = inputs[i];
|
|
1443
|
-
if ((typeName && input.type != typeName) ||
|
|
1444
|
-
(name && input.name != name))
|
|
1921
|
+
if ((typeName && input.type != typeName) || (name && input.name != name))
|
|
1445
1922
|
continue;
|
|
1446
|
-
matchingInputs.push(input);
|
|
1923
|
+
matchingInputs.push(Element.extend(input));
|
|
1447
1924
|
}
|
|
1448
1925
|
|
|
1449
1926
|
return matchingInputs;
|
|
1450
1927
|
},
|
|
1451
1928
|
|
|
1452
1929
|
disable: function(form) {
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
var element = elements[i];
|
|
1930
|
+
form = $(form);
|
|
1931
|
+
form.getElements().each(function(element) {
|
|
1456
1932
|
element.blur();
|
|
1457
1933
|
element.disabled = 'true';
|
|
1458
|
-
}
|
|
1934
|
+
});
|
|
1935
|
+
return form;
|
|
1459
1936
|
},
|
|
1460
1937
|
|
|
1461
1938
|
enable: function(form) {
|
|
1462
|
-
|
|
1463
|
-
|
|
1464
|
-
var element = elements[i];
|
|
1939
|
+
form = $(form);
|
|
1940
|
+
form.getElements().each(function(element) {
|
|
1465
1941
|
element.disabled = '';
|
|
1466
|
-
}
|
|
1942
|
+
});
|
|
1943
|
+
return form;
|
|
1467
1944
|
},
|
|
1468
1945
|
|
|
1469
1946
|
findFirstElement: function(form) {
|
|
1470
|
-
return
|
|
1947
|
+
return $(form).getElements().find(function(element) {
|
|
1471
1948
|
return element.type != 'hidden' && !element.disabled &&
|
|
1472
1949
|
['input', 'select', 'textarea'].include(element.tagName.toLowerCase());
|
|
1473
1950
|
});
|
|
1474
1951
|
},
|
|
1475
1952
|
|
|
1476
1953
|
focusFirstElement: function(form) {
|
|
1477
|
-
|
|
1954
|
+
form = $(form);
|
|
1955
|
+
form.findFirstElement().activate();
|
|
1956
|
+
return form;
|
|
1957
|
+
}
|
|
1958
|
+
}
|
|
1959
|
+
|
|
1960
|
+
Object.extend(Form, Form.Methods);
|
|
1961
|
+
|
|
1962
|
+
/*--------------------------------------------------------------------------*/
|
|
1963
|
+
|
|
1964
|
+
Form.Element = {
|
|
1965
|
+
focus: function(element) {
|
|
1966
|
+
$(element).focus();
|
|
1967
|
+
return element;
|
|
1478
1968
|
},
|
|
1479
1969
|
|
|
1480
|
-
|
|
1481
|
-
$(
|
|
1970
|
+
select: function(element) {
|
|
1971
|
+
$(element).select();
|
|
1972
|
+
return element;
|
|
1482
1973
|
}
|
|
1483
1974
|
}
|
|
1484
1975
|
|
|
1485
|
-
Form.Element = {
|
|
1976
|
+
Form.Element.Methods = {
|
|
1486
1977
|
serialize: function(element) {
|
|
1978
|
+
element = $(element);
|
|
1979
|
+
if (!element.disabled && element.name) {
|
|
1980
|
+
var value = element.getValue();
|
|
1981
|
+
if (value != undefined) {
|
|
1982
|
+
var pair = {};
|
|
1983
|
+
pair[element.name] = value;
|
|
1984
|
+
return Hash.toQueryString(pair);
|
|
1985
|
+
}
|
|
1986
|
+
}
|
|
1987
|
+
return '';
|
|
1988
|
+
},
|
|
1989
|
+
|
|
1990
|
+
getValue: function(element) {
|
|
1487
1991
|
element = $(element);
|
|
1488
1992
|
var method = element.tagName.toLowerCase();
|
|
1489
|
-
|
|
1993
|
+
return Form.Element.Serializers[method](element);
|
|
1994
|
+
},
|
|
1490
1995
|
|
|
1491
|
-
|
|
1492
|
-
|
|
1493
|
-
|
|
1996
|
+
clear: function(element) {
|
|
1997
|
+
$(element).value = '';
|
|
1998
|
+
return element;
|
|
1999
|
+
},
|
|
1494
2000
|
|
|
1495
|
-
|
|
1496
|
-
|
|
2001
|
+
present: function(element) {
|
|
2002
|
+
return $(element).value != '';
|
|
2003
|
+
},
|
|
1497
2004
|
|
|
1498
|
-
|
|
1499
|
-
|
|
1500
|
-
|
|
1501
|
-
|
|
2005
|
+
activate: function(element) {
|
|
2006
|
+
element = $(element);
|
|
2007
|
+
element.focus();
|
|
2008
|
+
if (element.select && ( element.tagName.toLowerCase() != 'input' ||
|
|
2009
|
+
!['button', 'reset', 'submit'].include(element.type) ) )
|
|
2010
|
+
element.select();
|
|
2011
|
+
return element;
|
|
1502
2012
|
},
|
|
1503
2013
|
|
|
1504
|
-
|
|
2014
|
+
disable: function(element) {
|
|
1505
2015
|
element = $(element);
|
|
1506
|
-
|
|
1507
|
-
|
|
2016
|
+
element.disabled = true;
|
|
2017
|
+
return element;
|
|
2018
|
+
},
|
|
1508
2019
|
|
|
1509
|
-
|
|
1510
|
-
|
|
2020
|
+
enable: function(element) {
|
|
2021
|
+
element = $(element);
|
|
2022
|
+
element.blur();
|
|
2023
|
+
element.disabled = false;
|
|
2024
|
+
return element;
|
|
1511
2025
|
}
|
|
1512
2026
|
}
|
|
1513
2027
|
|
|
2028
|
+
Object.extend(Form.Element, Form.Element.Methods);
|
|
2029
|
+
var Field = Form.Element;
|
|
2030
|
+
var $F = Form.Element.getValue;
|
|
2031
|
+
|
|
2032
|
+
/*--------------------------------------------------------------------------*/
|
|
2033
|
+
|
|
1514
2034
|
Form.Element.Serializers = {
|
|
1515
2035
|
input: function(element) {
|
|
1516
2036
|
switch (element.type.toLowerCase()) {
|
|
1517
|
-
case 'submit':
|
|
1518
|
-
case 'hidden':
|
|
1519
|
-
case 'password':
|
|
1520
|
-
case 'text':
|
|
1521
|
-
return Form.Element.Serializers.textarea(element);
|
|
1522
2037
|
case 'checkbox':
|
|
1523
2038
|
case 'radio':
|
|
1524
2039
|
return Form.Element.Serializers.inputSelector(element);
|
|
2040
|
+
default:
|
|
2041
|
+
return Form.Element.Serializers.textarea(element);
|
|
1525
2042
|
}
|
|
1526
|
-
return false;
|
|
1527
2043
|
},
|
|
1528
2044
|
|
|
1529
2045
|
inputSelector: function(element) {
|
|
1530
|
-
|
|
1531
|
-
return [element.name, element.value];
|
|
2046
|
+
return element.checked ? element.value : null;
|
|
1532
2047
|
},
|
|
1533
2048
|
|
|
1534
2049
|
textarea: function(element) {
|
|
1535
|
-
return
|
|
2050
|
+
return element.value;
|
|
1536
2051
|
},
|
|
1537
2052
|
|
|
1538
2053
|
select: function(element) {
|
|
1539
|
-
return
|
|
2054
|
+
return this[element.type == 'select-one' ?
|
|
1540
2055
|
'selectOne' : 'selectMany'](element);
|
|
1541
2056
|
},
|
|
1542
2057
|
|
|
1543
2058
|
selectOne: function(element) {
|
|
1544
|
-
var
|
|
1545
|
-
|
|
1546
|
-
opt = element.options[index];
|
|
1547
|
-
value = opt.value || opt.text;
|
|
1548
|
-
}
|
|
1549
|
-
return [element.name, value];
|
|
2059
|
+
var index = element.selectedIndex;
|
|
2060
|
+
return index >= 0 ? this.optionValue(element.options[index]) : null;
|
|
1550
2061
|
},
|
|
1551
2062
|
|
|
1552
2063
|
selectMany: function(element) {
|
|
1553
|
-
var
|
|
1554
|
-
|
|
2064
|
+
var values, length = element.length;
|
|
2065
|
+
if (!length) return null;
|
|
2066
|
+
|
|
2067
|
+
for (var i = 0, values = []; i < length; i++) {
|
|
1555
2068
|
var opt = element.options[i];
|
|
1556
|
-
if (opt.selected)
|
|
1557
|
-
value.push(opt.value || opt.text);
|
|
2069
|
+
if (opt.selected) values.push(this.optionValue(opt));
|
|
1558
2070
|
}
|
|
1559
|
-
return
|
|
2071
|
+
return values;
|
|
2072
|
+
},
|
|
2073
|
+
|
|
2074
|
+
optionValue: function(opt) {
|
|
2075
|
+
// extend element because hasAttribute may not be native
|
|
2076
|
+
return Element.extend(opt).hasAttribute('value') ? opt.value : opt.text;
|
|
1560
2077
|
}
|
|
1561
2078
|
}
|
|
1562
2079
|
|
|
1563
2080
|
/*--------------------------------------------------------------------------*/
|
|
1564
2081
|
|
|
1565
|
-
var $F = Form.Element.getValue;
|
|
1566
|
-
|
|
1567
|
-
/*--------------------------------------------------------------------------*/
|
|
1568
|
-
|
|
1569
2082
|
Abstract.TimedObserver = function() {}
|
|
1570
2083
|
Abstract.TimedObserver.prototype = {
|
|
1571
2084
|
initialize: function(element, frequency, callback) {
|
|
@@ -1583,7 +2096,9 @@ Abstract.TimedObserver.prototype = {
|
|
|
1583
2096
|
|
|
1584
2097
|
onTimerEvent: function() {
|
|
1585
2098
|
var value = this.getValue();
|
|
1586
|
-
|
|
2099
|
+
var changed = ('string' == typeof this.lastValue && 'string' == typeof value
|
|
2100
|
+
? this.lastValue != value : String(this.lastValue) != String(value));
|
|
2101
|
+
if (changed) {
|
|
1587
2102
|
this.callback(this.element, value);
|
|
1588
2103
|
this.lastValue = value;
|
|
1589
2104
|
}
|
|
@@ -1628,9 +2143,7 @@ Abstract.EventObserver.prototype = {
|
|
|
1628
2143
|
},
|
|
1629
2144
|
|
|
1630
2145
|
registerFormCallbacks: function() {
|
|
1631
|
-
|
|
1632
|
-
for (var i = 0; i < elements.length; i++)
|
|
1633
|
-
this.registerCallback(elements[i]);
|
|
2146
|
+
Form.getElements(this.element).each(this.registerCallback.bind(this));
|
|
1634
2147
|
},
|
|
1635
2148
|
|
|
1636
2149
|
registerCallback: function(element) {
|
|
@@ -1640,11 +2153,7 @@ Abstract.EventObserver.prototype = {
|
|
|
1640
2153
|
case 'radio':
|
|
1641
2154
|
Event.observe(element, 'click', this.onElementEvent.bind(this));
|
|
1642
2155
|
break;
|
|
1643
|
-
|
|
1644
|
-
case 'text':
|
|
1645
|
-
case 'textarea':
|
|
1646
|
-
case 'select-one':
|
|
1647
|
-
case 'select-multiple':
|
|
2156
|
+
default:
|
|
1648
2157
|
Event.observe(element, 'change', this.onElementEvent.bind(this));
|
|
1649
2158
|
break;
|
|
1650
2159
|
}
|
|
@@ -1679,6 +2188,10 @@ Object.extend(Event, {
|
|
|
1679
2188
|
KEY_RIGHT: 39,
|
|
1680
2189
|
KEY_DOWN: 40,
|
|
1681
2190
|
KEY_DELETE: 46,
|
|
2191
|
+
KEY_HOME: 36,
|
|
2192
|
+
KEY_END: 35,
|
|
2193
|
+
KEY_PAGEUP: 33,
|
|
2194
|
+
KEY_PAGEDOWN: 34,
|
|
1682
2195
|
|
|
1683
2196
|
element: function(event) {
|
|
1684
2197
|
return event.target || event.srcElement;
|
|
@@ -1734,7 +2247,7 @@ Object.extend(Event, {
|
|
|
1734
2247
|
|
|
1735
2248
|
unloadCache: function() {
|
|
1736
2249
|
if (!Event.observers) return;
|
|
1737
|
-
for (var i = 0
|
|
2250
|
+
for (var i = 0, length = Event.observers.length; i < length; i++) {
|
|
1738
2251
|
Event.stopObserving.apply(this, Event.observers[i]);
|
|
1739
2252
|
Event.observers[i][0] = null;
|
|
1740
2253
|
}
|
|
@@ -1742,7 +2255,7 @@ Object.extend(Event, {
|
|
|
1742
2255
|
},
|
|
1743
2256
|
|
|
1744
2257
|
observe: function(element, name, observer, useCapture) {
|
|
1745
|
-
|
|
2258
|
+
element = $(element);
|
|
1746
2259
|
useCapture = useCapture || false;
|
|
1747
2260
|
|
|
1748
2261
|
if (name == 'keypress' &&
|
|
@@ -1750,11 +2263,11 @@ Object.extend(Event, {
|
|
|
1750
2263
|
|| element.attachEvent))
|
|
1751
2264
|
name = 'keydown';
|
|
1752
2265
|
|
|
1753
|
-
|
|
2266
|
+
Event._observeAndCache(element, name, observer, useCapture);
|
|
1754
2267
|
},
|
|
1755
2268
|
|
|
1756
2269
|
stopObserving: function(element, name, observer, useCapture) {
|
|
1757
|
-
|
|
2270
|
+
element = $(element);
|
|
1758
2271
|
useCapture = useCapture || false;
|
|
1759
2272
|
|
|
1760
2273
|
if (name == 'keypress' &&
|
|
@@ -1765,7 +2278,9 @@ Object.extend(Event, {
|
|
|
1765
2278
|
if (element.removeEventListener) {
|
|
1766
2279
|
element.removeEventListener(name, observer, useCapture);
|
|
1767
2280
|
} else if (element.detachEvent) {
|
|
1768
|
-
|
|
2281
|
+
try {
|
|
2282
|
+
element.detachEvent('on' + name, observer);
|
|
2283
|
+
} catch (e) {}
|
|
1769
2284
|
}
|
|
1770
2285
|
}
|
|
1771
2286
|
});
|
|
@@ -1819,7 +2334,8 @@ var Position = {
|
|
|
1819
2334
|
valueL += element.offsetLeft || 0;
|
|
1820
2335
|
element = element.offsetParent;
|
|
1821
2336
|
if (element) {
|
|
1822
|
-
|
|
2337
|
+
if(element.tagName=='BODY') break;
|
|
2338
|
+
var p = Element.getStyle(element, 'position');
|
|
1823
2339
|
if (p == 'relative' || p == 'absolute') break;
|
|
1824
2340
|
}
|
|
1825
2341
|
} while (element);
|
|
@@ -1875,17 +2391,6 @@ var Position = {
|
|
|
1875
2391
|
element.offsetWidth;
|
|
1876
2392
|
},
|
|
1877
2393
|
|
|
1878
|
-
clone: function(source, target) {
|
|
1879
|
-
source = $(source);
|
|
1880
|
-
target = $(target);
|
|
1881
|
-
target.style.position = 'absolute';
|
|
1882
|
-
var offsets = this.cumulativeOffset(source);
|
|
1883
|
-
target.style.top = offsets[1] + 'px';
|
|
1884
|
-
target.style.left = offsets[0] + 'px';
|
|
1885
|
-
target.style.width = source.offsetWidth + 'px';
|
|
1886
|
-
target.style.height = source.offsetHeight + 'px';
|
|
1887
|
-
},
|
|
1888
|
-
|
|
1889
2394
|
page: function(forElement) {
|
|
1890
2395
|
var valueT = 0, valueL = 0;
|
|
1891
2396
|
|
|
@@ -1902,8 +2407,10 @@ var Position = {
|
|
|
1902
2407
|
|
|
1903
2408
|
element = forElement;
|
|
1904
2409
|
do {
|
|
1905
|
-
|
|
1906
|
-
|
|
2410
|
+
if (!window.opera || element.tagName=='BODY') {
|
|
2411
|
+
valueT -= element.scrollTop || 0;
|
|
2412
|
+
valueL -= element.scrollLeft || 0;
|
|
2413
|
+
}
|
|
1907
2414
|
} while (element = element.parentNode);
|
|
1908
2415
|
|
|
1909
2416
|
return [valueL, valueT];
|
|
@@ -1964,10 +2471,10 @@ var Position = {
|
|
|
1964
2471
|
element._originalHeight = element.style.height;
|
|
1965
2472
|
|
|
1966
2473
|
element.style.position = 'absolute';
|
|
1967
|
-
element.style.top = top + 'px'
|
|
1968
|
-
element.style.left = left + 'px'
|
|
1969
|
-
element.style.width = width + 'px'
|
|
1970
|
-
element.style.height = height + 'px'
|
|
2474
|
+
element.style.top = top + 'px';
|
|
2475
|
+
element.style.left = left + 'px';
|
|
2476
|
+
element.style.width = width + 'px';
|
|
2477
|
+
element.style.height = height + 'px';
|
|
1971
2478
|
},
|
|
1972
2479
|
|
|
1973
2480
|
relativize: function(element) {
|
|
@@ -2003,4 +2510,6 @@ if (/Konqueror|Safari|KHTML/.test(navigator.userAgent)) {
|
|
|
2003
2510
|
|
|
2004
2511
|
return [valueL, valueT];
|
|
2005
2512
|
}
|
|
2006
|
-
}
|
|
2513
|
+
}
|
|
2514
|
+
|
|
2515
|
+
Element.addMethods();
|